/* Reset & base */
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;background:#0b1018; color:#e9f2fb; font-family:"Noto Sans TC","M PLUS Rounded 1c",system-ui,-apple-system,Segoe UI,Roboto,"Helvetica Neue",Arial; -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;}
a{color:inherit;text-decoration:none}

/* color */
:root{
  --accent-pink:#ff6fb5;
  --accent-cyan:#61e6e6;
  --muted:rgba(233,242,251,0.65);
  --card-bg:rgba(255,255,255,0.03);
  --glass:rgba(255,255,255,0.04);
}

/* Header */
.header {
  position:fixed; top:0; left:0; right:0;
  height:76px; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(180deg, rgba(7,11,18,0.55), rgba(7,11,18,0.35));
  backdrop-filter: blur(8px);
  border-bottom:1px solid rgba(255,255,255,0.03);
  z-index:1000;
}
.header .wrap {
  width:100%; max-width:1200px; padding:12px 24px; display:flex; align-items:center; justify-content:space-between;
}

/* Logo (badge + title) */
.brand { display:flex; align-items:center; gap:14px; }
/*.logo-badge {
  width:64px; height:64px; border-radius:14px;
  background: linear-gradient(135deg,var(--accent-pink), #ff9ecb 60%, var(--accent-cyan));
  box-shadow: 0 10px 30px rgba(97,230,230,0.06), inset 0 -6px 16px rgba(0,0,0,0.12);
  display:flex; align-items:center; justify-content:center;
  font-weight:900; font-family:"M PLUS Rounded 1c"; color:#071223;
  transform:skew(-6deg); position:relative; overflow:hidden;
}*/
logo-badge .letter { font-size:28px; transform:translateY(-2px); }
.logo-badge {
  width: 64px;
  height: 64px;
  border-radius: 14px;
  background: linear-gradient(135deg, var(--accent-pink), #ff9ecb 60%, var(--accent-cyan));
  box-shadow: 0 10px 30px rgba(97,230,230,0.06), inset 0 -6px 16px rgba(0,0,0,0.12);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
}

/* logo */
.logo-badge .logo-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  margin: auto;
}

.logo-badge::after{
  content:""; position:absolute; top:0; left:-120%;
  width:60%; height:100%;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,0.8), transparent);
  transform:skewX(-18deg);
  animation:badge-shine 2.6s ease-in-out infinite;
}
@keyframes badge-shine { 0% { left:-120% } 50% { left:140% } 100% { left:140% } }

/* site title */
.site-title { line-height:1; }
.site-title .jp { display:block; font-family:"Noto Sans JP","M PLUS Rounded 1c"; color:var(--accent-pink); font-weight:800; letter-spacing:1px; font-size:14px; }
.site-title .en { display:block; font-weight:900; font-size:20px; letter-spacing:2px; color:#fff; text-shadow:0 6px 18px rgba(0,0,0,0.5); }

/* Nav */
.top-nav { display:flex; gap:14px; align-items:center; }
.top-nav a { color:var(--muted); font-weight:800; padding:8px 12px; border-radius:10px; transition: all .16s ease; font-size:15px; }
.top-nav a:hover { color:#071223; background: linear-gradient(90deg,var(--accent-pink),var(--accent-cyan)); transform:translateY(-3px); box-shadow:0 8px 20px rgba(0,0,0,0.35); }

/* Main layout */
.container { max-width:1200px; margin:120px auto 64px; padding:20px; }

.hero {
  display:flex; flex-direction:column; align-items:center; gap:14px; text-align:center;
  padding:36px; border-radius:18px; background: linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));
  border:1px solid var(--glass); box-shadow: 0 12px 40px rgba(2,6,12,0.6);
}
.hero h1 { font-size:36px; font-weight:900; color:#fff; letter-spacing:1px; }
.hero p { color:var(--muted); font-weight:700; max-width:720px; }
.cta-row { display:flex; gap:12px; margin-top:8px; flex-wrap:wrap; justify-content:center; }
.btn {
  padding:12px 28px; border-radius:999px; font-weight:900; cursor:pointer; border:0;
  transition:transform .18s, box-shadow .18s; display:inline-flex; align-items:center; gap:8px;
}
.btn.primary {
  background: linear-gradient(90deg,var(--accent-pink),var(--accent-cyan)); color:#071223;
  box-shadow: 0 10px 30px rgba(97,230,230,0.10);
}
.btn.ghost {
  background:transparent; border:1px solid rgba(255,255,255,0.04); color:var(--muted);
}
.btn:hover{ transform:translateY(-6px); }

/* block */
.blocks { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:30px; }
.block {
  background:var(--card-bg);
  border-radius:12px;
  padding:18px;
  border:1px solid rgba(255,255,255,0.03);
  overflow:hidden;
  display:flex;
  flex-direction:column;
}
.block h3 {
  font-size:16px;
  color:#fff;
  font-weight:900;
  margin-bottom:12px;
  display:flex;
  justify-content:space-between;
  align-items:center;
}
.block .more { font-size:13px; color:var(--muted); font-weight:800; }

.items {
  display:flex;
  flex-direction:column;
  gap:12px;
  flex:1;
}

/* card */
.item {
  display:flex; gap:12px; align-items:flex-start; padding:10px; border-radius:10px;
  background:linear-gradient(180deg, rgba(255,255,255,0.01), rgba(255,255,255,0.02));
  border:1px solid rgba(255,255,255,0.02);
  transition:transform .18s, box-shadow .18s;
  transform:translateY(18px); opacity:0;
}
.item .meta { font-size:12px; color:var(--muted); min-width:70px; }
.item .body h4 { margin-bottom:6px; font-size:15px; color:#fff; font-weight:900; }
.item .body p { font-size:13px; color:var(--muted); line-height:1.4; margin:0; }

/* hover */
.item:hover { transform:translateY(-6px); box-shadow:0 14px 40px rgba(0,0,0,0.5); }

/* more-link */
.more-link {
  display: block;
  text-align: center;
  margin-top: auto;
  padding-top: 10px;
  font-weight: 800;
  font-size: 14px;
  color: var(--accent-cyan);
  text-shadow: 0 0 8px rgba(97,230,230,0.3);
  transition: all .25s ease;
}
.more-link:hover {
  color: var(--accent-pink);
  text-shadow: 0 0 12px rgba(255,111,181,0.6);
  transform: translateY(-2px);
}

/* Footer */
.footer { margin-top:40px; padding:28px 0; text-align:center; color:var(--muted); border-top:1px solid rgba(255,255,255,0.03); }
.footer a { color:var(--muted); font-weight:700; margin:0 8px; }
.footer a:hover { color:var(--accent-cyan); }

/* Logo + header loding */
.logo-entrance { opacity:0; transform:translateY(-6px) scale(0.98); transition:all .9s cubic-bezier(.2,.9,.3,1); }
.logo-entrance.visible { opacity:1; transform:none; }

/* Card reveal keyframes */
@keyframes cardIn { from { transform:translateY(18px); opacity:0 } to { transform:none; opacity:1 } }

/* RWD */
@media (max-width:1000px){
  .blocks { grid-template-columns:repeat(2,1fr); }
}

/* mobile */
@media (max-width:720px){
  .header {
    height: auto;
    padding: 8px 0;
  }
  .typing { min-width: 9em; border-right: none !important; animation: none !important;}
  .header .wrap {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 10px 0;
  }
  .brand {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    gap: 10px;
    padding: 0 12px;
  }
  .brand .logo-badge {
    width: 54px;
    height: 54px;
  }
  .brand .site-title .jp { font-size: 13px; }
  .brand .site-title .en { font-size: 17px; }

  .top-nav {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    width: 100%;
    gap: 10px;
    padding-bottom: 6px;
  }
  .top-nav a {
    background: rgba(255,255,255,0.05);
    border-radius: 8px;
    padding: 6px 12px;
    font-size: 14px;
  }
  .blocks { grid-template-columns: 1fr; }
  .hero h1 { font-size: 26px; }
}

/* typing */
.typing {
  display: inline-block;
  vertical-align: bottom;
  border-right: 2px solid var(--accent-cyan);
  padding-right: 4px;
  white-space: nowrap;
  overflow: hidden;
  animation: caret 0.8s steps(1) infinite;
}

#hero-title {
  min-height: 1.2em;
}


/* error-popup */
.error-popup {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.65);
  backdrop-filter: blur(4px);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 2000;
  animation: fadeIn .3s ease forwards;
}
.popup-content {
  position: relative;
  background: rgba(20,25,35,0.95);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 16px;
  padding: 32px 24px 28px;
  text-align: center;
  box-shadow: 0 10px 40px rgba(0,0,0,0.6);
  max-width: 360px;
  width: 90%;
  animation: popupSlide .4s cubic-bezier(.2,.9,.3,1);
}
.popup-img {
  width: 120px;
  height: auto;
  margin-bottom: 16px;
}
.popup-text {
  font-size: 16px;
  font-weight: 800;
  color: #fff;
  margin-bottom: 12px;
}
.popup-close {
  position: absolute;
  top: 8px;
  right: 10px;
  background: transparent;
  border: 0;
  color: rgba(255,255,255,0.6);
  font-size: 18px;
  cursor: pointer;
  transition: color .2s;
}
.popup-close:hover { color: #fff; }

/* anime */
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes popupSlide {
  from { transform: translateY(-20px); opacity: 0; }
  to { transform: none; opacity: 1; }
}