:root{--bg-obsidian: #131314;--bg-graphite: #1c1b1c;--bg-elevated: #2a2a2b;--border-steel: #5b4137;--canvas-bone: #e3e2df;--canvas-paper: #e3e2df;--border-sand: #ab897d;--text-bone: #e5e2e3;--text-ink: #1b1c1a;--text-fog: #e4beb1;--text-muted: #c7c7c3;--signal-accent: #ff5c00;--signal-accent-hover: #ff7a2e;--signal-accent-pressed: #cc4900;--signal-glow: #ffb59a;--tint-accent: rgba(255, 92, 0, .12);--status-pass: #ff5c00;--verified-cyan: #61d9ff;--alert-amber: #ffb020;--alert-red: #ff5a5f;--tint-pass: rgba(255, 92, 0, .12);--tint-verified: rgba(97, 217, 255, .12);--tint-check: rgba(255, 176, 32, .12);--tint-stop: rgba(255, 90, 95, .12);--tint-neutral: rgba(199, 199, 195, .1);--font-display: "Archivo Narrow", "Segoe UI", system-ui, sans-serif;--font-ui: "IBM Plex Sans", "Segoe UI", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--fs-display-xl: clamp(40px, 6vw, 64px);--fs-display-l: clamp(32px, 4.5vw, 48px);--fs-h1: clamp(28px, 3.2vw, 36px);--fs-h2: clamp(22px, 2.4vw, 28px);--fs-h3: clamp(18px, 1.8vw, 22px);--fs-body-l: clamp(16px, 1.2vw, 17px);--fs-body: clamp(14px, 1vw, 15px);--fs-body-s: clamp(13px, .9vw, 14px);--fs-label: clamp(10px, .8vw, 11px);--lh-tight: 1.08;--lh-heading: 1.15;--lh-body: 1.5;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--sp-20: 80px;--gutter: var(--sp-4);--safe-left: max(env(safe-area-inset-left, 0px), var(--tg-content-safe-area-inset-left, 0px));--safe-right: max(env(safe-area-inset-right, 0px), var(--tg-content-safe-area-inset-right, 0px));--safe-top: max(env(safe-area-inset-top, 0px), var(--tg-content-safe-area-inset-top, 0px));--safe-bottom: max(env(safe-area-inset-bottom, 0px), var(--tg-content-safe-area-inset-bottom, 0px));--page-left: max(var(--gutter), var(--safe-left));--page-right: max(var(--gutter), var(--safe-right));--section-gap: var(--sp-8);--radius-xs: 4px;--radius-sm: 8px;--radius-md: 8px;--radius-lg: 12px;--radius-round: 999px;--shadow-float: 0 4px 12px rgba(255, 92, 0, .28);--shadow-modal: 0 24px 64px rgba(0, 0, 0, .52);--rail-width: 264px;--content-max: 1180px;--reading-max: 68ch;--tap-min: 44px}@media (min-width: 768px){:root{--gutter: var(--sp-6);--page-left: max(var(--gutter), var(--safe-left));--page-right: max(var(--gutter), var(--safe-right))}}@media (min-width: 1280px){:root{--gutter: var(--sp-8);--page-left: max(var(--gutter), var(--safe-left));--page-right: max(var(--gutter), var(--safe-right));--section-gap: var(--sp-12)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg-obsidian);color:var(--text-bone);font-family:var(--font-ui);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;line-height:var(--lh-heading);margin:0;letter-spacing:-.02em}h1{font-size:var(--fs-h1)}h2{font-size:var(--fs-h2)}h3{font-size:var(--fs-h3)}p{margin:0 0 var(--sp-4)}a{color:inherit;text-decoration-color:var(--text-muted);text-underline-offset:3px}button,input,textarea,select{font:inherit;color:inherit}img,video{max-width:100%;display:block}:focus-visible{outline:2px solid var(--signal-accent);outline-offset:2px}.icon{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:20px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;flex-shrink:0;display:inline-block}.icon--fill{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}.icon--sm{font-size:16px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app{min-height:100%;display:flex;flex-direction:column}.app__body{flex:1;display:flex;flex-direction:column;min-width:0}.container{width:100%;max-width:var(--content-max);margin:0 auto;padding-left:var(--page-left);padding-right:var(--page-right)}.stack>*+*{margin-top:var(--sp-4)}.stack-sm>*+*{margin-top:var(--sp-3)}.stack-lg>*+*{margin-top:var(--sp-8)}.row{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap}.row--between{justify-content:space-between}.section{padding-top:max(var(--section-gap),calc(var(--safe-top) + var(--sp-4)));padding-bottom:max(var(--section-gap),calc(var(--safe-bottom) + var(--sp-4)))}h1+p,h2+p,h3+p,h1+.row,h2+.row,h3+.row{margin-top:var(--sp-2)}section>h2+*,section>h3+*,article>h2+*,article>h3+*{margin-top:var(--sp-3)}.card>*:last-child,.canvas>*:last-child,.notice>*:last-child{margin-bottom:0}.lesson-back{display:inline-flex;align-items:center;min-height:var(--tap-min);color:var(--text-fog);text-decoration:none}.lesson-peek{display:flex;flex-direction:column;border:1px solid var(--border-steel);border-radius:var(--radius-md);overflow:hidden}.lesson-peek__row{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--tap-min);padding:var(--sp-2) var(--sp-3);text-decoration:none;color:var(--text-fog);border-top:1px solid var(--border-steel);transition:background .15s ease}.lesson-peek__row:first-child{border-top:none}.lesson-peek__row:not(.lesson-peek__row--current):hover{background:var(--bg-elevated)}.peek-icon--pass{color:var(--signal-accent);opacity:.7}.peek-icon--locked{color:var(--text-muted);opacity:.6}.lesson-peek__row--current{color:var(--text-bone);background:var(--tint-accent);border-left:3px solid var(--signal-accent);padding-left:calc(var(--sp-3) - 3px);cursor:default}.lesson-peek__row--empty{min-height:var(--tap-min);visibility:hidden}.lesson-peek__code{font-size:var(--fs-label);color:var(--text-muted);flex-shrink:0}.lesson-peek__title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-body-s)}.lesson-peek__row--current .lesson-peek__title{font-weight:600;white-space:normal}.lesson-actions{position:fixed;z-index:35;left:var(--safe-left);right:var(--safe-right);bottom:calc(74px + var(--safe-bottom));display:flex;justify-content:space-between;gap:var(--sp-2);padding:var(--sp-2) var(--gutter);background:#15191df5;border:1px solid var(--border-steel);border-radius:var(--radius-md);box-shadow:0 -8px 24px #00000047}.lesson-actions>.row{gap:var(--sp-2)}.lesson-actions .btn{padding-left:var(--sp-3);padding-right:var(--sp-3)}.jump-chip{position:fixed;z-index:35;left:50%;bottom:calc(74px + var(--safe-bottom) + var(--sp-3));transform:translate(-50%);display:inline-flex;align-items:center;gap:var(--sp-1);min-height:var(--tap-min);padding:0 var(--sp-4);background:var(--bg-elevated);border:1px solid var(--signal-accent);color:var(--signal-accent);border-radius:var(--radius-round);font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.02em;box-shadow:var(--shadow-float);cursor:pointer;animation:chip-in .22s ease}.jump-chip:active{transform:translate(-50%) scale(.96)}@keyframes chip-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.lesson-page{padding-bottom:calc(var(--section-gap) + 76px)}.rail{position:fixed;bottom:0;left:0;right:0;z-index:40;display:flex;background:var(--bg-graphite);border-top:1px solid var(--border-steel);padding-left:var(--safe-left);padding-right:var(--safe-right);padding-bottom:var(--safe-bottom)}.rail__link{flex:1;min-height:var(--tap-min);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;margin:var(--sp-1);padding:var(--sp-2) var(--sp-1);font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.06em;text-transform:uppercase;color:var(--text-fog);text-decoration:none;border-radius:var(--radius-md)}.rail__link[aria-current=page]{color:var(--signal-glow);background:var(--bg-elevated)}.rail__icon{font-size:17px;line-height:1}.rail__brand{display:none}.app__main{padding-bottom:calc(104px + var(--safe-bottom))}@media (min-width: 1024px){.app__body{flex-direction:row}.rail{position:sticky;top:0;bottom:auto;left:auto;right:auto;flex-direction:column;width:var(--rail-width);flex:0 0 var(--rail-width);height:100vh;border-top:none;border-right:1px solid var(--border-steel);padding:var(--sp-6) var(--sp-3);gap:var(--sp-1)}.rail__brand{display:block;font-family:var(--font-display);font-size:var(--fs-h3);letter-spacing:.04em;padding:0 var(--sp-3) var(--sp-6)}.rail__link{flex:0 0 auto;flex-direction:row;justify-content:flex-start;gap:var(--sp-3);border-top:none;border-left:2px solid transparent;border-radius:var(--radius-sm);font-size:var(--fs-body-s);padding:var(--sp-3)}.rail__link[aria-current=page]{border-left-color:var(--signal-accent)}.app__main{padding-bottom:var(--sp-12);flex:1;min-width:0}.lesson-actions{position:static;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none}.lesson-page{padding-bottom:var(--section-gap)}}.card{background:var(--bg-graphite);border:1px solid var(--border-steel);border-radius:var(--radius-md);padding:var(--sp-4);transition:border-color .2s ease}.hero-card:hover,.bento-cell:hover{border-color:var(--signal-accent)}.section>.container,.container.section{animation:page-in .26s ease}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.card--selected{border-color:var(--signal-accent)}.course-module{padding:0;overflow:hidden;transition:border-color .2s ease}.course-module--current{border-color:var(--signal-accent);background:var(--bg-elevated)}.course-module--locked{opacity:.6}.course-module__summary{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--tap-min);padding:var(--sp-3);cursor:pointer;list-style:none}.course-module__summary::-webkit-details-marker{display:none}.course-module__index{flex-shrink:0;width:1.6em;color:var(--text-muted)}.course-module--current .course-module__index{color:var(--signal-accent)}.course-module__heading{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.course-module__title{font-family:var(--font-ui);font-size:var(--fs-body-l);font-weight:600;color:var(--text-bone)}.course-module--locked .course-module__title{color:var(--text-fog)}.course-module__status{display:flex;align-items:center;gap:var(--sp-1);font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.04em;color:var(--text-fog)}.course-module__status--current{color:var(--signal-accent)}.course-module__check{color:var(--signal-accent);flex-shrink:0}.course-module__chevron{flex-shrink:0;color:var(--text-fog);transition:transform .2s ease}.course-module[open] .course-module__chevron{transform:rotate(180deg)}.course-module__body{padding:0 var(--sp-3)}.course-module>ul{padding:0 var(--sp-3) var(--sp-3);margin:0}.course-module--current>ul{padding-top:0}.course-lesson-row{display:flex;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;align-items:center;border-top:1px solid var(--border-steel);padding:var(--sp-3) 0;min-height:var(--tap-min);text-decoration:none;color:inherit;transition:background .15s ease}.course-module__progress-labels{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);margin-bottom:var(--sp-1)}.course-lesson-row__main{display:flex;gap:var(--sp-2);align-items:baseline;flex-wrap:wrap;flex:1;min-width:0}.course-lesson-row__meta{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}@media (max-width: 520px){.course-lesson-row{display:grid;grid-template-columns:auto 1fr;column-gap:var(--sp-3);row-gap:0;align-items:start;padding:var(--sp-4) 0}.course-lesson-row__main{grid-column:2;flex-direction:column;align-items:flex-start;gap:var(--sp-1)}.course-lesson-row__meta{grid-column:2;margin-top:var(--sp-2);flex-wrap:wrap;gap:var(--sp-2)}}a.course-lesson-row:hover{background:var(--tint-accent);margin:0 calc(var(--sp-2) * -1);padding-left:var(--sp-2);padding-right:var(--sp-2);border-radius:var(--radius-xs)}.course-lesson-row--current{color:var(--text-bone)}.canvas{background:var(--canvas-bone);color:var(--text-ink);border-radius:var(--radius-md);padding:var(--sp-5)}.canvas h1,.canvas h2,.canvas h3{color:var(--text-ink)}.canvas--paper{background:var(--canvas-paper)}.prose{max-width:var(--reading-max)}@media (min-width: 768px){.card{padding:var(--sp-5)}.canvas{padding:var(--sp-8)}}.mission{background:var(--bg-elevated);border:1px solid var(--border-steel);border-left:3px solid var(--signal-accent);border-radius:var(--radius-lg);padding:var(--sp-5)}.mission__eyebrow{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.12em;text-transform:uppercase;color:var(--text-fog)}.mission__title{font-family:var(--font-display);font-size:var(--fs-h2);margin:var(--sp-2) 0 var(--sp-3)}.tag{display:inline-flex;align-items:center;gap:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.08em;text-transform:uppercase;padding:3px var(--sp-2);border-radius:var(--radius-xs);border:1px solid transparent;white-space:nowrap}.tag--pass{color:var(--status-pass);background:var(--tint-pass);border-color:#6fcf5b52}.tag--verified{color:var(--verified-cyan);background:var(--tint-verified);border-color:#61d9ff52}.tag--check{color:var(--alert-amber);background:var(--tint-check);border-color:#ffb02052}.tag--stop{color:var(--alert-red);background:var(--tint-stop);border-color:#ff5a5f52}.tag--neutral{color:var(--text-fog);background:var(--tint-neutral);border-color:var(--border-steel)}.canvas .tag--pass{color:#a83d00;background:#ff5c0038;border-color:#cc6a30}.canvas .tag--neutral{color:var(--text-muted);background:#171a1d0f;border-color:var(--border-sand)}.canvas .tag--check{color:#7a4d00;background:#ffb02038;border-color:#d99722}.canvas .tag--stop{color:#8a1f22;background:#ff5a5f29;border-color:#d95a5f}.canvas .tag--verified{color:#0d5a72;background:#61d9ff33;border-color:#2fa5c9}.mono{font-family:var(--font-mono);font-size:var(--fs-body-s);letter-spacing:.02em}.muted{color:var(--text-fog)}.canvas .muted{color:var(--text-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--tap-min);padding:var(--sp-3) var(--sp-5);border-radius:var(--radius-sm);border:1px solid var(--border-steel);background:transparent;color:var(--text-bone);font-weight:600;cursor:pointer;text-decoration:none;transition:background .15s ease,border-color .15s ease,transform .1s ease,opacity .1s ease}.btn:hover{background:var(--bg-elevated)}.btn:active{transform:scale(.98)}.btn--primary{background:var(--signal-accent);border-color:var(--signal-accent);color:var(--text-ink)}.btn--primary:hover{background:var(--signal-accent-hover);border-color:var(--signal-accent-hover)}.btn--primary:active{background:var(--signal-accent-pressed);opacity:.92;transform:scale(.98)}.btn--danger{border-color:var(--alert-red);color:var(--alert-red)}.btn--danger:hover{background:var(--tint-stop)}.btn--small{min-height:var(--tap-min);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-body-s)}@media (min-width: 1024px) and (pointer: fine){.btn--small{min-height:34px}}.btn:disabled{opacity:.45;cursor:not-allowed}.canvas .btn{border-color:var(--border-sand);color:var(--text-ink)}.canvas .btn:hover{background:#171a1d0d}.canvas .btn--primary{color:var(--text-ink);border-color:var(--signal-accent-pressed)}.field{display:block;margin-bottom:var(--sp-4)}.field__label{display:block;font-size:var(--fs-body-s);color:var(--text-fog);margin-bottom:var(--sp-2)}.input,.textarea,.select{width:100%;min-height:var(--tap-min);padding:var(--sp-3);background:var(--canvas-paper);color:var(--text-ink);border:1px solid var(--border-sand);border-radius:var(--radius-sm);font-size:16px}.textarea{min-height:120px;resize:vertical;line-height:1.5}.switch{width:24px;height:24px;margin:10px;flex:0 0 auto;accent-color:var(--signal-accent-pressed);cursor:pointer}.input:focus,.textarea:focus,.select:focus{border-color:var(--signal-accent-pressed);outline:2px solid var(--signal-accent);outline-offset:1px}.evidence{border:1px solid rgba(97,217,255,.32);background:var(--tint-verified);border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-body-s)}.evidence__label{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.1em;text-transform:uppercase;color:var(--verified-cyan);display:block;margin-bottom:var(--sp-1)}.log{font-family:var(--font-mono);font-size:var(--fs-body-s);background:var(--bg-obsidian);border:1px solid var(--border-steel);border-radius:var(--radius-sm);padding:var(--sp-3);overflow-x:auto;margin:0}.log__row{display:flex;gap:var(--sp-3);padding:2px 0}.log__time{color:var(--text-muted);flex:0 0 auto}.meter{height:6px;background:var(--bg-elevated);border-radius:var(--radius-round);overflow:hidden}.meter__fill{height:100%;background:var(--signal-accent);border-radius:var(--radius-round);transition:width .24s ease}.canvas .meter{background:#171a1d14}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.table{width:100%;border-collapse:collapse;min-width:560px;font-size:var(--fs-body-s)}.table th,.table td{text-align:left;padding:var(--sp-3);border-bottom:1px solid var(--border-steel);vertical-align:top}.table th{font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:.08em;color:var(--text-fog);font-weight:600}.canvas .table th,.canvas .table td{border-color:var(--border-sand)}.canvas .table th{color:var(--text-muted)}.grid{display:grid;gap:var(--sp-4);grid-template-columns:1fr}@media (min-width: 768px){.grid--2,.grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width: 1280px){.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}}.notice{border:1px solid var(--border-steel);border-left:3px solid var(--text-fog);border-radius:var(--radius-sm);padding:var(--sp-4);background:var(--bg-graphite)}.notice--warn{border-left-color:var(--alert-amber);background:var(--tint-check)}.notice--error{border-left-color:var(--alert-red);background:var(--tint-stop)}.notice--ok{border-left-color:var(--status-pass);background:var(--tint-pass)}.empty{text-align:center;padding:var(--sp-12) var(--sp-4);color:var(--text-fog)}.skeleton{background:linear-gradient(90deg,var(--bg-graphite),var(--bg-elevated),var(--bg-graphite));background-size:200% 100%;animation:shimmer 1.2s linear infinite;border-radius:var(--radius-sm);height:14px}.mono-label{display:block;font-family:var(--font-mono);font-size:var(--fs-label);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-fog)}.mono-data{font-family:var(--font-mono);font-size:var(--fs-body-s);font-weight:500;letter-spacing:-.01em}.bento-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}.bento-cell{display:flex;flex-direction:column;justify-content:space-between;gap:var(--sp-3);min-height:76px;padding:var(--sp-3);background:var(--bg-graphite);border:1px solid var(--border-steel);border-radius:var(--radius-lg)}.bento-cell__value{font-family:var(--font-mono);font-size:var(--fs-body);font-weight:500;color:var(--signal-glow)}.bento-cell__value--mono{display:flex;align-items:center;gap:var(--sp-2)}.dot{width:6px;height:6px;border-radius:50%;background:var(--signal-accent);flex-shrink:0}.progress-module{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);background:var(--bg-graphite);border:1px solid var(--border-steel);border-radius:var(--radius-lg)}.hero-card{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);background:var(--bg-graphite);border:1px solid var(--border-steel);border-radius:var(--radius-lg)}.hero-card h2{font-size:var(--fs-h2);line-height:1.25}.btn--block{width:100%;justify-content:center}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}
