:root{--bg:#f7f8fb;--surface:#fff;--surface-2:#f1f3f8;--border:#e2e6ef;--text:#1c2333;--muted:#5f6b80;--primary:#2563eb;--primary-hover:#1d4ed8;--primary-text:#fff;--success:#15803d;--success-bg:#ecfdf3;--danger:#b91c1c;--danger-bg:#fef2f2;--warning:#a16207;--warning-bg:#fefce8;--code-bg:#f3f5fa;--beginner:#16a34a;--intermediate:#2563eb;--advanced:#7c3aed;--expert:#dc2626;--tok-keyword:#7c3aed;--tok-string:#15803d;--tok-number:#c2410c;--tok-comment:#8a94a6;--tok-function:#2563eb;--radius:10px;--shadow:0 1px 2px #1018280f, 0 1px 3px #10182814;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0f1420;--surface:#171d2b;--surface-2:#1e2636;--border:#2b3448;--text:#e6e9f0;--muted:#9aa5b8;--primary:#4f8cff;--primary-hover:#6aa0ff;--primary-text:#0b1020;--success:#4ade80;--success-bg:#12291c;--danger:#f87171;--danger-bg:#2d1515;--warning:#facc15;--warning-bg:#2a2410;--code-bg:#121826;--beginner:#4ade80;--intermediate:#60a5fa;--advanced:#a78bfa;--expert:#f87171;--tok-keyword:#c4a5ff;--tok-string:#86efac;--tok-number:#fdba74;--tok-comment:#6b768a;--tok-function:#7cb3ff;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.55}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1{margin:.3em 0 .4em;font-size:1.9rem;line-height:1.2}h2{margin:1.4em 0 .6em;font-size:1.35rem}h3{margin:1.2em 0 .4em;font-size:1.08rem}code,pre{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em}:not(pre)>code{background:var(--code-bg);border:1px solid var(--border);border-radius:5px;padding:.05em .35em}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--muted)}.small{font-size:.85rem}.lead{color:var(--muted);max-width:70ch;font-size:1.08rem}.row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.app{flex-direction:column;min-height:100vh;display:flex}.topbar{top:env(safe-area-inset-top,0px);z-index:10;background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;padding:.6rem 1.25rem;display:flex;position:sticky}.brand{color:var(--text);align-items:center;gap:.5rem;font-size:1.1rem;font-weight:700;display:flex}.brand:hover{text-decoration:none}.brand,.topbar nav a{white-space:nowrap;flex-shrink:0}@media (width<=760px){.engine-chip.engine-ready,.engine-chip.engine-idle,.engine-text{display:none}.topbar nav a{padding:.35rem .5rem}}.topbar nav{flex-wrap:wrap;align-items:center;gap:.25rem;display:flex}.topbar-tools{align-items:center;gap:.25rem;display:flex}.topbar nav{margin-left:auto}.topbar-tools a.nav-level,.topbar nav a{color:var(--muted);border-radius:8px;padding:.35rem .7rem;font-weight:500}.topbar-tools a.nav-level{border-radius:8px;padding:.2rem .4rem}.topbar-tools a.nav-level:hover,.topbar nav a:hover{background:var(--surface-2);text-decoration:none}.topbar-tools a.nav-level.active,.topbar nav a.active{color:var(--text);background:var(--surface-2)}.topbar nav a.nav-level{padding:.2rem .4rem}.main{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:1.25rem 1.25rem 3rem}.footer{text-align:center;border-top:1px solid var(--border);padding:1rem}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:.35rem;padding:.5rem .95rem;font-weight:500;line-height:1.2;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2);text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-ghost{background:0 0;border-color:#0000}.btn-danger{color:var(--danger);border-color:var(--danger)}.btn-sm{padding:.32rem .7rem;font-size:.88rem}.btn-lg{padding:.7rem 1.2rem;font-size:1.02rem}.btn-icon{padding:.35rem .55rem;font-size:1.05rem}.linkish{color:var(--text);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.85rem}.linkish:hover:not(:disabled){color:var(--primary);text-decoration:underline}.linkish:disabled{cursor:default}.segmented{border:1px solid var(--border);background:var(--surface);border-radius:8px;display:inline-flex;overflow:hidden}.segmented button{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:none;padding:.35rem .8rem;font-size:.88rem}.segmented button+button{border-left:1px solid var(--border)}.segmented button.active{background:var(--primary);color:var(--primary-text)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem 1.15rem}a.card{color:inherit;display:block}a.card:hover{border-color:var(--primary);text-decoration:none}.level-badge{border:1px solid;border-radius:999px;padding:.12rem .6rem;font-size:.8rem;font-weight:600;display:inline-block}.level-beginner{color:var(--beginner)}.level-intermediate{color:var(--intermediate)}.level-advanced{color:var(--advanced)}.level-expert{color:var(--expert)}.badge{background:var(--surface-2);color:var(--muted);border:1px solid var(--border);white-space:nowrap;border-radius:5px;padding:.05rem .4rem;font-size:.72rem;display:inline-block}.badge.ok{color:var(--success);background:var(--success-bg)}.badge.pk{color:var(--warning)}.badge.fk{color:var(--advanced)}.difficulty{align-items:center;gap:3px;display:inline-flex}.difficulty .dot{background:var(--border);border-radius:50%;width:8px;height:8px}.difficulty .dot.on{background:var(--warning)}.status{width:1.4rem;color:var(--muted);justify-content:center;display:inline-flex}.status-solved{color:var(--success);font-weight:700}.status-solved-with-help{color:var(--warning);font-weight:700}.progress{background:var(--surface-2);border-radius:999px;height:8px;margin:.5rem 0 .25rem;overflow:hidden}.progress-fill{background:var(--success);border-radius:999px;height:100%;transition:width .3s}.hero{grid-template-columns:1fr 320px;align-items:center;gap:2rem;padding:1.5rem 0 .5rem;display:grid}.hero h1{font-size:2.4rem}.hero-actions{flex-wrap:wrap;gap:.6rem;margin-top:1rem;display:flex}.hero-card{flex-direction:column;gap:.45rem;display:flex}.hero-level .level-badge{padding:.2rem .9rem;font-size:1.05rem}.hero-stats{gap:1.5rem;margin:.4rem 0;display:flex}.hero-stats div{flex-direction:column;display:flex}.hero-stats strong{font-size:1.5rem}.level-grid,.how-grid,.theme-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;display:grid}.theme-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;display:grid}.how-grid h3{margin-top:0}.level-card p{margin:.6rem 0}.level-section h2{align-items:center;gap:.6rem;display:flex}.theme-card{flex-direction:column;display:flex}.theme-card h3{margin:.3rem 0}.theme-card p{flex:1;margin:0 0 .4rem}.theme-card-head{justify-content:space-between;align-items:center;display:flex}.theme-number{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:.78rem}.theme-card-actions{flex-wrap:wrap;gap:.5rem;margin-top:.6rem;display:flex}.breadcrumb{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.3rem;font-size:.88rem;display:flex}.theme-progress{max-width:420px;margin:1rem 0}.exercise-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.exercise-row{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;align-items:center;gap:.6rem;padding:.6rem .9rem;display:flex}.exercise-row:hover{border-color:var(--primary);text-decoration:none}.exercise-num{color:var(--muted);width:1.8rem}.exercise-title{flex:1}.lesson{min-width:0;max-width:860px}.lesson-layout{grid-template-columns:minmax(0,860px) 320px;align-items:start;gap:3rem;display:grid}.lesson-aside{top:calc(env(safe-area-inset-top,0px) + 72px);position:sticky}.lesson-toc{border-left:2px solid var(--border);padding-left:1rem}.toc-title{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:.5rem;font-size:.78rem;font-weight:600}.lesson-toc ol{flex-direction:column;gap:.15rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.toc-link{font:inherit;color:var(--muted);cursor:pointer;text-align:left;background:0 0;border:0;padding:.2rem 0;font-size:.9rem}.toc-link:hover{color:var(--primary)}.markdown h2[id]{scroll-margin-top:80px}@media (width<=1100px){.lesson-layout{grid-template-columns:minmax(0,1fr)}.lesson-aside{display:none}}.markdown table{border-collapse:collapse;margin:.8rem 0;font-size:.92rem;display:block;overflow-x:auto}.markdown th,.markdown td{border:1px solid var(--border);text-align:left;padding:.35rem .7rem}.markdown th{background:var(--surface-2)}.markdown blockquote{border-left:4px solid var(--primary);background:var(--surface-2);border-radius:0 8px 8px 0;margin:.8rem 0;padding:.5rem 1rem}.markdown blockquote p{margin:.3rem 0}.markdown blockquote.callout-warn{border-left-color:var(--warning);background:var(--warning-bg)}.markdown blockquote.callout-tip{border-left-color:var(--success);background:var(--success-bg)}.markdown blockquote.callout-why{border-left-color:var(--advanced)}.markdown blockquote .code-block{background:var(--surface)}.code-block{background:var(--code-bg);border:1px solid var(--border);border-radius:8px;padding:.75rem .95rem;line-height:1.5;overflow-x:auto}.tok-keyword{color:var(--tok-keyword);font-weight:600}.tok-string{color:var(--tok-string)}.tok-number{color:var(--tok-number)}.tok-comment{color:var(--tok-comment);font-style:italic}.tok-function{color:var(--tok-function)}.runnable{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin:.9rem 0 1.2rem;overflow:hidden}.runnable .sql-editor{border:none;border-radius:0}.runnable-bar{border-top:1px solid var(--border);background:var(--surface-2);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.45rem .6rem;display:flex}.runnable .results,.runnable .error-box,.runnable>.muted{padding:.6rem}.lesson-end{margin-top:2rem}.lesson-end h3{margin-top:0}.pager{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;margin-top:2rem;padding-top:1rem;display:flex}.sql-editor{border:1px solid var(--border);border-radius:10px;font-size:.95rem;overflow:hidden}.sql-editor .cm-editor{background:var(--surface)}.sql-editor .cm-editor.cm-focused{outline:none}.editor-bar{flex-wrap:wrap;align-items:center;gap:.5rem;margin:.6rem 0;display:flex}.result{margin:.6rem 0}.result-meta{color:var(--muted);margin-bottom:.3rem;font-size:.82rem}.table-wrap{border:1px solid var(--border);border-radius:8px;max-height:420px;overflow:auto}.table-wrap table{border-collapse:collapse;width:max-content;min-width:100%;font-size:.86rem}.table-wrap th{background:var(--surface-2);text-align:left;font-weight:600;position:sticky;top:0}.table-wrap th,.table-wrap td{border-bottom:1px solid var(--border);white-space:nowrap;padding:.32rem .7rem}.table-wrap td.num{text-align:right;font-variant-numeric:tabular-nums}.table-wrap td .null{color:var(--muted);font-size:.8em;font-style:italic}.table-wrap td.empty{color:var(--muted);text-align:center}.command-result{color:var(--success);margin:.3rem 0;font-family:ui-monospace,monospace;font-size:.88rem}.error-box{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger);border-radius:8px;margin:.6rem 0;padding:.7rem .9rem}.error-box .muted{margin-top:.3rem}.error-pointer{white-space:pre;margin:.4rem 0 0;overflow-x:auto}.exercise-grid{grid-template-columns:minmax(0,1fr) minmax(300px,400px);gap:1.25rem;margin-top:.6rem;display:grid}.exercise-head{align-items:center;gap:.6rem;display:flex}.exercise-head h1{flex:1;margin:.3rem 0;font-size:1.5rem}.prompt .markdown>:first-child{margin-top:0}.prompt-meta{border-top:1px dashed var(--border);margin-top:.5rem;padding-top:.5rem}.help-box{margin-top:0}.help-actions{flex-wrap:wrap;gap:.5rem;display:flex}.hints{margin:.8rem 0 0;padding-left:1.3rem}.hints li{margin-bottom:.3rem}.hints .markdown p{margin:0}.confirm{background:var(--warning-bg);border-radius:8px;margin-top:.8rem;padding:.7rem .9rem}.confirm p{margin:0 0 .5rem}.schema-toggle{margin-top:.6rem}.schema-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.8rem 1rem}.schema-title{font-weight:600}.schema-panel p{margin:.2rem 0 .6rem}.schema-table-name{font:inherit;color:var(--text);cursor:pointer;background:0 0;border:none;padding:.2rem 0;font-family:ui-monospace,monospace;font-size:.9rem;font-weight:600}.schema-columns{margin:0 0 .4rem;padding:0 0 0 1.2rem;list-style:none}.schema-columns li{flex-wrap:wrap;align-items:center;gap:.4rem;padding:.08rem 0;display:flex}.col-type{color:var(--muted);font-size:.78rem}.feedback{border:1px solid;border-radius:10px;margin:.6rem 0;padding:.8rem 1rem}.feedback ul{margin:.4rem 0 .2rem;padding-left:1.2rem}.feedback-correct{background:var(--success-bg);border-color:var(--success);color:var(--success)}.feedback-incorrect{background:var(--warning-bg);border-color:var(--warning);color:var(--warning)}.feedback-error{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}.feedback .muted{color:inherit;opacity:.85}.empty-output{border:1px dashed var(--border);border-radius:10px;padding:1rem}.solution{border-top:4px solid var(--success);margin-top:1.5rem}.solution h2{margin-top:.2rem}.solution details{margin:.6rem 0}.solution summary{cursor:pointer;color:var(--primary)}.explanation-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.explanation-head h3{margin:.8rem 0 .4rem}.placement{max-width:820px}.question{margin:1rem 0}.question p{margin:.3rem 0 .6rem}.options{flex-direction:column;gap:.35rem;display:flex}.option{border:1px solid var(--border);cursor:pointer;border-radius:8px;align-items:center;gap:.6rem;padding:.45rem .7rem;display:flex}.option.chosen{border-color:var(--primary)}.option.right{border-color:var(--success);background:var(--success-bg)}.option.wrong{border-color:var(--danger);background:var(--danger-bg)}.option code{white-space:pre-wrap;background:0 0;border:none}.result-card h2{align-items:center;gap:.6rem;margin-top:.2rem;display:flex}.profile-level{grid-template-columns:220px 1fr;gap:1.5rem;margin-bottom:1rem;display:grid}.profile-level .level-badge{margin:.3rem 0;font-size:1.1rem}.profile-level select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:.3rem}.stat{flex-direction:column;display:flex}.stat strong{font-size:1.6rem}.level-progress{margin-top:1rem}.level-progress h2{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin:0;display:flex}.theme-progress-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.2rem 1.5rem;margin:.6rem 0 0;padding:0;list-style:none;display:grid}.theme-progress-list li{justify-content:space-between;display:flex}.danger-zone{margin-top:2rem}@media (width<=900px){.hero,.exercise-grid,.profile-level{grid-template-columns:1fr}.hero h1{font-size:1.9rem}.exercise-right{order:-1}}@media (width<=600px){.main{padding:.8rem .8rem 2rem}.topbar{flex-wrap:wrap;row-gap:.2rem;padding:.4rem .8rem}.topbar nav{order:3;justify-content:space-between;width:100%;margin-left:0}.topbar-tools{margin-left:auto}}.engine-chip{color:var(--muted);border:1px solid var(--border);white-space:nowrap;border-radius:999px;align-items:center;gap:.35rem;padding:.2rem .55rem;font-size:.78rem;display:inline-flex}.engine-dot{background:var(--muted);border-radius:50%;width:8px;height:8px}.engine-ready .engine-dot{background:var(--success)}.engine-loading .engine-dot{background:var(--warning);animation:1s ease-in-out infinite pulse}.engine-error .engine-dot{background:var(--danger)}@keyframes pulse{50%{opacity:.3}}@media (prefers-reduced-motion:reduce){.engine-loading .engine-dot{animation:none}}.engine-banner{background:var(--danger-bg);color:var(--danger);border-bottom:1px solid var(--danger);flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem;padding:.6rem 1rem;font-size:.92rem;display:flex}.crash{max-width:640px;margin:2rem auto}.crash h1{margin-top:0;font-size:1.4rem}@media (width<=600px){.engine-text{display:none}}.hero>*,.exercise-grid>*,.profile-level>*,.level-grid>*,.theme-grid>*,.how-grid>*{min-width:0}.hero-actions .btn,.help-actions .btn{white-space:normal;text-align:left}@media (width<=600px){.topbar nav{gap:0}.topbar nav a{padding:.3rem .5rem}.hero h1{font-size:1.7rem}.pager{flex-wrap:wrap}}.returning{border-color:var(--success);background:var(--success-bg);color:var(--text);flex-direction:column;gap:.5rem;margin-bottom:.6rem;padding:.7rem .9rem;font-size:.92rem;display:flex}a[role=link]{cursor:pointer}a:focus-visible,button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.page-loading{min-height:60vh}.back-bar{margin:-.4rem 0 .4rem -.7rem}.back-btn{color:var(--muted)}.intro-card p{margin:0 0 .5rem}.intro-card p:last-child{margin-bottom:0}.playground-controls,.examples{flex-wrap:wrap;align-items:center;gap:.5rem;margin:.9rem 0 .4rem;display:flex}.chip{border-radius:999px}.exercise-grid .exercise-right{order:-1}.exercise-grid.playground{grid-template-columns:minmax(0,1fr) minmax(300px,400px)}@media (width<=900px){.exercise-grid.playground{grid-template-columns:1fr}}.difficulty-label{color:var(--muted);margin-left:.3rem;font-size:.78rem}.help-title{margin-bottom:.5rem}.feedback-next{color:var(--text);flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:.6rem;display:flex}.exercise-page .prompt{margin-bottom:.4rem}.section-card{flex-direction:column;display:flex}.section-card h3{margin-top:0}.section-card p{color:var(--muted);flex:1;margin:0 0 .6rem}.section-cta{color:var(--primary);font-weight:500}.continue-card{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.8rem;margin:1rem 0;display:flex}.tabs{border-bottom:1px solid var(--border);gap:.25rem;margin:1rem 0 1.25rem;display:flex;overflow-x:auto}.tabs .tab{color:var(--muted);white-space:nowrap;cursor:pointer;border-bottom:3px solid #0000;margin-bottom:-1px;padding:.6rem 1rem;font-weight:600}.tabs .tab:hover{color:var(--text);text-decoration:none}.tabs .tab.active{color:var(--text);border-bottom-color:var(--primary)}.tab-note{color:var(--muted);font-size:.85rem;font-weight:400}.theme-exercises-bar{flex-wrap:wrap;align-items:center;gap:.8rem 1.2rem;margin-bottom:1rem;display:flex}.theme-exercises-bar .theme-progress{flex:220px;margin:0}.theme-exercises-bar .btn{white-space:normal}.theme-link{color:var(--text);cursor:pointer;transition:border-color .15s}.theme-link:hover{border-color:var(--primary);text-decoration:none}.theme-card-foot{flex-wrap:wrap;align-items:center;gap:.3rem .9rem;margin-top:.5rem;display:flex}.theme-open{color:var(--primary);margin-left:auto;font-weight:600}.ok-text{color:var(--success)}.practice-modes{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:1rem;margin:1rem 0 2rem;display:grid}.practice-modes>*{min-width:0}.practice-mode{flex-direction:column;align-items:flex-start;gap:.6rem;display:flex}.practice-mode h3,.practice-mode p{margin:0}.practice-mode .btn{white-space:normal;margin-top:auto}.practice-mode .row .btn{margin-top:0}.practice-mode .row{margin-top:auto}.segmented-wrap{flex-wrap:wrap}.filter-bar{flex-wrap:wrap;align-items:flex-end;gap:.8rem 1.4rem;margin-bottom:.8rem;display:flex}.filter-group{flex-direction:column;gap:.25rem;display:flex}.search-input{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;flex:100%;min-width:0;padding:.5rem .75rem}.search-input:focus{outline:2px solid var(--primary);outline-offset:-1px}.results-head{align-items:center;gap:.8rem;min-height:2rem;margin-bottom:.4rem;display:flex}.exercise-theme{display:block}.all-exercises .exercise-title{min-width:0}.show-more{margin-top:.8rem}@media (width<=600px){.all-exercises .exercise-row .level-badge{display:none}}.level-select{align-items:center;gap:.5rem;display:flex}.level-select select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:.35rem .6rem}.tutor{border-color:color-mix(in srgb, var(--primary) 35%, var(--border));flex-direction:column;gap:.6rem;margin-top:.9rem;display:flex}.tutor-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.tutor-intro,.tutor p{margin:0}.tutor-thread{flex-direction:column;gap:.6rem;max-height:460px;padding-right:.2rem;display:flex;overflow-y:auto}.tutor-msg{overflow-wrap:anywhere;border-radius:10px;min-width:0;padding:.55rem .75rem;font-size:.92rem;line-height:1.5}.tutor-user{background:var(--primary);max-width:88%;color:var(--primary-text);white-space:pre-wrap;align-self:flex-end}.tutor-bot{background:var(--surface-2);align-self:stretch}.tutor-bot .markdown>:first-child{margin-top:0}.tutor-bot .markdown>:last-child{margin-bottom:0}.tutor-bot .code-block{font-size:.82rem;overflow-x:auto}.tutor-error{background:var(--warning-bg);color:var(--warning)}.tutor-thinking{color:var(--muted);font-style:italic}.tutor-suggestions{flex-wrap:wrap;gap:.35rem;display:flex}.tutor-suggestions .btn{white-space:normal;text-align:left}.tutor-form{align-items:flex-end;gap:.5rem;display:flex}.tutor-form textarea,.tutor-form input{min-width:0;font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);resize:vertical;border-radius:8px;flex:1;padding:.45rem .6rem;font-size:.92rem}.tutor-form textarea:focus,.tutor-form input:focus{outline:2px solid var(--primary);outline-offset:-1px}.tutor-note{font-size:.76rem}.link-button{font:inherit;color:var(--primary);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.btn.active{border-color:var(--primary);color:var(--primary)}.tutor-toggle{margin-bottom:.2rem}.lesson-aside{max-height:calc(100vh - 90px);overflow-y:auto}.lesson-tutor-wide{margin-top:1.2rem}.lesson-tutor-narrow{margin:1.5rem 0 0;display:none}@media (width<=1100px){.lesson-tutor-narrow{display:block}}.interview-home,.interview-report{max-width:1040px}.interview-resume{border-color:color-mix(in srgb, var(--primary) 45%, var(--border));flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.8rem;margin:1rem 0;display:flex}.interview-setup{margin:1rem 0}.interview-setup h2{margin-top:0}.interview-setup fieldset{border:0;min-width:0;margin:0 0 1.1rem;padding:0}.interview-setup legend{margin-bottom:.45rem;font-weight:600}.choice-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:.6rem;display:grid}.choice-grid-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}.choice-grid-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}.choice{text-align:left;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;flex-direction:column;gap:.2rem;min-width:0;padding:.7rem .85rem;display:flex}.choice:hover{border-color:color-mix(in srgb, var(--primary) 60%, var(--border))}.choice.active{border-color:var(--primary);background:color-mix(in srgb, var(--primary) 8%, var(--surface));box-shadow:0 0 0 1px var(--primary)}.role-select{flex-wrap:wrap;align-items:center;gap:.4rem .7rem;margin-bottom:1.1rem;display:flex}.role-select>span:first-child{font-weight:600}.role-select select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:.35rem .5rem}.interview-start{flex-wrap:wrap;gap:.6rem;margin-bottom:.4rem;display:flex}.interview-replace{color:var(--warning)}.interview-info{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:1rem;display:grid}.interview-info>*{min-width:0}.interview-info h2,.interview-history h2{margin-top:0;font-size:1.15rem}.interview-steps,.interview-tips{flex-direction:column;gap:.45rem;margin:0;padding-left:1.2rem;display:flex}.interview-history{margin-top:1rem;overflow-x:auto}.history-table{border-collapse:collapse;width:100%;font-size:.93rem}.history-table th,.history-table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:.45rem .6rem}.history-table .num{font-variant-numeric:tabular-nums;font-weight:600}.interview-warning{border-color:color-mix(in srgb, var(--warning) 50%, var(--border));background:var(--warning-bg);margin-bottom:1rem}.interview-warning p{margin:0 0 .6rem}.room-head{flex-wrap:wrap;align-items:center;gap:.7rem 1.2rem;margin-bottom:1rem;padding:.7rem 1rem;display:flex}.room-title{align-items:center;gap:.6rem;min-width:0;display:flex}.room-avatar,.iv-avatar{background:color-mix(in srgb, var(--advanced) 18%, var(--surface));color:var(--advanced);border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:inline-grid}.room-avatar{width:2.3rem;height:2.3rem;font-size:1.05rem}.room-steps{flex-wrap:wrap;flex:1;justify-content:center;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.step{border:1.5px solid var(--border);min-width:2rem;height:1.7rem;color:var(--muted);border-radius:6px;place-items:center;padding:0 .35rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;font-weight:700;display:grid}.step-done{background:color-mix(in srgb, var(--success) 14%, var(--surface));border-color:color-mix(in srgb, var(--success) 50%, var(--border));color:var(--success)}.step-skipped{background:var(--surface-2);text-decoration:line-through}.step-current{border-color:var(--primary);color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb, var(--primary) 25%, transparent)}.room-tools{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.room-timer{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.room-timer.over{color:var(--warning)}.room-confirm{flex-wrap:wrap;align-items:center;gap:.4rem;display:inline-flex}.iv-stage-label{text-transform:uppercase;letter-spacing:.05em;margin-bottom:.4rem;font-weight:600}.iv-chat-stage{flex-direction:column;gap:.9rem;max-width:820px;margin:0 auto;display:flex}.iv-thread{flex-direction:column;gap:.8rem;min-width:0;display:flex}.iv-chat-stage .iv-thread{max-height:min(62vh,640px);padding-right:.2rem;overflow-y:auto}.iv-coding-chat .iv-thread{max-height:380px;padding-right:.2rem;overflow-y:auto}.iv-msg{overflow-wrap:anywhere;min-width:0;line-height:1.55}.iv-interviewer{align-items:flex-start;gap:.6rem;display:flex}.iv-avatar{width:1.9rem;height:1.9rem;margin-top:.15rem;font-size:.85rem}.iv-bubble{background:var(--surface-2);border-radius:4px 12px 12px;flex:1;min-width:0;padding:.6rem .85rem}.iv-bubble .markdown>:first-child{margin-top:0}.iv-bubble .markdown>:last-child{margin-bottom:0}.iv-bubble .code-block{font-size:.85rem;overflow-x:auto}.iv-bubble .btn{margin-top:.5rem}.iv-error .iv-bubble{background:var(--warning-bg);color:var(--warning)}.iv-candidate{background:var(--primary);max-width:85%;color:var(--primary-text);white-space:pre-wrap;border-radius:12px 4px 12px 12px;align-self:flex-end;padding:.6rem .85rem}.iv-event{color:var(--muted);background:var(--surface-2);text-align:center;border-radius:999px;align-self:center;max-width:100%;padding:.2rem .75rem;font-size:.82rem}.iv-composer{flex-direction:column;gap:.45rem;display:flex}.iv-composer textarea{width:100%;font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);resize:vertical;border-radius:8px;padding:.6rem .75rem;font-size:.95rem}.iv-composer textarea:focus{outline:2px solid color-mix(in srgb, var(--primary) 45%, transparent);border-color:var(--primary)}.iv-composer-bar,.iv-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.iv-keys{margin-left:auto}.iv-coding-chat{border-color:color-mix(in srgb, var(--advanced) 35%, var(--border));flex-direction:column;gap:.7rem;margin-bottom:.6rem;display:flex}.coding-stage .prompt{margin-bottom:.2rem}.coding-stage .exercise-head h2{flex:1;margin:.2rem 0;font-size:1.3rem}.self-rating{border-top:1px solid var(--border);padding-top:.8rem}.self-rating h3{margin:0 0 .4rem;font-size:1rem}.after-question{flex-direction:column;align-items:flex-start;gap:.8rem;margin-top:.4rem;display:flex}.after-question .question-review{width:100%}.report-pending h2{margin-top:0}.report-hero{--verdict:var(--primary);border-left:5px solid var(--verdict);flex-wrap:wrap;align-items:center;gap:1rem 1.6rem;margin:1rem 0;display:flex}.verdict-strong-hire{--verdict:var(--success)}.verdict-hire{--verdict:var(--beginner)}.verdict-lean-no-hire{--verdict:var(--warning)}.verdict-no-hire{--verdict:var(--danger)}.report-hero>div:last-child{flex:1;min-width:min(100%,280px)}.report-score{color:var(--verdict);font-variant-numeric:tabular-nums;align-items:baseline;display:flex}.report-score-num{font-size:3.4rem;font-weight:800;line-height:1}.report-score-unit{font-size:1.4rem;font-weight:700}.verdict-chip{color:var(--verdict);background:color-mix(in srgb, var(--verdict) 13%, var(--surface));border:1px solid color-mix(in srgb, var(--verdict) 40%, var(--border));border-radius:999px;padding:.15rem .7rem;font-weight:700;display:inline-block}.report-verdict-text{margin:.4rem 0;font-weight:600}.report-summary>:last-child{margin-bottom:0}.report-columns{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:1rem;margin-bottom:1.2rem;display:grid}.report-columns>*{min-width:0}.report-columns h2{margin-top:0;font-size:1.1rem}.report-list{flex-direction:column;gap:.4rem;margin:.4rem 0;padding:0;list-style:none;display:flex}.report-list li{padding-left:1.4rem;position:relative}.report-list.good li:before,.report-list li.good:before{content:"✓";color:var(--success);font-weight:700;position:absolute;left:0}.report-list.improve li:before,.report-list li.improve:before{content:"→";color:var(--warning);font-weight:700;position:absolute;left:0}.report-questions{flex-direction:column;gap:.6rem;margin-bottom:1.2rem;display:flex}.question-review{padding:0}.question-review>summary{cursor:pointer;flex-wrap:wrap;align-items:center;gap:.4rem .7rem;padding:.75rem 1rem;list-style:none;display:flex}.question-review>summary::-webkit-details-marker{display:none}.question-review>summary:after{content:"▸";color:var(--muted)}.question-review[open]>summary:after{content:"▾"}.qr-num{background:var(--surface-2);border-radius:50%;place-items:center;width:1.6rem;height:1.6rem;font-size:.85rem;font-weight:700;display:inline-grid}.qr-kind{text-transform:uppercase;letter-spacing:.04em;font-weight:600}.qr-title{flex:1;min-width:min(100%,12rem);font-weight:600}.score-pill{white-space:nowrap;background:var(--surface-2);color:var(--muted);border-radius:999px;padding:.12rem .6rem;font-size:.8rem;font-weight:700}.score-4,.score-3{background:var(--success-bg);color:var(--success)}.score-2{background:var(--warning-bg);color:var(--warning)}.score-1,.score-0{background:var(--danger-bg);color:var(--danger)}.qr-body{flex-direction:column;gap:.7rem;min-width:0;padding:0 1rem 1rem;display:flex}.qr-body h4{margin:.2rem 0 .4rem;font-size:.95rem}.qr-question{color:var(--muted);border-left:3px solid var(--border);padding-left:.8rem}.qr-question>:first-child{margin-top:0}.qr-question>:last-child{margin-bottom:0}.qr-feedback>.markdown>:first-child{margin-top:0}.qr-model{background:var(--surface-2);border-radius:8px;padding:.6rem .9rem}.qr-model ul{margin:0;padding-left:1.2rem}.qr-model li .markdown>*{margin:.15rem 0}.qr-transcript summary{cursor:pointer;color:var(--primary);font-size:.92rem}.qr-line{overflow-wrap:anywhere;margin:.45rem 0;font-size:.9rem}.qr-line .markdown,.qr-line .markdown>p{display:inline}.qr-text{white-space:pre-wrap}.qr-event{color:var(--muted);font-style:italic}.report-lessons h2{margin-top:0;font-size:1.1rem}.report-lesson-links{flex-wrap:wrap;gap:.5rem;display:flex}.report-lesson-links .theme-link{border:1px solid var(--border);border-radius:8px;align-items:center;gap:.4rem;padding:.4rem .7rem;display:inline-flex}.report-actions{flex-wrap:wrap;gap:.6rem;margin-top:1.2rem;display:flex}@media (width<=600px){.room-steps{flex-basis:100%;order:3;justify-content:flex-start}.iv-keys{display:none}.report-score-num{font-size:2.8rem}}:root{--tok-table:#0f766e;--tok-column:#b45309;--pbi:#c9a227}:root[data-theme=dark]{--tok-table:#5eead4;--tok-column:#fbbf24}.tok-table{color:var(--tok-table)}.tok-column{color:var(--tok-column)}.track-switch{border:1px solid var(--border);background:var(--surface-2);border-radius:999px;flex-shrink:0;margin-left:.6rem;padding:2px;display:inline-flex}.track-switch a{color:var(--muted);white-space:nowrap;cursor:pointer;border-radius:999px;padding:.18rem .75rem;font-size:.86rem;font-weight:600}.track-switch a:hover{color:var(--text);text-decoration:none}.track-switch a.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}@media (width<=600px){.track-switch{margin-left:.3rem}.track-switch a{padding:.15rem .55rem}}.pbi-level-card{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;margin:.8rem 0 .2rem;display:flex}.pbi-matrix-wrap{margin:.6rem 0}.dax-runnable .pbi-matrix-wrap,.dax-runnable .pbi-cards,.dax-runnable .pbi-query-result,.dax-runnable .error-box{margin:.6rem}.pbi-matrix{border-collapse:collapse;width:max-content;min-width:100%;font-size:.86rem}.pbi-matrix th,.pbi-matrix td{border-bottom:1px solid var(--border);white-space:nowrap;padding:.3rem .75rem}.pbi-matrix thead th{background:var(--surface-2);text-align:left;font-weight:600;position:sticky;top:0}.pbi-matrix thead th.num{text-align:right}.pbi-matrix tbody th{text-align:left;font-weight:500}.pbi-matrix td.num{text-align:right;font-variant-numeric:tabular-nums;cursor:pointer}.pbi-matrix td.num:hover{background:color-mix(in srgb, var(--primary) 8%, transparent)}.pbi-matrix td.picked{outline:2px solid var(--primary);outline-offset:-2px;background:color-mix(in srgb, var(--primary) 10%, transparent)}.pbi-matrix .pbi-total-row th,.pbi-matrix .pbi-total-row td{border-top:2px solid var(--border);background:var(--surface-2);font-weight:700}.pbi-matrix .pbi-subtotal-row th,.pbi-matrix .pbi-subtotal-row td{background:color-mix(in srgb, var(--surface-2) 60%, transparent);font-weight:650}.pbi-matrix .pbi-total-head,.pbi-corner{color:var(--muted)}.filter-inspector{border-left:3px solid var(--primary);background:color-mix(in srgb, var(--primary) 7%, var(--surface));border-radius:6px;margin-top:.45rem;padding:.45rem .7rem}.inspector-hint{margin-top:.3rem}.pbi-cards{flex-wrap:wrap;gap:.7rem;margin:.6rem 0;display:flex}.pbi-card{border:1px solid var(--border);background:var(--surface);border-radius:10px;min-width:10rem;padding:.7rem 1.1rem}.pbi-card-value{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:700}.pbi-query-result{margin:.6rem 0}.pbi-query-result td.num{text-align:right;font-variant-numeric:tabular-nums}.pbi-query-result td.null{color:var(--muted);font-style:italic}.model-diagram{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin:.8rem 0 1rem;overflow-x:auto}.model-diagram svg{min-width:620px;display:block}.model-diagram .tbl-box{fill:var(--surface);stroke:var(--border);stroke-width:1.5px}.model-diagram .tbl-head{fill:color-mix(in srgb, var(--primary) 16%, var(--surface))}.model-diagram .fact .tbl-head{fill:color-mix(in srgb, var(--pbi) 30%, var(--surface))}.model-diagram .fact .tbl-box{stroke:color-mix(in srgb, var(--pbi) 60%, var(--border))}.model-diagram .tbl-name{fill:var(--text);font-size:12.5px;font-weight:700}.model-diagram .tbl-col{fill:var(--text);font-size:11.5px}.model-diagram .tbl-col.key{fill:var(--tok-column);font-weight:600}.model-diagram .tbl-col.more,.model-diagram .diagram-note{fill:var(--muted);font-size:11px}.model-diagram .rel path{fill:none;stroke:var(--muted);stroke-width:1.6px}.model-diagram .rel.inactive path{stroke-dasharray:5 4}.model-diagram .rel-arrow{fill:var(--muted)}.model-diagram .card-label{fill:var(--text);font-size:12px;font-weight:700}.model-panel .schema-title{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.model-measures{margin-top:.6rem}.measure-def{color:var(--muted);word-break:break-all;margin-left:.4rem;font-size:.75rem}.model-rels{margin-top:.6rem}.model-rels ul{margin:.3rem 0 0;padding-left:1.1rem}.choice-options{flex-direction:column;gap:.5rem;display:flex}.choice-option{border:1.5px solid var(--border);background:var(--surface);cursor:pointer;border-radius:10px;align-items:flex-start;gap:.6rem;padding:.6rem .8rem;display:flex}.choice-option:hover{border-color:color-mix(in srgb, var(--primary) 60%, var(--border))}.choice-option.active{border-color:var(--primary);background:color-mix(in srgb, var(--primary) 7%, var(--surface))}.choice-option input{margin-top:.3rem}.choice-option .markdown>*{margin:0}.visual-config{flex-wrap:wrap;gap:.6rem 1rem;margin:0 0 .6rem;display:flex}.field-select{flex-direction:column;gap:.15rem;min-width:0;display:inline-flex}.field-select select,.pbi-filter-bar select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;max-width:100%;padding:.3rem .45rem;font-size:.9rem}.pbi-filter-bar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.hero-kicker{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 .4rem;font-size:.85rem;font-weight:600}.pbi-home-card{color:inherit;border-left:4px solid #f2c811;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.25rem;margin-top:1.75rem;text-decoration:none;display:flex}.pbi-home-card>div{flex:22rem;min-width:0}.pbi-home-card h2{margin:.3rem 0 .4rem}.pbi-home-card p{color:var(--muted);margin:0}.pbi-home-card:hover{border-color:var(--primary);border-left-color:#f2c811}.pbi-home-tag{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.75rem;font-weight:700}.py-home-card,.py-home-card:hover{border-left-color:#3776ab}.py-home-card{margin-top:1rem}.pq-workbench{flex-direction:column;gap:.6rem;min-width:0;display:flex}.pq-editor-row{align-items:flex-start;gap:.75rem;min-width:0;display:flex}.pq-editor-col{flex:auto;min-width:0}.pq-steps{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex:0 0 13rem;max-height:22rem;padding:.5rem;overflow:auto}.pq-steps-title{text-transform:uppercase;letter-spacing:.05em;margin-bottom:.3rem;font-weight:700}.pq-steps ol{counter-reset:step;margin:0;padding:0;list-style:none}.pq-steps li button{text-align:left;width:100%;color:var(--text);font:inherit;cursor:pointer;overflow-wrap:anywhere;background:0 0;border:0;border-radius:6px;padding:.25rem .4rem;font-size:.86rem;display:block}.pq-steps li button:hover{background:var(--surface-2)}.pq-steps li button.active{background:color-mix(in srgb, var(--primary) 14%, transparent);color:var(--primary);font-weight:600}.pq-formula{border:1px solid var(--border);background:var(--code-bg);white-space:nowrap;border-radius:8px;padding:.35rem .6rem;font-size:.82rem;overflow-x:auto}.pq-formula code{font-size:.82rem}.pq-fx{color:var(--muted);margin-right:.3rem;font-style:italic;font-weight:700}.pq-summary{margin-bottom:.25rem}.pq-timing{text-align:right}.pq-table{border-collapse:collapse;width:max-content;min-width:100%;font-size:.84rem}.pq-table th,.pq-table td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);white-space:nowrap;text-overflow:ellipsis;text-align:left;max-width:22rem;padding:.25rem .6rem;overflow:hidden}.pq-table td.num{text-align:right;font-variant-numeric:tabular-nums}.pq-table thead th{background:var(--surface-2);vertical-align:top;font-weight:600;position:sticky;top:0}.pq-rownum{color:var(--muted);background:var(--surface-2);font-size:.75rem;text-align:right!important}.pq-type{color:var(--muted);border:1px solid var(--border);background:var(--surface);border-radius:4px;margin-right:.15rem;padding:0 .2rem;font-size:.68rem;font-weight:700;display:inline-block}.pq-type-any{color:var(--warning)}.pq-quality{gap:.4rem;font-size:.7rem;font-weight:500;display:flex}.pq-quality-error{color:var(--danger);font-weight:700}.pq-null{color:var(--muted);font-style:italic}.pq-empty{border-bottom:1px dashed var(--border);width:1.2rem;display:inline-block}.pq-cell-error,.pq-cell-nested{font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.pq-cell-error{color:var(--danger);font-weight:700;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.pq-cell-nested{color:var(--warning);font-weight:600;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.pq-error-detail{margin-top:.5rem}.pq-nested-wrap{border-left:3px solid var(--border);margin-top:.6rem;padding-left:.75rem}.pq-scalar{padding:.5rem 0;font-size:1.1rem}.pq-sources ul{margin:.4rem 0 0;padding:0;list-style:none}.pq-file{width:100%;color:var(--text);font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:6px;justify-content:space-between;gap:.5rem;padding:.3rem .35rem;font-size:.86rem;display:flex}.pq-file:hover,.pq-file.active{background:var(--surface-2)}.pq-file-name{font-family:var(--mono,ui-monospace, monospace);overflow-wrap:anywhere}.pq-file-body{min-width:0;padding:.3rem .35rem .6rem}.pq-raw-text{background:var(--code-bg);border-radius:6px;margin:0 0 .4rem;padding:.4rem .5rem;font-size:.74rem;overflow-x:auto}.pq-raw td{font-size:.74rem}.pq-file-sheet{margin-bottom:.5rem}.pq-file-code{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.pq-file-code code{overflow-wrap:anywhere;flex:12rem;min-width:0;font-size:.74rem}@media (width<=760px){.pq-editor-row{flex-direction:column}.pq-steps{flex:none;width:100%;max-height:none}.pq-steps ol{flex-wrap:wrap;gap:.2rem;display:flex}.pq-steps li button{border:1px solid var(--border);width:auto}}.module-switch{flex-wrap:wrap;margin:.25rem 0 1rem}.module-switch a{color:var(--text);border-radius:6px;padding:.35rem .8rem;font-size:.9rem;text-decoration:none}.module-switch a.active{background:var(--surface);box-shadow:var(--shadow);font-weight:600}.pq-queries details{margin-top:.4rem}.pq-queries summary{cursor:pointer;font-size:.86rem}:root{--viz-1:#2a78d6;--viz-2:#eb6834;--viz-3:#1baf7a;--viz-4:#eda100;--viz-5:#e87ba4;--viz-6:#008300;--viz-7:#4a3aa7;--viz-8:#e34948;--viz-other:#9a9994;--viz-surface:#fff;--viz-grid:#e9e8e4;--viz-baseline:#c9c8c2;--viz-ink:#1c2333;--viz-ink-2:#52514e;--page-bg:#eef0f4}:root[data-theme=dark]{--viz-1:#3987e5;--viz-2:#d95926;--viz-3:#199e70;--viz-4:#c98500;--viz-5:#d55181;--viz-6:#008300;--viz-7:#9085e9;--viz-8:#e66767;--viz-other:#6f6e69;--viz-surface:#1a1f2c;--viz-grid:#2a3142;--viz-baseline:#48506a;--viz-ink:#e6e9f0;--viz-ink-2:#aab3c5;--page-bg:#0c1019}.report-canvas-wrap{border:1px solid var(--border);background:var(--page-bg);border-radius:8px;width:100%;position:relative;overflow:hidden}.report-page{transform-origin:0 0;background:var(--page-bg);position:absolute;top:0;left:0}.report-slot{position:absolute}.rv-visual{box-sizing:border-box;background:var(--viz-surface);color:var(--viz-ink);font-variant-numeric:tabular-nums;border-radius:6px;padding:6px 8px;font-size:12px;line-height:1.3;position:relative;overflow:hidden}.rv-visual.rv-border{border:1px solid var(--viz-baseline)}.rv-visual.rv-transparent{background:0 0}.rv-title{white-space:nowrap;text-overflow:ellipsis;height:28px;padding-top:2px;font-size:14px;font-weight:600;overflow:hidden}.rv-body{position:relative}.rv-chart{flex-direction:column;display:flex}.rv-chart.rv-chart-row{flex-direction:row}.rv-plot{position:relative;overflow:hidden}.rv-plot svg{display:block}.rv-legend{height:24px;color:var(--viz-ink-2);flex-wrap:nowrap;align-items:center;gap:4px 12px;font-size:11px;display:flex;overflow:hidden}.rv-legend-right{flex-direction:column;justify-content:center;align-items:flex-start;width:30%;max-width:160px;height:auto;padding-left:8px}.rv-legend-item{white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:5px;max-width:100%;display:inline-flex;overflow:hidden}.rv-swatch{border-radius:50%;flex:none;width:9px;height:9px;display:inline-block}.rv-axis-text{fill:var(--viz-ink-2);font-size:11px}.rv-axis-title{fill:var(--viz-ink-2);font-size:11px;font-weight:600}.rv-label{fill:var(--viz-ink);font-size:11px}.rv-grid{stroke:var(--viz-grid);stroke-width:1px;shape-rendering:crispedges}.rv-baseline{stroke:var(--viz-baseline);stroke-width:1px;shape-rendering:crispedges}.rv-crosshair{stroke:var(--viz-baseline);stroke-width:1px}.rv-line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.rv-dot,.rv-slice{stroke:var(--viz-surface);stroke-width:2px}.rv-clickable{cursor:pointer}.rv-tooltip{z-index:5;background:var(--surface);min-width:140px;max-width:240px;color:var(--text);border:1px solid var(--border);pointer-events:none;border-radius:6px;padding:6px 8px;font-size:12px;position:absolute;box-shadow:0 4px 14px #0000002e}.rv-tooltip-title{margin-bottom:2px;font-weight:600}.rv-tooltip-line{align-items:center;gap:6px;display:flex}.rv-tooltip-label{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.rv-tooltip-value{font-weight:600}.rv-card{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.rv-card-value{font-variant-numeric:proportional-nums;font-weight:600;line-height:1.1}.rv-card-label{color:var(--viz-ink-2);font-size:12px}.rv-table-wrap{overflow:auto}.rv-table{border-collapse:collapse;width:100%;font-size:12px}.rv-table th{background:var(--viz-surface);text-align:left;border-bottom:1px solid var(--viz-baseline);cursor:pointer;white-space:nowrap;padding:4px 6px;font-weight:600;position:sticky;top:0}.rv-table td{border-bottom:1px solid var(--viz-grid);white-space:nowrap;padding:3px 6px}.rv-table .num{text-align:right}.rv-table tfoot td{border-top:1px solid var(--viz-baseline);background:var(--viz-surface);font-weight:700;position:sticky;bottom:0}.rv-table tr.rv-dim td{opacity:.4}.rv-matrix .rv-subtotal td{font-weight:600}.rv-matrix .rv-col-head{text-align:center}.rv-total-col{font-weight:600}.rv-slicer{overflow:auto}.rv-slicer-list{margin:0;padding:0;list-style:none}.rv-slicer-list li label{cursor:pointer;align-items:center;gap:6px;padding:2px 0;display:flex}.rv-tiles{flex-wrap:wrap;gap:6px;display:flex}.rv-tile{border:1px solid var(--viz-baseline);background:var(--viz-surface);color:var(--viz-ink);font:inherit;cursor:pointer;border-radius:4px;padding:4px 10px}.rv-tile.on{background:var(--viz-1);border-color:var(--viz-1);color:#fff}.rv-dropdown{position:relative}.rv-dropdown-btn{text-align:left;border:1px solid var(--viz-baseline);background:var(--viz-surface);width:100%;color:var(--viz-ink);font:inherit;cursor:pointer;border-radius:4px;justify-content:space-between;padding:4px 8px;display:flex}.rv-dropdown-panel{z-index:6;background:var(--viz-surface);border:1px solid var(--viz-baseline);border-radius:4px;max-height:220px;padding:6px 8px;position:absolute;top:100%;left:0;right:0;overflow:auto;box-shadow:0 4px 14px #0000002e}.rv-text p{margin:0 0 .4em}.rv-empty,.rv-error{text-align:center;height:100%;color:var(--viz-ink-2);justify-content:center;align-items:center;padding:8px;font-size:12px;display:flex}.rv-error{color:var(--danger)}.rv-drillbar{align-items:center;gap:2px;height:24px;display:flex}.rv-drillbar button{color:var(--viz-ink-2);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;width:22px;height:22px;padding:0;font-size:12px}.rv-drillbar button:hover:not(:disabled){border-color:var(--viz-baseline)}.rv-drillbar button.on{background:var(--viz-1);color:#fff}.rv-drillbar button:disabled{opacity:.35;cursor:default}.rv-drill-path{color:var(--viz-ink-2);white-space:nowrap;text-overflow:ellipsis;margin-left:6px;font-size:11px;overflow:hidden}.rb{flex-direction:column;gap:10px;display:flex}.rb-toolbar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.rb-toolbar .btn.active{background:var(--primary);color:var(--primary-text);border-color:var(--primary)}.rb-visual-actions,.rb-file{gap:4px;display:inline-flex}.rb-file{margin-left:auto}.rb-main{grid-template-columns:minmax(0,1fr) 330px;align-items:start;gap:14px;display:grid}.rb-reading .rb-main{grid-template-columns:minmax(0,1fr)}.rb-canvas-col{flex-direction:column;gap:8px;min-width:0;display:flex}.rb-side{flex-direction:column;gap:10px;min-width:0;max-height:calc(100vh - 90px);display:flex;position:sticky;top:70px;overflow:auto}.rb-tabs{align-self:stretch}.rb-tabs button{flex:1}.rb-pane{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;font-size:.88rem}.rb-pane-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.rb-help{margin:6px 0}.rb-types{grid-template-columns:repeat(6,1fr);gap:4px;margin-bottom:8px;display:grid}.rb-type{border:1px solid var(--border);background:var(--surface);height:34px;color:var(--text);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;display:flex}.rb-type:hover{border-color:var(--primary)}.rb-type.on{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.rb-type-icon{stroke-width:1.5px}.rb-well{border:1px dashed var(--border);border-radius:6px;margin-top:6px;padding:6px 8px}.rb-well.over{border-color:var(--primary);background:var(--surface-2)}.rb-well-label{color:var(--muted);margin-bottom:4px;font-size:.78rem;font-weight:600}.rb-well-empty{color:var(--muted);font-size:.8rem;font-style:italic}.rb-chip{background:var(--surface-2);border-radius:5px;align-items:center;gap:4px;margin-top:3px;padding:2px 4px 2px 8px;display:flex}.rb-chip-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.rb-agg{max-width:110px;font-size:.75rem}.rb-mini{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0 4px;font-size:.9rem;line-height:1.4}.rb-mini:hover:not(:disabled){color:var(--text);background:var(--border)}.rb-mini:disabled{opacity:.35}.rb-search{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;border-radius:6px;margin-bottom:6px;padding:4px 8px}.rb-tree,.rb-tree ul{margin:0;padding:0;list-style:none}.rb-tree ul{padding-left:14px}.rb-table,.rb-field{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;padding:2px 4px;display:flex}.rb-table{font-weight:600}.rb-field:hover,.rb-table:hover{background:var(--surface-2)}.rb-field.used{color:var(--primary);font-weight:600}.rb-field-row{align-items:center;display:flex}.rb-ficon{text-align:center;width:20px;color:var(--muted);flex:none;font-size:.72rem;display:inline-block}.rb-ficon.rb-measure{color:var(--advanced);font-style:italic;font-weight:700}.rb-caret{width:12px;color:var(--muted)}.rb-format fieldset{border:none;border-top:1px solid var(--border);margin:0;padding:8px 0 4px}.rb-format legend{color:var(--muted);padding:0;font-size:.8rem;font-weight:600}.rb-row{justify-content:space-between;align-items:center;gap:8px;margin:4px 0;display:flex}.rb-row select,.rb-row input[type=number]{max-width:60%}.rb-input{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;border-radius:6px;padding:4px 8px}.rb-swatches{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.rb-swatch{cursor:pointer;border:2px solid #0000;border-radius:4px;width:18px;height:18px;padding:0}.rb-swatch.on{border-color:var(--text)}.rb-rule{flex-wrap:wrap;align-items:center;gap:4px;margin:6px 0;display:flex}.rb-rule select{max-width:140px}.rb-gradient{border-radius:3px;width:48px;height:12px}.rb-filter-section{border-top:1px solid var(--border);padding:8px 0}.rb-filter-section.over{background:var(--surface-2)}.rb-filter-section-title{color:var(--muted);margin-bottom:4px;font-size:.8rem;font-weight:600}.rb-filter{border:1px solid var(--border);background:var(--surface);border-radius:6px;margin:4px 0}.rb-filter.active{border-left:3px solid var(--primary)}.rb-filter-head{align-items:center;display:flex}.rb-filter-title{text-align:left;color:var(--text);font:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;flex:1;min-width:0;padding:4px 8px;overflow:hidden}.rb-filter-body{flex-direction:column;gap:4px;padding:4px 8px 8px;display:flex}.rb-values{max-height:180px;margin:0;padding:0;list-style:none;overflow:auto}.rb-topn,.rb-range{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.rb-topn input,.rb-range input{width:6em}.rb-add-filter{width:100%;margin-top:4px}.rb-pages{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.rb-page-tab{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;padding:3px 12px;font-size:.85rem}.rb-page-tab.on{border-color:var(--primary);color:var(--primary);font-weight:600}.rb-page-input{width:10em}.rb-notice{background:var(--warning-bg);color:var(--text);border-radius:6px;padding:6px 10px;font-size:.88rem}.rb-note{background:var(--surface-2);border-radius:6px;margin:4px 0;padding:6px 10px}.report-page.editing .report-slot:hover{outline:1px solid var(--viz-baseline)}.rb-hit{cursor:move;position:absolute;inset:0}.rb-frame{outline:2px solid var(--primary);pointer-events:none;position:absolute;inset:0}.rb-grip{background:var(--primary);color:var(--primary-text);cursor:move;pointer-events:auto;white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:6px 6px 0 0;padding:1px 10px;font-size:12px;position:absolute;top:-22px;left:50%;transform:translate(-50%)}.rb-handle{background:var(--surface);border:2px solid var(--primary);pointer-events:auto;border-radius:2px;width:12px;height:12px;position:absolute}.rb-h-n{cursor:ns-resize;top:-7px;left:calc(50% - 6px)}.rb-h-s{cursor:ns-resize;bottom:-7px;left:calc(50% - 6px)}.rb-h-e{cursor:ew-resize;top:calc(50% - 6px);right:-7px}.rb-h-w{cursor:ew-resize;top:calc(50% - 6px);left:-7px}.rb-h-ne{cursor:nesw-resize;top:-7px;right:-7px}.rb-h-sw{cursor:nesw-resize;bottom:-7px;left:-7px}.rb-h-nw{cursor:nwse-resize;top:-7px;left:-7px}.rb-h-se{cursor:nwse-resize;bottom:-7px;right:-7px}body.rb-dragging,body.rb-dragging *{-webkit-user-select:none;user-select:none;cursor:grabbing!important}.rb-interact{z-index:4;gap:2px;display:flex;position:absolute;top:4px;right:4px}.rb-interact button{border:1px solid var(--viz-baseline);background:var(--surface);color:var(--text);cursor:pointer;border-radius:4px;padding:2px 6px;font-size:12px}.rb-interact button.on{background:var(--primary);color:var(--primary-text);border-color:var(--primary)}.rb-backdrop{z-index:100;background:#0a0e1873;justify-content:center;align-items:flex-start;padding:5vh 16px;display:flex;position:fixed;inset:0;overflow:auto}.rb-dialog{flex-direction:column;gap:10px;width:100%;max-width:560px;display:flex}.rb-dialog.wide{max-width:860px}.rb-dialog-head{justify-content:space-between;align-items:center;display:flex}.rb-dialog-head h2{margin:0;font-size:1.15rem}.rb-dialog-row{flex-wrap:wrap;gap:12px;display:flex}.rb-dialog-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.rb-dialog-actions .spacer{flex:1}.rb-h3{margin:8px 0 2px;font-size:.95rem}.rb-query-list{flex-wrap:wrap;gap:6px;display:flex}.rb-query{border:1px solid var(--border);cursor:pointer;border-radius:6px;align-items:center;gap:6px;padding:4px 8px;display:inline-flex}.rb-query.on{border-color:var(--primary)}.rb-query-editor{border:1px solid var(--border);border-radius:8px;padding:8px}.rb-rels{margin:0;padding:0;list-style:none}.rb-rels li{align-items:center;gap:8px;padding:2px 0;display:flex}.rb-rels li.error{color:var(--danger)}.rb-proposals,.rb-new-rel{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.rb-page-wrap .lead{max-width:70ch}@media (width<=1000px){.rb-main{grid-template-columns:minmax(0,1fr)}.rb-side{max-height:none;position:static}}.main:has(.rb-page-wrap){max-width:1720px}.rb-side>*{flex:none}.rb-grip.inside{border-radius:0 0 6px 6px;top:0}.rb-exercise-bar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.rb-reference{margin:8px 0 16px}.main:has(.rb-exercise){max-width:1720px}.lesson-report{margin:1rem 0 1.4rem}.lesson-report figcaption{margin-top:4px}.segmented .segmented-link{border-left:1px solid var(--border);color:var(--muted);align-items:center;padding:.35rem .8rem;font-size:.88rem;display:inline-flex}.rb-empty-page{color:var(--muted);pointer-events:none;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:0 80px;font-size:22px;display:flex;position:absolute;inset:0}.py-output{flex-direction:column;gap:.6rem;min-width:0;margin-top:.6rem;display:flex}.runnable .py-output{margin-top:0;padding:.6rem}.py-block-label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:.2rem;font-size:.75rem}.py-stdout,.py-repr,.py-file-text,.py-warnings pre,.py-traceback pre{background:var(--code-bg);border:1px solid var(--border);white-space:pre-wrap;word-break:break-word;border-radius:8px;max-height:22rem;margin:0;padding:.55rem .7rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86rem;line-height:1.45;overflow:auto}.py-repr{padding-right:4.5rem;position:relative}.py-type{color:var(--muted);font-family:inherit;font-size:.72rem;position:absolute;top:.45rem;right:.6rem}.py-error{border:1px solid var(--danger);background:var(--danger-bg);border-radius:10px;padding:.65rem .85rem}.py-error-title{color:var(--danger)}.py-error .markdown p{margin:.3rem 0}.py-suggest{flex-wrap:wrap;align-items:center;gap:.35rem;margin:.3rem 0;display:flex}.py-traceback summary,.py-warnings summary,.py-variables summary,.py-setup summary{cursor:pointer;color:var(--muted);font-size:.85rem}.py-traceback pre{background:var(--surface);margin-top:.4rem}.py-warnings pre{margin-top:.4rem}.py-figure{border:1px solid var(--border);background:#fff;border-radius:8px;max-width:100%;padding:.4rem;overflow-x:auto}.py-figure img{max-width:100%;height:auto;margin:0 auto;display:block}.py-table-wrap{border:1px solid var(--border);border-radius:8px;max-width:100%;max-height:26rem;overflow:auto}.py-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:max-content;min-width:100%;font-size:.84rem}.py-table th,.py-table td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:.28rem .6rem}.py-table thead th{background:var(--surface-2);vertical-align:bottom;z-index:1;font-weight:600;position:sticky;top:0}.py-table .num{text-align:right}.py-table .py-index{color:var(--muted);background:var(--surface-2);font-weight:500}.py-table tbody .py-index{background:var(--surface)}.py-dtype{color:var(--muted);font-size:.7rem;font-weight:400;display:block}.py-na{color:var(--muted);font-style:italic}.py-table-foot{border-top:1px solid var(--border);background:var(--surface-2);padding:.3rem .6rem;position:sticky;left:0}.py-table-small{font-size:.78rem}.py-table-small th{background:var(--surface-2)}.py-empty{margin:0}.py-variables{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.4rem .7rem}.py-vars-table{border-collapse:collapse;width:100%;margin-top:.4rem;font-size:.84rem}.py-vars-table th,.py-vars-table td{text-align:left;border-top:1px solid var(--border);vertical-align:top;padding:.2rem .5rem .2rem 0}.py-var-summary{white-space:pre-wrap;word-break:break-word}.py-setup{margin:.6rem 0}.py-setup.card{padding:.6rem .9rem}.py-setup .code-block{margin:.5rem 0 0}.py-files{padding:.8rem 1rem}.py-files-group{margin-top:.6rem}.py-files-group-title{margin-bottom:.2rem;font-size:.88rem;font-weight:600}.py-files .muted{font-weight:400}.py-file summary{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.3rem;padding:.12rem 0;list-style-position:inside;display:grid}.py-file-name{overflow-wrap:anywhere;min-width:0}.py-file summary .btn{padding:.05rem .45rem}.py-folder-files{border-left:2px solid var(--border);margin:.2rem 0 .4rem .3rem;padding-left:1rem}.py-file[open]{margin-bottom:.5rem}.py-file-cols{flex-wrap:wrap;gap:.25rem;margin:.3rem 0;display:flex}.py-file .py-table-wrap{max-height:12rem}.py-expected{margin-top:.6rem}.cm-error-line{background:color-mix(in srgb, var(--danger) 14%, transparent)!important}.level-note{font-weight:400}.feedback-md p{margin:.25rem 0 0}.feedback-md code{color:inherit}.tutor-toggle-row{margin-bottom:.6rem}.py-playground .intro-card p{margin-top:0}
