:root{--bg:#f7f6f2;--surface:#fff;--ink:#111418;--ink-2:#3a404a;--muted:#6b717c;--line:#e5e3dc;--line-2:#d7d4ca;--yellow:#ffd43b;--blue:#2d5bd8;--green:#1f9d55;--red:#d64545;--ed-bg:#111418;--ed-bg-2:#171b21;--ed-line:#242931;--ed-text:#e6e8eb;--ed-muted:#7c8490;--radius:16px;--font:"Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"Geist Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--ease:cubic-bezier(.2, .7, .2, 1);--check-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.3l2.3 2.3 4.7-5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");--cross-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 5.5l5 5M10.5 5.5l-5 5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E")}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.55}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}ul,ol{margin:0;padding:0;list-style:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}code,pre{font-family:var(--mono)}:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:6px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.wrap{width:100%;max-width:1180px;margin:0 auto;padding:0 24px}.eyebrow{font-family:var(--mono);color:var(--muted);margin-bottom:18px;font-size:13px}h1{letter-spacing:-.045em;font-size:clamp(40px,5.4vw,64px);font-weight:600;line-height:1.02}h2{letter-spacing:-.035em;font-size:clamp(30px,3.6vw,44px);font-weight:600;line-height:1.08}h1,h2{text-wrap:balance}h3{letter-spacing:-.02em;font-size:18px;font-weight:600}.marker{background-image:linear-gradient(var(--yellow), var(--yellow));transition:background-size 1s var(--ease) .5s;background-position:0 88%;background-repeat:no-repeat;background-size:0% 34%;margin:0 -2px;padding:0 2px}.is-in .marker{background-size:100% 34%}.caret{background:var(--yellow);vertical-align:-.18em;width:2px;height:1.1em;margin-left:1px;animation:1.05s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fieldErrorIn{0%{opacity:0;transform:translateY(-3px)}}@keyframes ring{0%{box-shadow:0 0 #ffd43be6}70%,to{box-shadow:0 0 0 8px #ffd43b00}}.nav{z-index:50;-webkit-backdrop-filter:saturate(160%)blur(12px);background:#f7f6f2d1;border-bottom:1px solid #0000;transition:border-color .25s;position:sticky;top:0}.nav.scrolled{border-bottom-color:var(--line)}.nav-inner{align-items:center;gap:32px;height:68px;display:flex}.tok-keyword{color:#ffb86b}.tok-string{color:#a5d6a7}.tok-function{color:#8ab4ff}.tok-number{color:#f5a3c7}.tok-comment{color:#6b7380;font-style:italic}.ed-label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ed-muted);margin-bottom:6px;font-size:11px;display:block}.guide-code,.code-editor,.terminal-body,.ide-checks,.expected pre,.code{--scroll-thumb:#3a414c;--scroll-thumb-hover:#555e6b}.ide-side,.modal,.nb-code{--scroll-thumb:var(--line-2);--scroll-thumb-hover:#b9b4a7}:where(.guide-code,.code-editor,.terminal-body,.ide-checks,.expected pre,.code,.ide-side,.modal,.nb-code)::-webkit-scrollbar{width:12px;height:12px}:where(.guide-code,.code-editor,.terminal-body,.ide-checks,.expected pre,.code,.ide-side,.modal,.nb-code)::-webkit-scrollbar-track{background:0 0}:where(.guide-code,.code-editor,.terminal-body,.ide-checks,.expected pre,.code,.ide-side,.modal,.nb-code)::-webkit-scrollbar-corner{background:0 0}:where(.guide-code,.code-editor,.terminal-body,.ide-checks,.expected pre,.code,.ide-side,.modal,.nb-code)::-webkit-scrollbar-thumb{background-color:var(--scroll-thumb);background-clip:padding-box;border:4px solid #0000;border-radius:999px}:where(.guide-code,.code-editor,.terminal-body,.ide-checks,.expected pre,.code,.ide-side,.modal,.nb-code)::-webkit-scrollbar-thumb:hover{background-color:var(--scroll-thumb-hover);border-width:3px}@supports not selector(::-webkit-scrollbar){.guide-code,.code-editor,.terminal-body,.ide-checks,.expected pre,.code,.ide-side,.modal,.nb-code{scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent}}.logo{letter-spacing:-.03em;color:var(--ink);align-items:center;gap:9px;font-size:19px;font-weight:600;display:inline-flex}.logo-sm{gap:8px;font-size:16px}.btn{letter-spacing:-.005em;white-space:nowrap;height:46px;transition:transform .2s var(--ease), background-color .2s, box-shadow .2s, border-color .2s;border-radius:999px;align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:500;display:inline-flex}.btn:active{transform:translateY(1px)scale(.98)}.btn .arr{transition:transform .25s var(--ease)}.btn:hover .arr{transform:translate(3px)}.btn-sm{height:38px;padding:0 16px;font-size:14px}.btn-dark{background:var(--ink);color:#fff;box-shadow:inset 0 1px #ffffff1f,0 1px 2px #11141833}.btn-dark:hover{background:#262b33}.btn-light{background:var(--surface);border:1px solid var(--line-2)}.btn-light:hover{border-color:var(--ink)}.btn-yellow{background:var(--yellow);color:var(--ink)}.btn-yellow:hover{background:#ffdc5e}.text-link{color:var(--ink-2);align-items:center;gap:6px;font-size:15px;font-weight:500;display:inline-flex}.text-link svg{transition:transform .25s var(--ease)}.text-link:hover{color:var(--ink)}.text-link:hover svg{transform:translate(3px)}.text-btn{color:var(--ink-2);text-decoration:underline;-webkit-text-decoration-color:var(--line-2);text-decoration-color:var(--line-2);text-underline-offset:3px;font-size:13.5px;font-weight:500}.text-btn:hover{color:var(--ink);-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.text-btn.is-strong{color:var(--ink);-webkit-text-decoration-color:var(--yellow);text-decoration-color:var(--yellow);text-decoration-thickness:2px}.form-error{color:var(--red);animation:formErrorIn .25s var(--ease);background:#fdecec;border-radius:10px;padding:10px 12px;font-size:14px}@keyframes formErrorIn{0%{opacity:0;transform:translateY(-3px)}}.form-success{color:var(--green);font-size:14px}select.select{height:38px;font:inherit;color:var(--ink);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 6l4 4 4-4' fill='none' stroke='%236b717c' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 10px center / 14px no-repeat;border:1px solid var(--line-2);appearance:none;cursor:pointer;border-radius:10px;outline:none;padding:0 34px 0 12px;font-size:14px;transition:border-color .2s,box-shadow .2s}select.select:hover{border-color:#c4c0b4}select.select:focus{border-color:var(--ink);box-shadow:0 0 0 4px #11141812}.segmented{background:var(--bg);border:1px solid var(--line);border-radius:11px;gap:2px;padding:3px;display:inline-flex}.segmented button{color:var(--muted);border-radius:8px;padding:6px 14px;font-size:14px;transition:color .2s,background-color .2s,box-shadow .2s}.segmented button:hover{color:var(--ink)}.segmented button[aria-selected=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #11141814, 0 0 0 1px var(--line)}.section{padding:96px 0}section[id]{scroll-margin-top:40px}.section-head{margin-bottom:48px}.section-head.split{justify-content:space-between;align-items:flex-end;gap:40px;display:flex}.reveal{opacity:0;transition:opacity .7s var(--ease), transform .7s var(--ease);transition-delay:var(--d,0s);transform:translateY(14px)}.reveal.is-in{opacity:1;transform:none}@media (width<=980px){.section-head.split{flex-direction:column;align-items:flex-start;gap:16px}}@media (width<=640px){.wrap{padding:0 16px}.nav-inner{gap:16px;height:60px}.section{padding:72px 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.field label{margin-bottom:6px;font-size:14px;font-weight:500;display:block}.field-control{position:relative}.field input{width:100%;height:46px;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:12px;outline:none;padding:0 14px;font-size:15px;transition:border-color .2s,box-shadow .2s}.field input::placeholder{color:#a3a8b0}.field input:disabled,.field input:disabled:hover{color:var(--muted);background:var(--bg);border-color:var(--line);cursor:not-allowed}.field input:hover{border-color:#c4c0b4}.field input:focus{border-color:var(--ink);box-shadow:0 0 0 4px #11141812}.field-control:has(.field-toggle) input{padding-right:64px}.field-toggle{color:var(--muted);border-radius:8px;padding:5px 9px;font-size:13px;font-weight:500;transition:background-color .2s,color .2s;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.field-toggle:hover{background:var(--bg);color:var(--ink)}.field.has-error input{border-color:var(--red)}.field.has-error input:focus{box-shadow:0 0 0 4px #d645451f}.field-error{color:var(--red);animation:fieldErrorIn .25s var(--ease);margin-top:6px;font-size:13px}.modal{background:var(--surface);width:min(420px,100% - 32px);max-height:calc(100% - 32px);color:var(--ink);box-shadow:0 0 0 1px var(--line), 0 40px 80px -24px #11141866;opacity:0;transition:opacity .25s var(--ease), transform .35s var(--ease), overlay .35s allow-discrete, display .35s allow-discrete;border:0;border-radius:20px;margin:auto;padding:0;overflow:auto;transform:translateY(12px)scale(.98)}.modal[open]{opacity:1;transform:none}.modal::backdrop{-webkit-backdrop-filter:blur();backdrop-filter:blur();transition:background-color .3s, backdrop-filter .3s, overlay .3s allow-discrete, display .3s allow-discrete;background:#11141800}.modal[open]::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#11141866}@starting-style{.modal[open]{opacity:0;transform:translateY(12px)scale(.98)}.modal[open]::backdrop{-webkit-backdrop-filter:blur();backdrop-filter:blur();background:#11141800}}html:has(.modal[open]){overflow:hidden}.modal-panel{padding:32px;position:relative}.modal-close{width:34px;height:34px;color:var(--muted);border-radius:50%;place-items:center;transition:background-color .2s,color .2s;display:grid;position:absolute;top:14px;right:14px}.modal-close:hover{background:var(--bg);color:var(--ink)}.modal-wide{width:min(780px,100% - 32px)}.modal-wide .modal-panel{padding:0}.modal-drawer{border-radius:20px 0 0 20px;width:min(440px,100%);height:100%;max-height:100%;margin:0 0 0 auto;transform:translate(32px)}.modal-drawer[open]{transform:none}@starting-style{.modal-drawer[open]{opacity:0;transform:translate(32px)}}.modal-drawer .modal-panel{flex-direction:column;min-height:100%;display:flex}@media (width<=640px){.modal-panel{padding:28px 20px 24px}.modal-drawer{border-radius:0}}.toggle{background:var(--line-2);width:40px;height:24px;transition:background-color .2s var(--ease);border-radius:999px;flex:none;position:relative}.toggle-thumb{background:var(--surface);width:18px;height:18px;transition:transform .25s var(--ease);border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #11141840}.toggle[aria-checked=true]{background:var(--ink)}.toggle[aria-checked=true] .toggle-thumb{transform:translate(16px)}.settings{grid-template-columns:200px minmax(0,1fr);height:min(560px,100dvh - 64px);display:grid}.settings-nav{background:var(--bg);border-right:1px solid var(--line);border-radius:20px 0 0 20px;padding:28px 14px}.settings-nav h2{letter-spacing:-.025em;margin-bottom:18px;padding:0 10px;font-size:20px}.settings-tabs{flex-direction:column;gap:2px;display:flex}.settings-tabs button{text-align:left;color:var(--ink-2);border-radius:9px;padding:8px 10px;font-size:14.5px;transition:background-color .2s,color .2s,box-shadow .2s}.settings-tabs button:hover{color:var(--ink);background:#1114180a}.settings-tabs button[aria-selected=true]{color:var(--ink);background:var(--surface);box-shadow:0 0 0 1px var(--line), 0 1px 2px #1114180d;font-weight:500}.settings-body{flex-direction:column;min-width:0;min-height:0;display:flex}.settings-content{min-height:0;animation:settingsIn .25s var(--ease) both;flex:1;padding:28px 32px 8px;overflow-y:auto}@keyframes settingsIn{0%{opacity:0;transform:translateY(4px)}}.settings-content h3{margin-bottom:8px;font-size:18px}.settings-fields{grid-template-columns:1fr 1fr;gap:14px;margin:10px 0 8px;display:grid}.setting-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding:16px 0;display:flex}.setting-row:last-child{border-bottom:0}.setting-text{min-width:0}.setting-label{font-size:15px;font-weight:500;display:block}.setting-desc{color:var(--muted);margin-top:2px;font-size:13.5px;display:block}.setting-control{flex:none}.settings-keys{color:var(--muted);font-size:13px}.settings-keys kbd{text-align:center;min-width:24px;font-family:var(--mono);color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-bottom-width:2px;border-radius:6px;padding:2px 7px;font-size:12px;display:inline-block}.btn-danger{background:var(--surface);color:var(--red);border:1px solid #f0c4c4}.btn-danger:hover{border-color:var(--red);background:#fdecec}.settings-footer{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:18px;padding:14px 32px;display:flex}.settings-subform{background:var(--bg);border:1px solid var(--line);max-width:420px;animation:settingsIn .25s var(--ease) both;border-radius:14px;flex-direction:column;gap:14px;margin:4px 0 16px;padding:18px;display:flex}.settings-subform.is-danger{border-color:#f0c4c4}.settings-subform-text{color:var(--ink-2);font-size:14px}.settings-subform-actions{justify-content:flex-end;align-items:center;gap:18px;display:flex}.settings-error{margin-right:auto;padding:6px 10px;font-size:13.5px}@media (width<=640px){.settings{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);height:calc(100dvh - 32px)}.settings-nav{border-right:0;border-bottom:1px solid var(--line);border-radius:20px 20px 0 0;padding:22px 16px 12px}.settings-nav h2{margin-bottom:12px;padding:0}.settings-tabs{scrollbar-width:none;flex-direction:row;overflow-x:auto}.settings-tabs button{flex:none}.settings-content{padding:20px 16px 8px}.settings-fields{grid-template-columns:1fr}.setting-row{flex-direction:column;align-items:flex-start;gap:10px}.settings-footer{flex-wrap:wrap;padding:12px 16px}.settings-error{flex-basis:100%}.settings-subform{max-width:none}}.app-main{padding:48px 0 96px}.app-links{gap:4px;display:flex}.app-links a{color:var(--ink-2);border-radius:999px;padding:7px 14px;font-size:15px;transition:background-color .2s,color .2s}.app-links a:hover{color:var(--ink);background:#1114180d}.app-links a.active{color:var(--ink);background:var(--surface);box-shadow:0 0 0 1px var(--line), 0 1px 2px #1114180d}.user-menu{margin-left:auto;position:relative}.user-trigger{color:var(--ink-2);border:1px solid #0000;border-radius:999px;align-items:center;gap:10px;padding:4px 10px 4px 4px;transition:background-color .2s,border-color .2s;display:flex}.user-trigger:hover,.user-trigger[aria-expanded=true]{background:var(--surface);border-color:var(--line)}.avatar{background:var(--yellow);width:32px;height:32px;color:var(--ink);border-radius:50%;place-items:center;font-size:13px;font-weight:600;display:grid}.user-name{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;max-width:140px;font-size:15px;font-weight:500;overflow:hidden}.user-dropdown{background:var(--surface);width:240px;box-shadow:0 0 0 1px var(--line), 0 20px 40px -16px #11141840;animation:dropdownIn .2s var(--ease);transform-origin:100% 0;border-radius:14px;padding:6px;position:absolute;top:calc(100% + 8px);right:0}@keyframes dropdownIn{0%{opacity:0;transform:translateY(-4px)scale(.98)}}.user-info{border-bottom:1px solid var(--line);margin-bottom:6px;padding:10px 12px 12px}.user-info b{font-size:14px;font-weight:600;display:block}.user-info span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;display:block;overflow:hidden}.user-dropdown a,.user-dropdown button{text-align:left;width:100%;color:var(--ink-2);border-radius:9px;padding:9px 12px;font-size:14px;transition:background-color .15s,color .15s;display:block}.user-dropdown a:hover,.user-dropdown button:hover{background:var(--bg);color:var(--ink)}.page-head{margin-bottom:40px}.page-title{letter-spacing:-.035em;font-size:clamp(30px,3.6vw,40px);font-weight:600;line-height:1.1}.page-sub{color:var(--muted);margin-top:10px;font-size:17px}@media (width<=640px){.app-main{padding:32px 0 72px}.app-nav .logo span{display:none}.app-links{scrollbar-width:none;flex:1;min-width:0;padding-right:16px;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000)}.app-links::-webkit-scrollbar{display:none}.app-links a{white-space:nowrap;flex:none;padding:7px 10px}.user-menu{flex:none;margin-left:0}.user-name,.user-trigger svg{display:none}.user-trigger{padding:3px}}.progress{border-radius:3px;height:6px;overflow:hidden}.progress i{height:100%;width:var(--value);border-radius:inherit;transform-origin:0;animation:progressIn 1s var(--ease) .15s both;display:block}@keyframes progressIn{0%{transform:scaleX(0)}}.progress-light{background:#ecebe5}.progress-light i{background:var(--ink)}.progress-dark{background:#2a3039}.progress-dark i{background:var(--yellow)}.classroom-head{justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.class-code{background:var(--surface);border:1px solid var(--line);color:var(--muted);border-radius:14px;flex:none;align-items:center;gap:12px;padding:10px 14px;font-size:13.5px;display:flex}.class-code code{letter-spacing:.06em;color:var(--ink);font-size:16px;font-weight:500}.class-switcher{flex-wrap:wrap;gap:10px;margin:-12px 0 32px;display:flex}.class-switcher button{text-align:left;border:1px solid var(--line-2);background:0 0;border-radius:14px;flex-direction:column;align-items:flex-start;gap:1px;padding:10px 16px;transition:border-color .2s,background-color .2s,box-shadow .2s;display:flex}.class-switcher button b{font-size:14.5px;font-weight:600}.class-switcher button span{color:var(--muted);font-size:12.5px}.class-switcher button:hover{border-color:var(--ink)}.class-switcher button[aria-pressed=true]{background:var(--surface);border-color:var(--ink);box-shadow:0 0 0 3px #ffd43b73}.classroom-toolbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.classroom-tabs{margin-bottom:20px}.classroom-toolbar .classroom-tabs{margin-bottom:0}.classroom-tabs{scrollbar-width:none;max-width:100%;overflow-x:auto}.classroom-tabs button{white-space:nowrap;flex:none}.classroom-tabs .tab-count{font-family:var(--mono);color:var(--muted);margin-left:4px;font-size:12px}.classroom-panel{animation:classroomIn .35s var(--ease) both}@keyframes classroomIn{0%{opacity:0;transform:translateY(6px)}}.classroom-empty{color:var(--muted);padding:24px 0}.class-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:28px;display:grid}.class-stats div{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}.class-stats span{color:var(--muted);font-size:14px;display:block}.class-stats b{letter-spacing:-.03em;margin-top:2px;font-size:28px;font-weight:600;line-height:1.2;display:block}.assignment-list{flex-direction:column;gap:12px;max-width:920px;display:flex}.assignment-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.assignment-head{text-align:left;align-items:center;gap:20px;width:100%;padding:18px 20px;transition:background-color .2s;display:flex}button.assignment-head:hover{background:#fbfaf7}.assignment-info{flex:1;min-width:0}.assignment-info h3{font-size:16.5px}.assignment-info p{color:var(--muted);margin-top:2px;font-size:14px}.assignment-meta{flex:none;align-items:center;gap:18px;display:flex}.assignment-progress{align-items:center;gap:10px;width:150px;display:flex}.assignment-progress.is-wide{width:220px}.assignment-progress .progress{flex:1}.assignment-progress span{font-family:var(--mono);color:var(--muted);white-space:nowrap;font-size:12px}.assignment-card.is-done .progress i{background:var(--green)}.assignment-chevron{border:1px solid var(--line);width:30px;height:30px;color:var(--ink-2);transition:transform .25s var(--ease), background-color .2s;border-radius:50%;flex:none;place-items:center;display:grid;transform:rotate(90deg)}.assignment-head[aria-expanded=true] .assignment-chevron{background:var(--bg);transform:rotate(-90deg)}.status-overdue{color:var(--red);background:#fdecec;border-color:#f3c9c9}.status-overdue i{background:var(--red);border:0;width:8px;height:8px;margin:0 2px}.due-chip{white-space:nowrap;color:var(--ink-2);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:3px 10px;font-size:12.5px;font-weight:500}.due-chip.is-closed{color:var(--muted);background:0 0;border-style:dashed}.assignment-questions{border-top:1px solid var(--line);animation:classroomIn .25s var(--ease) both;padding:6px 8px 8px}.assignment-questions a{border-radius:10px;align-items:center;gap:12px;padding:10px 12px;font-size:15px;transition:background-color .15s;display:flex}.assignment-questions a:hover{background:var(--bg)}.aq-tick{border:1.5px dashed var(--line-2);color:#fff;border-radius:50%;flex:none;place-items:center;width:18px;height:18px;display:grid}.assignment-questions a.is-done .aq-tick{background:var(--green);border:0}.assignment-questions a.is-done .aq-title{color:var(--ink-2)}.aq-title{flex:1;min-width:0}.aq-kind{font-family:var(--mono);color:var(--muted);font-size:11.5px}.aq-arrow{color:var(--muted)}.leaderboard{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);max-width:720px;overflow:hidden}.leaderboard-head,.leaderboard li{grid-template-columns:56px minmax(0,1fr) minmax(140px,220px);align-items:center;gap:12px;padding:0 20px;display:grid}.leaderboard-head{height:40px;color:var(--muted);border-bottom:1px solid var(--line);font-size:12.5px}.leaderboard-head span:last-child{text-align:right}.leaderboard li{border-bottom:1px solid var(--line);height:56px}.leaderboard li:last-child{border-bottom:0}.leaderboard li.is-you{box-shadow:inset 3px 0 0 var(--yellow);background:#fff7d1}.rank{width:28px;height:28px;font-family:var(--mono);color:var(--muted);border-radius:50%;place-items:center;font-size:13px;display:grid}.rank-1{background:var(--yellow);color:var(--ink);font-weight:600}.rank-2,.rank-3{background:var(--bg);color:var(--ink);border:1px solid var(--line-2);font-weight:500}.lb-student{align-items:center;gap:10px;min-width:0;display:flex}.lb-avatar{width:32px;height:32px;color:var(--ink-2);background:var(--bg);border:1px solid var(--line);border-radius:50%;flex:none;place-items:center;font-size:12px;font-weight:600;display:grid}.is-you .lb-avatar{background:var(--yellow);color:var(--ink);border-color:#0000}.lb-name{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:500;overflow:hidden}.you-tag{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;background:var(--ink);color:#fff;border-radius:6px;flex:none;padding:1px 7px;font-size:11px}.lb-score{align-items:center;gap:12px;display:flex}.lb-bar{background:#ecebe5;border-radius:3px;flex:1;height:6px;overflow:hidden}.lb-bar i{border-radius:inherit;background:var(--ink);height:100%;display:block}.is-you .lb-bar i{background:var(--yellow)}.lb-score b{text-align:right;min-width:28px;font-family:var(--mono);font-size:14px;font-weight:500}.student-list{max-width:1000px}.student-list-bar{margin-bottom:14px}.search-input{width:min(320px,100%);height:40px;font:inherit;color:var(--ink);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='7' cy='7' r='4.5' fill='none' stroke='%236b717c' stroke-width='1.6'/%3E%3Cpath d='M10.5 10.5l3 3' stroke='%236b717c' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") 12px center / 15px no-repeat;border:1px solid var(--line-2);border-radius:999px;outline:none;padding:0 14px 0 36px;font-size:14.5px;transition:border-color .2s,box-shadow .2s}.search-input:focus{border-color:var(--ink);box-shadow:0 0 0 4px #11141812}.student-table{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.student-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(140px,1.2fr) 110px 70px;align-items:center;gap:16px;min-height:58px;padding:0 20px;display:grid}.student-row:last-child{border-bottom:0}.student-row.is-head{min-height:40px;color:var(--muted);font-size:12.5px}.sr-cell.muted{color:var(--muted);font-size:14px}.sr-progress{align-items:center;gap:10px;display:flex}.sr-progress .progress{flex:1}.sr-progress b{text-align:right;min-width:24px;font-family:var(--mono);font-size:13px;font-weight:500}.sr-actions{text-align:right}.dialog-title{letter-spacing:-.03em;font-size:24px}.dialog-sub{color:var(--muted);margin-top:4px;font-size:15px}.dialog-form{flex-direction:column;gap:16px;margin-top:22px;display:flex}.dialog-submit{justify-content:center;width:100%}.dialog-actions{justify-content:flex-end;align-items:center;gap:18px;margin-top:4px;display:flex}.assign-dialog{padding:32px}.assign-fields{grid-template-columns:1.4fr 1fr 1fr;gap:14px;display:grid}.assign-fields .select{border-radius:12px;width:100%;height:46px;font-size:15px}.assign-questions{border:1px solid var(--line);background:#fbfaf7;border-radius:14px;margin:0;padding:16px 18px}.assign-questions legend{padding:0 6px;font-size:14px;font-weight:500}.assign-questions legend span{font-family:var(--mono);color:var(--muted);margin-left:6px;font-size:12px;font-weight:400}.assign-group{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 16px;display:grid}.assign-group+.assign-group{margin-top:12px}.assign-group .side-label{grid-column:1/-1;margin:4px 0 2px}.check-row{cursor:pointer;align-items:center;gap:10px;padding:5px 0;font-size:14.5px;display:flex}.check-row input{width:17px;height:17px;accent-color:var(--ink);cursor:pointer}.debug-toggle{z-index:40;background:#ffffffeb;border:1.5px dashed #c9c4b6;border-radius:14px;align-items:center;gap:10px;padding:6px 6px 6px 12px;display:flex;position:fixed;bottom:16px;right:16px;box-shadow:0 10px 30px -14px #11141859}.debug-label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);white-space:nowrap;font-size:11px}.debug-toggle .segmented button{padding:5px 12px;font-size:13px}@media (width<=980px){.assignment-head{flex-wrap:wrap}.assignment-info{flex-basis:100%}.assignment-meta{flex:1;justify-content:space-between}.student-row{grid-template-columns:minmax(0,1.4fr) minmax(140px,1.2fr) 70px}.student-row>:nth-child(2),.student-row>:nth-child(4){display:none}.assign-fields{grid-template-columns:1fr 1fr}.assign-fields>:first-child{grid-column:1/-1}}@media (width<=640px){.classroom-head{flex-direction:column;align-items:flex-start;gap:16px}.class-switcher{margin-top:-16px}.class-switcher button{flex:auto}.class-stats{grid-template-columns:1fr 1fr}.class-stats div:last-child{grid-column:1/-1}.classroom-toolbar{flex-direction:column;align-items:flex-start}.assignment-meta{flex-wrap:wrap;gap:10px}.assignment-progress,.assignment-progress.is-wide{width:100%}.leaderboard-head,.leaderboard li{grid-template-columns:40px minmax(0,1fr) 90px;padding:0 14px}.lb-bar{display:none}.student-row{grid-template-columns:minmax(0,1fr) 90px;padding:0 14px}.student-row>:nth-child(5){display:none}.assign-dialog{padding:28px 20px 24px}.assign-fields,.assign-group{grid-template-columns:1fr}.debug-toggle{justify-content:space-between;left:16px;right:16px}.classroom-panel{padding-bottom:72px}}.level-meter{align-items:flex-end;gap:2px;height:14px;display:inline-flex}.level-meter i{background:var(--line-2);border-radius:1.5px;width:4px}.level-meter i:first-child{height:40%}.level-meter i:nth-child(2){height:60%}.level-meter i:nth-child(3){height:80%}.level-meter i:nth-child(4){height:100%}.level-meter i.on{background:var(--ink)}.dash-grid{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:20px;display:grid}.continue-card{background:var(--ed-bg);color:var(--ed-text);border-radius:20px;flex-direction:column;align-items:flex-start;padding:28px;display:flex;box-shadow:0 0 0 1px #111418e6,0 30px 60px -30px #11141866}.continue-top{align-items:center;gap:12px;width:100%;margin-bottom:28px;display:flex}.continue-label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink);background:var(--yellow);border-radius:6px;padding:3px 8px;font-size:11px}.continue-level{font-family:var(--mono);color:var(--ed-muted);font-size:12px}.continue-card h2{color:#fff;font-size:clamp(26px,3vw,34px)}.continue-card p{color:#b8bec7;margin-top:6px}.continue-progress{align-items:center;gap:14px;width:100%;margin:28px 0;display:flex}.continue-progress .progress{flex:1;max-width:320px}.continue-progress span{font-family:var(--mono);color:var(--ed-muted);white-space:nowrap;font-size:12px}.continue-card .btn{margin-top:auto}.stats-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;flex-direction:column;display:flex}.stat{flex-direction:column;flex:1;justify-content:center;gap:4px;padding:20px 24px;display:flex}.stat+.stat{border-top:1px solid var(--line)}.stat-label{color:var(--muted);font-size:14px}.stat-value{letter-spacing:-.03em;font-size:28px;font-weight:600;line-height:1.1}.stat-value small{color:var(--muted);letter-spacing:0;font-size:16px;font-weight:500}.stat-level{align-items:center;gap:10px;font-size:22px;display:flex}.dash-section{margin-top:56px}.dash-section-head{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:20px;display:flex}.dash-section-head h2{letter-spacing:-.025em;font-size:22px}.level-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.level-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-height:200px;transition:border-color .25s, transform .35s var(--ease), box-shadow .35s var(--ease);flex-direction:column;padding:22px;display:flex}.level-card:hover{border-color:var(--line-2);transform:translateY(-3px);box-shadow:0 18px 36px -24px #1114184d}.level-card-top{font-family:var(--mono);color:var(--muted);align-items:center;gap:10px;margin-bottom:20px;font-size:12px;display:flex}.level-card h3{font-size:18px}.level-card p{color:var(--muted);font-size:14px}.level-card-progress{margin-top:auto;padding-top:22px}.level-card-progress span{color:var(--muted);margin-top:8px;font-size:13px;display:block}@media (width<=980px){.dash-grid{grid-template-columns:1fr}.stats-card{flex-direction:row}.stat+.stat{border-top:0;border-left:1px solid var(--line)}.level-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.continue-card{padding:22px}.continue-card .btn{justify-content:center;width:100%}.stats-card{flex-direction:column}.stat{padding:16px 20px}.stat+.stat{border-left:0;border-top:1px solid var(--line)}.level-grid{grid-template-columns:1fr}.level-card{min-height:0}}.code-editor{cursor:text;min-height:0;font-family:var(--mono);flex:1;padding:14px 0;font-size:14px;line-height:22px;display:flex;overflow:auto}.ce-gutter{z-index:1;text-align:right;color:#424954;-webkit-user-select:none;user-select:none;background:var(--ed-bg);flex:none;width:52px;padding-right:16px;position:sticky;left:0}.ce-gutter span{display:block}.ce-area{flex:1;min-width:max-content;display:grid}.ce-highlight,.ce-area textarea{font:inherit;line-height:inherit;letter-spacing:0;white-space:pre;tab-size:4;border:0;grid-area:1/1;margin:0;padding:0 24px 0 0}.ce-highlight{color:var(--ed-text);pointer-events:none}.ce-area textarea{resize:none;color:#0000;caret-color:var(--yellow);background:0 0;outline:none;overflow:hidden}.ce-area textarea::selection{color:#0000;background:#ffd43b38}.notebook{--nb-line:32px;--nb-margin:72px;--nb-margin-line:#efc7c3;max-width:860px;padding:var(--nb-line) 40px calc(var(--nb-line) * 2) 0;line-height:var(--nb-line);background-color:var(--surface);background-image:linear-gradient(to right, transparent calc(var(--nb-margin) - 1px), var(--nb-margin-line) calc(var(--nb-margin) - 1px), var(--nb-margin-line) calc(var(--nb-margin) + 1px), transparent calc(var(--nb-margin) + 1px));border:1px solid var(--line);box-shadow:0 1px 0 var(--line-2), 0 24px 48px -32px #11141859;border-radius:6px 14px 14px 6px}.notebook.is-compact{--nb-margin:44px;box-shadow:none;border-radius:12px;padding-right:20px}.nb-topic+.nb-topic{margin-top:calc(var(--nb-line) * 2)}.nb-topic-head{margin-left:calc(var(--nb-margin) + 20px);flex-wrap:wrap;justify-content:space-between;align-items:baseline;column-gap:16px;display:flex}.nb-topic-head h2{font-size:22px;line-height:var(--nb-line);letter-spacing:-.025em}.nb-topic-meta{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:6px 14px;font-size:13.5px;display:flex}.nb-topic-meta a{color:var(--ink-2);text-decoration:underline;-webkit-text-decoration-color:var(--line-2);text-decoration-color:var(--line-2);text-underline-offset:3px;font-weight:500}.nb-topic-meta a:hover{color:var(--ink);-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.nb-rules{margin-top:var(--nb-line)}.nb-rule{grid-template-columns:var(--nb-margin) minmax(0, 1fr);column-gap:20px;display:grid}.nb-rule+.nb-rule{margin-top:var(--nb-line)}.nb-number{text-align:right;font-family:var(--mono);color:var(--ink-2);padding-right:14px;font-size:13px}.nb-body{min-width:0}.nb-body h3{font-size:16.5px;line-height:var(--nb-line)}.nb-text{color:var(--ink-2);font-size:16px}.nb-text code,.nb-earn code{color:var(--ink);background:#f0eee7;border-radius:5px;padding:1px 5px;font-size:.88em}.rule-answer{background:linear-gradient(transparent 58%, var(--yellow) 58%, var(--yellow) 92%, transparent 92%);color:var(--ink);padding:0 1px;font-weight:600}.nb-code{border-left:2px solid var(--line-2);font-size:14px;line-height:var(--nb-line);color:var(--ink);white-space:pre;margin:0;padding-left:14px;overflow-x:auto}.nb-code .tok-keyword{color:#b45309}.nb-code .tok-string{color:#1a7f4b}.nb-code .tok-function{color:#2d5bd8}.nb-code .tok-number{color:#be185d}.nb-code .tok-comment{color:#8a8f98}.nb-rule.is-empty .nb-number,.nb-rule.is-empty h3{color:var(--muted)}.nb-rule.is-empty .nb-text{color:#9a9fa8}.rule-blank{vertical-align:-.15em;border-bottom:2px dashed #c9c4b6;height:1em;margin:0 3px;display:inline-block}.nb-earn{color:var(--muted);font-size:14px}.nb-earn a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--yellow);text-decoration-color:var(--yellow);text-underline-offset:3px;font-weight:500;text-decoration-thickness:2px}.nb-earn a:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.nb-note{color:var(--ink-2);font-size:15px;font-style:italic}.nb-note-label{color:#8a6d00;font-style:normal;font-weight:600}.nb-note .text-btn{margin-left:10px;font-style:normal}.nb-add-note{display:block}.nb-note-form textarea{width:100%;height:calc(var(--nb-line) * 2);resize:none;font:inherit;font-size:15px;line-height:var(--nb-line);color:var(--ink);background:#ffd43b1a;border:0;border-radius:4px;outline:none;padding:0 8px;display:block}.nb-note-form textarea:focus{background:#ffd43b2e}.nb-note-actions{gap:16px;display:flex}.nb-more{margin:calc(var(--nb-line) * 2) 0 0 calc(var(--nb-margin) + 20px);color:var(--muted);font-size:14px}@media (width<=640px){.notebook{--nb-margin:40px;padding-right:16px}.nb-rule,.nb-topic-head{column-gap:12px}.nb-topic-head{margin-left:calc(var(--nb-margin) + 12px)}.nb-number{padding-right:8px}.nb-more{margin-left:calc(var(--nb-margin) + 12px)}}.rule-dialog-eyebrow{margin-bottom:10px}.rule-dialog-title{letter-spacing:-.03em;font-size:24px}.rule-dialog-sub{color:var(--muted);margin-top:4px;font-size:15px}.rule-fill{background:var(--bg);border:1px solid var(--line);border-radius:14px;margin:22px 0 6px;padding:18px;font-size:18px;line-height:2}.rule-fill code{color:var(--ink);background:#f0eee7;border-radius:5px;padding:1px 5px;font-size:.8em}.rule-gap{font:inherit;color:var(--ink);text-align:center;background:var(--surface);border:0;border-bottom:2px solid var(--ink);border-radius:6px 6px 0 0;outline:none;margin:0 3px;padding:0 4px;font-weight:600;transition:border-color .2s,background-color .2s;display:inline-block}.rule-gap:focus{border-bottom-color:var(--yellow);background:#fff7d1}.rule-gap.is-right{border-bottom-color:var(--green);background:#eaf6ef}.rule-gap.is-wrong{border-bottom-color:var(--red);background:#fdecec}.rule-feedback{color:var(--red);animation:fieldErrorIn .25s var(--ease);justify-content:space-between;align-items:center;gap:12px;margin-top:10px;font-size:14px;display:flex}.rule-note-field{margin-top:18px}.rule-note-field label span{color:var(--muted);font-weight:400}.rule-note-field textarea{resize:vertical;width:100%;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:12px;outline:none;padding:10px 12px;font-size:14.5px;transition:border-color .2s,box-shadow .2s}.rule-note-field textarea:focus{border-color:var(--ink);box-shadow:0 0 0 4px #11141812}.rule-save{justify-content:center;width:100%;margin-top:18px}.rule-drawer-empty{color:var(--muted);margin-top:16px;font-size:15px}.rule-drawer-notebook{margin-top:22px}.rule-drawer-link{margin-top:auto;padding-top:24px}.rule-tag{color:var(--ink-2);background:var(--surface);border:1px solid var(--line-2);border-radius:999px;flex:none;align-items:center;gap:5px;padding:2px 8px 2px 6px;font-size:12px;font-weight:500;display:inline-flex}.rule-tag.is-saved{color:var(--green);background:#eaf6ef;border-color:#c8e8d5}.status-chip{color:var(--muted);white-space:nowrap;background:var(--bg);border:1px solid var(--line);border-radius:999px;flex:none;align-items:center;gap:6px;padding:3px 9px 3px 6px;font-size:12px;font-weight:500;display:inline-flex}.status-chip i{border:1.5px dashed var(--line-2);border-radius:50%;width:12px;height:12px}.status-in-progress{color:var(--ink);background:#fff7d1;border-color:#f3e19a}.status-in-progress i{border:3px solid var(--yellow);background:var(--surface)}.status-coming-soon{color:var(--muted);background:0 0;border-style:dashed;padding-left:9px}.status-coming-soon i{display:none}.status-done{color:var(--green);background:#eaf6ef;border-color:#c8e8d5}.status-done i{background:var(--green) var(--check-icon) center/100% no-repeat;border:0}.difficulty-chip{color:var(--ink-2);white-space:nowrap;background:var(--bg);border:1px solid var(--line);border-radius:999px;flex:none;align-items:center;gap:6px;padding:3px 9px;font-size:12px;font-weight:500;display:inline-flex}.difficulty-chip i{gap:2px;display:inline-flex}.difficulty-chip i b{background:var(--line-2);border-radius:1px;width:4px;height:8px}.difficulty-chip i b.on{background:var(--ink)}.guide-code{background:var(--ed-bg);color:var(--ed-text);white-space:pre;border-radius:10px;margin:0;padding:12px 14px;font-size:14.5px;line-height:23px;overflow-x:auto}.guide-code.has-new .g-old{opacity:.42}.guide-code .g-new{background:#ffd43b29}.ide{flex-direction:column;height:100dvh;display:flex}.ide-bar{background:var(--bg);border-bottom:1px solid var(--line);flex:none;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;height:60px;padding:0 20px;display:grid}.ide-back{color:var(--ink-2);border-radius:999px;justify-self:start;align-items:center;gap:8px;padding:6px 10px 6px 6px;font-size:15px;font-weight:500;transition:background-color .2s,color .2s;display:inline-flex}.ide-back:hover{color:var(--ink);background:#1114180d}.ide-where{font-family:var(--mono);color:var(--muted);font-size:13px}.ide-steps{justify-self:end;align-items:center;gap:8px;display:flex}.flip{transform:scaleX(-1)}.ide-rulebook-btn{gap:7px}.ide-body{flex:1;grid-template-columns:minmax(400px,min(40vw,540px)) minmax(0,1fr);min-height:0;display:grid}.ide-side{background:var(--surface);border-right:1px solid var(--line);overflow-y:auto}.ide-question,.ide-guide{padding:32px}.ide-question{border-bottom:1px solid var(--line)}.ide-chips{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.ide-question h1{letter-spacing:-.03em;margin-bottom:12px;font-size:27px;font-weight:600;line-height:1.2}.ide-context{color:var(--muted);margin-bottom:10px;font-size:16.5px;line-height:1.55}.ide-task{color:var(--ink);font-size:17.5px;line-height:1.55}.ide-task p+p{margin-top:10px}.key-points{background:var(--surface);border:1px solid var(--line);border-radius:14px;margin:6px 0 18px;overflow:hidden}.key-points-head{background:var(--bg);border-bottom:1px solid var(--line);color:var(--ink);align-items:center;gap:9px;padding:9px 14px;font-size:14px;font-weight:600;display:flex}.key-points-icon{background:var(--yellow);width:22px;height:22px;color:var(--ink);border-radius:7px;place-items:center;display:grid}.key-points ul{flex-direction:column;display:flex}.key-points li{color:var(--ink-2);gap:12px;padding:12px 16px;font-size:15.5px;line-height:1.55;display:flex}.key-points li+li{border-top:1px solid var(--line)}.key-points li:before{content:"";background:var(--ink-2);border-radius:50%;flex:none;width:6px;height:6px;margin-top:.62em}.format-chip{white-space:nowrap;color:var(--ink);background:#fff7d1;border:1px solid #f3e19a;border-radius:999px;align-items:center;padding:3px 9px;font-size:12px;font-weight:500;display:inline-flex}.ide-side :not(pre)>code{color:var(--ink);background:#f0eee7;border-radius:5px;padding:1px 5px;font-size:.86em}.side-label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:8px;font-size:12px;display:block}.expected{margin-top:24px}.expected .typed{color:var(--yellow)}.guide-output .typed{background:#fff7d1;border-radius:2px;box-shadow:0 0 0 2px #fff7d1}.typed-note{color:var(--muted);margin-top:8px;font-size:13.5px}.expected pre{background:var(--ed-bg);color:#e6e8eb;white-space:pre-wrap;border-radius:12px;margin:0;padding:14px 16px;font-size:14.5px;line-height:23px}.guide-head{justify-content:space-between;align-items:baseline;margin-bottom:16px;display:flex}.guide-head h2{letter-spacing:-.02em;font-size:19px}.guide-head span{font-family:var(--mono);color:var(--muted);font-size:13px}.guide-intro{color:var(--muted);margin-bottom:14px;font-size:16px}.guide-steps{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.guide-steps li{border:1px solid var(--line);animation:stepIn .35s var(--ease) both;background:#fbfaf7;border-radius:12px;gap:14px;padding:16px;scroll-margin:16px;display:flex}.guide-step-body{flex-direction:column;flex:1;gap:12px;min-width:0;display:flex}.guide-output{animation:stepIn .35s var(--ease) both;align-items:baseline;gap:10px;display:flex}.guide-output span{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);flex:none;font-size:12px}.guide-output pre{background:var(--surface);border:1px solid var(--line);white-space:pre-wrap;border-radius:8px;flex:1;min-width:0;margin:0;padding:6px 10px;font-size:14px;line-height:21px}@keyframes stepIn{0%{opacity:0;transform:translateY(-4px)}}.guide-num{background:var(--yellow);width:26px;height:26px;font-family:var(--mono);border-radius:50%;flex:none;place-items:center;font-size:12.5px;font-weight:500;display:grid}.guide-steps p{color:var(--ink-2);font-size:16px;line-height:1.55}.guide-done{color:var(--muted);font-size:15.5px}.ide-main{flex-direction:column;gap:12px;min-width:0;min-height:0;padding:16px;display:flex}.ide-panel{background:var(--ed-bg);min-height:0;color:var(--ed-text);border-radius:16px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 0 0 1px #111418e6,0 20px 40px -24px #11141866}.ide-editor{flex:1}.ide-results{flex:none;grid-template-columns:minmax(0,1fr) minmax(0,300px);height:200px;display:grid}.ide-console{flex-direction:column;min-width:0;min-height:0;display:flex}.ide-checks{border-left:1px solid var(--ed-line);min-height:0;overflow-y:auto}.ide-checks ul{padding:12px 16px}.checks-summary{font-family:var(--mono);color:var(--ed-muted);font-size:11px}.checks-summary.all-passed{color:#6fd39a}.check{color:var(--ed-muted);align-items:flex-start;gap:9px;padding:3px 0;font-size:13px;line-height:20px;transition:color .25s;display:flex}.check i{color:#fff;border:1.5px dashed #3a414c;border-radius:50%;flex:none;place-items:center;width:16px;height:16px;margin-top:2px;transition:background-color .25s,border-color .25s;display:grid}.check code{color:inherit;font-size:12px}.check-label{display:block}.check-detail{color:#f2a0a0;margin-top:1px;font-size:12px;line-height:17px;display:block}.checks-shared-detail{color:#f2a0a0;margin:-4px 16px 12px 41px;font-size:12px;line-height:17px}.check.is-checking i{border:1.5px solid #3a414c;border-top-color:var(--yellow);animation:.7s linear infinite spin}.check.is-pass{color:var(--ed-text)}.check.is-pass i{background:var(--green);animation:pop .35s var(--ease);border:0}.check.is-fail{color:var(--ed-text)}.check.is-fail i{background:var(--red) var(--cross-icon) center/85% no-repeat;border:0}@keyframes pop{50%{transform:scale(1.18)}}.ide-panel-bar{border-bottom:1px solid var(--ed-line);flex:none;justify-content:space-between;align-items:center;gap:12px;height:48px;padding:0 10px 0 16px;display:flex}.ide-results .ide-panel-bar{height:40px}.ide-results .ed-label{margin:0}.file-tab{font-family:var(--mono);color:#fff;background:#232831;border-radius:7px;padding:5px 10px;font-size:12px}.ide-actions{align-items:center;gap:6px;display:flex}.ide-file{align-items:center;gap:12px;min-width:0;display:flex}.python-status{color:var(--ed-muted);white-space:nowrap;align-items:center;gap:7px;font-size:12px;display:inline-flex}.mini-spinner{border:2px solid #3a414c;border-top-color:var(--yellow);border-radius:50%;width:12px;height:12px;animation:.7s linear infinite spin;display:inline-block}.mini-spinner.light{border-color:#fff #ffffff59 #ffffff59}.ghost-btn{color:var(--ed-muted);border-radius:7px;padding:6px 10px;font-size:13px;transition:background-color .2s,color .2s}.ghost-btn:hover:not(:disabled){color:var(--ed-text);background:#20252d}.ghost-btn:disabled{opacity:.4;cursor:default}.run-btn{color:#fff;background:var(--green);border-radius:9px;align-items:center;gap:7px;height:34px;padding:0 14px;font-size:14px;font-weight:500;transition:background-color .15s,transform .15s;display:inline-flex}.run-btn:hover:not(:disabled){background:#22ad5e}.run-btn:active:not(:disabled){transform:scale(.96)}.run-btn:disabled{cursor:progress;opacity:.85}.run-btn.is-stop{color:#ffb3b3;background:#3a2124;box-shadow:inset 0 0 0 1px #5c2b30}.run-btn.is-stop:hover{background:#4a2629}.stop-square{background:currentColor;border-radius:2px;width:9px;height:9px}.terminal-body{min-height:0;font-family:var(--mono);flex:1;padding:12px 16px;font-size:13px;line-height:21px;overflow:auto}.terminal-body pre{white-space:pre-wrap;word-break:break-word;margin:0}.terminal-empty{color:var(--ed-muted)}.terminal-loading{color:var(--ed-muted);align-items:center;gap:10px;animation:.2s both fadeIn;display:flex}@keyframes fadeIn{0%{opacity:0}}.t-out{color:#e6e8eb}.t-input{color:var(--yellow)}.t-system{color:var(--ed-muted)}.t-error{color:#f5b5b5;background:#d645451f;border:1px solid #d6454559;border-radius:8px;margin-top:8px;padding:10px 12px;display:block}.t-error b{color:#ff8f8f;font-weight:600}.t-hint{color:#ffe08a;font-family:var(--font);margin-top:6px;display:inline-block}.t-input-field{border:0;border-bottom:1px dashed var(--yellow);width:40%;min-width:8ch;color:var(--yellow);caret-color:var(--yellow);font:inherit;background:0 0;outline:none;padding:0 2px}.ide-main{position:relative}.complete-card{z-index:5;text-align:center;background:var(--surface);width:min(380px,100% - 32px);color:var(--ink);box-shadow:0 0 0 1px var(--line), 0 28px 60px -20px #1114188c;animation:completeIn .45s var(--ease) both;border-radius:20px;flex-direction:column;align-items:center;padding:28px 24px 20px;display:flex;position:absolute;top:calc(50% - 98px);left:50%;transform:translate(-50%,-50%)}@keyframes completeIn{0%{opacity:0;transform:translate(-50%,-46%)scale(.96)}}.complete-icon{background:var(--green);color:#fff;width:52px;height:52px;animation:completePop .5s var(--ease) .1s both, completeRing 1.4s ease-out .3s;border-radius:50%;place-items:center;margin-bottom:14px;display:grid}@keyframes completePop{0%{opacity:0;transform:scale(.4)}60%{transform:scale(1.12)}}@keyframes completeRing{0%{box-shadow:0 0 #1f9d5573}to{box-shadow:0 0 0 16px #1f9d5500}}.complete-card h2{letter-spacing:-.025em;font-size:22px}.complete-sub{color:var(--muted);margin:4px 0 14px;font-size:15px}.complete-card .progress{width:100%}.complete-card .progress i{background:var(--green)}.complete-rule{text-align:left;width:100%;color:var(--ink-2);background:#fff7d1;border:1px solid #f3e19a;border-radius:12px;align-items:center;gap:10px;margin-top:18px;padding:8px 8px 8px 12px;font-size:14px;display:flex}.complete-rule>span{flex:1}.complete-rule b{color:var(--ink);font-weight:600}.complete-rule.is-saved{color:var(--green);background:#eaf6ef;border-color:#c8e8d5;padding-right:14px}.complete-actions{flex-direction:column;align-items:center;gap:10px;width:100%;margin-top:20px;display:flex}.complete-actions .btn{justify-content:center;width:100%}@media (width<=900px){.ide{height:auto;min-height:100dvh}.ide-bar{z-index:10;grid-template-columns:1fr auto;position:sticky;top:0}.ide-where{display:none}.ide-body{flex-direction:column;display:flex}.ide-side{border-right:0;border-bottom:1px solid var(--line);overflow:visible}.ide-question,.ide-guide{padding:22px 16px}.ide-main{padding:12px}.ide-editor{min-height:340px}.complete-card{align-self:center;animation-name:completeInStacked;position:sticky;top:auto;bottom:12px;left:auto;transform:none}@keyframes completeInStacked{0%{opacity:0;transform:translateY(10px)scale(.97)}}}@media (width<=640px){.ide-results{grid-template-columns:1fr;height:auto}.ide-console{min-height:140px}.ide-checks{border-left:0;border-top:1px solid var(--ed-line)}.ide-bar{padding:0 12px}.ide-rulebook-btn{padding:0 11px}.ide-rulebook-btn span{display:none}.ide-back span{text-overflow:ellipsis;white-space:nowrap;max-width:96px;overflow:hidden}.ide-bar{gap:8px}}.section-cta{padding-top:24px}.cta{background:var(--ink);color:#fff;border-radius:24px;grid-template-columns:1.2fr 1fr;align-items:center;gap:40px;padding:64px;display:grid;overflow:hidden}.cta h2{max-width:480px;margin-bottom:30px}.cta-term{font-family:var(--mono);color:#cfd4da;background:#1a1e24;border:1px solid #2a3039;border-radius:14px;padding:22px 24px;font-size:15px;line-height:1.9}.cta-term .p{color:#5c6470}.cta-term .s{color:#a5d6a7}.cta-term .f{color:#8ab4ff}.cta-term .o{color:#fff}@media (width<=980px){.cta{grid-template-columns:1fr;padding:48px 40px}}@media (width<=640px){.cta{border-radius:20px;padding:36px 22px}.cta-term{font-size:13.5px}}.footer{padding:28px 0 40px}.footer-inner{color:var(--muted);align-items:center;gap:24px;font-size:14px;display:flex}.footer-copy{margin-right:auto}.footer-links{gap:22px;display:flex}.footer-links a:hover{color:var(--ink)}@media (width<=640px){.footer-inner{flex-wrap:wrap}}.hero-demo{position:relative}.editor{background:var(--ed-bg);color:var(--ed-text);border-radius:20px;overflow:hidden;box-shadow:0 0 0 1px #111418e6,0 30px 60px -20px #11141859,0 12px 24px -12px #11141840}.ed-top{border-bottom:1px solid var(--ed-line);justify-content:space-between;align-items:center;gap:16px;padding:12px 14px 12px 12px;display:flex}.ed-tabs{background:#0b0d10;border-radius:10px;gap:2px;padding:3px;display:flex}.ed-tabs button{color:var(--ed-muted);border-radius:7px;padding:6px 12px;font-size:13px;transition:color .2s,background-color .2s}.ed-tabs button:hover{color:var(--ed-text)}.ed-tabs button[aria-selected=true]{color:#fff;background:#232831}.ed-step{color:var(--ed-muted);font-size:12px;font-family:var(--mono);white-space:nowrap;align-items:center;gap:10px;display:flex}.ed-bar{gap:3px;display:flex}.ed-bar i{background:#2a3039;border-radius:2px;width:16px;height:4px;position:relative;overflow:hidden}.ed-bar i:after{content:"";background:var(--yellow);transform-origin:0;transition:transform .6s var(--ease);position:absolute;inset:0;transform:scaleX(0)}.ed-bar i.full:after{transform:scaleX(1)}.ed-task{background:var(--ed-bg-2);border-bottom:1px solid var(--ed-line);padding:16px 18px}.ed-task p{color:#d4d8de;min-height:44px;font-size:14.5px;line-height:1.5}.ed-task code{color:#fff;background:#262c35;border-radius:5px;padding:1px 6px;font-size:13px}.ed-file{font-family:var(--mono);color:var(--ed-muted);justify-content:space-between;align-items:center;padding:10px 14px 0 18px;font-size:12px;display:flex}.run{font-size:12px;font-weight:500;font-family:var(--font);color:#e6e8eb;background:#20252d;border-radius:7px;align-items:center;gap:6px;padding:5px 11px;transition:background-color .15s,transform .15s,color .15s;display:inline-flex}.run svg{color:#6fd39a}.run.pressed{background:var(--green);color:#fff;transform:scale(.94)}.run.pressed svg{color:#fff}.ed-src{min-height:202px;padding:10px 0 16px;display:flex}.gutter{text-align:right;width:44px;font-family:var(--mono);color:#424954;-webkit-user-select:none;user-select:none;flex:none;padding-right:14px;font-size:13px;line-height:22px}.gutter span{display:block}.code{min-width:0;color:var(--ed-text);tab-size:4;flex:1;margin:0;padding-right:16px;font-size:13.5px;line-height:22px;overflow-x:auto}.ed-bottom{border-top:1px solid var(--ed-line);grid-template-columns:1fr 1fr;display:grid}.ed-console,.ed-checks{min-height:132px;padding:14px 18px 18px}.ed-console{border-right:1px solid var(--ed-line)}.ed-console pre{color:#cfd4da;white-space:pre-wrap;margin:0;font-size:12.5px;line-height:20px}.ed-console .in{color:var(--yellow)}.ed-console .ln{animation:lineIn .3s var(--ease) both;display:inline-block}@keyframes lineIn{0%{opacity:0;transform:translateY(4px)}}.ed-checks li{color:var(--ed-muted);align-items:center;gap:9px;padding:2px 0;font-size:13px;line-height:20px;transition:color .25s;display:flex}.ed-checks li i{width:16px;height:16px;transition:background-color .25s, border-color .25s, transform .3s var(--ease);border:1.5px dashed #3a414c;border-radius:50%;flex:none;position:relative}.ed-checks li i:after{content:"";background:var(--check-icon) center/100% no-repeat;opacity:0;transition:opacity .2s, transform .3s var(--ease);position:absolute;inset:0;transform:scale(.4)}.ed-checks li.pass{color:#e6e8eb}.ed-checks li.pass i{background:var(--green);border:1.5px solid var(--green);animation:pop .35s var(--ease)}.ed-checks li.pass i:after{opacity:1;transform:scale(1)}.toast{background:var(--surface);color:var(--ink);box-shadow:0 0 0 1px var(--line), 0 12px 30px -10px #11141840;opacity:0;transition:opacity .3s var(--ease), transform .4s var(--ease);pointer-events:none;border-radius:12px;align-items:center;gap:10px;padding:10px 16px 10px 10px;font-size:14px;display:flex;position:absolute;bottom:-22px;left:-28px;transform:translateY(10px)scale(.97)}.toast b{font-weight:600}.toast.show{opacity:1;transform:none}.toast-icon{background:var(--yellow);border-radius:8px;place-items:center;width:26px;height:26px;display:grid}@media (width<=980px){.toast{left:16px}}@media (width<=640px){.ed-top{flex-wrap:wrap}.ed-tabs button{padding:6px 10px}.ed-bottom{grid-template-columns:1fr}.ed-console{border-right:0;border-bottom:1px solid var(--ed-line)}.ed-console,.ed-checks{min-height:0}.ed-console pre{min-height:60px}.gutter{width:36px;padding-right:10px}.code{font-size:12.5px}.toast{margin-top:12px;position:relative;bottom:auto;left:auto}}.hero{padding:72px 0 96px}.hero-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);align-items:center;gap:64px;display:grid}.lede{color:var(--ink-2);max-width:460px;margin-top:22px;font-size:18px}.cta-row{flex-wrap:wrap;gap:12px;margin-top:32px;display:flex}.hero-meta{color:var(--muted);flex-wrap:wrap;gap:8px 20px;margin-top:22px;font-size:14px;display:flex}.hero-meta li{align-items:center;gap:7px;display:inline-flex}.hero-meta li:before{content:"";background:var(--green) var(--check-icon) center/100% no-repeat;border-radius:50%;width:14px;height:14px}.boards{border-top:1px solid var(--line);margin-top:48px;padding-top:22px}.boards-label{color:var(--muted);margin-bottom:10px;font-size:13px;display:block}.boards-list{letter-spacing:-.02em;color:var(--ink-2);flex-wrap:wrap;gap:6px 26px;font-size:16px;font-weight:600;display:flex}@media (width<=980px){.hero{padding:48px 0 80px}.hero-grid{grid-template-columns:1fr;gap:56px}.lede{max-width:560px}}@media (width<=640px){.hero{padding-top:36px}.lede{font-size:17px}.cta-row .btn{flex:auto;justify-content:center}.boards{margin-top:36px}.boards-list{gap:4px 18px;font-size:15px}}.steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.step-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);transition:border-color .25s, transform .35s var(--ease), box-shadow .35s var(--ease);flex-direction:column;display:flex;overflow:hidden}.step-card:hover{border-color:var(--line-2);transform:translateY(-3px);box-shadow:0 18px 36px -24px #1114184d}.step-text{border-top:1px solid var(--line);padding:22px 24px 26px}.step-num{font-family:var(--mono);color:var(--muted);margin-bottom:10px;font-size:12px;display:block}.step-text p{color:var(--muted);margin-top:6px;font-size:15px}.mini{background:#fbfaf7;flex-direction:column;justify-content:center;height:196px;padding:26px 24px;display:flex}.mini-pills{flex-wrap:wrap;align-content:center;gap:8px;display:flex}.mini-pills span{background:var(--surface);border:1px solid var(--line);color:var(--ink-2);transition:all .25s var(--ease);border-radius:999px;padding:7px 13px;font-size:13px}.mini-pills span.on{background:var(--ink);border-color:var(--ink);color:#fff}.step-card:hover .mini-pills span.on{transform:translateY(-2px)}.mini-stepper{counter-reset:s;flex-direction:column;justify-content:center;display:flex}.mini-stepper li{color:var(--muted);align-items:center;gap:12px;padding:6px 0;font-size:14px;display:flex;position:relative}.mini-stepper li:before{counter-increment:s;content:counter(s);width:22px;height:22px;font-family:var(--mono);border:1.5px solid var(--line-2);background:var(--surface);color:var(--muted);z-index:1;border-radius:50%;flex:none;place-items:center;font-size:11px;display:grid;position:relative}.mini-stepper li:not(:last-child):after{content:"";background:var(--line-2);width:1.5px;height:14px;position:absolute;top:28px;left:10.5px}.mini-stepper li.done{color:var(--ink-2)}.mini-stepper li.done:before{content:"";background:var(--green) var(--check-icon) center/80% no-repeat;border-color:var(--green)}.mini-stepper li.done:after{background:var(--green)}.mini-stepper li.now{color:var(--ink);font-weight:500}.mini-stepper li.now:before{border-color:var(--ink);color:var(--ink);animation:2s infinite ring}.mini-tests{flex-direction:column;justify-content:center;gap:8px;display:flex}.mini-tests .t{color:var(--ink-2);align-items:center;gap:10px;font-size:14px;display:flex}.mini-tests .t i{background-position:50%;background-repeat:no-repeat;background-size:80%;border-radius:50%;flex:none;width:18px;height:18px}.mini-tests .pass i{background-color:var(--green);background-image:var(--check-icon)}.mini-tests .fail i{background-color:var(--red);background-image:var(--cross-icon)}.mini-tests code,.hint code{color:var(--ink);background:#f0eee7;border-radius:4px;padding:1px 5px;font-size:12.5px}.hint{color:var(--ink-2);background:#fff7d1;border:1px solid #f3e19a;border-radius:10px;margin-top:6px;padding:10px 12px;font-size:13.5px}.hint code{background:#ffffffb3}@media (width<=980px){.steps{grid-template-columns:1fr}.step-card{flex-direction:row}.step-card .mini{flex:0 0 46%;height:auto;min-height:180px}.step-text{border-top:0;border-left:1px solid var(--line);align-self:center}}@media (width<=640px){.step-card{flex-direction:column}.step-card .mini{flex:none;height:180px;min-height:0}.step-text{border-left:0;border-top:1px solid var(--line)}}.nav-links{color:var(--ink-2);gap:28px;font-size:15px;display:flex}.nav-links a,.link-quiet{transition:color .2s}.nav-links a:hover,.link-quiet:hover{color:var(--ink)}.nav-actions{align-items:center;gap:20px;margin-left:auto;font-size:15px;display:flex}.link-quiet{color:var(--ink-2)}@media (width<=640px){.nav-links,.link-quiet{display:none}}.section-topics{padding-top:40px}.section-note{max-width:380px;color:var(--muted);font-size:15.5px}.topic-levels{grid-template-columns:repeat(4,minmax(0,1fr));gap:32px;display:grid}.topic-level-head{border-bottom:1px solid var(--ink);padding-bottom:16px}.topic-level-tag{font-family:var(--mono);color:var(--muted);align-items:center;gap:8px;margin-bottom:8px;font-size:12px;display:flex}.topic-level-head h3{letter-spacing:-.025em;font-size:20px}.topic-row{text-align:left;border-bottom:1px solid var(--line);width:100%;transition:padding .3s var(--ease);grid-template-columns:28px 1fr auto;align-items:center;gap:8px;padding:11px 2px;display:grid}.topic-row .num{font-family:var(--mono);color:var(--muted);font-size:12px}.topic-row .name{letter-spacing:-.01em;font-size:15px;font-weight:500}.topic-row .go{width:24px;height:24px;color:var(--ink-2);opacity:0;transition:opacity .25s, background-color .25s, color .25s, transform .3s var(--ease);border-radius:50%;place-items:center;display:grid}.topic-row:hover{padding-left:8px}.topic-row:hover .num{color:var(--ink)}.topic-row:hover .go{opacity:1;background:var(--ink);color:#fff;transform:translate(-2px)}@media (width<=980px){.topic-levels{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 32px}}@media (width<=640px){.section-topics{padding-top:24px}.topic-levels{grid-template-columns:1fr}}.rulebook-head{justify-content:space-between;align-items:flex-end;gap:32px;max-width:860px;display:flex}.rulebook-head .page-sub{max-width:520px}.rulebook-count{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex:none;width:220px;padding:18px 20px}.rulebook-count p{letter-spacing:-.03em;margin-bottom:12px;font-size:28px;font-weight:600;line-height:1.1}.rulebook-count small{color:var(--muted);letter-spacing:0;font-size:15px;font-weight:500}@media (width<=980px){.rulebook-head{flex-direction:column;align-items:flex-start}.rulebook-count{width:100%;max-width:360px}}.back-btn{margin-bottom:28px;padding-left:12px}.back-btn .arr{transform:scaleX(-1)}.back-btn:hover .arr{transform:scaleX(-1)translate(3px)}.topic-hero{grid-template-columns:minmax(0,1fr) 320px;align-items:end;gap:40px;margin-bottom:48px;display:grid}.topic-hero-copy .btn{margin-top:28px}.topic-progress{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:22px 24px}.topic-progress-label{color:var(--muted);font-size:14px}.topic-progress-value{letter-spacing:-.03em;margin:4px 0 14px;font-size:32px;font-weight:600;line-height:1.1}.topic-progress-value small{color:var(--muted);letter-spacing:0;font-size:15px;font-weight:500}.topic-progress-split{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;margin:18px 0 0;padding-top:16px;display:grid}.topic-progress-split div+div{border-left:1px solid var(--line);padding-left:16px}.topic-progress-split dt{color:var(--muted);font-size:13px}.topic-progress-split dd{font-family:var(--mono);margin:2px 0 0;font-size:15px;font-weight:500}.question-tabs{border-top:1px solid var(--line);flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:24px;padding-top:28px;display:flex}.tab-count{font-family:var(--mono);color:var(--muted);margin-left:4px;font-size:12px}.tab-intro{color:var(--muted);max-width:560px;font-size:15px}.tab-panel{animation:panelIn .4s var(--ease) both}@keyframes panelIn{0%{opacity:0;transform:translateY(8px)}}.row-arrow{border:1px solid var(--line);width:32px;height:32px;color:var(--ink-2);transition:background-color .25s, color .25s, border-color .25s, transform .3s var(--ease);border-radius:50%;flex:none;place-items:center;display:grid}.learn-path{max-width:820px;position:relative}.learn-step{gap:18px;padding-bottom:12px;display:flex;position:relative}.learn-step:not(:last-child):before{content:"";background:var(--line);border-radius:1px;width:2px;position:absolute;top:34px;bottom:-2px;left:15px}.learn-step.is-done:not(:last-child):before{background:var(--green)}.learn-node{z-index:1;width:32px;height:32px;font-family:var(--mono);color:var(--muted);background:var(--surface);border:1.5px solid var(--line-2);border-radius:50%;flex:none;place-items:center;margin-top:20px;font-size:13px;display:grid;position:relative}.is-done .learn-node{background:var(--green);border-color:var(--green);color:#fff}.is-current .learn-node{border-color:var(--ink);color:var(--ink);font-weight:500;animation:2s infinite ring}.learn-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-width:0;transition:border-color .25s, transform .35s var(--ease), box-shadow .35s var(--ease);flex:1;align-items:center;gap:16px;padding:18px 18px 18px 22px;display:flex}.learn-card:hover{border-color:var(--line-2);transform:translate(3px);box-shadow:0 14px 30px -22px #1114184d}.learn-card:hover .row-arrow,.practise-card:hover .row-arrow{background:var(--ink);border-color:var(--ink);color:#fff}.is-current .learn-card{border-color:var(--ink);box-shadow:0 0 0 3px #ffd43b73}.learn-card-body{flex:1;min-width:0}.learn-card-title{flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.learn-card h3{font-size:16px}.learn-card p{color:var(--muted);margin-top:2px;font-size:14px}.is-upcoming .learn-card h3{color:var(--ink-2)}.up-next{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;background:var(--yellow);color:var(--ink);border-radius:6px;padding:2px 7px;font-size:11px}.practise-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:920px;display:grid}.practise-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-height:180px;transition:border-color .25s, transform .35s var(--ease), box-shadow .35s var(--ease);flex-direction:column;padding:20px;display:flex}.practise-card:hover{border-color:var(--line-2);transform:translateY(-3px);box-shadow:0 18px 36px -24px #1114184d}.practise-card-top{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.practise-num{font-family:var(--mono);color:var(--muted);font-size:12px}.practise-card h3{font-size:17px}.practise-card p{color:var(--muted);margin-top:4px;font-size:14px}.practise-card-foot{justify-content:space-between;align-items:center;margin-top:auto;padding-top:18px;display:flex}.coming-soon{border-top:1px solid var(--line);max-width:640px;padding-top:28px}.coming-soon h2{letter-spacing:-.025em;margin-top:14px;font-size:22px}.coming-soon>p{color:var(--muted);margin-top:4px}.concept-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-top:20px}.concept-list li{align-items:center;gap:14px;padding:13px 18px;font-size:15px;display:flex}.concept-list li+li{border-top:1px solid var(--line)}.concept-list span{width:24px;height:24px;font-family:var(--mono);color:var(--muted);border:1.5px solid var(--line-2);border-radius:50%;flex:none;place-items:center;font-size:11px;display:grid}@media (width<=980px){.topic-hero{grid-template-columns:1fr;align-items:start}}@media (width<=640px){.topic-hero-copy .btn{justify-content:center;width:100%}.learn-step{gap:12px}.learn-card{flex-wrap:wrap;gap:12px;padding:16px}.learn-card-body{flex-basis:100%}.learn-card .row-arrow{margin-left:auto}.practise-grid{grid-template-columns:1fr}.practise-card{min-height:0}}.topic-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-height:196px;transition:border-color .25s, transform .35s var(--ease), box-shadow .35s var(--ease);flex-direction:column;padding:20px;display:flex}.topic-card:hover{border-color:var(--line-2);transform:translateY(-3px);box-shadow:0 18px 36px -24px #1114184d}.topic-card-top{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.topic-card-num{font-family:var(--mono);color:var(--muted);font-size:12px}.topic-card h3{font-size:17px}.topic-card p{color:var(--muted);margin-top:4px;font-size:14px}.topic-card-progress{align-items:center;gap:12px;margin-top:auto;padding-top:20px;display:flex}.topic-card-progress .progress{flex:1}.topic-card-progress span{font-family:var(--mono);color:var(--muted);text-align:right;min-width:34px;font-size:12px}.is-done .progress i{background:var(--green)}.topic-card-progress .topic-card-planned{text-align:left;min-width:0;font-family:var(--font);font-size:13px}.is-coming-soon h3{color:var(--ink-2)}.topics-head{justify-content:space-between;align-items:flex-end;gap:32px;display:flex}.topic-filter{flex:none}.level-section{border-top:1px solid var(--line);animation:sectionIn .5s var(--ease) both;padding:36px 0 12px}.level-section+.level-section{margin-top:28px}.level-section:nth-child(2){animation-delay:60ms}.level-section:nth-child(3){animation-delay:.12s}.level-section:nth-child(4){animation-delay:.18s}@keyframes sectionIn{0%{opacity:0;transform:translateY(10px)}}.level-head{justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:24px;display:flex}.level-eyebrow{font-family:var(--mono);color:var(--muted);align-items:center;gap:10px;margin-bottom:10px;font-size:13px;display:flex}.level-head h2{font-size:clamp(24px,2.6vw,30px)}.level-summary{color:var(--muted);margin-top:4px}.level-progress{flex:none;width:200px}.level-progress span{color:var(--muted);text-align:right;margin-bottom:8px;font-size:13px;display:block}.topic-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}@media (width<=1080px){.topics-head{flex-direction:column;align-items:flex-start}}@media (width<=980px){.topic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.topic-filter{scrollbar-width:none;max-width:100%;overflow-x:auto}.topic-filter button{flex:none}.level-head{flex-direction:column;align-items:flex-start;gap:16px}.level-progress{width:100%}.level-progress span{text-align:left}.topic-grid{grid-template-columns:1fr}.topic-card{min-height:0}}.welcome{background:var(--bg);flex-direction:column;min-height:100dvh;display:flex}.welcome-top{justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.welcome-main{flex:1;justify-content:center;padding:clamp(24px,9vh,96px) 24px 64px;display:flex}.welcome-step{width:100%;max-width:560px;animation:welcomeIn .35s var(--ease) both}@keyframes welcomeIn{0%{opacity:0;transform:translateY(6px)}}.welcome-step .eyebrow{margin-bottom:14px}.welcome-title{letter-spacing:-.035em;font-size:clamp(28px,4vw,36px);line-height:1.15}.welcome-sub{color:var(--muted);margin-top:10px;font-size:15px}.welcome-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:28px;display:grid}.welcome-options.is-wide{grid-template-columns:1fr}.welcome-option{text-align:left;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:14px;padding:16px 18px;transition:border-color .2s,box-shadow .2s;display:flex}.welcome-option:hover{border-color:var(--ink)}.welcome-option[aria-checked=true]{border-color:var(--ink);box-shadow:0 0 0 4px #ffd43b73}.welcome-option-text{min-width:0}.welcome-option-text b{font-size:16px;font-weight:600;display:block}.welcome-option-text span{color:var(--muted);margin-top:3px;font-size:14px;display:block}.welcome-tick{border:1.5px solid var(--line-2);color:#fff;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;transition:background-color .2s,border-color .2s;display:grid}.welcome-option[aria-checked=true] .welcome-tick{background:var(--ink);border-color:var(--ink)}.welcome-error{margin-top:18px}.welcome-actions{justify-content:flex-end;align-items:center;gap:22px;margin-top:28px;display:flex}.welcome-actions .btn:disabled{opacity:.45;cursor:not-allowed}.welcome-actions .btn:disabled .arr{transform:none}@media (width<=640px){.welcome-top{padding:16px}.welcome-main{padding:24px 16px 48px}.welcome-options{grid-template-columns:1fr}.welcome-actions .btn{flex:1;justify-content:center}}.auth-tabs{margin-bottom:26px}.auth-title{letter-spacing:-.03em;font-size:26px}.auth-subtitle{color:var(--muted);margin-top:6px;font-size:15px}.auth-form{flex-direction:column;gap:16px;margin-top:24px;display:flex}.auth-submit{justify-content:center;width:100%;margin-top:6px}.auth-submit:disabled{cursor:progress}.spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin}.auth-switch{text-align:center;color:var(--muted);margin-top:20px;font-size:14px}.auth-switch button{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--yellow);text-decoration-color:var(--yellow);text-underline-offset:3px;font-weight:500;text-decoration-thickness:2px}.auth-switch button:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.auth-google{justify-content:center;gap:10px;width:100%;margin-top:24px}.auth-google:disabled{cursor:progress;opacity:.7}.auth-divider{color:var(--muted);align-items:center;gap:12px;margin-top:20px;font-size:13px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--line);flex:1;height:1px}.auth-form.is-after-google{margin-top:16px}
