:root{--editor-fs:13.5px}html:not([data-theme]),html[data-theme=dark]{color-scheme:dark;--bg-deep:#0a0f18;--bg-card:#0e1219;--bg-raised:#141a24;--bg-editor:#0a0d13;--border:#1c2433;--text-hi:#eaeff6;--text-mid:#8d98ab;--text-lo:#3e4a5c;--accent:#e8843c;--accent-dim:rgba(232,132,60,.12);--accent-glow:rgba(232,132,60,.25);--success:#2dd4a0;--success-dim:rgba(45,212,160,.1);--error:#f0544c;--error-dim:rgba(240,84,76,.1);--warn:#f5c542;--blue:#5ea3f8;--purple:#b07af5;--logo-dojo:#d6854c;--on-accent-btn:#fff;--overlay-scrim:rgba(0,0,0,.72);--dialog-scrim:rgba(0,0,0,.65);--shadow-overlay:0 24px 80px rgba(0,0,0,.55);--shadow-dialog:0 20px 60px rgba(0,0,0,.5);--shadow-task-band:0 -10px 36px rgba(0,0,0,.55);--output-label-bg:rgba(0,0,0,.2);--shadow-mobile-nav:4px 0 20px rgba(0,0,0,.5);--shadow-module-card:0 8px 28px rgba(0,0,0,.25);--resources-body-bg:linear-gradient(145deg,rgba(94,163,248,.05),rgba(232,132,60,.04));--inline-code-bg:#0a0d13;--scrollbar-thumb:#2a3344;--meter-track-bg:#252f42;--meter-track-rim:rgba(234,239,246,.14);--tab-inactive:#9aa8bc;--tab-inactive-hover:#d8dee9;--lesson-resources-subtitle:#c5cedc;--figure-caption:#c2ccdc}html[data-theme=light]{color-scheme:light;--bg-deep:#fff;--bg-card:#fff;--bg-raised:#ececef;--bg-editor:#fff;--border:#c5cad6;--text-hi:#0f172a;--text-mid:#475569;--text-lo:#94a3b8;--accent:#c2410c;--accent-dim:rgba(194,65,12,.12);--accent-glow:rgba(194,65,12,.22);--success:#059669;--success-dim:rgba(5,150,105,.12);--error:#dc2626;--error-dim:rgba(220,38,38,.1);--warn:#d97706;--blue:#2563eb;--purple:#7c3aed;--logo-dojo:#b45309;--on-accent-btn:#fff;--overlay-scrim:rgba(15,23,42,.45);--dialog-scrim:rgba(15,23,42,.4);--shadow-overlay:0 24px 80px rgba(15,23,42,.14);--shadow-dialog:0 20px 60px rgba(15,23,42,.12);--shadow-task-band:0 -10px 28px rgba(15,23,42,.1);--output-label-bg:rgba(15,23,42,.06);--shadow-mobile-nav:4px 0 24px rgba(15,23,42,.12);--shadow-module-card:0 8px 28px rgba(15,23,42,.08);--resources-body-bg:linear-gradient(145deg,rgba(37,99,235,.06),rgba(234,88,12,.05));--inline-code-bg:#e8eaef;--scrollbar-thumb:#b8bec9;--meter-track-bg:#d1d9e6;--meter-track-rim:var(--border);--tab-inactive:#5d6778;--tab-inactive-hover:#334155;--lesson-resources-subtitle:#3d4d60;--figure-caption:#6e7d91}*{margin:0;padding:0;box-sizing:border-box}body{font-family:IBM Plex Sans,sans-serif;background:var(--bg-deep);color:var(--text-hi);height:100vh;overflow:hidden}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}.app{display:grid;grid-template-columns:280px 1fr;grid-template-rows:56px 1fr;height:100vh}header{grid-column:1/-1;justify-content:space-between;padding:0 24px;background:var(--bg-card);border-bottom:1px solid var(--border);z-index:20}.header-left,header{display:flex;align-items:center}.brand,.header-left{gap:8px}.brand{display:inline-flex;align-items:center}.brand-mark{font-size:28px;line-height:1;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji,sans-serif}.brand-title{font-family:Playfair Display,serif;font-size:20px;font-weight:700;line-height:1.15;letter-spacing:.02em;white-space:nowrap}.brand-name-np{color:var(--text-hi)}.brand-name-dojo{color:var(--logo-dojo)}a.brand,a.dashboard-cta,a.hdr-nav-dashboard,a.module-card--link,a.path-step-btn{text-decoration:none}.header-right{gap:14px}.header-right,.meter{display:flex;align-items:center}.meter{gap:10px}.meter-label{font-size:12px;color:var(--text-mid);font-weight:500}.meter-label b{color:var(--success);font-weight:700}.meter-track{width:180px;height:7px;background:var(--meter-track-bg);border-radius:4px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--meter-track-rim,var(--border))}.meter-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--accent),var(--success));transition:width .5s cubic-bezier(.22,1,.36,1)}.hdr-btn{background:none;border:1px solid var(--border);color:var(--text-lo);font-size:11px;padding:4px 12px;border-radius:4px;cursor:pointer;font-family:inherit;transition:.15s}.hdr-btn:hover{border-color:var(--error);color:var(--error)}.theme-menu{position:relative;flex-shrink:0}.theme-menu-trigger{width:32px;height:32px;padding:0;display:grid;place-items:center;border:1px solid var(--border);border-radius:8px;background:var(--bg-raised);font-size:17px;line-height:1;cursor:pointer;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji,sans-serif;transition:border-color .12s,background .12s}.theme-menu-trigger:hover{border-color:var(--text-lo);background:var(--bg-card)}.theme-menu-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-menu-dropdown{position:absolute;top:calc(100% + 6px);right:0;z-index:60;min-width:132px;padding:6px;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-dialog)}.theme-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:none;border-radius:6px;background:transparent;font:inherit;font-size:13px;font-weight:500;color:var(--text-mid);cursor:pointer;text-align:left;transition:background .12s,color .12s}.theme-menu-item:hover{background:var(--bg-raised);color:var(--text-hi)}.theme-menu-item.active{color:var(--accent);font-weight:600}.theme-menu-ico{font-size:16px;line-height:1;width:22px;text-align:center;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji,sans-serif}.tab-bar{display:flex;gap:0;border-bottom:1px solid var(--border);background:var(--bg-card);padding:0 16px}.tab-btn{background:none;border:none;border-bottom:2px solid transparent;color:var(--tab-inactive);font-family:inherit;font-size:13px;font-weight:600;padding:12px 20px;cursor:pointer;transition:color .15s,border-color .15s;white-space:nowrap}.tab-btn:hover:not(.active){color:var(--tab-inactive-hover)}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-btn.active:hover{color:var(--accent);filter:brightness(1.06)}nav{background:var(--bg-card);border-right:1px solid var(--border);overflow-y:auto;padding:12px 0}.sec-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-lo);padding:14px 18px 6px}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 14px;margin:1px 8px;border-radius:6px;cursor:pointer;transition:.12s}.nav-item:hover{background:var(--bg-raised)}.nav-item.active{background:var(--accent-dim);outline:1px solid rgba(232,132,60,.2)}.nav-item.active .nav-title{color:var(--accent)}.nav-dot{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:600;border:2px solid var(--border);color:var(--text-lo);flex-shrink:0;transition:.2s}.nav-item.done .nav-dot{border-color:var(--success);background:var(--success);color:#fff;font-size:12px}.nav-item.active .nav-dot{border-color:var(--accent);color:var(--accent)}.nav-title{font-size:12px;font-weight:500;color:var(--text-mid);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-item.done .nav-title{color:var(--success)}main{display:flex;flex-direction:column;position:relative}.panes,main{overflow:hidden}.panes{flex:1 1;display:grid;grid-template-columns:1fr 1fr}.panes-learn{min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column}.panes-learn>.learn{flex:1 1;min-height:0}.panes--resizable>.code-pane{min-width:0;border-left:none}.panes-gutter{cursor:col-resize;touch-action:none;position:relative;z-index:6;background:transparent}.panes-gutter:before{top:0;bottom:0;width:1px;transform:translateX(-50%)}.panes-gutter:after,.panes-gutter:before{content:"";position:absolute;left:50%;background:var(--border);pointer-events:none;transition:background .15s ease,box-shadow .15s ease}.panes-gutter:after{top:50%;width:7px;height:56px;transform:translate(-50%,-50%);border-radius:999px}.panes--resizing .panes-gutter:before,.panes-gutter:focus-visible:before,.panes-gutter:hover:before{background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 24%,transparent)}.panes--resizing .panes-gutter:after,.panes-gutter:focus-visible:after,.panes-gutter:hover:after{background:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent)}.panes-gutter:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.learn{padding:28px 32px;overflow-y:auto}.learn.learn--lesson{display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:28px 0 28px 32px}.learn.learn--lesson .lesson-scroll{flex:1 1;min-height:0;overflow-x:hidden;overflow-y:auto;padding-bottom:16px}.learn.learn--lesson .lesson-scroll-inner{padding-right:32px}.badge{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--accent);background:var(--accent-dim);padding:3px 10px;border-radius:12px;margin-bottom:14px}.learn-pill-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.learn-pill-row .badge{margin-bottom:0}.learn-pill-row .dashboard-share-menu{flex-shrink:0}.learn-pill-row .dashboard-share-panel{right:0;left:auto}.learn h2{font-family:Playfair Display,serif;font-size:26px;font-weight:700;margin-bottom:18px;line-height:1.25}.lesson-reading{margin-bottom:0}.lesson-task-band{flex-shrink:0;position:relative;z-index:4;margin:0 0 -28px -32px;padding:18px 32px;border-top:1px solid var(--border);background:var(--bg-card);box-shadow:var(--shadow-task-band)}.lesson-task-band .task{margin-top:0}.lesson-hint-actions{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:14px}.lesson-hint-actions .hint-btn,.lesson-hint-actions .sm-btn{margin-top:0}.lesson-task-band .hint-box{margin-top:8px}.lesson-details.lesson-resources-details{margin:18px 0 0}.lesson-resources-details>summary{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.lesson-resources-details>summary:after{float:none;flex-shrink:0;margin-top:3px}.lesson-resources-summary-text{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:4px}.lesson-resources-summary-line{display:inline-flex;align-items:baseline;gap:8px}.lesson-resources-summary-sub{text-transform:none;letter-spacing:normal;line-height:1.45}.lesson-resources-body{background:var(--resources-body-bg)}.prose{font-size:14px;line-height:1.8;color:var(--text-mid)}.prose p{margin-bottom:12px}.prose strong{color:var(--text-hi);font-weight:600}.prose code{background:var(--inline-code-bg);color:var(--purple);padding:1px 6px;border-radius:3px}.prose code,.prose pre{font-family:JetBrains Mono,monospace;font-size:12.5px;border:1px solid var(--border)}.prose pre{background:var(--bg-editor);border-radius:8px;padding:14px 16px;margin:12px 0;line-height:1.65;color:var(--text-hi);overflow-x:auto}.prose h3{font-size:14px;font-weight:700;color:var(--text-hi);margin:20px 0 8px}.prose ul{padding-left:18px;margin-bottom:12px}.prose li{margin-bottom:5px;line-height:1.65}.prose-figure{margin:16px 0;padding:14px;background:var(--bg-editor);border:1px solid var(--border);border-radius:10px;text-align:center}.prose-figure img{display:block;max-width:100%;height:auto;margin:0 auto;border-radius:6px}.prose figcaption,.prose-figure figcaption{margin-top:12px;font-size:11px;line-height:1.55;font-weight:400;color:var(--figure-caption);text-align:left}.prose-figure figcaption{margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.lesson-details{margin:18px 0 0;padding:0;border:1px solid var(--border);border-radius:10px;background:var(--bg-deep);overflow:hidden}.lesson-details summary{list-style:none;cursor:pointer;padding:12px 16px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);background:var(--accent-dim);border-bottom:1px solid transparent;transition:background .12s}.lesson-details summary::-webkit-details-marker{display:none}.lesson-details summary:after{content:"▸";float:right;font-size:10px;opacity:.8}.lesson-details[open] summary{border-bottom-color:var(--border)}.lesson-details[open] summary:after{content:"▾"}.lesson-details summary:hover{filter:brightness(1.06)}.lesson-details summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.lesson-details-body{padding:16px 18px 18px}.lesson-details-body img{cursor:zoom-in;transition:box-shadow .15s ease}.lesson-details-body img:hover{box-shadow:0 0 0 2px var(--accent-glow)}.lesson-details-body img:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.scenario-intro-body img{cursor:zoom-in;transition:box-shadow .15s ease}.scenario-intro-body img:hover{box-shadow:0 0 0 2px var(--accent-glow)}.scenario-intro-body img:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.why-matters-lightbox-overlay{display:none;position:fixed;inset:0;z-index:120;padding:24px 16px;background:var(--overlay-scrim);place-items:center;overflow-y:auto}.why-matters-lightbox-overlay.show{display:grid}.why-matters-lightbox{width:min(920px,100%);max-height:min(92vh,900px);display:flex;flex-direction:column;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-overlay);animation:popIn .2s ease}.why-matters-lightbox-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.why-matters-lightbox-title{font-size:15px;font-weight:700;color:var(--text-hi);margin:0}.why-matters-lightbox-close{flex-shrink:0;background:var(--accent);border:none;color:var(--on-accent-btn);padding:8px 18px;border-radius:6px;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:filter .15s}.why-matters-lightbox-close:hover{filter:brightness(1.08)}.why-matters-lightbox-close:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.why-matters-lightbox-img-wrap{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:16px 20px;background:var(--bg-deep);border-bottom:1px solid var(--border);max-height:min(58vh,520px);overflow:auto}.why-matters-lightbox-img{display:block;max-width:100%;max-height:min(52vh,480px);width:auto;height:auto;object-fit:contain;border-radius:8px}.why-matters-lightbox-copy{flex:1 1;min-height:0;overflow-y:auto;padding:18px 20px 22px;font-size:13px;line-height:1.65}.why-matters-lightbox-copy .lightbox-prose-figcaption{margin:14px 0 0;padding-top:12px;border-top:1px solid var(--border);font-size:11px;line-height:1.55;font-weight:400;color:var(--figure-caption)}.task{background:var(--accent-dim);border:1px solid rgba(232,132,60,.2);border-radius:10px;padding:16px 18px;margin-top:18px}.task-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--accent);margin-bottom:6px}.task p{font-size:13px;line-height:1.6;color:var(--text-hi)}.task code{font-family:JetBrains Mono,monospace;font-size:12px;background:rgba(232,132,60,.1);color:var(--accent);padding:1px 5px;border-radius:3px;border:none}.hint-btn,.sm-btn{background:none;border:1px solid var(--border);color:var(--text-mid);font-size:12px;padding:6px 14px;border-radius:5px;cursor:pointer;margin-top:12px;font-family:inherit;transition:.15s}.hint-btn:hover,.sm-btn:hover{border-color:var(--warn);color:var(--warn)}.sm-btn.danger:hover{border-color:var(--error);color:var(--error)}.hint-box{display:none;background:rgba(245,197,66,.06);border:1px solid rgba(245,197,66,.15);border-radius:6px;padding:12px 14px;margin-top:8px;font-family:JetBrains Mono,monospace;font-size:12.5px;color:var(--warn);line-height:1.6}.hint-box.show{display:block}.lesson-docs-icon{font-size:14px;line-height:1}.lesson-docs-sub{font-weight:500;text-transform:none;letter-spacing:0;color:var(--text-lo);font-size:11px}.lesson-resources-details .lesson-resources-summary-sub.lesson-docs-sub{color:var(--lesson-resources-subtitle)}.lesson-docs-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.lesson-docs-link{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;background:var(--bg-raised);border:1px solid var(--border);color:var(--text-hi);text-decoration:none;font-size:13px;transition:border-color .15s,background .15s}.lesson-docs-link:hover{border-color:var(--blue);background:rgba(94,163,248,.08)}.lesson-docs-logo{height:22px;width:auto;max-width:72px;object-fit:contain;object-position:left center;flex-shrink:0}.lesson-docs-label{flex:1 1;font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-mid)}.lesson-docs-link:hover .lesson-docs-label{color:var(--text-hi)}.lesson-docs-external{flex-shrink:0}.icon-btn,.lesson-docs-external{font-size:11px;color:var(--text-lo)}.icon-btn{background:none;border:1px solid var(--border);width:28px;height:28px;border-radius:5px;cursor:pointer;display:grid;place-items:center;font-weight:700;font-family:inherit;transition:.15s}.icon-btn:hover{border-color:var(--text-mid);color:var(--text-mid)}.icon-btn--active{border-color:var(--accent);color:var(--accent)}.code-pane{display:flex;flex-direction:column;background:var(--bg-editor);border-left:1px solid var(--border)}.code-editor-split{flex:1 1;min-height:0;display:grid;transition:none}.code-split-top{min-height:0;overflow:hidden;display:flex;flex-direction:column}.output-split-gutter{cursor:row-resize;touch-action:none;position:relative;z-index:6;flex-shrink:0;background:transparent}.output-split-gutter:before{left:0;right:0;height:1px;transform:translateY(-50%)}.output-split-gutter:after,.output-split-gutter:before{content:"";position:absolute;top:50%;background:var(--border);pointer-events:none;transition:background .15s ease,box-shadow .15s ease}.output-split-gutter:after{left:50%;width:64px;height:7px;transform:translate(-50%,-50%);border-radius:999px}.code-editor-split--dragging .output-split-gutter:before,.output-split-gutter:focus-visible:before,.output-split-gutter:hover:before{background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 24%,transparent)}.code-editor-split--dragging .output-split-gutter:after,.output-split-gutter:focus-visible:after,.output-split-gutter:hover:after{background:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent)}.output-split-gutter:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.code-bar{justify-content:space-between;padding:10px 18px;background:var(--bg-card);border-bottom:1px solid var(--border)}.code-bar,.code-bar-left{display:flex;align-items:center}.code-bar-left{gap:8px}.code-bar-right{display:flex;align-items:center;gap:6px}.code-bar .icon-btn{font-size:15px;font-weight:400;line-height:1}.file-tab{display:flex;align-items:center;gap:7px;font-family:JetBrains Mono,monospace;font-size:11.5px;color:var(--text-mid)}.file-tab:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--success)}.run{display:flex;align-items:center;gap:7px;background:var(--accent);color:#fff;border:none;padding:7px 18px;border-radius:5px;font-family:inherit;font-size:12.5px;font-weight:600;cursor:pointer;transition:.15s}.run:hover{filter:brightness(1.12)}.run svg{width:12px;height:12px}.editor-wrap{flex:1 1;overflow:hidden;position:relative}textarea.editor{width:100%;height:100%;background:var(--bg-editor);color:var(--text-hi);border:none;resize:none;outline:none;padding:18px;font-family:JetBrains Mono,monospace;font-size:var(--editor-fs);line-height:1.7;-moz-tab-size:4;tab-size:4}textarea.editor::placeholder{color:var(--text-lo)}.kb-hint{position:absolute;bottom:8px;right:16px;font-size:10px;color:var(--text-lo);font-family:JetBrains Mono,monospace;pointer-events:none}.result-bar{display:none;align-items:center;justify-content:center;gap:10px;padding:12px;font-weight:600;font-size:13px;animation:slideIn .25s ease}.result-bar.pass{display:flex;background:var(--success-dim);color:var(--success);border-top:2px solid var(--success)}.result-bar.fail{display:flex;background:var(--error-dim);color:var(--error);border-top:2px solid var(--error)}.next-btn{background:var(--success);color:#fff;border:none;padding:6px 16px;border-radius:5px;font-family:inherit;font-size:12px;font-weight:700;cursor:pointer;margin-left:8px}.next-btn:hover{filter:brightness(1.1)}.output{border-top:1px solid var(--border);background:var(--bg-deep);min-height:100px;max-height:250px;overflow-y:auto}.code-editor-split .output{min-height:0;max-height:none;overflow:hidden;display:flex;flex-direction:column;border-top:none}.code-editor-split .output-text{flex:1 1;min-height:0;overflow-y:auto}.output-label{padding:8px 18px;border-bottom:1px solid var(--border);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-lo);background:var(--output-label-bg);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.output-label:hover,.output-text{color:var(--text-mid)}.output-text{padding:14px 18px;font-family:JetBrains Mono,monospace;font-size:13px;line-height:1.6;white-space:pre-wrap}.output-text.ok{color:var(--success)}.output-text.err{color:var(--error)}.dialog-overlay{display:none;position:fixed;inset:0;background:var(--dialog-scrim);z-index:100;place-items:center}.dialog-overlay.show{display:grid}.dialog{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:28px 32px;max-width:400px;width:90%;animation:popIn .2s ease;box-shadow:var(--shadow-dialog)}.dialog h3{font-size:16px;font-weight:700;margin-bottom:10px}.dialog p{font-size:13px;line-height:1.6;color:var(--text-mid);margin-bottom:22px}.dialog-actions{display:flex;gap:10px;justify-content:flex-end}.dialog-cancel{background:none;border:1px solid var(--border);color:var(--text-mid);padding:8px 20px;border-radius:6px;font-family:inherit;font-size:13px;cursor:pointer;transition:.15s}.dialog-cancel:hover{border-color:var(--text-mid);color:var(--text-hi)}.dialog-confirm{background:var(--error);border:none;color:#fff;padding:8px 20px;border-radius:6px;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:.15s}.dialog-confirm:hover{filter:brightness(1.1)}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(60px);background:var(--bg-raised);border:1px solid var(--border);color:var(--text-hi);padding:8px 18px;border-radius:8px;font-size:12px;font-weight:500;opacity:0;transition:all .3s ease;z-index:200;pointer-events:none}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.done-screen{display:none;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:60px}.done-screen.show{display:flex}.done-screen .trophy{font-size:72px;margin-bottom:24px}.done-screen h2{font-family:Playfair Display,serif;font-size:36px;margin-bottom:12px}.done-screen p{color:var(--text-mid);font-size:16px;max-width:500px;line-height:1.7}.quiz-container{padding:32px;overflow-y:auto;max-width:800px;margin:0 auto}.quiz-setup{text-align:center;padding:60px 32px}.quiz-setup h2{font-family:Playfair Display,serif;font-size:28px;margin-bottom:12px}.quiz-setup p{color:var(--text-mid);margin-bottom:24px;font-size:14px}.quiz-option-group{display:flex;gap:10px;justify-content:center;margin-bottom:24px}.quiz-option-btn{background:var(--bg-raised);border:1px solid var(--border);color:var(--text-mid);padding:10px 24px;border-radius:8px;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;transition:.15s}.quiz-option-btn.selected,.quiz-option-btn:hover{border-color:var(--accent);color:var(--accent)}.quiz-option-btn.selected{background:var(--accent-dim)}.quiz-start-btn{background:var(--accent);color:#fff;border:none;padding:12px 32px;border-radius:8px;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer;transition:.15s}.quiz-start-btn:hover{filter:brightness(1.1)}.quiz-progress{font-size:12px;color:var(--text-lo);margin-bottom:20px;font-weight:600;text-transform:uppercase;letter-spacing:1px}.quiz-question{margin-bottom:24px}.quiz-question h3{font-size:16px;margin-bottom:16px;line-height:1.5}.quiz-question pre{background:var(--bg-editor);border:1px solid var(--border);border-radius:8px;padding:14px 16px;margin:12px 0;font-family:JetBrains Mono,monospace;font-size:12.5px;line-height:1.6;color:var(--text-hi)}.quiz-choices{display:flex;flex-direction:column;gap:8px}.quiz-choice{background:var(--bg-raised);border:1px solid var(--border);color:var(--text-mid);padding:12px 16px;border-radius:8px;font-family:inherit;font-size:13px;cursor:pointer;transition:.15s;text-align:left}.quiz-choice:hover{border-color:var(--accent);color:var(--text-hi)}.quiz-choice.selected{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.quiz-choice.correct{border-color:var(--success);color:var(--success);background:var(--success-dim)}.quiz-choice.wrong{border-color:var(--error);color:var(--error);background:var(--error-dim)}.quiz-input{background:var(--bg-editor);border:1px solid var(--border);color:var(--text-hi);padding:12px 16px;border-radius:8px;font-family:JetBrains Mono,monospace;font-size:13px;width:100%;outline:none;transition:.15s}.quiz-input:focus{border-color:var(--accent)}.quiz-submit{background:var(--accent);color:#fff;border:none;padding:10px 24px;border-radius:6px;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;margin-top:16px;transition:.15s}.quiz-submit:hover{filter:brightness(1.1)}.quiz-feedback{margin-top:12px;padding:12px 16px;border-radius:8px;font-size:13px;line-height:1.6}.quiz-feedback.correct{background:var(--success-dim);color:var(--success);border:1px solid var(--success)}.quiz-feedback.wrong{background:var(--error-dim);color:var(--error);border:1px solid var(--error)}.quiz-feedback a{color:var(--accent);text-decoration:underline;cursor:pointer}.quiz-history-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:18px 22px;margin-bottom:12px;cursor:pointer;transition:.15s}.quiz-history-card:hover{border-color:var(--accent)}.quiz-history-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.quiz-score{font-size:20px;font-weight:700}.quiz-score.good{color:var(--success)}.quiz-score.mid{color:var(--warn)}.quiz-score.bad{color:var(--error)}.quiz-date{font-size:11px;color:var(--text-lo)}.quiz-history-detail{background:var(--bg-deep);border:1px solid var(--border);border-radius:8px;margin-top:8px;overflow:hidden}.quiz-history-row{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border);font-size:12px;line-height:1.5}.quiz-history-row:last-child{border-bottom:none}.quiz-history-row .indicator{flex-shrink:0;font-size:14px}.lesson-link{color:var(--accent);text-decoration:underline;cursor:pointer;font-size:11px}.lesson-link:hover{color:var(--warn)}.scenario-intro{background:linear-gradient(135deg,var(--accent-dim),rgba(94,163,248,.08));border:1px solid rgba(232,132,60,.2);border-radius:10px;padding:18px 22px;margin-bottom:20px}.scenario-intro h4{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--blue);margin-bottom:8px}.scenario-intro-body{font-size:13px;line-height:1.6;color:var(--text-mid)}.scenario-intro-body p{margin-bottom:12px}.scenario-intro-body p:last-child{margin-bottom:0}.step-indicator{display:flex;gap:6px;margin-bottom:16px}.step-dot{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;border:2px solid var(--border);color:var(--text-lo);transition:.2s}.step-dot.active{border-color:var(--accent);color:var(--accent)}.step-dot.done{border-color:var(--success);background:var(--success);color:var(--bg-deep)}@keyframes slideIn{0%{transform:translateY(-8px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes popIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.app--dashboard{grid-template-columns:1fr}.app--dashboard main{overflow-y:auto;background:radial-gradient(ellipse 120% 80% at 50% -20%,var(--accent-glow),transparent 55%),var(--bg-deep)}.brand-btn{background:none;border:none;padding:0;margin:0;cursor:pointer;text-align:left;border-radius:6px;color:var(--text-hi);display:inline-flex;align-items:center;font-family:Playfair Display,serif}.brand-btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.hdr-nav-dashboard{background:var(--accent-dim);border:1px solid rgba(232,132,60,.25);color:var(--accent);font-size:12px;font-weight:600;padding:6px 14px;border-radius:6px;cursor:pointer;font-family:inherit;transition:.15s;margin-left:4px}.hdr-nav-dashboard:hover{border-color:var(--accent);filter:brightness(1.08)}.dashboard{max-width:1100px;margin:0 auto;padding:32px 28px 48px}.dashboard-hero{margin-bottom:40px}.dashboard-kicker{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.4px;color:var(--accent);margin-bottom:10px}.dashboard-title{font-family:Playfair Display,serif;font-size:clamp(28px,4vw,38px);font-weight:700;line-height:1.2;margin-bottom:14px;color:var(--text-hi)}.dashboard-lead{font-size:15px;line-height:1.75;color:var(--text-mid);max-width:640px;margin-bottom:22px}.dashboard-hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px}.dashboard-cta,.dashboard-share-trigger:not(.dashboard-share-trigger--compact){background:var(--accent);color:var(--on-accent-btn);border:none;padding:12px 26px;border-radius:8px;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer;transition:filter .15s}.dashboard-cta:hover,.dashboard-share-trigger:not(.dashboard-share-trigger--compact):hover{filter:brightness(1.1)}.dashboard-cta:focus-visible,.dashboard-share-trigger:not(.dashboard-share-trigger--compact):focus-visible{outline:2px solid var(--blue);outline-offset:2px}.dashboard-hero-meta{font-size:13px;font-weight:500;color:var(--text-mid)}.dashboard-callouts{display:flex;flex-direction:column;gap:16px;margin-bottom:40px}.dashboard-callout{margin:0;padding:22px 24px;border-radius:12px;border-left-color:var(--border);border-left-width:1px;border:1px solid var(--border);border-left:4px solid var(--accent);background:var(--bg-card);box-shadow:var(--shadow-module-card)}.dashboard-callout--author{border-left-color:var(--blue)}.dashboard-callout-title{font-size:15px;font-weight:700;color:var(--text-hi);margin:0 0 10px;line-height:1.35}.dashboard-callout-text{font-size:14px;line-height:1.75;color:var(--text-mid);margin:0}.dashboard-callout-text strong{color:var(--text-hi);font-weight:600}.dashboard-callout-share,.dashboard-callout-text--follow{margin-top:14px}.dashboard-share-menu{position:relative;display:inline-block}.dashboard-share-trigger--compact{background:none;border:1px solid var(--border);color:var(--text-lo);padding:4px 12px;border-radius:4px;font-size:11px;font-weight:600;cursor:pointer}.dashboard-share-trigger--compact:hover{filter:none;border-color:var(--text-mid);color:var(--text-mid)}.dashboard-share-trigger--compact:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.dashboard-share-menu--header{z-index:60}.dashboard-share-menu--header .dashboard-share-panel{right:0;left:auto;z-index:70}.dashboard-share-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:40;min-width:200px;padding:6px;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-dialog)}.dashboard-share-item{display:block;width:100%;padding:8px 12px;border:none;border-radius:6px;background:transparent;font:inherit;font-size:13px;font-weight:500;color:var(--text-mid);text-align:left;cursor:pointer;text-decoration:none;transition:background .12s,color .12s}.dashboard-share-item:hover{background:var(--bg-raised);color:var(--text-hi)}.dashboard-share-item:focus-visible{outline:2px solid var(--blue);outline-offset:0}.dashboard-author-links{list-style:none;padding:0;margin:14px 0 0;display:flex;flex-wrap:wrap;gap:10px 20px}.dashboard-author-links a{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--blue);text-decoration:none}.dashboard-author-link-icon{flex-shrink:0;width:22px;height:22px;object-fit:contain;display:block}html:not([data-theme]) .dashboard-author-link-icon--github,html[data-theme=dark] .dashboard-author-link-icon--github{filter:invert(1)}.dashboard-author-links a:hover{text-decoration:underline}.dashboard-author-links a:hover .dashboard-author-link-icon{opacity:.92}.dashboard-author-links a:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:2px}.dashboard-section-title{font-family:Playfair Display,serif;font-size:20px;font-weight:700;margin-bottom:18px;color:var(--text-hi)}.dashboard-path{margin-bottom:44px;padding:24px 26px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px}.dashboard-path .dashboard-section-title{margin-bottom:8px}.dashboard-path-hint{font-size:12px;color:var(--text-lo);margin-bottom:16px;line-height:1.5}.path-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}.path-step{margin:0;padding:0;border-bottom:1px solid var(--border)}.path-step:last-child{border-bottom:none}.path-step-btn{display:grid;grid-template-columns:auto 1fr;grid-gap:16px;gap:16px;width:100%;padding:16px 6px;margin:0 -6px;text-align:left;background:none;border:none;border-radius:8px;cursor:pointer;font-family:inherit;color:inherit;transition:background .12s}.path-step-btn:hover{background:var(--bg-raised)}.path-step-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.path-step:first-child .path-step-btn{padding-top:4px}.path-step:last-child .path-step-btn{padding-bottom:4px}.path-step-num{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;font-family:JetBrains Mono,monospace;font-size:13px;font-weight:700;background:var(--accent-dim);color:var(--accent);border:1px solid rgba(232,132,60,.2);flex-shrink:0;align-self:start;margin-top:2px}.path-step-body strong{display:block;font-size:14px;color:var(--text-hi);margin-bottom:6px}.path-step-body p{font-size:13px;line-height:1.65;color:var(--text-mid);margin:0}.dashboard-lessons{margin-bottom:40px}.dashboard-panel-heading{display:flex;align-items:center;gap:10px}.dashboard-panel-toggle{flex-shrink:0;width:32px;height:32px;display:grid;place-items:center;padding:0;background:var(--bg-raised);border:1px solid var(--border);border-radius:8px;cursor:pointer;color:var(--text-mid);transition:border-color .15s,color .15s}.dashboard-panel-toggle:hover{border-color:var(--accent);color:var(--accent)}.dashboard-panel-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dashboard-panel-toggle-chevron{font-size:10px;line-height:1}.dashboard-section-title--inline{margin-bottom:0}.dashboard-modules-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px}.dashboard-modules-head .dashboard-section-title{margin-bottom:0}.dashboard-scenarios{margin-bottom:8px}.dashboard-progress-pill{display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--bg-card);border:1px solid var(--border);border-radius:999px}.dashboard-progress-pill-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-lo)}.dashboard-progress-pill-value{font-size:13px;font-weight:700;color:var(--text-hi);font-family:JetBrains Mono,monospace}.dashboard-progress-pill-pct{margin-left:8px;font-size:12px;font-weight:600;color:var(--success)}.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:16px;gap:16px}.module-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:20px 20px 18px;display:flex;flex-direction:column;transition:border-color .15s,box-shadow .15s}.module-card:hover{border-color:rgba(232,132,60,.35);box-shadow:var(--shadow-module-card)}a.module-card.module-card--link{color:inherit;cursor:pointer}a.module-card.module-card--link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.module-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.module-card-order{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;color:var(--text-lo);letter-spacing:.05em}.module-card-count{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-lo)}.module-card-title{font-family:Playfair Display,serif;font-size:17px;font-weight:700;color:var(--text-hi);margin-bottom:10px;line-height:1.3}.module-card-desc{font-size:13px;line-height:1.6;color:var(--text-mid);flex:1 1;margin-bottom:16px}.module-card-desc--footer{margin-bottom:0}.module-card-desc--clamp{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}.module-card-meta{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-lo);margin:-4px 0 8px}@media (max-width:768px){.app{grid-template-columns:1fr!important}nav{position:fixed;left:0;top:56px;bottom:0;width:280px;transform:translateX(-100%);transition:transform .25s ease;z-index:50;box-shadow:var(--shadow-mobile-nav)}nav.mobile-open{transform:translateX(0)}.panes,main{min-height:0}.panes{grid-template-columns:1fr!important;grid-template-rows:minmax(0,1fr) minmax(0,1fr)!important}.panes>.code-pane,.panes>.panes-learn{min-height:0}.panes--resizable .panes-gutter{display:none!important}.panes--resizable>.code-pane{border-left:none}.learn:not(.learn--lesson){overflow-y:auto}.learn.learn--lesson{overflow:hidden}.code-pane{border-left:none!important;border-top:1px solid var(--border)}.panes.panes--mobile-code-expanded{grid-template-rows:0fr 1fr!important}.panes.panes--mobile-code-expanded>.panes-learn{overflow:hidden;min-height:0;visibility:hidden;pointer-events:none}.panes.panes--mobile-code-expanded>.code-pane{border-top:none}.meter-track{width:80px}.tab-btn{padding:10px 14px;font-size:12px}}