:root{--bg: #f7f8fa;--surface: #ffffff;--text: #16181d;--muted: #667085;--border: #e4e7ec;--accent: #2563eb;--accent-soft: #eff4ff;--ok: #16a34a;--warn: #d97706;--bad: #dc2626;--info: #2563eb}@media(prefers-color-scheme:dark){:root{--bg: #0e1116;--surface: #171b22;--text: #eceef2;--muted: #98a2b3;--border: #262c36;--accent: #4f83f7;--accent-soft: #182236}}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.55}h1{font-size:2rem;line-height:1.2}h2{font-size:1.25rem}h3{font-size:1.05rem}.brand{font-weight:800;font-size:1.2rem;letter-spacing:-.02em}.brand-accent{color:var(--accent)}.muted{color:var(--muted);font-size:.95rem}.btn{border:none;border-radius:10px;padding:.55rem 1rem;font-size:.95rem;font-weight:600;cursor:pointer;background:transparent;color:var(--text)}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--accent);color:#fff}.btn-primary:not(:disabled):hover{filter:brightness(1.08)}.btn-ghost{color:var(--accent)}.btn-danger{background:var(--bad);color:#fff;padding:.3rem .7rem}.btn-lg{padding:.8rem 1.8rem;font-size:1.05rem;border-radius:12px}.input{border:1px solid var(--border);border-radius:10px;padding:.6rem .9rem;font-size:1rem;background:var(--surface);color:var(--text);flex:1}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1.1rem 1.25rem}.landing{min-height:100vh;display:flex;flex-direction:column}.landing-nav,.app-nav{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.4rem;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:5}.landing-hero{text-align:center;padding:4.5rem 1.5rem 3rem;max-width:720px;margin:0 auto}.landing-hero h1{font-size:clamp(2rem,6vw,3.2rem);margin-bottom:1.1rem}.hero-sub{color:var(--muted);font-size:1.1rem;margin-bottom:1.8rem}.hero-note{color:var(--muted);font-size:.9rem;margin-top:.9rem}.landing-how{display:grid;gap:1rem;padding:1rem 1.5rem 3rem;max-width:1000px;margin:0 auto;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.how-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:1.4rem}.how-num{width:2rem;height:2rem;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:800;display:flex;align-items:center;justify-content:center;margin-bottom:.8rem}.how-card p{color:var(--muted);font-size:.95rem;margin-top:.4rem}.landing-footer{margin-top:auto;display:flex;justify-content:space-between;gap:1rem;padding:1.2rem 1.5rem;color:var(--muted);font-size:.85rem;border-top:1px solid var(--border);flex-wrap:wrap}.page{min-height:100vh;display:flex;flex-direction:column}.page-main{width:100%;max-width:760px;margin:0 auto;padding:1.4rem;display:flex;flex-direction:column;gap:1.5rem}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.6rem}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.8rem}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:.9rem;text-align:center}.stat-value{font-size:1.5rem;font-weight:800}.stat-value.ok{color:var(--ok)}.stat-value.warn{color:var(--warn)}.stat-value.bad{color:var(--bad)}.stat-value.info{color:var(--info)}.stat-label{color:var(--muted);font-size:.8rem}.next-task{display:flex;align-items:center;gap:1rem;width:100%;text-align:left;cursor:pointer;transition:transform .08s ease}.next-task:hover{transform:translateY(-1px)}.task-icon{font-size:1.8rem}.task-text{display:flex;flex-direction:column;flex:1}.task-kind{font-size:.72rem;font-weight:800;letter-spacing:.06em;color:var(--accent)}.task-lesson .task-kind{color:var(--accent)}.task-review .task-kind{color:var(--warn)}.task-quiz .task-kind{color:#9333ea}.task-title{font-weight:700;font-size:1.05rem}.task-sub{color:var(--muted);font-size:.85rem}.task-go{color:var(--accent);font-weight:700}.empty-card{color:var(--muted);text-align:center}.due-note{color:var(--warn);font-size:.85rem;margin-top:.5rem}.session-head{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.8rem;padding:.7rem 1rem 0;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0}.session-title{font-weight:700;text-align:center}.session-timer{font-variant-numeric:tabular-nums;font-weight:700}.pace-elite{color:var(--ok)}.pace-on{color:var(--warn)}.pace-behind{color:var(--bad)}.progress-track{grid-column:1 / -1;height:5px;background:var(--border);border-radius:3px;overflow:hidden;margin:.5rem 0 .7rem}.progress-fill{height:100%;background:var(--accent);transition:width .25s ease}.q-count{color:var(--muted);font-size:.85rem}.q-prompt{white-space:pre-wrap;font-size:1.05rem;margin-bottom:1.1rem}.choices{display:flex;flex-direction:row;flex-wrap:wrap;gap:.6rem;margin-bottom:1rem}.choice{flex:1 1 auto;min-width:110px;text-align:center}.choice{text-align:left;border:2px solid var(--border);background:var(--bg);color:var(--text);border-radius:12px;padding:.75rem 1rem;font-size:1rem;cursor:pointer}.choice-id{font-weight:700;color:var(--muted);margin-right:.35rem}.choice-selected{border-color:var(--accent);background:var(--accent-soft)}.choice-correct{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,var(--surface))}.choice-wrong{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 12%,var(--surface))}.help-box{border-top:1px solid var(--border);padding-top:.9rem;margin-top:.4rem}.help-box p{margin-top:.4rem}.help-note{font-size:.82rem}.confirm-bar{display:flex;justify-content:center;padding-bottom:2rem}.example-card{text-align:center;display:flex;flex-direction:column;gap:.9rem;align-items:center}.example-badge{color:var(--warn);font-weight:700}.example-text{white-space:pre-wrap;text-align:left;font-family:inherit;background:var(--bg);border-radius:10px;padding:1rem;width:100%}.results-main{align-items:center;text-align:center}.results-icon{font-size:3.2rem}.results-main .card{width:100%;text-align:center}.mastery-badge{color:var(--ok);font-weight:800;margin-bottom:.4rem}.unlock-label{color:var(--muted);font-size:.8rem;margin-top:.8rem}.unlock-row{color:var(--accent);font-weight:600}.score-row{display:flex;justify-content:center;gap:3rem;margin-top:.6rem}.score-big{font-size:2.2rem;font-weight:800}.topic-list{display:flex;flex-direction:column;gap:2px;margin-top:.5rem}.topic-row{display:flex;align-items:center;gap:.7rem;background:var(--surface);border:1px solid var(--border);padding:.55rem .9rem;border-radius:10px}.topic-locked{opacity:.62}.topic-name{display:flex;flex-direction:column;flex:1;font-size:.95rem}.topic-needs{color:var(--muted);font-size:.75rem}.due-chip{color:var(--bad);background:color-mix(in srgb,var(--bad) 12%,var(--surface));font-size:.72rem;font-weight:700;border-radius:999px;padding:.15rem .6rem}.trend-svg{width:100%;height:auto;display:block;margin-top:.5rem}.trend-subtitle{font-size:.8rem;margin-top:.35rem;min-height:1.1em}.range-tabs{display:flex;gap:2px;background:var(--bg);border-radius:9px;padding:2px}.range-tab{border:none;background:transparent;color:var(--muted);font-size:.78rem;font-weight:700;padding:.25rem .65rem;border-radius:7px;cursor:pointer}.range-tab-active{background:var(--surface);color:var(--accent);box-shadow:0 1px 2px #00000014}.trend-grid{stroke:var(--border);stroke-width:1}.trend-tick{fill:var(--muted);font-size:10px}.trend-line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.trend-dot{fill:var(--accent);stroke:var(--surface);stroke-width:2}.trend-dot-hover{stroke-width:2.5}.trend-crosshair{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3;opacity:.6}.trend-endlabel{fill:var(--text);font-size:12px;font-weight:700}.workspace{display:flex;flex-direction:column;gap:.9rem;margin-top:.4rem}.work-column{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:.9rem 1.1rem;display:flex;flex-direction:column;gap:.55rem;background-image:repeating-linear-gradient(transparent,transparent 33px,var(--border) 33px,var(--border) 33.5px);min-height:70px}.work-line{display:flex;align-items:baseline;gap:.7rem;flex-wrap:wrap}.work-mark{width:1.1rem;text-align:center;font-weight:700}.work-valid .work-mark{color:var(--ok)}.work-invalid .work-mark{color:var(--bad)}.work-uncertain .work-mark{color:var(--warn)}.work-notValidated .work-mark{color:var(--muted)}.work-math{font-family:Georgia,Times New Roman,serif;font-size:1.3rem}.work-given{color:var(--muted);font-size:.75rem;font-style:italic}.work-error{color:var(--bad);font-size:.78rem}.work-entry{display:flex;gap:.6rem}.work-input{font-family:Georgia,serif;font-size:1.15rem}.work-parse-note{color:var(--warn);font-size:.85rem}.work-interpretation{font-size:.85rem;font-family:Georgia,serif}.session-main{display:flex;flex-direction:row;gap:1rem;align-items:flex-start}.session-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.9rem}.mode-container{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:108px;max-width:140px;padding:.5rem .6rem;border:1px solid var(--border, #d8d8e0);border-radius:10px;font-size:.72rem;line-height:1.35;position:sticky;top:.5rem}.mode-name{font-weight:700;letter-spacing:.06em;font-size:.7rem}.mode-ranked .mode-name{color:var(--warn, #b45309)}.mode-learning .mode-name{color:var(--accent, #2563eb)}.mode-option{text-align:left;padding:1px 0;color:inherit}button.mode-option-tap{background:none;border:none;cursor:pointer;font:inherit}button.mode-option-tap:hover{text-decoration:underline}.mode-option-pending{font-style:italic;opacity:.75}.mode-hint{font-size:.62rem;margin-top:4px}@media(max-width:640px){.session-main{flex-direction:column}.mode-container{flex-direction:row;flex-wrap:wrap;gap:6px;max-width:none;width:100%;position:static}}.written-answer-row{display:flex;align-items:center;gap:.6rem;margin-top:.4rem}.written-label{font-weight:600}.written-answer-input{flex:1;font-family:Georgia,serif;font-size:1.15rem}.work-area{display:flex;flex-direction:column;gap:.5rem}.steps-arrow{align-self:flex-start;font-weight:600}.keypad{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}.key{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:.55rem 0;font-size:1.05rem;cursor:pointer;font-family:Georgia,serif}.key:active{background:var(--accent-soft)}.work-actions{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center}.work-result{display:flex;flex-direction:column;gap:.8rem;margin-top:.5rem}.work-correct{color:var(--ok);font-weight:700}.work-wrong{color:var(--bad);font-weight:700}.work-solution summary{cursor:pointer}.method-pick-title{font-weight:700}.method-list{display:flex;flex-direction:column;gap:.6rem}.method-card-option{display:flex;flex-direction:column;gap:.3rem;text-align:left;cursor:pointer}.method-name{font-weight:700}.method-seq{color:var(--muted);font-size:.85rem}.method-skip{opacity:.85}.method-card{display:flex;align-items:baseline;gap:.8rem;flex-wrap:wrap;background:var(--accent-soft);border-radius:10px;padding:.5rem .9rem}.method-card-name{font-size:.75rem;font-weight:800;letter-spacing:.06em;color:var(--accent)}.method-card-seq{font-size:.85rem}.steptype-row{display:flex;flex-direction:column;gap:.45rem}.steptype-label{font-size:.82rem;color:var(--muted)}.steptype-chips{display:flex;gap:.4rem;flex-wrap:wrap}.steptype-chip-wrap{display:inline-flex;align-items:center;gap:2px}.steptype-chip{border:1.5px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:.3rem .8rem;font-size:.85rem;cursor:pointer}.steptype-active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:700}.steptype-info{border:none;background:none;color:var(--muted);cursor:pointer;font-size:.9rem}.steptype-infobox{display:flex;flex-direction:column;gap:.2rem;background:var(--bg);border-radius:8px;padding:.5rem .8rem;font-size:.85rem}.steptype-shape{font-family:Georgia,serif}.missing-steps{display:flex;flex-direction:column;gap:.2rem}.missing-step{color:var(--bad);font-size:.9rem}.attempt-list{display:flex;flex-direction:column;gap:.6rem}.attempt-row{display:flex;align-items:center;gap:.9rem;width:100%;text-align:left;cursor:pointer}.attempt-kind{font-size:.68rem;font-weight:800;letter-spacing:.06em;color:var(--accent);min-width:4.2rem}.attempt-main{display:flex;flex-direction:column;flex:1;gap:.1rem}.attempt-sub{font-size:.8rem}.playback{display:flex;flex-direction:column;gap:.7rem}.playback-controls{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.pb-scrub{flex:1;min-width:120px}.pb-speed{padding:.2rem .5rem;font-size:.85rem}.pb-speed-active{color:var(--accent);font-weight:800}.pb-time{font-variant-numeric:tabular-nums;font-size:.85rem}.pb-status{font-size:.88rem}.pb-lines{min-height:unset}.pb-ink{width:100%;border:1px dashed var(--border);border-radius:8px}.pb-inklabel{font-size:.78rem;margin-bottom:.25rem}.work-review{text-align:left!important}.review-question{border-top:1px solid var(--border);padding-top:.7rem;margin-top:.7rem;display:flex;flex-direction:column;gap:.35rem}.review-q-head{font-weight:700;font-size:.9rem}.review-line{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap}.review-math{font-size:1.1rem}.review-valid .work-mark{color:var(--ok)}.review-invalid .work-mark{color:var(--bad)}.review-uncertain .work-mark{color:var(--warn)}.review-first-invalid{background:color-mix(in srgb,var(--bad) 8%,transparent);border-radius:6px;padding:.15rem .4rem}.review-missing .work-mark,.review-missing-label{color:var(--bad)}.ink-wrap{border:1.5px dashed var(--border);border-radius:10px;padding:.4rem .6rem .6rem}.ink-toolbar{display:flex;justify-content:space-between;align-items:center;gap:.6rem;flex-wrap:wrap}.ink-label{font-size:.78rem}.ink-actions{display:flex;gap:.2rem}.ink-btn{font-size:.78rem;padding:.2rem .5rem}.ink-canvas{width:100%;touch-action:none;color:var(--text);display:block}.scratch-details summary{cursor:pointer;font-size:.85rem}.run-title{font-weight:700;font-size:1.1rem}.options-head{margin-bottom:.6rem}.preset-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.7rem}.preset-card{display:flex;flex-direction:column;gap:.35rem;text-align:left;background:var(--surface);border:2px solid var(--border);border-radius:12px;padding:.9rem 1rem;cursor:pointer;color:var(--text)}.preset-active{border-color:var(--accent);background:var(--accent-soft)}.preset-name{font-weight:800}.preset-desc{font-size:.8rem;color:var(--muted)}.custom-note{margin-top:.5rem;font-size:.85rem}.options-list{display:flex;flex-direction:column;gap:.7rem;margin-top:.7rem}.option-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.6rem .9rem}.option-label{font-size:.9rem}.option-seg{flex-shrink:0}.timer-prominent{font-size:1.3rem;font-weight:800}.board{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.1rem 1.3rem;display:flex;flex-direction:column;gap:.9rem;background-image:repeating-linear-gradient(transparent,transparent 35px,var(--border) 35px,var(--border) 35.5px);width:100%;text-align:left}.board-row{display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap}.board-math{font-family:Georgia,Times New Roman,serif;font-size:1.45rem;letter-spacing:.01em;white-space:pre-wrap}.board-final{color:var(--accent);font-weight:700}.board-note{color:var(--warn);font-size:.85rem;font-style:italic}.board-next{align-self:flex-start;padding-left:0}.report-row{margin-top:.4rem;font-size:.8rem;display:flex;gap:1rem;flex-wrap:wrap}.report-trigger{color:var(--muted);font-weight:400;font-size:.8rem}.report-opt{font-size:.8rem}.tutor-panel{border-top:1px solid var(--border);margin-top:.6rem;padding-top:.8rem;display:flex;flex-direction:column;gap:.6rem}.tutor-note{font-size:.8rem}.tutor-line{display:flex;flex-direction:column;gap:.15rem}.tutor-label{font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--accent)}.tutor-text{white-space:pre-wrap}.tutor-more{align-self:flex-start;padding-left:0}.tutor-actions{display:flex;gap:1rem;flex-wrap:wrap}.tutor-review{border-top:none;background:var(--bg);border-radius:10px;padding:.8rem 1rem}.assessment-badge{display:inline-block;font-size:.72rem;font-weight:800;letter-spacing:.08em;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:.25rem .8rem}.assessment-badge.small{padding:.15rem .55rem;font-size:.62rem}.assessment-intro{align-items:center;text-align:center}.assessment-intro h1{font-size:clamp(1.5rem,4.5vw,2.2rem)}.intro-card{text-align:left;width:100%}.intro-list{list-style:none;display:flex;flex-direction:column;gap:.8rem}.intro-list li{padding-left:1.4rem;position:relative}.intro-list li:before{content:"→";position:absolute;left:0;color:var(--accent);font-weight:700}.assessment-prompt{font-size:1.4rem;font-weight:600;text-align:center}.assessment-score{font-size:4.2rem;font-weight:800;line-height:1;color:var(--accent)}.insight-card{border-left:4px solid var(--warn);text-align:left!important}.tier-rows{display:flex;flex-direction:column;gap:.55rem;margin-top:.6rem}.tier-row{display:grid;grid-template-columns:110px 1fr 80px;align-items:center;gap:.7rem}.tier-label{font-size:.82rem;color:var(--muted);text-align:left}.tier-track{margin:0}.tier-count{font-size:.82rem;text-align:right;font-variant-numeric:tabular-nums}.assessment-cta{display:flex;flex-direction:column;gap:.7rem;width:100%;cursor:pointer;text-align:left;align-items:flex-start;padding:1.6rem;border:2px solid var(--accent);background:var(--surface)}.assessment-cta h2{font-size:1.35rem}.assessment-cta-btn{margin-top:.4rem}.auth-main{align-items:center}.auth-card{width:100%;max-width:420px;display:flex;flex-direction:column;gap:.6rem}.auth-form{display:flex;flex-direction:column;gap:.7rem;margin-top:.5rem}.auth-error{color:var(--bad);font-size:.9rem}.auth-switch{text-align:center}.btn-link{background:none;border:none;color:var(--accent);cursor:pointer;font-size:inherit;font-weight:600;padding:0}.verify-banner,.notice-banner{display:flex;align-items:center;justify-content:center;gap:.8rem;padding:.55rem 1rem;font-size:.9rem;background:color-mix(in srgb,var(--warn) 14%,var(--surface));border-bottom:1px solid var(--border)}.notice-banner{background:var(--accent-soft)}.learner-list{display:flex;flex-direction:column;gap:.7rem}.learner-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem}.learner-main{display:flex;align-items:center;gap:.8rem;background:none;border:none;cursor:pointer;color:var(--text);font-size:1rem}.learner-avatar{width:2.4rem;height:2.4rem;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:800;display:flex;align-items:center;justify-content:center}.learner-name{font-weight:600;display:flex;align-items:center;gap:.6rem}.active-chip{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,var(--surface));font-size:.7rem;font-weight:700;border-radius:999px;padding:.1rem .55rem}.remove-confirm{font-size:.85rem;color:var(--muted);display:flex;align-items:center;gap:.4rem}.add-learner{display:flex;gap:.7rem}.review-split{display:flex;gap:1rem;align-items:flex-start}.review-left,.review-right{flex:1;min-width:0}.review-line{display:flex;gap:.5rem;align-items:baseline;width:100%;text-align:left;background:none;border:none;padding:4px 6px;border-radius:6px;cursor:pointer;font:inherit;color:inherit}.review-line:hover{background:#7f7f7f14}.review-line-selected{outline:2px solid var(--accent, #2563eb)}.review-qmark{font-weight:700;width:1.2rem}.review-qmark-miss,.review-scratch-miss{color:var(--bad, #dc2626)}.review-response-head{display:flex;justify-content:space-between;align-items:center}.review-chat{border-top:1px solid var(--border, #d8d8e0);margin-top:.7rem;padding-top:.6rem}.review-chat-history{max-height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:.4rem}.chat-student{opacity:.85}.review-chat-input{display:flex;gap:.4rem;margin-top:.6rem}.review-chat-input .input{flex:1}.voice-live{outline:2px solid var(--bad, #dc2626)}@media(max-width:640px){.review-split{flex-direction:column}}.creds-editor{display:flex;gap:.5rem;flex-wrap:wrap;width:100%;margin-top:.5rem}.creds-editor .input{flex:1;min-width:140px}.learner-username{font-size:.8rem;margin-left:.5rem}.ink-off{opacity:.35;pointer-events:none}.q-rail{display:flex;flex-direction:column;gap:4px;position:sticky;top:.5rem;max-height:calc(100vh - 5rem);overflow-y:auto;padding:2px;flex:0 0 auto}.q-rail-item{width:34px;height:30px;border-radius:8px;border:1.5px solid var(--border);background:var(--surface);color:var(--muted);font-weight:700;font-size:.8rem;cursor:pointer}.q-rail-current{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.q-rail-answered{border-color:var(--accent);color:var(--text)}.q-rail-right{border-color:var(--ok);color:var(--ok)}.q-rail-wrong{border-color:var(--bad);color:var(--bad)}.nav-bar{display:flex;gap:.8rem;align-items:center;justify-content:center}@media(max-width:640px){.q-rail{flex-direction:row;flex-wrap:wrap;position:static;max-height:none;width:100%}}.pace-chip{margin-left:.7rem;font-size:.8rem;font-weight:600;padding:2px 8px;border-radius:999px}.pace-chip-elite{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,transparent)}.pace-chip-over{color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent)}.pace-chip-slow{color:var(--bad);background:color-mix(in srgb,var(--bad) 12%,transparent)}.install-fab{position:fixed;right:1rem;bottom:1rem;z-index:40;box-shadow:0 4px 14px #0003}.game-hud{display:flex;align-items:center;gap:.6rem}.hud-timer{font-variant-numeric:tabular-nums;font-weight:900;font-size:1.05rem;padding:3px 12px;border-radius:10px;letter-spacing:.03em;background:linear-gradient(180deg,#1d2230,#0d0f16);border:1px solid rgba(255,255,255,.14);box-shadow:inset 0 1px #ffffff2e,0 3px 8px #00000059}.hud-ahead{color:#4ade80;text-shadow:0 0 10px rgba(74,222,128,.6)}.hud-behind{color:#f87171;text-shadow:0 0 10px rgba(248,113,113,.6)}.bonus-box{position:relative;min-width:66px;text-align:center;padding:3px 12px;border-radius:10px;background:linear-gradient(180deg,#ffd75e,#f5a623 55%,#d97706);border:2px solid #b45309;box-shadow:inset 0 2px #ffffff8c,inset 0 -3px #00000040,0 3px 8px #00000059;animation:none}.bonus-box[data-bumped=true]{animation:bonus-bump .45s cubic-bezier(.28,2.2,.5,1)}.bonus-value{font-weight:900;font-size:1.05rem;font-variant-numeric:tabular-nums;font-family:ui-rounded,-apple-system,Segoe UI,sans-serif;letter-spacing:.02em;color:#3b2303;text-shadow:0 1px 0 rgba(255,255,255,.5);display:inline-block;animation:bonus-flip .4s ease}.bonus-negative{color:#7f1d1d}.bonus-pop{position:absolute;left:50%;top:-4px;transform:translate(-50%);font-weight:900;font-size:1rem;font-family:ui-rounded,-apple-system,Segoe UI,sans-serif;pointer-events:none;white-space:nowrap;animation:bonus-pop-rise .9s ease-out forwards;-webkit-text-stroke:1px rgba(0,0,0,.45)}.bonus-pop-plus{color:#4ade80}.bonus-pop-minus{color:#f87171}@keyframes bonus-bump{0%{transform:translateY(0)}30%{transform:translateY(-9px) scale(1.06,.94)}60%{transform:translateY(2px) scale(.97,1.03)}to{transform:translateY(0) scale(1)}}@keyframes bonus-pop-rise{0%{transform:translate(-50%);opacity:1}to{transform:translate(-50%,-34px);opacity:0}}@keyframes bonus-flip{0%{transform:scaleY(.2)}60%{transform:scaleY(1.15)}to{transform:scaleY(1)}}.answer-row{display:flex;align-items:center;gap:.9rem}.answer-row .choices,.answer-row .written-answer-row{flex:1;margin-bottom:0}.next-inline{flex:0 0 auto}@media(max-width:640px){.answer-row{flex-wrap:wrap}.next-inline{width:100%}}.ascent{position:relative;color:#ffe8d6}.ascent-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;overflow:hidden}.ascent-sky{position:absolute;top:0;right:0;bottom:0;left:0;transition:background 2.5s ease}.ascent-ridge{position:absolute;left:0;right:0;bottom:0;width:100%;height:58vh}.ascent-veil{position:absolute;top:0;right:0;bottom:0;left:0;background:#08041400;transition:background 2s ease}.ascent-veil-on{background:#08041473}.ascent-aurora{position:absolute;left:10%;right:10%;top:4%;height:30%;background:radial-gradient(60% 100% at 50% 0%,rgba(126,240,192,.35),rgba(126,200,255,.12) 60%,transparent 80%);filter:blur(18px);animation:aurora-sway 9s infinite alternate ease-in-out}@keyframes aurora-sway{to{transform:translate(6%) skew(-6deg)}}.ascent>*:not(.ascent-backdrop){position:relative;z-index:1}.ascent .session-head{background:#10081e99;border-bottom-color:#ffb47840;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.ascent .session-title{color:#ffe8d6}.ascent-trail{position:relative;height:40px;margin:0 1rem}.ascent-trail svg{width:100%;height:100%}.ascent-lantern{position:absolute;width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff7d0,#ffb45e 60%,#a03c1e);box-shadow:0 0 18px 6px #ffc878bf;transition:left 1.2s cubic-bezier(.3,1.2,.4,1),top 1.2s ease;animation:lanternpulse 2.2s infinite ease-in-out}@keyframes lanternpulse{50%{box-shadow:0 0 26px 9px #ffc878e6}}.ascent .card,.ascent .q-card,.ascent .work-area{background:#140c288c;border-color:#ffb4784d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 14px 40px #0006;color:#ffe8d6}.ascent .muted{color:#d8b39a}.ascent .choice{background:#3c1e4699;border-color:#ffaa6e59;color:#ffe8d6}.ascent .choice:hover{background:#783c5ab3;box-shadow:0 0 14px #ffa05a66}.ascent .choice-selected{border-color:#ffcf70;background:#965a3ca6}.ascent .choice-correct{border-color:#7ef0c0;background:#1e5a4699}.ascent .choice-wrong{border-color:#ff7a7a;background:#6e1e2899}.ascent .btn-primary,.ascent .next-inline{background:linear-gradient(180deg,#ffb45e,#d4694e);color:#3a1608;border:1px solid #ffd0a0;box-shadow:0 5px 18px #ff8c3c73}.ascent .btn-ghost{color:#ffcf9e}.ascent .input,.ascent .work-input{background:#1e1032b3;border-color:#ffb47859;color:#ffe8d6}.ascent .key{background:#3c1e4699;border-color:#ffaa6e4d;color:#ffe8d6}.ascent .mode-container{background:#140c288c;border-color:#ffb4784d;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.ascent .mode-ranked .mode-name{color:#ffcf70}.ascent .mode-learning .mode-name{color:#9fd8ff}.ascent .q-rail-item{background:#140c2899;border-color:#ffb4784d;color:#d8b39a}.ascent .q-rail-current{border-color:#ffcf70;background:#965a3c99;color:#ffe9a8}.ascent .q-rail-answered{border-color:#ffb45e;color:#ffe8d6}.ascent .q-rail-right{border-color:#7ef0c0;color:#7ef0c0}.ascent .q-rail-wrong{border-color:#ff7a7a;color:#ff7a7a}.ascent-alt{color:#ffd9b8;letter-spacing:.12em;font-weight:700;font-size:.78rem}.ascent-dim-note{color:#ff9d7a;letter-spacing:.02em;font-weight:600;text-transform:none}.ascent .ink-canvas{color:#ffe8d6}.ascent .progress-track{background:#ffdca026}.ascent .progress-fill{background:linear-gradient(90deg,#ffb45e,#ffe9a8)}.ascent .work-line,.ascent .review-line{color:#ffe8d6}.ascent .steptype-chip{background:#3c1e4699;border-color:#ffaa6e4d;color:#ffe8d6}.world-row{display:flex;gap:.6rem;flex-wrap:wrap}.world-chip{flex:1 1 150px;text-align:left;border:2px solid var(--border);border-radius:14px;padding:.7rem .9rem;background:var(--surface);cursor:pointer;color:var(--text)}.world-chip .world-label{display:block;font-weight:800}.world-chip .world-blurb{display:block;font-size:.78rem;color:var(--muted)}.world-active{border-color:var(--accent);background:var(--accent-soft)}.obsw{position:relative;color:#dbe6ff}.obsw>*:not(.ascent-backdrop){position:relative;z-index:1}.obs-nebula{position:absolute;width:70vw;height:70vw;right:-20vw;top:-25vw;background:radial-gradient(circle at 40% 60%,rgba(147,51,234,.3),rgba(37,99,235,.15) 45%,transparent 70%);filter:blur(30px);animation:drift 40s infinite alternate ease-in-out}@keyframes drift{to{transform:translate(-6vw,4vw) rotate(8deg)}}.obs-stars{position:absolute;top:0;right:0;bottom:0;left:0}.obs-star{position:absolute;background:#fff;border-radius:50%;opacity:.8;animation:twinkle 3s infinite ease-in-out}@keyframes twinkle{50%{opacity:.15}}.obs-torus{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);width:120vmin;height:120vmin;opacity:.45;animation:slowspin 90s linear infinite}@keyframes slowspin{to{transform:translate(-50%,-50%) rotate(360deg)}}.obsw .session-head{background:#080c2099;border-bottom-color:#78a0ff4d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.obsw .card,.obsw .q-card,.obsw .work-area{background:#0a0e228c;border-color:#78a0ff59;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#dbe6ff;box-shadow:0 0 50px #3c64ff1f}.obsw .muted{color:#93a4d8}.obsw .choice{background:#1e2a5a99;border-color:#78a0ff4d;color:#dbe6ff}.obsw .choice:hover{background:#3b5ab4b3;box-shadow:0 0 16px #5a8cff73}.obsw .choice-selected{border-color:#9fc0ff;background:#3b5ab4b3}.obsw .choice-correct{border-color:#7ef0c0;background:#19504199}.obsw .choice-wrong{border-color:#ff7a7a;background:#641e2d99}.obsw .btn-primary,.obsw .next-inline{background:linear-gradient(180deg,#4f83f7,#2547b8);color:#fff;border:1px solid #6b9aff;box-shadow:0 0 20px #5a8cff80}.obsw .btn-ghost{color:#9fc0ff}.obsw .input,.obsw .work-input{background:#0f1430b3;border-color:#78a0ff4d;color:#dbe6ff}.obsw .key,.obsw .steptype-chip{background:#1e2a5a99;border-color:#78a0ff40;color:#dbe6ff}.obsw .mode-container,.obsw .q-rail-item{background:#0a0e2299;border-color:#78a0ff4d;color:#93a4d8}.obsw .q-rail-current{border-color:#9fc0ff;background:#3b5ab48c;color:#dbe6ff}.obsw .q-rail-right{border-color:#7ef0c0;color:#7ef0c0}.obsw .q-rail-wrong{border-color:#ff7a7a;color:#ff7a7a}.obsw .ascent-lantern{background:radial-gradient(circle at 35% 35%,#fff,#ffe9a8 55%,#b98a2e);box-shadow:0 0 18px 6px #ffe9a8cc}.obsw .ascent-alt{color:#9fc0ff}.obsw .ink-canvas{color:#dbe6ff}.machw{position:relative;color:#ffe6b0}.machw>*:not(.ascent-backdrop){position:relative;z-index:1}.mach-gear{position:absolute;opacity:.55;pointer-events:none}.mach-gear svg{width:100%;height:100%;animation:gearspin 40s linear infinite}.mach-gear-a{left:-140px;top:-110px;width:400px;height:400px}.mach-gear-b{right:-170px;bottom:-150px;width:500px;height:500px}.mach-gear-b svg{animation-direction:reverse;animation-duration:60s}@keyframes gearspin{to{transform:rotate(360deg)}}.mach-rune{position:absolute;font-family:Georgia,serif;color:#ffcd7821;font-size:2.2rem;pointer-events:none}.machw .session-head{background:#140f08b3;border-bottom-color:#a0783c66}.machw .card,.machw .q-card,.machw .work-area{background:linear-gradient(180deg,#241c12,#16110a);border:2px solid #7a5c2e;color:#ffe6b0;box-shadow:inset 0 1px #ffd78c33,inset 0 0 34px #0000008c,0 12px 38px #0009}.machw .q-prompt{color:#ffdf9e;font-family:Georgia,serif}.machw .muted{color:#c9a76a}.machw .choice{background:linear-gradient(180deg,#3a2d18,#241a0e);border:1.5px solid #8a6a34;color:#ffe6b0;border-radius:8px}.machw .choice:hover{border-color:#ffcf70;box-shadow:0 0 14px #ffbe5059}.machw .choice-selected{border-color:#ffcf70;background:linear-gradient(180deg,#4a3a1e,#2e2212)}.machw .choice-correct{border-color:#9be8a8;background:#2846238c}.machw .choice-wrong{border-color:#ff8a7a;background:#5a23198c}.machw .btn-primary,.machw .next-inline{background:linear-gradient(180deg,#caa04e,#8a6a34);color:#221604;border:2px solid #e8c887;border-radius:8px;text-transform:uppercase;letter-spacing:.06em}.machw .btn-ghost{color:#e8c887}.machw .input,.machw .work-input{background:#1c150c;border-color:#8a6a34;color:#ffe6b0}.machw .key,.machw .steptype-chip{background:linear-gradient(180deg,#3a2d18,#241a0e);border-color:#8a6a34;color:#ffe6b0}.machw .mode-container,.machw .q-rail-item{background:#1e160ccc;border-color:#7a5c2e;color:#c9a76a}.machw .q-rail-current{border-color:#ffcf70;background:#3a2d18;color:#ffe6b0}.machw .q-rail-right{border-color:#9be8a8;color:#9be8a8}.machw .q-rail-wrong{border-color:#ff8a7a;color:#ff8a7a}.machw .ascent-lantern{background:radial-gradient(circle at 35% 35%,#fff3c9,#ffcf70 55%,#7a4a12);box-shadow:0 0 16px 5px #ffcf70b3}.machw .ascent-alt{color:#e8c887}.machw .ink-canvas{color:#ffe6b0}.cozyw{position:relative;color:#6b3a55}.cozyw>*:not(.ascent-backdrop){position:relative;z-index:1}.cozy-float{position:absolute;bottom:-6%;font-size:1.4rem;opacity:.7;animation:cozy-rise 14s linear infinite}@keyframes cozy-rise{to{transform:translateY(-110vh) rotate(20deg);opacity:0}}.cozy-critters{position:absolute;left:0;right:0;bottom:0;width:100%;height:150px;opacity:.95}.cozy-veil.ascent-veil-on{background:#785a8c47}.cozyw .session-head{background:#fff0f8bf;border-bottom-color:#ffb8d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.cozyw .session-title{color:#b04a7e}.cozyw .card,.cozyw .q-card,.cozyw .work-area{background:#fffafdd1;border:2px solid #ffc4de;border-radius:22px;color:#6b3a55;box-shadow:0 10px 30px #ff96be40;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.cozyw .muted{color:#b07a96}.cozyw .choice{background:#fff0f7;border:2px solid #ffc4de;color:#8a4a68;border-radius:16px}.cozyw .choice:hover{background:#ffe3f0;box-shadow:0 4px 14px #ff96be59}.cozyw .choice-selected{border-color:#ff8ab8;background:#ffd9ec}.cozyw .choice-correct{border-color:#7ed9a8;background:#e2fff0}.cozyw .choice-wrong{border-color:#ff9a9a;background:#ffe8e8}.cozyw .btn-primary,.cozyw .next-inline{background:linear-gradient(180deg,#ff9ec6,#ff6ba3);color:#fff;border:2px solid #ffc4de;border-radius:999px;box-shadow:0 6px 16px #ff78aa66}.cozyw .btn-ghost{color:#e0559a}.cozyw .input,.cozyw .work-input{background:#fff6fa;border-color:#ffc4de;color:#6b3a55}.cozyw .key,.cozyw .steptype-chip{background:#fff0f7;border-color:#ffc4de;color:#8a4a68;border-radius:12px}.cozyw .mode-container,.cozyw .q-rail-item{background:#fff6fad9;border-color:#ffc4de;color:#b07a96}.cozyw .q-rail-current{border-color:#ff8ab8;background:#ffd9ec;color:#b04a7e}.cozyw .q-rail-right{border-color:#4cbf85;color:#2f9e68}.cozyw .q-rail-wrong{border-color:#ff7a7a;color:#e05555}.cozyw .ascent-lantern{background:radial-gradient(circle at 35% 35%,#fff,#ff9ec6 55%,#d14a86);box-shadow:0 0 16px 5px #ff9ec6cc}.cozyw .ascent-alt{color:#d1699e}.cozyw .hud-timer{background:linear-gradient(180deg,#fff0f7,#ffd9ec);border-color:#ffb8d9}.cozyw .hud-ahead{color:#2f9e68;text-shadow:none}.cozyw .hud-behind{color:#e05555;text-shadow:none}.cozyw .bonus-box{background:linear-gradient(180deg,#ffd9ec,#ff9ec6 60%,#e0559a);border-color:#d14a86}.cozyw .bonus-value{color:#6b1f45;text-shadow:0 1px 0 rgba(255,255,255,.6)}.cozyw .ink-canvas{color:#8a4a68}.ink-wrap{position:relative}.band-chips{position:absolute;right:6px;left:auto;z-index:2;pointer-events:none}.band-chip{position:absolute;right:0;font-size:.8rem;padding:1px 7px;border-radius:999px;background:#7f7f7f2e;pointer-events:auto;cursor:default}.band-stray{cursor:pointer;background:#dc783c40}.band-info-i{font-size:.7rem;margin-left:3px;opacity:.8}.band-infobox{position:absolute;right:0;width:240px;font-size:.78rem;line-height:1.4;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:8px 10px;pointer-events:auto;box-shadow:0 6px 20px #00000040}.session-left{display:flex;flex-direction:column;gap:.7rem;flex:0 0 168px;position:sticky;top:.5rem;max-height:calc(100vh - 4rem)}.session-left .mode-container{position:static;max-width:none}.session-left .q-rail{position:static;max-height:none;overflow-y:auto;flex:1}.q-rail-item{width:100%;height:auto;display:flex;gap:6px;align-items:baseline;padding:3px 7px;text-align:left}.q-rail-num{font-weight:800;flex:0 0 auto}.q-rail-hint{font-weight:500;font-size:.68rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.85}@media(max-width:640px){.session-left{position:static;flex-direction:column;width:100%;flex-basis:auto;max-height:none}.q-rail{flex-direction:column;max-height:180px}}.session-main{max-width:min(1240px,97vw);margin:0 auto;width:100%;padding:.8rem;gap:.7rem}.session-body{gap:.6rem}.session-body .card{padding:.8rem 1rem}.ascent-trail{height:20px;margin:0 1rem}.ascent-trail svg{display:block}.choices{gap:.45rem}.choice{min-width:150px;padding:.6rem .8rem}.cozy-critters{height:64px;opacity:.85}.cozy-float{font-size:.95rem}.q-prompt{margin-bottom:.7rem}.confirm-bar{padding-bottom:.8rem}.work-area{gap:.35rem}.recog-block{border-top:1px solid var(--border);margin-top:.7rem;padding-top:.7rem;display:flex;flex-direction:column;gap:.45rem}.recog-row{display:flex;gap:.5rem;align-items:center}.recog-row .input{font-family:Georgia,serif}.recog-note{font-size:.78rem}body.ascent #root>*,body.obsw #root>*,body.machw #root>*,body.cozyw #root>*{position:relative;z-index:1}body.ascent,body.obsw,body.machw{background:#0a0714}body.cozyw{background:#ffd9ec}.ascent .app-nav,.ascent .landing-nav{background:#10081ea6;border-bottom-color:#ffb47840;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.ascent .stat-card,.ascent .how-card,.ascent .preset-card,.ascent .world-chip{background:#140c288c;border-color:#ffb4784d;color:#ffe8d6}.ascent .landing-hero h1,.ascent h1,.ascent h2,.ascent h3{color:#ffe8d6}.ascent .landing-footer{color:#d8b39a;border-top-color:#ffb47833}.ascent .world-active{border-color:#ffcf70;background:#965a3c80}.ascent .brand{color:#ffe8d6}.obsw .app-nav,.obsw .landing-nav{background:#080c20a6;border-bottom-color:#78a0ff4d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.obsw .stat-card,.obsw .how-card,.obsw .preset-card,.obsw .world-chip{background:#0a0e228c;border-color:#78a0ff59;color:#dbe6ff}.obsw h1,.obsw h2,.obsw h3{color:#dbe6ff}.obsw .landing-footer{color:#93a4d8}.obsw .world-active{border-color:#9fc0ff;background:#3b5ab480}.obsw .brand{color:#dbe6ff}.machw .app-nav,.machw .landing-nav{background:#140f08bf;border-bottom-color:#a0783c66}.machw .stat-card,.machw .how-card,.machw .preset-card,.machw .world-chip{background:linear-gradient(180deg,#241c12,#16110a);border-color:#7a5c2e;color:#ffe6b0}.machw h1,.machw h2,.machw h3{color:#ffdf9e}.machw .landing-footer{color:#c9a76a}.machw .world-active{border-color:#ffcf70;background:#3a2d18}.machw .brand{color:#ffe6b0}.cozyw .app-nav,.cozyw .landing-nav{background:#fff0f8cc;border-bottom-color:#ffb8d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.cozyw .stat-card,.cozyw .how-card,.cozyw .preset-card,.cozyw .world-chip{background:#fffafdd9;border-color:#ffc4de;color:#6b3a55}.cozyw h1,.cozyw h2,.cozyw h3{color:#b04a7e}.cozyw .landing-footer{color:#b07a96}.cozyw .world-active{border-color:#ff8ab8;background:#ffd9ec}.cozyw .brand{color:#b04a7e}.resume-card{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}.resume-text{flex:1;min-width:200px}.history-box{border:2px solid var(--accent);border-radius:12px;padding:.5rem 1rem;background:var(--accent-soft);font-weight:800;color:var(--accent)}.ascent .history-box{background:#965a3c80;border-color:#ffcf70;color:#ffe9a8}.obsw .history-box{background:#3b5ab473;border-color:#9fc0ff;color:#dbe6ff}.machw .history-box{background:linear-gradient(180deg,#3a2d18,#241a0e);border-color:#ffcf70;color:#ffe6b0}.cozyw .history-box{background:#ffd9ec;border-color:#ff8ab8;color:#b04a7e}.pace-play,.pace-hist{padding:.15rem .5rem;font-size:.95rem}.pace-play{color:var(--ok)}.grade-now{flex:0 0 auto}.exam-chat{padding:.7rem 1rem}.practice-panel{display:flex;flex-direction:column;gap:.55rem}.practice-note{font-size:.8rem}.practice-tabs{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.practice-tab{padding:.2rem .7rem;border-radius:999px;border:1.5px solid var(--border);background:var(--surface);color:var(--muted);font-weight:700;cursor:pointer;font-size:.8rem}.practice-tab-on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.practice-tab-right{border-color:var(--ok);color:var(--ok)}.practice-tab-wrong{border-color:var(--bad);color:var(--bad)}.practice-more{padding:.2rem .6rem;font-size:.8rem}.practice-body{display:flex;flex-direction:column;gap:.5rem}.practice-result{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap}.review-practice{border-top:1px solid var(--border);margin-top:.7rem;padding-top:.7rem}
