:root{--bg: #ffffff;--fg: #1a1a1f;--muted: #5b5b66;--accent: #2457d6;--border: #d5d5dd;--surface: #f4f4f8;--err: #b00020;--ok: #1b6e2e;--font-size: 16px}@media (prefers-color-scheme: dark){:root:not(.light){--bg: #121216;--fg: #ececf1;--muted: #a0a0ac;--accent: #8aa8ff;--border: #34343e;--surface: #1c1c23;--err: #ff8a9b;--ok: #7fd993}}html.dark{--bg: #121216;--fg: #ececf1;--muted: #a0a0ac;--accent: #8aa8ff;--border: #34343e;--surface: #1c1c23;--err: #ff8a9b;--ok: #7fd993}html.light{--bg: #ffffff;--fg: #1a1a1f;--muted: #5b5b66;--accent: #2457d6;--border: #d5d5dd;--surface: #f4f4f8;--err: #b00020;--ok: #1b6e2e}:root.high-contrast:not(.dark){--bg: #fff;--fg: #000;--muted: #000;--accent: #0000cc;--border: #000;--surface: #fff;--err: #8a0000;--ok: #004d00}:root.high-contrast.dark{--bg: #000;--fg: #fff;--muted: #fff;--accent: #ffff00;--border: #fff;--surface: #000;--err: #ff9a9a;--ok: #8dff9a}@media (prefers-color-scheme: dark){:root.high-contrast:not(.light){--bg: #000;--fg: #fff;--muted: #fff;--accent: #ffff00;--border: #fff;--surface: #000;--err: #ff9a9a;--ok: #8dff9a}}html.text-small{--font-size: 14px}html.text-medium{--font-size: 16px}html.text-large{--font-size: 19px}html.text-extra-large{--font-size: 23px}html{font-size:var(--font-size)}html.reduce-motion *,html.reduce-motion *:before,html.reduce-motion *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}body{margin:0;font-family:system-ui,sans-serif;background:var(--bg);color:var(--fg);padding-bottom:4.5rem}main{padding:1rem;max-width:40rem;margin:0 auto}a{color:var(--accent)}.page-header h1{margin:0 0 1rem;font-size:1.5rem}section{margin-bottom:1.5rem}label{display:block;margin:.75rem 0}label.check{display:flex;gap:.5rem;align-items:center}input[type=text],input[type=url],input[type=password],select{display:block;width:100%;box-sizing:border-box;margin-top:.25rem;padding:.5rem;font:inherit;color:var(--fg);background:var(--surface);border:1px solid var(--border);border-radius:6px}button{font:inherit;padding:.5rem .9rem;margin:.25rem .5rem .25rem 0;color:var(--fg);background:var(--surface);border:1px solid var(--border);border-radius:6px;cursor:pointer}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}[role=status].ok{color:var(--ok)}[role=status].err{color:var(--err)}.context-bar{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr))}.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:flex;background:var(--surface);border-top:1px solid var(--border)}.bottom-nav a{flex:1;text-align:center;padding:.8rem .25rem;color:var(--muted);text-decoration:none;font-size:.85rem}.bottom-nav a.active{color:var(--accent);font-weight:600}.bottom-nav a+a{border-left:1px solid var(--border)}:root{--chip: color-mix(in srgb, var(--accent) 12%, var(--surface));--fs: color-mix(in srgb, #f0a020 22%, var(--surface));--fs-line: #d99a2b;--stage: linear-gradient(color-mix(in srgb, var(--accent) 28%, var(--surface)), color-mix(in srgb, var(--accent) 6%, var(--surface)))}body{padding-bottom:5rem}main.translate-page{max-width:720px;padding:16px 16px 5rem;display:grid;gap:16px}.card{background:var(--bg);border:1px solid var(--border);border-radius:14px;padding:16px}label.field{font-size:.75rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}textarea{display:block;width:100%;box-sizing:border-box;min-height:96px;resize:vertical;font:inherit;padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:inherit}.btn-primary{background:var(--accent);color:var(--bg);border-color:var(--accent);font-weight:600;margin:10px 0 0;padding:9px 16px;border-radius:10px}button:disabled{opacity:.5;cursor:default}.err{color:var(--err);font-size:.85rem;margin-top:8px}.asl-line{margin:10px 0 0;font-size:.85rem;color:var(--muted)}.asl-line b{color:var(--fg);font-weight:600}.coverage-counter{margin:10px 0 0;font-size:.85rem;color:var(--muted)}details.notes{margin-top:12px;font-size:.85rem;color:var(--muted)}details.notes li{margin:2px 0}.avatar-wrapper{position:relative}.avatar-stage{position:relative;width:100%;max-width:300px;aspect-ratio:3 / 4;margin:0 auto;border-radius:12px;overflow:hidden;background:var(--stage)}.avatar-stage>div{position:absolute;top:0;right:0;bottom:0;left:0}.avatar-stage canvas,.avatar-host canvas{width:100%!important;height:100%!important;display:block}.status-badge{width:fit-content;margin:8px auto 0;font-size:.75rem;padding:2px 10px;border-radius:999px;background:var(--chip)}.avatar-wrapper .err{text-align:center}.caption-strip{text-align:center;margin-top:12px;min-height:56px}.caption-gloss{font-size:1.5rem;font-weight:700;letter-spacing:.02em;min-height:2rem}.caption-source{font-size:.78rem;color:var(--muted)}.playback-controls{margin-top:10px;display:flex;flex-direction:column;gap:8px}.playback-buttons{display:flex;gap:6px;justify-content:center}.playback-btn{width:42px;height:42px;padding:0;margin:0;border-radius:50%;border:1px solid var(--border);background:transparent;font-size:1.05rem}.playback-btn.primary{background:var(--accent);color:var(--bg);border-color:var(--accent)}.playback-btn[aria-pressed=true]:not(.primary){background:var(--chip);border-color:var(--accent)}.progress{height:6px;border-radius:3px;background:var(--border);overflow:hidden}.progress>div{height:100%;width:0;background:var(--accent)}.playback-right{display:flex;justify-content:space-between;align-items:center;font-variant-numeric:tabular-nums;font-size:.8rem;color:var(--muted)}.speed{display:flex;gap:4px}.speed button{padding:2px 8px;margin:0;border-radius:6px;border:1px solid var(--border);background:transparent;font-size:.78rem}.speed button.is-active{background:var(--chip);border-color:var(--accent);color:var(--fg)}.token-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.token-chip{display:inline-flex;flex-direction:column;align-items:center;padding:6px 12px;border-radius:999px;background:var(--chip);border:1px solid transparent;cursor:pointer;line-height:1.2;transition:background .15s,color .15s}.token-chip[data-kind=fingerspell]{background:var(--fs);border-color:var(--fs-line)}.token-chip.selected{outline:2px solid var(--accent);outline-offset:2px}.token-chip.done{opacity:.55}.token-chip.active{background:var(--accent);color:var(--bg);border-color:var(--accent);opacity:1}.token-chip-gloss{font-weight:600;font-size:.9rem}.token-chip-origin{font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;opacity:.75}.practice-page,.home-page{max-width:640px;margin:0 auto;padding:0 16px}.practice-page .context-bar{margin-bottom:12px}.practice-page .card,.home-page .card{margin-top:12px}.notice{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-top:10px;padding:8px 12px;border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:8px;background:var(--surface);font-size:.9rem;overflow-wrap:anywhere}.notice button{margin:0;padding:0 8px;border:0;background:transparent;font-size:1.2rem;line-height:1.4}.practice-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.practice-actions .btn{margin:0;padding:9px 16px;border-radius:10px}.btn:disabled{opacity:.6;cursor:default}.answer{margin-top:14px;padding-top:10px;border-top:1px solid var(--border)}.answer-text{font-size:1.15rem;font-weight:600;margin:0;overflow-wrap:anywhere}.answer-words{display:flex;flex-wrap:wrap;gap:6px 12px;margin:10px 0 0}.word-link{font-size:.95rem}.sentence-large{font-size:1.6rem;line-height:1.3}.text-result{margin-top:12px}.empty-state .muted,.muted{color:var(--muted)}.history summary{cursor:pointer;font-weight:600}.history ol{margin:8px 0 0;padding-left:1.4rem;font-size:.9rem;color:var(--muted);overflow-wrap:anywhere}.continue-card h2{margin:0 0 8px;font-size:1.15rem}.context-summary{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0}.context-summary dt{color:var(--muted);font-size:.85rem}.context-summary dd{margin:0;overflow-wrap:anywhere}.btn-link{display:inline-block;text-decoration:none}.shortcuts{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:12px;margin-top:12px}.shortcuts .shortcut{display:flex;flex-direction:column;gap:2px;text-decoration:none;color:var(--fg);margin-top:0}.shortcuts .shortcut span{font-size:.8rem;color:var(--muted)}.teacher{display:grid;gap:.75rem}.teacher-chips{display:flex;flex-wrap:wrap;gap:4px}.teacher-chip{margin:0;padding:3px 10px;border-radius:999px;font-size:.85rem}.teacher-chip[aria-pressed=true]{background:var(--chip);border-color:var(--accent);font-weight:600}.teacher-summary{margin:0;font-size:.9rem;overflow-wrap:anywhere}.teacher-status{margin:0;min-height:1.25rem;font-size:.9rem}.teacher a.btn-link{margin-left:.5rem;padding:9px 16px;border:1px solid var(--border);border-radius:10px;color:var(--fg)}.history-actions{display:flex;gap:8px;margin:8px 0}.history li{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.history .btn-small{padding:2px 10px;font-size:.8rem;flex:none}.history-text.blurred{filter:blur(6px);-webkit-user-select:none;user-select:none}.passcode-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.passcode-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:12px;text-align:center}.passcode-card h1{margin:0;font-size:1.4rem}.passcode-card input{padding:10px;font-size:1rem}
