:root,[data-theme=light]{--bg-canvas: #F8F5EE;--bg-surface: #FFFFFF;--bg-subtle: #EFE9DC;--bg-hover: #E7E0D0;--bg-elevated: #FFFFFF;--bg-card-warm: #FDFBF7;--ink-primary: #1C201D;--ink-secondary: #47504A;--ink-muted: #6F7A73;--ink-faint: #9FAAA2;--ink-inverse: #FFFFFF;--border-subtle: #E4DCCF;--border-strong: #C9BEAC;--brand: #235340;--brand-hover: #1A3E30;--brand-active: #133025;--brand-soft: #E5EFEA;--brand-border: #9FC1B1;--brand-text: #194031;--accent: #C86D24;--accent-hover: #A75718;--accent-active: #8A4611;--accent-soft: #FBF0E4;--accent-border: #ECCAA8;--accent-text: #8E4410;--success: #2E724F;--success-soft: #E6F3EB;--success-border: #A3D4B8;--success-text: #1E4F36;--warn: #B8741A;--warn-soft: #FCF4E7;--warn-border: #E8CA98;--warn-text: #78470B;--danger: #B54238;--danger-soft: #FAEBEA;--danger-border: #E8AFA9;--danger-text: #7D2820;--info: #35627A;--info-soft: #EAF1F5;--info-border: #A9C8D9;--info-text: #214152;--fill-accent: #235340;--fill-accent-deep: #16382B;--on-accent: #FFFFFF;--fill-success: #2E724F;--fill-success-deep: #1E4F36;--on-success: #FFFFFF;--fill-warn: #D88924;--fill-warn-deep: #9E5E0F;--on-warn: #1C201D;--fill-danger: #B54238;--fill-danger-deep: #7D2820;--on-danger: #FFFFFF;--shadow-sm: 0 1px 2px rgba(28, 32, 29, .05);--shadow-md: 0 3px 6px -1px rgba(28, 32, 29, .07), 0 2px 4px -1px rgba(28, 32, 29, .04);--shadow-lg: 0 8px 18px -3px rgba(28, 32, 29, .09), 0 3px 6px -2px rgba(28, 32, 29, .04);--shadow-tactile-sm: 0 2px 0 var(--border-strong);--shadow-tactile-md: 0 3px 0 var(--border-strong);--shadow-tactile-primary: 0 3px 0 #133025;--shadow-tactile-accent: 0 3px 0 #8A4611;--shadow-tactile-success: 0 3px 0 #1E4F36;--shadow-tactile-danger: 0 3px 0 #7D2820;--tile-unit-bg: #EAE3D2;--tile-unit-border: #C8BA9E;--tile-unit-ink: #2C281F;--tile-unitneg-bg: #F4D5D0;--tile-unitneg-border: #D89F96;--tile-unitneg-ink: #541E18;--tile-x-bg: #D1E5DA;--tile-x-border: #99C3AD;--tile-x-ink: #143A28;--tile-xneg-bg: #F8D9CD;--tile-xneg-border: #DF9E86;--tile-xneg-ink: #5C2614;--tile-x2-bg: #C3DBCE;--tile-x2-border: #7EAFA0;--tile-x2-ink: #0E2B1D;--tile-one-bg: #F3EBDD;--tile-one-border: #D4C3A9;--tile-one-ink: #3A3224;--tile-oneneg-bg: #F9DDD7;--tile-oneneg-border: #E0A69A;--tile-oneneg-ink: #611D15;--scale-pan-bg: #F4ECE1;--scale-pan-border: #C9BCA8;--scale-beam: #8C7B65;--graph-grid: rgba(28, 32, 29, .08);--graph-axis: #47504A}[data-theme=dark]{--bg-canvas: #121715;--bg-surface: #19201C;--bg-subtle: #212B26;--bg-hover: #2B3731;--bg-elevated: #242F2A;--bg-card-warm: #1D2521;--ink-primary: #EDE8DF;--ink-secondary: #AFBDB4;--ink-muted: #7E8E84;--ink-faint: #4F5D54;--ink-inverse: #121715;--border-subtle: #2A3630;--border-strong: #3B4A42;--brand: #459E7A;--brand-hover: #58B690;--brand-active: #348061;--brand-soft: rgba(69, 158, 122, .16);--brand-border: #2D5F4A;--brand-text: #8DD4B5;--accent: #E08234;--accent-hover: #EE964D;--accent-active: #BA641C;--accent-soft: rgba(224, 130, 52, .16);--accent-border: #6B3B15;--accent-text: #F7BA83;--success: #459E7A;--success-soft: rgba(69, 158, 122, .16);--success-border: #265942;--success-text: #8DD4B5;--warn: #DFA03D;--warn-soft: rgba(223, 160, 61, .16);--warn-border: #6E4913;--warn-text: #F5CE86;--danger: #DF5D52;--danger-soft: rgba(223, 93, 82, .16);--danger-border: #6B2620;--danger-text: #F4A199;--info: #5691AF;--info-soft: rgba(86, 145, 175, .16);--info-border: #234859;--info-text: #96C5DE;--fill-accent: #337A5D;--fill-accent-deep: #1E4F3B;--on-accent: #EDE8DF;--fill-success: #337A5D;--fill-success-deep: #1E4F3B;--on-success: #EDE8DF;--fill-warn: #BA7D24;--fill-warn-deep: #825310;--on-warn: #EDE8DF;--fill-danger: #B54238;--fill-danger-deep: #7D2820;--on-danger: #EDE8DF;--shadow-tactile-sm: 0 2px 0 var(--border-strong);--shadow-tactile-md: 0 3px 0 var(--border-strong);--shadow-tactile-primary: 0 3px 0 #1E4F3B;--shadow-tactile-accent: 0 3px 0 #6B3B15;--shadow-tactile-success: 0 3px 0 #1E4F3B;--shadow-tactile-danger: 0 3px 0 #4D1A16;--tile-unit-bg: #2C2920;--tile-unit-border: #4D4636;--tile-unit-ink: #EDE8DF;--tile-unitneg-bg: #351C1A;--tile-unitneg-border: #61332F;--tile-unitneg-ink: #F9DDD7;--tile-x-bg: #1B3125;--tile-x-border: #2D5841;--tile-x-ink: #D1E5DA;--tile-xneg-bg: #361F17;--tile-xneg-border: #663929;--tile-xneg-ink: #F8D9CD;--tile-x2-bg: #173628;--tile-x2-border: #286146;--tile-x2-ink: #C3DBCE;--scale-pan-bg: #252D28;--scale-pan-border: #3E4B43;--scale-beam: #687970;--graph-grid: rgba(237, 232, 223, .08);--graph-axis: #7E8E84}:root{--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-full: 9999px;--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-math: "STIX Two Math", "KaTeX_Main", "Cambria Math", serif;--ease-tactile: cubic-bezier(.2, .8, .2, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--t-fast: .14s;--t-med: .22s}:root{--bg: var(--bg-canvas);--canvas: var(--bg-canvas);--surface: var(--bg-surface);--surface-1: var(--bg-surface);--surface-2: var(--bg-subtle);--surface-3: var(--bg-elevated);--bg-overlay: rgba(28, 32, 29, .45);--ink: var(--ink-primary);--ink-2: var(--ink-secondary);--ink-3: var(--ink-muted);--primary: var(--brand);--primary-hover: var(--brand-hover);--primary-strong: var(--brand-active);--primary-soft: var(--brand-soft);--primary-ink: var(--on-accent);--accent-primary: var(--accent);--secondary: var(--info);--secondary-soft: var(--info-soft);--success-primary: var(--success);--success-strong: var(--fill-success-deep);--success-hover: var(--fill-success-deep);--warn-primary: var(--warn);--warn-strong: var(--fill-warn-deep);--warn-hover: var(--fill-warn-deep);--danger-primary: var(--danger);--danger-hover: var(--fill-danger-deep);--info-primary: var(--info);--info-hover: var(--fill-accent-deep);--shadow-card: var(--shadow-md);--shadow-tactile: var(--shadow-tactile-md);--shadow-xs: var(--shadow-sm);--brand-shadow: var(--brand);--brand-glow: none;--accent-shadow: var(--shadow-tactile-accent);--success-shadow: var(--shadow-tactile-success);--warn-shadow: var(--shadow-tactile-md);--danger-shadow: var(--shadow-tactile-danger);--info-shadow: var(--shadow-sm);--r-xs: var(--radius-xs);--r-sm: var(--radius-sm);--r-md: var(--radius-md);--r-lg: var(--radius-lg);--r-xl: var(--radius-xl);--r-2xl: 24px;--r-pill: var(--radius-full);--font-sans: var(--font-body);--font-ui: var(--font-body);--font-mono: "Cascadia Code", Consolas, monospace;--duration-fast: var(--t-fast);--duration-normal: var(--t-med);--ease-bounce: var(--ease-out);--border: var(--border-subtle);--border-focus: var(--brand);--border-interactive: var(--border-strong);--focus: var(--brand);--sky-soft: var(--info-soft);--sky-primary: var(--info);--sky-border: var(--info-border);--coral-soft: var(--danger-soft);--coral-primary: var(--danger);--coral-border: var(--danger-border);--pink: var(--accent);--pink-soft: var(--accent-soft);--pink-border: var(--accent-border);--cyan-soft: var(--info-soft);--cyan-primary: var(--info);--cyan-border: var(--info-border);--unit-1: #35627A;--unit-2: #2E724F;--unit-3: #C86D24;--unit-4: #235340;--unit-5: #B54238;--unit-6: #35627A;--unit-7: #B8741A;--unit-8: #2E724F;--unit-9: #8A4611;--unit-10: #235340;--unit-11: #35627A;--unit-12: #7D2820;--topbar-h: 60px;--bottomnav-h: 64px;--content-max: 1100px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--locked: var(--ink-faint);--locked-soft: var(--bg-subtle)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-sans);font-size:15.5px;line-height:1.6;color:var(--ink-primary);background-color:var(--bg-canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{min-height:100vh;display:flex;flex-direction:column;background-color:var(--bg-canvas)}#root{display:flex;flex-direction:column;min-height:100vh}a{color:var(--accent-primary);text-decoration:none;transition:all var(--duration-fast) var(--ease-out)}a:hover{color:var(--accent-hover)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--border-focus);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-100px;left:var(--sp-4);background:var(--accent-primary);color:var(--ink-inverse);padding:var(--sp-2) var(--sp-4);border-radius:var(--r-md);z-index:1000;font-weight:700;box-shadow:var(--shadow-md);transition:transform var(--duration-fast) var(--ease-out)}.skip-link:focus{top:var(--sp-4)}.app-shell{display:flex;min-height:100vh;background-color:var(--bg-canvas)}.app-main{flex:1;display:flex;flex-direction:column;min-width:0;padding-bottom:calc(var(--bottomnav-h) + 28px)}@media (min-width: 820px){.app-main{padding-bottom:40px}}.page{width:100%;max-width:1040px;margin:0 auto;padding:var(--sp-6) var(--sp-4) var(--sp-12);animation:pageFadeIn .3s var(--ease-out)}.page--wide{max-width:1200px}.page--narrow{max-width:760px}@keyframes pageFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.app-topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);height:var(--topbar-h);padding:0 var(--sp-4);background:color-mix(in srgb,var(--bg-surface) 92%,transparent);border-bottom:2px solid var(--border-subtle);position:sticky;top:0;z-index:40;box-shadow:var(--shadow-xs)}@media (min-width: 768px){.app-topbar{padding:0 var(--sp-6)}}@media (max-width: 400px){.brand__text{display:none}.brand{font-size:0}}@media (max-width: 560px){.topbar-right .profile-pill--streak{display:none}}@media (max-width: 440px){.topbar-right .profile-pill--star{display:none}.avatar-btn{max-width:190px}}.brand{display:flex;align-items:center;gap:var(--sp-2);font-weight:800;font-size:16px;color:var(--ink-primary);letter-spacing:-.02em;transition:transform var(--duration-fast) var(--ease-out);white-space:nowrap;min-width:0;overflow:hidden}.brand:hover{transform:scale(1.03)}.brand__mark{display:grid;place-items:center;width:36px;height:36px;border-radius:var(--r-md);background:var(--fill-accent);color:var(--on-accent);font-weight:900;font-size:15px;box-shadow:var(--shadow-sm)}.nav-links{display:none;align-items:center;gap:var(--sp-1)}@media (min-width: 820px){.nav-links{display:flex}}.nav-link{display:inline-flex;align-items:center;gap:var(--sp-2);padding:8px 14px;border-radius:var(--r-pill);color:var(--ink-secondary);font-size:14.5px;font-weight:600;transition:all var(--duration-fast) var(--ease-out)}.nav-link:hover{background:var(--bg-subtle);color:var(--accent-primary);transform:translateY(-1px)}.nav-link--active{background:var(--accent-soft);color:var(--accent-primary);font-weight:700;box-shadow:inset 0 0 0 1.5px var(--accent-border)}.topbar-right{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.profile-pill{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;background:var(--bg-surface);border:1.5px solid var(--border-subtle);border-radius:var(--r-pill);font-size:13px;color:var(--ink-primary);font-weight:700;box-shadow:var(--shadow-xs);transition:all var(--duration-fast) var(--ease-out);white-space:nowrap;flex-shrink:0}.profile-pill:hover{transform:translateY(-1px) scale(1.02);box-shadow:var(--shadow-sm)}.profile-pill--xp{background:var(--sky-soft);border-color:var(--sky-border);color:var(--sky-primary)}.profile-pill--star{background:var(--warn-soft);border-color:var(--warn-border);color:var(--warn)}.profile-pill--streak{background:var(--coral-soft);border-color:var(--coral-border);color:var(--coral-primary)}.avatar-btn{display:flex;align-items:center;gap:6px;padding:4px 10px 4px 6px;background:var(--bg-surface);border:2px solid var(--accent-border);border-radius:var(--r-pill);font-size:13px;font-weight:700;color:var(--accent-primary);box-shadow:var(--shadow-sm);transition:all var(--duration-fast) var(--ease-out);min-width:0;max-width:150px;flex-shrink:1}.avatar-btn__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar-btn:hover{transform:translateY(-2px) scale(1.04);background:var(--accent-soft);border-color:var(--accent-primary)}.avatar-btn:active{transform:translateY(1px)}.avatar-badge{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--accent-soft);font-size:16px}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:color-mix(in srgb,var(--bg-surface) 95%,transparent);border-top:2px solid var(--border-subtle);padding:6px 12px;z-index:40;box-shadow:var(--shadow-md)}@media (min-width: 820px){.mobile-nav{display:none}}.mobile-nav__links{display:flex;align-items:center;justify-content:space-around;width:100%;max-width:500px;margin:0 auto}.mobile-nav__link{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 10px;border-radius:var(--r-md);color:var(--ink-muted);font-size:11px;font-weight:700;transition:all var(--duration-fast) var(--ease-out)}.mobile-nav__link:hover{color:var(--accent-primary)}.mobile-nav__link--active{color:var(--accent-primary);transform:translateY(-2px)}.mobile-nav__link--active span{color:var(--accent-primary);font-weight:800}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border-radius:var(--r-md);font-weight:700;font-size:14.5px;line-height:1.2;text-align:center;white-space:nowrap;transition:all var(--duration-fast) var(--ease-out);position:relative}.btn:active:not(:disabled){transform:translateY(2px)!important}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none!important;box-shadow:none!important}.btn--primary{background:var(--brand);color:var(--on-accent);border:1px solid var(--brand-active);box-shadow:var(--shadow-tactile-primary)}.btn--primary:hover:not(:disabled){background:var(--brand-hover);transform:translateY(-1px);box-shadow:0 4px 0 var(--brand-active)}.btn--primary:active:not(:disabled){box-shadow:0 2px 0 var(--accent-shadow)}.btn--secondary{background:var(--bg-surface);color:var(--ink-primary);border:2px solid var(--border-strong);box-shadow:0 3px 0 var(--border-strong)}.btn--secondary:hover:not(:disabled){background:var(--bg-subtle);border-color:var(--ink-secondary);box-shadow:0 4px 0 var(--ink-secondary);transform:translateY(-2px)}.btn--secondary:active:not(:disabled){box-shadow:0 1px 0 var(--ink-secondary)}.btn--success{background:var(--success);color:var(--on-success);border:1px solid var(--fill-success-deep);box-shadow:var(--shadow-tactile-success)}.btn--success:hover:not(:disabled){background:var(--fill-success-deep);transform:translateY(-1px);box-shadow:0 4px 0 var(--fill-success-deep)}.btn--success:active:not(:disabled){box-shadow:0 2px 0 var(--success-shadow)}.btn--ghost{background:var(--bg-subtle);color:var(--ink-secondary);border:1px solid var(--border-subtle)}.btn--ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--ink-primary);transform:translateY(-1px)}.btn--lg{padding:14px 28px;font-size:16.5px;border-radius:var(--r-lg)}.btn--sm{padding:6px 14px;font-size:13px;border-radius:var(--r-sm)}.btn--pill{border-radius:var(--r-pill)}.btn{max-width:100%}@media (max-width: 480px){.btn--lg{white-space:normal;line-height:1.3}}.card-clean{background:var(--bg-surface);border:1.5px solid var(--border-subtle);border-radius:var(--r-xl);padding:var(--sp-6);box-shadow:var(--shadow-card);transition:all var(--duration-fast) var(--ease-out)}.card-clean:hover{border-color:var(--border-interactive);box-shadow:var(--shadow-md)}.card-warm{background:var(--bg-card-warm);border:1.5px solid var(--warn-border);border-radius:var(--r-xl);padding:var(--sp-6);box-shadow:var(--shadow-card)}.editorial-hero{background:var(--fill-accent);border-radius:var(--r-2xl);padding:var(--sp-8) var(--sp-6);color:var(--on-accent);margin-bottom:var(--sp-8);position:relative;overflow:hidden}@media (min-width: 768px){.editorial-hero{padding:var(--sp-10) var(--sp-8)}}.editorial-hero:after{content:"";position:absolute;top:-50px;right:-50px;width:240px;height:240px;border-radius:50%;background:transparent;pointer-events:none}.editorial-hero__kicker{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;background:color-mix(in srgb,var(--on-accent) 20%,transparent);padding:4px 12px;border-radius:var(--r-pill);margin-bottom:var(--sp-3)}.editorial-hero__title{font-size:26px;font-weight:900;line-height:1.25;margin-bottom:var(--sp-3);letter-spacing:-.02em}@media (min-width: 768px){.editorial-hero__title{font-size:34px}}.editorial-hero__sub{font-size:15.5px;color:color-mix(in srgb,var(--on-accent) 92%,transparent);line-height:1.6;max-width:680px}.section-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:var(--sp-4);gap:var(--sp-4)}.section-head__kicker{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-primary);margin-bottom:2px}.section-head__title{font-size:20px;font-weight:900;color:var(--ink-primary);letter-spacing:-.01em}.grid-units{display:grid;grid-template-columns:1fr;gap:var(--sp-4)}@media (min-width: 640px){.grid-units{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.grid-units{grid-template-columns:repeat(3,1fr)}}.unit-row{display:flex;flex-direction:column;justify-content:space-between;background:var(--bg-surface);border:1.5px solid var(--border-subtle);border-radius:var(--r-xl);padding:var(--sp-5);box-shadow:var(--shadow-card);transition:all var(--duration-fast) var(--ease-out);position:relative;overflow:hidden}.unit-row:before{content:"";position:absolute;top:0;left:0;right:0;height:6px;background:var(--accent-primary);opacity:.8}.unit-row:hover:not(.unit-row--locked){transform:translateY(-4px);border-color:var(--accent-border);box-shadow:var(--shadow-md)}.unit-row--locked{background:var(--bg-subtle);opacity:.75;cursor:not-allowed;border-style:dashed}.unit-row--locked:before{background:var(--border-strong)}.simlab-numpad-btn{display:flex;align-items:center;justify-content:center;height:52px;font-size:19px;font-weight:800;background:var(--bg-surface);color:var(--ink-primary);border:1.5px solid var(--border-subtle);border-radius:var(--r-md);box-shadow:var(--shadow-tactile);transition:all var(--duration-fast) var(--ease-out);-webkit-user-select:none;user-select:none}.simlab-numpad-btn:hover{background:var(--bg-subtle);border-color:var(--accent-border);transform:translateY(-2px);box-shadow:0 5px 0 var(--border-strong)}.simlab-numpad-btn:active{transform:translateY(2px)!important;box-shadow:0 1px 0 var(--border-strong)!important}.simlab-numpad-btn--op{background:var(--accent-soft);color:var(--accent-primary);border-color:var(--accent-border)}@keyframes popIn{0%{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}.anim-pop{animation:popIn .25s var(--ease-out)}.anim-glow{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent-primary) 10%,transparent)}.mt{margin-top:var(--sp-4)}.ml{margin-left:var(--sp-3)}.btn--accent{background-color:var(--accent);color:var(--on-accent);border:1px solid var(--accent-active);box-shadow:var(--shadow-tactile-accent)}.btn--accent:hover:not(:disabled){background-color:var(--accent-hover);transform:translateY(-1px);box-shadow:0 4px 0 var(--accent-active)}.btn--accent:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 var(--accent-active)}.card--tactile{border-color:var(--border-strong);box-shadow:var(--shadow-tactile-md)}@media (max-width: 819px){.app-topbar{flex-wrap:wrap;gap:6px;padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top))}.brand__text{font-size:14px}.topbar-right{gap:6px}.profile-pill{padding:4px 8px;font-size:12px}.avatar-btn__name{max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page{padding:var(--sp-4) var(--sp-3) var(--sp-8)}.mobile-nav{padding:4px 8px calc(4px + env(safe-area-inset-bottom))}.mobile-nav__link{min-width:56px;min-height:48px;justify-content:center;padding:6px 8px;font-size:10.5px}.app-main{padding-bottom:calc(var(--bottomnav-h) + env(safe-area-inset-bottom,0px) + 20px)}.btn{min-height:44px;padding:10px 16px;font-size:14px}.btn--sm{min-height:38px}input[type=text],input[type=number],input[type=email],input[type=password],select,textarea{min-height:44px;font-size:16px}body{font-size:15px}h1{font-size:22px}h2{font-size:19px}h3{font-size:16.5px}img,svg,video,canvas,table{max-width:100%}pre,code,.katex-display,.katex{max-width:100%;overflow-x:auto;overflow-y:hidden}.katex-display{padding-bottom:4px}}@media (max-width: 480px){.page{padding-left:var(--sp-2);padding-right:var(--sp-2)}.btn{padding:10px 12px}.topbar-right .profile-pill--xp{display:none}}.card{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r-md);font-size:15px;font-weight:600;color:var(--ink);transition:border-color var(--t-fast),background var(--t-fast),transform var(--t-fast),box-shadow var(--t-fast);-webkit-user-select:none;user-select:none}button.card{cursor:pointer}button.card:hover:not(:disabled){border-color:var(--primary);background:var(--primary-soft)}button.card:disabled{opacity:.55;cursor:not-allowed}.card--in{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-ink)}.card--sel{border-color:var(--fill-accent-deep);background:var(--fill-accent);color:var(--on-accent);box-shadow:var(--shadow-sm)}.card--ok{border-color:var(--success);background:var(--success-soft);color:var(--success-strong)}.card--bad{border-color:var(--danger);background:var(--danger-soft);color:var(--danger)}.card--used{opacity:.55;border-style:dashed}.card--token{border-radius:var(--r-pill);background:var(--surface-2);border-color:var(--border-strong);font-family:var(--font-math);font-size:17px;padding:8px 16px}.card--op{min-width:52px;font-family:var(--font-math);font-size:18px}.chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--ink-2);font-size:12.5px;font-weight:600;white-space:nowrap;border:1px solid transparent}.chip--good{background:var(--success-soft);color:var(--success-strong)}.chip--warn{background:var(--warn-soft);color:var(--warn)}.chip--bad{background:var(--danger-soft);color:var(--danger)}.chip--info{background:var(--info-soft);color:var(--info)}.badge{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:var(--r-sm);font-size:12px;font-weight:700;background:var(--surface-2);color:var(--ink-2)}.badges{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.badges-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-3)}.badge-card{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r-lg)}.badge-card__icon{display:grid;place-items:center;width:48px;height:48px;border-radius:var(--r-md);background:var(--warn-soft);font-size:26px;flex:none}.badge-card__body{display:flex;flex-direction:column;gap:2px}.badge-card__name{font-weight:700;font-size:15px}.badge-card__desc{font-size:13px;color:var(--ink-2)}.badge-card__date{font-size:12px;color:var(--ink-3)}.progress{height:8px;border-radius:var(--r-pill);background:var(--surface-3);overflow:hidden}.progress__fill{height:100%;border-radius:var(--r-pill);background:var(--brand);transition:width .3s ease}.stars{display:inline-flex;gap:2px;font-size:16px;line-height:1}.star{color:var(--border-strong)}.star--on{color:var(--warn)}.callout{display:flex;gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--r-lg);background:var(--info-soft);border:1px solid var(--info-border);margin-bottom:var(--sp-4)}.callout--good{background:var(--success-soft);border-color:var(--success-border)}.callout--warn{background:var(--warn-soft);border-color:var(--warn-border)}.callout--think{background:var(--surface-2);border-color:var(--border)}.callout--danger{background:var(--danger-soft);border-color:var(--danger-border)}.callout__title{font-weight:700;margin-bottom:2px;color:var(--ink)}.callout__body{font-size:14.5px;color:var(--ink-2)}.callout__body p{margin:0 0 6px}.callout__body p:last-child{margin-bottom:0}.feedback{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);font-size:14.5px;margin:var(--sp-3) 0;border:1px solid transparent;animation:feedback-in .18s ease}@keyframes feedback-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.feedback--correct{background:var(--success-soft);border-color:var(--success-border);color:var(--success-strong)}.feedback--wrong{background:var(--danger-soft);border-color:var(--danger-border);color:var(--danger-text)}.feedback--fixed{background:var(--warn-soft);border-color:var(--warn-border);color:var(--warn-text)}.feedback__icon{flex:none;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:currentColor;color:var(--on-accent);font-size:13px;font-weight:800;margin-top:1px}.feedback--correct .feedback__icon{background:var(--fill-success)}.feedback--wrong .feedback__icon{background:var(--fill-danger)}.feedback--fixed .feedback__icon{background:var(--fill-warn);color:var(--on-warn)}.feedback__text{line-height:1.5}.hintbox{display:flex;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--warn-soft);border:1px solid var(--warn-border);font-size:14.5px;margin:var(--sp-3) 0;align-items:flex-start}.hintbox__level{flex:none;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--warn);background:var(--bg-surface);border:1px solid var(--warn-border);padding:2px 8px;border-radius:var(--r-pill);margin-top:2px}.hintbox__text{color:var(--warn-text)}.input{width:100%;max-width:320px;padding:10px 14px;border:1.5px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font-size:15px;font-family:inherit;transition:border-color var(--t-fast),box-shadow var(--t-fast)}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.input:disabled{background:var(--surface-2)}.runner{display:flex;flex-direction:column;gap:var(--sp-4)}.runner__head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.runner__prompt{font-size:17px;font-weight:700;color:var(--ink);line-height:1.5}.runner__meta{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.runner__actions{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;border-top:1px solid var(--border);padding-top:var(--sp-4);margin-top:var(--sp-4)}.runner__suggest{font-size:13px;color:var(--warn);font-weight:600}.runner__done{color:var(--success);font-weight:700}.choiceview{display:flex;flex-direction:column;gap:var(--sp-3)}.choice{display:flex;align-items:center;gap:var(--sp-3);width:100%;text-align:left;padding:14px 18px;border-radius:var(--r-md);border:1.5px solid var(--border);background:var(--surface);font-size:16px;font-weight:600;cursor:pointer;transition:border-color var(--t-fast),background var(--t-fast),box-shadow var(--t-fast)}.choice:hover:not(:disabled){border-color:var(--primary);background:var(--primary-soft)}.choice--picked{border-color:var(--primary);background:var(--primary-soft);box-shadow:var(--shadow-sm)}.choice--picked:before{content:"";width:10px;height:10px;border-radius:50%;background:var(--primary);flex:none}.choice__label{flex:1;font-family:var(--font-math);font-size:17px}.inputview{display:flex;flex-direction:column;gap:var(--sp-3);align-items:flex-start}.inputview__label{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;font-weight:600}.sortview{display:flex;flex-direction:column;gap:var(--sp-4)}.sortview__pool{background:var(--surface-2);border-radius:var(--r-md);padding:var(--sp-4)}.sortview__cards{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.sortview__buckets{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--sp-3)}.bucket{background:var(--surface-2);border:1.5px dashed var(--border-strong);border-radius:var(--r-lg);padding:var(--sp-3);min-height:120px}.bucket__name{font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2);margin-bottom:var(--sp-2)}.bucket__items{display:flex;flex-direction:column;gap:var(--sp-2);align-items:stretch}.orderview{display:flex;flex-direction:column;gap:var(--sp-3)}.orderview__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--sp-2)}.order-item{display:flex}.order-item .card{width:100%;justify-content:flex-start;gap:var(--sp-3)}.order-item--ok .card{border-color:var(--success);background:var(--success-soft);color:var(--success-strong)}.order-item__pos{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--surface-3);font-weight:800;font-size:13px;flex:none}.numberline{display:flex;flex-direction:column;gap:var(--sp-5)}.numberline__tokens{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;justify-content:center}.numberline__token{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--r-pill);border:2px dashed var(--border-strong);background:var(--surface);font-size:16px;font-weight:700;color:var(--ink);cursor:pointer;transition:all var(--t-fast);font-family:var(--font-math)}.numberline__token:hover{border-color:var(--primary);background:var(--primary-soft);transform:translateY(-1px)}.numberline__token--active{border-style:solid;border-color:var(--primary);background:var(--primary-soft);box-shadow:0 0 0 3px var(--primary-soft)}.numberline__token--placed{border-style:solid;border-color:var(--success);background:var(--success-soft);color:var(--success-strong)}.numberline__token--disabled{opacity:.7;cursor:default}.numberline__token-dot{width:10px;height:10px;border-radius:50%;background:var(--primary);flex:none}.numberline__token-check{color:var(--success-strong);font-weight:800;flex:none}.numberline__token .katex{font-size:1.05em}.numberline__track{position:relative;padding:46px 0 34px;margin:0 var(--sp-2);overflow-x:auto;min-width:260px}.numberline__axis{position:absolute;top:20px;left:0;right:0;display:flex;align-items:center;gap:0}.numberline__line{flex:1;height:3px;background:var(--ink-2);border-radius:2px}.numberline__arrow{font-size:11px;color:var(--ink-2);line-height:1;flex:none}.numberline__arrow--left{margin-right:2px}.numberline__arrow--right{margin-left:2px}.numberline__markers{position:absolute;top:0;left:0;right:0;height:34px;pointer-events:none}.numberline__marker{position:absolute;transform:translate(-50%);top:0;background:var(--fill-accent);color:var(--on-accent);font-size:13px;font-weight:700;padding:2px 8px;border-radius:var(--r-pill);white-space:nowrap;font-family:var(--font-math);box-shadow:var(--shadow-sm)}.numberline__marker .katex{color:var(--on-accent);font-size:.95em}.numberline__ticks{position:relative;height:40px}.numberline__tick{position:absolute;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:none;padding:0;cursor:pointer;top:0}.numberline__tickmark{width:2px;height:14px;background:var(--ink-2);transition:all var(--t-fast)}.numberline__tick--int .numberline__tickmark,.numberline__tick--frac .numberline__tickmark{height:14px;background:var(--ink-2)}.numberline__tick--mark .numberline__tickmark{background:var(--primary);height:18px}.numberline__tick--hit .numberline__tickmark{background:var(--success)}.numberline__tick--miss .numberline__tickmark{background:var(--danger)}.numberline__tick--slot .numberline__tickmark{background:var(--primary);box-shadow:0 0 0 4px var(--primary-soft)}.numberline__num{font-size:13px;color:var(--ink-2);font-weight:600;font-family:var(--font-math);margin-top:2px}.numberline__tick:hover .numberline__tickmark{background:var(--primary)}.numberline__foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.fracbar{display:flex;flex-direction:column;gap:var(--sp-4)}.fracbar__frac{display:flex;flex-direction:column;align-items:center;font-family:var(--font-math);font-size:26px;line-height:1.1;width:max-content;margin:0 auto}.fracbar__num{padding:0 10px}.fracbar__bar{width:100%;height:3px;background:var(--ink);display:block;margin:2px 0}.fracbar__den{padding:0 10px}.fracbar__barbox{display:flex;width:100%;border:2px solid var(--ink-2);border-radius:var(--r-sm);overflow:hidden;height:56px}.fracbar__seg{flex:1;border:none;border-right:1px solid var(--ink-2);background:var(--surface);cursor:pointer;transition:background var(--t-fast)}.fracbar__seg:last-child{border-right:none}.fracbar__seg--on{background:var(--primary)}.balanceview{display:flex;flex-direction:column;gap:var(--sp-4)}.balance__beam{display:flex;align-items:center;justify-content:center;gap:var(--sp-4);padding:var(--sp-5);background:var(--surface-2);border-radius:var(--r-lg);border:1.5px solid var(--border);transition:background var(--t-med)}.balance__beam--level{background:var(--success-soft);border-color:var(--success-border)}.balance__pan{background:var(--surface);border:1.5px solid var(--border-strong);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);min-width:120px;text-align:center}.balance__expr{font-family:var(--font-math);font-size:20px;font-weight:600}.balance__expr span{color:var(--ink-3);font-size:15px}.balance__pivot{font-size:26px;color:var(--ink-3)}.balance__ops{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.balance__guess{display:flex;align-items:center;gap:var(--sp-2);font-weight:600}.balance__guess input{width:90px;padding:8px 12px;border:1.5px solid var(--border-strong);border-radius:var(--r-md);font-size:16px;font-family:var(--font-math)}.tilesview{display:flex;flex-direction:column;gap:var(--sp-4)}.tilesview__tray{display:flex;flex-wrap:wrap;gap:var(--sp-3)}.tile-pick{display:flex;align-items:center;gap:var(--sp-2)}.tile{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:var(--r-sm);border:2px solid var(--border-strong);background:var(--surface);font-family:var(--font-math);font-size:18px;font-weight:700;cursor:pointer;transition:transform var(--t-fast),border-color var(--t-fast)}.tile:hover:not(:disabled){transform:translateY(-2px);border-color:var(--primary)}.tile--unit{background:var(--tile-unit-bg);border-color:var(--tile-unit-border)}.tile--unit-neg{background:var(--tile-unitneg-bg);border-color:var(--tile-unitneg-border)}.tile--x{background:var(--tile-x-bg);border-color:var(--tile-x-border)}.tile--x-neg{background:var(--tile-xneg-bg);border-color:var(--tile-xneg-border)}.tile--x2{background:var(--tile-x2-bg);border-color:var(--tile-x2-border)}.tile--on{pointer-events:none}.tile-count{font-size:12.5px;font-weight:700;color:var(--ink-2)}.tile-minus{width:28px;height:28px;border-radius:50%;border:1.5px solid var(--border-strong);background:var(--surface);font-weight:800;cursor:pointer;font-size:15px}.tilesview__board{display:flex;flex-wrap:wrap;gap:var(--sp-2);min-height:90px;background:var(--surface-2);border-radius:var(--r-lg);border:1.5px dashed var(--border-strong);padding:var(--sp-4);align-content:flex-start}.machineview{display:flex;flex-direction:column;gap:var(--sp-4)}.machineview__diagram{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);flex-wrap:wrap;font-family:var(--font-math);font-size:18px}.machineview__box{background:var(--surface-2);border:1.5px solid var(--border-strong);border-radius:var(--r-md);padding:6px 14px;font-weight:700}.machineview__fn{background:var(--primary-soft);color:var(--primary-ink);border-radius:var(--r-md);padding:6px 14px;font-weight:700}.machineview__arrow{color:var(--ink-3);font-size:22px}.machineview__table{width:100%;border-collapse:collapse}.machineview__table th{text-align:left;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);padding:var(--sp-2);border-bottom:2px solid var(--border)}.machineview__table td{padding:var(--sp-2);border-bottom:1px solid var(--border);font-family:var(--font-math);font-size:16px}.machineview__truth{color:var(--success);font-weight:700}.coordview{display:flex;flex-direction:column;gap:var(--sp-3)}.coordgrid{display:grid;grid-template-columns:repeat(11,1fr);gap:2px;max-width:440px;width:100%;margin:0 auto;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r-md);padding:var(--sp-2)}.coordcell{aspect-ratio:1;border:none;border-radius:4px;background:var(--surface-2);cursor:pointer;transition:background var(--t-fast)}.coordcell:hover:not(:disabled){background:var(--primary-soft)}.coordcell--on{background:var(--primary)}.coordcell--target{outline:2px solid var(--success);outline-offset:-2px}.coordcell--hit{background:var(--success)}.coordcell--miss{background:var(--danger)}.stepsview{display:flex;flex-direction:column;gap:var(--sp-4)}.stepsview__pool{display:flex;flex-wrap:wrap;gap:var(--sp-2);background:var(--surface-2);padding:var(--sp-3);border-radius:var(--r-md)}.stepsview__pool .card{text-align:left;justify-content:flex-start}.stepsview__seq{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--sp-2);counter-reset:step}.step-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r-md)}.step-item--ok{border-color:var(--success);background:var(--success-soft)}.step-item--bad{border-color:var(--danger);background:var(--danger-soft)}.step-item__n{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--surface-3);font-weight:800;font-size:13px;flex:none}.stepsview__actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}.buildview{display:flex;flex-direction:column;gap:var(--sp-4)}.buildview__pool{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.buildview__answer{display:flex;flex-wrap:wrap;gap:var(--sp-2);min-height:64px;background:var(--surface-2);border:1.5px dashed var(--border-strong);border-radius:var(--r-lg);padding:var(--sp-3);align-items:center}.buildview__actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}.matchview{display:flex;flex-direction:column;gap:var(--sp-4)}.matchview__cols{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4)}.matchview__col{display:flex;flex-direction:column;gap:var(--sp-2)}.matchview__collabel{font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);margin-bottom:2px}.matchview__col .card{justify-content:flex-start;text-align:left;width:100%}.errorspyview{display:flex;flex-direction:column;gap:var(--sp-3)}.errorspyview__lines{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--sp-2)}.spy-line{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r-md);padding:var(--sp-3)}.spy-line--wrong{border-color:var(--danger);background:var(--danger-soft)}.spy-line__label{display:flex;align-items:flex-start;gap:var(--sp-3);cursor:pointer}.spy-line__text{font-family:var(--font-math);font-size:16px}.spy-line__fix{margin-top:var(--sp-2);padding-top:var(--sp-2);border-top:1px solid var(--danger-border);font-size:14px;color:var(--danger-text)}.exploreview{display:flex;flex-direction:column;gap:var(--sp-4)}.lab{background:var(--surface-2);border:1.5px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-3)}.lab p{font-family:var(--font-math);font-size:17px;margin:0}.lab label{font-weight:600;font-size:14px;display:flex;flex-direction:column;gap:4px}.sliderview{display:flex;flex-direction:column;gap:var(--sp-4)}.sliderview__svg{width:100%;max-width:480px;margin:0 auto;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r-lg)}.sliderview__label{display:flex;flex-direction:column;gap:4px;font-weight:700}.gameview,.minigame{display:flex;flex-direction:column;gap:var(--sp-3)}.minigame__opts{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.minigame__opts .card{min-width:56px;font-family:var(--font-math);font-size:17px}.filljars__jars{display:flex;gap:var(--sp-4)}.jar{flex:1;text-align:center;padding:var(--sp-4);background:var(--surface-2);border-radius:var(--r-md);font-family:var(--font-math);font-size:18px;font-weight:700;border:1.5px solid var(--border)}.quest__list{display:flex;flex-direction:column;gap:var(--sp-3)}.quest__item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r-lg)}.quest__item--done{opacity:.65}.quest__item--done .quest__check{background:var(--fill-success);color:var(--on-success)}.quest__check{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--surface-3);font-weight:800;flex:none}.quest__label{flex:1;font-weight:600;font-size:14.5px}.quest__go{margin-left:auto}.boss{display:flex;flex-direction:column;gap:var(--sp-5)}.boss__head{display:flex;align-items:center;gap:var(--sp-4);background:var(--brand-soft);color:var(--on-accent);border-radius:var(--r-xl);padding:var(--sp-6)}.boss__head h1{color:var(--on-accent);font-size:26px;margin-bottom:4px}.boss__head p{color:var(--brand-text);margin:0}.boss__headbadge{font-size:40px;line-height:1;flex:none}.boss__progress{margin-left:auto;min-width:160px}.boss__progresslabel{display:block;font-size:12px;color:var(--brand-text);margin-top:6px;text-align:right}.boss__intro{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5)}.boss__facts{margin:var(--sp-3) 0 var(--sp-4);padding-left:var(--sp-5)}.boss__facts li{margin-bottom:var(--sp-2);color:var(--ink-2)}.boss__fight{display:flex;flex-direction:column;gap:var(--sp-4)}.boss__win{text-align:center;background:var(--surface);border:2px solid var(--success-border);border-radius:var(--r-xl);padding:var(--sp-8) var(--sp-6)}.boss__lose{text-align:center;background:var(--surface);border:2px solid var(--warn-border);border-radius:var(--r-xl);padding:var(--sp-8) var(--sp-6)}.boss__winbadge{font-size:52px;line-height:1;margin-bottom:var(--sp-2)}.boss__winnav{display:flex;gap:var(--sp-3);justify-content:center;flex-wrap:wrap;margin-top:var(--sp-4)}.boss-section{margin-top:var(--sp-5)}.diagnostic__nav{display:flex;justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-5);flex-wrap:wrap}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-4)}.concept-card{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-2)}.concept-card__name{font-size:16px;font-weight:700}.concept-card__visual{display:grid;place-items:center;height:90px;background:var(--surface-2);border-radius:var(--r-md);font-family:var(--font-math);font-size:24px;color:var(--primary-ink)}.profile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--sp-3);margin:var(--sp-4) 0}.profile-card{display:flex;flex-direction:column;align-items:center;gap:var(--sp-1);padding:var(--sp-4) var(--sp-2);border:1px solid var(--border-strong);border-radius:var(--r-lg);background:var(--surface-1);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.profile-card:hover{transform:translateY(-2px);border-color:var(--primary);box-shadow:var(--shadow-sm)}.profile-card__avatar{font-size:40px;line-height:1}.profile-card__name{font-weight:700;font-size:16px}.profile-card__class{font-size:13px;color:var(--ink-2)}.chip--action{border:none;background:var(--surface-2);cursor:pointer;font-size:15px;line-height:1;padding:4px 8px}.chip--action:hover{background:var(--primary-soft)}.barmodel{display:flex;flex-direction:column;gap:var(--sp-3);width:100%}.barmodel__scenario{margin:0}.barmodel__diagram{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);background:var(--surface-1);border:1px solid var(--border-strong);border-radius:var(--r-lg);width:100%;box-sizing:border-box}.barmodel__row{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.barmodel__rowlabel{font-size:13px;font-weight:700;color:var(--ink-secondary)}.barmodel__track--whole{width:100%;height:48px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;background:var(--brand);color:var(--on-accent);box-sizing:border-box}.barmodel__track--parts{display:flex;width:100%;min-height:52px;border-radius:var(--r-md);overflow:hidden;box-shadow:0 2px 6px #0000000f;box-sizing:border-box}.barmodel__bar{box-sizing:border-box}.barmodel__seg{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px 8px;box-sizing:border-box;color:var(--on-accent);transition:width .3s ease}.barmodel__seglabel{font-size:12px;font-weight:700;opacity:.95;color:var(--on-accent);margin-bottom:2px;text-align:center}.barmodel__segval{font-size:16px;font-weight:800;color:var(--on-accent)}.barmodel__val{font-weight:800;font-size:15px;color:var(--ink-primary)}.barmodel__unit{font-size:12px;color:var(--ink-secondary)}.barmodel__input{width:56px;padding:3px 6px;font-size:15px;font-weight:700;text-align:center;border:2px dashed var(--brand);border-radius:var(--r-sm);background:var(--bg-surface);color:var(--ink-primary)}.barmodel__input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) .2,transparent)}.barmodel__track--whole .barmodel__input{border-color:var(--on-accent)}.fracbar__reps{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.fracbar__rep{padding:4px 10px;border-radius:var(--r-sm);background:var(--surface-2);font-size:13px;color:var(--ink-2)}.fracbar__rep strong{color:var(--ink-primary);font-weight:700}.progression{display:flex;flex-direction:column;gap:var(--sp-4)}.progression__tabs{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.progression__tab{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface-1);cursor:pointer;font-size:13px;font-weight:600;color:var(--ink-2);transition:all var(--t-fast)}.progression__tab:hover{border-color:var(--primary)}.progression__tab--active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.progression__tab--done{border-color:var(--success);color:var(--success-strong)}.progression__tab[aria-disabled=true]{opacity:.45;cursor:not-allowed}.progression__tabnum{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--surface-2);font-size:11px}.progression__tab--done .progression__tabnum{background:var(--success);color:#fff}.progression__body{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);background:var(--surface-1);border:1px solid var(--border-strong);border-radius:var(--r-lg)}.progression__prompt{margin:0;font-size:15px}.progression__objects{display:flex;align-items:center;justify-content:center;gap:var(--sp-3);flex-wrap:wrap;padding:var(--sp-3);background:var(--bg-subtle);border-radius:var(--r-md)}.progression__objgroup{display:flex;flex-direction:column;align-items:center;gap:4px}.progression__objrow{display:flex;flex-wrap:wrap;gap:4px;max-width:180px;justify-content:center}.progression__emoji{font-size:26px;line-height:1.2}.progression__objlabel{font-size:11px;color:var(--ink-2);text-transform:uppercase;font-weight:700}.progression__objplus,.progression__objeq{font-size:24px;font-weight:800;color:var(--ink-2)}.progression__objtotal{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 14px;background:var(--success-soft);border:2px solid var(--success);border-radius:var(--r-md)}.progression__objnum{font-size:24px;font-weight:800;color:var(--success-strong)}.progression__equation{text-align:center;padding:var(--sp-4);background:var(--bg-subtle);border-radius:var(--r-md);font-size:22px}.progression__equation .katex{font-size:1.4em}.progression__solhint{margin-top:var(--sp-2);font-size:13px}.progression__answer{display:flex;flex-direction:column;gap:var(--sp-2);align-items:flex-start}.progression__wrong{color:var(--danger-text);font-size:14px;font-weight:600;margin:0}.ratio__bars{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);background:var(--bg-subtle);border-radius:var(--r-md)}.ratio__row{display:flex;align-items:center;gap:var(--sp-2)}.ratio__label{flex:0 0 20px;font-weight:700;font-size:14px;color:var(--ink-2)}.ratio__bar{height:22px;border-radius:var(--r-sm);transition:width .25s ease}.ratio__bar--a{background:var(--primary)}.ratio__bar--b{background:var(--success)}@media (max-width: 640px){.matchview__cols{grid-template-columns:1fr}.balance__beam{flex-direction:column}.boss__head{flex-direction:column;text-align:center}.boss__progress{margin-left:0;min-width:0;width:100%}.filljars__jars{flex-direction:column}.numberline__track{margin:0}.sortview__buckets{grid-template-columns:1fr}.bucket__name{overflow-wrap:break-word}}.termboundaryview{display:flex;flex-direction:column;gap:var(--sp-3)}.termboundaryview__toolbar{display:flex;gap:var(--sp-2);align-items:center;font-size:14px}.termboundaryview__toggle{display:inline-flex;align-items:center;gap:6px;font-weight:600;cursor:pointer}.termboundaryview__expr{display:flex;flex-wrap:wrap;align-items:center;gap:0;padding:var(--sp-4);background:var(--bg-subtle);border-radius:var(--r-md);font-size:20px}.termboundaryview__charwrap{display:inline-flex;align-items:center}.termmboundaryview__char{display:inline-block;padding:2px 1px}.termboundaryview__boundary{display:inline-flex;align-items:center;justify-content:center;width:20px;height:28px;margin:0 1px;padding:0;background:transparent;border:1px dashed var(--border-strong);border-radius:6px;color:var(--ink-3);font-size:13px;cursor:pointer;transition:all var(--t-fast)}.termboundaryview__boundary:hover{border-color:var(--primary);color:var(--primary)}.termboundaryview__boundary--on{background:var(--primary-soft);border-color:var(--primary);border-style:solid;color:var(--primary);font-weight:800}.termboundaryview__textarea{width:100%;min-height:64px;padding:10px 12px;border:1.5px solid var(--border);border-radius:var(--r-md);font-family:inherit;font-size:15px;resize:vertical}.termboundaryview__input{width:100%;max-width:360px;padding:10px 12px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:16px;font-family:inherit}.chip--term{background:var(--primary-soft);border-color:var(--primary-soft);color:var(--primary-strong)}.mt{margin-top:var(--sp-3)}.ok-text{color:var(--success-strong);font-weight:700}.err-text{color:var(--danger-text);font-weight:600}.factorcanvasview{display:flex;flex-direction:column;gap:var(--sp-3)}.factorcanvasview__canvas{min-height:72px;padding:var(--sp-3);display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:var(--bg-subtle);border:2px dashed var(--border-strong);border-radius:var(--r-md)}.factorcanvasview__tray{display:flex;flex-wrap:wrap;gap:8px}.card--factor{background:var(--surface);border-color:var(--primary-soft)}.chip--factor{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:var(--success-soft);border:1.5px solid var(--success);border-radius:999px;font-size:16px}.chip__x{background:none;border:none;color:var(--ink-3);font-size:14px;cursor:pointer;padding:0 2px}.chip__x:hover{color:var(--danger-text)}.factorcanvasview__domain{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.balance__beam--tilt .balance__pivot{transform:rotate(-12deg)}.balance__beam--tilt{border-color:var(--warn-hover)}.balance__sidebar{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap;font-size:14px}.radio{display:inline-flex;align-items:center;gap:5px;font-weight:600;cursor:pointer}.simlab-gallery__head{text-align:center;margin-bottom:var(--sp-6)}.simlab-gallery__title{font-size:30px;font-weight:800;margin:6px 0 10px}.simlab-gallery__sub{max-width:560px;margin:0 auto;font-size:15px}.simlab-gallery__grid{display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.simlab-card{display:flex;flex-direction:column;gap:12px;padding:var(--sp-5);border-radius:var(--r-lg);background:var(--surface);border:1.5px solid var(--border);text-decoration:none;color:inherit;transition:transform var(--t-fast),box-shadow var(--t-fast),border-color var(--t-fast)}.simlab-card:hover{transform:translateY(-3px);border-color:var(--primary);box-shadow:var(--shadow-md)}.simlab-card__icon{font-size:44px;line-height:1}.simlab-card__topic{font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--primary)}.simlab-card__title{font-size:18px;font-weight:800;margin:4px 0 6px}.simlab-card__tagline{font-size:13.5px;color:var(--ink-secondary);line-height:1.55}.simlab-card__cta{margin-top:auto;font-size:13px;font-weight:700;color:var(--primary)}.simlab-gallery__foot{text-align:center;margin-top:var(--sp-6);font-size:13px}.simlab-detail__back{font-size:13.5px;font-weight:700;color:var(--primary);text-decoration:none}.simlab-detail__head{display:flex;gap:var(--sp-4);align-items:flex-start;margin:var(--sp-3) 0 var(--sp-4)}.simlab-detail__icon{font-size:40px;line-height:1}.simlab-detail__title{font-size:24px;font-weight:800;margin:2px 0 4px}.simlab-detail__foot{margin-top:var(--sp-5);text-align:center;font-size:13.5px}.simlab-canvas{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-5);border-radius:var(--r-lg);background:var(--surface);border:1.5px solid var(--border);box-shadow:var(--shadow-sm)}.simlab-panel{display:flex;flex-direction:column;gap:var(--sp-3);padding-top:var(--sp-4);border-top:1.5px dashed var(--border)}.simlab-field{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:700;color:var(--ink-primary)}.simlab-field input[type=range]{width:100%;accent-color:var(--primary);height:8px;border-radius:4px}.simlab-stepper{display:inline-flex;align-items:center;justify-content:space-between;background:var(--bg-subtle);border:1.5px solid var(--border);border-radius:14px;padding:4px 6px;gap:10px;width:fit-content;min-width:130px}.simlab-stepper--lg{padding:6px 10px;min-width:160px}.simlab-stepper__btn{width:36px;height:36px;border-radius:10px;border:1.5px solid var(--border);background:var(--bg-surface);color:var(--ink-primary);font-size:18px;font-weight:900;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--t-fast) var(--ease-out);box-shadow:var(--shadow-xs)}.simlab-stepper__btn:hover:not(:disabled){background:var(--primary-soft);border-color:var(--primary);color:var(--primary);transform:translateY(-1px)}.simlab-stepper__btn:active:not(:disabled){transform:translateY(1px) scale(.95)}.simlab-stepper__btn:disabled{opacity:.35;cursor:not-allowed}.simlab-stepper__val{font-size:16px;font-weight:800;color:var(--ink-primary);min-width:36px;text-align:center}.simlab-stepper--lg .simlab-stepper__val{font-size:20px}.simlab-numpad-btn{height:46px;border-radius:12px;border:1.5px solid var(--border);background:var(--bg-surface);color:var(--ink-primary);font-size:18px;font-weight:800;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-xs);transition:all var(--t-fast) var(--ease-out);-webkit-user-select:none;user-select:none}.simlab-numpad-btn:hover{background:var(--primary-soft);border-color:var(--primary);color:var(--primary);transform:translateY(-1px)}.simlab-numpad-btn:active{transform:translateY(1px) scale(.96);box-shadow:none}.simlab-numpad-btn--op{background:var(--bg-subtle);font-weight:900}.simlab-tray{display:flex;gap:10px;flex-wrap:wrap;align-items:center;background:var(--bg-subtle);padding:12px 16px;border-radius:16px;border:1.5px solid var(--border)}.simlab-tray__card{display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--bg-surface);padding:8px 12px;border-radius:12px;border:1.5px solid var(--border)}.simlab-tray__title{font-size:12px;font-weight:800;color:var(--ink-secondary);text-transform:uppercase}.simlab-tabs{display:flex;gap:6px;background:var(--bg-subtle);padding:4px;border-radius:14px;border:1.5px solid var(--border);width:fit-content;max-width:100%;overflow-x:auto}.simlab-tab-btn{padding:8px 16px;border-radius:10px;border:none;background:transparent;font-size:13.5px;font-weight:700;color:var(--ink-secondary);cursor:pointer;transition:all var(--t-fast) ease;white-space:nowrap}.simlab-tab-btn:hover{color:var(--ink-primary);background:color-mix(in srgb,var(--ink-primary) 5%,transparent)}.simlab-tab-btn.is-active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow-sm);font-weight:800}.simlab-insight{margin-top:8px;padding:14px 16px;border-radius:14px;background:var(--bg-subtle);border:1px solid var(--border);font-size:13.5px}.simlab-insight summary{font-weight:800;cursor:pointer;color:var(--ink-primary);display:flex;align-items:center;gap:8px;-webkit-user-select:none;user-select:none}.simlab-insight__body{margin-top:10px;color:var(--ink-secondary);line-height:1.6}.simlab-insight__body p{margin:6px 0}.simlab-insight__body ul{margin:6px 0 6px 20px;padding:0}.simlab-balance{display:flex;flex-direction:column;align-items:center;gap:14px;padding:var(--sp-3) 0}.simlab-balance__rig{position:relative;width:100%;max-width:600px;display:flex;flex-direction:column;align-items:center}.simlab-balance__beam-wrap{position:relative;width:100%;display:flex;justify-content:center;margin-top:12px}.simlab-balance__beam{display:flex;justify-content:space-between;align-items:flex-end;width:100%;max-width:520px;min-height:140px;transition:transform .3s var(--ease-out);transform-origin:center 100px}.simlab-balance__fulcrum{position:absolute;bottom:0;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;pointer-events:none}.simlab-balance__needle{width:3px;height:32px;background:var(--danger);border-radius:2px;transform-origin:bottom center;transition:transform .4s ease;margin-bottom:2px}.simlab-balance__pivot-triangle{width:0;height:0;border-left:24px solid transparent;border-right:24px solid transparent;border-bottom:40px solid var(--ink-secondary)}.simlab-balance__base{width:90px;height:10px;background:var(--ink-secondary);border-radius:4px;margin-top:-2px}.simlab-balance__pan{display:flex;flex-direction:column;align-items:center;gap:8px;min-width:190px;padding:12px 14px;background:var(--surface);border:2.5px solid var(--border-strong);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);position:relative;z-index:2}.simlab-balance__pan--left{border-top:4px solid var(--fill-accent)}.simlab-balance__pan--right{border-top:4px solid var(--fill-success)}.simlab-balance__pan-items{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;align-items:center;min-height:52px;padding:4px}.simlab-weight-bag{display:inline-flex;align-items:center;justify-content:center;width:38px;height:42px;background:var(--fill-accent);color:var(--on-accent);border-radius:8px 8px 12px 12px;font-weight:800;font-size:14px;box-shadow:var(--shadow-xs);border:1.5px solid var(--fill-accent-deep)}.simlab-weight-bag--neg{background:var(--danger);border-color:var(--fill-danger-deep)}.simlab-weight-cube{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--warn);color:var(--on-warn);border-radius:6px;font-weight:800;font-size:12px;box-shadow:var(--shadow-xs);border:1px solid var(--warn-shadow)}.simlab-weight-cube--neg{background:var(--danger);border-color:var(--fill-danger-deep)}.simlab-balance__val{font-size:14px;color:var(--ink-3);font-weight:700}.simlab-balance__status{font-size:15px;font-weight:800;padding:6px 16px;border-radius:999px;display:inline-flex;align-items:center;gap:6px}.simlab-balance__status.is-balanced{background:var(--success-soft);color:var(--success-text);border:1.5px solid var(--success-border)}.simlab-balance__status.is-tilt{background:var(--warn-soft);color:var(--warn-text);border:1.5px solid var(--warn-border)}.simlab-balance__history{width:100%;max-width:520px;font-size:13px;background:var(--bg-subtle);border-radius:10px;padding:8px 12px;border:1px dashed var(--border)}@media (max-width: 640px){.simlab-balance{gap:8px;padding:4px 0}.simlab-balance__beam{min-height:110px;transform-origin:center 80px}.simlab-balance__pan{min-width:130px;padding:8px 6px;border-radius:12px}.simlab-balance__pan-items{min-height:38px;gap:3px}.simlab-weight-bag{width:30px;height:34px;font-size:11px}.simlab-weight-cube{width:22px;height:22px;font-size:10px}}.simlab-frac{display:flex;flex-direction:column;align-items:center;gap:var(--sp-4)}.simlab-frac__stage{display:flex;align-items:center;justify-content:center;gap:var(--sp-5);flex-wrap:wrap}.simlab-frac__stage>svg{width:190px;height:auto}.simlab-frac__readout{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:32px;font-weight:800}.simlab-frac__chips{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;font-size:13px;font-weight:700;color:var(--ink-secondary)}.simlab-frac__chip{padding:3px 10px;background:var(--bg-subtle);border-radius:999px;border:1px solid var(--border)}.simlab-frac__slice{fill:var(--bg-subtle);stroke:var(--border-strong);stroke-width:1.5;cursor:pointer;transition:fill var(--t-fast)}.simlab-frac__slice:hover{fill:var(--bg-hover)}.simlab-frac__slice.is-on{fill:var(--fill-accent);stroke:var(--fill-accent-deep)}.simlab-frac__bar-model{display:flex;width:100%;max-width:440px;height:50px;border:2px solid var(--ink-secondary);border-radius:10px;overflow:hidden;background:var(--bg-subtle);margin-top:8px}.simlab-frac__bar-seg{flex:1;border-right:1.5px dashed var(--border-strong);cursor:pointer;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:var(--ink-muted);transition:background .15s ease}.simlab-frac__bar-seg:last-child{border-right:none}.simlab-frac__bar-seg.is-on{background:var(--brand);color:var(--on-accent)}.simlab-frac__compare-box{display:flex;align-items:center;gap:16px;justify-content:center;background:var(--bg-subtle);padding:12px 18px;border-radius:14px;border:1.5px solid var(--border);width:100%;max-width:500px}.simlab-frac__compare-sym{font-size:24px;font-weight:900;color:var(--primary);width:40px;height:40px;border-radius:50%;background:var(--bg-surface);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-xs)}.simlab-nl{display:flex;flex-direction:column;gap:16px;width:100%}.simlab-nl__stage{position:relative;width:100%;min-height:130px;margin:10px 0}.simlab-nl__track{position:relative;height:80px;margin:0 24px}.simlab-nl__track:before{content:"";position:absolute;left:0;right:0;top:40px;height:3px;background:var(--ink-2);border-radius:2px}.simlab-nl__track:after{content:"Γû╢";position:absolute;right:-12px;top:32px;font-size:14px;color:var(--ink-2)}.simlab-nl__arrow-left{position:absolute;left:-12px;top:32px;font-size:14px;color:var(--ink-2)}.simlab-nl__tick{position:absolute;top:36px;transform:translate(-50%);text-align:center}.simlab-nl__tickmark{display:block;width:2px;height:12px;background:var(--ink-2);margin:0 auto}.simlab-nl__ticklabel{font-size:12px;color:var(--ink-3);position:relative;top:6px;display:inline-block;font-weight:600}.simlab-nl__tick--zero .simlab-nl__tickmark{height:18px;width:3px;background:var(--primary)}.simlab-nl__tick--zero .simlab-nl__ticklabel{color:var(--accent-text);font-weight:800;font-size:13px}.simlab-nl__pos{position:absolute;top:4px;transform:translate(-50%);transition:transform .3s ease;text-align:center;z-index:4}.simlab-nl__posbubble{display:inline-block;padding:2px 10px;background:var(--fill-accent);color:var(--on-accent);border-radius:999px;font-size:14px;font-weight:800;margin-bottom:2px}.simlab-nl__posdot{display:block;width:14px;height:14px;background:var(--primary);border:3px solid var(--bg-surface);border-radius:50%;margin:0 auto;box-shadow:var(--shadow-sm)}.simlab-nl__arc-svg{position:absolute;top:0;left:24px;right:24px;width:calc(100% - 48px);height:80px;pointer-events:none;z-index:2}.simlab-tiles{display:flex;flex-direction:column;gap:14px}.simlab-tiles__canvas{min-height:200px;padding:var(--sp-4);display:flex;flex-wrap:wrap;gap:8px;align-content:flex-start;background:var(--bg-subtle);border:2px dashed var(--border-strong);border-radius:var(--r-lg);position:relative}.simlab-tile{display:inline-flex;align-items:center;justify-content:center;border:1.5px solid var(--border-strong);border-radius:8px;font-weight:800;cursor:pointer;transition:transform var(--t-fast),box-shadow .15s;-webkit-user-select:none;user-select:none}.simlab-tile:hover{transform:scale(1.05);box-shadow:var(--shadow-sm)}.tile--x2pos{width:76px;height:76px;background:var(--tile-x-bg);color:var(--tile-x-ink);font-size:18px;border-color:var(--tile-x-border)}.tile--x2neg{width:76px;height:76px;background:var(--tile-unitneg-bg);color:var(--tile-unitneg-ink);font-size:18px;border-color:var(--tile-unitneg-border)}.tile--xpos{width:76px;height:36px;background:var(--tile-x-bg);color:var(--tile-x-ink);font-size:16px;border-color:var(--tile-x-border)}.tile--xneg{width:76px;height:36px;background:var(--tile-xneg-bg);color:var(--tile-xneg-ink);font-size:16px;border-color:var(--tile-xneg-border)}.tile--onepos{width:36px;height:36px;background:var(--tile-one-bg);color:var(--tile-one-ink);font-size:15px;border-color:var(--tile-one-border)}.tile--oneneg{width:36px;height:36px;background:var(--tile-oneneg-bg);color:var(--tile-oneneg-ink);font-size:15px;border-color:var(--tile-oneneg-border)}.simlab-tiles__readout{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:20px;padding:10px 14px;background:var(--bg-surface);border:1.5px solid var(--border);border-radius:12px}.simlab-tiles__zeropair{color:var(--warn-hover);font-size:13px;font-weight:700}.simlab-tiles__grid-mode{display:grid;grid-template-columns:auto 1fr;gap:12px;background:var(--bg-surface);padding:16px;border-radius:14px;border:1.5px solid var(--border)}.simlab-graph{display:flex;flex-direction:column;align-items:center;gap:12px}.simlab-graph-layout{display:grid;grid-template-columns:1fr;gap:16px;width:100%}@media (min-width: 768px){.simlab-graph-layout{grid-template-columns:1.4fr 1fr;align-items:start}}.simlab-graph svg{width:100%;max-width:520px;height:auto;background:var(--bg-surface);border-radius:14px;border:1.5px solid var(--border);box-shadow:var(--shadow-xs)}.simlab-graph__grid{stroke:var(--graph-grid);stroke-width:1}.simlab-graph__axis{stroke:var(--ink-secondary);stroke-width:2}.simlab-graph__line{stroke:var(--fill-accent);stroke-width:3.5}.simlab-graph__slope-tri{fill:color-mix(in srgb,var(--warn) 12%,transparent);stroke:var(--warn);stroke-width:2;stroke-dasharray:4 3}.simlab-graph__slope-lbl{font-size:12px;fill:var(--warn-text);font-weight:800}.simlab-graph__pt{fill:var(--danger);stroke:var(--bg-surface);stroke-width:2;cursor:pointer}.simlab-graph__intercept{fill:var(--success);stroke:var(--bg-surface);stroke-width:2.5}.simlab-graph__lbl{font-size:11px;fill:var(--ink-faint);text-anchor:middle}.simlab-graph__table{width:100%;font-size:13px;border-collapse:collapse;background:var(--bg-surface);border-radius:10px;overflow:hidden;border:1px solid var(--border)}.simlab-graph__table th{background:var(--bg-subtle);padding:6px 10px;font-weight:700;text-align:center;border-bottom:1.5px solid var(--border)}.simlab-graph__table td{padding:5px 10px;text-align:center;border-bottom:1px solid var(--border)}.simlab-graph__table tr.is-intercept{background:var(--success-soft);font-weight:700}.simlab-barmodel{display:flex;flex-direction:column;align-items:center;gap:14px;padding:var(--sp-3) 0}.simlab-barmodel__container{width:100%;max-width:560px;display:flex;flex-direction:column;gap:16px}.simlab-barmodel__row{display:flex;flex-direction:column;gap:6px;width:100%}.simlab-barmodel__row-label{font-size:14px;font-weight:800;color:var(--ink-primary)}.simlab-barmodel__track{display:flex;width:100%;height:58px;border:2px solid var(--ink-2);border-radius:10px;overflow:hidden;background:var(--bg-subtle);box-shadow:inset 0 2px 4px #0000000f}.simlab-barmodel__seg{display:flex;align-items:center;justify-content:center;min-width:0;transition:width .3s cubic-bezier(.4,0,.2,1);border-right:1.5px solid color-mix(in srgb,var(--on-accent) 40%,transparent)}.simlab-barmodel__seg:last-child{border-right:none}.simlab-barmodel__segval{color:var(--on-accent);font-weight:800;font-size:16px;padding:0 6px;white-space:nowrap}.simlab-barmodel__diff-bracket{display:flex;justify-content:flex-end;align-items:center;font-size:13px;font-weight:800;color:var(--warn-text);gap:4px}.simlab-geoboard{display:flex;flex-direction:column;align-items:center;gap:12px}.simlab-geoboard svg{max-width:360px;height:auto;background:var(--bg-card-warm);border-radius:16px;border:2px solid var(--warn-border);box-shadow:var(--shadow-sm)}.simlab-geoboard__peg{fill:var(--ink-faint);stroke:var(--ink-secondary);stroke-width:1.5;cursor:pointer;transition:fill var(--t-fast),r .15s}.simlab-geoboard__peg:hover{fill:var(--border-strong);r:7px}.simlab-geoboard__peg.is-vertex{fill:var(--fill-accent);stroke:var(--accent-shadow);stroke-width:2.5}.simlab-geoboard__peg.is-boundary{fill:var(--success);stroke:var(--success-shadow)}.simlab-geoboard__peg.is-interior{fill:var(--warn);stroke:var(--warn-shadow)}.simlab-geoboard__pick-box{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;background:var(--bg-subtle);padding:10px 16px;border-radius:12px;border:1px solid var(--border);font-size:13.5px}.simlab-area{display:flex;flex-direction:column;align-items:center;gap:14px}.simlab-area svg{background:var(--bg-surface);border-radius:12px;border:1.5px solid var(--border)}.simlab-area__lbl{font-size:15px;font-weight:800;fill:var(--ink-2)}.simlab-area__celllbl{font-size:13px;font-weight:800;fill:var(--ink-secondary)}.simlab-area__readout{font-size:22px;font-weight:800;text-align:center}.simlab-area__table{width:100%;max-width:440px;border-collapse:collapse;font-size:13.5px;background:var(--bg-surface);border-radius:10px;overflow:hidden;border:1.5px solid var(--border)}.simlab-area__table th,.simlab-area__table td{padding:8px 12px;text-align:center;border:1px solid var(--border)}.simlab-modebar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:var(--bg-subtle);border-radius:12px;border:1.5px dashed var(--border-strong);flex-wrap:wrap}.labchallenge{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border-radius:14px;background:var(--brand-soft);border:2px solid var(--fill-accent);box-shadow:var(--shadow-xs)}.labchallenge--done{background:var(--success-soft);border-color:var(--success)}.labchallenge__head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.labchallenge__badge{font-size:11.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-text);background:var(--bg-surface);padding:3px 10px;border-radius:999px;border:1.5px solid var(--primary-soft)}.labchallenge--done .labchallenge__badge{color:var(--success-strong);border-color:var(--success-border)}.labchallenge__progress{font-size:12px;font-weight:700;color:var(--ink-3)}.labchallenge__title{font-size:16px;font-weight:800;margin:0}.labchallenge__prompt{font-size:13.5px;color:var(--ink-secondary);margin:0}.labchallenge__actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:2px}.labchallenge__hint{font-size:12.5px;color:var(--ink-3);font-style:italic}.labchallenge__all-done{font-size:14px;font-weight:800;color:var(--success-strong)}.lesson-shell{display:flex;flex-direction:column;gap:var(--sp-4)}.lesson-nav-bar{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.lesson-nav-bar h1{font-size:20px;font-weight:800;color:var(--ink);margin:0}.lesson-nav-bar__crumb{font-size:12px;font-weight:600;color:var(--ink-3);margin-bottom:2px}.lesson-nav-bar__crumb a{color:inherit}.lesson-nav-bar__crumb a:hover{color:var(--accent-text)}.lesson-stepper{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-2);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border-subtle)}.lesson-progress-pills{display:flex;align-items:center;gap:6px}.lesson-progress-pill{width:26px;height:8px;border-radius:var(--r-pill);background:var(--surface-3);transition:background var(--t-fast) var(--ease-out)}.lesson-progress-pill--done{background:var(--fill-success)}.lesson-progress-pill--active{background:var(--fill-accent);box-shadow:0 0 0 3px var(--primary-soft)}.editorial-concept{background:var(--surface);border:1.5px solid var(--border-subtle);border-radius:var(--r-xl);padding:var(--sp-6);box-shadow:var(--shadow-card)}.activity-box{display:flex;flex-direction:column;gap:var(--sp-4);background:var(--surface);border:1.5px solid var(--border-subtle);border-radius:var(--r-xl);padding:var(--sp-5);box-shadow:var(--shadow-card)}.activity-box__header{display:flex;flex-direction:column;gap:var(--sp-2)}.activity-box__badge{align-self:flex-start;font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--accent-text);background:var(--primary-soft);border:1px solid var(--accent-border);border-radius:var(--r-pill);padding:3px 10px}.activity-box__title{font-size:18px;font-weight:800;color:var(--ink);line-height:1.4}.activity-box__prompt{font-size:16.5px;font-weight:600;color:var(--ink-2);line-height:1.6}.activity-box__canvas{background:var(--bg-canvas);border:1.5px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-5);min-width:0}.activity-box__canvas>*{min-width:0}@media (max-width: 640px){.activity-box{padding:var(--sp-4);border-radius:var(--r-lg)}.activity-box__canvas{padding:var(--sp-3)}}.runner-note{padding:var(--sp-3) var(--sp-4);background:var(--bg-subtle);border:1px solid var(--border-subtle);border-radius:var(--r-md);font-size:14px;line-height:1.55;color:var(--ink-2)}.runner-note--predict{border-color:var(--accent-border)}.runner-note strong{color:var(--ink)}.runner-note__label{font-size:13px;font-weight:800;text-transform:uppercase;color:var(--accent-text);margin-bottom:6px}.feedback-card{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);border:1px solid transparent;font-size:14.5px;line-height:1.55;animation:feedback-in .18s var(--ease-out)}.feedback-card--hint{background:var(--warn-soft);border-color:var(--warn-border);color:var(--warn-text)}.feedback-card--correct{background:var(--success-soft);border-color:var(--success-border);color:var(--success-strong)}.feedback-card--wrong{background:var(--danger-soft);border-color:var(--danger-border);color:var(--danger-text)}.feedback-card strong{color:inherit}.activity-box__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin-top:auto;padding-top:var(--sp-4);border-top:1.5px solid var(--border-subtle)}.activity-box__footer-group{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;min-height:44px}.activity-box__status{display:inline-flex;align-items:center;gap:6px;color:var(--success-strong);font-weight:700;font-size:15px}.remedial-note{margin-top:var(--sp-2);padding:var(--sp-4);background:var(--warn-soft);border:1px solid var(--warn-border);border-radius:var(--r-md)}@media (max-width: 640px){.activity-box{padding:var(--sp-3)}.activity-box__canvas{padding:var(--sp-2);min-height:180px;overflow-x:auto;-webkit-overflow-scrolling:touch}.activity-box__footer{flex-direction:column-reverse;align-items:stretch;gap:var(--sp-2)}.activity-box__footer-group{flex-direction:column;align-items:stretch;gap:var(--sp-2)}.activity-box__footer .btn{width:100%;justify-content:center;min-height:48px;font-size:15px}.feedback-card{padding:12px}.matchview__card,.sortview__item{min-height:48px;padding:12px;font-size:15px}.choice__option{min-height:52px;padding:12px 14px;font-size:15px}.input__field{height:52px;font-size:18px}.balance__pan{min-width:110px;padding:10px}.tiles__tile{width:40px;height:40px;font-size:12px}.coordview__plot,.numberline__svg{max-width:100%;overflow-x:auto}.boss__head{gap:var(--sp-2)}}
