:root{
  --bg:#0E1420; --bg2:#141C2B; --line:#26314A; --ink:#EEF0F4; --ink2:#B6BDCB; --ink3:#7F889B;
  --ahp:#DB6F2E; --shap:#3B8AD0; --ember:#F2884B; --old:#E2553A;
  --serif:"Instrument Serif",Georgia,serif; --sans:"IBM Plex Sans KR",system-ui,sans-serif; --mono:"IBM Plex Mono",ui-monospace,monospace;
  color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.75 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:var(--ember)}
button{font:inherit}
.lang{position:fixed;top:12px;right:16px;z-index:5;font-size:13px;color:var(--ink3);background:rgba(14,20,32,.7);padding:4px 10px;border-radius:14px;backdrop-filter:blur(6px)}
.lang a{color:var(--ink2);text-decoration:none}
.lang a.on{color:var(--ink);font-weight:600}

/* hero */
.hero{position:relative;height:100svh;min-height:640px;overflow:hidden;background:radial-gradient(120% 90% at 50% 100%,#1B2740 0%,#0E1420 60%)}
#scene{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:pan-y}
.hero::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgba(14,20,32,.85) 0%,rgba(14,20,32,.35) 38%,rgba(14,20,32,0) 60%)}
.hero-top{z-index:2;position:absolute;left:clamp(16px,5vw,64px);top:clamp(56px,9vh,96px);max-width:560px;pointer-events:none;text-shadow:0 2px 16px rgba(0,0,0,.6)}
.eyebrow{font:500 12px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ember);margin:0 0 14px}
h1{font:400 clamp(36px,5vw,64px)/1.08 var(--serif);margin:0 0 16px;letter-spacing:-.01em}
h1 span{font-family:var(--sans);font-weight:600;font-size:.62em;letter-spacing:-.02em}
h1 em{font-style:normal;font-family:"Noto Serif KR",var(--serif);font-weight:500;color:#FFD9C2;letter-spacing:-.03em}
.lede{color:var(--ink2);margin:0;max-width:470px}
.hero-panel{z-index:2;position:absolute;right:clamp(16px,4vw,48px);bottom:clamp(64px,10vh,96px);width:min(360px,calc(100% - 32px));background:rgba(20,28,43,.82);border:1px solid var(--line);border-radius:14px;padding:18px 18px 14px;backdrop-filter:blur(10px)}
.stat{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
.stat-num{font:400 56px/1 var(--serif);color:#FFB08A;font-variant-numeric:tabular-nums}
.stat-cap{font-size:14px;color:var(--ink2)}
.stat-cap b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
input[type=range]{width:100%;accent-color:var(--ember);height:28px;margin:0}
.ticks{display:flex;justify-content:space-between;font:12px var(--mono);color:var(--ink3);margin:-2px 2px 10px}
.mode{display:flex;gap:6px;margin-bottom:10px}
.mode button,.presets button,.seg button{background:transparent;color:var(--ink2);border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:13px;cursor:pointer;min-height:32px}
.mode button.on,.seg button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.presets button:hover,.mode button:hover,.seg button:hover{border-color:var(--ink3)}
.legend{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink2);flex-wrap:wrap}
.legend .bar{flex:1;min-width:120px;height:8px;border-radius:4px}
.legend .sw{display:inline-block;width:10px;height:10px;border-radius:2px;vertical-align:-1px;margin-right:4px}
.src{font-size:11.5px;color:var(--ink3);margin:10px 0 0;line-height:1.5}
.scroll{z-index:2;position:absolute;left:clamp(16px,5vw,64px);bottom:28px;color:var(--ink2);text-decoration:none;font-size:14px}

/* body */
main{background:var(--bg)}
.wrap{max-width:860px;margin:0 auto;padding:72px 16px 8px}
h2{font:500 clamp(26px,3.4vw,34px)/1.3 "Noto Serif KR",var(--serif);margin:0 0 14px;letter-spacing:-.01em}
h2.sub{margin-top:48px}
.wrap>p{color:var(--ink2);margin:0 0 18px}
.intro{font-size:17px}
.line{list-style:none;margin:32px 0 0;padding:0;border-left:1px solid var(--line)}
.step{position:relative;padding:0 0 36px 28px}
.step::before{content:"";position:absolute;left:-6px;top:8px;width:11px;height:11px;border-radius:50%;background:var(--bg);border:2px solid var(--ember)}
.when{font:500 13px var(--mono);color:var(--ember);letter-spacing:.06em}
.step h3{font-size:19px;line-height:1.45;margin:4px 0 8px;font-weight:600}
.step p{color:var(--ink2);margin:0 0 8px}
.cite{font-size:13.5px;line-height:1.55;color:var(--ink3)!important}
.cite a{word-break:break-all}
.note{font-size:13px;color:var(--ink3)!important;line-height:1.6}
.chart{margin:12px 0 14px;position:relative}
.chart svg{display:block;width:100%;height:auto;overflow:visible}
.chart text{font-family:var(--sans);fill:var(--ink2);font-size:13px}
.chart .num{font-family:var(--mono);font-size:12px;fill:var(--ink)}
.chart .muted{fill:var(--ink3);font-size:12px}
.tip{position:absolute;pointer-events:none;background:#202A3D;border:1px solid var(--line);color:var(--ink);font-size:13px;padding:6px 9px;border-radius:6px;white-space:nowrap;opacity:0;transition:opacity .12s;z-index:3}

/* calculator */
.presets{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:4px 0 16px;font-size:13px;color:var(--ink3)}
.calc{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.inputs{display:flex;flex-direction:column;gap:12px}
.ind{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--bg2)}
.ind .nm{display:flex;justify-content:space-between;gap:8px;font-size:14px;font-weight:600}
.ind .gp{font:12px var(--mono);color:var(--ink3);font-weight:400}
.ind .opts{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.ind .opts button{background:transparent;color:var(--ink2);border:1px solid var(--line);border-radius:6px;padding:4px 8px;font-size:12.5px;cursor:pointer;min-height:30px;text-align:left}
.ind .opts button.on{background:#2A3550;color:var(--ink);border-color:var(--ink3)}
.out{position:sticky;top:16px;align-self:start}
.blend{display:block;font-size:13px;color:var(--ink2)}
.blend input{accent-color:var(--shap)}
.ends{display:flex;justify-content:space-between;font-size:12px;color:var(--ink3)}
.scores{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:10px;margin:14px 0 6px}
.scores div{border-top:1px solid var(--line);padding-top:6px}
.scores .k{display:block;font-size:12px;color:var(--ink3)}
.scores .v{font:400 40px/1.1 var(--serif);font-variant-numeric:tabular-nums}
.scores .v.small{font-size:26px;color:var(--ink2)}
.seg{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 4px}

.proj{border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--bg2)}
.proj h3{margin:0 0 4px;font-size:17px;line-height:1.45}
.proj p{margin:0;color:var(--ink2);font-size:14px}
.pubs{list-style:none;padding:0;margin:0}
.pubs li{padding:12px 0;border-top:1px solid var(--line);font-size:14px;color:var(--ink2);line-height:1.6}
.pubs li b{color:var(--ink);font-weight:600}
.scope p{font-size:15px}
.badge{display:inline-block;font:13px var(--sans);color:#FFD9C2!important;border:1px solid #6B3A22;background:#2A1A12;border-radius:6px;padding:4px 10px}
.foot{border-top:1px solid var(--line);margin-top:64px;padding:24px 16px 32px;text-align:center;color:var(--ink3);font-size:13px}
.disc{margin:0 0 12px}
.foot-row{display:flex;gap:14px;justify-content:center;align-items:center;flex-wrap:wrap}
.foot-row img{display:block}
.foot-row a{color:var(--ink2)}
.ver{font-family:var(--mono);font-size:12px}

@media (max-width:760px){
  .hero{height:auto;min-height:0;padding-bottom:16px}
  #scene{position:relative;height:58svh;min-height:360px}
  .hero{display:flex;flex-direction:column}
  .hero-top{position:relative;top:auto;left:auto;padding:56px 16px 4px;max-width:none}
  .hero::before{display:none}
  #scene{order:2}
  .hero-panel{order:3}
  .scroll{order:4}
  h1{font-size:38px}
  .lede{font-size:15px}
  .hero-panel{position:relative;right:auto;bottom:auto;margin:12px 16px 0;width:auto}
  .scroll{position:static;display:block;margin:14px 16px 0}
  .calc{grid-template-columns:1fr}
  .out{position:static}
  .wrap{padding-top:56px}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.pick{margin-top:10px;border-top:1px solid var(--line);padding-top:10px;font-size:13px;color:var(--ink2);line-height:1.55}
.pick b{color:var(--ink)}
.pick .x{float:right;background:none;border:0;color:var(--ink3);cursor:pointer;font-size:16px;line-height:1;padding:2px 4px}
.paperfig{margin:18px 0 22px;background:#fff;border-radius:10px;overflow:hidden}
.paperfig img{display:block;width:100%;height:auto}
.paperfig figcaption{background:var(--bg);color:var(--ink3);font-size:13px;line-height:1.55;padding:8px 0 0}
.yearbar{display:flex;align-items:center;gap:12px;font-size:14px;color:var(--ink2);margin:8px 0 2px}
.yearbar input{flex:1;max-width:420px}
.yearbar b{font:400 28px/1 var(--serif);color:#FFB08A;font-variant-numeric:tabular-nums}
