@font-face{font-family:Geist;src:url(/fonts/geist.woff2) format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:Bricolage;src:url(/fonts/bricolage.woff2) format("woff2");font-weight:200 800;font-display:swap}:root{--bg: #f2f4f3;--surface: #ffffff;--surface-2: #eaeeed;--thumb: #ffffff;--text: #0f1618;--muted: #5d6b6f;--border: #dfe5e4;--accent: #2b3dae;--accent-soft: #e4e8fb;--accent-contrast: #ffffff;--ink: #0f1618;--ink-contrast: #f6f8f7;--good: #167a46;--warn: #9a5b06;--bad: #c42b2b;--radius: 18px;--radius-sm: 12px;--shadow: 0 1px 2px rgb(15 22 24 / .05), 0 8px 24px -8px rgb(15 22 24 / .1);--shadow-lift: 0 2px 4px rgb(15 22 24 / .06), 0 16px 32px -12px rgb(15 22 24 / .2);--ease: cubic-bezier(.2, .8, .2, 1);--spring: cubic-bezier(.34, 1.4, .64, 1);--font-display: "Bricolage", "Geist", system-ui, sans-serif;--font-body: "Geist", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--tile-l: .94;--tile-c: .035;--glyph-l: .4;--glyph-c: .15;--cell-l: .9;--cell-c: .08;--sun: #f0a21a;--moon: #4f63e6;--mark-correct: #2f9e5f;--mark-present: #c9a227;--mark-absent: #7a828a;--key-bg: #e4e9e8;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0b1012;--surface: #141b1e;--surface-2: #1c2528;--thumb: #2f3c41;--text: #eef2f1;--muted: #8fa0a4;--border: #243034;--accent: #93a2ff;--accent-soft: #1c2250;--accent-contrast: #0b1012;--ink: #eef2f1;--ink-contrast: #0b1012;--good: #4ade80;--warn: #fbbf24;--bad: #f87171;--shadow: 0 1px 2px rgb(0 0 0 / .4), 0 8px 24px -8px rgb(0 0 0 / .5);--shadow-lift: 0 2px 4px rgb(0 0 0 / .4), 0 16px 32px -12px rgb(0 0 0 / .7);--tile-l: .27;--tile-c: .045;--glyph-l: .82;--glyph-c: .11;--cell-l: .42;--cell-c: .085;--sun: #f5b43a;--moon: #8c9bff;--mark-correct: #2f8a57;--mark-present: #a8851c;--mark-absent: #39434a;--key-bg: #26313a;color-scheme:dark}}:root[data-theme=dark]{--bg: #0b1012;--surface: #141b1e;--surface-2: #1c2528;--thumb: #2f3c41;--text: #eef2f1;--muted: #8fa0a4;--border: #243034;--accent: #93a2ff;--accent-soft: #1c2250;--accent-contrast: #0b1012;--ink: #eef2f1;--ink-contrast: #0b1012;--good: #4ade80;--warn: #fbbf24;--bad: #f87171;--shadow: 0 1px 2px rgb(0 0 0 / .4), 0 8px 24px -8px rgb(0 0 0 / .5);--shadow-lift: 0 2px 4px rgb(0 0 0 / .4), 0 16px 32px -12px rgb(0 0 0 / .7);--tile-l: .27;--tile-c: .045;--glyph-l: .82;--glyph-c: .11;--cell-l: .42;--cell-c: .085;--sun: #f5b43a;--moon: #8c9bff;--mark-correct: #2f8a57;--mark-present: #a8851c;--mark-absent: #39434a;--key-bg: #26313a;color-scheme:dark}:root[data-contrast=high]{--mark-correct: #e8710a;--mark-present: #2b7de9}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-wrap:anywhere}h1,h2,h3{font-family:var(--font-display);font-weight:650;line-height:1.15;margin:0 0 .5rem;text-wrap:balance}h1{font-size:clamp(1.75rem,1.2rem + 2.4vw,2.6rem);letter-spacing:-.03em}h2{font-size:1.15rem;letter-spacing:-.015em}h3{font-size:1.05rem;letter-spacing:-.01em}p{margin:0 0 .75rem;text-wrap:pretty}a{color:var(--accent)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow)}.muted{color:var(--muted)}.row{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}button,.button{font:inherit;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.55rem;border:1px solid var(--ink);background:var(--ink);color:var(--ink-contrast);border-radius:999px;padding:.65rem 1.35rem;min-height:46px;text-decoration:none;transition:transform .18s var(--ease),background-color .2s var(--ease),border-color .2s var(--ease),box-shadow .2s var(--ease),opacity .2s var(--ease)}button:hover:not(:disabled),.button:hover{box-shadow:var(--shadow-lift)}button:active:not(:disabled),.button:active{transform:scale(.97)}button.secondary,.button.secondary{background:transparent;color:var(--text);border-color:var(--border)}button.secondary:hover:not(:disabled){border-color:var(--muted);box-shadow:none}button:disabled{opacity:.55;cursor:not-allowed}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}input,select{font:inherit;font-size:1rem;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.7rem .9rem;min-height:50px;min-width:0;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}input:hover{border-color:var(--muted)}input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 18%,transparent)}label{display:grid;gap:.35rem;font-size:.875rem;font-weight:500;color:var(--muted)}.error{color:var(--bad)}::view-transition-old(root),::view-transition-new(root){animation-duration:.24s;animation-timing-function:var(--ease)}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}@keyframes shimmer{to{background-position:-200% 0}}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(100deg,var(--surface-2) 30%,color-mix(in srgb,var(--surface-2) 55%,var(--surface)) 50%,var(--surface-2) 70%);background-size:200% 100%;animation:shimmer 1.4s linear infinite}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important;transition-duration:.01ms!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}:root[data-motion=reduced] *,:root[data-motion=reduced] *:before,:root[data-motion=reduced] *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important;transition-duration:.01ms!important}:root[data-motion=reduced] app-confetti{display:none}:root[data-platform=android]{--font-display: system-ui, "Roboto", sans-serif;--font-body: system-ui, "Roboto", sans-serif;--radius: 24px;--shadow: none;--shadow-lift: 0 1px 3px rgb(0 0 0 / .2), 0 4px 12px rgb(0 0 0 / .12);--ink: var(--accent);--ink-contrast: var(--accent-contrast);--surface: #f9fbfa;--surface-2: #e9eeed;--thumb: #ffffff}@media(prefers-color-scheme:dark){:root[data-platform=android]:not([data-theme=light]){--surface: #141b1e;--surface-2: #232d31;--thumb: #3a474c}}:root[data-platform=android][data-theme=dark]{--surface: #141b1e;--surface-2: #232d31;--thumb: #3a474c}:root[data-platform=android] h1,:root[data-platform=android] h2,:root[data-platform=android] h3{font-weight:500;letter-spacing:0}:root[data-platform=android] h1{font-size:clamp(1.75rem,1.4rem + 1.4vw,2.25rem)}:root[data-platform=android] .card{background:var(--surface-2);border-color:transparent;box-shadow:none}:root[data-platform=android] button,:root[data-platform=android] .button{position:relative;overflow:hidden;min-height:40px;padding:.5rem 1.5rem;font-size:.875rem;font-weight:500;letter-spacing:.01em;border-color:var(--accent)}:root[data-platform=android] button:after,:root[data-platform=android] .button:after{content:"";position:absolute;inset:0;background:currentColor;opacity:0;pointer-events:none;transition:opacity .35s var(--ease)}:root[data-platform=android] button:active:not(:disabled):after,:root[data-platform=android] .button:active:after{opacity:.14;transition:none}:root[data-platform=android] button:active:not(:disabled),:root[data-platform=android] .button:active{transform:none}:root[data-platform=android] button:hover:not(:disabled),:root[data-platform=android] .button:hover{box-shadow:none}:root[data-platform=android] button.secondary,:root[data-platform=android] .button.secondary{background:transparent;color:var(--accent);border-color:var(--border)}:root[data-platform=android] input,:root[data-platform=android] select{min-height:56px;border-radius:14px;border-color:var(--muted);background:transparent}:root[data-platform=android] input:focus{border-width:1px;box-shadow:0 0 0 1px var(--accent)}:root[data-platform=android] label{font-weight:400}
