@font-face{font-family:Space Grotesk;src:url(/fonts/spacegrotesk-latin.woff2)format("woff2");font-weight:300 700;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;src:url(/fonts/spacegrotesk-latinext.woff2)format("woff2");font-weight:300 700;font-style:normal;font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;src:url(/fonts/plexsans-latin.woff2)format("woff2");font-weight:400 600;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;src:url(/fonts/plexsans-latinext.woff2)format("woff2");font-weight:400 600;font-style:normal;font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;src:url(/fonts/plexmono-400-latin.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;src:url(/fonts/plexmono-400-latinext.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;src:url(/fonts/plexmono-600-latin.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;src:url(/fonts/plexmono-600-latinext.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--color-paper:#f4f5f3;--color-panel:#fff;--color-ink:#16181a;--color-signal:#1f4be0;--color-signal-deep:#163bb8;--color-muted:#6b7075;--color-grid:#d7dbd9;--color-white:#fff;--bg-page:var(--color-paper);--bg-surface:var(--color-panel);--bg-inverse:var(--color-ink);--text-strong:var(--color-ink);--text-muted:var(--color-muted);--text-on-accent:var(--color-white);--text-on-inverse:var(--color-paper);--accent-do:var(--color-ink);--accent-learn:var(--color-signal);--link:var(--color-signal);--hairline-color:var(--color-grid);--hairline-ink:var(--color-ink);--focus-ring:var(--color-signal);--font-display:"Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, "Courier New", monospace;--font-utility:var(--font-mono);--fs-hero:clamp(2.125rem, 1.28rem + 3.6vw, 3.625rem);--lh-hero:1.03;--wght-hero:600;--ls-hero:-.015em;--fs-h1:clamp(1.875rem, 1.4rem + 2vw, 2.75rem);--lh-h1:1.06;--wght-h1:600;--ls-h1:-.015em;--fs-h2:clamp(1.75rem, 1.35rem + 1.6vw, 2.375rem);--lh-h2:1.1;--wght-h2:600;--ls-h2:-.015em;--fs-h3:1.1875rem;--lh-h3:1.25;--wght-h3:600;--ls-h3:-.01em;--fs-eyebrow:.78125rem;--lh-eyebrow:1.1;--wght-eyebrow:600;--ls-eyebrow:.06em;--fs-body-lg:1.0625rem;--lh-body-lg:1.55;--wght-body-lg:400;--ls-body-lg:0;--fs-body:1rem;--lh-body:1.6;--wght-body:400;--ls-body:0;--fs-small:.875rem;--lh-small:1.45;--wght-small:400;--ls-small:0;--fs-caption:.71875rem;--lh-caption:1.4;--wght-caption:400;--ls-caption:.02em;--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--space-4xl:6rem;--space-5xl:8rem;--radius-sm:4px;--radius-md:5px;--radius-lg:6px;--radius-pill:5px;--shadow-sm:none;--shadow-md:0 1px 3px #16181a0f;--shadow-lg:0 2px 10px -4px #16181a1a;--hairline:1px solid var(--color-grid);--hairline-2:1px solid var(--color-ink);--grid-step:88px;--ease:cubic-bezier(.2, .6, .2, 1);--dur-fast:.12s;--dur:.16s;--maxw-content:72rem;--maxw-prose:40rem;--nav-h:4.5rem;--gutter:clamp(1.25rem, .6rem + 2.4vw, 2.125rem)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0}img{max-width:100%;height:auto;display:block}a{color:inherit}.container{width:100%;max-width:calc(var(--maxw-content) + 2 * var(--gutter));padding-inline:var(--gutter);margin-inline:auto}.section-pad{padding-block:var(--space-4xl)}@media (width<=640px){.section-pad{padding-block:var(--space-3xl)}}:where(section[id],.hub-section){scroll-margin-top:calc(var(--nav-h) + var(--space-md))}.sheet{max-width:calc(var(--maxw-content) + 2 * var(--gutter));background:linear-gradient(var(--color-grid) 1px, transparent 1px) 0 0 / 100% var(--grid-step), var(--color-paper);border-inline:1px solid var(--color-grid);min-height:100vh;margin-inline:auto;position:relative}body{background:var(--bg-page);color:var(--text-strong);font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--wght-body);letter-spacing:var(--ls-body);font-synthesis:weight;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}.h-hero,.h1,.h2,.h3{font-family:var(--font-display);color:var(--text-strong);margin:0}.h-hero{font-size:var(--fs-hero);line-height:var(--lh-hero);font-weight:var(--wght-hero);letter-spacing:var(--ls-hero)}.h1{font-size:var(--fs-h1);line-height:var(--lh-h1);font-weight:var(--wght-h1);letter-spacing:var(--ls-h1)}.h2{font-size:var(--fs-h2);line-height:var(--lh-h2);font-weight:var(--wght-h2);letter-spacing:var(--ls-h2)}.h3{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--wght-h3);letter-spacing:var(--ls-h3)}.accent-italic{font-family:var(--font-display);color:var(--color-signal);font-style:normal;font-weight:inherit}.eyebrow{font-family:var(--font-utility);font-size:var(--fs-eyebrow);line-height:var(--lh-eyebrow);font-weight:var(--wght-eyebrow);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--text-strong);align-items:baseline;gap:.6rem;display:inline-flex}.eyebrow--muted{color:var(--text-muted)}.eyebrow-fig{font-family:var(--font-mono);color:var(--color-signal);letter-spacing:.02em;font-weight:600}.section-head{max-width:46rem;margin-bottom:var(--space-2xl)}.section-head .eyebrow{margin-bottom:var(--space-md)}.section-head .section-lead{font-size:var(--fs-body-lg);line-height:var(--lh-body-lg);color:var(--text-muted);margin:var(--space-md) 0 0;max-width:34rem}.body-lg{font-size:var(--fs-body-lg);line-height:var(--lh-body-lg);font-weight:var(--wght-body-lg)}.small{font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--wght-small)}.mono{font-family:var(--font-mono)}.caption{font-family:var(--font-mono);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--wght-caption);letter-spacing:var(--ls-caption);color:var(--text-muted)}.link{color:var(--link);text-underline-offset:.18em;text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, var(--color-signal) 45%, transparent);transition:text-decoration-color var(--dur) var(--ease)}.link:hover{text-decoration-color:var(--link)}.btn-primary,.btn-secondary{align-items:center;gap:var(--space-xs);font-family:var(--font-body);font-size:var(--fs-small);letter-spacing:.01em;border-radius:var(--radius-md);cursor:pointer;transition:background var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease), transform var(--dur-fast) var(--ease);padding:.72rem 1.25rem;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.btn-primary{background:var(--color-ink);color:var(--text-on-accent);border:1.5px solid var(--color-ink)}.btn-primary:hover{background:#000;border-color:#000;transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-secondary{color:var(--color-signal);border:1.5px solid var(--color-signal);background:0 0}.btn-secondary:hover{background:var(--color-signal);color:var(--text-on-accent);transform:translateY(-1px)}.btn-secondary:active{transform:translateY(0)}.btn-primary:focus-visible,.btn-secondary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.door-card{background:var(--bg-surface);border:var(--hairline);border-radius:var(--radius-lg);padding:var(--space-xl);box-shadow:var(--shadow-sm);transition:box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);position:relative;overflow:hidden}.door-card:before{content:"";background:var(--color-grid);height:2px;position:absolute;inset:0 0 auto}.door-card--do:before{background:var(--accent-do)}.door-card--learn:before{background:var(--accent-learn)}.door-card:hover{border-color:color-mix(in srgb, var(--color-ink) 30%, var(--color-grid));box-shadow:var(--shadow-md)}.module-id{font-family:var(--font-mono);font-size:var(--fs-caption);letter-spacing:.04em;color:var(--text-muted);margin-bottom:var(--space-md);flex-wrap:wrap;align-items:baseline;gap:.6rem;display:flex}.module-id .tag{text-transform:uppercase;border-radius:var(--radius-sm);letter-spacing:.06em;padding:2px 7px;font-weight:600}.door-card--do .module-id .tag{background:var(--color-ink);color:var(--color-white)}.door-card--learn .module-id .tag{background:var(--color-signal);color:var(--color-white)}.nav{z-index:50;align-items:center;gap:var(--space-lg);height:var(--nav-h);padding-inline:var(--gutter);background:color-mix(in srgb, var(--color-paper) 90%, transparent);backdrop-filter:blur(8px);border-bottom:var(--hairline);display:flex;position:sticky;top:0}.nav-link{font-family:var(--font-mono);font-size:var(--fs-small);color:var(--text-muted);padding:var(--space-2xs) 0;transition:border-color var(--dur) var(--ease), color var(--dur) var(--ease);border-bottom:1.5px solid #0000;font-weight:400;text-decoration:none}.nav-link:hover{color:var(--color-signal);border-bottom-color:var(--color-signal)}.nav-spacer{margin-left:auto}.nav-flag{align-items:center;gap:var(--space-2xs);font-family:var(--font-mono);font-size:var(--fs-caption);letter-spacing:.08em;text-transform:uppercase;color:var(--text-strong);padding:var(--space-2xs) var(--space-sm);border:var(--hairline);border-radius:var(--radius-sm);transition:border-color var(--dur) var(--ease), color var(--dur) var(--ease);font-weight:600;text-decoration:none;display:inline-flex}.nav-flag:hover{color:var(--color-signal);border-color:var(--color-signal)}.nav-link:focus-visible,.nav-flag:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;border-radius:var(--radius-sm)}.footer{background:var(--bg-inverse);color:var(--text-on-inverse);padding:var(--space-3xl) var(--space-lg) var(--space-xl)}.footer a{color:var(--text-on-inverse);text-underline-offset:.18em;text-decoration:underline #f4f5f366}.footer a:hover{text-decoration-color:var(--text-on-inverse)}.footer .caption{color:#f4f5f3a8}.footer a:focus-visible{outline:2px solid var(--color-paper);outline-offset:3px}.spec-note{font-family:var(--font-mono);font-size:var(--fs-caption);color:var(--text-muted);letter-spacing:.01em;line-height:1.5}.spec-note:before{content:"// ";color:var(--color-signal)}.kn-tag{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-strong);border:1.5px solid var(--color-ink);border-radius:var(--radius-sm);user-select:none;background:0 0;justify-content:center;align-items:center;padding:5px 9px;font-size:.9375rem;font-weight:600;display:inline-flex}.kn-tag--signal{color:var(--color-white);background:var(--color-signal);border-color:var(--color-signal)}.reticle{pointer-events:none;position:absolute;inset:0}.reticle .cross{width:16px;height:16px;position:absolute}.reticle .cross:before,.reticle .cross:after{content:"";background:var(--color-signal);position:absolute}.reticle .cross:before{width:2px;height:16px;top:0;left:7px}.reticle .cross:after{width:16px;height:2px;top:7px;left:0}.reticle .c1{top:-2px;left:-2px}.reticle .c2{top:-2px;right:-2px}.reticle .c3{bottom:-2px;left:-2px}.reticle .c4{bottom:-2px;right:-2px}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.btn-primary:hover,.btn-secondary:hover,.door-card:hover{transform:none}}
