:root{--bg:#0f1720;--surface:#1b2733;--surface-2:#24333f;--text:#f2f5f8;--muted:#b8c4d0;--accent:#4fb0ff;--accent-text:#06202f;--border:#38495a}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5}.page{max-width:760px;margin:0 auto;padding:24px 16px 48px}.hero{text-align:center;margin-bottom:32px}.hero-slim{margin-bottom:24px}.hero h1{font-size:2rem;line-height:1.2;margin:0 0 8px;letter-spacing:-.01em}.tagline{color:var(--muted);max-width:55ch;margin:0 auto}h2{font-size:1.35rem;line-height:1.2;margin:0 0 16px}.chat-shell,.intro,.notice,.start{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;margin-bottom:24px}.how,.wizard-steps{padding-left:1.25rem;margin:0}.how li{margin-bottom:8px}.wizard-steps{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.wizard-steps li{font-size:.85rem;color:var(--muted);padding:4px 8px;border-radius:6px;border:1px solid var(--border)}.wizard-steps li.active{color:var(--accent-text);background:var(--accent);border-color:var(--accent)}.wizard-steps li.done{color:var(--text);border-color:var(--accent)}.wizard-heading{margin-top:0}.options{gap:8px;margin-bottom:16px}.opt,.options{display:flex;flex-direction:column}.opt{gap:4px;min-height:44px;text-align:left;padding:12px 16px;font-size:1rem;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:8px;cursor:pointer}.opt:focus-visible,.opt:hover{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:1px}.opt .hint,.opt .native{color:var(--muted);font-size:.9rem}.badge{align-self:flex-start;font-size:.75rem;color:var(--accent-text);background:var(--accent);border-radius:4px;padding:1px 6px;margin-top:4px}.lang-history{background:var(--surface-2);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;padding:16px;margin-bottom:16px}.lang-history-heading{margin:0 0 8px;font-size:1rem;color:var(--text)}.lang-history-text{margin:0;color:var(--muted);font-size:.95rem;line-height:1.55}.back,.cta{min-height:44px;display:inline-flex;align-items:center;gap:8px;padding:10px 16px;font-size:1rem;border-radius:8px;cursor:pointer;text-decoration:none}.back{color:var(--text);background:transparent;border:1px solid var(--border)}.cta{color:var(--accent-text);background:var(--accent);border:1px solid var(--accent);font-weight:600}.summary{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;margin:0 0 16px}.summary dt{font-size:.85rem;color:var(--muted)}.summary dd{margin:4px 0 0;font-size:1rem}.foot,.muted{color:var(--muted)}.foot{text-align:center;font-size:.9rem}.chat{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:16px}.chat-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:var(--muted);font-size:.9rem;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--border)}.chat-meta-sep{color:var(--border)}.chat-log{min-height:200px;max-height:55vh;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:4px}.chat-intro{margin:16px 8px}.chat-turn{flex-direction:column;gap:8px}.bubble-row,.chat-turn{display:flex}.bubble-row-user{justify-content:flex-end}.bubble-row-ai{justify-content:flex-start}.bubble{display:flex;flex-direction:column;gap:4px;max-width:85%;padding:10px 14px;border-radius:12px;border:1px solid var(--border)}.bubble-user{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.bubble-ai{background:var(--surface-2);color:var(--text)}.bubble-label{font-size:.75rem;opacity:.85}.bubble-text{white-space:pre-wrap;word-break:break-word;font-size:1rem;line-height:1.5}.correction-card{align-self:flex-start;max-width:85%;background:#142230;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;padding:10px 14px}.correction-heading{display:block;font-size:.75rem;font-weight:600;color:var(--accent);margin-bottom:4px}.correction-text{margin:0;white-space:pre-wrap;word-break:break-word;color:var(--muted);font-size:.95rem;line-height:1.5}.chat-thinking{margin:8px;font-style:italic}.chat-error{background:#3a1f1f;border:1px solid #7a3b3b;color:#ffd9d9;border-radius:8px}.chat-error,.chat-maintenance{padding:12px 14px;margin:0 0 12px;font-size:.95rem}.chat-maintenance{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:8px;line-height:1.5}.chat-input{display:flex;gap:8px;align-items:flex-end}.chat-textarea{flex:1 1;min-height:44px;padding:10px 12px;font:inherit;font-size:1rem;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:8px;resize:vertical}.chat-textarea:focus-visible{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:1px}.chat-textarea:disabled{opacity:.7;cursor:not-allowed}.chat-send{flex:0 0 auto;border:1px solid var(--accent)}.chat-send:disabled{opacity:.7;cursor:not-allowed}.chat-foot{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.chat-foot-note{font-size:.85rem}.account{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:24px}.account-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px;justify-content:space-between}.account-status{color:var(--muted);font-size:.95rem}.account-email{color:var(--text);word-break:break-all}.account-form{display:flex;flex-direction:column;gap:8px}.account-label{color:var(--muted);font-size:.9rem}.account-inline{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch}.account-input{flex:1 1 220px;min-height:44px;padding:10px 12px;font:inherit;font-size:1rem;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:8px}.account-input:focus-visible{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:1px}.account-btn{min-height:44px;padding:10px 16px;font-size:1rem;font-weight:600;color:var(--accent-text);background:var(--accent);border:1px solid var(--accent);border-radius:8px;cursor:pointer}.account-btn:disabled{opacity:.7;cursor:not-allowed}.account-btn-ghost{color:var(--text);background:transparent;border:1px solid var(--border);font-weight:500}.account-sent{color:var(--text);margin:0}.account-error{color:#ffd9d9;background:#3a1f1f;border:1px solid #7a3b3b;border-radius:8px;padding:8px 12px;margin:0;font-size:.9rem}.account-menu,.progress{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:24px}.progress h2{margin-bottom:8px}.progress-pair{margin:0 0 4px;color:var(--muted)}.progress-count{margin:0 0 4px;font-size:1.1rem}.progress-last{margin:0;font-size:.9rem}.streak{margin:0 0 16px;padding:0 0 16px;border-bottom:1px solid var(--border)}.streak-heading{margin:0 0 8px;font-size:1rem}.streak-body{margin:0;font-size:1.1rem}.streak-current{white-space:nowrap}.streak-longest{font-size:.9rem}.streak-none{margin:0;font-size:.95rem}.account-menu-actions{display:flex;flex-wrap:wrap;gap:8px}.account-btn-danger{color:#ffd9d9;background:transparent;border:1px solid #7a3b3b;font-weight:600}.account-btn-danger:focus-visible,.account-btn-danger:hover{background:#3a1f1f;outline:2px solid #7a3b3b;outline-offset:1px}.account-confirm{margin-top:12px;padding:12px 14px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px}.account-confirm p{margin:0 0 12px}.done-check{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:0 0 16px;padding:12px 14px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px}.done-check-label{display:inline-flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font-size:1rem}.done-check-input{width:20px;height:20px;cursor:pointer}.done-check-error{color:#ffd9d9;font-size:.9rem}.legal{max-width:65ch}.legal h2{margin-top:32px}.legal li,.legal p{color:var(--text)}.legal a{color:var(--accent)}.visually-hidden{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:480px){.summary{grid-template-columns:1fr}.bubble,.correction-card{max-width:100%}}.tap-word{background:none;color:inherit;font:inherit;padding:0 1px;margin:0;cursor:pointer;border-radius:3px;border:none;border-bottom:1px dotted transparent}.tap-word:focus-visible,.tap-word:hover{background:var(--surface-2);border-bottom-color:var(--accent);outline:none}.vocab-chips{margin:8px 0 4px}.vocab-chips-heading{font-size:14px;font-weight:600;color:var(--muted);margin-right:8px}.vocab-chips-hint{font-size:14px}.vocab-chips-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.vocab-chip{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 16px;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:999px;font-size:16px;cursor:pointer}.vocab-chip:focus-visible,.vocab-chip:hover{border-color:var(--accent);outline:none}.vocab-chip-plus{font-weight:700;color:var(--accent)}.vocab-popover-overlay{position:fixed;inset:0;background:rgba(6,12,18,.55);display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}.vocab-popover{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;width:100%;max-width:360px;box-shadow:0 8px 32px rgba(0,0,0,.45)}.vocab-popover-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.vocab-popover-term{font-size:18px;font-weight:700}.vocab-popover-close{min-width:44px;min-height:44px;background:none;border:none;color:var(--muted);font-size:24px;line-height:1;cursor:pointer}.vocab-popover-close:focus-visible,.vocab-popover-close:hover{color:var(--text);outline:none}.vocab-popover-label{font-weight:600;color:var(--muted)}.vocab-popover-translation{margin:8px 0;font-size:16px}.vocab-popover-context,.vocab-popover-cost{font-size:14px;margin:8px 0}.vocab-popover-actions{margin-top:16px}.vocab-popover-save{min-height:44px;width:100%}.vocab-popover-saved{display:inline-block;color:var(--accent);font-weight:600}.vocab-popover-notice{margin-top:8px;color:#ffb4a2;font-size:14px}.vocab-page-nav{margin-bottom:16px}.chat-foot-link{margin-left:16px}.vocab-page-stats{display:flex;gap:24px;margin-bottom:16px}.vocab-stat{font-size:16px;color:var(--muted)}.vocab-stat strong{color:var(--text);font-size:20px}.vocab-page-controls{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.vocab-search,.vocab-select{min-height:44px;padding:8px 16px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:8px;font-size:16px}.vocab-search{flex:1 1 200px}.vocab-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.vocab-item{display:grid;grid-template-columns:1fr auto;grid-template-areas:"main del" "meta del";grid-gap:4px 16px;gap:4px 16px;align-items:center;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.vocab-item-main{grid-area:main;display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}.vocab-item-term{font-weight:700;font-size:16px}.vocab-item-arrow{color:var(--muted)}.vocab-item-translation{font-size:16px}.vocab-item-meta{grid-area:meta;display:flex;flex-wrap:wrap;gap:8px;font-size:14px}.vocab-item-context{font-style:italic}.vocab-item-delete{grid-area:del;min-height:44px;min-width:44px;padding:8px 16px;background:none;color:#ffb4a2;border:1px solid var(--border);border-radius:8px;font-size:14px;cursor:pointer}.vocab-item-delete:focus-visible,.vocab-item-delete:hover{border-color:#ffb4a2;outline:none}.vocab-empty{padding:24px 0}.vocab-review-cta{margin:0 0 24px}.vocab-due-badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 8px;margin-left:8px;border-radius:999px;background:var(--accent-text);color:var(--accent);font-size:14px;font-weight:700}.review-card,.review-done,.review-empty{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px}.review-card-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-bottom:24px}.review-progress{font-size:14px}.review-direction{min-height:44px;padding:8px 16px;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:8px;font-size:14px;cursor:pointer}.review-direction:focus-visible,.review-direction:hover{border-color:var(--accent);outline:none}.review-prompt{font-size:1.6rem;line-height:1.3;font-weight:700;margin:0 0 16px;text-align:center}.review-context{font-style:italic;margin:0 0 24px;text-align:center}.review-label{color:var(--muted);font-style:normal}.review-answer{font-size:1.3rem;line-height:1.3;margin:0 0 24px;text-align:center}.review-actions{display:flex;justify-content:center}.review-rate{display:flex;flex-wrap:wrap;gap:8px}.review-btn{flex:1 1 30%;min-width:96px;min-height:48px;padding:10px 16px;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;border:1px solid var(--border);background:var(--surface-2);color:var(--text)}.review-btn:focus-visible,.review-btn:hover{outline:none;border-color:var(--accent)}.review-btn:disabled{opacity:.6;cursor:default}.review-again{border-color:#ffb4a2}.review-easy{border-color:#8ce0a8}.review-empty-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.review-warn{color:#ffb4a2;margin:16px 0 0}