@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap";:root{color:#e8f2f1;font-synthesis:none;--ink:#e8f2f1;--muted:#92aeb2;--faint:#68878f;--bg:#061827;--panel:#0b2234;--panel-hi:#102c40;--line:#9fcecc26;--teal:#5fdbc9;--teal-deep:#1b8e91;--coral:#ff9b7b;--warning:#f7c56a;background:#061827;font-family:Manrope,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 90% -10%, #145a6b45, transparent 36rem), var(--bg);min-width:320px;min-height:100vh;margin:0}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.54}.app-shell{flex-direction:column;min-height:100vh;display:flex}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:5;background:#061827db;justify-content:space-between;align-items:center;height:76px;padding:0 4.5vw;display:flex;position:sticky;top:0}.brand{color:var(--ink);letter-spacing:-.04em;background:0 0;border:0;align-items:center;gap:10px;padding:0;font-size:18px;font-weight:800;display:flex}.brand-mark,.mark{background:var(--teal);color:#08212c;border-radius:11px;place-items:center;width:34px;height:34px;display:grid}.brand-mark .icon{width:20px}.accent{color:var(--teal)}.top-actions{align-items:center;gap:15px;display:flex}.icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:17px;height:17px}.quiet-button,.workspace-pill,.text-button{color:var(--muted);background:0 0;border:0;align-items:center;gap:8px;padding:8px 0;display:inline-flex}.quiet-button:hover,.text-button:hover{color:var(--teal)}.workspace-pill{border:1px solid var(--line);color:var(--ink);border-radius:99px;padding:9px 13px;font-size:12px;font-weight:600}.status-dot{background:var(--faint);border-radius:50%;width:7px;height:7px}.status-dot.online{background:var(--teal);box-shadow:0 0 0 3px #5fdbc91f}.alert{color:#ffc9ba;background:#58272752;border:1px solid #ff9b7b66;border-radius:8px;justify-content:space-between;align-items:center;width:calc(100% - 48px);max-width:1240px;margin:16px auto -4px;padding:11px 14px;font-size:13px;display:flex}.alert button,.modal-close{color:inherit;background:0 0;border:0;font-size:24px;line-height:1}.center-stage{flex:1;place-items:center;padding:70px 24px;display:grid}.welcome-card{text-align:center;width:min(560px,100%)}.welcome-icon{color:#08212c;background:var(--teal);border-radius:20px;place-items:center;width:64px;height:64px;margin:30px auto 24px;display:grid;box-shadow:0 15px 40px #5fdbc92e}.welcome-icon .icon{width:34px;height:34px}.eyebrow{color:var(--teal);letter-spacing:.13em;text-transform:uppercase;font:500 10px/1.2 DM Mono,monospace;display:block}h1,h2,p{margin-top:0}h1{letter-spacing:-.055em;margin-bottom:14px;font-size:clamp(29px,4vw,46px);line-height:1.08}h2{letter-spacing:-.035em}.welcome-card p{color:var(--muted);max-width:470px;margin:0 auto 28px;line-height:1.7}.primary-button,.secondary-button,.danger-button{border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 15px;font-size:12px;font-weight:700;transition:transform .15s,background .15s,border-color .15s;display:inline-flex}.primary-button{background:var(--teal);color:#08212c}.primary-button:hover{background:#88eadc;transform:translateY(-1px)}.primary-button.large{min-height:48px;padding:0 22px}.secondary-button{color:var(--teal);background:#5fdbc914;border-color:#5fdbc95c}.secondary-button:hover{background:#5fdbc926}.danger-button{color:#ffac98;background:#ff9b7b14;border-color:#ff9b7b42}.text-button{margin-top:18px;font-size:12px}.fine-print{color:var(--faint)!important;margin-top:29px!important;font-size:11px!important}.library{flex:1;width:min(1140px,100% - 48px);margin:0 auto;padding:66px 0 72px}.page-heading{justify-content:space-between;align-items:end;gap:30px;margin-bottom:42px;display:flex}.page-heading p{color:var(--muted);max-width:590px;margin-bottom:0;line-height:1.6}.empty-panel{text-align:center;background:#0b223475;border:1px dashed #9fcecc40;border-radius:12px;padding:64px 30px}.empty-panel.compact{padding:90px 30px}.empty-icon{width:54px;height:54px;color:var(--teal);background:#5fdbc91a;border-radius:15px;place-items:center;margin:0 auto 18px;display:grid}.empty-panel h2{margin-bottom:8px;font-size:23px}.empty-panel p{color:var(--muted);max-width:580px;margin:0 auto 25px;font-size:13px;line-height:1.6}.empty-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:17px;display:flex}.course-grid{grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:14px;display:grid}.course-card{text-align:left;min-height:230px;color:var(--ink);border:1px solid var(--line);background:linear-gradient(145deg,#133846d1,#0b2234cc);border-radius:12px;padding:24px;transition:transform .2s,border-color .2s}.course-card:hover{border-color:#5fdbc9a6;transform:translateY(-3px)}.course-number,.card-counter{color:var(--teal);text-transform:uppercase;letter-spacing:.08em;font:500 10px DM Mono,monospace}.course-card h2{margin:31px 0 9px;font-size:23px}.course-card p{color:var(--muted);min-height:61px;font-size:13px;line-height:1.55}.card-link{color:var(--teal);align-items:center;gap:8px;font-size:12px;font-weight:700;display:inline-flex}.card-link .icon,.card-links .icon{width:14px}.manual-note{max-width:620px;color:var(--muted);gap:13px;margin-top:36px;font-size:12px;line-height:1.5;display:flex}.note-mark{color:var(--coral);font-size:18px}.manual-note p{margin:4px 0 0}.workbench{flex:1;grid-template-columns:274px minmax(0,1fr);width:100%;max-width:1500px;margin:0 auto;display:grid}.course-sidebar{border-right:1px solid var(--line);padding:28px 20px 30px 4vw}.back-link{color:var(--muted);background:0 0;border:0;gap:8px;margin-bottom:47px;padding:0;font-size:11px;display:flex}.back-link:hover{color:var(--teal)}.course-title h2{margin:13px 0 7px;font-size:19px}.course-title p{color:var(--muted);margin-bottom:37px;font-size:11px;line-height:1.55}.chapter-label{color:var(--faint);border-bottom:1px solid var(--line);letter-spacing:.12em;padding-bottom:10px;font:500 10px DM Mono,monospace}.chapter-label span{float:right}.chapter-item{text-align:left;width:100%;color:var(--muted);background:0 0;border:0;border-left:2px solid #0000;grid-template-columns:26px 1fr 13px;align-items:center;gap:9px;padding:14px 4px 14px 10px;display:grid}.chapter-item:hover,.chapter-item.active{color:var(--ink);border-left-color:var(--teal);background:#5fdbc90f}.chapter-item strong,.chapter-item small{display:block}.chapter-item strong{font-size:11px;line-height:1.35}.chapter-item small{color:var(--faint);margin-top:4px;font-size:10px}.chapter-index{color:var(--teal);align-self:start;padding-top:2px;font:500 10px DM Mono,monospace}.chapter-item .icon{justify-self:end;width:14px}.sidebar-tip{border:1px solid var(--line);color:var(--faint);border-radius:7px;gap:9px;margin-top:40px;padding:12px;font-size:10px;line-height:1.5;display:flex}.sidebar-tip span{color:var(--coral)}.sidebar-tip p{margin:0}.content{min-width:0;padding:53px clamp(28px,5vw,74px) 70px}.content-header{justify-content:space-between;align-items:end;gap:24px;max-width:1100px;margin-bottom:37px;display:flex}.content-header h1{margin:12px 0 9px;font-size:clamp(29px,4vw,42px)}.content-header p{color:var(--muted);max-width:640px;margin-bottom:0;font-size:13px;line-height:1.55}.test-button{white-space:nowrap}.view-tabs{border-bottom:1px solid var(--line);align-items:center;gap:25px;max-width:1100px;margin-bottom:28px;display:flex}.view-tabs button{color:var(--faint);background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:8px;margin-bottom:-1px;padding:12px 0 13px;font-size:12px;font-weight:700;display:inline-flex}.view-tabs button:hover,.view-tabs button.selected{color:var(--teal);border-bottom-color:var(--teal)}.view-tabs button span{background:#9fcecc1c;border-radius:99px;padding:2px 6px;font:10px DM Mono,monospace}.chapter-count{color:var(--faint);margin-left:auto;font:10px DM Mono,monospace}.map-layout{grid-template-columns:minmax(0,1.4fr) minmax(310px,.8fr);gap:16px;max-width:1100px;display:grid}.map-panel,.concept-panel,.cards-view,.test-view,.results-view,.test-intro{border:1px solid var(--line);background:#0b2234a6;border-radius:11px}.map-panel{min-height:412px}.panel-heading,.cards-heading,.test-heading{justify-content:space-between;align-items:start;gap:14px;padding:22px 24px 0;display:flex}.panel-heading h2,.cards-heading h2,.test-heading h2{margin:8px 0 0;font-size:18px}.map-legend{color:var(--faint);align-items:center;gap:6px;font-size:10px;display:flex}.legend-dot{border-radius:50%;width:7px;height:7px;margin-left:8px;display:inline-block}.legend-dot.teal{background:var(--teal)}.legend-dot.grey{background:#59717a}.map-canvas{padding:26px 10px}.map-canvas svg{width:100%;height:290px;display:block}.map-line{fill:none;stroke:#5fdbc942;stroke-width:1.5px;stroke-dasharray:4 6}.map-node{cursor:pointer;outline:none}.map-node circle{fill:#173649;stroke:#3b6874;stroke-width:1.5px;transition:all .2s}.map-node:hover circle,.map-node:focus circle{stroke:var(--teal)}.map-node circle.selected{fill:#1c6c70;stroke:var(--teal);stroke-width:2px}.map-node text{fill:var(--ink);pointer-events:none;font:600 11px Manrope,sans-serif}.map-node .node-state{fill:#9ac5c5;font:9px DM Mono,monospace}.concept-panel{padding:24px}.concept-status{align-items:center;gap:10px;min-height:21px;display:flex}.readiness,.explored{text-transform:uppercase;letter-spacing:.05em;border-radius:99px;padding:5px 8px;font:500 9px DM Mono,monospace}.readiness.untested{color:var(--faint);background:#9fcecc1a}.readiness.needs_review{color:var(--warning);background:#f7c56a1a}.readiness.demonstrated{color:var(--teal);background:#5fdbc91f}.explored{color:#b5d6d3;align-items:center;gap:4px;display:inline-flex}.explored .icon{width:12px}.concept-panel h2{margin:23px 0 10px;font-size:22px;line-height:1.22}.concept-summary{color:var(--teal);font-size:13px;line-height:1.55}.explanation{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:21px 0;padding:17px 0 9px}.explanation p{color:var(--muted);margin:10px 0;font-size:12px;line-height:1.68}.sources{gap:8px;margin-bottom:22px;display:grid}.sources a{color:#b2d5d5;font-size:11px;line-height:1.4;text-decoration:none}.sources a:hover,.sources a span{color:var(--teal)}.concept-footer{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.progress-hint{color:var(--faint);font:10px DM Mono,monospace}.related{border-top:1px solid var(--line);margin-top:22px;padding-top:19px}.related>div{gap:8px;margin-top:9px;display:grid}.related button,.card-links button,.result-concepts button{text-align:left;color:#add2d0;background:0 0;border:0;justify-content:space-between;align-items:center;gap:8px;padding:0;font-size:11px;display:flex}.related button:hover,.card-links button:hover,.result-concepts button:hover{color:var(--teal)}.cards-view,.test-view,.results-view{max-width:760px;padding-bottom:26px}.cards-heading{padding-bottom:21px}.card-counter{color:var(--faint)}.card-counter em{color:#49616b;margin:0 5px;font-style:normal}.flashcard{text-align:center;width:calc(100% - 48px);min-height:275px;color:var(--ink);background:linear-gradient(145deg,#1a4e54bd,#0f2c3bdb);border:1px solid #5fdbc947;border-radius:9px;flex-direction:column;justify-content:space-between;align-items:center;margin:0 24px;padding:32px;display:flex}.flashcard.revealed{background:linear-gradient(145deg,#2e4856cc,#162736e6)}.flashcard strong{letter-spacing:-.03em;max-width:560px;font-size:clamp(19px,3vw,27px);line-height:1.3}.card-face-label,.card-hint{color:var(--teal);text-transform:uppercase;letter-spacing:.11em;font:500 10px DM Mono,monospace}.card-hint{color:var(--faint);text-transform:none;letter-spacing:0}.card-links{flex-wrap:wrap;align-items:center;gap:15px;padding:24px;display:flex}.card-links>.eyebrow{margin-right:2px}.card-links button{color:var(--teal);justify-content:flex-start}.card-navigation{justify-content:space-between;padding:0 24px;display:flex}.test-intro{text-align:center;max-width:760px;min-height:400px;padding:74px 30px}.test-icon{width:53px;height:53px;color:var(--teal);background:#5fdbc91a;border-radius:15px;place-items:center;margin:0 auto 24px;display:grid}.test-icon .icon{width:26px;height:26px}.test-intro h2{margin:15px 0 10px;font-size:24px}.test-intro p{max-width:520px;color:var(--muted);margin:0 auto 25px;font-size:13px;line-height:1.65}.test-heading{padding-bottom:22px}.test-heading>span{color:var(--faint);font:10px DM Mono,monospace}.question{border:0;border-top:1px solid var(--line);margin:0 24px;padding:23px 0}.question legend{width:100%;color:var(--ink);gap:12px;padding:0;font-size:14px;font-weight:700;line-height:1.45;display:flex}.question legend span{color:var(--teal);padding-top:3px;font:500 10px DM Mono,monospace}.options{gap:8px;padding:15px 0 0 24px;display:grid}.options label{border:1px solid var(--line);color:var(--muted);cursor:pointer;border-radius:6px;align-items:center;gap:9px;padding:10px 12px;font-size:12px;display:flex}.options label:hover,.options label.chosen{color:var(--ink);background:#5fdbc912;border-color:#5fdbc9a6}.options input{accent-color:var(--teal)}.test-view>.primary-button{margin:0 24px}.results-view{padding:24px}.result-score{text-align:center;border-bottom:1px solid var(--line);padding:12px 0 27px}.result-score strong{letter-spacing:-.07em;color:var(--teal);margin:15px 0 6px;font-size:57px;display:block}.result-score strong em{color:var(--faint);letter-spacing:-.04em;font-size:24px;font-style:normal}.result-score p{color:var(--muted);margin-bottom:0;font-size:12px}.result-list{gap:10px;margin:21px 0;display:grid}.result{border:1px solid var(--line);border-radius:7px;padding:14px}.result.correct{border-color:#5fdbc947}.result.wrong{border-color:#f7c56a4d}.result-top{align-items:center;gap:10px;font-size:12px;display:flex}.result-top>span:last-child{color:var(--teal);margin-left:auto}.result.wrong .result-top>span:last-child{color:var(--warning)}.result-number{color:var(--teal);font:500 10px DM Mono,monospace}.result p{color:var(--muted);margin:9px 0;font-size:11px;line-height:1.55}.result-concepts{flex-wrap:wrap;gap:12px;display:flex}.result-concepts button{color:var(--teal)}.modal-backdrop{z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#020c14bd;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#0b2638;border:1px solid #9fcecc3b;border-radius:13px;width:min(550px,100%);max-height:min(700px,90vh);padding:31px;position:relative;overflow:auto;box-shadow:0 20px 80px #00000059}.modal h2{margin:0 0 12px;font-size:24px}.modal-close{color:var(--muted);position:absolute;top:18px;right:21px}.modal-lede,.modal>p{color:var(--muted);font-size:12px;line-height:1.65}.field-label{color:var(--teal);letter-spacing:.1em;margin:25px 0 7px;font:500 10px DM Mono,monospace;display:block}.key-row{gap:8px;display:flex}.key-row input,.text-input,.json-input{border:1px solid var(--line);width:100%;min-width:0;color:var(--ink);background:#071d2c;border-radius:6px;padding:11px;font-size:12px}.key-row input{font-family:DM Mono,monospace}.warning-text{color:var(--warning)!important;font-size:11px!important}.modal .danger-button{margin-top:13px}.modal>.primary-button{margin-top:16px}.help-block{border-top:1px solid var(--line);grid-template-columns:30px 1fr;gap:11px;padding:17px 0 3px;display:grid}.help-block>span{color:var(--teal);font:500 10px DM Mono,monospace}.help-block strong{font-size:12px}.help-block p{color:var(--muted);margin:5px 0 0;font-size:11px;line-height:1.55}.import-actions{align-items:center;gap:14px;margin:19px 0 12px;display:flex}.file-button{position:relative;overflow:hidden}.file-button input{opacity:0;cursor:pointer;position:absolute;inset:0}.json-input{resize:vertical;height:210px;font:11px/1.5 DM Mono,monospace}.error-text{color:#ffac98;font-size:11px}.footer{border-top:1px solid var(--line);color:var(--faint);justify-content:space-between;padding:17px 4.5vw;font-size:10px;display:flex}.footer button{color:var(--muted);background:0 0;border:0;text-decoration:underline}.loading-screen{min-height:100vh;color:var(--muted);place-content:center;justify-items:center;gap:10px;font-size:12px;display:grid}.loading-screen .mark{margin-bottom:8px}.loading-screen strong{color:var(--ink)}@media (width<=900px){.workbench{grid-template-columns:220px minmax(0,1fr)}.course-sidebar{padding-left:22px}.map-layout{grid-template-columns:1fr}.map-panel{min-height:350px}.concept-panel{min-height:0}}@media (width<=680px){.topbar{height:64px;padding:0 18px}.top-actions{gap:9px}.hide-small{display:none}.workspace-pill{padding:7px 9px;font-size:10px}.library{width:calc(100% - 32px);padding-top:42px}.page-heading{flex-direction:column;align-items:start;margin-bottom:28px}.page-heading h1{font-size:34px}.workbench{display:block}.course-sidebar{border-right:0;border-bottom:1px solid var(--line);padding:18px 18px 14px}.back-link{margin-bottom:20px}.course-title,.chapter-label{display:none}.course-sidebar nav{gap:3px;margin:0 -18px;padding:0 18px;display:flex;overflow-x:auto}.chapter-item{border-bottom:2px solid #0000;border-left:0;grid-template-columns:22px 1fr;min-width:150px;padding:10px}.chapter-item.active{border-bottom-color:var(--teal)}.chapter-item .icon,.sidebar-tip{display:none}.content{padding:34px 16px 48px}.content-header{flex-direction:column;align-items:start;margin-bottom:25px}.content-header h1{font-size:32px}.view-tabs{gap:18px;overflow-x:auto}.view-tabs button{white-space:nowrap}.chapter-count{display:none}.map-panel{min-height:300px}.map-canvas svg{height:240px}.panel-heading{padding:18px 17px 0}.map-legend{display:none}.concept-panel{padding:19px}.flashcard{width:calc(100% - 32px);min-height:250px;margin:0 16px;padding:23px}.cards-heading,.test-heading,.card-links{padding:18px 16px}.card-navigation{padding:0 16px}.question,.test-view>.primary-button{margin:0 16px}.results-view{padding:18px 16px}.test-intro{padding:56px 20px}.footer{padding:15px 18px}.footer span{max-width:220px}.footer button{align-self:end}}
