:root{color-scheme:light dark;--color-bg: #FBF8F3;--color-surface: #FFFDF9;--color-surface-2: #F2EBE1;--color-border: #E3D7C8;--color-border-strong: #8C7B6C;--color-text: #2B2420;--color-text-muted: #6B5D52;--color-text-placeholder: #7A6B5F;--color-brand: #C2553A;--color-primary: #B04A2A;--color-primary-pressed: #8F3A20;--color-on-primary: #FFFFFF;--color-primary-soft: #F6E2D8;--color-accent: #1F5A96;--color-focus: #1F5A96;--color-freeze: #285F8A;--color-freeze-soft: #DCE8F5;--grade-again: #A63A3A;--grade-again-soft: #F7E1DE;--grade-hard: #8F5B00;--grade-hard-soft: #F6E7C8;--grade-good: #3F6B2A;--grade-good-soft: #E3EDD6;--grade-easy: #1F5A96;--grade-easy-soft: #DCE8F5;--color-on-grade: #FFFFFF;--color-correct: var(--grade-good);--color-almost: var(--grade-hard);--color-wrong: var(--grade-again);--color-diff-mark: #F9D98B;--color-scrim: rgb(26 22 19 / .45);--font-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "Noto Sans Hebrew", "Helvetica Neue", Arial, sans-serif;--font-card: ui-serif, "New York", "Iowan Old Style", Charter, "Noto Serif", Georgia, "Times New Roman", serif;--text-xs: .75rem;--text-sm: .875rem;--text-md: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-card-lg: 1.875rem;--text-card-xl: 2.5rem;--leading-tight: 1.2;--leading-card: 1.25;--leading-body: 1.45;--weight-regular: 400;--weight-semibold: 600;--weight-bold: 700;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--gutter: 16px;--content-max: 560px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-pill: 999px;--shadow-1: 0 1px 2px rgb(43 36 32 / .06), 0 1px 1px rgb(43 36 32 / .04);--shadow-2: 0 4px 12px rgb(43 36 32 / .08), 0 1px 3px rgb(43 36 32 / .06);--shadow-3: 0 -8px 28px rgb(43 36 32 / .14);--tap-min: 44px;--tap-comfy: 48px;--btn-primary-h: 56px;--grade-h: 64px;--answer-row-h: 52px;--appbar-h: 52px;--tabbar-h: 56px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--kb-inset: 0px;--vvh: 100dvh;--dur-instant: 80ms;--dur-fast: .14s;--dur-base: .2s;--dur-slow: .32s;--dur-celebrate: .7s;--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-out: cubic-bezier(.05, .7, .1, 1);--ease-in: cubic-bezier(.3, 0, .8, .15);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--z-appbar: 10;--z-tabbar: 20;--z-actionbar: 30;--z-sheet: 40;--z-dialog: 50;--z-toast: 60;--z-banner: 70}@media(prefers-color-scheme:dark){:root{--color-bg: #1A1613;--color-surface: #24201C;--color-surface-2: #2E2823;--color-border: #3B342D;--color-border-strong: #857667;--color-text: #F2EBE2;--color-text-muted: #B5A698;--color-text-placeholder: #94877A;--color-brand: #E58A64;--color-primary: #E58A64;--color-primary-pressed: #F0A283;--color-on-primary: #1A1613;--color-primary-soft: #3A261D;--color-accent: #8DB8E8;--color-focus: #8DB8E8;--color-freeze: #8CC3EA;--color-freeze-soft: #1F2B3A;--grade-again: #EE8E86;--grade-again-soft: #3A2523;--grade-hard: #E3B35C;--grade-hard-soft: #3A2E1A;--grade-good: #A3C77F;--grade-good-soft: #28331F;--grade-easy: #8DB8E8;--grade-easy-soft: #1F2B3A;--color-on-grade: #1A1613;--color-diff-mark: #6B5214;--color-scrim: rgb(0 0 0 / .6);--shadow-1: none;--shadow-2: 0 0 0 1px var(--color-border);--shadow-3: 0 -1px 0 var(--color-border), 0 -8px 28px rgb(0 0 0 / .5)}}@media(prefers-reduced-motion:reduce){:root{--dur-base: 1ms;--dur-slow: 1ms;--dur-celebrate: 1ms;--ease-spring: linear}*,*:before,*:after{scroll-behavior:auto!important}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font:var(--weight-regular) var(--text-md)/var(--leading-body) var(--font-ui);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent}button,[role=button],a{touch-action:manipulation}button{-webkit-user-select:none;user-select:none;font:inherit}input,textarea,select{font-size:max(16px,1em)}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-sm)}.num{font-variant-numeric:tabular-nums}#root{min-height:100dvh}.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}html,body{overscroll-behavior:none}body{padding-left:var(--safe-left);padding-right:var(--safe-right)}h1,h2,h3,p{margin:0}a{color:var(--color-accent);text-decoration:none}[lang=es]{hyphens:auto}.muted{color:var(--color-text-muted)}.small{font-size:var(--text-sm)}.xs{font-size:var(--text-xs)}.serif{font-family:var(--font-card)}.selectable{-webkit-user-select:text;user-select:text}.stack{display:flex;flex-direction:column;gap:var(--space-3)}.row-flex{display:flex;align-items:center;gap:var(--space-2)}.grow{flex:1;min-width:0}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.center{text-align:center}.section-h{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin:var(--space-6) 0 var(--space-2)}.page{max-width:var(--content-max);margin:0 auto;padding:0 var(--gutter);padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom) + var(--space-4));min-height:100dvh;display:flex;flex-direction:column}.page.no-tabs{padding-bottom:calc(var(--safe-bottom) + var(--space-6))}.page.has-action{padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom) + var(--btn-primary-h) + var(--space-8))}html[data-keyboard=open] .page{padding-bottom:calc(var(--kb-inset) + var(--btn-primary-h) + var(--space-8))}.appbar{position:sticky;top:0;z-index:var(--z-appbar);margin:0 calc(-1 * var(--gutter));padding:var(--safe-top) var(--gutter) 0;min-height:calc(var(--appbar-h) + var(--safe-top));display:flex;align-items:center;gap:var(--space-2);background:var(--color-bg);border-bottom:1px solid transparent;transition:border-color var(--dur-fast)}.appbar.scrolled{border-bottom-color:var(--color-border)}.appbar h1{font-size:var(--text-xl);font-weight:var(--weight-bold);line-height:var(--leading-tight)}.appbar .back{margin-left:-12px}.appbar-sub{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:-6px;margin-bottom:var(--space-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap-comfy);padding:0 var(--space-4);border:0;border-radius:var(--radius-md);font-weight:var(--weight-semibold);font-size:var(--text-md);cursor:pointer;transition:transform var(--dur-instant),background-color var(--dur-fast),opacity var(--dur-fast);background:transparent;color:var(--color-primary);text-align:center}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45;cursor:default}.btn-block{width:100%}.btn-primary{background:var(--color-primary);color:var(--color-on-primary);min-height:var(--btn-primary-h)}.btn-primary:active:not(:disabled){background:var(--color-primary-pressed)}.btn-tonal{background:var(--color-primary-soft);color:var(--color-primary-pressed)}.btn-tall{min-height:var(--btn-primary-h)}.btn-text{min-height:var(--tap-min);padding:0 var(--space-3)}.btn-ghost{min-height:var(--tap-min);padding:0 var(--space-3);color:var(--color-text-muted);font-size:var(--text-sm)}.btn-danger{background:var(--grade-again);color:var(--color-on-grade)}.icon-btn{width:var(--tap-min);height:var(--tap-min);display:inline-grid;place-items:center;flex:none;border:0;background:transparent;color:var(--color-text);border-radius:var(--radius-pill);cursor:pointer}.icon-btn:active{background:var(--color-surface-2)}.btn-pair{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:var(--space-4);border:1px solid var(--color-border)}.skeleton{background:var(--color-surface-2);border-radius:var(--radius-sm);min-height:1em;animation:fade-in var(--dur-base) both}.field{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-4)}.field>label,.label{font-size:var(--text-sm);font-weight:var(--weight-semibold)}.input,.textarea,.select{width:100%;min-height:var(--tap-comfy);padding:var(--space-3);font:inherit;font-size:var(--text-md);color:var(--color-text);background:var(--color-surface);border:1.5px solid var(--color-border-strong);border-radius:var(--radius-md);outline:none}.textarea{resize:none;line-height:1.5}.input:focus,.textarea:focus{border-color:var(--color-focus);box-shadow:0 0 0 1px var(--color-focus)}.input::placeholder,.textarea::placeholder{color:var(--color-text-placeholder)}.helper{font-size:var(--text-sm);color:var(--color-text-muted)}.error{font-size:var(--text-sm);color:var(--grade-again)}.select{display:flex;align-items:center;gap:var(--space-2);text-align:start;cursor:pointer;font-weight:var(--weight-regular)}.chips{display:flex;gap:var(--space-2);overflow-x:auto;scrollbar-width:none;padding:4px 0;overscroll-behavior-x:contain}.chips::-webkit-scrollbar{display:none}.chip{flex:none;display:inline-flex;align-items:center;gap:var(--space-1);height:36px;padding:0 var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;position:relative;max-width:220px}.chip:after{content:"";position:absolute;inset:-4px 0}.chip.on{background:var(--color-primary-soft);color:var(--color-primary-pressed);border-color:transparent}.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:var(--color-surface-2);border-radius:var(--radius-md);padding:2px;margin:var(--space-2) 0}.seg button{min-height:40px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;position:relative}.seg button:after{content:"";position:absolute;inset:-2px 0}.seg button[aria-pressed=true],.seg button[aria-selected=true]{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-1)}.list{list-style:none;margin:0;padding:0}.li{display:flex;align-items:center;gap:var(--space-3);min-height:60px;padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);width:100%;background:none;border-left:0;border-right:0;border-top:0;text-align:start;color:inherit;font:inherit;cursor:pointer;content-visibility:auto;contain-intrinsic-size:auto 60px}.li-emoji{width:28px;flex:none;font-size:22px;text-align:center}.li-main{flex:1;min-width:0}.li-1{font-weight:var(--weight-semibold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.li-2{font-size:var(--text-sm);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.li-trail{display:flex;align-items:center;gap:var(--space-2);color:var(--color-text-muted);flex:none}.weak-dot{width:8px;height:8px;border-radius:50%;background:var(--grade-hard)}.list-h{position:sticky;top:calc(var(--appbar-h) + var(--safe-top) + var(--sticky-extra, 0px));z-index:1;background:var(--color-bg);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;padding:var(--space-3) 0 var(--space-1);display:flex;align-items:center;justify-content:space-between;min-height:36px}mark.hit{background:none;color:inherit;font-weight:var(--weight-bold)}.gap-ans{color:var(--color-text-muted)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-tabbar);display:grid;grid-template-columns:repeat(4,1fr);padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);background:var(--color-surface);border-top:1px solid var(--color-border)}html[data-keyboard=open] .tabbar{display:none}.tab{height:var(--tabbar-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--color-text-muted);font-size:var(--text-xs);font-weight:var(--weight-semibold);position:relative;-webkit-user-select:none;user-select:none}.tab[aria-current=page]{color:var(--color-primary)}.tab[aria-current=page]:before{content:"";position:absolute;top:3px;width:32px;height:4px;border-radius:var(--radius-pill);background:var(--color-primary)}.tab-dot{position:absolute;top:8px;left:calc(50% + 10px);width:7px;height:7px;border-radius:50%;background:var(--color-text-muted)}.actionbar{position:fixed;left:0;right:0;z-index:var(--z-actionbar);bottom:calc(var(--tabbar-h) + var(--safe-bottom));padding:var(--space-2) calc(var(--gutter) + var(--safe-right)) var(--space-2) calc(var(--gutter) + var(--safe-left));background:linear-gradient(to top,var(--color-bg) 70%,transparent)}.actionbar>*{max-width:var(--content-max);margin:0 auto}html[data-keyboard=open] .actionbar{bottom:var(--kb-inset)}.page.no-tabs .actionbar,.actionbar.no-tabs{bottom:0;padding-bottom:max(var(--space-2),var(--safe-bottom))}.scrim{position:fixed;inset:0;background:var(--color-scrim);z-index:var(--z-sheet);animation:fade-in var(--dur-slow) both}.sheet{position:fixed;left:0;right:0;bottom:var(--kb-inset);z-index:var(--z-sheet);max-width:var(--content-max);margin:0 auto;max-height:calc(var(--vvh) * .9);overflow-y:auto;overscroll-behavior:contain;background:var(--color-surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;box-shadow:var(--shadow-3);padding:var(--space-2) var(--gutter) max(var(--space-4),var(--safe-bottom));animation:sheet-up var(--dur-slow) var(--ease-out) both}.sheet-handle{width:36px;height:4px;border-radius:var(--radius-pill);background:var(--color-border);margin:0 auto var(--space-3)}.sheet h2{font-size:var(--text-xl);font-weight:var(--weight-bold);margin-bottom:var(--space-3);outline:none}.sheet .opt{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:var(--tap-comfy);border:0;background:none;color:inherit;font:inherit;text-align:start;border-bottom:1px solid var(--color-border);cursor:pointer;padding:0 var(--space-1)}.sheet .opt[aria-checked=true]{font-weight:var(--weight-bold);color:var(--color-primary)}.dialog-wrap{position:fixed;inset:0;z-index:var(--z-dialog);display:grid;place-items:center;padding:var(--gutter)}.dialog{position:relative;width:100%;max-width:320px;background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-6) var(--space-4) var(--space-4);box-shadow:var(--shadow-2);animation:fade-in var(--dur-base) both}.dialog h2{font-size:var(--text-lg);font-weight:var(--weight-bold);margin-bottom:var(--space-2);outline:none}.dialog .actions{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-5)}.toast{position:fixed;left:var(--gutter);right:var(--gutter);z-index:var(--z-toast);bottom:calc(var(--tabbar-h) + var(--safe-bottom) + var(--space-2));max-width:calc(var(--content-max) - 2 * var(--gutter));margin:0 auto;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);min-height:48px;background:var(--color-text);color:var(--color-bg);border-radius:var(--radius-md);box-shadow:var(--shadow-2);animation:fade-up var(--dur-base) var(--ease-out) both}.toast.high{bottom:calc(var(--tabbar-h) + var(--safe-bottom) + var(--btn-primary-h) + var(--space-5))}html[data-keyboard=open] .toast{bottom:calc(var(--kb-inset) + var(--space-2))}.toast button{color:var(--color-primary-soft);background:none;border:0;min-height:var(--tap-min);padding:0 var(--space-3);font-weight:var(--weight-bold);cursor:pointer}.banner{position:fixed;top:0;left:0;right:0;z-index:var(--z-banner);padding:calc(var(--safe-top) + var(--space-2)) var(--gutter) var(--space-2);background:var(--grade-again-soft);color:var(--grade-again);font-size:var(--text-sm);display:flex;align-items:center;gap:var(--space-2)}.banner button{color:var(--grade-again);text-decoration:underline;background:none;border:0;font-weight:var(--weight-bold);min-height:var(--tap-min);cursor:pointer}.today-head{padding:calc(var(--safe-top) + var(--space-3)) 0 var(--space-4);display:flex;align-items:flex-start}.today-head h1{font-size:var(--text-xl);font-weight:var(--weight-bold)}.week-card{cursor:pointer;text-align:start;width:100%;color:inherit;font:inherit}.week-top{display:flex;justify-content:space-between;align-items:baseline;font-weight:var(--weight-semibold)}.week-top .goal{color:var(--grade-good)}.week{list-style:none;margin:var(--space-3) 0;padding:0;display:grid;grid-template-columns:repeat(7,1fr);text-align:center}.week li{display:flex;flex-direction:column;align-items:center;gap:var(--space-1)}.wd-l{font-size:var(--text-xs);color:var(--color-text-muted)}.wd-l.today{color:var(--color-text);font-weight:var(--weight-bold)}.wd{width:32px;height:32px;border-radius:50%;display:grid;place-items:center}.wd.practised{background:var(--color-primary);color:var(--color-on-primary)}.wd.practised.pop{animation:pop var(--dur-celebrate) var(--ease-spring) .3s both}.wd.frozen{border:2px solid var(--color-freeze);background:var(--color-freeze-soft);color:var(--color-freeze)}.wd.today{border:2px solid var(--color-primary)}.wd.past{border:1.5px dashed var(--color-border-strong)}.wd.future:after{content:"";width:6px;height:6px;border-radius:50%;background:var(--color-border)}.streak-row{display:flex;justify-content:space-between;align-items:center;font-size:var(--text-sm);gap:var(--space-2)}.streak-row .flame{color:var(--color-brand)}.freezes{display:inline-flex;align-items:center;gap:2px;color:var(--color-freeze)}.tip{margin-top:var(--space-3)}.tip p{margin-bottom:var(--space-2)}.tip .actions{display:flex;justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap}.session-card{margin-top:auto}.session-card h2{font-size:var(--text-lg);font-weight:var(--weight-bold)}.session-card p{color:var(--color-text-muted);margin:var(--space-1) 0 var(--space-4)}.spacer{flex:1;min-height:var(--space-6)}.pbar{height:4px;background:var(--color-surface-2);border-radius:var(--radius-pill);overflow:hidden;margin:var(--space-2) 0 var(--space-4)}.pbar>div{height:100%;background:var(--color-primary);transition:width var(--dur-base) var(--ease-standard)}.sess{position:fixed;inset:0 0 auto;height:var(--vvh);display:flex;flex-direction:column;background:var(--color-bg);padding-left:var(--safe-left);padding-right:var(--safe-right);animation:rise var(--dur-base) var(--ease-out) both}.sess-bar{flex:none;display:flex;align-items:center;gap:var(--space-3);padding:var(--safe-top) var(--space-2) 0;min-height:calc(var(--appbar-h) + var(--safe-top))}.sess-bar .track{flex:1;height:6px;background:var(--color-surface-2);border-radius:var(--radius-pill);overflow:hidden}.sess-bar .fill{height:100%;background:var(--color-primary);border-radius:var(--radius-pill);transition:width var(--dur-base) var(--ease-standard)}.sess-bar .left{font-size:var(--text-sm);color:var(--color-text-muted);min-width:56px;text-align:right;padding-right:var(--space-2)}.sess-area{flex:1;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;padding:var(--space-6)}.sess-inner{margin:auto 0;width:100%;max-width:var(--content-max);align-self:center;display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.sess-inner.enter{animation:card-in var(--dur-base) var(--ease-out) both}.kind-row{display:flex;align-items:center;justify-content:center;gap:var(--space-2);flex-wrap:wrap}.kind{font-size:var(--text-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.prompt{font-family:var(--font-card);line-height:var(--leading-card);text-align:center;text-wrap:balance;max-width:28ch;-webkit-user-select:text;user-select:text;outline:none;overflow-wrap:anywhere}.prompt.xl{font-size:var(--text-card-xl)}.prompt.lg{font-size:var(--text-card-lg)}.prompt.md{font-size:var(--text-xl)}.prompt.shrunk{font-size:var(--text-card-lg);transition:font-size var(--dur-base) var(--ease-out)}.prompt.shrunk.md{font-size:var(--text-xl)}.prompt-wrap{display:flex;align-items:center;gap:var(--space-1);justify-content:center}.sub{color:var(--color-text-muted);text-align:center}.rule{width:100%;height:1px;background:var(--color-border);border:0;margin:0}.answer{font-size:1.625rem;text-align:center;animation:fade-up var(--dur-base) var(--ease-out) both;-webkit-user-select:text;user-select:text;text-wrap:balance}.gap-slot{display:inline-block;width:5ch;border-bottom:2px solid var(--color-text);margin:0 .15em;vertical-align:baseline;height:.9em}.hook{width:100%;background:var(--color-surface-2);border-radius:var(--radius-md);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2);animation:fade-up var(--dur-base) var(--ease-out) 60ms both}.hook-1{display:flex;gap:var(--space-3);align-items:center}.hook-emoji{font-size:32px;line-height:1}.hook-emoji.solo{font-size:48px;margin:0 auto}.hook-place{display:flex;gap:var(--space-1);align-items:center;font-size:var(--text-sm);color:var(--color-text-muted)}.notes{font-size:var(--text-sm);color:var(--color-text-muted);text-align:center}.result{width:100%;border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);text-align:center;animation:fade-up var(--dur-base) var(--ease-out) both}.result-t{display:flex;align-items:center;justify-content:center;gap:var(--space-2);font-weight:var(--weight-semibold)}.result.good{background:var(--grade-good-soft);color:var(--grade-good)}.result.hard{background:var(--grade-hard-soft);color:var(--grade-hard)}.result.again{background:var(--grade-again-soft);color:var(--grade-again)}.result.plain{background:var(--color-surface-2);color:var(--color-text)}.result .form{font-family:var(--font-card);font-size:var(--text-card-lg);color:var(--color-text);margin:var(--space-2) 0 var(--space-1);line-height:var(--leading-card);-webkit-user-select:text;user-select:text}.result .wrote{font-size:var(--text-sm);color:var(--color-text-muted)}mark.diff{background:var(--color-diff-mark);color:var(--color-text);font-weight:var(--weight-bold);border-radius:3px;text-decoration:underline 2px var(--grade-hard);text-underline-offset:3px;animation:pulse var(--dur-base) both}.sess-actions{flex:none;padding:var(--space-2) var(--space-4) max(var(--space-2),var(--safe-bottom));position:relative;max-width:var(--content-max);width:100%;align-self:center}html[data-keyboard=open] .sess-actions{padding-bottom:var(--space-2)}.answer-row{display:flex;gap:var(--space-2)}.answer-row .input{height:var(--answer-row-h);font-size:var(--text-lg)}.answer-row .btn{min-width:88px;height:var(--answer-row-h)}.answer-row.hidden{position:absolute;left:0;top:0;width:1px;height:1px;opacity:0;overflow:hidden;pointer-events:none}.answer-row.gone{display:none}.grades{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2);animation:guard .3s linear both}.grade{min-height:var(--grade-h);border:0;border-radius:var(--radius-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:var(--weight-semibold);font-size:var(--text-md);cursor:pointer;padding:var(--space-1);transition:transform var(--dur-instant)}.grade:active{transform:scale(.97)}.grade .iv{font-size:var(--text-sm);font-weight:var(--weight-regular);font-variant-numeric:tabular-nums}.grade.g1{background:var(--grade-again-soft);color:var(--grade-again)}.grade.g2{background:var(--grade-hard-soft);color:var(--grade-hard)}.grade.g3{background:var(--grade-good-soft);color:var(--grade-good)}.grade.g4{background:var(--grade-easy-soft);color:var(--grade-easy)}.grade.g1.em{background:var(--grade-again)}.grade.g2.em{background:var(--grade-hard)}.grade.g3.em{background:var(--grade-good)}.grade.g4.em{background:var(--grade-easy)}.grade.em{color:var(--color-on-grade);box-shadow:var(--shadow-1)}.grade .iv.practice{opacity:.8}.guarded{pointer-events:none}.hint-btn[disabled]{opacity:.7}.done{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--space-3);padding:var(--space-6) 0}.done-check{width:72px;height:72px;border-radius:50%;background:var(--grade-good);color:var(--color-on-grade);display:grid;place-items:center;animation:scale-in var(--dur-celebrate) var(--ease-spring) both}.done h1{font-size:var(--text-2xl);font-weight:var(--weight-bold);line-height:var(--leading-tight)}.done .week{width:100%;max-width:360px}.done-actions{display:flex;flex-direction:column;gap:var(--space-2);width:100%;padding-bottom:max(var(--space-2),var(--safe-bottom))}.paste{min-height:calc(6 * 1.5em + 2 * var(--space-3));max-height:calc(12 * 1.5em + 2 * var(--space-3));overflow-y:auto}.preview-h{position:sticky;top:calc(var(--appbar-h) + var(--safe-top));background:var(--color-bg);z-index:1;padding:var(--space-3) 0 var(--space-1);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.pv{display:grid;grid-template-columns:20px minmax(0,1fr) minmax(0,1fr);gap:var(--space-2);align-items:center;min-height:44px;padding:var(--space-1) 0;border-bottom:1px solid var(--color-border);font-size:var(--text-sm);width:100%;background:none;border-left:0;border-right:0;border-top:0;color:inherit;text-align:start;font-family:inherit}.pv .es{font-weight:var(--weight-semibold);font-size:var(--text-md)}.pv.fix{cursor:pointer}.pv .ok{color:var(--grade-good)}.pv .warn{color:var(--grade-hard)}.pv .dup,.pv .msg{color:var(--color-text-muted)}.pv .msg.fixmsg{color:var(--grade-hard)}.pill{display:inline-block;font-size:var(--text-xs);font-weight:var(--weight-semibold);padding:1px 8px;border-radius:var(--radius-pill);background:var(--color-freeze-soft);color:var(--color-freeze);margin-left:var(--space-1);vertical-align:middle}.coach{background:var(--color-surface-2);border-radius:var(--radius-md);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-3);display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);margin-top:var(--space-2)}.disclosure{display:flex;align-items:center;gap:var(--space-2);background:none;border:0;color:var(--color-text);font-weight:var(--weight-semibold);min-height:var(--tap-comfy);padding:0;margin-top:var(--space-4);cursor:pointer}.disclosure svg{transition:transform var(--dur-base)}.disclosure[aria-expanded=true] svg{transform:rotate(90deg)}.note{background:var(--color-surface-2);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);margin-top:var(--space-2)}.note.slippery{background:var(--grade-hard-soft);color:var(--grade-hard)}.hook-ed{display:grid;grid-template-columns:56px 1fr;gap:var(--space-3);align-items:start}.emoji-field{position:relative;width:56px;height:56px}.emoji-field input{width:56px;height:56px;border-radius:var(--radius-md);border:1.5px solid var(--color-border-strong);background:var(--color-surface);text-align:center;font-size:32px!important;padding:0;color:var(--color-text);caret-color:transparent}.emoji-field .ph{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;color:var(--color-text-placeholder)}.emoji-field .clear{position:absolute;top:-12px;right:-12px;width:32px;height:32px;border-radius:50%;border:0;background:var(--color-surface-2);color:var(--color-text);display:grid;place-items:center;cursor:pointer}.emoji-field .clear:after{content:"";position:absolute;inset:-6px}.recent-emoji{display:flex;flex-wrap:wrap;gap:4px;margin-top:var(--space-2)}.recent-emoji button{width:44px;height:44px;border:0;background:var(--color-surface-2);border-radius:var(--radius-sm);font-size:22px;cursor:pointer}.set-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:56px;border-bottom:1px solid var(--color-border)}.set-row .seg{margin:0;min-width:168px}.stepper{display:inline-flex;align-items:center;gap:var(--space-1)}.stepper .val{min-width:64px;text-align:center;font-variant-numeric:tabular-nums;font-weight:var(--weight-semibold)}.stepper .icon-btn{border:1.5px solid var(--color-border-strong)}.switch{position:relative;width:52px;height:32px;border-radius:var(--radius-pill);border:1.5px solid var(--color-border-strong);background:var(--color-surface-2);cursor:pointer;flex:none;padding:0}.switch:before{content:"";position:absolute;top:3px;left:3px;width:23px;height:23px;border-radius:50%;background:var(--color-border-strong);transition:transform var(--dur-fast),background-color var(--dur-fast)}.switch[aria-checked=true]{background:var(--color-primary);border-color:var(--color-primary)}.switch[aria-checked=true]:before{transform:translate(20px);background:var(--color-on-primary)}.switch:after{content:"";position:absolute;inset:-6px}.tiles{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-top:var(--space-4)}.tile .big{font-size:var(--text-2xl);font-weight:var(--weight-bold);line-height:1.1;font-variant-numeric:tabular-nums}.chart{width:100%;height:auto;display:block;margin-top:var(--space-2)}.chart .bar{fill:var(--color-primary)}.chart .bar.cur{fill:var(--color-primary-soft);stroke:var(--color-primary);stroke-width:1.5}.chart .target{stroke:var(--color-text-muted);stroke-dasharray:4 4}.chart text{fill:var(--color-text-muted);font-size:11px;font-family:var(--font-ui)}.chart .axis{stroke:var(--color-border-strong)}.welcome{min-height:100dvh;display:flex;flex-direction:column;padding:calc(var(--safe-top) + var(--space-10)) var(--gutter) max(var(--space-4),var(--safe-bottom));max-width:var(--content-max);margin:0 auto}.welcome-icon{width:96px;height:96px;border-radius:22px;background:var(--color-brand);color:#fff;display:grid;place-items:center;font:700 56px/1 var(--font-card);margin:var(--space-10) auto var(--space-6)}.welcome h1{font-family:var(--font-card);font-size:var(--text-2xl);text-align:center;margin-bottom:var(--space-3)}.welcome .body{text-align:center;color:var(--color-text-muted)}.welcome .acts{margin-top:auto;display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-8)}.fatal{padding:calc(var(--safe-top) + var(--space-10)) var(--gutter);max-width:var(--content-max);margin:0 auto}@keyframes fade-in{0%{opacity:0}}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}}@keyframes sheet-up{0%{transform:translateY(100%)}}@keyframes rise{0%{opacity:0;transform:translateY(16px)}}@keyframes card-in{0%{opacity:0;transform:translate(12px)}}@keyframes scale-in{0%{transform:scale(.6);opacity:0}}@keyframes pop{0%{transform:scale(.4);opacity:.3}}@keyframes pulse{0%{opacity:.4}}@keyframes guard{0%{opacity:.35}}
