:root{
  --text:#eef1ff; --muted:#aab3dc;
  --line:rgba(170,185,255,.22); --card:rgba(20,28,74,.58);
}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth;background:#0a1230}
body{
  color:var(--text);
  font-family:"Pretendard","Noto Sans KR",system-ui,-apple-system,"Segoe UI",sans-serif;
  line-height:1.7;min-height:100vh;overflow-x:hidden;
  /* 밤하늘: 위는 깊은 남색, 아래로 갈수록 보랏빛, 지평선에 은은한 노을빛 */
  background:
    radial-gradient(70% 38% at 82% 6%, rgba(130,100,235,.38), transparent 70%),
    radial-gradient(60% 34% at 12% 18%, rgba(70,120,240,.32), transparent 72%),
    radial-gradient(90% 30% at 50% 104%, rgba(255,150,175,.28), transparent 70%),
    linear-gradient(180deg,#0a1230 0%,#121a4c 38%,#231c5c 72%,#3a2569 100%) fixed;
}
/* 은하수 띠: 정적 그라데이션이라 부담 없음 */
.galaxy{position:fixed;left:-20%;top:12%;width:140%;height:46%;z-index:0;pointer-events:none;
  transform:rotate(-16deg);
  background:
    radial-gradient(60% 50% at 50% 50%, rgba(190,200,255,.16), transparent 70%),
    linear-gradient(180deg,transparent,rgba(205,215,255,.10) 50%,transparent)}
#sky{position:fixed;inset:0;z-index:0;pointer-events:none}
main,header.top,footer,nav,.contact{position:relative;z-index:1}
.wrap{max-width:1080px;margin:0 auto;padding:0 20px}

nav{position:sticky;top:0;z-index:5;background:rgba(12,18,52,.9);border-bottom:1px solid var(--line)}
nav .wrap{display:flex;justify-content:space-between;align-items:center;height:56px}
nav b{letter-spacing:.08em;font-size:15px}
nav a{color:var(--muted);text-decoration:none;font-size:14px;margin-left:20px}
nav a:hover{color:var(--text)}

.hero{padding:110px 0 50px;text-align:center}
.eyebrow{color:var(--muted);letter-spacing:.3em;font-size:12px;text-transform:uppercase}
.hero h1{font-size:clamp(34px,6vw,60px);line-height:1.2;margin:18px 0;font-weight:800;white-space:pre-line;
  background:linear-gradient(120deg,#fff 20%,#c6d2ff 55%,#ffdcf2);-webkit-background-clip:text;background-clip:text;color:transparent}
.nick{font-size:18px;font-weight:700;letter-spacing:.06em;margin-bottom:14px;color:#fff;text-shadow:0 0 16px rgba(190,150,255,.75)}
.hero p.intro{max-width:560px;margin:0 auto;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:28px}
.chips span{font-size:12px;padding:5px 12px;border:1px solid var(--line);border-radius:99px;color:#c3cbee;background:rgba(255,255,255,.04)}

/* 멤버 별자리 */
.consts{display:flex;flex-wrap:wrap;gap:16px 18px;justify-content:center;margin:46px auto 0;max-width:640px}
.m{--c:#fff;--l:#fff;position:relative;width:14px;height:14px;border-radius:50%;background:var(--c);cursor:default;
   box-shadow:0 0 0 1.5px color-mix(in srgb,var(--l) 60%,transparent),0 0 14px 4px color-mix(in srgb,var(--l) 60%,transparent);
   animation:tw 9s ease-in-out infinite}
.m.fav{width:20px;height:20px;box-shadow:0 0 0 2px var(--l),0 0 22px 8px color-mix(in srgb,var(--l) 70%,transparent)}
.m:nth-child(3n){animation-delay:-3s}.m:nth-child(3n+1){animation-delay:-6s}
.m::after{content:attr(data-name);position:absolute;left:50%;bottom:calc(100% + 10px);transform:translateX(-50%);
  white-space:nowrap;font-size:12px;padding:3px 9px;border-radius:8px;background:#141c52;border:1px solid var(--line);
  color:var(--l);opacity:0;pointer-events:none;transition:opacity .2s}
.m:hover::after{opacity:1}

h2.sec{font-size:13px;letter-spacing:.3em;text-transform:uppercase;color:var(--muted);margin:70px 0 24px;font-weight:600}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:20px}
.card{
  --c1:#9db4ff;--c2:var(--c1);--c3:var(--c2);--r1:#9db4ff;
  position:relative;padding:26px 24px 22px;border-radius:18px;background:var(--card);
  box-shadow:inset 0 0 44px -26px var(--c1);
  transition:transform .35s,box-shadow .35s;
  display:flex;flex-direction:column;gap:10px;
  content-visibility:auto;contain-intrinsic-size:auto 260px;
}
.card::before{
  content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;
  background:linear-gradient(120deg,var(--c1),var(--c2),var(--c3));opacity:.45;transition:opacity .35s;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);
}
.card:hover{transform:translateY(-4px);
  box-shadow:0 0 42px -10px color-mix(in srgb,var(--c1) 75%,transparent),inset 0 0 50px -22px var(--c2)}
.card:hover::before{opacity:.95}
.card.wide{grid-column:1/-1}
.card.dim{opacity:.78}
.stars{display:flex;gap:10px;align-items:center}
.dot{width:14px;height:14px;border-radius:50%;background:var(--c);
  box-shadow:0 0 0 1.5px var(--l),0 0 18px 5px color-mix(in srgb,var(--l) 60%,transparent);animation:tw 9s ease-in-out infinite}
@keyframes tw{0%,100%{opacity:1}50%{opacity:.75}}
.card h3{font-size:19px;line-height:1.35}
.role{font-size:12.5px;color:var(--r1);letter-spacing:.04em}
.card p{font-size:14px;color:var(--muted)}
.card ul{padding-left:18px;font-size:13.5px;color:#d0d6f5}
.card li{margin:3px 0}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.tags span{font-size:11.5px;padding:2px 9px;border-radius:99px;background:color-mix(in srgb,var(--c1) 18%,transparent);color:var(--r1)}
.links{margin-top:auto;padding-top:10px;display:flex;gap:14px;font-size:13px}
.links a{color:var(--r1);text-decoration:none;border-bottom:1px dashed color-mix(in srgb,var(--r1) 50%,transparent)}
.links a:hover{border-bottom-style:solid}
.status{position:absolute;top:22px;right:22px;font-size:11px;padding:2px 9px;border-radius:99px;border:1px solid var(--line);color:var(--muted)}
.status.live{color:#9ef0c0;border-color:#9ef0c055}

.timeline{border-left:1px solid var(--line);margin-left:6px;padding-left:28px}
.tl-year{font-size:13px;letter-spacing:.2em;color:var(--muted);margin:30px 0 14px}
.tl-year:first-child{margin-top:0}
.tl{--c:#fff;--l:#fff;position:relative;margin-bottom:16px;padding:14px 18px;border-radius:14px;
  background:rgba(20,28,74,.5);border:1px solid var(--line)}
.tl::before{content:"";position:absolute;left:-35px;top:20px;width:9px;height:9px;border-radius:50%;
  background:var(--c);box-shadow:0 0 0 1.5px var(--l),0 0 12px 3px color-mix(in srgb,var(--l) 55%,transparent)}
.tl-head{display:flex;align-items:center;gap:8px}
.tl time{font-size:12px;color:var(--l);letter-spacing:.06em;font-weight:600}
.badge{font-size:10.5px;padding:1px 8px;border-radius:99px;border:1px dashed var(--l);color:var(--l)}
.tl h4{font-size:15.5px;font-weight:600;margin-top:2px}
.tl p{font-size:13.5px;color:var(--muted)}
.tl-proj{display:inline-block;margin-top:8px;font-size:11.5px;padding:2px 9px;border-radius:99px;background:color-mix(in srgb,var(--l) 16%,transparent);color:var(--l)}
.tl.next{border-style:dashed}
.tl.next::before{background:transparent}

.contact-list{display:flex;flex-wrap:wrap;gap:12px}
.contact-list a{display:flex;flex-direction:column;padding:12px 18px;border-radius:14px;text-decoration:none;color:var(--text);
  background:rgba(20,28,74,.5);border:1px solid var(--line);transition:border-color .25s,transform .25s}
.contact-list a:hover{transform:translateY(-2px);border-color:var(--l,#aab3ff)}
.contact-list small{font-size:11px;letter-spacing:.12em;color:var(--muted);text-transform:uppercase}

footer{text-align:center;color:var(--muted);font-size:13px;padding:80px 20px 70px}
.err{max-width:560px;margin:120px auto;padding:20px;border:1px solid var(--line);border-radius:14px;text-align:center;color:var(--muted);position:relative;z-index:2}

@media (prefers-reduced-motion:reduce){.dot,.m{animation:none}html{scroll-behavior:auto}}
@media (max-width:560px){nav a{margin-left:12px}.hero{padding-top:80px}}
