@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/brand/fonts/jetbrains-mono-400.ttf) format("truetype")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/brand/fonts/jetbrains-mono-500.ttf) format("truetype")}@font-face{font-family:Montserrat;font-style:normal;font-weight:400;font-display:swap;src:url(/brand/fonts/montserrat-400.ttf) format("truetype")}@font-face{font-family:Montserrat;font-style:normal;font-weight:500;font-display:swap;src:url(/brand/fonts/montserrat-500.ttf) format("truetype")}@font-face{font-family:Montserrat;font-style:normal;font-weight:600;font-display:swap;src:url(/brand/fonts/montserrat-600.ttf) format("truetype")}@font-face{font-family:Montserrat;font-style:normal;font-weight:700;font-display:swap;src:url(/brand/fonts/montserrat-700.ttf) format("truetype")}@font-face{font-family:Montserrat;font-style:normal;font-weight:800;font-display:swap;src:url(/brand/fonts/montserrat-800.ttf) format("truetype")}@font-face{font-family:Montserrat;font-style:normal;font-weight:900;font-display:swap;src:url(/brand/fonts/montserrat-900.ttf) format("truetype")}.diagnostic-welcome{max-width:720px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:24px;text-align:center}.diagnostic-welcome-mascot{width:200px;height:200px;object-fit:contain}.diagnostic-welcome h1{font-size:3rem;line-height:1.2;font-weight:900;color:var(--purple-dark);margin-bottom:12px}.welcome-subtitle{font-size:1.25rem;font-weight:600;color:var(--text-muted);margin:0}.welcome-message{text-align:left;margin:0;width:100%}.welcome-message p:last-child{margin-bottom:0}.welcome-action{max-width:100%}@media(max-width:600px){.diagnostic-welcome-mascot{width:144px;height:144px}.diagnostic-welcome h1{font-size:2rem}}:root{--bg: #ffffff;--bg-elevated: #f8f5fb;--purple: #632895;--purple-dark: #3d1560;--yellow: #ffd84d;--yellow-hover: #ffc800;--yellow-glow: rgba(255, 216, 77, .3);--text: #1a1028;--text-muted: #6b5f7a;--border: rgba(99, 40, 149, .1);--border-strong: rgba(99, 40, 149, .18);font-family:Montserrat,-apple-system,Arial,sans-serif;color:var(--text);background:var(--bg);font-synthesis:none;line-height:1.5;font-size:16px}*{box-sizing:border-box}body{margin:0;overflow-wrap:anywhere}.page-heading>div{min-width:0;max-width:100%}header{position:relative;min-height:56px;background:#ffffffd9;color:var(--text-muted);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:24px;padding:8px 48px;flex-wrap:wrap;font-size:.75rem}.brand{display:flex;align-items:center;gap:12px;margin-right:auto}.brand strong{color:var(--purple);font-size:.875rem;font-weight:800;letter-spacing:2px}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:var(--yellow);color:var(--purple-dark);font-weight:800;box-shadow:0 0 20px var(--yellow-glow)}.brand-caption{font-weight:500}body{background:radial-gradient(circle at 50% -100px,rgba(99,40,149,.06),transparent 600px);-webkit-font-smoothing:antialiased}main{max-width:1280px;margin:0 auto;padding:40px 32px 64px;min-height:calc(100vh - 160px)}footer{max-width:1280px;margin:auto;padding:24px 32px;color:#505968;border-top:1px solid #d8dbe2;font-size:.875rem}h1{font-size:2rem;line-height:2.5rem;margin:0 0 24px;font-weight:700}h2{font-size:1.5rem;line-height:1.875rem;margin:0 0 16px}h3{font-size:1.125rem;line-height:1.5rem;margin:24px 0 12px}h4{font-size:1rem;line-height:1.5rem}p{margin:0 0 16px}button,input,textarea{font:inherit}button{border:1px solid transparent;border-radius:100px;background:var(--yellow);color:var(--purple-dark);box-shadow:0 0 40px var(--yellow-glow);min-height:48px;padding:12px 24px;cursor:pointer;line-height:1.5rem;font-weight:600;white-space:normal}button:hover:not(:disabled){filter:brightness(.92)}button.secondary{color:var(--purple-dark);background:transparent;border-color:var(--border-strong);box-shadow:none}button:disabled{color:#5c6068;background:#e5e5e9;border-color:#c8cad0;cursor:not-allowed}:focus-visible{outline:3px solid #562291;outline-offset:4px}header :focus-visible{outline-color:var(--purple)}button:active:not(:disabled){transform:translateY(1px)}.card{background:linear-gradient(145deg,#6328950f,#63289505);border:1px solid var(--border);border-radius:20px;padding:24px;margin-bottom:24px;min-width:0}.auth-layout{display:flex;flex-direction:column;gap:32px;max-width:512px;margin:0 auto}.intro{text-align:center}.welcome-mascot{display:block;width:200px;height:200px;object-fit:contain;margin:0 auto 24px}.intro h1{font-size:2rem;line-height:2.5rem;font-weight:900;color:var(--purple-dark);margin-bottom:12px}.intro>p:not(.eyebrow){font-size:1rem;line-height:1.5rem;color:var(--text-muted);margin:0}.login-card{width:100%;padding:32px}.login-card h2{font-size:1.25rem}.eyebrow{font-size:.875rem;line-height:1.125rem;letter-spacing:1px;font-weight:700;color:#62418a;margin-bottom:16px}.field{display:flex;flex-direction:column;gap:8px;margin:0 0 20px;font-weight:600}input,textarea{min-width:0;width:100%;border:1px solid #798392;background:#fff;border-radius:10px;padding:10px 12px;color:#0f1c2c;font-weight:400}input{border-radius:12px;min-height:48px}textarea{resize:vertical;line-height:1.5rem}.code{background:#faf9fc;font-family:ui-monospace,Consolas,monospace;-moz-tab-size:4;tab-size:4}.muted,small{color:#505968;font-size:.875rem;line-height:1.375rem}small{display:block;margin-top:8px;overflow-wrap:anywhere}.auth-layout form>button{width:100%;margin:4px 0 16px}.narrow{max-width:720px;margin:0 auto}.page-heading{display:flex;gap:24px;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap}.page-heading h1,.page-heading p{margin-bottom:0}.page-heading .eyebrow{margin-bottom:12px}.actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:20px 0}.actions:last-child{margin-bottom:0}.admin-grid{display:grid;grid-template-columns:minmax(280px,1fr) minmax(0,2fr);gap:24px;align-items:start}.students{list-style:none;padding:0;margin:0}.students>li{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:20px 0;border-bottom:1px solid #d8dbe2}.students p{margin:4px 0 8px}.students strong{font-size:1.125rem;overflow-wrap:anywhere}.tag{display:inline-block;font-size:.875rem;line-height:1.375rem;padding:4px 8px;background:#efefef;border-radius:8px}.notice{background:#f2edf9;border:1px solid #b7a1d2;border-radius:12px;padding:16px;margin:16px 0;overflow-wrap:anywhere}.error{background:#fff0f6;border-color:#a53663;color:#762046}.credential{border:2px solid rgb(131 58 224)}.credential code{font-size:1.125rem;overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}fieldset{border:0;padding:0;min-width:0;margin:0 0 20px}legend{font-size:1.5rem;line-height:2rem;font-weight:700;margin-bottom:16px;white-space:pre-wrap}.choice{display:flex;align-items:center;gap:12px;border:1px solid #a2a8b3;padding:12px 16px;border-radius:10px;margin:12px 0;min-height:48px;cursor:pointer}.choice:has(:checked){border-color:#833ae0;background:#f2edf9}.choice input{width:20px;height:20px;min-height:20px;accent-color:rgb(131 58 224);flex-shrink:0}progress{width:100%;height:12px;accent-color:rgb(131 58 224);margin-bottom:24px}.plan-summary{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center;border-top:4px solid rgb(131 58 224)}.plan-list{display:flex;flex-direction:column;gap:16px;list-style:none;padding:0;margin:32px 0}.plan-list li{display:flex;align-items:center;gap:16px}.step{border:2px solid rgb(131 58 224);border-radius:50%;display:grid;place-items:center;width:44px;height:44px;flex-shrink:0;font-weight:700;background:#fff}.workspace{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);gap:0;align-items:stretch;max-width:1100px;margin:0 auto 32px;border-radius:20px;overflow:hidden;background:#1a1028;border:1px solid var(--border-strong);box-shadow:0 40px 120px #63289533}.workspace:before{content:"";grid-column:1 / -1;height:40px;background:radial-gradient(circle at 22px 20px,#ff5f57 5px,transparent 6px),radial-gradient(circle at 42px 20px,#febc2e 5px,transparent 6px),radial-gradient(circle at 62px 20px,#28c840 5px,transparent 6px)}.workspace>.card{border:0;border-radius:0;margin:0;padding:32px}.workspace .lesson{background:linear-gradient(180deg,var(--purple),var(--purple-dark));color:#fff}.workspace .editor{background:#1a1028;color:#fff}.editor .code{background:#1e1e2e;color:#cdd6f4}.editor .secondary,.lesson .secondary{color:#fff;border-color:#9788ad}.editor .notice{color:var(--text)}.editor .error{color:#762046}.editor .muted,.editor small{color:#ddd3e9}.editor .notice small{color:var(--text-muted)}.editor pre{background:#0f0a1a;color:#cdd6f4}.editor :focus-visible,.lesson :focus-visible{outline-color:var(--yellow)}code,pre,.code{font-family:JetBrains Mono,Consolas,monospace}main:has(.plan-summary),main:has(.plan-list){max-width:720px}.plan-summary{grid-template-columns:1fr;border-top:1px solid var(--border)}.step{background:var(--yellow);color:var(--purple-dark);border-color:var(--yellow)}.eyebrow{color:var(--purple)}button:disabled{box-shadow:none}.editor button:disabled{color:#5c6068}@media(max-width:900px){.workspace.workspace{gap:0}}@media(max-width:600px){.welcome-mascot{width:120px;height:120px;margin-bottom:16px}.workspace>.card{padding:24px 16px}}.prose{white-space:pre-wrap;overflow-wrap:anywhere}.lesson .prose+h2{margin-top:24px}.lesson li{margin-bottom:12px}.review-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px}.review-grid h3{margin-top:0}pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f6f5f8;border:1px solid #d8dbe2;padding:16px;border-radius:10px;max-height:400px;overflow:auto;font-family:ui-monospace,Consolas,monospace}code{overflow-wrap:anywhere}summary{cursor:pointer;min-height:36px;font-weight:600}.history-list{list-style:none;padding:0}hr{border:0;border-top:1px solid #d8dbe2;margin:24px 0}.skip{position:absolute;left:16px;top:-100px;z-index:10;padding:12px 24px;background:#fff;color:#562291}.skip:focus{top:12px}@media(max-width:900px){.auth-layout,.admin-grid,.workspace,.plan-summary{grid-template-columns:1fr;gap:24px}.auth-layout{max-width:640px;margin:0 auto}.intro h1{font-size:2rem;line-height:2.5rem}.intro{padding-top:24px}.review-grid{grid-template-columns:1fr;gap:24px}}@media(max-width:480px){header{padding:16px;gap:12px}.brand{width:100%}main{padding:24px 16px 40px}footer{padding:24px 16px}.card{padding:20px 16px}.students>li{align-items:stretch;flex-direction:column}.actions>button{width:100%}.page-heading{gap:16px}h1{font-size:1.75rem;line-height:2.25rem}h2,legend{font-size:1.375rem;line-height:1.875rem}}.algo-help{margin:24px 0;min-width:0}.algo-chat{margin-top:16px;padding:16px;border:1px solid #9788ad;border-radius:12px;background:#211330;color:#fff;min-width:0}.algo-chat header{padding:0 0 12px;background:transparent;color:#fff;gap:12px;font-size:1rem;border-color:#9788ad}.algo-chat header img{width:48px;height:48px;flex:none;object-fit:contain}.algo-chat header h3{margin:0;flex:1;min-width:0}.algo-chat header button{padding:8px 12px}.algo-chat [role=log]{max-height:24rem;overflow:auto;padding:8px;border-bottom:1px solid #9788ad}.chat-question{padding:12px;border-radius:12px;background:#43245e;color:#fff}.algo-chat small{display:block;margin-bottom:16px}.algo-help details{margin:12px 0}.profile-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:12px;margin:16px 0 24px}.profile-options .choice{margin:0;align-items:flex-start}.profile-options small{display:block;margin-top:8px}.profile-identity{display:flex;flex-wrap:wrap;gap:16px;background:var(--purple-dark);color:#fff}.profile-identity small{flex-basis:100%;color:#fff}.python-editor{margin-bottom:24px;min-width:0}.code-input{display:grid;grid-template-columns:3.5em minmax(0,1fr);border:1px solid var(--border-strong);border-radius:12px;overflow:hidden;background:#faf8fc}.code-input .code,.code-input .line-numbers{font:.875rem/1.5rem ui-monospace,Consolas,monospace;padding:12px;margin:0;border:0;border-radius:0;white-space:pre;-moz-tab-size:4;tab-size:4}.code-input .code{min-width:0;width:100%;resize:vertical;background:#fff;color:var(--text)}.code-input .line-numbers{color:#6b5f7a;background:#faf8fc;text-align:right;overflow:hidden;max-height:408px;-webkit-user-select:none;user-select:none}.syntax-preview{font:.875rem/1.5rem ui-monospace,Consolas,monospace}.lesson pre,.editor .syntax-preview{background:#fff;color:var(--text)}.py-keyword{color:#632895;font-weight:700}.py-string{color:#22643f}.py-comment{color:#6b5f7a;font-style:italic}.py-number{color:#903a15}.module-content{flex:1;min-width:0}.module-content h3{margin:0 0 8px}.module-duration{color:var(--text-muted);font-size:.875rem}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}button:active:not(:disabled){transform:none}}
