:root{color-scheme:light;--color-bone: #e2dcc9;--color-paper: #f4efe0;--color-cream: var(--color-bone);--color-cream-2: var(--color-paper);--color-ink: #0a0a0a;--color-ink-muted: #3d3d3d;--color-ink-soft: #5c5c5c;--color-teal: #2d7e73;--color-magenta: #c73b7a;--color-orange: #ee7a2e;--color-mustard: #d8a93b;--color-blue: #3f73b7;--color-sienna: #a06a3c;--color-olive: #6f7a2e;--color-green: var(--color-teal);--color-pink: var(--color-magenta);--color-yellow: var(--color-mustard);--color-on-dark: var(--color-paper);--pet-footer-height: 5rem;--shell-chrome-height: calc( 4.75rem + var(--pet-footer-height) + var(--space-3) * 2 + env(safe-area-inset-top) + env(safe-area-inset-bottom) );--color-surface: var(--color-bone);--color-surface-soft: var(--color-paper);--color-border: var(--color-ink);--color-primary: var(--color-teal);--color-primary-hover: #236860;--color-primary-ink: var(--color-paper);--color-success-bg: var(--color-teal);--color-success-ink: var(--color-paper);--color-warn-bg: var(--color-paper);--color-warn-ink: var(--color-ink);--color-warn-border: var(--color-mustard);--color-danger-bg: var(--color-magenta);--color-danger-ink: var(--color-paper);--color-banner-bg: var(--color-mustard);--color-banner-border: var(--color-ink);--font-display: "Stardos Stencil", "Bowlby One", serif;--font-chrome: "Barlow Condensed", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--font-sans: var(--font-body);--radius-tablet: 24px;--radius-button: 14px;--radius-pill: 999px;--radius-sm: 12px;--shadow-hard: 0 4px 0 var(--color-ink);--shadow-featured: 0 6px 0 var(--color-orange), 0 0 0 2px var(--color-ink);--shadow-hard-sm: 0 2px 0 var(--color-ink);--shadow-soft: 0 8px 24px rgba(10, 10, 10, .1);--accent: var(--color-teal);--accent-ink: var(--color-paper);--border-width: 2px;--border-width-inner: 2px;--focus-ring: 0 0 0 3px var(--color-paper), 0 0 0 5px var(--color-ink);--space-1: .5rem;--space-2: 1rem;--space-3: 1.5rem;--space-4: 2rem;--ease-out-expo: cubic-bezier(.22, 1, .36, 1);--ease-spring: cubic-bezier(.34, 1.4, .64, 1);--duration-fast: .25s;--duration-medium: .55s;--duration-slow: .75s;font-family:var(--font-body);font-size:1rem;line-height:1.6;color:var(--color-ink);background:var(--color-bone);min-height:100vh;-webkit-tap-highlight-color:rgba(10,10,10,.12)}main[data-accent=green]{--accent: var(--color-teal);--accent-ink: var(--color-paper)}main[data-accent=pink]{--accent: var(--color-magenta);--accent-ink: var(--color-paper)}main[data-accent=orange]{--accent: var(--color-orange);--accent-ink: var(--color-paper)}main[data-accent=yellow]{--accent: var(--color-mustard);--accent-ink: var(--color-ink)}*,*:before,*:after{box-sizing:border-box}html{height:-webkit-fill-available}body{margin:0;background:var(--color-cream);overflow:hidden;height:100dvh;min-height:-webkit-fill-available}a{color:var(--color-ink);text-underline-offset:.15em;font-weight:600}a:hover{color:var(--accent)}:focus{outline:none}:focus-visible{outline:none;box-shadow:var(--focus-ring)}.skip-link{position:absolute;left:var(--space-2);top:-100%;z-index:100;padding:var(--space-1) var(--space-2);background:var(--accent);color:var(--accent-ink);border:var(--border-width) solid var(--color-ink);box-shadow:var(--shadow-hard-sm);text-decoration:none;font-family:var(--font-chrome);font-weight:600;font-size:.875rem;text-transform:uppercase;letter-spacing:.06em}.skip-link:focus{top:var(--space-2)}.app{display:grid;grid-template-rows:auto 1fr auto;grid-template-areas:"header" "content" "footer";height:100dvh;min-height:-webkit-fill-available;max-height:100dvh;overflow:hidden;touch-action:manipulation}.app:not(:has(.pet-footer)){--shell-chrome-height: calc( 4.75rem + var(--space-3) * 2 + env(safe-area-inset-top) + env(safe-area-inset-bottom) )}.top-nav{grid-area:header;flex-shrink:0;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);padding-top:max(var(--space-2),env(safe-area-inset-top));background:var(--color-paper);border-bottom:var(--border-width) solid var(--color-ink)}.brand{font-family:var(--font-chrome);font-weight:800;text-decoration:none;color:inherit;font-size:.875rem;text-transform:uppercase;letter-spacing:.06em;display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .75rem;border:2px solid var(--color-ink);border-radius:var(--radius-pill);background:var(--color-bone)}.nav-links{display:flex;gap:var(--space-1)}.nav-links a{text-decoration:none;font-family:var(--font-chrome);font-weight:600;font-size:.8125rem;text-transform:uppercase;letter-spacing:.06em;padding:.5rem .75rem;min-height:44px;display:inline-flex;align-items:center;border:2px solid transparent}.nav-links a:hover{background:var(--color-cream);border-color:var(--color-ink)}.nav-links a.active{background:var(--color-ink);color:var(--color-paper);border-color:var(--color-ink);border-radius:var(--radius-button)}main{grid-area:content;min-height:0;overflow-y:auto;overflow-x:clip;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;max-width:960px;width:100%;margin:0 auto;padding:var(--space-3);padding-bottom:var(--space-3)}main:has(.lab-page){display:flex;flex-direction:column;overflow:hidden;max-width:min(1360px,calc(100% - 1.25rem));padding:.65rem}main:has(.lab-page)>.route-transition{flex:1;min-height:0;display:flex;flex-direction:column}main:has(.lab-shell){max-width:min(1360px,calc(100% - 1.25rem))}main:focus{outline:none}.page h1,.hero-title,.lab-title{margin-top:0;text-wrap:balance;scroll-margin-top:5rem;font-family:var(--font-display);text-transform:uppercase;line-height:1.05;letter-spacing:-.01em}.hero-title{font-size:clamp(2rem,6vw,3.25rem)}.lab-title{font-size:clamp(1.5rem,4vw,2.25rem)}.eyebrow{font-family:var(--font-chrome);font-size:.875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 var(--space-1)}.lead{font-size:clamp(1.05rem,2.5vw,1.125rem);max-width:42rem;color:var(--color-ink-muted);line-height:1.65;text-transform:none}.tabular{font-variant-numeric:tabular-nums}.btn,.block-btn,.chip-btn,.lab-card,.nav-links a,.island-stamp{transition:background-color .15s ease,color .15s ease,border-color .15s ease,transform .15s ease,box-shadow .15s ease}@media(prefers-reduced-motion:reduce){.btn,.block-btn,.chip-btn,.lab-card,.nav-links a,.island-stamp{transition:none}}.btn{min-height:44px;min-width:44px;padding:.5rem 1rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-button);cursor:pointer;font-size:1rem;font-weight:600;font-family:var(--font-chrome);letter-spacing:.02em;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;background:var(--color-paper);color:var(--color-ink);box-shadow:var(--shadow-hard-sm);transition:transform var(--duration-fast) var(--ease-spring),box-shadow var(--duration-fast) var(--ease-out-expo),background-color .15s ease,color .15s ease,border-color .15s ease}.btn.primary{background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-hard)}.btn.secondary{background:var(--color-bone);color:var(--color-ink)}.btn.hint{background:#7eb8c9;color:var(--color-ink)}.btn.danger{background:var(--color-magenta);color:var(--color-paper)}@media(prefers-reduced-motion:reduce){.btn:hover,.btn:active{transform:none}}.btn.large{padding:.75rem 1.25rem;font-size:1.05rem}.hero-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-3)}.lab-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-2);margin:var(--space-3) 0;list-style:none;padding:0}.accent-green{background:var(--color-teal);color:var(--color-paper)}.accent-pink{background:var(--color-magenta);color:var(--color-paper)}.accent-orange{background:var(--color-orange);color:var(--color-paper)}.accent-yellow{background:var(--color-mustard);color:var(--color-ink)}.accent-cream{background:var(--color-paper);color:var(--color-ink)}.lab-card{padding:1.25rem;text-decoration:none;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);box-shadow:var(--shadow-hard);min-height:44px}.lab-card:not([class*=accent-]){background:var(--accent);color:var(--accent-ink)}@media(prefers-reduced-motion:reduce){.lab-card:hover{transform:none}}.lab-card h2{margin:.35rem 0;font-size:1.25rem;font-family:var(--font-display);text-transform:uppercase;line-height:1.1}.lab-card p{margin:0;font-family:var(--font-chrome);font-size:.8125rem;opacity:.9}.subject-tag{font-family:var(--font-chrome);text-transform:uppercase;font-size:.75rem;letter-spacing:.08em;font-weight:600;opacity:.85}.lab-page,.lab-layout{flex:1;min-height:0;display:flex;flex-direction:column}.lab-layout--with-help{display:grid;grid-template-columns:minmax(0,1fr) minmax(10.5rem,12rem);grid-template-rows:minmax(0,1fr);gap:1rem;align-items:stretch}.lab-layout--with-help.lab-layout--help-open{grid-template-columns:minmax(0,1fr) minmax(15rem,18rem)}.lab-shell{background:var(--color-paper);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);padding:1rem 1.15rem;box-shadow:var(--shadow-soft)}.lab-work-card{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;overflow:hidden;box-shadow:var(--shadow-tablet)}.lab-work-stage{display:flex;flex-direction:column;flex:1;min-height:0;gap:.75rem;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.lab-work-footer{flex-shrink:0;margin-top:.65rem}.lab-help-card{width:100%;min-height:0;padding:.35rem;background:var(--color-cream-2);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);box-shadow:var(--shadow-tablet);overflow-y:auto;overscroll-behavior:contain;align-self:stretch}.lab-help-card .strategy-panel--rail{border:var(--border-width-inner) solid var(--color-ink);border-radius:var(--radius-sm);box-shadow:none;margin:0;width:100%}.lab-board{display:flex;flex-direction:column;flex-shrink:0;min-width:0}@media(max-width:860px){.lab-layout--with-help,.lab-layout--with-help.lab-layout--help-open{display:flex;flex-direction:column;grid-template-columns:unset;grid-template-rows:unset;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;min-height:0}.lab-layout--with-help>.lab-work-card{flex:0 0 auto;min-height:auto;overflow:hidden}.lab-layout--with-help .lab-work-stage{flex:0 0 auto;min-height:auto;overflow:visible}.lab-help-card,.lab-layout--help-open .lab-help-card{position:static;flex:0 0 auto;width:100%;max-width:none;overflow:visible}.strategy-panel--rail,.strategy-panel--rail[open]{position:static;max-height:none;width:100%}}.lab-header{display:flex;justify-content:space-between;gap:var(--space-2);flex-wrap:wrap;align-items:flex-start;flex-shrink:0;margin-bottom:.65rem;padding-bottom:.65rem;border-bottom:var(--border-width-inner) solid var(--color-ink)}.lab-header-meta{min-width:min(100%,16rem);flex:1 1 14rem}.back-link{display:inline-block;margin-bottom:.2rem;font-family:var(--font-chrome);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;text-decoration:none}.lab-shell .lab-title{font-size:clamp(1.25rem,3vw,1.85rem);margin-bottom:.15rem}.standard-chip{font-size:.85rem;color:var(--color-ink-muted);max-width:36rem;margin:0}.standard-chip span{font-family:var(--font-chrome);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;margin-right:.5rem;color:var(--accent)}.lab-actions{display:flex;gap:.45rem;flex-wrap:wrap}.lab-actions .btn{min-height:40px;padding:.45rem .8rem;font-size:.8rem}.check-result{padding:.55rem .75rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-sm);margin-top:.65rem;margin-bottom:0;font-weight:500;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;flex-shrink:0}.check-result-main{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.45rem .75rem;min-width:0}.check-result.ok{background:var(--color-teal);color:var(--color-paper)}.featured-block{box-shadow:var(--shadow-featured)}.section-label{display:inline-block;padding:.35rem .75rem;border:var(--border-width) solid var(--color-ink);margin-bottom:var(--space-1)}.subject-browser--math .standard-row:hover{border-left:6px solid var(--color-green)}.subject-browser--ela .standard-row:hover{border-left:6px solid var(--color-pink)}.subject-browser--science .standard-row:hover{border-left:6px solid var(--color-orange)}.strategy-panel{background:var(--color-magenta);color:var(--color-paper);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);margin-bottom:0;box-shadow:var(--shadow-hard-sm)}.strategy-panel--rail:not(.is-open){position:static;max-height:none;overflow:visible;width:100%}.strategy-panel--rail.is-open,.strategy-panel--rail:has(#strategy-rail-body){position:static;max-height:min(24rem,calc(100dvh - 7rem));overflow:auto;overscroll-behavior:contain;width:100%}.strategy-rail-summary{display:flex;align-items:center;justify-content:space-between;gap:.65rem;width:100%;padding:.75rem .85rem;border:none;background:inherit;color:inherit;cursor:pointer;text-align:left;font:inherit}.strategy-rail-summary::-webkit-details-marker{display:none}.strategy-rail-summary:focus-visible{outline:3px solid var(--color-paper);outline-offset:-3px}.strategy-rail-summary:hover{filter:brightness(1.05)}.strategy-rail-summary-copy{display:flex;flex-direction:column;gap:.15rem;min-width:0}.strategy-rail-hint{font-family:var(--font-body);font-size:.75rem;font-weight:500;text-transform:none;letter-spacing:0;opacity:.88}.strategy-panel--rail.is-open .strategy-rail-hint{display:none}.strategy-panel--rail.is-open .strategy-rail-summary{border-bottom:2px solid color-mix(in srgb,currentColor 25%,transparent)}.strategy-summary-chevron.is-open,.strategy-panel--rail.is-open .strategy-summary-chevron,.strategy-panel[open] .strategy-summary-chevron{transform:rotate(45deg);margin-top:.15rem}.strategy-panel-body{padding:0 var(--space-2) var(--space-2);border-top:2px solid color-mix(in srgb,currentColor 25%,transparent)}.strategy-panel-body.strategy-panel-body--rail{padding:.75rem .85rem .85rem;border-top:none}.strategy-panel--rail .strategy-title{margin-top:0;font-size:1rem}.strategy-panel--rail .strategy-steps{font-size:.95rem;line-height:1.5}.strategy-summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:.55rem .75rem;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.strategy-summary::-webkit-details-marker{display:none}.strategy-summary-text{font-family:var(--font-chrome);font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em}.strategy-summary-chevron{flex-shrink:0;width:.65rem;height:.65rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .15s ease;margin-top:-.15rem}.strategy-panel[open] .strategy-summary-chevron{transform:rotate(45deg);margin-top:.15rem}.strategy-kicker{font-family:var(--font-chrome);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;margin:0 0 .35rem;opacity:.85}.strategy-title{font-family:var(--font-display);font-size:1.1rem;text-transform:uppercase;margin:.75rem 0;line-height:1.15}.strategy-source{font-size:.875rem;margin:-.35rem 0 .75rem;line-height:1.45;opacity:.92}.strategy-source a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px}.strategy-steps{margin:0;padding-left:1.25rem;font-size:1rem;line-height:1.55;text-transform:none}.strategy-steps li+li{margin-top:.35rem}.subject-browser--math .strategy-panel,.template-lab:has(.story-card) .strategy-panel,main[data-accent=green] .lab-help-card .strategy-panel{background:var(--color-teal);color:var(--color-paper)}main[data-accent=orange] .strategy-panel,main[data-accent=orange] .lab-help-card .strategy-panel{background:var(--color-orange);color:var(--color-paper)}main[data-accent=green] .strategy-panel{background:var(--color-teal);color:var(--color-paper)}main[data-accent=pink] .strategy-panel,main[data-accent=pink] .lab-help-card .strategy-panel{background:var(--color-magenta);color:var(--color-paper)}.strategy-video{margin-top:var(--space-2);width:100%;text-align:left;font-size:.875rem;line-height:1.3;white-space:normal}.question-progress{font-family:var(--font-chrome);font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin:.25rem 0 0}.practice-stats{margin:.2rem 0 0;font-family:var(--font-chrome);font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-ink-soft);overflow-wrap:break-word}.smart-score{font-family:var(--font-chrome);font-size:.75rem;font-weight:600;letter-spacing:.04em;color:var(--color-ink-soft);margin:.15rem 0 0}.question-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.5rem var(--space-2);flex-shrink:0;padding:.45rem .65rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-bone);box-shadow:var(--shadow-hard-sm)}.question-nav-btn{min-width:8.5rem}.question-nav-btn:first-of-type{justify-self:start}.question-nav-btn:last-of-type{justify-self:end}.question-nav-btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:var(--shadow-hard-sm)}.question-nav-btn:disabled:hover{transform:none;box-shadow:var(--shadow-hard-sm);background:var(--color-bone)}.question-nav-btn.btn.primary:disabled:hover{background:var(--accent);color:var(--accent-ink)}.question-nav-status{margin:0;text-align:center;font-family:var(--font-chrome);font-size:.8125rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--color-ink)}.question-nav-hint{grid-column:1 / -1;margin:0;text-align:center;font-size:.8125rem;color:var(--color-ink-muted)}@media(max-width:640px){.question-nav{grid-template-columns:1fr 1fr}.question-nav-status{grid-column:1 / -1;order:-1}.question-nav-btn{min-width:0;width:100%}.question-nav-btn:first-of-type,.question-nav-btn:last-of-type{justify-self:stretch}}.check-result.warn{background:var(--color-paper);color:var(--color-ink);border-color:var(--color-mustard);border-width:3px}.check-result.reveal{background:var(--color-bone);color:var(--color-ink);border-style:dashed}.island-stamp{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:4.5rem;height:4.5rem;background:var(--color-pink);border:var(--border-width) solid var(--color-ink);transform:rotate(-6deg);flex-shrink:0;box-shadow:var(--shadow-hard-sm)}.island-stamp-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;width:3.25rem;height:3.25rem;border:3px solid var(--color-cream);border-radius:50%}.island-stamp-emoji{font-size:1.35rem;line-height:1}.island-stamp-label{font-family:var(--font-display);font-size:.625rem;text-transform:uppercase;letter-spacing:.02em;margin-top:.1rem;color:var(--color-cream)}.target-number{font-family:var(--font-display);font-size:clamp(2.5rem,8vw,3.5rem);font-weight:400;margin:.25rem 0;font-variant-numeric:tabular-nums;color:var(--accent);line-height:1}.block-tray,.linking-row,.predict-row,.revision-actions{display:flex;flex-wrap:wrap;gap:var(--space-1);align-items:center;margin:var(--space-2) 0}.linking-row,.predict-row{border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-sm);padding:var(--space-2);margin-inline:0;background:var(--color-bone)}.linking-row legend,.predict-row legend{font-family:var(--font-chrome);font-weight:600;font-size:.8125rem;text-transform:uppercase;letter-spacing:.06em;padding:0 var(--space-1);margin-bottom:var(--space-1);width:100%}.block-btn{min-height:44px;padding:.5rem 1rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-button);background:var(--color-paper);cursor:pointer;font-family:var(--font-body);font-weight:600;box-shadow:var(--shadow-hard-sm)}.block-btn:hover{background:var(--color-cream-2);transform:translate(-1px,-1px)}@media(prefers-reduced-motion:reduce){.block-btn:hover{transform:none}}.block-area{min-height:120px;padding:var(--space-2);background:var(--color-bone);display:flex;flex-wrap:wrap;gap:.35rem;align-content:flex-start;border:var(--border-width-inner) dashed var(--color-ink);border-radius:var(--radius-sm)}.empty-state{color:var(--color-ink-muted);margin:0;font-style:italic}.block{font-size:1.5rem;line-height:1}.form-grid label{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;margin-bottom:var(--space-2);font-family:var(--font-chrome);font-weight:700;font-size:.875rem;text-transform:uppercase;letter-spacing:.04em}.form-grid input:not([type=checkbox]){width:100%;min-height:48px;margin:0;padding:.75rem 1rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-button);font-size:1.125rem;font-family:var(--font-body);background:var(--color-bone);color:var(--color-ink);box-sizing:border-box}.form-grid input:focus-visible{border-color:var(--accent);outline:none;box-shadow:var(--focus-ring)}.inline-field{display:flex;gap:var(--space-1);min-width:0;align-items:stretch;margin-top:0}.inline-field input{flex:1;min-width:0;min-height:48px}.chip-btn{min-height:44px;padding:.35rem .85rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-pill);background:var(--color-paper);cursor:pointer;font-family:var(--font-body);font-weight:600;font-size:.875rem;text-transform:none;letter-spacing:0}.chip-btn:hover{background:var(--accent);color:var(--accent-ink)}.revision-card{background:var(--color-bone);padding:var(--space-2);margin:var(--space-2) 0;border:var(--border-width) solid var(--color-mustard);border-radius:var(--radius-tablet);box-shadow:var(--shadow-hard-sm)}.paragraph-preview,.target-card{background:var(--color-paper);padding:var(--space-2);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-sm);box-shadow:var(--shadow-hard-sm)}.paragraph-preview h2,.target-card h2,.section-label{margin-top:0;font-size:1.1rem;font-family:var(--font-display);text-transform:uppercase}.object-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-2)}.object-card{border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);padding:var(--space-2);background:var(--color-paper);box-shadow:var(--shadow-hard-sm)}.object-card h3{margin:0 0 .35rem;font-family:var(--font-display);text-transform:uppercase;font-size:1rem}.classify-btns{display:flex;gap:var(--space-1);margin-top:var(--space-1)}.temp-control label{display:block;font-family:var(--font-chrome);font-weight:600;font-size:.8125rem;text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--space-1)}.temp-control input[type=range]{width:100%;min-height:44px;margin:var(--space-1) 0;accent-color:var(--accent)}.hint{color:var(--color-ink-muted);font-size:.95rem;margin:0}.observations{padding-left:1.25rem}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-paper);box-shadow:var(--shadow-hard-sm)}table{width:100%;border-collapse:collapse;min-width:640px}th,td{padding:.75rem;border-bottom:var(--border-width-inner) solid var(--color-ink);border-right:var(--border-width-inner) solid var(--color-ink);text-align:left;vertical-align:top}th:last-child,td:last-child{border-right:none}th{background:var(--color-bone);font-family:var(--font-chrome);font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}tbody tr:last-child td{border-bottom:none}.catalog .hero-title{border-bottom:var(--border-width) solid var(--color-ink);padding-bottom:var(--space-2)}.progress-summary{font-family:var(--font-chrome);font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--accent)}.strand-section{margin:var(--space-3) 0}.standard-list{list-style:none;padding:0;margin:0;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-paper);overflow:hidden}.standard-row{display:grid;grid-template-columns:7rem 1fr auto;gap:var(--space-2);padding:.75rem 1rem;text-decoration:none;color:inherit;border-bottom:var(--border-width-inner) solid var(--color-ink);align-items:start}.standard-row:hover{background:var(--color-cream-2)}.standard-list li:last-child .standard-row{border-bottom:none}.standard-code{font-family:var(--font-chrome);font-size:.75rem;font-weight:600}.standard-text{font-size:1rem;line-height:1.55}.checklist-items{list-style:none;padding:0}.checklist-items label{display:flex;gap:var(--space-1);align-items:flex-start;min-height:44px;font-family:var(--font-body);text-transform:none;font-weight:500}.checklist-items input{min-width:1.25rem;min-height:1.25rem;margin-top:.2rem}.story-card{padding:var(--space-2);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-bone);font-size:1.05rem;line-height:1.6}.template-lab{display:flex;flex-direction:column;gap:.75rem}.visual-board{margin:0;padding:var(--space-2);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-paper);box-shadow:var(--shadow-hard-sm);display:flex;flex-direction:column;align-items:center;gap:.75rem;animation:visual-pop var(--duration-medium) var(--ease-out-expo) both}@keyframes visual-pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.visual-board svg{width:min(100%,280px);height:auto;display:block}.visual-caption{margin:0;font-family:var(--font-chrome);font-weight:700;font-size:.95rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-ink)}.visual-caption.muted{color:var(--color-ink-soft);font-size:.8rem}.shape-fill{fill:var(--accent);stroke:var(--color-ink);stroke-width:3;stroke-linejoin:round}.shape-partition{stroke:var(--color-ink);stroke-width:3;stroke-linecap:round}.clock-face{fill:var(--color-paper);stroke:var(--color-ink);stroke-width:4}.clock-face-inner{fill:none;stroke:var(--color-ink);stroke-width:1.5;opacity:.35}.clock-num{font-family:var(--font-chrome);font-weight:700;font-size:14px;fill:var(--color-ink)}.clock-hand{stroke:var(--color-ink);stroke-linecap:round}.clock-hand-minute{stroke-width:3}.clock-hand-hour{stroke-width:5}.clock-pin{fill:var(--accent);stroke:var(--color-ink);stroke-width:2}.chart-svg{width:min(100%,320px)}.chart-axis,.chart-bar{stroke:var(--color-ink);stroke-width:2}.chart-bar--red{fill:#e53935}.chart-bar--blue{fill:#1e88e5}.chart-bar--green{fill:#43a047}.chart-bar--yellow{fill:#fdd835}.chart-bar--orange{fill:#fb8c00}.chart-bar--pink{fill:#d81b60}.chart-bar--purple{fill:#8e24aa}.chart-bar--brown{fill:#6d4c41}.chart-bar--black{fill:#212121}.chart-bar--white{fill:#fafafa}.chart-bar--gray,.chart-bar--grey{fill:#757575}.chart-bar--tone-0{fill:#e53935}.chart-bar--tone-1{fill:#1e88e5}.chart-bar--tone-2{fill:#43a047}.chart-bar--tone-3{fill:#fb8c00}.chart-bar--tone-4{fill:#fdd835}.chart-bar--tone-5{fill:#d81b60}.chart-bar--tone-6{fill:#8e24aa}.chart-count,.chart-label{font-family:var(--font-chrome);font-weight:700;fill:var(--color-ink)}.chart-count{font-size:12px}.chart-label{font-size:11px;text-transform:uppercase}.ruler-object{fill:var(--accent);stroke:var(--color-ink);stroke-width:2}.ruler-body{fill:var(--color-mustard);stroke:var(--color-ink);stroke-width:2}.ruler-tick{stroke:var(--color-ink);stroke-width:2}.ruler-num{font-family:var(--font-mono);font-size:10px;fill:var(--color-ink)}.coin-rows{list-style:none;margin:0;padding:0;width:100%;display:flex;flex-direction:column;gap:.75rem}.coin-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.coin-row-label{font-family:var(--font-chrome);font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.03em;min-width:7rem}.coin-dots{display:flex;flex-wrap:wrap;gap:.4rem}.coin-dot{display:inline-flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;border-radius:50%;border:2px solid var(--color-ink);font-family:var(--font-mono);font-size:.65rem;font-weight:700;background:var(--color-mustard);box-shadow:var(--shadow-hard-sm)}.coin-quarters{background:var(--color-teal);color:var(--color-paper)}.coin-dimes{background:var(--color-blue);color:var(--color-paper)}.coin-nickels{background:var(--color-orange);color:var(--color-ink)}.coin-pennies{background:var(--color-sienna);color:var(--color-paper)}@media(prefers-reduced-motion:reduce){.visual-board{animation:none}}.template-lab>label,.template-lab .answer-field{padding:.75rem .9rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-paper);box-shadow:var(--shadow-hard-sm)}.template-lab .answer-field{display:flex;flex-direction:column}.template-lab>label,.answer-field label{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;margin:0;font-family:var(--font-chrome);font-weight:700;font-size:.875rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-ink)}.answer-field label{padding:0;border:none;border-radius:0;background:transparent;box-shadow:none}.template-lab>label input,.template-lab>label textarea,.answer-field input,.answer-field textarea{display:block;width:100%;min-height:3.25rem;margin:0;padding:.7rem .95rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-button);font-size:clamp(1.15rem,2.2vw,1.35rem);font-family:var(--font-body);font-variant-numeric:tabular-nums;background:var(--color-bone);color:var(--color-ink);box-sizing:border-box}.template-lab>label textarea,.answer-field textarea{min-height:3.25rem;resize:none;overflow:hidden;line-height:1.55;font-variant-numeric:normal}.lab-visual{padding:var(--space-2);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-bone)}.lab-visual-caption,.lab-object-label{margin:.35rem 0 0;font-size:.9rem;color:var(--color-ink-muted)}.ruler-bar{position:relative;display:flex;align-items:flex-end;gap:0;height:3rem;border:2px solid var(--color-ink);border-radius:8px;background:var(--color-paper);overflow:hidden}.ruler-tick{flex:1;border-left:1px solid var(--color-ink);font-size:.65rem;text-align:center;padding-top:.15rem;min-height:1rem}.ruler-tick.major{border-left-width:2px;font-weight:700}.ruler-fill{position:absolute;left:0;bottom:0;height:.65rem;background:var(--color-teal);opacity:.75}.bar-chart-grid{display:flex;align-items:flex-end;justify-content:space-around;gap:.75rem;min-height:10rem}.bar-chart-column{display:flex;flex-direction:column;align-items:center;gap:.35rem;flex:1}.bar-chart-bar{display:block;width:100%;min-height:.5rem;max-height:7rem;background:var(--color-teal);border:2px solid var(--color-ink);border-radius:8px 8px 0 0}.bar-chart-value{font-family:var(--font-display);font-size:1.1rem}.bar-chart-label{font-family:var(--font-chrome);font-size:.75rem;text-transform:uppercase}.shape-icon{display:grid;place-items:center;min-height:6rem;border:2px dashed var(--color-ink);border-radius:16px;background:var(--color-paper);font-family:var(--font-display);font-size:1.4rem;text-transform:capitalize}.shape-icon--triangle{clip-path:polygon(50% 8%,8% 92%,92% 92%);background:var(--color-mustard)}.shape-icon--square,.shape-icon--rectangle{background:var(--color-teal)}.shape-icon--circle{border-radius:999px;background:var(--color-orange)}.shape-icon--hexagon,.shape-icon--pentagon,.shape-icon--octagon{background:var(--color-magenta)}.number-line-track{position:relative;display:flex;justify-content:space-between;align-items:flex-end;min-height:3rem;border-bottom:3px solid var(--color-ink);padding:0 .25rem .35rem}.number-line-tick{flex:1;text-align:center;font-size:.7rem;border-left:1px solid var(--color-ink)}.number-line-tick.marked{font-weight:700}.number-line-marker{position:absolute;bottom:0;width:.75rem;height:.75rem;margin-left:-.375rem;border-radius:999px;border:2px solid var(--color-ink)}.number-line-marker.start{background:var(--color-teal)}.number-line-marker.end{background:var(--color-mustard)}.clock-face{position:relative;width:8rem;height:8rem;margin:0 auto;border:3px solid var(--color-ink);border-radius:999px;background:var(--color-paper)}.clock-hand{position:absolute;left:50%;bottom:50%;transform-origin:bottom center;background:var(--color-ink);border-radius:999px}.clock-hand.hour{width:.35rem;height:2rem;margin-left:-.175rem}.clock-hand.minute{width:.2rem;height:2.75rem;margin-left:-.1rem}.coin-row{display:flex;flex-wrap:wrap;gap:.5rem}.coin-chip{padding:.45rem .75rem;border:2px solid var(--color-ink);border-radius:999px;background:var(--color-mustard);font-family:var(--font-chrome);font-size:.75rem;font-weight:700;text-transform:uppercase}.measurement-pair{display:grid;gap:.35rem;padding:var(--space-2);border:2px solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-paper)}.measurement-pair p{margin:0}.template-lab>label input:focus-visible,.template-lab>label textarea:focus-visible,.answer-field input:focus-visible,.answer-field textarea:focus-visible{border-color:var(--accent);outline:none;box-shadow:var(--focus-ring)}.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}@media(max-width:640px){:root{--shadow-hard: 4px 4px 0 var(--color-ink);--shadow-featured: 5px 5px 0 var(--color-orange), 5px 5px 0 2px var(--color-ink);--shadow-hard-sm: 3px 3px 0 var(--color-ink)}.lab-header{flex-direction:column}.lab-actions{width:100%}.lab-actions .btn{flex:1 1 calc(50% - .25rem)}.inline-field{flex-direction:column}}.hub-stats-strip{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;margin:var(--space-2) 0;padding:.75rem 1rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-paper);box-shadow:var(--shadow-hard-sm)}.hub-stat{font-family:var(--font-chrome);font-size:.8125rem;text-transform:uppercase;letter-spacing:.04em}.hub-stat strong{font-size:1rem;color:var(--accent)}.hub-progress-link{margin-left:auto;font-family:var(--font-chrome);font-size:.8125rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-ink)}.hub-pet-link{font-family:var(--font-chrome);font-size:.8125rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-ink);opacity:.9}.lab-card-progress{margin-top:.75rem}.lab-card-progress-label{margin:.35rem 0 0;font-size:.75rem;opacity:.95}.subject-progress-bar{height:.75rem;border:var(--border-width-inner) solid var(--color-ink);background:var(--color-cream);overflow:hidden}.subject-progress-bar.compact{height:.5rem}.subject-progress-fill{height:100%;background:var(--color-ink);transition:width .2s ease}.subject-progress-fill.accent-green{background:var(--color-green)}.subject-progress-fill.accent-pink{background:var(--color-pink)}.subject-progress-fill.accent-orange{background:var(--color-orange)}.smart-score-pill{display:inline-block;padding:.15rem .45rem;font-family:var(--font-chrome);font-size:.75rem;font-weight:700;text-transform:uppercase;border:var(--border-width-inner) solid var(--color-ink);border-radius:var(--radius-pill);background:var(--color-paper)}.done-badge{font-weight:700;color:var(--color-teal)}.inline-xp{display:block;margin-top:.35rem;font-family:var(--font-chrome);font-size:.875rem;font-weight:700;color:var(--color-teal)}.standard-progress-badge{min-width:3rem;text-align:right}.scoreboard-hero{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-2);margin:var(--space-3) 0}.scoreboard-stat{padding:1rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);box-shadow:var(--shadow-hard-sm)}.scoreboard-stat-label{display:block;font-family:var(--font-chrome);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}.scoreboard-stat-value{display:block;margin-top:.35rem;font-family:var(--font-display);font-size:1.75rem;line-height:1}.scoreboard-stat-sub{display:block;margin-top:.35rem;font-family:var(--font-chrome);font-size:.75rem;opacity:.85}.scoreboard-section{margin:var(--space-3) 0}.subject-progress-list{display:grid;gap:var(--space-2)}.subject-progress-row{display:block;padding:.75rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-paper);text-decoration:none;color:inherit;cursor:pointer;transition:transform var(--duration-fast) var(--ease-out-expo),box-shadow var(--duration-fast) var(--ease-out-expo),background-color .15s ease}.subject-progress-row:hover{background:var(--color-cream-2);transform:translate(4px)}.subject-progress-row:active{transform:translate(2px) scale(.995)}.subject-progress-row:focus-visible{outline:3px solid var(--color-mustard);outline-offset:2px}.subject-progress-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:.35rem}.subject-progress-count{font-family:var(--font-chrome);font-size:.8125rem;font-weight:600}.achievement-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-2)}.achievement-card{display:block;padding:1rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);box-shadow:var(--shadow-hard-sm);background:var(--color-paper);text-decoration:none;color:inherit;cursor:pointer;transition:transform var(--duration-fast) var(--ease-out-expo),box-shadow var(--duration-fast) var(--ease-out-expo),opacity .2s ease,background-color .15s ease}.achievement-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-hard)}.achievement-card:active{transform:translateY(0) scale(.995)}.achievement-card:focus-visible{outline:3px solid var(--color-mustard);outline-offset:2px}.achievement-card.earned{background:var(--color-bone);border-color:var(--color-mustard);border-width:3px}.achievement-card.locked{opacity:.55;box-shadow:none;transition:transform var(--duration-fast) var(--ease-out-expo),box-shadow var(--duration-fast) var(--ease-out-expo),opacity .2s ease,background-color .15s ease}.achievement-card h3{margin:.35rem 0 .15rem;font-size:.95rem;font-family:var(--font-display);text-transform:uppercase}.achievement-card p{margin:0;font-size:.8125rem}.achievement-icon{font-size:1.5rem}.next-achievement-hint{margin:0 0 var(--space-2);font-family:var(--font-chrome);font-size:.8125rem}.recent-activity-list{list-style:none;padding:0;margin:0;border:var(--border-width) solid var(--color-ink);background:var(--color-cream)}.recent-activity-row{display:grid;grid-template-columns:7rem 1fr auto;gap:var(--space-2);padding:.75rem 1rem;text-decoration:none;color:inherit;border-bottom:var(--border-width-inner) solid var(--color-ink);align-items:start}.recent-activity-row:hover{background:var(--color-cream-2)}.recent-activity-list li:last-child .recent-activity-row{border-bottom:none}.recent-activity-text{font-size:.9rem}.recent-activity-meta{font-family:var(--font-chrome);font-size:.75rem;white-space:nowrap}.profile-name-edit{margin:var(--space-2) 0 var(--space-3)}.profile-name-edit label{display:block;margin-bottom:.35rem;font-family:var(--font-chrome);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}.profile-name-row{display:flex;gap:var(--space-1);flex-wrap:wrap}.profile-name-row input{flex:1 1 12rem;min-height:44px;padding:.5rem .75rem;border:var(--border-width) solid var(--color-ink);font-size:1rem}.scoreboard-footer,.empty-state{font-family:var(--font-chrome);font-size:.8125rem}.mastery-panel{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);flex-shrink:0;margin:var(--space-2) 0;padding:1rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-bone);box-shadow:var(--shadow-soft)}.mastery-panel-body{flex:1 1 12rem}.mastery-panel-body p{margin:.15rem 0}.mastery-panel-heading{font-family:var(--font-display);font-size:.85rem;text-transform:uppercase}.mastery-xp{font-family:var(--font-display);font-size:1.25rem;text-transform:uppercase}.mastery-achievements{list-style:none;padding:0;margin:.35rem 0 0;font-family:var(--font-chrome);font-size:.875rem}.mastery-streak{font-weight:700}.mastery-dismiss{margin-left:auto}main:has(.home-page){max-width:1120px;padding-top:var(--space-2);padding-bottom:var(--space-2)}.home-page{display:flex;flex-direction:column;gap:clamp(2.5rem,6vw,4.5rem);padding-bottom:var(--space-4)}.home-hero{position:relative;overflow:visible;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;gap:clamp(.45rem,1.6vh,.9rem);min-height:calc(100dvh - var(--shell-chrome-height));padding-top:0;padding-bottom:0}.home-hero .home-eyebrow{margin:0}.home-hero .home-headline{font-size:clamp(2rem,7.5vw,4.25rem)}.home-hero .home-subhead{margin:0;font-size:clamp(.95rem,2.1vw,1.125rem);line-height:1.5}.home-hero .home-hero-actions{margin-top:clamp(.35rem,1.2vh,.75rem);padding-bottom:0}.home-eyebrow{font-family:var(--font-chrome);font-size:.875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-teal);margin:0 0 var(--space-2)}.home-headline{margin:0;font-family:var(--font-display);font-size:clamp(2.75rem,11vw,5.5rem);line-height:.95;letter-spacing:-.02em;text-transform:uppercase;max-width:14ch}.home-headline-line{display:inline-block}.home-subhead{margin:var(--space-3) 0 0;max-width:36rem;font-size:clamp(1.05rem,2.5vw,1.25rem);line-height:1.65;color:var(--color-ink-muted)}.home-hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3);padding-bottom:.5rem}.home-cta-primary{box-shadow:var(--shadow-featured)}.home-cta-primary:hover{transform:translate(-2px,-2px);box-shadow:10px 10px 0 var(--color-orange),10px 10px 0 2px var(--color-ink)}.home-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-2)}.home-stat-card{padding:1.25rem 1rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);box-shadow:var(--shadow-hard-sm);background:var(--color-paper)}.home-stat-card.accent-green{background:var(--color-teal);color:var(--color-paper)}.home-stat-card.accent-pink{background:var(--color-magenta);color:var(--color-paper)}.home-stat-card.accent-orange{background:var(--color-orange);color:var(--color-paper)}.home-stat-value{display:block;font-family:var(--font-display);font-size:clamp(2.5rem,8vw,3.75rem);line-height:1;letter-spacing:-.02em}.home-stat-label{display:block;margin-top:.5rem;font-family:var(--font-chrome);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;line-height:1.4;opacity:.92}.home-section{padding-top:var(--space-1)}.home-section-title{margin:0;font-family:var(--font-display);font-size:clamp(1.75rem,5vw,2.75rem);line-height:1.05;text-transform:uppercase;letter-spacing:-.01em;max-width:18ch}.home-section-lead{margin:var(--space-2) 0 var(--space-3);max-width:40rem;font-size:1.05rem;line-height:1.6;color:var(--color-ink-muted)}.home-feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-2)}.home-feature-card{padding:1.25rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);box-shadow:var(--shadow-hard-sm);background:var(--color-paper)}.home-feature-card.accent-green{background:var(--color-teal);color:var(--color-paper)}.home-feature-card.accent-pink{background:var(--color-magenta);color:var(--color-paper)}.home-feature-card.accent-orange{background:var(--color-orange);color:var(--color-paper)}.home-feature-card.accent-yellow{background:var(--color-bone);border-color:var(--color-mustard);border-width:3px}.home-feature-icon{font-size:1.75rem;line-height:1}.home-feature-card h3{margin:.65rem 0 .35rem;font-family:var(--font-display);font-size:1.05rem;text-transform:uppercase;line-height:1.15}.home-feature-card p{margin:0;font-size:1rem;line-height:1.55;text-transform:none}.home-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-2);margin-bottom:var(--space-3)}.home-step-card{padding:1.25rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-paper);box-shadow:var(--shadow-hard-sm)}.home-step-num{display:inline-block;font-family:var(--font-chrome);font-size:.75rem;font-weight:700;letter-spacing:.08em;padding:.2rem .45rem;border:2px solid var(--color-ink);border-radius:var(--radius-pill);background:var(--color-bone)}.home-step-card p{margin:0;font-size:1rem;line-height:1.55;color:var(--color-ink-muted);text-transform:none}.home-step-card h3{margin:.75rem 0 .35rem;font-family:var(--font-display);font-size:1rem;text-transform:uppercase;line-height:1.15}.home-subject-strip{display:flex;flex-wrap:wrap;gap:var(--space-1)}.home-subject-pill{display:inline-flex;align-items:center;padding:.45rem .75rem;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-pill);font-family:var(--font-chrome);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;box-shadow:var(--shadow-hard-sm)}.home-subject-pill.accent-green{background:var(--color-teal);color:var(--color-paper)}.home-subject-pill.accent-pink{background:var(--color-magenta);color:var(--color-paper)}.home-subject-pill.accent-orange{background:var(--color-orange);color:var(--color-paper)}.home-closer{padding:clamp(1.5rem,4vw,2.5rem);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-bone);box-shadow:var(--shadow-soft)}.home-closer-title{margin:0;font-family:var(--font-display);font-size:clamp(1.75rem,5vw,2.5rem);text-transform:uppercase;line-height:1.05}.home-closer-text{margin:var(--space-2) 0 var(--space-3);max-width:36rem;font-size:1.05rem;line-height:1.6}@media(prefers-reduced-motion:reduce){.home-cta-primary:hover{transform:none}}@media(max-width:640px){:root{--shell-chrome-height: calc( 7.5rem + var(--pet-footer-height) + var(--space-2) * 2 + env(safe-area-inset-top) + env(safe-area-inset-bottom) )}.app:not(:has(.pet-footer)){--shell-chrome-height: calc( 7.5rem + var(--space-2) * 2 + env(safe-area-inset-top) + env(safe-area-inset-bottom) )}.home-headline{max-width:none}.home-hero .home-headline{font-size:clamp(1.85rem,10vw,2.65rem)}.home-hero-actions .btn{flex:1 1 100%}}.character-guide{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-2);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-tablet);background:var(--color-paper);box-shadow:var(--shadow-hard-sm);color:var(--color-ink)}.character-guide--compact{padding:var(--space-1);gap:var(--space-1)}.character-guide--featured{box-shadow:var(--shadow-featured)}.character-guide-content{flex:1 1 12rem;min-width:0}.character-guide-name{margin:0 0 .25rem;font-family:var(--font-display);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.character-guide.accent-pink .character-guide-name{color:var(--color-magenta)}.character-guide.accent-green .character-guide-name{color:var(--color-teal)}.character-guide.accent-orange .character-guide-name{color:var(--color-orange)}.character-avatar{flex-shrink:0;border:var(--border-width-inner) solid var(--color-ink);border-radius:var(--radius-sm);box-shadow:var(--shadow-hard-sm);background:var(--color-paper);transition:transform .2s ease}.character-avatar--compact{transform:scale(.75);transform-origin:top left}.character-avatar-svg{display:block;max-width:100%;height:auto}.character-avatar--happy{transform:rotate(-2deg)}.character-avatar--cheering{animation:character-bounce .6s ease infinite alternate}.character-avatar--thinking{transform:rotate(3deg)}.character-avatar--compact.character-avatar--happy,.character-avatar--compact.character-avatar--cheering,.character-avatar--compact.character-avatar--thinking{transform-origin:top left}.character-avatar--compact.character-avatar--happy{transform:scale(.75) rotate(-2deg)}.character-avatar--compact.character-avatar--cheering{animation:character-bounce-compact .6s ease infinite alternate}.character-avatar--compact.character-avatar--thinking{transform:scale(.75) rotate(3deg)}@keyframes character-bounce{0%{transform:translateY(0)}to{transform:translateY(-4px)}}@keyframes character-bounce-compact{0%{transform:scale(.75) translateY(0)}to{transform:scale(.75) translateY(-4px)}}.character-speech{border:var(--border-width-inner) solid var(--color-ink);border-radius:var(--radius-sm);background:var(--color-bone);padding:.65rem .85rem;box-shadow:none;position:relative;color:var(--color-ink)}.character-speech:before{content:"";position:absolute;left:-10px;top:1rem;width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-right:10px solid var(--color-ink)}.character-speech:after{content:"";position:absolute;left:-6px;top:calc(1rem + 2px);width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:8px solid var(--color-bone)}.character-speech--compact{padding:.4rem .6rem}.character-speech p{margin:0;font-size:1rem;line-height:1.55;color:var(--color-ink)}.character-speech--compact p{font-size:.85rem}.character-crew{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:var(--space-2);margin:var(--space-3) 0}.character-crew>.character-guide{width:100%;min-width:0}.character-crew-label{grid-column:1 / -1;margin:0;font-family:var(--font-chrome);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;text-wrap:balance}.character-lab-reaction{display:flex;align-items:flex-start;gap:var(--space-1);margin-top:var(--space-1)}.mastery-panel .character-guide{flex:1 1 100%;margin-bottom:var(--space-1);background:var(--color-paper)}.home-guides{margin:var(--space-4) 0}.home-guides .character-crew{margin-top:var(--space-2)}@media(prefers-reduced-motion:reduce){.character-avatar--cheering,.character-avatar--compact.character-avatar--cheering{animation:none}.character-avatar,.character-avatar--happy,.character-avatar--thinking{transition:none}.motion-reveal,.motion-stagger>*,.page,.route-transition,.home-hero>*,.hero-blob,.celebration-balloon,.celebration-particle,.mastery-panel,.mastery-xp,.mastery-achievements li,.check-result,.check-result--ok,.inline-xp,.top-nav,.character-guide .character-avatar--idle,.character-speech-line,.standard-list li,.recent-activity-list li,.done-badge,.streak-flame,.subject-progress-fill:after,.achievement-card.earned,.achievement-card.earned .achievement-icon,.nav-links a.active:after,.hub-stat--xp strong,.scoreboard-stat--xp .scoreboard-stat-value{animation:none!important;transition:none!important;opacity:1!important;transform:none!important}.motion-reveal,.motion-stagger>*{opacity:1;transform:none}}@keyframes motion-fade-up{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes motion-pop-in{0%{opacity:0;transform:scale(.94) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes motion-slide-in{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}@keyframes motion-xp-pop{0%{opacity:0;transform:scale(.85) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes motion-float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes motion-shimmer{0%{background-position:200% center}to{background-position:-200% center}}.page,.top-nav{animation:motion-fade-up var(--duration-medium) var(--ease-out-expo) both}.motion-reveal{opacity:0;transform:translateY(20px);transition:opacity var(--duration-slow) var(--ease-out-expo),transform var(--duration-slow) var(--ease-out-expo);transition-delay:var(--motion-delay, 0ms)}.motion-reveal.is-visible{opacity:1;transform:translateY(0)}.motion-stagger>*{opacity:0;transform:translateY(18px);transition:opacity var(--duration-slow) var(--ease-out-expo),transform var(--duration-slow) var(--ease-out-expo)}.motion-stagger.is-visible>*:nth-child(1){opacity:1;transform:translateY(0);transition-delay:0ms}.motion-stagger.is-visible>*:nth-child(2){opacity:1;transform:translateY(0);transition-delay:80ms}.motion-stagger.is-visible>*:nth-child(3){opacity:1;transform:translateY(0);transition-delay:.16s}.motion-stagger.is-visible>*:nth-child(4){opacity:1;transform:translateY(0);transition-delay:.24s}.motion-stagger.is-visible>*:nth-child(5){opacity:1;transform:translateY(0);transition-delay:.32s}.motion-stagger.is-visible>*:nth-child(6){opacity:1;transform:translateY(0);transition-delay:.4s}.home-hero>*{animation:motion-fade-up .7s var(--ease-out-expo) both}.home-hero>*:nth-child(1){animation-delay:.05s}.home-hero>*:nth-child(2){animation-delay:.12s}.home-hero>*:nth-child(3){animation-delay:.2s}.home-hero>*:nth-child(4){animation-delay:.28s}.home-headline-line{display:inline-block;animation:motion-fade-up .8s var(--ease-out-expo) both}.home-headline-line:nth-child(1){animation-delay:.15s}.home-headline-line:nth-child(2){animation-delay:.22s}.home-cta-primary{position:relative}.home-cta-primary:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.35) 50%,transparent 60%);background-size:200% 100%;opacity:0;transition:opacity .2s ease}.home-cta-primary:hover:after{opacity:1;animation:motion-shimmer 1.2s var(--ease-out-expo)}.lab-card{transition:transform var(--duration-fast) var(--ease-out-expo),box-shadow var(--duration-fast) var(--ease-out-expo),background-color .15s ease,color .15s ease}.lab-card:hover{transform:translateY(-4px) scale(1.01);box-shadow:0 8px 0 var(--color-ink)}.btn.primary{transition:transform var(--duration-fast) var(--ease-spring),box-shadow var(--duration-fast) var(--ease-out-expo),background-color .15s ease,color .15s ease}.btn:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 6px 0 var(--color-ink)}.btn:active{transform:translateY(1px) scale(.99);box-shadow:0 2px 0 var(--color-ink)}.btn.secondary:hover{background:var(--color-paper)}.btn.hint:hover{background:#6aa8bb}.btn.danger:hover{background:#a83266}.mastery-panel{animation:motion-pop-in .5s var(--ease-spring) both}.check-result{animation:motion-slide-in .35s var(--ease-out-expo) both}.inline-xp{animation:motion-xp-pop .4s var(--ease-spring) both}.character-guide .character-avatar--idle{animation:motion-float 4s ease-in-out infinite}.subject-progress-fill{transition:width .45s var(--ease-out-expo)}.achievement-card.earned{animation:motion-pop-in .45s var(--ease-spring) both}.home-stat-card,.home-feature-card,.home-step-card{transition:transform var(--duration-fast) var(--ease-out-expo),box-shadow var(--duration-fast) var(--ease-out-expo)}.home-stat-card:hover,.home-feature-card:hover,.home-step-card:hover{transform:translateY(-3px);box-shadow:0 6px 0 var(--color-ink)}.character-guide{transition:transform var(--duration-fast) var(--ease-out-expo),box-shadow var(--duration-fast) var(--ease-out-expo)}.character-guide:hover{transform:translateY(-2px)}.character-guide--featured:hover{transform:translateY(-3px) scale(1.005)}@keyframes motion-route-enter{0%{opacity:0;transform:translateY(16px) scale(.992)}to{opacity:1;transform:translateY(0) scale(1)}}.route-transition{animation:motion-route-enter .45s var(--ease-out-expo) both}.route-transition .page{animation:none}.hero-backdrop{position:absolute;inset:-10% -8% auto;height:75%;pointer-events:none;z-index:0;overflow:hidden}.home-hero>*:not(.hero-backdrop){position:relative;z-index:1}.hero-blob{position:absolute;border-radius:50%;filter:blur(48px);opacity:.45;animation:motion-blob-drift 14s ease-in-out infinite}.hero-blob--teal{width:220px;height:220px;background:var(--color-teal);top:10%;left:5%;animation-delay:0s}.hero-blob--magenta{width:180px;height:180px;background:var(--color-magenta);top:0;right:12%;animation-delay:-4s}.hero-blob--mustard{width:140px;height:140px;background:var(--color-mustard);bottom:0;left:40%;animation-delay:-8s}@keyframes motion-blob-drift{0%,to{transform:translate(0) scale(1)}33%{transform:translate(18px,-12px) scale(1.06)}66%{transform:translate(-14px,8px) scale(.96)}}.mastery-panel{position:relative;overflow:hidden}.celebration-burst{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2}.celebration-particle{position:absolute;top:45%;left:50%;width:10px;height:10px;margin:-5px 0 0 -5px;background:var(--particle-color, var(--color-mustard));border-radius:2px;opacity:0;animation:motion-particle-burst 5s var(--ease-out-expo) var(--delay, 0ms) both}@keyframes motion-particle-burst{0%{opacity:1;transform:translate(0) rotate(0) scale(1)}70%{opacity:1}to{opacity:0;transform:translate(var(--tx, 0),var(--ty, -60px)) rotate(var(--rot, 0deg)) scale(.4)}}.celebration-balloon{position:absolute;bottom:-20%;left:var(--balloon-left, 50%);width:18px;height:24px;background:var(--balloon-color, var(--color-teal));border-radius:50%/55% 55% 45% 45%;opacity:0;animation:motion-balloon-float 5s var(--ease-out-expo) var(--balloon-delay, 0ms) both}.celebration-balloon:after{content:"";position:absolute;left:50%;bottom:-8px;width:1px;height:10px;background:var(--color-ink);transform:translate(-50%)}@keyframes motion-balloon-float{0%{opacity:0;transform:translateY(40px) scale(.7)}10%{opacity:1}75%{opacity:1}to{opacity:0;transform:translate(var(--balloon-drift, 0),-120px) scale(1)}}.mastery-xp{animation:motion-xp-glow 1.2s var(--ease-out-expo) both}@keyframes motion-xp-glow{0%{transform:scale(.9);filter:brightness(1)}40%{transform:scale(1.08);filter:brightness(1.15)}to{transform:scale(1);filter:brightness(1)}}.mastery-achievements li{animation:motion-pop-in .4s var(--ease-spring) both}.mastery-achievements li:nth-child(1){animation-delay:.1s}.mastery-achievements li:nth-child(2){animation-delay:.18s}.mastery-achievements li:nth-child(3){animation-delay:.26s}@keyframes motion-speech-pop{0%{opacity:0;transform:translateY(6px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.character-speech-line{animation:motion-speech-pop .35s var(--ease-spring) both}.character-avatar--cheering{animation:motion-cheer-bounce .6s var(--ease-spring) both}@keyframes motion-cheer-bounce{0%{transform:scale(.85) rotate(-4deg)}40%{transform:scale(1.12) rotate(3deg)}70%{transform:scale(.96) rotate(-1deg)}to{transform:scale(1) rotate(0)}}.character-avatar--happy{animation:motion-float 2.5s ease-in-out infinite,motion-wiggle .5s var(--ease-spring) both}@keyframes motion-wiggle{0%,to{rotate:0deg}25%{rotate:-4deg}75%{rotate:4deg}}.check-result--ok{animation:motion-slide-in .35s var(--ease-out-expo) both,motion-success-pulse .6s var(--ease-out-expo) .1s both}@keyframes motion-success-pulse{0%{box-shadow:0 0 #2d6a4f59}70%{box-shadow:0 0 0 8px #2d6a4f00}to{box-shadow:none}}.streak-flame{display:inline-block;animation:motion-streak-flicker 1.4s ease-in-out infinite}@keyframes motion-streak-flicker{0%,to{transform:scale(1) rotate(0)}25%{transform:scale(1.15) rotate(-6deg)}50%{transform:scale(.95) rotate(4deg)}75%{transform:scale(1.1) rotate(-3deg)}}.hub-stat--xp strong,.scoreboard-stat--xp .scoreboard-stat-value{background:linear-gradient(90deg,var(--color-ink) 0%,var(--color-mustard) 50%,var(--color-ink) 100%);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:motion-xp-shimmer 3s linear infinite}@keyframes motion-xp-shimmer{to{background-position:200% center}}.brand{transition:transform var(--duration-fast) var(--ease-spring)}.brand:hover{transform:scale(1.03) rotate(-1deg)}.nav-links a{position:relative}.nav-links a.active:after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:3px;background:currentColor;border-radius:2px;animation:motion-nav-underline .35s var(--ease-out-expo) both}@keyframes motion-nav-underline{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.standard-list li{animation:motion-fade-up .45s var(--ease-out-expo) both;animation-delay:var(--row-delay, 0ms)}.standard-row{transition:transform var(--duration-fast) var(--ease-out-expo),box-shadow var(--duration-fast) var(--ease-out-expo),background-color .15s ease}.standard-row:hover{transform:translate(6px)}.standard-row:active{transform:translate(2px) scale(.995)}.done-badge{display:inline-block;animation:motion-pop-in .4s var(--ease-spring) both}.recent-activity-list li{animation:motion-fade-up .4s var(--ease-out-expo) both;animation-delay:var(--row-delay, 0ms)}.recent-activity-row{transition:transform var(--duration-fast) var(--ease-out-expo),background-color .15s ease}.recent-activity-row:hover{transform:translate(4px)}.subject-progress-fill{position:relative;overflow:hidden}.subject-progress-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);transform:translate(-100%);animation:motion-bar-shine 2.8s ease-in-out infinite}@keyframes motion-bar-shine{0%,70%,to{transform:translate(-100%)}85%{transform:translate(100%)}}.lab-card-progress .subject-progress-fill:after{animation-duration:3.5s}.achievement-card.earned .achievement-icon{display:inline-block;animation:motion-badge-spin .65s var(--ease-spring) both}@keyframes motion-badge-spin{0%{transform:scale(.5) rotate(-20deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}.achievement-card.locked{transition:transform var(--duration-fast) var(--ease-out-expo),box-shadow var(--duration-fast) var(--ease-out-expo),opacity .2s ease,background-color .15s ease}.achievement-card.locked:hover{opacity:.85;box-shadow:var(--shadow-hard-sm)}.motion-stagger.is-visible>*:nth-child(7){opacity:1;transform:translateY(0);transition-delay:.48s}.motion-stagger.is-visible>*:nth-child(8){opacity:1;transform:translateY(0);transition-delay:.56s}.motion-stagger.is-visible>*:nth-child(9){opacity:1;transform:translateY(0);transition-delay:.64s}.motion-stagger.is-visible>*:nth-child(10){opacity:1;transform:translateY(0);transition-delay:.72s}.home-subject-pill{transition:transform var(--duration-fast) var(--ease-spring)}.home-subject-pill:hover{transform:translateY(-2px) scale(1.04)}.hub-progress-link{transition:transform var(--duration-fast) var(--ease-out-expo)}.hub-progress-link:hover,.hub-pet-link:hover{transform:translate(4px)}.hub-pet-link{transition:transform var(--duration-fast) var(--ease-out-expo)}.pet-footer{grid-area:footer;position:relative;flex-shrink:0;z-index:3;border-top:var(--border-width) solid var(--color-ink);background:var(--color-paper);padding-bottom:env(safe-area-inset-bottom);overflow:visible}.pet-footer-lane{position:relative;height:var(--pet-footer-height);overflow:visible}.island-pet-anchor{position:absolute;inset:0;pointer-events:none;--pet-size: 4.25rem;--pet-speech-max: 24rem;--pet-speech-min: 14rem}.island-pet-rail{position:relative;width:4.25rem;height:4.25rem;overflow:visible;transition-property:transform;transition-timing-function:linear;will-change:transform}.island-pet-anchor.is-reduced-motion .island-pet-rail{transition:none}.island-pet-hit{pointer-events:auto;width:4.25rem;height:4.25rem;display:grid;place-items:center;cursor:pointer;border:none;background:transparent;padding:0;-webkit-tap-highlight-color:transparent}.island-pet-hit .pet-sprite{width:3.85rem;height:3.85rem;filter:drop-shadow(2px 3px 0 rgba(10,10,10,.16))}.island-pet-hint{pointer-events:auto;display:inline-flex;align-items:center;gap:.45rem;padding:.35rem .5rem;border:2px solid var(--color-ink);border-radius:999px;background:var(--color-paper);box-shadow:var(--shadow-hard-sm);white-space:nowrap;font-family:var(--font-chrome);font-size:.7rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--color-ink);animation:motion-pop-in .3s var(--ease-spring) both}.island-pet-side-speech{pointer-events:none;position:absolute;top:50%;translate:0 -50%;z-index:5;animation:motion-pop-in .3s var(--ease-spring) both;box-sizing:border-box}.island-pet-side-speech .character-speech{width:100%;box-sizing:border-box}.island-pet-side-speech--right{left:calc(100% + .35rem);width:min(var(--pet-speech-max),max(var(--pet-speech-min),calc(var(--lane-width, 100%) - var(--pet-x, 0px) - var(--pet-size) - 1rem)))}.island-pet-side-speech--left{right:calc(100% + .35rem);left:auto;width:min(var(--pet-speech-max),max(var(--pet-speech-min),calc(var(--pet-x, 0px) - 1rem)))}.island-pet-side-speech--right .character-speech:before{inset:50% auto auto -10px;translate:0 -50%;border-top:8px solid transparent;border-bottom:8px solid transparent;border-right:10px solid var(--color-ink);border-left:none}.island-pet-side-speech--right .character-speech:after{inset:50% auto auto -6px;translate:0 calc(-50% + 2px);border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:8px solid var(--color-bone);border-left:none}.island-pet-side-speech--left .character-speech:before{inset:50% -10px auto auto;translate:0 -50%;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:10px solid var(--color-ink);border-right:none}.island-pet-side-speech--left .character-speech:after{inset:50% -6px auto auto;translate:0 calc(-50% + 2px);border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:8px solid var(--color-bone);border-right:none}.island-pet-side-speech .island-pet-hint{pointer-events:auto}.island-pet-hide{border:2px solid var(--color-ink);border-radius:999px;background:var(--color-bone);padding:.2rem .55rem;font:inherit;cursor:pointer;color:var(--color-ink)}.island-pet-hide:hover{background:var(--color-cream)}.pet-sprite-wrap{display:grid;place-items:center;width:100%;height:100%}.pet-sprite-wrap--flip{transform:scaleX(-1)}.pet-sprite{display:block;overflow:visible;transform-origin:50% 70%}.codex-pet-sprite{display:block;image-rendering:pixelated;image-rendering:crisp-edges;flex-shrink:0}.pet-sprite-wrap--preview .codex-pet-sprite{filter:drop-shadow(2px 3px 0 rgba(10,10,10,.12))}.island-pet-hit .codex-pet-sprite{filter:drop-shadow(2px 3px 0 rgba(10,10,10,.16))}.pet-part{transform-box:fill-box;transform-origin:center}.pet-sprite--idle{animation:pet-breathe 3.4s ease-in-out infinite}.pet-sprite--idle .pet-part--eye,.pet-sprite--idle .pet-part--eye-l,.pet-sprite--idle .pet-part--eye-r{animation:pet-blink 4.8s ease-in-out infinite}.pet-sprite--idle .pet-part--claw-r,.pet-sprite--idle .pet-part--fin,.pet-sprite--idle .pet-part--leaf,.pet-sprite--idle .pet-part--ear-l,.pet-sprite--idle .pet-part--ear-r{animation:pet-twitch 3.4s ease-in-out infinite}.pet-sprite--idle .pet-part--tail{animation:pet-tail-sway 2.8s ease-in-out infinite}.pet-sprite--working{animation:pet-scurry .55s var(--ease-spring) infinite}.pet-sprite--working .pet-part--leg-l{animation:pet-leg-l .35s ease-in-out infinite}.pet-sprite--working .pet-part--leg-r{animation:pet-leg-r .35s ease-in-out infinite}.pet-sprite--working .pet-part--claw-l,.pet-sprite--working .pet-part--claw-r,.pet-sprite--working .pet-part--paw-l,.pet-sprite--working .pet-part--paw-r{animation:pet-claw-work .45s ease-in-out infinite}.pet-sprite--working .pet-part--sweat,.pet-sprite--working .pet-part--bubble{animation:pet-bubble 1.1s ease-out infinite}.pet-sprite--waiting{animation:pet-breathe 5s ease-in-out infinite;opacity:.92}.pet-sprite--waiting .pet-part--eye,.pet-sprite--waiting .pet-part--eye-l,.pet-sprite--waiting .pet-part--eye-r{animation:pet-blink-slow 6s ease-in-out infinite}.pet-sprite--celebrating{animation:pet-hop .55s var(--ease-spring) infinite}.pet-sprite--celebrating .pet-part--fx{animation:pet-sparkle .7s ease-in-out infinite}.pet-sprite--celebrating .pet-part--claw-r,.pet-sprite--celebrating .pet-part--fin,.pet-sprite--celebrating .pet-part--paw-r,.pet-sprite--celebrating .pet-part--paw-l{animation:pet-wave-arm .45s ease-in-out infinite}.pet-sprite--waving .pet-part--claw-r,.pet-sprite--waving .pet-part--fin,.pet-sprite--waving .pet-part--paw-r,.pet-sprite--waving .pet-part--paw-l{animation:pet-wave-arm .4s ease-in-out infinite}.pet-sprite--waving{animation:pet-breathe 2.2s ease-in-out infinite}@keyframes pet-breathe{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-2px) scale(1.02,.98)}}@keyframes pet-blink{0%,42%,48%,to{transform:scaleY(1)}45%{transform:scaleY(.12)}}@keyframes pet-blink-slow{0%,70%,78%,to{transform:scaleY(1)}74%{transform:scaleY(.1)}}@keyframes pet-twitch{0%,70%,to{transform:rotate(0)}78%{transform:rotate(12deg)}86%{transform:rotate(-4deg)}}@keyframes pet-tail-sway{0%,to{transform:rotate(0)}50%{transform:rotate(-10deg)}}@keyframes pet-scurry{0%,to{transform:translate(0) rotate(0)}25%{transform:translate(2px,-1px) rotate(2deg)}75%{transform:translate(-2px) rotate(-2deg)}}@keyframes pet-leg-l{0%,to{transform:rotate(0)}50%{transform:rotate(-18deg)}}@keyframes pet-leg-r{0%,to{transform:rotate(0)}50%{transform:rotate(18deg)}}@keyframes pet-claw-work{0%,to{transform:rotate(0)}50%{transform:rotate(14deg)}}@keyframes pet-bubble{0%{opacity:0;transform:translateY(0) scale(.6)}40%{opacity:1}to{opacity:0;transform:translateY(-10px) scale(1)}}@keyframes pet-hop{0%,to{transform:translateY(0) scale(1)}40%{transform:translateY(-10px) scale(.96,1.05)}70%{transform:translateY(0) scale(1.04,.94)}}@keyframes pet-sparkle{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}@keyframes pet-wave-arm{0%,to{transform:rotate(0)}50%{transform:rotate(28deg)}}.pet-pref-toggle{display:flex;align-items:center;gap:.55rem;margin-top:var(--space-2);font-family:var(--font-body);font-size:.95rem;font-weight:600;text-transform:none;letter-spacing:normal;cursor:pointer}.pet-pref-toggle input{width:1.1rem;height:1.1rem;accent-color:var(--accent)}.pet-pref-hint{margin:.35rem 0 0;font-size:.85rem;color:var(--color-ink-muted, rgba(10, 10, 10, .65))}.pet-settings-section{margin-top:var(--space-2);margin-bottom:var(--space-3)}.pet-settings-lead{margin:0 0 var(--space-2);max-width:36rem}.pet-species-picker{margin:var(--space-2) 0 0}.pet-species-picker-label{margin:0 0 var(--space-2);font-family:var(--font-chrome);font-size:.75rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.pet-species-picker-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2)}.pet-species-option{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.55rem .4rem .65rem;border:2px solid var(--color-ink);border-radius:var(--radius-md, .65rem);background:var(--color-paper);box-shadow:var(--shadow-hard-sm);cursor:pointer;font:inherit;color:var(--color-ink);transition:background .15s ease,transform .15s var(--ease-spring)}.pet-species-option:hover{background:var(--color-cream)}.pet-species-option.is-selected{background:var(--color-cream);box-shadow:var(--shadow-hard)}.pet-species-option.is-dimmed{opacity:.72}.pet-species-preview{display:grid;place-items:center;width:100%;height:5.5rem;overflow:hidden;flex-shrink:0}.pet-species-preview .pet-sprite-wrap{width:auto;height:auto;max-height:100%}.pet-species-preview .pet-sprite,.pet-species-preview .codex-pet-sprite{max-width:100%;max-height:5.25rem}.pet-species-label{font-family:var(--font-chrome);font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;position:relative;z-index:1;text-align:center;width:100%;line-height:1.2}@media(max-width:640px){.top-nav{flex-wrap:wrap}.brand{font-size:.8125rem}.nav-links{flex-wrap:wrap;width:100%;justify-content:flex-start}.standard-list{overflow:visible}.standard-row,.recent-activity-row{grid-template-columns:1fr;gap:.35rem}.standard-text,.recent-activity-text{min-width:0;overflow-wrap:break-word}.standard-progress-badge{justify-self:start;text-align:left}.recent-activity-meta{white-space:normal;justify-self:start}.hub-stats-strip{flex-direction:column;align-items:stretch}.hub-progress-link,.hub-pet-link{margin-left:0;width:100%}.mastery-dismiss{margin-left:0;flex-basis:100%}.practice-stats{font-size:.8125rem}.island-pet-hint{white-space:normal;max-width:min(16rem,calc(100% - 1.5rem));font-size:.8125rem}.home-hero{overflow:clip}.hero-backdrop{inset:-5% -4% auto}table{min-width:520px}.table-scroll-hint{margin:0 0 var(--space-1);font-family:var(--font-chrome);font-size:.75rem;color:var(--color-ink-muted)}.chart-count{font-size:13px}.chart-label{font-size:12px}.ruler-num{font-size:11px}.ruler-tick{font-size:.7rem}.pet-species-picker-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.island-pet-anchor,.island-pet-rail,.island-pet-hit{width:3.6rem;height:3.6rem}.island-pet-anchor{--pet-size: 3.6rem;--pet-speech-max: 20rem;--pet-speech-min: 13rem}.island-pet-side-speech--right{width:min(var(--pet-speech-max),max(var(--pet-speech-min),calc(var(--lane-width, 100%) - var(--pet-x, 0px) - var(--pet-size) - .75rem)))}.island-pet-side-speech--left{width:min(var(--pet-speech-max),max(var(--pet-speech-min),calc(var(--pet-x, 0px) - .75rem)))}.island-pet-hit .pet-sprite{width:3.25rem;height:3.25rem}}@media(max-width:520px){.pet-species-picker-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.island-pet-hit,.island-pet-hint,.pet-sprite--idle,.pet-sprite--working,.pet-sprite--waiting,.pet-sprite--celebrating,.pet-sprite--waving,.pet-part,.pet-part--eye,.pet-part--eye-l,.pet-part--eye-r,.pet-part--claw-l,.pet-part--claw-r,.pet-part--fin,.pet-part--leaf,.pet-part--ear-l,.pet-part--ear-r,.pet-part--paw-l,.pet-part--paw-r,.pet-part--tail,.pet-part--leg-l,.pet-part--leg-r,.pet-part--fx,.pet-part--sweat,.pet-part--bubble{animation:none!important;transition:none!important}}.agent-confirm-panel,.agent-guide-panel{margin:.75rem 1rem 0;padding:.9rem 1rem;border:3px solid var(--ink, #1a1a1a);background:color-mix(in srgb,var(--accent, #ffe566) 35%,white);box-shadow:4px 4px 0 var(--ink, #1a1a1a)}.agent-confirm-title,.agent-guide-label{margin:0 0 .35rem;font-family:var(--font-display, inherit);font-weight:800;font-size:.95rem}.agent-confirm-body,.agent-guide-question{margin:0 0 .75rem;line-height:1.35}.agent-confirm-actions{display:flex;flex-wrap:wrap;gap:.5rem}.agent-guide-dismiss{margin-top:.15rem}
