/* Self-hosted fonts. Geist (Latin) + Pretendard (Hangul), both SIL OFL 1.1. See assets/fonts/*/LICENSE.txt */
@font-face{ font-family:'Geist'; src:url(../fonts/geist/Geist-Variable.woff2) format('woff2'); font-weight:100 900; font-style:normal; font-display:swap; }
@font-face{ font-family:'Geist Mono'; src:url(../fonts/geist/GeistMono-Regular.woff2) format('woff2'); font-weight:400; font-style:normal; font-display:swap; }

/* Tokens. The brand is black by brief, so both schemes resolve to the same dark palette. */
:root{
  --bg:#000000;
  --text:#f2f2ef;
  --muted:#8f8f8b;
  --faint:#55554f;
  --line:rgba(255,255,255,.12);
  --pill:rgba(22,22,22,.72);
  --pill-line:rgba(255,255,255,.09);
  --accent:#4a5bff;
  --f:'Geist','Pretendard Variable',Pretendard,system-ui,-apple-system,'Apple SD Gothic Neo','Noto Sans KR',sans-serif;
  --f-mono:'Geist Mono',ui-monospace,'SF Mono',Menlo,monospace;
  --pad:clamp(20px,4vw,56px);
  --max:1360px;
  color-scheme:dark;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){ --bg:#000000; --text:#f2f2ef; } }
:root[data-theme="dark"]{ --bg:#000000; --text:#f2f2ef; }
html{ scroll-padding-top:calc(96px + env(safe-area-inset-top,0px)); scroll-behavior:smooth; background:var(--bg); }
*,*::before,*::after{ box-sizing:border-box; }
body{ margin:0; background:var(--bg); color:var(--text); font-family:var(--f); font-size:17px; line-height:1.7; -webkit-font-smoothing:antialiased; word-break:keep-all; overflow-wrap:break-word; }
a{ color:inherit; }
img,svg,canvas{ max-width:100%; }
h1,h2,h3,p,ul{ margin:0; }
button{ font:inherit; color:inherit; background:none; border:0; padding:0; cursor:pointer; }
:focus-visible{ outline:2px solid var(--accent); outline-offset:3px; border-radius:6px; }
.wrap{ width:100%; max-width:var(--max); margin:0 auto; padding-inline:var(--pad); }
.sr-only{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.ic{ width:1.15em; height:1.15em; flex:none; display:inline-block; vertical-align:-.2em; }

/* Nav: two floating pills */
.nav{ position:fixed; z-index:50; top:calc(14px + env(safe-area-inset-top,0px)); left:0; right:0; display:flex; justify-content:space-between; align-items:flex-start; padding-inline:var(--pad); pointer-events:none; }
.pill{ pointer-events:auto; display:flex; align-items:center; gap:6px; height:56px; padding:0 8px 0 20px; background:var(--pill); border:1px solid var(--pill-line); border-radius:16px; -webkit-backdrop-filter:blur(18px) saturate(140%); backdrop-filter:blur(18px) saturate(140%); }
.brand{ display:flex; align-items:center; height:100%; margin-right:18px; color:var(--text); }
.brand svg{ height:20px; width:auto; display:block; }
.nav-links{ display:flex; gap:2px; }
.nav-links a{ text-decoration:none; font-size:15px; color:#cfcfcb; padding:8px 12px; border-radius:10px; transition:color .2s, background .2s; }
.nav-links a:hover{ color:var(--text); background:rgba(255,255,255,.06); }
.nav-more{ display:none; width:40px; height:40px; border-radius:10px; align-items:center; justify-content:center; }
.nav-more .ic{ width:24px; height:24px; }
.nav-more .ic-close{ display:none; }
.nav-more[aria-expanded="true"] .ic-close{ display:inline-block; }
.nav-more[aria-expanded="true"] .ic-more{ display:none; }
.pill-cta{ padding:0 6px; }
.btn{ display:inline-flex; align-items:center; gap:8px; height:44px; padding:0 18px; border-radius:12px; background:var(--text); color:#000; text-decoration:none; font-size:15px; font-weight:500; white-space:nowrap; transition:transform .35s cubic-bezier(.34,1.56,.64,1), background .2s; }
.btn:hover{ transform:scale(1.04); background:#fff; }
.btn .ic{ width:18px; height:18px; }
.mnav{ display:none; }

/* Hero */
.hero{ position:relative; min-height:calc(100svh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)); display:flex; flex-direction:column; justify-content:flex-end; overflow:hidden; }
#sculpt{ position:absolute; inset:0; width:100%; height:100%; display:block; touch-action:pan-y; cursor:grab; }
#sculpt:active{ cursor:grabbing; }
.hero-fallback{ display:none; position:absolute; left:50%; top:42%; width:min(46vw,420px); transform:translate(-50%,-50%); color:var(--text); }
.no-gl #sculpt, .no-gl .morph{ display:none; }
.no-gl .hero-fallback{ display:block; }
.hero-bottom{ position:relative; z-index:2; width:100%; max-width:var(--max); margin:0 auto; padding:0 var(--pad) clamp(28px,5vh,56px); display:grid; grid-template-columns:minmax(0,1fr) minmax(280px,360px); gap:48px; align-items:end; pointer-events:none; }
.hero-bottom a,.hero-bottom button,.hero-bottom input{ pointer-events:auto; }
.hero h1{ font-size:clamp(34px,5.4vw,84px); line-height:1.08; letter-spacing:-.035em; font-weight:500; }
.hero h1 .l{ display:block; }
.hero-sub{ margin-top:22px; max-width:31em; color:var(--muted); font-size:clamp(15px,1.15vw,18px); line-height:1.65; }
.morph{ padding-bottom:6px; }
.morph-label{ font-size:13px; color:var(--muted); margin-bottom:14px; }
.morph-stops{ display:grid; grid-template-columns:repeat(3,1fr); margin-bottom:12px; }
.morph-stop{ text-align:left; font-size:15px; color:var(--muted); display:flex; gap:8px; align-items:baseline; padding:4px 0; transition:color .25s; }
.morph-stop:nth-child(2){ justify-content:center; }
.morph-stop:nth-child(3){ justify-content:flex-end; }
.morph-stop .n{ font-family:var(--f-mono); font-size:11px; color:#6e6e6a; transition:color .25s; }
.morph-stop[aria-pressed="true"]{ color:var(--text); }
.morph-stop[aria-pressed="true"] .n{ color:var(--accent); }
.morph-stop:hover{ color:var(--text); }
#morph{ -webkit-appearance:none; appearance:none; width:100%; height:24px; background:transparent; margin:0; cursor:pointer; }
#morph::-webkit-slider-runnable-track{ height:1px; background:rgba(255,255,255,.28); }
#morph::-moz-range-track{ height:1px; background:rgba(255,255,255,.28); }
#morph::-webkit-slider-thumb{ -webkit-appearance:none; width:14px; height:14px; margin-top:-6.5px; border-radius:50%; background:var(--text); border:0; transition:transform .2s; }
#morph::-moz-range-thumb{ width:14px; height:14px; border-radius:50%; background:var(--text); border:0; }
#morph:hover::-webkit-slider-thumb{ transform:scale(1.25); }
#morph:focus-visible{ outline:none; }
#morph:focus-visible::-webkit-slider-thumb{ box-shadow:0 0 0 3px var(--accent); }
#morph:focus-visible::-moz-range-thumb{ box-shadow:0 0 0 3px var(--accent); }
.morph-cap{ margin-top:10px; font-size:14px; color:#cfcfcb; min-height:1.7em; }

@media (prefers-reduced-motion: no-preference){
  .hero-copy{ animation:rise 1.1s cubic-bezier(.2,.7,.2,1) 1.5s both; }
  .morph{ animation:fade 1s ease 2.2s both; }
  .nav{ animation:fade 1s ease 1.8s both; }
}
@keyframes rise{ from{ opacity:0; transform:translateY(24px); } to{ opacity:1; transform:none; } }
@keyframes fade{ from{ opacity:0; } to{ opacity:1; } }

/* Sections */
section{ position:relative; }
.sec{ padding-block:clamp(110px,15vw,210px); }
.h2{ font-size:clamp(26px,3.6vw,52px); line-height:1.18; letter-spacing:-.03em; font-weight:500; }
.lead{ margin-top:22px; max-width:34em; color:var(--muted); font-size:clamp(16px,1.25vw,19px); line-height:1.7; }

/* Vision */
.statement{ font-size:clamp(32px,5vw,76px); line-height:1.2; letter-spacing:-.035em; font-weight:500; text-align:center; max-width:15em; margin:0 auto; }
.w{ display:inline-block; }
.js .reveal .w{ opacity:0; transform:translateY(.35em); filter:blur(6px); transition:opacity .9s ease, transform .9s cubic-bezier(.2,.7,.2,1), filter .9s ease; transition-delay:calc(var(--i) * 55ms); }
.js .reveal.in .w{ opacity:1; transform:none; filter:none; }
.tile{ position:relative; display:inline-block; width:1.12em; height:.9em; margin:0 .08em; vertical-align:-.1em; border-radius:.24em; background:#121212; border:1px solid rgba(255,255,255,.07); overflow:hidden; transition:transform .55s cubic-bezier(.34,1.56,.64,1); }
.tile:hover{ transform:scale(1.18) rotate(-5deg); }
.tile canvas{ position:absolute; inset:0; width:100%; height:100%; }
.tile-glow::before{ content:""; position:absolute; inset:-30%; background:radial-gradient(circle at 50% 55%, rgba(74,91,255,.95) 0, rgba(74,91,255,.35) 32%, transparent 62%); filter:blur(4px); }
.tile-glow svg{ position:absolute; left:50%; top:50%; width:66%; transform:translate(-50%,-50%); color:#fff; transition:transform 1.2s cubic-bezier(.2,.7,.2,1); }
.tile-glow:hover svg{ transform:translate(-50%,-50%) rotate(360deg); }
.vision-body{ margin-top:clamp(80px,10vw,150px); display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:24px; }
.vision-body p{ color:var(--muted); font-size:clamp(16px,1.25vw,19px); line-height:1.8; }
.vision-body p strong{ color:var(--text); font-weight:500; }
.vb-1{ grid-column:2 / span 4; }
.vb-2{ grid-column:7 / span 5; display:grid; gap:18px; }
.vision-line{ margin-top:clamp(80px,9vw,130px); grid-column:2 / span 10; }
.vision-line .k{ font-size:14px; color:var(--muted); margin-bottom:14px; }
.vision-line p{ font-size:clamp(26px,3vw,44px); line-height:1.3; letter-spacing:-.025em; color:var(--text); font-weight:400; }

.principles{ margin-top:clamp(110px,12vw,180px); }
.principles h3{ font-size:15px; font-weight:500; color:var(--muted); }
.pp{ min-height:3.2em; margin:28px 0 56px; font-size:clamp(26px,3.2vw,48px); line-height:1.3; letter-spacing:-.03em; font-weight:500; max-width:20em; transition:opacity .35s ease, transform .35s ease; }
.pp.swap{ opacity:0; transform:translateY(10px); }
.ptabs{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(20px,3vw,48px); border-top:1px solid var(--line); }
.ptab{ position:relative; text-align:left; padding:22px 0 18px; font-size:clamp(17px,1.7vw,26px); letter-spacing:-.02em; color:#7a7a76; transition:color .3s; }
.ptab::before{ content:""; position:absolute; left:0; right:0; top:-1px; height:2px; background:var(--text); transform:scaleX(0); transform-origin:left; transition:transform .6s cubic-bezier(.2,.7,.2,1); }
.ptab[aria-selected="true"]{ color:var(--text); }
.ptab[aria-selected="true"]::before{ transform:scaleX(1); }
.ptab:hover{ color:#cfcfcb; }

/* Coworkers: orbit */
.cw-head{ text-align:center; max-width:40em; margin:0 auto; }
.cw-head .lead{ margin-inline:auto; }
.orbit{ position:relative; height:clamp(320px,50vw,640px); margin-top:clamp(24px,4vw,56px); user-select:none; -webkit-user-select:none; }
.orbit svg.ring{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; pointer-events:none; }
.ring-back{ z-index:1; }
.planet{ position:absolute; z-index:2; left:50%; top:50%; transform:translate(-50%,-50%); pointer-events:none; }
.planet svg{ display:block; width:100%; height:100%; }
.ring-front{ z-index:3; }
.moon{ position:absolute; left:0; top:0; width:var(--m,104px); height:var(--m,104px); margin:calc(var(--m,104px) / -2) 0 0 calc(var(--m,104px) / -2); border-radius:22px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; font-size:14px; color:var(--faint); background:#0a0a0a; border:1px dashed rgba(255,255,255,.16); text-decoration:none; will-change:transform, opacity; }
.moon-kd{ background:var(--text); color:#000; border:0; cursor:pointer; }
.moon-kd strong{ font-size:17px; font-weight:600; letter-spacing:-.02em; }
.moon-kd span{ font-size:12px; color:#555; }
.cw-list{ margin-top:clamp(40px,5vw,72px); display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(24px,5vw,80px); max-width:1000px; margin-inline:auto; }
.cw-item h3{ font-size:clamp(24px,2.2vw,32px); font-weight:500; letter-spacing:-.02em; }
.cw-item .role{ color:var(--muted); font-size:15px; margin-top:4px; }
.cw-item p.d{ margin-top:16px; color:#c9c9c5; font-size:16px; line-height:1.75; max-width:26em; }
.tlink{ display:inline-flex; align-items:center; gap:6px; margin-top:22px; font-size:15px; text-decoration:none; padding-bottom:3px; border-bottom:1px solid rgba(255,255,255,.35); transition:border-color .2s, gap .3s; }
.tlink:hover{ border-color:var(--text); gap:10px; }
.cw-next h3{ color:#bdbdb9; }

/* Team */
.team-head{ max-width:44em; }
.people{ margin-top:clamp(56px,7vw,100px); }
.person{ display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:24px; padding:clamp(36px,4vw,56px) 0; border-top:1px solid var(--line); }
.person-name{ grid-column:1 / span 5; }
.person-name h3{ font-size:clamp(44px,5.4vw,80px); line-height:1; letter-spacing:-.04em; font-weight:500; }
.person-name .en{ margin-top:14px; font-size:15px; color:var(--muted); }
.person-name .does{ margin-top:6px; font-size:16px; color:#cfcfcb; }
.person ul{ grid-column:7 / span 6; list-style:none; padding:0; display:grid; gap:14px; align-content:start; padding-top:8px; }
.person li{ font-size:16px; line-height:1.6; color:#cfcfcb; padding-left:22px; position:relative; }
.person li::before{ content:""; position:absolute; left:0; top:.8em; width:10px; height:1px; background:var(--faint); }

/* Name */
.name-grid{ display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:24px; align-items:center; }
.name-text{ grid-column:1 / span 5; }
.name-text p{ margin-top:22px; color:var(--muted); font-size:clamp(16px,1.25vw,19px); line-height:1.8; }
.signal{ grid-column:7 / span 6; position:relative; aspect-ratio:4 / 3; }
.signal canvas{ position:absolute; inset:0; width:100%; height:100%; cursor:crosshair; }
.signal .node{ position:absolute; top:50%; transform:translateY(-50%); font-size:14px; color:var(--muted); pointer-events:none; }
.signal .node.a{ left:0; transform:translate(0,calc(-50% - 30px)); }
.signal .node.b{ right:0; transform:translate(0,calc(-50% - 30px)); }

/* Footer */
footer{ padding:clamp(80px,10vw,140px) 0 calc(32px + env(safe-area-inset-bottom,0px)); border-top:1px solid var(--line); }
.ft-tag{ font-size:clamp(18px,1.8vw,26px); letter-spacing:-.02em; color:#cfcfcb; }
.ft-logo{ margin-top:clamp(40px,6vw,80px); color:var(--text); }
.ft-logo svg{ width:100%; height:auto; display:block; }
.ft-row{ margin-top:clamp(36px,5vw,64px); display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap; font-size:14px; color:var(--muted); }
.ft-row nav{ display:flex; gap:22px; flex-wrap:wrap; }
.ft-row a{ text-decoration:none; transition:color .2s; }
.ft-row a:hover{ color:var(--text); }

/* Responsive */
@media (max-width: 900px){
  .nav-links{ display:none; }
  .nav-more{ display:inline-flex; }
  .brand{ margin-right:6px; }
  .pill{ height:52px; padding-left:16px; }
  .mnav{ pointer-events:auto; position:absolute; top:62px; left:var(--pad); min-width:200px; padding:8px; background:rgba(18,18,18,.94); border:1px solid var(--pill-line); border-radius:16px; -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); }
  .mnav.open{ display:grid; }
  .mnav a{ padding:12px 14px; text-decoration:none; font-size:16px; border-radius:10px; }
  .mnav a:hover{ background:rgba(255,255,255,.06); }
  .hero-bottom{ grid-template-columns:1fr; gap:36px; }
  .vb-1,.vb-2,.vision-line{ grid-column:1 / -1; }
  .ptabs{ grid-template-columns:1fr; gap:0; }
  .ptab{ padding:18px 0; border-bottom:1px solid var(--line); }
  .ptab::before{ top:auto; bottom:-1px; }
  .pp{ min-height:4.2em; }
  .cw-list{ grid-template-columns:1fr; }
  .person-name,.person ul{ grid-column:1 / -1; }
  .name-text,.signal{ grid-column:1 / -1; }
  .signal{ margin-top:24px; }
}
@media (max-width: 520px){
  .btn{ height:40px; padding:0 14px; font-size:14px; }
  .pill-cta{ height:52px; }
  .moon{ --m:60px; border-radius:14px; font-size:11px; }
  .moon-kd strong{ font-size:13px; }
  .moon-kd span{ font-size:10px; }
}
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .js .reveal .w{ opacity:1; transform:none; filter:none; transition:none; }
  .tile,.btn,.ptab::before,.pp{ transition:none; }
}
