:root{color-scheme:light;--bg:#F4F1EA;--bg-2:#FBF9F4;--bg-3:#ECE7DB;--bg-inverse:#15181B;--ink:#16191C;--ink-2:#454B52;--ink-3:#626970;--ink-4:#A5AAB0;--line:#C6BCA6;--line-2:#16191C;--copper:#B75E1B;--copper-2:#D97A33;--copper-ink:#8C4413;--copper-dim:rgba(183,94,27,0.10);--on-copper:#FFFFFF;--mask:#1E6A4C;--mask-2:#2E8A66;--mask-dim:rgba(30,106,76,0.10);--link:#1E5AA8;--ok:#1F7A4D;--ok-dim:rgba(31,122,77,0.12);--warn:#A9741A;--warn-dim:rgba(169,116,26,0.14);--bad:#B23A2E;--bad-dim:rgba(178,58,46,0.12);--grid:rgba(22,25,28,0.085);--code-bg:#15181B;--code-fg:#EDE9DF;--code-dim:#8E8A80;--shadow-hard:3px 3px 0 var(--ink);--shadow-hard-sm:2px 2px 0 var(--ink);--shadow-soft:0 1px 2px rgba(22,25,28,0.06),0 8px 24px rgba(22,25,28,0.06);--scroll-fade:linear-gradient(90deg,#000 calc(100% - 34px),transparent);--r-sm:3px;--r:6px;--r-lg:10px;--font-display:var(--font-grotesk,"Space Grotesk"),var(--font-noto-kr,"Noto Sans KR"),var(--font-noto-jp,"Noto Sans JP"),system-ui,sans-serif;--font-sans:var(--font-noto-kr,"Noto Sans KR"),var(--font-noto-jp,"Noto Sans JP"),system-ui,-apple-system,sans-serif;--font-mono:var(--font-plex-mono,"IBM Plex Mono"),ui-monospace,"SF Mono",Menlo,Consolas,monospace;--ease:cubic-bezier(0.2,0.8,0.2,1);--dur-fast:0.12s;--dur:0.22s;--dur-slow:0.5s;--nav-h:60px;--bg-base:var(--bg);--bg-surface:var(--bg-2);--bg-elevated:var(--bg-3);--bg-solid:var(--bg-2);--bg-overlay:var(--bg-2);--border-line:var(--line);--border-strong:var(--line-2);--border-focus:var(--copper);--text-primary:var(--ink);--text-muted:var(--ink-2);--text-dim:var(--ink-3);--text-faint:var(--ink-4);--accent:var(--copper);--accent-bright:var(--copper-2);--accent-dim:var(--copper-dim);--accent-glow:var(--copper-dim);--accent-warm:var(--copper);--accent-grad:var(--copper);--accent-grad-soft:var(--copper-2);--success:var(--ok);--success-dim:var(--ok-dim);--warning:var(--warn);--warning-dim:var(--warn-dim);--danger:var(--bad);--danger-dim:var(--bad-dim);--radius-sm:var(--r-sm);--radius:var(--r);--radius-lg:var(--r-lg);--shadow-card:var(--shadow-soft);--shadow-float:var(--shadow-hard);--ease-out-expo:var(--ease);--ease-out-quart:var(--ease);--duration-fast:var(--dur-fast);--duration-base:var(--dur);--duration-slow:var(--dur-slow)}:root[data-theme=dark]{color-scheme:dark;--bg:#0F1412;--bg-2:#161C19;--bg-3:#1E2622;--bg-inverse:#EDE9DF;--ink:#EDE9DF;--ink-2:#C2BDB1;--ink-3:#8F8B81;--ink-4:#5E5B55;--line:#3B4741;--line-2:#EDE9DF;--copper:#E08A47;--copper-2:#F0A66A;--copper-ink:#F0A66A;--copper-dim:rgba(224,138,71,0.14);--on-copper:#0F1412;--mask:#4FB28A;--mask-2:#6FCBA5;--mask-dim:rgba(79,178,138,0.14);--link:#86B4F2;--ok:#5BC48F;--ok-dim:rgba(91,196,143,0.14);--warn:#E0B04A;--warn-dim:rgba(224,176,74,0.14);--bad:#F07A6E;--bad-dim:rgba(240,122,110,0.14);--grid:rgba(237,233,223,0.07);--code-bg:#0B0F0D;--code-fg:#EDE9DF;--code-dim:#6E6A62;--shadow-hard:3px 3px 0 var(--copper);--shadow-hard-sm:2px 2px 0 var(--copper);--shadow-soft:0 1px 2px rgba(0,0,0,0.4),0 8px 24px rgba(0,0,0,0.35)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#0F1412;--bg-2:#161C19;--bg-3:#1E2622;--bg-inverse:#EDE9DF;--ink:#EDE9DF;--ink-2:#C2BDB1;--ink-3:#8F8B81;--ink-4:#5E5B55;--line:#3B4741;--line-2:#EDE9DF;--copper:#E08A47;--copper-2:#F0A66A;--copper-ink:#F0A66A;--copper-dim:rgba(224,138,71,0.14);--on-copper:#0F1412;--mask:#4FB28A;--mask-2:#6FCBA5;--mask-dim:rgba(79,178,138,0.14);--link:#86B4F2;--ok:#5BC48F;--ok-dim:rgba(91,196,143,0.14);--warn:#E0B04A;--warn-dim:rgba(224,176,74,0.14);--bad:#F07A6E;--bad-dim:rgba(240,122,110,0.14);--grid:rgba(237,233,223,0.07);--code-bg:#0B0F0D;--code-fg:#EDE9DF;--code-dim:#6E6A62;--shadow-hard:3px 3px 0 var(--copper);--shadow-hard-sm:2px 2px 0 var(--copper);--shadow-soft:0 1px 2px rgba(0,0,0,0.4),0 8px 24px rgba(0,0,0,0.35)}}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font-sans);font-size:15px;line-height:1.6;background-color:var(--bg);background-image:radial-gradient(var(--grid) 1px,transparent 1.2px);background-size:24px 24px;background-attachment:fixed;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body,h1,h2,h3,h4{margin:0;color:var(--ink)}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.02em;line-height:1.15}p{margin:0}a{color:inherit;text-decoration:none}.prose a,a.link{color:var(--link);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb,var(--link) 40%,transparent);text-decoration-color:color-mix(in srgb,var(--link) 40%,transparent);text-underline-offset:3px}.prose a:hover,a.link:hover{-webkit-text-decoration-color:var(--link);text-decoration-color:var(--link)}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0;padding:0}button:disabled{cursor:not-allowed}input,select,textarea{font:inherit;color:inherit}img,svg,video{display:block;max-width:100%}[hidden]{display:none!important}::selection{background:var(--copper);color:var(--on-copper)}:focus-visible{outline:2px solid var(--copper);outline-offset:2px;border-radius:2px}hr{border:0;border-top:1px solid var(--line);margin:24px 0}@media (max-width:640px){input,select,textarea{font-size:16px}}.container{width:100%;max-width:1160px;margin:0 auto;padding:0 24px}.container-narrow{max-width:780px}.container-wide{max-width:1400px}.section{padding-top:48px;padding-bottom:48px}.section-tight{padding-top:40px;padding-bottom:40px}.has-nav{padding-top:0}.page{padding-top:40px;padding-bottom:96px}.page-head{display:flex;flex-wrap:wrap;gap:16px 24px;align-items:flex-end;justify-content:space-between;margin-bottom:28px;padding-bottom:20px;border-bottom:1px solid var(--line)}.page-head h1{font-size:clamp(26px,3.4vw,36px);font-weight:700}.page-head p{color:var(--ink-2);max-width:640px;margin-top:6px}.grid{display:grid;grid-gap:16px;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-auto{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}@media (max-width:960px){.grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.container{padding-left:16px;padding-right:16px}.section{padding-top:36px;padding-bottom:36px}}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.stack{display:grid;grid-gap:12px;gap:12px}.stack>*{min-width:0}.between{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.muted{color:var(--ink-2)}.dim{color:var(--ink-3)}.small{font-size:13px}.xs{font-size:12px}.center{text-align:center}.workbench{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:20px;gap:20px;align-items:start}.workbench.pg-wb{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}@media (max-width:1000px){.workbench,.workbench.pg-wb{grid-template-columns:1fr}}.workbench>*,.workbench>*>*{min-width:0}.display{font-family:var(--font-display);font-weight:700;letter-spacing:-.03em;line-height:1.02}.display-xl{font-size:clamp(40px,6.2vw,76px)}.display-lg{font-size:clamp(30px,4.2vw,48px)}.display-md{font-size:clamp(22px,2.6vw,30px)}.lead{font-size:17px;line-height:1.65;color:var(--ink-2)}.mono{font-family:var(--font-mono);letter-spacing:0;font-feature-settings:"tnum","zero"}.text-copper,.text-gradient{color:var(--copper-ink)}.text-mask{color:var(--mask)}.eyebrow,.section-title{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--copper-ink);margin:0 0 16px}.eyebrow:before,.section-title:before{content:"";width:22px;height:2px;background:var(--copper)}.eyebrow[data-n]:before{content:attr(data-n);width:auto;height:auto;background:none;color:var(--ink);font-weight:700}.eyebrow[data-n]:after{content:"";width:22px;height:2px;background:var(--copper);order:-1}.section-head{max-width:720px;margin-bottom:36px}.section-head h2{font-size:clamp(26px,3.2vw,38px);font-weight:700;margin-bottom:12px}.section-head p{color:var(--ink-2);font-size:16px}.section-head.center{margin-left:auto;margin-right:auto}.kbd{font-family:var(--font-mono);font-size:11px;padding:1px 6px;border:solid var(--line-2);border-width:1px 1px 2px;border-radius:3px;background:var(--bg-2)}.num{font-family:var(--font-display);font-weight:700;letter-spacing:-.02em;font-feature-settings:"tnum"}.card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);padding:22px;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease)}.card.hover:hover,a.card:hover{transform:translate(-2px,-2px)}.card.hover:hover,.card.raised,a.card:hover{border-color:var(--line-2);box-shadow:var(--shadow-hard)}.card.inset{background:var(--bg-3)}.card.copper{border-color:var(--copper)}.card-title{font-size:16px;font-weight:700;margin:0 0 6px}.card-desc{font-size:13.5px;color:var(--ink-2);line-height:1.6}.sheet{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r)}.sheet-head{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.sheet-body{padding:18px}.sheet-row{padding:12px 18px;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.sheet-row:last-child{border-bottom:0}.tag{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:var(--r-sm);font-family:var(--font-mono);font-size:11.5px;font-weight:600;letter-spacing:.02em;border:1px solid var(--copper);color:var(--copper-ink);background:var(--copper-dim)}.tag.ink{border-color:var(--line-2);color:var(--ink);background:transparent}.tag.mask{border-color:var(--mask);color:var(--mask);background:var(--mask-dim)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:var(--r-sm);font-family:var(--font-sans);font-size:14px;font-weight:600;letter-spacing:-.005em;white-space:nowrap;border:1px solid var(--line-2);color:var(--ink);background:var(--bg-2);transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),background var(--dur-fast),color var(--dur-fast),border-color var(--dur-fast)}.btn:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:var(--shadow-hard-sm)}.btn:active:not(:disabled){transform:translate(0);box-shadow:none}.btn:disabled{opacity:.45}.btn-primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn-primary:hover:not(:disabled){box-shadow:var(--shadow-hard-sm)}.btn-accent,.btn-primary:hover:not(:disabled){background:var(--copper);border-color:var(--copper);color:var(--on-copper)}.btn-accent:hover:not(:disabled){background:var(--copper-2);border-color:var(--copper-2)}.btn-ghost{background:transparent;border-color:var(--line);color:var(--ink-2)}.btn-ghost:hover:not(:disabled){border-color:var(--line-2);color:var(--ink)}.btn-mask{background:var(--mask);border-color:var(--mask);color:#fff}.btn-danger{background:transparent;border-color:var(--bad);color:var(--bad)}.btn-danger:hover:not(:disabled){background:var(--bad);color:#fff}.btn-sm{height:32px;padding:0 12px;font-size:13px}@media (pointer:coarse){.btn-sm{height:36px}}.btn-lg{height:50px;padding:0 24px;font-size:15px}.btn-block{width:100%}.btn-icon{width:36px;height:36px;padding:0}:root[data-theme=dark] .btn-primary,:root[data-theme=dark] .btn-primary:hover:not(:disabled){color:#0F1412}:root[data-theme=dark] .btn-primary:hover:not(:disabled){color:var(--on-copper)}.label{display:block;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin:0 0 6px}.input,.select,.textarea{width:100%;height:40px;padding:0 12px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--bg-2);color:var(--ink);transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}.textarea,textarea.input{height:auto;min-height:120px;padding:10px 12px;resize:vertical;line-height:1.55}.input:hover,.select:hover,.textarea:hover{border-color:var(--ink-4)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--copper);box-shadow:0 0 0 3px var(--copper-dim)}.input::placeholder{color:var(--ink-4)}.select{padding-right:32px;background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px;background-repeat:no-repeat}.select,select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none}.field{display:grid;grid-gap:6px;gap:6px}.help{font-size:12px;color:var(--ink-3)}.check{display:inline-flex;gap:8px;align-items:center;font-size:14px}.check input{width:16px;height:16px;accent-color:var(--copper)}input:-webkit-autofill{-webkit-box-shadow:0 0 0 100px var(--bg-2) inset;-webkit-text-fill-color:var(--ink)}.seg{display:inline-flex;padding:3px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-3);gap:2px}.seg a,.seg button{height:28px;padding:0 12px;border-radius:2px;font-size:13px;font-weight:600;color:var(--ink-3);display:inline-flex;align-items:center}.seg .active,.seg [aria-current=true],.seg [aria-pressed=true]{background:var(--bg-2);color:var(--ink);box-shadow:0 1px 0 var(--line)}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:var(--r-sm);font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--line);color:var(--ink-2);background:var(--bg-2)}.badge.accent{border-color:var(--copper);color:var(--copper-ink);background:var(--copper-dim)}.badge.success{border-color:var(--ok);color:var(--ok);background:var(--ok-dim)}.badge.warning{border-color:var(--warn);color:var(--warn);background:var(--warn-dim)}.badge.danger{border-color:var(--bad);color:var(--bad);background:var(--bad-dim)}.badge.mask{border-color:var(--mask);color:var(--mask);background:var(--mask-dim)}.badge.pending{color:var(--ink-3);border-style:dashed}.badge.ink{background:var(--ink);color:var(--bg);border-color:var(--ink)}.dot{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}.dot.live{background:var(--ok);box-shadow:0 0 0 3px var(--ok-dim);animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 0 3px var(--ok-dim)}50%{box-shadow:0 0 0 6px transparent}}.divider{border:0;height:1px;background:var(--line);margin:28px 0}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--copper);border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle}@keyframes spin{to{transform:rotate(1turn)}}.page-loading{display:flex;gap:10px;align-items:center;justify-content:center;padding:80px 0;color:var(--ink-2)}.skel{position:relative;overflow:hidden;background:var(--bg-3);border-radius:var(--r-sm);min-height:14px}.skel:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);animation:shimmer 1.4s infinite}:root[data-theme=dark] .skel:after{background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent)}@keyframes shimmer{to{transform:translateX(100%)}}.code,pre.code{background:var(--code-bg);color:var(--code-fg);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;font-family:var(--font-mono);font-size:12.5px;line-height:1.6;overflow:auto;margin:0;white-space:pre;-moz-tab-size:2;tab-size:2}.prose code,code.inline{font-family:var(--font-mono);font-size:.9em;padding:1px 6px;border-radius:3px;background:var(--bg-3);border:1px solid var(--line)}table.tbl{width:100%;border-collapse:collapse;font-size:13.5px}table.tbl td,table.tbl th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}table.tbl th{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:600;background:var(--bg-3)}table.tbl tr:last-child td{border-bottom:0}table.tbl.lines td{border-right:1px solid var(--line)}table.tbl.lines td:last-child{border-right:0}.tbl-wrap{overflow-x:auto;border:1px solid var(--line)}.notice,.tbl-wrap{border-radius:var(--r);background:var(--bg-2)}.notice{display:flex;gap:12px;padding:12px 14px;border:1px solid var(--line);font-size:13.5px;color:var(--ink-2)}.notice.info{border-color:var(--link)}.notice.warn{border-color:var(--warn);background:var(--warn-dim);color:var(--ink)}.notice.bad{border-color:var(--bad);background:var(--bad-dim);color:var(--ink)}.notice.ok{border-color:var(--ok);background:var(--ok-dim);color:var(--ink)}.dev-banner{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;padding:7px 20px;text-align:center;background:var(--copper-dim);border-bottom:1px solid var(--line);font-size:13px;line-height:1.45;color:var(--ink-2)}.dev-banner-tag{flex:none;padding:1px 7px;border-radius:var(--r-sm);background:var(--copper);color:var(--on-copper);font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:uppercase}@media (max-width:560px){.dev-banner{font-size:12px;padding:6px 14px;gap:8px}}.nav-bar{position:-webkit-sticky;position:sticky;top:0;z-index:50;height:var(--nav-h);display:flex;align-items:center;gap:20px;padding:0 24px;background:color-mix(in srgb,var(--bg-2) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.nav-bar[data-scrolled]{box-shadow:0 1px 0 var(--line),0 6px 20px rgba(22,25,28,.05)}.nav-brand{display:inline-flex;align-items:center;gap:9px;font-family:var(--font-display);font-weight:700;font-size:17px;letter-spacing:-.02em;color:var(--ink)}.nav-brand .mark{width:26px;height:26px}.nav-menu{display:flex;gap:2px;list-style:none;margin:0 auto 0 12px;padding:0}.nav-menu-link{display:inline-flex;align-items:center;height:34px;padding:0 11px;border-radius:var(--r-sm);font-size:14px;font-weight:500;color:var(--ink-2);border-bottom:2px solid transparent}.nav-menu-link:hover{color:var(--ink);background:var(--bg-3)}.nav-menu-link[aria-current=page]{color:var(--ink);border-bottom-color:var(--copper);border-radius:0}.nav-menu-link:focus-visible{outline-offset:0;border-radius:var(--r-sm)}.nav-right{display:flex;align-items:center;gap:8px;margin-left:auto}.nav-link{display:inline-flex;align-items:center;height:34px;padding:0 12px;border-radius:var(--r-sm);font-size:14px;font-weight:500;color:var(--ink-2);border:1px solid transparent}.nav-link:hover{color:var(--ink);background:var(--bg-3)}.nav-link-primary{background:var(--ink);color:var(--bg)!important;font-weight:600;border-color:var(--ink)}.nav-link-primary:hover{background:var(--copper)!important;border-color:var(--copper);color:var(--on-copper)!important}.nav-burger{display:none;width:36px;height:36px;border:1px solid var(--line);border-radius:var(--r-sm);align-items:center;justify-content:center}.nav-drawer{position:fixed;inset:var(--nav-h) 0 0 0;z-index:49;background:var(--bg);padding:16px 20px 32px;overflow-y:auto;border-top:1px solid var(--line)}.nav-drawer a,.nav-drawer button{display:flex;align-items:center;justify-content:space-between;width:100%;padding:14px 4px;font-size:17px;font-weight:600;border-bottom:1px solid var(--line)}.nav-drawer .drawer-foot{display:flex;gap:10px;margin-top:20px}.nav-drawer .drawer-foot a,.nav-drawer .drawer-foot button{border:0;padding:0}@media (max-width:900px){.nav-menu{display:none}.nav-burger{display:inline-flex}.nav-bar{padding:0 16px}.nav-hide-mobile{display:none!important}}.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:16px;top:16px;z-index:100;background:var(--ink);color:var(--bg);padding:8px 12px;border-radius:var(--r-sm)}.theme-toggle{width:36px;height:36px;border:1px solid var(--line);border-radius:var(--r-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--ink-2)}.theme-toggle:hover{border-color:var(--line-2);color:var(--ink)}.footer{margin-top:auto;border-top:1px solid var(--line-2);background:var(--bg-2)}.footer-grid{display:grid;grid-template-columns:1.6fr repeat(4,1fr);grid-gap:32px;gap:32px;padding:48px 0 36px}.footer-col h4{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:0 0 14px;font-weight:600}.footer-col ul{list-style:none;margin:0;padding:0;display:grid;grid-gap:9px;gap:9px}.footer-col a{font-size:13.5px;color:var(--ink-2)}.footer-col a:hover{color:var(--copper-ink)}.footer-bottom{padding:16px 0;gap:12px 24px;align-items:center;justify-content:space-between;font-size:12px}.footer-biz,.footer-bottom{border-top:1px solid var(--line);display:flex;flex-wrap:wrap;color:var(--ink-3)}.footer-biz{margin:0;padding:14px 0 12px;gap:4px 22px;letter-spacing:.02em;line-height:1.7}.footer-biz>div{display:flex;gap:6px;min-width:0}.footer-biz dt{color:var(--ink-2)}.footer-biz dt:after{content:":"}.footer-biz dd{margin:0;color:var(--ink)}.footer-biz a{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--line-2);text-decoration-color:var(--line-2)}.footer-biz a:hover{color:var(--copper-ink)}@media (max-width:960px){.footer-grid{grid-template-columns:repeat(2,1fr)}.footer-grid>:first-child{grid-column:1/-1}}.toast-stack{position:fixed;right:20px;bottom:20px;z-index:200;display:grid;grid-gap:8px;gap:8px;max-width:min(380px,calc(100vw - 40px))}.toast{padding:12px 14px 12px 16px;border-radius:var(--r-sm);background:var(--ink);color:var(--bg);font-size:13.5px;border-left:3px solid var(--copper);box-shadow:var(--shadow-soft);animation:toast-in .3s var(--ease) both}.toast.success{border-left-color:var(--ok)}.toast.error{border-left-color:var(--bad)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}[data-reveal]{opacity:0;transform:translateY(14px);transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease)}.no-scroll-reveal [data-reveal],[data-reveal][data-reveal-visible=true]{opacity:1;transform:none}[data-reveal-stagger]>*{opacity:0;transform:translateY(14px);transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease)}.no-scroll-reveal [data-reveal-stagger]>*,[data-reveal-stagger][data-reveal-visible=true]>*{opacity:1;transform:none}[data-reveal-stagger]>:first-child{transition-delay:.03s}[data-reveal-stagger]>:nth-child(2){transition-delay:.09s}[data-reveal-stagger]>:nth-child(3){transition-delay:.15s}[data-reveal-stagger]>:nth-child(4){transition-delay:.21s}[data-reveal-stagger]>:nth-child(5){transition-delay:.27s}[data-reveal-stagger]>:nth-child(6){transition-delay:.33s}[data-reveal-stagger]>:nth-child(n+7){transition-delay:.39s}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.fade-in-up,.lux-reveal-stagger>*{animation:fade-up .5s var(--ease) both}.lux-reveal-stagger>:nth-child(2){animation-delay:.06s}.lux-reveal-stagger>:nth-child(3){animation-delay:.12s}.lux-reveal-stagger>:nth-child(4){animation-delay:.18s}.lux-reveal-stagger>:nth-child(5){animation-delay:.24s}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}[data-reveal-stagger]>*,[data-reveal]{opacity:1;transform:none}}.prose{font-size:15.5px;line-height:1.8;color:var(--ink);max-width:72ch}.prose h2{font-size:24px;margin:44px 0 14px;padding-top:12px;border-top:1px solid var(--line)}.prose h2:first-child{margin-top:0;border-top:0;padding-top:0}.prose h3{font-size:18px;margin:28px 0 10px}.prose p{margin:0 0 14px}.prose ol,.prose ul{margin:0 0 16px;padding-left:22px}.prose li{margin:4px 0}.prose li::marker{color:var(--copper);font-weight:700}.prose blockquote{margin:18px 0;padding:10px 18px;border-left:3px solid var(--copper);background:var(--bg-2);color:var(--ink-2);border-radius:0 var(--r) var(--r) 0}.prose pre{margin:0 0 16px}.prose table{width:100%;border-collapse:collapse;margin:0 0 18px;font-size:14px}.prose td,.prose th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line)}.prose th{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3)}.prose figure{margin:18px 0}.prose figcaption{font-size:12.5px;color:var(--ink-3);margin-top:6px}.prose .callout{display:flex;gap:10px;padding:12px 14px;border:1px solid var(--copper);background:var(--copper-dim);border-radius:var(--r);margin:0 0 16px;font-size:14px}.toc{position:-webkit-sticky;position:sticky;top:calc(var(--nav-h) + 24px);font-size:13px}.toc a{display:block;padding:5px 0 5px 12px;border-left:2px solid var(--line);color:var(--ink-3)}.toc a:hover,.toc a[aria-current=true]{color:var(--ink);border-left-color:var(--copper)}.doc-layout{display:grid;grid-template-columns:220px minmax(0,1fr);grid-gap:48px;gap:48px;align-items:start}@media (max-width:900px){.doc-layout{grid-template-columns:1fr}.toc{position:static;display:flex;flex-wrap:wrap;gap:6px 14px}.toc a{border:0;padding:0}}.level-rail{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:0;gap:0;border:1px solid var(--line-2);border-radius:var(--r);overflow:hidden;background:var(--bg-2)}.level-step{padding:16px 18px;border-right:1px solid var(--line);position:relative;min-height:96px}.level-step:last-child{border-right:0}.level-step .lvl{font-family:var(--font-mono);font-size:11px;color:var(--ink-3);letter-spacing:.1em}.level-step .name{font-weight:700;font-size:14.5px;margin-top:4px}.level-step[data-done=true]{background:var(--mask-dim)}.level-step[data-done=true] .lvl:after{content:" ✓";color:var(--mask)}.level-step[data-active=true]{background:var(--copper-dim)}.level-step[data-active=true]:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--copper)}.level-step:not(:first-child):after{content:"\203A";position:absolute;left:-11px;top:50%;margin-top:-11px;z-index:1;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-mono);font-size:14px;line-height:1;color:var(--copper-ink);background:var(--bg-2);border:1px solid var(--line)}@media (max-width:720px){.level-rail{grid-template-columns:repeat(2,1fr)}.level-step:nth-child(2){border-right:0}.level-step:nth-child(-n+2){border-bottom:1px solid var(--line)}.level-step:nth-child(3):after{display:none}}.pass-row{display:grid;grid-template-columns:28px 56px 1fr;grid-gap:10px;gap:10px;align-items:start;padding:10px 0;border-bottom:1px solid var(--line)}.pass-row:last-child{border-bottom:0}.finding{font-size:12.5px;color:var(--ink-2);margin:4px 0 0;padding-left:8px;border-left:2px solid var(--line)}.finding.error{border-left-color:var(--bad);color:var(--bad)}.finding.warn{border-left-color:var(--warn);color:var(--warn)}.finding a{color:var(--link);font-size:11px;margin-left:6px}.gates{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:10px;gap:10px}.gate{padding:12px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--bg-2)}.gate .gate-name{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.gate .gate-state{font-weight:700;margin-top:4px}.gate[data-state=confirmed],.gate[data-state=pass]{border-color:var(--ok)}.gate[data-state=warn]{border-color:var(--warn)}.gate[data-state=fail]{border-color:var(--bad)}@media (max-width:640px){.gates{grid-template-columns:1fr}}.pin{font-family:var(--font-mono);font-size:11px;padding:3px 6px;border-radius:3px;min-width:32px;text-align:center;border:1px solid var(--line);color:var(--ink-2);background:var(--bg-2);transition:background var(--dur-fast),color var(--dur-fast)}.pin[data-declared=true]{border-color:var(--ink);color:var(--ink)}.pin[data-level=high]{background:var(--copper);border-color:var(--copper);color:var(--on-copper)}.pin[data-level=low]{background:var(--bg-3)}.pin[data-level=pullup]{border-style:dashed}.range{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:18px;margin:0;background:transparent;cursor:pointer}.range:focus{outline:none}.range::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:var(--line)}.range::-moz-range-track{height:4px;border-radius:2px;background:var(--line)}.range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;margin-top:-5px;border-radius:50%;background:var(--copper);border:2px solid var(--bg-2);box-shadow:0 0 0 1px var(--copper);-webkit-transition:transform var(--dur-fast);transition:transform var(--dur-fast)}.range::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--copper);border:2px solid var(--bg-2);box-shadow:0 0 0 1px var(--copper)}.range:focus-visible::-webkit-slider-thumb,.range:hover::-webkit-slider-thumb{transform:scale(1.15);box-shadow:0 0 0 3px var(--copper-dim),0 0 0 1px var(--copper)}.range:disabled{opacity:.5;cursor:not-allowed}.sensor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:10px 18px;gap:10px 18px}.sensor-row{display:grid;grid-gap:4px;gap:4px}.sensor-row .sensor-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:12.5px;color:var(--ink-2)}.sensor-row .sensor-head b{font-family:var(--font-mono);font-weight:600;color:var(--copper-ink);font-feature-settings:"tnum"}.sensor-group{display:grid;grid-gap:8px;gap:8px}.sensor-group+.sensor-group{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}.console{background:var(--code-bg);color:var(--code-fg);border:1px solid var(--line);border-radius:var(--r);font-family:var(--font-mono);font-size:12.5px;line-height:1.55;padding:12px 14px;overflow:auto;white-space:pre-wrap;word-break:break-word}.console:empty:before{content:"—";color:var(--code-dim)}.stat{display:grid;grid-gap:2px;gap:2px}.stat .num{font-size:28px}.stat .cap{font-size:12px;color:var(--ink-3);font-family:var(--font-mono);letter-spacing:.04em}.marquee{display:flex;gap:10px;flex-wrap:wrap}.check-list{list-style:none;padding:0;margin:0;display:grid;grid-gap:9px;gap:9px;font-size:14px}.check-list li{display:flex;gap:10px;align-items:flex-start}.check-list li:before{content:"✓";font-family:var(--font-mono);font-weight:700;color:var(--mask);flex:none}.check-list li.no:before{content:"–";color:var(--ink-4)}.faq details{border-top:1px solid var(--line);padding:16px 0}.faq details:last-child{border-bottom:1px solid var(--line)}.faq summary{cursor:pointer;font-weight:600;font-size:15.5px;list-style:none;display:flex;justify-content:space-between;gap:12px}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";font-family:var(--font-mono);color:var(--copper);font-size:18px;line-height:1}.faq details[open] summary:after{content:"–"}.faq details p{margin-top:10px;color:var(--ink-2);font-size:14.5px;max-width:70ch}.trace{position:relative}.trace:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--copper)}.step-list{counter-reset:step;list-style:none;padding:0;margin:0;display:grid;grid-template-columns:minmax(0,1fr);grid-gap:0;gap:0}.step-list>li{counter-increment:step;display:grid;grid-template-columns:44px minmax(0,1fr);grid-gap:16px;gap:16px;padding:18px 0;border-bottom:1px solid var(--line)}.step-list>li>*{min-width:0}.step-list code.inline{max-width:100%;white-space:normal;overflow-wrap:anywhere}.step-list>li:before{content:counter(step,decimal-leading-zero);font-family:var(--font-mono);font-weight:700;color:var(--copper-ink);font-size:14px;padding-top:2px}.step-list>li:last-child{border-bottom:0}@media print{body{background:#fff}.footer,.nav-bar,.no-print{display:none!important}.card,.sheet{page-break-inside:avoid;break-inside:avoid;box-shadow:none}}.locked-sketch{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;height:420px;padding:24px;text-align:center;border:1px dashed var(--line);border-radius:var(--r);background:var(--bg-3)}.locked-sketch .locked-mark{font-size:26px;opacity:.75}.locked-sketch .locked-title{font-weight:700}.locked-sketch p{max-width:42ch;margin:0}.sketch-copy{margin:10px 2px 0;display:grid;grid-gap:6px;gap:6px;font-size:13px;line-height:1.6;color:var(--ink-2)}.sketch-copy p{margin:0}.sketch-try{padding:8px 10px;border-left:2px solid var(--copper);background:var(--copper-dim);border-radius:0 var(--r-sm) var(--r-sm) 0}.sketch-try-tag{display:inline-block;margin-right:7px;font-weight:700;font-size:11px;letter-spacing:.02em;color:var(--copper-ink)}.build-error{display:grid;grid-gap:8px;gap:8px;padding:12px;border:1px solid var(--bad);border-radius:var(--r);background:var(--bad-dim)}.build-error-head{margin:0;font-size:13.5px;line-height:1.6}.build-error-line{display:inline-block;margin-right:8px;padding:1px 7px;border-radius:3px;background:var(--bad);color:#fff;font-size:11.5px;font-weight:700}.build-error-raw-line{margin:0;font-size:12px;color:var(--ink-3);word-break:break-word}.build-error .btn{justify-self:start}.build-error-raw{max-height:200px;overflow:auto;font-size:11.5px;color:var(--ink-3)}.ex-picker{display:grid;grid-gap:10px;gap:10px}.ex-tiers{display:flex;flex-wrap:wrap;gap:4px;padding-bottom:8px;border-bottom:1px solid var(--line)}.ex-tier-tab{display:inline-flex;align-items:baseline;gap:6px;padding:6px 12px;border:1px solid transparent;border-radius:var(--r-sm);background:none;color:var(--ink-2);font:inherit;font-size:13px;cursor:pointer}.ex-tier-tab:hover{color:var(--ink);background:var(--bg-2)}.ex-tier-tab:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.ex-tier-tab.is-open{color:var(--ink);font-weight:600;background:var(--bg-2);border-color:var(--line)}.ex-tier-count{font-size:11px;color:var(--ink-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ex-tier-items{display:flex;flex-wrap:wrap;gap:6px;min-height:32px}.tutor-dock{position:fixed;right:20px;bottom:20px;z-index:45;width:min(380px,calc(100vw - 40px));display:flex;flex-direction:column;align-items:flex-end}.tutor-launch{display:flex;align-items:center;gap:10px;padding:7px 15px 7px 7px;border:1px solid var(--line-2);border-radius:999px;background:var(--bg-2);box-shadow:var(--shadow-soft);color:var(--ink);font:inherit;text-align:left;cursor:pointer}.tutor-launch:hover{background:var(--bg-3)}.tutor-launch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tutor-launch-text{display:grid;line-height:1.3}.tutor-launch-text strong{font-size:13px;font-weight:600}.tutor-close{border:0;background:none;color:var(--ink-3);font-size:13px;line-height:1;padding:4px;cursor:pointer}.tutor-close:hover{color:var(--ink)}.tutor-close:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.tutor{display:flex;flex-direction:column;width:100%;max-height:min(72vh,560px);padding:14px 16px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg-2);box-shadow:var(--shadow-soft)}.tutor-log{display:grid;grid-gap:10px;gap:10px;flex:1 1 auto;min-height:0;overflow-y:auto;padding:4px 2px 10px}.tutor-turn{display:flex;gap:10px;align-items:flex-start}.tutor-face{flex:none;width:36px;height:36px;border-radius:999px;object-fit:cover;object-position:50% 8%;background:var(--bg-3);border:1px solid var(--line)}.tutor-face-fallback{display:grid;place-items:center;font-size:15px;font-weight:600;color:var(--ink-2)}.tutor-bubble{border-radius:12px 12px 12px 4px;background:var(--bg-3);border:1px solid var(--line);line-height:1.65;white-space:pre-wrap}.tutor-bubble,.tutor-mine{margin:0;padding:8px 12px;font-size:13.5px}.tutor-mine{justify-self:end;max-width:78%;border-radius:12px 12px 4px 12px;background:var(--accent-soft,var(--bg-3));border:1px solid var(--line-2);line-height:1.6}.tutor-dots{display:flex;gap:4px;align-items:center;min-height:34px}.tutor-dots span{width:5px;height:5px;border-radius:999px;background:var(--ink-4);animation:tutor-blink 1.2s ease-in-out infinite}.tutor-dots span:nth-child(2){animation-delay:.18s}.tutor-dots span:nth-child(3){animation-delay:.36s}@keyframes tutor-blink{0%,80%,to{opacity:.25}40%{opacity:1}}@media (prefers-reduced-motion:reduce){.tutor-dots span{animation:none;opacity:.6}}.tutor-ask{display:flex;gap:8px;margin-top:4px}.tutor-ask input{flex:1 1;min-width:0;padding:8px 12px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--bg);color:var(--ink);font:inherit;font-size:13.5px}.tutor-ask input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.tutor-bubble code{padding:1px 5px;border-radius:4px;background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);font-size:.92em}@media (max-width:640px){.tutor-dock{left:12px;right:12px;bottom:12px;width:auto}.tutor{max-height:70vh}}.doc-layout>*{min-width:0}