:root{--bg: #ffffff;--bg-2: #f6f7fb;--ink: #10142a;--ink-soft: #5a6178;--ink-mute: #8b92a8;--signal: #4954e6;--signal-dim: rgba(73, 84, 230, .08);--signal-border: rgba(73, 84, 230, .28);--ok: #0e9e97;--ok-dim: rgba(14, 158, 151, .1);--ok-border: rgba(14, 158, 151, .32);--alert: #c2740a;--alert-dim: #f8f0e4;--alert-border: rgba(194, 116, 10, .32);--accent: #4954e6;--violet: #8a5cf6;--cyan: #0e9e97;--card: #ffffff;--border: rgba(24, 31, 71, .1);--border-strong: rgba(24, 31, 71, .2);--row: #f6f7fb;--grad: linear-gradient(135deg, #4954e6 0%, #8a5cf6 100%);--radius: 16px;--radius-sm: 10px;--shadow-card: 0 2px 10px rgba(24, 31, 71, .04);--shadow-card-hover: 0 14px 32px rgba(24, 31, 71, .1);--panel-dark: #10142a;--on-dark: #e8eaf4;--on-dark-mute: #a8adc2;--disabled: #c5cad8;--accent-dim: rgba(73, 84, 230, .1);--accent-border: rgba(73, 84, 230, .28)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:Inter,sans-serif;color:var(--ink);background:var(--bg);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;position:relative}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 900px 500px at 85% -8%,rgba(73,84,230,.07),transparent 60%),radial-gradient(ellipse 700px 500px at -5% 10%,rgba(138,92,246,.06),transparent 60%),radial-gradient(ellipse 600px 400px at 95% 55%,rgba(14,158,151,.05),transparent 60%);pointer-events:none;z-index:0}#root{position:relative;z-index:1}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}a{color:inherit}.shell{max-width:1080px;margin:0 auto;padding:40px 24px 80px}.eyebrow{font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);font-weight:500}.title{font-family:Space Grotesk,sans-serif;font-weight:700;font-size:32px;margin:8px 0 12px;line-height:1.2;letter-spacing:-.02em}.lede{font-size:16px;line-height:1.6;color:var(--ink-soft);max-width:68ch;margin:0 0 28px}.courseGrid{display:grid;gap:14px}.courseCard{display:block;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px 22px;text-decoration:none;color:inherit;box-shadow:var(--shadow-card);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.courseCard:hover{background:var(--card);transform:translateY(-4px);box-shadow:var(--shadow-card-hover);border-color:var(--border-strong)}.courseCard h2{font-family:Space Grotesk,sans-serif;font-size:22px;font-weight:700;letter-spacing:-.02em;margin:8px 0;line-height:1.25}.courseCard p{margin:0 0 16px;font-size:15px;line-height:1.55;color:var(--ink-soft)}.courseMeta{display:flex;flex-wrap:wrap;gap:8px}.courseMeta span{font-size:12px;padding:3px 8px;border-radius:4px;border:1px solid var(--border);color:var(--ink-soft)}.statRow{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:28px}.stat{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow-card)}.stat b{display:block;font-family:Space Grotesk,sans-serif;font-size:22px;font-weight:700;letter-spacing:-.02em}.stat span{font-size:13px;line-height:1.4;color:var(--ink-soft)}.outcomes{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.outcome{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-card)}.outcome .k{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}.outcome h3{font-size:16px;font-weight:600;margin:0 0 8px;letter-spacing:-.01em;line-height:1.3}.highlights{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin:0 0 40px}.highlight{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-card)}.highlight svg{color:var(--cyan);margin-bottom:8px}.highlight h3{font-size:15px;font-weight:600;margin:0 0 6px;line-height:1.3}.highlight p,.outcome p{margin:0;font-size:14px;line-height:1.55;color:var(--ink-soft)}.block{margin-bottom:36px}.blockHead{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}.blockHead h2{font-family:Space Grotesk,sans-serif;font-size:20px;font-weight:600;margin:0;letter-spacing:-.01em}.blockBrief,.moduleBrief{margin:6px 0 0;font-size:14px;line-height:1.5;color:var(--ink-soft);font-weight:400;text-transform:none;letter-spacing:0}.moduleHead{padding:14px 18px;border-bottom:1px solid var(--border);background:var(--row);display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.moduleHead h3{font-size:15px;font-weight:600;margin:0}.module{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;overflow:hidden;box-shadow:var(--shadow-card)}.lessonRow{display:grid;grid-template-columns:64px 1fr auto;gap:14px;align-items:start;width:100%;text-align:left;padding:14px 18px;background:var(--card);border:0;border-top:1px solid var(--border);color:var(--ink);cursor:pointer;font-family:inherit;font-size:15px;text-decoration:none}.module .lessonRow:first-of-type{border-top:0}.lessonRow:hover{background:var(--row)}.lessonId{font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:500;color:var(--accent);padding-top:2px}.lessonTitle{display:block;font-weight:600;line-height:1.35}.lessonSynopsis{display:block;font-size:14px;line-height:1.5;color:var(--ink-soft);margin-top:4px}.lessonTags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.lessonMeta{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;padding-top:2px}.pill{font-size:12px;padding:3px 8px;border-radius:4px;border:1px solid var(--border);color:var(--ink-soft);background:var(--card);white-space:nowrap}.pill.wait{color:var(--alert);border-color:var(--alert-border);background:var(--alert-dim)}.pill.done{color:var(--ok);border-color:var(--ok-border);background:var(--ok-dim)}.pill.lock{opacity:.7}.tracks{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:16px 18px 8px}.track{border:1px solid var(--border);background:var(--row);border-radius:8px;padding:14px}.track h4{font-size:14px;font-weight:600;margin:0 0 6px}.track p{margin:0;font-size:14px;line-height:1.5;color:var(--ink-soft)}.back{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:600;color:var(--accent);text-decoration:none;margin-bottom:18px}.back:hover{color:var(--violet)}.stepper{display:flex;gap:8px;margin:20px 0 22px;flex-wrap:wrap}.step{font-size:13px;padding:8px 12px;background:var(--card);border:1px solid var(--border);border-radius:6px;color:var(--ink-soft);cursor:pointer;display:flex;align-items:center;gap:6px}.step:disabled{cursor:not-allowed;opacity:.55}.step.active{background:var(--grad);color:#fff;border-color:transparent}.step.done{color:var(--ok);border-color:var(--ok-border);background:var(--ok-dim)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow-card)}.note{font-size:16px;line-height:1.6;margin:0 0 16px}.waitBanner{border:1px solid var(--alert-border);background:var(--alert-dim);padding:14px 16px;border-radius:8px;font-size:15px;line-height:1.55;color:var(--ink)}.waitBanner strong{font-size:13px;font-weight:600;display:block;margin-bottom:6px;color:var(--alert)}.metaGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}.metaGrid div{border:1px solid var(--border);background:var(--row);border-radius:8px;padding:12px 14px;font-size:15px}.metaGrid .k{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:4px}.formatRow{display:flex;gap:8px;margin-bottom:16px}.formatPill{font-size:13px;padding:6px 12px;border-radius:6px;border:1px solid var(--border);background:var(--card);color:var(--ink-soft);cursor:pointer}.formatPill.active{background:var(--ink);color:#fff;border-color:var(--ink)}.prose{font-size:16px;line-height:1.7;color:var(--ink);white-space:pre-line}.prose a{color:var(--accent);text-underline-offset:3px}.slideGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.slide{background:var(--row);border:1px solid var(--border);border-left:3px solid var(--signal);padding:14px}.slide h4{font-size:15px;font-weight:600;margin:0 0 6px}.slide p{font-size:14px;color:var(--ink-soft);margin:0;line-height:1.55}.primaryBtn,.ghostBtn,.audioBtn{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:600;font-family:Inter,sans-serif;padding:10px 16px;border-radius:var(--radius-sm);cursor:pointer;border:none;transition:transform .2s ease,box-shadow .2s ease}.primaryBtn{background:var(--grad);color:#fff;box-shadow:0 6px 20px #4954e647}.primaryBtn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 10px 26px #4954e661}.primaryBtn:disabled{background:var(--disabled);box-shadow:none;cursor:not-allowed}.ghostBtn{background:var(--card);color:var(--ink);border:1px solid var(--border-strong)}.ghostBtn:hover{background:var(--bg-2)}.audioBtn{background:var(--ink);color:#fff}.qBlock{margin-bottom:18px;padding-bottom:18px;border-bottom:1px solid var(--border)}.qBlock:last-of-type{border-bottom:none}.qText{font-weight:600;margin-bottom:10px;font-size:16px}.opt{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;cursor:pointer;font-size:15px}.opt:hover{background:var(--row)}.opt.correct{color:var(--ok);font-weight:600}.opt.wrong{color:var(--alert)}.scoreRow{display:flex;align-items:center;gap:12px;margin-top:8px}.scoreBadge{font-size:14px;padding:6px 12px;border-radius:6px}.scoreBadge.pass{background:var(--ok-dim);color:var(--ok)}.scoreBadge.fail{background:var(--alert-dim);color:var(--alert)}.doneWrap{text-align:center;padding:30px 10px}.doneWrap h3{font-size:22px;font-weight:700;margin:10px 0}.missing{padding:48px 20px;text-align:center}.outcomeList{border:1px solid var(--border);background:var(--row);border-radius:8px;padding:14px 18px;margin-bottom:20px}.outcomeList ul{margin:8px 0 0;padding-left:18px}.outcomeList li{margin-bottom:4px;font-size:15px}.theory{display:grid;grid-template-columns:220px 1fr;gap:20px}.theoryNav{display:flex;flex-direction:column;gap:4px}.theoryNav button{text-align:left;background:transparent;border:0;border-radius:6px;padding:8px 10px;font:inherit;font-size:13px;color:var(--ink-soft);cursor:pointer}.theoryNav button.active{background:var(--row);color:var(--ink);font-weight:600}.sectionTitle{font-family:Space Grotesk,sans-serif;font-size:20px;font-weight:700;margin:0 0 12px;letter-spacing:-.02em}.partTitle{font-size:16px;font-weight:600;margin:22px 0 8px}.hint{font-size:14px;color:var(--ink-soft);margin:0 0 8px}.audioScript{margin-top:16px;font-size:15px}.voiceRow{display:flex;flex-direction:column;gap:6px;max-width:420px;margin-bottom:8px}.voiceRow select{font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--card);color:var(--ink)}.deckStage{background:var(--row);border:1px solid var(--border);border-radius:8px;padding:28px 24px;min-height:220px}.deckCount{font-size:13px;color:var(--ink-soft);margin-bottom:10px}.deckStage h2{font-size:22px;margin:0 0 12px}.deckStage p{font-size:16px;line-height:1.6;margin:0}.ghostBtn:disabled{opacity:.45;cursor:not-allowed}.playerBar{position:sticky;top:0;z-index:8;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 0 12px;margin:0 0 16px;background:var(--card);border-bottom:1px solid var(--border)}.playerMeta{font-size:13px;color:var(--ink-soft);font-family:IBM Plex Mono,monospace}.playerVoice{margin-left:auto;font:inherit;font-size:13px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--card);color:var(--ink);max-width:240px}.materialStream{display:flex;flex-direction:column;gap:18px}.materialBlock{border:1px solid var(--border);border-radius:12px;padding:22px;background:var(--card);cursor:pointer}.materialBlock.isActive{border-color:var(--ink)}.materialBlock.isSpeaking{border-color:var(--signal);background:var(--ok-dim);box-shadow:0 0 0 3px var(--signal-dim)}.materialBlock .sectionTitle{margin-top:0}.materialBlock .prose{margin:0}.embedSlide{margin:16px 0 0;padding:16px;background:var(--row);border-radius:8px;border:1px solid var(--border)}.embedSlide figcaption{margin-top:12px;font-size:13px;color:var(--ink-soft);font-weight:500}.slideStack{display:flex;flex-direction:column;gap:20px}.slideCard{border:1px solid var(--border);border-radius:12px;padding:22px 22px 20px;background:var(--row);cursor:pointer;transition:border-color .2s,box-shadow .2s,background .2s}.slideCard.isActive{border-color:var(--ink);background:var(--card);box-shadow:0 8px 24px #16181d0f}.slideCard.isSpeaking{border-color:var(--signal);background:var(--ok-dim);box-shadow:0 0 0 3px var(--signal-dim)}.slideIndex{font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}.slideCard h2{font-size:22px;font-weight:700;letter-spacing:-.02em;margin:0 0 16px;line-height:1.25}.slideLead{margin:16px 0 0;font-size:15px;color:var(--ink-soft);line-height:1.55}.slideNarration{margin-top:16px;padding-top:14px;border-top:1px solid var(--border);font-size:15px;line-height:1.6;color:var(--ink)}.slideNarration p{margin:0 0 12px}.slideNarration p:last-child{margin-bottom:0}.slideNarration ul,.slideNarration ol{margin:0 0 14px;padding-left:22px}.slideNarration li{margin-bottom:6px}.slideNarration li::marker{color:var(--signal)}.vizHero{display:flex;flex-wrap:wrap;gap:10px}.vizPill{padding:10px 16px;border-radius:999px;background:var(--ink);color:#fff;font-weight:600;font-size:14px}.vizFlow{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.vizFlow.wrap{row-gap:10px}.vizFlowItem{display:flex;align-items:center;gap:6px}.vizArrow{color:var(--ink-soft);display:inline-flex}.vizBox{display:flex;flex-direction:column;gap:2px;min-width:92px;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:var(--card);text-align:center}.vizBox strong{font-size:13px;font-weight:600}.vizBox span{font-size:11px;color:var(--ink-soft)}.vizBox-accent{background:var(--accent-dim);border-color:var(--accent-border);color:var(--accent)}.vizBox-signal{background:var(--signal-dim);border-color:var(--ok-border);color:var(--signal)}.vizBox-alert{background:var(--alert-dim);border-color:var(--alert-border);color:var(--alert)}.vizTree{display:flex;flex-direction:column;align-items:center;gap:8px}.vizDown{color:var(--ink-soft);font-size:14px}.vizLeaves{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.vizCards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.vizCard{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px}.vizCardK{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--accent);margin-bottom:4px}.vizCard strong{display:block;font-size:14px;margin-bottom:4px}.vizCard p{margin:0;font-size:13px;color:var(--ink-soft)}a.vizCardLink{text-decoration:none;color:inherit;display:block;transition:border-color .15s ease}a.vizCardLink:hover{border-color:var(--accent)}.vizCompare{display:grid;grid-template-columns:1fr 1fr;gap:12px}.vizCompare>div{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px 14px}.vizColTitle{font-weight:700;font-size:14px;margin-bottom:8px}.vizColTitle.dim{color:var(--ink-soft)}.vizCompare ul{margin:0;padding-left:18px}.vizCompare li{font-size:14px;margin-bottom:4px}.vizCheck{list-style:none;margin:0;padding:0;display:grid;gap:8px}.vizCheck li{position:relative;padding:10px 12px 10px 36px;background:var(--card);border:1px solid var(--border);border-radius:8px;font-size:14px}.vizCheck li:before{content:"";position:absolute;left:12px;top:14px;width:12px;height:12px;border:2px solid var(--signal);border-radius:3px;background:var(--signal-dim)}.vizCallout{background:var(--accent-dim);border:1px solid var(--accent-border);border-radius:8px;padding:14px 16px;font-size:15px;font-weight:600;color:var(--accent)}.vizCycle{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.vizCycleItem{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600}.vizNum{width:24px;height:24px;border-radius:50%;background:var(--ink);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-family:IBM Plex Mono,monospace}.vizCode{margin:0;padding:14px 16px;background:var(--panel-dark);color:var(--on-dark);border-radius:8px;font-family:IBM Plex Mono,monospace;font-size:13px;overflow-x:auto;white-space:pre-wrap}.vizAsync{display:grid;grid-template-columns:1fr 1fr;gap:12px}.vizAsync>div{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px}.vizCards.cols4{grid-template-columns:repeat(4,1fr)}.vizTableWrap{overflow-x:auto}.vizTable{width:100%;border-collapse:collapse;font-size:13px;background:var(--card)}.vizTable th,.vizTable td{border:1px solid var(--border);padding:8px 10px;text-align:left;vertical-align:top}.vizTable th{background:var(--row);font-size:12px;letter-spacing:.04em;text-transform:uppercase}.vizHub{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:8px;align-items:center}.vizHubIns{display:grid;gap:8px}.vizHubMid{color:var(--ink-soft);font-size:18px}.vizCards.cols5{grid-template-columns:repeat(5,1fr)}.vizPredict{display:grid;gap:12px}.vizPredictPrompt{background:var(--card);border:1px dashed var(--border);border-radius:8px;padding:14px 16px;font-size:16px;font-weight:650;text-align:center}.vizPredictOpts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.vizPredictOpt{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:4px;align-items:center;text-align:center}.vizPredictOpt strong{font-size:15px}.vizPredictOpt span{font-family:IBM Plex Mono,monospace;font-size:13px;color:var(--signal)}@media(max-width:720px){.vizCards,.vizCards.cols4,.vizCards.cols5,.vizCompare,.vizAsync,.vizPredictOpts,.vizHub{grid-template-columns:1fr}.playerVoice{margin-left:0;max-width:100%}}textarea{width:100%;min-height:120px;font:inherit;font-size:15px;line-height:1.5;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--ink);resize:vertical}textarea.codeArea{font-family:IBM Plex Mono,monospace;font-size:13px;min-height:220px}.constraintList{margin:0 0 8px;padding-left:18px;color:var(--ink-soft);font-size:14px}.constraintList li{margin-bottom:12px}.constraintList li>div{color:var(--ink)}.hintBox{margin:8px 0 12px;padding:10px 12px;background:var(--signal-dim);border:1px solid var(--ok-border);border-radius:8px}.hintBox p{margin:0 0 8px;font-size:14px;color:var(--ink);line-height:1.5}.hintBox p:last-child{margin-bottom:0}.slideRefs{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.slideRefsLabel{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--signal);margin-right:4px}.slideRef{font:inherit;font-size:13px;padding:4px 8px;border-radius:6px;border:1px solid var(--ok-border);background:var(--card);color:var(--signal);cursor:pointer;text-align:left}.slideRef:hover{border-color:var(--signal);background:var(--ok-dim)}.returnPractice{margin-bottom:12px}.gateTable{display:flex;flex-direction:column;gap:8px}.gateHead{display:none}.gateRow{display:grid;grid-template-columns:180px 1fr;gap:8px}.gateRow input{font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--border);border-radius:6px}.rubric{margin-top:16px;display:flex;flex-direction:column;gap:8px}.rubricRow{display:flex;justify-content:space-between;gap:12px;border:1px solid var(--border);border-radius:8px;padding:10px 12px}.rubricPts{font-weight:600;white-space:nowrap}.homework{text-align:left;border:1px solid var(--border);background:var(--row);border-radius:8px;padding:14px 16px;margin-top:18px}.homework p{margin:6px 0 0;font-size:15px;color:var(--ink)}.homework .exerciseTaskBar{justify-content:flex-start;margin-top:10px}.rubricRow .exerciseTaskBar{justify-content:flex-start;margin:8px 0 0}@media(max-width:720px){.theory,.gateRow{grid-template-columns:1fr}}@media(max-width:720px){.title{font-size:26px}.statRow,.outcomes,.tracks,.metaGrid,.highlights{grid-template-columns:1fr 1fr}.lessonRow{grid-template-columns:52px 1fr}.lessonMeta{grid-column:1 / -1;justify-content:flex-start}}@media(max-width:520px){.statRow,.outcomes,.tracks,.metaGrid,.highlights{grid-template-columns:1fr}}.ghostBtn.picked{border-color:var(--signal);background:var(--signal-dim);color:var(--signal)}.exerciseBlock{margin-top:8px;padding-top:4px}.exerciseTask{margin-top:4px}.exerciseTaskBar{display:flex;justify-content:flex-end;margin:0 0 8px}.reviewMaterialBtn{font-size:13px;gap:6px}.reviewModal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#16181d73;display:flex;align-items:flex-start;justify-content:center;padding:48px 16px 32px;overflow:auto}.reviewDialog{width:min(640px,100%);background:var(--card);border:1px solid var(--border);border-radius:12px;box-shadow:0 18px 48px #16181d2e;max-height:calc(100vh - 80px);display:flex;flex-direction:column}.reviewDialogHead{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}.reviewDialogHead h2{margin:0;font-size:17px;font-weight:650}.iconBtn{font:inherit;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--ink-soft);cursor:pointer}.iconBtn:hover{background:var(--row);color:var(--ink)}.reviewDialogBody{padding:16px 18px 22px;overflow:auto}.reviewPara{margin:0 0 18px}.reviewPara:last-child{margin-bottom:0}.reviewPara h3{margin:0 0 8px;font-size:15px;font-weight:650}.reviewPara p{margin:0;font-size:15px;line-height:1.65;color:var(--ink);white-space:pre-wrap}.draftNote{font-size:14px;padding:10px 12px;background:var(--row);border:1px dashed var(--border);border-radius:8px;margin:0 0 12px}.schemaBoard{margin-top:8px}.schemaKinds{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.schemaPalette{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.schemaChip{display:flex;flex-direction:column;gap:2px;min-width:120px;padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:var(--card);cursor:grab;text-align:left;font:inherit}.schemaChip strong{font-size:13px}.schemaChip span{font-size:11px;color:var(--ink-soft)}.schemaChip.isUsed,.schemaChip:disabled{opacity:.4;cursor:not-allowed}.schemaCanvas{position:relative;background:var(--row);border:1px solid var(--border);border-radius:10px;overflow:auto;min-height:460px}.schemaLines{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.schemaSync{stroke:var(--ink);stroke-width:1.8;marker-end:none}.schemaAsync{stroke:var(--accent);stroke-width:1.8;stroke-dasharray:6 4}.schemaEdgeLabel{font-size:11px;fill:var(--ink-soft);font-family:IBM Plex Mono,monospace}.schemaNode{position:absolute;display:flex;flex-direction:column;justify-content:center;padding:8px 28px 8px 10px;border-radius:8px;border:1px solid var(--border);background:var(--card);cursor:grab;-webkit-user-select:none;user-select:none;box-shadow:0 2px 8px #16181d0f}.schemaNode strong{font-size:13px}.schemaNode em{font-style:normal;font-size:10px;color:var(--signal);text-transform:uppercase;letter-spacing:.04em}.schemaNode.isLink{outline:2px solid var(--accent)}.schemaNode.hasAuth{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-dim)}.schemaNodeBtns{position:absolute;top:4px;right:4px;display:flex;gap:2px}.schemaNodeBtns button{width:20px;height:20px;border:0;border-radius:4px;background:var(--row);cursor:pointer;font-size:12px;line-height:1}.schemaEdgeList{list-style:none;padding:10px 0 0;margin:0;font-size:13px;color:var(--ink-soft)}.schemaEdgeList li{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:4px}.linkish{border:0;background:none;color:var(--accent);cursor:pointer;font:inherit;font-size:13px;padding:0;text-decoration:underline}.assembleBoard{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}.assembleCol{border:1px solid var(--border);border-radius:8px;padding:12px;background:var(--row);min-height:200px}.assembleCol.isTarget{background:var(--card)}.codeChip{margin:0 0 8px;padding:8px 10px;background:var(--panel-dark);color:var(--on-dark);border-radius:6px;font-family:IBM Plex Mono,monospace;font-size:11px;white-space:pre-wrap;cursor:grab}.codeChip.inPlace{margin:0}.assembleSlot{display:grid;grid-template-columns:28px 1fr;gap:6px;align-items:start;margin-bottom:8px}.assembleSlotBtns{display:flex;flex-direction:column;gap:2px}.assembleSlotBtns button{border:1px solid var(--border);background:var(--card);border-radius:4px;cursor:pointer;height:22px}.matchBoard{display:grid;grid-template-columns:1.2fr 1fr;gap:12px;margin-top:8px}.matchSlot{border:1px solid var(--border);border-radius:8px;padding:10px;margin-bottom:8px;background:var(--row)}.matchSlot strong{display:block;margin-bottom:8px;font-size:14px}.matchEmpty{border:1px dashed var(--border);border-radius:6px;padding:10px;font-size:13px;color:var(--ink-soft);min-height:40px}.matchFill,.matchChip{display:block;width:100%;text-align:left;font:inherit;font-size:13px;padding:10px;border-radius:6px;border:1px solid var(--ok-border);background:var(--signal-dim);color:var(--ink);cursor:grab}.matchChip{background:var(--card);border-color:var(--border);margin-bottom:8px}.pickList{display:grid;gap:8px;margin-top:8px}.pickItem{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--row);cursor:pointer;font-size:14px}.pickItem.isOn{background:var(--signal-dim);border-color:var(--ok-border)}.spotError{display:grid;gap:10px}.promptSource{margin:0;padding:12px 14px;border-radius:8px;border:1px solid var(--border);background:var(--row);white-space:pre-wrap;font:inherit;font-size:15px}.spotText{margin:0;padding:12px 14px;border-radius:8px;border:1px solid var(--border);background:var(--row);font-size:15px;line-height:1.7}.spotSpan{font:inherit;background:transparent;border:0;border-bottom:1px dashed var(--accent);padding:0 1px;cursor:pointer;color:inherit}.spotSpan.isFound{background:var(--signal-dim);border-bottom-color:var(--signal)}.spotSpan.isMiss{background:var(--alert-dim);border-bottom-color:var(--alert-border)}.spotReasons{display:grid;gap:8px}.assembleRun{display:grid;gap:10px;margin-top:12px}.composePreview{margin:0;padding:12px 14px;border-radius:8px;border:1px solid var(--ok-border);background:var(--signal-dim);font-size:15px;line-height:1.55}.vizThread{display:grid;gap:8px}.vizThreadRow{display:grid;gap:4px;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:var(--card)}.vizThreadRow.isBot{background:var(--signal-dim);border-color:var(--ok-border)}.vizThreadRow em{font-style:normal;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}.vizThreadRow span{font-size:13px;line-height:1.45}.miniChat{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--row)}.miniChatHead{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--panel-dark);color:#fff;font-size:13px;font-weight:650;letter-spacing:.02em}.miniChatDot{width:8px;height:8px;border-radius:50%;background:var(--cyan)}.miniChatBody{padding:14px;display:grid;gap:12px}.miniBubble{padding:12px 14px;border-radius:10px;font-size:15px;line-height:1.55}.miniBubble.user{background:var(--card);border:1px solid var(--border)}.miniBubble.bot{background:var(--signal-dim);border:1px solid var(--ok-border)}.miniChatControls{display:grid;gap:10px;justify-items:start}.miniChatLabel{display:grid;gap:6px;font-size:12px;font-weight:650;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;width:100%}.miniChatLabel select{font:inherit;font-size:15px;text-transform:none;letter-spacing:0;font-weight:400;color:var(--ink);padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--card)}.sortBoard{display:grid;gap:12px}.sortBins{display:grid;grid-template-columns:1fr 1fr;gap:12px}.sortBin{border:1px solid var(--border);border-radius:8px;padding:10px;background:var(--row);min-height:140px}.sortBin strong{display:block;margin-bottom:8px;font-size:14px}.sortBin .matchFill{margin-bottom:8px}.sortBank{border:1px dashed var(--border);border-radius:8px;padding:10px 12px;background:var(--card)}.sortCard{display:grid;gap:8px;padding:10px 12px;margin-bottom:8px;border:1px solid var(--border);border-radius:8px;background:var(--row);cursor:grab}.sortCard span{font-size:14px}.sortCardBtns{display:flex;flex-wrap:wrap;gap:6px}.sortCardBtns .ghostBtn{font-size:12px;padding:4px 8px}@media(max-width:720px){.assembleBoard,.matchBoard,.sortBins{grid-template-columns:1fr}}.serviceDir{margin-top:28px;padding-top:8px}.serviceGroup .partTitle{margin-top:16px}.serviceTableWrap{overflow-x:auto;margin:8px 0 16px}.serviceTable{width:100%;border-collapse:collapse;font-size:14px}.serviceTable th,.serviceTable td{border:1px solid var(--border);padding:10px 12px;text-align:left;vertical-align:top}.serviceTable th{background:var(--row);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.serviceTable a{color:var(--accent);font-weight:650}.accessPill{display:inline-block;font-size:12px;font-weight:650;padding:2px 8px;border-radius:999px;margin-bottom:6px}.access-blocked,.access-possible,.access-depends{background:var(--alert-dim);color:var(--alert)}.access-ok{background:var(--signal-dim);color:var(--signal)}.accessNote{font-size:13px;color:var(--ink-soft);line-height:1.45}.serviceLegend ul{margin:8px 0 0;padding-left:18px}.serviceLegend li{margin-bottom:6px;font-size:14px;color:var(--ink-soft)}.caseSim{display:grid;gap:12px}.caseScene,.caseQuestion{margin:0;font-size:15px;line-height:1.55}.caseQuestion{font-weight:650}.caseArtifact{background:var(--panel-dark);color:var(--on-dark);border-radius:10px;padding:12px 14px}.caseArtifactK{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:8px}.caseArtifact pre,.caseSimOut{margin:0;white-space:pre-wrap;font-family:IBM Plex Mono,monospace;font-size:13px;line-height:1.5}.caseOptions{display:grid;gap:8px}.caseResult{padding:12px 14px;border-radius:8px;border:1px solid var(--border)}.caseResult.isOk{background:var(--signal-dim);border-color:var(--ok-border)}.caseResult.isBad{background:var(--alert-dim);border-color:var(--alert-border)}.caseResult p{margin:6px 0 0;font-size:14px}.caseResult .caseSimOut{margin-top:10px;padding:10px;background:var(--panel-dark);color:var(--on-dark);border-radius:8px}.vizChatUi{display:grid;grid-template-columns:160px 1fr;min-height:168px;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--card);font-size:12px}.vizChatUiSide{display:grid;align-content:start;gap:6px;padding:10px;background:var(--row);border-right:1px solid var(--border)}.vizChatUiSide strong{font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--accent)}.vizChatUiSide span{display:block;padding:6px 8px;border-radius:6px;background:var(--card);color:var(--ink-soft)}.vizChatUiMain{display:grid;grid-template-rows:auto 1fr auto}.vizChatUiTop{display:flex;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border);font-weight:650}.vizChatUiTop em{font-style:normal;font-size:11px;color:var(--ink-soft)}.vizChatUiRow{display:grid;grid-template-columns:auto 1fr auto;gap:8px;padding:10px 12px;align-items:center}.vizChatUiRow span{padding:6px 8px;border:1px dashed var(--border);border-radius:6px;color:var(--ink-soft)}.vizChatUiRow .grow{border-style:solid}.chatHunt{display:grid;gap:12px}.chatHuntFrame{display:grid;grid-template-columns:200px 1fr;min-height:280px;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--row)}.chatHuntSide{display:grid;align-content:start;gap:10px;padding:12px;background:var(--panel-dark);color:var(--on-dark)}.chatHuntChats{display:grid;gap:6px}.chatHuntChats span{padding:8px 10px;border-radius:8px;background:#ffffff0f;font-size:13px;color:var(--on-dark-mute)}.chatHuntMain{display:grid;grid-template-rows:auto 1fr auto;background:var(--card)}.chatHuntTop{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border)}.chatHuntThread{display:grid;gap:10px;padding:14px;align-content:start}.chatHuntCompose{display:grid;grid-template-columns:auto 1fr auto;gap:8px;padding:12px;border-top:1px solid var(--border)}.chatHot{font:inherit;text-align:left;padding:8px 10px;border-radius:8px;border:1px dashed var(--border);background:var(--card);color:var(--ink);cursor:pointer}.chatHuntSide .chatHot{background:#ffffff14;color:#fff;border-color:#fff3}.chatHotGrow{min-height:42px}.chatHot:hover,.chatHot.isFound{border-style:solid;border-color:var(--signal)}.chatHot.isFound{background:var(--signal-dim);color:var(--ink)}.redactPrompt{display:grid;gap:10px}.redactSource{margin:0;padding:12px 14px;border-radius:8px;border:1px solid var(--alert-border);background:var(--alert-dim);white-space:pre-wrap;font:inherit;font-size:15px}@media(max-width:720px){.vizChatUi,.chatHuntFrame{grid-template-columns:1fr}.vizChatUiSide,.chatHuntSide{border-right:0;border-bottom:1px solid var(--border)}}.auth-gate{display:grid;place-items:center;min-height:70vh;padding:24px 16px}.auth-card{width:min(420px,100%);background:var(--panel, #fff);border:1px solid var(--border, #e2e8f0);border-radius:20px;padding:24px 22px;box-shadow:0 28px 80px #10142a1f;box-sizing:border-box;overflow:hidden}.auth-card h1{margin:0 0 8px;font-size:1.5rem}.auth-lead{margin:0 0 16px;color:var(--muted, #64748b);line-height:1.5}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:0;padding:4px;margin-bottom:16px;border-radius:12px;background:#f6f7fb;border:1px solid var(--border, #e2e8f0)}.auth-tabs button{border:0;background:transparent;border-radius:10px;padding:10px 12px;cursor:pointer;font:inherit;font-weight:600;color:var(--muted, #64748b)}.auth-tabs button.active{background:var(--panel, #fff);color:var(--ink, #0f172a);box-shadow:0 2px 8px #10142a14}.auth-form{display:grid;gap:12px}.auth-form label{display:grid;gap:6px;font-size:.92rem}.auth-form input[type=text],.auth-form input[type=email],.auth-form input[type=password]{border:1px solid var(--border, #cbd5e1);border-radius:10px;padding:11px 12px;font:inherit;box-sizing:border-box;width:100%}.auth-form .primary{width:100%;border-radius:12px;min-height:46px}.auth-consent{display:flex;gap:8px;align-items:flex-start;color:var(--muted, #475569)}.auth-error{margin:0;color:#b91c1c}.auth-forgot{margin:12px 0 0;text-align:center}.auth-forgot button{border:0;background:none;color:#2563eb;cursor:pointer;text-decoration:underline;font:inherit}
