:root{
  color-scheme:dark;
  --bg:#0b0d0f;--bg-2:#111417;--card:rgba(17,20,23,.72);--text:#e9ebe6;--muted:#949b98;--faint:#5c6461;--line:#252a2e;--line-2:#343a3e;
  --listen:#5fb58f;--understand:#e0a54d;--think:#4fb5c0;--analyze:#7d9fe2;--make:#bb8bd2;
  --sans:"IBM Plex Sans KR","Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",system-ui,sans-serif;
  --serif:"Noto Serif KR","Noto Serif CJK KR","Songti SC","Batang",serif;
  --gutter:clamp(20px,5vw,72px);--max:1320px;--header:72px;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);
}
*,*::before,*::after{box-sizing:inherit}
html{background:var(--bg);scroll-padding-top:calc(var(--header) + env(safe-area-inset-top,0px));-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.75;word-break:keep-all;-webkit-font-smoothing:antialiased;overflow-x:clip}
p,h1,h2,h3,figure,ul,ol,dl,dd,fieldset{margin:0}ul,ol{padding:0;list-style:none}fieldset{border:0;padding:0;min-width:0}
a{color:inherit;text-decoration:none}
button,input,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
svg{display:block;max-width:100%}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--text);outline-offset:4px}
.wrap{max-width:calc(var(--max) + var(--gutter)*2);margin-inline:auto;padding-inline:var(--gutter)}
.skip{position:fixed;left:16px;top:calc(12px + env(safe-area-inset-top,0px));z-index:60;background:var(--text);color:var(--bg);padding:10px 18px;transform:translateY(-220%)}
.skip:focus{transform:none}

/* ── 3D layer */
#scene{position:fixed;inset:0;width:100%;height:100%;z-index:0;display:block;pointer-events:none;opacity:0;transition:opacity .9s ease}
.webgl #scene{opacity:1}
.labels{position:fixed;inset:0;z-index:4;pointer-events:none}
.labels > *{position:absolute;left:0;top:0;will-change:transform,opacity;opacity:0}
.nlabel{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 10px;font-size:13px;font-weight:500;letter-spacing:.02em;line-height:1.2;white-space:nowrap;pointer-events:none;color:rgba(233,235,230,.92);border-radius:999px;transition:color .25s}
.nlabel small{font-size:8.5px;font-weight:400;letter-spacing:.22em;color:rgba(233,235,230,.42)}
.nlabel.on{pointer-events:auto;cursor:pointer}
.nlabel.on:hover{color:var(--c)}
.clabel{font-size:11px;font-weight:400;letter-spacing:.18em;color:rgba(233,235,230,.55);white-space:nowrap;text-align:center}
.clabel small{display:none}
main,.night{position:relative;z-index:2}

/* ── Header */
.top{position:sticky;top:0;z-index:30;margin-top:calc(env(safe-area-inset-top,0px)*-1);padding-top:env(safe-area-inset-top,0px);background:rgba(11,13,15,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.bar{height:var(--header);display:flex;align-items:center;justify-content:space-between;gap:24px}
.logo{display:inline-flex;align-items:center;padding:6px 0}
.logo svg{width:132px;height:auto}
.menu{display:flex;align-items:center;gap:4px}
.menu a{font-size:14px;padding:8px 14px;color:var(--muted);border-radius:999px;transition:color .15s,background .15s}
.menu a:hover,.menu a[aria-current=true]{color:var(--text);background:rgba(255,255,255,.06)}
.menu .cta{margin-left:10px;background:var(--text);color:var(--bg)}
.menu .cta:hover,.menu .cta[aria-current=true]{background:#fff;color:var(--bg)}
.progress{position:absolute;left:0;bottom:-1px;height:2px;width:100%;transform-origin:0 50%;transform:scaleX(var(--p,0));background:linear-gradient(90deg,var(--listen),var(--understand),var(--think),var(--analyze),var(--make))}
.toggle{min-height:44px;padding:0 4px;display:inline-flex;align-items:center;gap:10px;font-size:14px}
.toggle span{display:grid;gap:5px}
.toggle i{display:block;width:20px;height:1.5px;background:var(--text);transition:transform .2s}
.toggle[aria-expanded=true] i:first-child{transform:translateY(3.25px) rotate(45deg)}
.toggle[aria-expanded=true] i:last-child{transform:translateY(-3.25px) rotate(-45deg)}

/* ── Shared type */
.tag{display:inline-flex;align-items:center;gap:10px;font-size:13px;font-weight:500;color:var(--muted);margin-bottom:22px}
.tag::before{content:"";width:22px;height:1px;background:currentColor}
h2{font-size:clamp(32px,4vw,56px);font-weight:600;line-height:1.22;letter-spacing:-.045em}
h2 .l{display:block}
h2 .soft{font-weight:300;color:var(--muted)}
.copy{max-width:min(560px,48%)}
.sec{padding-block:clamp(88px,12vw,160px)}
.intro{margin-top:22px;font-size:16px;line-height:1.9;color:var(--muted);max-width:30em}

/* ── Hero */
.hero{min-height:calc(100svh - var(--header));display:flex;align-items:center;padding-block:56px 72px;position:relative}
.hero .wrap{width:100%}
.hero-kicker{font-size:14px;color:var(--muted);margin-bottom:clamp(20px,2.6vw,30px)}
.hero h1{font-size:clamp(36px,4.3vw,68px);font-weight:600;line-height:1.12;letter-spacing:-.05em}
.hero h1 .l{display:block}
.hero h1 .l2{font-weight:300;color:var(--muted)}
.lead{margin-top:clamp(24px,3vw,36px);font-size:clamp(16px,1.25vw,18px);line-height:1.85;color:var(--muted);max-width:29em}
.lead strong{color:var(--text);font-weight:500}
.acts{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(28px,3.4vw,40px)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:14px;min-height:52px;padding:0 24px;border-radius:999px;font-size:15px;font-weight:500;white-space:nowrap;transition:transform .18s,background .18s,color .18s,opacity .18s}
.btn-solid{background:var(--text);color:var(--bg)}
.btn-solid:hover{transform:translateY(-2px);background:#fff}
.btn-ghost{border:1px solid var(--line-2)}
.btn-ghost:hover{border-color:var(--text)}
.hero-en{margin-top:clamp(36px,5vw,64px);font-size:13px;color:var(--muted)}
.hint{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;font-size:12px;color:var(--faint)}
.hint::after{content:"";width:1px;height:34px;background:linear-gradient(var(--faint),transparent);animation:drip 2.2s ease-in-out infinite}
@keyframes drip{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
.fallback{position:absolute;right:var(--gutter);top:50%;transform:translateY(-50%);width:min(44vw,560px);display:none}
html:not(.webgl) .fallback{display:block}
.fallback svg{width:100%;height:auto}

/* ── Philosophy (scroll story) */
.phil-head{padding-bottom:clamp(40px,6vw,72px)}
.phil-head .sub{margin-top:22px;font-size:17px;line-height:1.9;color:var(--muted)}
.phil-head .sub b{font-family:var(--serif);font-weight:500;letter-spacing:.14em;color:var(--text)}
.stage-block{min-height:88svh;display:flex;align-items:center}
.stage-card{max-width:min(500px,46%);padding:clamp(28px,3vw,40px) 0;border-top:1px solid var(--line-2);position:relative}
.stage-card::before{content:"";position:absolute;left:0;top:-1px;height:2px;width:56px;background:var(--c)}
.stage-card .stage-meta{font-size:13px;margin:0;display:flex;align-items:baseline;gap:14px;font-size:13px;color:var(--muted)}
.stage-card .stage-glyph{font-family:var(--serif);font-weight:300;font-size:clamp(84px,9vw,132px);line-height:1;margin-top:22px;color:var(--c)}
.stage-card h3{margin-top:22px;font-size:clamp(26px,2.6vw,36px);font-weight:600;letter-spacing:-.04em;line-height:1.3}
.stage-card h3 small{font-size:15px;font-weight:400;letter-spacing:.01em;color:var(--muted);margin-left:10px}
.stage-card p{margin-top:14px;font-size:17px;line-height:1.85}
.stage-card dl{margin-top:24px;display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;font-size:13px}
.stage-card dt{color:var(--muted);margin-right:4px}
.stage-card dd{border:1px solid var(--line-2);border-radius:999px;padding:4px 12px;background:rgba(11,13,15,.6)}
.loop{display:flex;align-items:center;gap:14px;font-size:15px;color:var(--muted);max-width:min(560px,48%);padding-block:0 clamp(40px,8vw,120px)}
.loop svg{flex:none;width:28px;height:28px}

/* ── Services */
.svc-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 48px;align-items:end;margin-bottom:clamp(44px,6vw,80px)}
.svc-head .intro{margin-top:0}
.track{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}
.track::before{content:"";position:absolute;left:0;right:0;top:9px;height:1px;background:linear-gradient(90deg,var(--listen),var(--understand),var(--think),var(--analyze),var(--make))}
.track-ends{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:18px}
.svc-item{position:relative;padding:44px 22px 24px 0}
.svc-item::before{content:"";position:absolute;top:3px;left:0;width:13px;height:13px;border-radius:50%;background:var(--bg);border:1.5px solid var(--text)}
.svc-item:last-child::before{background:var(--text)}
.svc-item h3{font-size:clamp(18px,1.6vw,22px);font-weight:600;line-height:1.3;letter-spacing:-.02em;min-height:2.6em}
.svc-item p{margin-top:14px;font-size:15px;line-height:1.8;color:#cfd3cf}
.svc-item ul{margin-top:20px;padding-top:16px;border-top:1px solid var(--line-2);font-size:13px;color:var(--muted);line-height:2}

/* ── Works */
.works-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,3vw,36px);margin-top:clamp(44px,6vw,72px)}
.work{background:var(--card);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:6px;padding:clamp(24px,3vw,40px);display:flex;flex-direction:column}
.work .kind{font-size:13px;color:var(--muted)}
.work h3{font-size:clamp(24px,2.4vw,32px);font-weight:600;line-height:1.35;letter-spacing:-.04em;margin:14px 0}
.work h3 .l{display:block}
.work > p{font-size:15px;color:var(--muted);max-width:30em}
.diagram{margin-top:auto;padding-top:36px;display:grid;gap:12px}
.mode{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--line-2);border-radius:999px;justify-self:start;margin-bottom:6px}
.mode button{font-size:12.5px;padding:5px 14px;border-radius:999px;color:var(--muted);transition:background .2s,color .2s}
.mode button[aria-pressed=true]{background:var(--text);color:var(--bg)}
.flowsvg{width:100%;height:auto;overflow:visible}
.flowsvg text{font-family:var(--sans);font-size:14px;fill:var(--text)}
.flowsvg .note{font-size:11px;fill:var(--muted);transition:opacity .4s}
.flowsvg .seg{transition:opacity .45s}
.flowsvg .broken{stroke:var(--faint);stroke-dasharray:3 4}
.flowsvg .x{stroke:#e0655f;stroke-width:1.5;transition:opacity .35s}
.flowsvg .ok{stroke-width:2;stroke-dasharray:6 6;opacity:0}
.flowsvg .dot{fill:var(--bg);stroke:var(--text);stroke-width:1.4;transition:fill .4s}
.work.after .flowsvg .ok{opacity:1;animation:flow 1.1s linear infinite}
.work.after .flowsvg .broken,.work.after .flowsvg .x,.work.after .flowsvg .note{opacity:0}
.work.after .flowsvg .dot:last-of-type{fill:var(--text)}
@keyframes flow{to{stroke-dashoffset:-12}}
.works-note{margin-top:28px;font-size:13px;color:var(--muted)}

/* ── AI as lubricant */
.stage-card .ai-line{margin-top:18px;padding-top:14px;border-top:1px dashed var(--line-2);font-size:14px;line-height:1.75;color:#cfd3cf}
.ai-line span{display:inline-block;margin-right:10px;font-size:11.5px;font-weight:600;letter-spacing:.04em;color:var(--bg);background:var(--c);border-radius:4px;padding:1px 7px}
.ai .copy{max-width:min(600px,50%)}
.lube{margin-top:clamp(32px,4vw,48px);background:var(--card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:8px;padding:clamp(22px,2.6vw,32px)}
.lube-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px}
.lube-head label{font-size:15px;font-weight:600}
.lube-head output{font-size:13px;color:var(--muted)}
.lube input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:28px;margin:14px 0 4px;background:transparent;cursor:pointer;--v:0%}
.lube input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:4px;background:linear-gradient(90deg,var(--listen),var(--understand),var(--think),var(--analyze),var(--make)) 0 0/var(--v) 100% no-repeat,var(--line-2)}
.lube input[type=range]::-moz-range-track{height:4px;border-radius:4px;background:var(--line-2)}
.lube input[type=range]::-moz-range-progress{height:4px;border-radius:4px;background:linear-gradient(90deg,var(--listen),var(--think),var(--make))}
.lube input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;margin-top:-9px;border-radius:50%;background:var(--text);border:4px solid var(--bg);box-shadow:0 0 0 1px var(--text)}
.lube input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--text);border:4px solid var(--bg)}
.lube-scale{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--faint)}
.lube-hint{margin-top:16px;font-size:14px;color:var(--muted);line-height:1.75}
.meters{margin-top:22px;display:grid;gap:12px}
.meters div{display:grid;grid-template-columns:minmax(0,170px) 1fr;gap:14px;align-items:center;font-size:13px}
.meters dt{color:#cfd3cf}
.meters dd{height:6px;border-radius:6px;background:rgba(255,255,255,.06);overflow:hidden}
.meters i{display:block;height:100%;width:var(--w,50%);border-radius:6px;background:var(--mc,var(--text));transition:width .25s ease}
.meters-note{margin-top:14px;font-size:11.5px;color:var(--faint)}
.ai-where{margin-top:clamp(56px,8vw,104px);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:24px 56px;background:rgba(11,13,15,.7);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-top:1px solid var(--line-2);padding-top:36px}
.ai-where h3{font-size:clamp(22px,2vw,28px);font-weight:600;letter-spacing:-.03em;line-height:1.35}
.ai-list{display:grid;gap:0}
.ai-list li{display:grid;grid-template-columns:72px 1fr;gap:16px;padding:16px 0;border-bottom:1px solid var(--line)}
.ai-list li:first-child{padding-top:0}
.ai-stage{display:inline-flex;align-items:center;gap:8px;font-size:15px;font-weight:600}
.ai-stage::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c)}
.ai-list p{font-size:15px;line-height:1.75;color:#cfd3cf}
.ai-rules{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:20px}
.ai-rules li{font-size:14px;line-height:1.75;color:var(--muted);padding-top:16px;border-top:1px solid var(--text)}
.ai-rules b{display:block;font-size:16px;font-weight:600;color:var(--text);margin-bottom:6px}

/* ── About */
.about-in{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:48px;align-items:center}
.about h2{font-size:clamp(34px,4.6vw,64px)}
.about .intro{font-size:17px}
.mark{display:flex;align-items:center;gap:26px;margin-top:48px}
.mark svg{width:72px;height:auto;color:var(--text)}
.mark ol{display:flex;flex-wrap:wrap;gap:4px 18px;font-size:14px;color:var(--muted)}
.mark li b{font-weight:600;color:var(--text);margin-right:5px}

/* ── Contact: listening diagnosis */
.contact{padding-block:clamp(88px,12vw,152px) clamp(64px,8vw,104px)}
.contact-in{max-width:min(640px,52%)}
.contact .intro{max-width:32em}
.diag{margin-top:clamp(36px,4vw,52px);background:var(--card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:8px;padding:clamp(22px,2.6vw,34px)}
.diag legend,.diag .q{font-size:15px;font-weight:600;margin-bottom:6px;padding:0}
.diag .hintline{font-size:13px;color:var(--muted);margin-bottom:16px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:9px;padding:9px 15px;border:1px solid var(--line-2);border-radius:999px;font-size:14px;line-height:1.4;text-align:left;transition:border-color .2s,background .2s,color .2s}
.chip::before{content:"";flex:none;width:8px;height:8px;border-radius:50%;border:1.5px solid var(--muted);transition:background .2s,border-color .2s}
.chip:hover{border-color:var(--muted)}
.chip[aria-pressed=true]{border-color:var(--text);background:rgba(255,255,255,.07)}
.chip[aria-pressed=true]::before{background:var(--text);border-color:var(--text)}
.field{margin-top:26px;display:grid;gap:8px}
.field label{font-size:15px;font-weight:600}
.field label span{font-weight:400;font-size:13px;color:var(--muted);margin-left:6px}
.field textarea,.field input{width:100%;background:rgba(0,0,0,.25);border:1px solid var(--line-2);border-radius:6px;padding:12px 14px;font-size:15px;line-height:1.6;resize:vertical;transition:border-color .2s}
.field textarea{min-height:96px}
.field textarea:focus,.field input:focus{outline:none;border-color:var(--text)}
.answer{margin-top:28px;padding-top:24px;border-top:1px solid var(--line-2)}
.answer .empty{font-size:14px;color:var(--muted)}
.answer h3{font-size:15px;font-weight:600}
.answer p{margin-top:8px;font-size:15px;line-height:1.8;color:#cfd3cf}
.pills{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:12px;font-size:14px}
.pills li{display:inline-flex;align-items:center;gap:7px}
.pills i{width:8px;height:8px;border-radius:50%;background:var(--c,var(--text))}
.send{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;margin-top:26px}
.send .btn[aria-disabled=true]{opacity:.35;pointer-events:none}
.send .plain{font-size:14px;color:var(--muted);border-bottom:1px solid var(--line-2);padding-bottom:2px}
.send .plain:hover{color:var(--text);border-color:var(--text)}
.privacy{margin-top:16px;font-size:12px;color:var(--faint)}
.foot{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:32px;border-top:1px solid var(--line)}
.foot .logo svg{width:108px}
.foot p{font-size:13px;color:var(--muted)}
.foot p b{font-weight:500;color:var(--text);margin-right:14px}
.foot a.up{font-size:13px;color:var(--muted);padding:8px 0}
.foot a.up:hover{color:var(--text)}

@media (max-width:1100px){
  .track{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:40px}
  .track::before{display:none}
  .svc-item{border-top:1px solid var(--line-2);padding-top:28px}
  .svc-item::before{top:-7px}
}
@media (max-width:860px){
  :root{--header:64px}
  .logo svg{width:118px}
  .bar{flex-wrap:wrap;height:auto;min-height:var(--header);padding-block:10px}
  .js .menu{display:none}
  .menu{width:100%;flex-direction:column;align-items:stretch;gap:0;padding:8px 0 10px}
  .js .menu.open{display:flex}
  .menu a{font-size:17px;padding:14px 2px;border-radius:0;border-top:1px solid var(--line);color:var(--text)}
  .menu a:hover,.menu a[aria-current=true]{background:none}
  .menu .cta{margin:12px 0 0;border-radius:999px;text-align:center;border:0}
  .copy,.stage-card,.loop,.contact-in,.ai .copy{max-width:100%}
  .ai-where{grid-template-columns:1fr}
  .ai-rules{grid-template-columns:1fr}
  .ai-list li{grid-template-columns:1fr;gap:4px}
  .meters div{grid-template-columns:1fr;gap:6px}
  .webgl .ai .lube{margin-top:40svh}
  .hero{align-items:flex-end;min-height:calc(100svh - var(--header));padding-top:46svh}
  .hint{display:none}
  .labels{z-index:1}
  .nlabel{font-size:13px}
  .fallback{position:static;transform:none;width:min(80vw,380px);margin:0 auto 32px}
  .hero{flex-direction:column;justify-content:flex-end}
  html:not(.webgl) .hero{padding-top:40px}
  .stage-block{min-height:92svh;align-items:flex-end;padding-bottom:6svh}
  .stage-card .stage-glyph{font-size:64px;margin-top:12px}
  .webgl .stage-card{background:rgba(11,13,15,.78);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:22px 18px;border-radius:8px;border:1px solid var(--line)}
  .webgl .stage-card::before{left:18px}
  .svc-head{grid-template-columns:1fr;gap:20px}
  .track{grid-template-columns:1fr;row-gap:0}
  .track-ends{display:none}
  .svc-item{padding:24px 0 28px 30px;border-top:0;border-left:1px solid var(--line-2)}
  .svc-item:last-child{border-left-color:transparent}
  .svc-item::before{top:28px;left:-7px}
  .svc-item h3{min-height:0}
  .works-grid{grid-template-columns:1fr}
  .about-in{grid-template-columns:1fr}
  .foot{flex-wrap:wrap}
  .foot p{order:3;width:100%}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important}
}
