/* v3 sheet, fenced off legacy content (.vzl) by build/v3/_legacy.py */
@font-face{font-family:'Red Hat Display';font-style:normal;font-weight:300 900;font-display:swap;src:url(/fonts/RedHatDisplay.woff2) format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/JetBrainsMono.woff2) format('woff2')}
:root{--rose:#da5b75;--rose2:#de8a9c;--rose-d:#6e2938;--ok:#8fb98a;--amber:#c9924e;
  --ember:color-mix(in oklab,var(--rose-d) 62%,var(--amber));
  --sans:'Red Hat Display',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  
  --bg:#0d0f13;--bg1:#12151a;--bg2:#161a20;--bg3:#1a1e26;--ink:#edeff2;--mut:#9ba3ae;--dim:#8d949f;
  
  --fs-micro:13px;--fs-small:15px;--fs-body:18.5px;--fs-lead:clamp(19.5px,1.3vw,23px);
  --fs-h3:clamp(22px,1.7vw,28px);--fs-h2:clamp(36px,4.2vw,64px);--fs-h1:clamp(50px,7.4vw,128px);
  --fs-num:clamp(46px,5.2vw,88px);
  
  --stage:100%;--gut:clamp(16px,4vw,128px);--measure:64ch;
  --sec:clamp(88px,10vw,168px);--r:14px;--r-lg:22px;
  
  --sec-y:clamp(48px,5vw,80px);--fs-sec:clamp(26px,2.3vw,38px);
  --ease:cubic-bezier(.25,1,.5,1);--ease-io:cubic-bezier(.65,0,.35,1);}
:root{--line:#262b33;--line2:#343a44;--faint:#848b96;--code:#090b0e;
  --ink2:var(--mut);
  --ink3:var(--dim);
  --glass:color-mix(in srgb,var(--bg) 72%,transparent);
  --rose-t:color-mix(in srgb,var(--rose) 14%,transparent);}
*:not(.vzl *),*:not(.vzl *)::before,*:not(.vzl *)::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:var(--fs-body);line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"kern","liga";transition:background-color .4s var(--ease)}
img:not(.vzl *),video:not(.vzl *),svg:not(.vzl *){display:block;max-width:100%}
a:not(.vzl *){color:inherit;text-decoration:none}
button:not(.vzl *){font:inherit;color:inherit}
.mono:not(.vzl *){font-family:var(--mono);font-feature-settings:"zero","tnum"}
.num:not(.vzl *){font-variant-numeric:tabular-nums}
.stage:not(.vzl *){width:var(--stage);margin-inline:auto;padding-inline:var(--gut)}
.measure:not(.vzl *){max-width:var(--measure)}
.eyebrow:not(.vzl *){font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--rose2);line-height:1.5}
.dimtxt:not(.vzl *){color:var(--ink3)}
.balance:not(.vzl *){text-wrap:balance}
.skip:not(.vzl *){position:absolute;left:-9999px}
.skip:focus:not(.vzl *){left:16px;top:16px;z-index:99;background:var(--ink);color:var(--bg);padding:10px 14px;border-radius:8px}
:focus-visible:not(.vzl *){outline:2px solid var(--rose2);outline-offset:3px;border-radius:6px}
.ic:not(.vzl *){width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
.btn:not(.vzl *){display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 22px;border-radius:999px;font-weight:600;font-size:16px;
  border:1px solid var(--line2);transition:transform .3s var(--ease),background-color .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease)}
.btn:hover:not(.vzl *){border-color:var(--ink3)}
.btn-p:not(.vzl *){background:var(--rose);color:#16070a;border-color:transparent}
.btn-p:hover:not(.vzl *){background:var(--rose2);box-shadow:0 14px 40px -12px color-mix(in srgb,var(--rose) 70%,transparent)}
.btn .arr:not(.vzl *){transition:transform .3s var(--ease)}
.btn:hover .arr:not(.vzl *){transform:translateX(4px)}
@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.rv:not(.vzl *){animation:rv linear both;animation-timeline:view();animation-range:entry 0% cover 28%}
.rv-l:not(.vzl *){animation:rvl linear both;animation-timeline:view();animation-range:entry 0% cover 30%}
.rv-s:not(.vzl *){animation:rvs linear both;animation-timeline:view();animation-range:entry 0% cover 35%}
.stg>*:not(.vzl *){animation:rv linear both;animation-timeline:view();animation-range:entry 0% cover 26%}
.stg>*:nth-child(2):not(.vzl *){animation-range:entry 4% cover 30%}
.stg>*:nth-child(3):not(.vzl *){animation-range:entry 8% cover 34%}
.stg>*:nth-child(4):not(.vzl *){animation-range:entry 12% cover 38%}
.stg>*:nth-child(5):not(.vzl *){animation-range:entry 16% cover 42%}
.stg>*:nth-child(6):not(.vzl *){animation-range:entry 20% cover 46%}}
.in:not(.vzl *){animation:rv 1s var(--ease) both}
.in2:not(.vzl *){animation:rv 1s .12s var(--ease) both}
.in3:not(.vzl *){animation:rv 1s .24s var(--ease) both}
.in4:not(.vzl *){animation:rv 1s .36s var(--ease) both}
.marq-track:not(.vzl *){animation:marq var(--marq-dur,48s) linear infinite}
.marq:hover .marq-track:not(.vzl *){animation-play-state:paused}}
@keyframes rv{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes rvl{from{opacity:0;transform:translateX(-32px)}to{opacity:1;transform:none}}
@keyframes rvs{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
@keyframes marq{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){*:not(.vzl *),*:not(.vzl *)::before,*:not(.vzl *)::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
video[data-ambient]:not(.vzl *){display:none}
.poster-fallback:not(.vzl *){display:block!important}}
.poster-fallback:not(.vzl *){display:none}
.marq:not(.vzl *){overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marq-track:not(.vzl *){display:flex;width:max-content}
.wm:not(.vzl *){font-family:var(--mono);font-weight:600;letter-spacing:-.01em;text-transform:lowercase;line-height:1;white-space:nowrap;
  font-size:var(--fs-mark,clamp(20px,1.45vw,26px));color:var(--ink)}
.wm i:not(.vzl *){display:inline-block;line-height:1;font-style:normal;color:var(--rose);position:relative;top:-.13em}
.wm i:not(.vzl *)::before{content:"";position:absolute;left:-.07em;right:-.07em;top:-.20em;height:.11em;background:var(--rose)}
.brand:not(.vzl *){display:inline-flex;align-items:baseline;gap:12px;min-height:44px;align-self:center;padding-block:10px}
.brand .tagline:not(.vzl *){font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--dim);white-space:nowrap}
@media (max-width:1100px){.brand .tagline:not(.vzl *){display:none}}
.zs:not(.vzl *){display:inline-block;position:relative;line-height:1;font-style:normal;color:var(--rose);top:-.12em;margin-inline:.01em}
.zs:not(.vzl *)::before{content:"";position:absolute;left:-.06em;right:-.06em;top:.12em;height:.085em;border-radius:.02em;background:var(--rose)}
.wm-xl:not(.vzl *){--fs-mark:clamp(64px,12vw,200px);letter-spacing:-.02em}
:root{--term-w:580px;--term-r:18px;--term-hdr:48px;--term-bg:color-mix(in srgb,var(--bg) 82%,transparent);
  --term-bd:color-mix(in srgb,var(--ink) 14%,transparent);--term-font:14px/1.6 var(--mono)}
.term:not(.vzl *){position:relative;z-index:1;width:min(100%,var(--term-w));border-radius:var(--term-r);background:var(--term-bg);border:1px solid var(--term-bd);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 40px 80px -30px rgba(0,0,0,.7);overflow:hidden;text-align:left}
.term-h:not(.vzl *){display:flex;align-items:center;gap:8px;padding:0 8px 0 16px;height:var(--term-hdr);border-bottom:1px solid var(--line)}
.lights:not(.vzl *){display:flex;gap:7px}
.lights i:not(.vzl *){width:11px;height:11px;border-radius:50%;background:var(--line2)}
.term-tabs:not(.vzl *){display:flex;gap:2px;margin-left:auto}
.term-tabs [role=tab]:not(.vzl *),.term-label:not(.vzl *){display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border:0;border-radius:8px;background:transparent;font:500 13.5px var(--mono);color:var(--ink3);cursor:pointer}
.term-tabs [role=tab][aria-selected=true]:not(.vzl *),.term-label:not(.vzl *){background:var(--line);color:var(--ink)}
.term-label:not(.vzl *){margin-left:auto;cursor:default}
.term-h button.copy:not(.vzl *){margin-left:6px;min-height:36px;padding:0 12px;border-radius:8px;border:1px solid var(--line2);background:transparent;font:500 13px var(--mono);color:var(--ink2);cursor:pointer}
.term pre:not(.vzl *),.term .body:not(.vzl *){margin:0;padding:16px 20px 18px;font:var(--term-font);color:var(--ink2);white-space:pre-wrap}
.term .p:not(.vzl *){color:var(--rose2)}
.term .c:not(.vzl *){color:var(--ink3)}
.term .o:not(.vzl *){color:var(--ink)}
.term .ok:not(.vzl *){color:var(--ok)}
.term .w:not(.vzl *){color:var(--amber)}
.caret:not(.vzl *){display:inline-block;width:8px;height:1.1em;vertical-align:-3px;background:var(--rose2)}
@media (prefers-reduced-motion:no-preference){.caret:not(.vzl *){animation:blink 1.1s steps(1) infinite}}
@keyframes blink{50%{opacity:0}}
.cv:not(.vzl *){content-visibility:auto;contain-intrinsic-size:auto 1000px}
.slot:not(.vzl *){position:relative;background:var(--bg1) linear-gradient(110deg,transparent 40%,color-mix(in srgb,var(--ink) 4%,transparent) 50%,transparent 60%) 0 0/250% 100%}
.slot>img:not(.vzl *),.slot>video:not(.vzl *){width:100%;height:100%;object-fit:cover}
.slot .sample:not(.vzl *){position:absolute;right:10px;bottom:10px;z-index:2;font:500 12px var(--mono);letter-spacing:.06em;text-transform:uppercase;
  padding:4px 7px;border-radius:5px;background:color-mix(in srgb,var(--bg) 72%,transparent);color:var(--dim)}
.cmp:not(.vzl *){position:fixed;right:16px;bottom:16px;z-index:90;display:flex;gap:4px;padding:4px;border-radius:999px;background:var(--glass);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line2);font:600 13px/1 var(--mono)}
.cmp button:not(.vzl *){min-height:36px;padding:0 12px;border-radius:999px;border:0;background:transparent;cursor:pointer;color:var(--ink2)}
.cmp button[aria-pressed=true]:not(.vzl *){background:var(--ink);color:var(--bg)}
.cmp a:not(.vzl *){display:flex;align-items:center;padding:0 12px;color:var(--ink2)}
body.has-rail .subnav:not(.vzl *){display:none}
.rl-wrap:not(.vzl *){display:flex;align-items:flex-start}
.rail:not(.vzl *){position:sticky;top:72px;align-self:flex-start;flex:0 0 260px;width:260px;height:calc(100svh - 72px);
  background:#0b0d11;border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:20}
.rl-scroll:not(.vzl *){flex:1;overflow:auto;padding:22px 14px 8px;scrollbar-width:none}
.rl-scroll:not(.vzl *)::-webkit-scrollbar{width:0}
.rl-grp:not(.vzl *){animation:rlfade .45s var(--ease) both;animation-delay:calc(var(--rd,0)*70ms + 40ms)}
@keyframes rlfade{from{opacity:0;transform:translateX(-7px)}}
@media (prefers-reduced-motion:reduce){.rl-grp:not(.vzl *){animation:none}}
.rl-lab:not(.vzl *){font:600 11px var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--rose2);margin:0 0 9px;padding:0 10px}
body.has-rail .sec:not(.vzl *),body.has-rail .ph:not(.vzl *){scroll-margin-top:88px}
.rl-nav:not(.vzl *){display:flex;flex-direction:column;gap:2px}
.rl-row:not(.vzl *){position:relative;display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;border-radius:10px;color:var(--mut);
  text-decoration:none;font:500 15px var(--sans);transition:background-color .17s var(--ease),color .17s var(--ease)}
.rl-row>:first-child:not(.vzl *){flex:1}
.rl-row:hover:not(.vzl *){background:color-mix(in srgb,var(--bg1) 75%,transparent);color:var(--ink2)}
.rl-row.on:not(.vzl *){background:color-mix(in srgb,var(--rose) 9%,var(--bg1));color:var(--ink)}
.rl-row.on:not(.vzl *)::before{content:"";position:absolute;left:-14px;top:50%;transform:translateY(-50%);width:3px;height:22px;
  border-radius:0 3px 3px 0;background:var(--rose);box-shadow:0 0 10px color-mix(in srgb,var(--rose) 50%,transparent)}
.rl-cnt:not(.vzl *){margin-left:auto;font:500 12px var(--mono);color:var(--dim);min-width:22px;height:20px;display:grid;place-items:center;
  border-radius:6px;background:color-mix(in srgb,var(--bg2) 80%,transparent);transition:color .17s,background-color .17s}
.rl-row.on .rl-cnt:not(.vzl *){color:#f3c6d0;background:color-mix(in srgb,var(--rose) 16%,transparent)}
.rl-idx:not(.vzl *){display:flex;flex-direction:column;gap:1px}
.rl-idx[hidden]:not(.vzl *){display:none}
.rl-idx a:not(.vzl *){position:relative;font:500 14px var(--sans);color:var(--mut);min-height:34px;display:flex;align-items:center;
  padding-left:15px;text-decoration:none;transition:color .17s}
.rl-idx a:not(.vzl *)::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:2px;border-radius:2px;background:transparent;transition:background-color .17s}
.rl-idx a:hover:not(.vzl *){color:var(--ink2)}
.rl-idx a.on:not(.vzl *){color:var(--ink)}
.rl-idx a.on:not(.vzl *)::before{background:var(--rose)}
.rl-hr:not(.vzl *){height:1px;background:var(--line);margin:18px 14px}
.rl-foot:not(.vzl *){display:flex;align-items:center;gap:9px;padding:14px 20px;border-top:1px solid var(--line);font:500 11.5px var(--mono);color:var(--dim)}
.rl-dot:not(.vzl *){width:6px;height:6px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 20%,transparent)}
.rl-main:not(.vzl *){flex:1 1 0;min-width:0}
body.has-rail .rl-main .stage:not(.vzl *){max-width:1120px;margin:0;padding-inline:clamp(24px,4vw,64px)}
body.has-rail .rl-main .ph:not(.vzl *){border-bottom:1px solid var(--line)}
@media (max-width:900px){.rail:not(.vzl *){display:none}
body.has-rail .subnav:not(.vzl *){display:block}}
.rl-back:not(.vzl *){color:var(--mut);text-decoration:none;transition:color .17s}
.rl-back:hover:not(.vzl *){color:var(--ink)}
p:not(.vzl *),li:not(.vzl *),dd:not(.vzl *),figcaption:not(.vzl *),blockquote:not(.vzl *),.lede:not(.vzl *),.note:not(.vzl *),.sub:not(.vzl *),.microcopy:not(.vzl *),.hw-sum:not(.vzl *),summary:not(.vzl *){text-wrap:pretty}
h1:not(.vzl *),h2:not(.vzl *),h3:not(.vzl *),h4:not(.vzl *),.sec:not(.vzl *){text-wrap:balance}
[lang="ko"] p:not(.vzl *),[lang="ko"] li:not(.vzl *),[lang="ko"] dd:not(.vzl *),[lang="ko"] h1:not(.vzl *),[lang="ko"] h2:not(.vzl *),[lang="ko"] h3:not(.vzl *),[lang="ko"] h4:not(.vzl *),[lang="ko"] .lede:not(.vzl *),[lang="ko"] .note:not(.vzl *),[lang="ko"] summary:not(.vzl *){word-break:keep-all;line-break:strict}