:root{--bg: #f4f5f7;--surface: #ffffff;--border: #e2e4e8;--text: #1f2328;--muted: #6b7280;--primary: #2f6fed;--primary-dark: #2559c9;--new: #2f6fed;--learn: #d9534f;--due: #34a853;--again: #d9534f;--hard: #e08e2f;--good: #34a853;--easy: #2f6fed;--shadow: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04);--kbd-bg: rgba(0, 0, 0, .12);--hover-bg: rgba(0, 0, 0, .06);--error-bg: #fdecea;--error-text: #c0392b;--chip-bg: #eef1f5;--tag-new-bg: #e7effd;--tag-warn-bg: #fdeceb;--tag-good-bg: #e6f4ea;--radius: 10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}kbd{font-family:inherit;font-size:.7em;background:var(--kbd-bg);border-radius:4px;padding:1px 5px;margin-left:6px;opacity:.8}.app-shell{max-width:720px;margin:0 auto;padding:16px 16px 90px;min-height:100vh}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.page-head h1{font-size:26px;margin:0}.empty{text-align:center;color:var(--muted);padding:40px 16px}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:10px 18px;font-size:15px;font-weight:600;transition:background .12s,border-color .12s,transform .05s}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-dark)}.btn.ghost{background:transparent}.btn.small{padding:6px 12px;font-size:13px}.btn:disabled{opacity:.5;cursor:default}.icon-btn{border:none;background:transparent;color:var(--muted);font-size:15px;padding:6px 8px;border-radius:6px;line-height:1}.icon-btn:hover{background:var(--hover-bg);color:var(--text)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:32px;width:100%;max-width:360px;display:flex;flex-direction:column;gap:14px}.brand{margin:0;text-align:center;font-size:30px;color:var(--primary);letter-spacing:-.5px}.auth-sub{margin:0 0 6px;text-align:center;color:var(--muted);font-size:14px}.auth-card label,.card-form label,.settings-section label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--muted)}input,select,textarea{font-family:inherit;font-size:15px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary)}textarea{resize:vertical}.form-error{background:var(--error-bg);color:var(--error-text);padding:8px 12px;border-radius:6px;font-size:13px}.auth-switch,.auth-hint{text-align:center;font-size:13px;color:var(--muted);margin:0}.auth-hint{opacity:.7}a{color:var(--primary);text-decoration:none}.deck-table{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin-bottom:18px}.deck-row{display:grid;grid-template-columns:1fr 48px 48px 48px auto;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--border)}.deck-row:last-child{border-bottom:none}.deck-head{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700}.deck-name{font-weight:600;color:var(--text);font-size:16px}.deck-count{text-align:center;font-variant-numeric:tabular-nums;font-weight:700}.deck-count.new{color:var(--new)}.deck-count.learn{color:var(--learn)}.deck-count.due{color:var(--due)}.deck-head.deck-count{font-weight:700}.deck-actions{display:flex;align-items:center;gap:4px;justify-content:flex-end}.done-chip{color:var(--due);font-weight:700}.create-btn,.create-deck{width:100%}.create-deck{display:flex;gap:8px}.create-deck input{flex:1}.study{display:flex;flex-direction:column;min-height:calc(100vh - 90px)}.study-head{display:flex;align-items:center;gap:12px;margin-bottom:20px}.icon-btn.back{font-size:26px;padding:0 6px}.study-deck-name{font-weight:600;flex:1}.card-stage{flex:1;display:flex;flex-direction:column}.flashcard{position:relative;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 24px;text-align:center;min-height:260px}.flashcard.clickable{cursor:pointer;transition:box-shadow .12s,transform .05s}.flashcard.clickable:hover{box-shadow:0 4px 14px #0000001a,0 2px 5px #0000000f}.flashcard.clickable:active{transform:translateY(1px)}.flashcard:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.flash-hint{position:absolute;bottom:14px;left:0;right:0;font-size:12px;color:var(--muted);opacity:.65}.study-progress{color:var(--muted);font-variant-numeric:tabular-nums;font-size:14px}.sync-badge{font-size:12px;font-weight:700;color:var(--learn);background:var(--tag-warn-bg);border-radius:20px;padding:2px 9px}.study-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-8px 0 16px;flex-wrap:wrap}.lang-picker{display:inline-flex;align-items:center;gap:6px}.lang-picker-label{font-size:14px}.lang-select{width:auto;padding:6px 8px;font-size:13px;font-weight:600}.speak-btn{border:none;background:transparent;font-size:.62em;line-height:1;padding:4px 6px;margin-left:8px;border-radius:6px;vertical-align:middle;opacity:.75}.speak-btn:hover{opacity:1;background:#0000000f}.study-direction{display:flex;align-items:center;gap:10px}.study-direction-label{font-size:13px;font-weight:600;color:var(--muted)}.segmented{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface)}.segmented .seg{border:none;background:transparent;color:var(--muted);padding:6px 16px;font-size:13px;font-weight:600}.segmented .seg+.seg{border-left:1px solid var(--border)}.segmented .seg.active{background:var(--primary);color:#fff}.flash-front{font-size:34px;font-weight:600}.flash-divider{width:60%;border:none;border-top:1px solid var(--border);margin:24px 0}.flash-back{font-size:28px;color:var(--primary)}.flash-notes{margin-top:16px;font-size:15px;color:var(--muted);font-style:italic}.study-controls{padding:20px 0 0}.show-answer{width:100%;background:var(--surface);border:1px solid var(--border);padding:14px;font-size:16px}.rating-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.rating-btn{border:none;border-radius:8px;padding:10px 4px;color:#fff;display:flex;flex-direction:column;align-items:center;gap:4px}.rating-btn .rating-interval{font-size:13px;opacity:.85;font-variant-numeric:tabular-nums}.rating-btn .rating-label{font-size:15px;font-weight:700}.rating-btn.again{background:var(--again)}.rating-btn.hard{background:var(--hard)}.rating-btn.good{background:var(--good)}.rating-btn.easy{background:var(--easy)}.rating-btn:disabled{opacity:.6}.rating-btn kbd{background:#ffffff40}.finished{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px}.finished-check{width:72px;height:72px;border-radius:50%;background:var(--due);color:#fff;font-size:38px;display:flex;align-items:center;justify-content:center;margin-bottom:12px}.finished-count{color:var(--muted);margin-bottom:16px}.card-form{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;display:flex;flex-direction:column;gap:14px}.added-badge,.deck-chip,.state-chip{font-size:12px;font-weight:700;border-radius:20px;padding:3px 10px}.added-badge{background:var(--tag-good-bg);color:var(--due)}.browse-filters{display:flex;gap:8px;margin-bottom:14px}.browse-filters .search{flex:1}.browse-filters select{width:auto}.browse-list{display:flex;flex-direction:column;gap:8px}.browse-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px}.browse-card.editing{display:flex;flex-direction:column;gap:8px;align-items:stretch}.browse-front{font-weight:600}.browse-back{color:var(--primary)}.browse-notes{font-size:13px;color:var(--muted);font-style:italic}.browse-meta{display:flex;flex-direction:column;gap:4px;align-items:flex-end}.deck-chip{background:var(--chip-bg);color:var(--muted)}.state-chip.new{background:var(--tag-new-bg);color:var(--new)}.state-chip.learning,.state-chip.relearning{background:var(--tag-warn-bg);color:var(--learn)}.state-chip.review{background:var(--tag-good-bg);color:var(--due)}.browse-actions{display:flex;gap:4px}.stat-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}.stat-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 12px;text-align:center}.stat-value{font-size:28px;font-weight:700}.stat-name{font-size:12px;color:var(--muted);margin-top:2px}.state-breakdown{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap}.chart{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:14px}.chart-label{font-size:13px;font-weight:600;color:var(--muted);margin-bottom:10px}.chart-svg{width:100%;height:90px;display:block}.chart-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:6px}.settings-section{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:16px;display:flex;flex-direction:column;gap:14px}.settings-section h2{margin:0;font-size:17px}.settings-buttons{display:flex;gap:8px}.import-msg{font-size:13px;color:var(--muted);margin:0}.navbar{position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--border);display:flex;justify-content:space-around;padding:6px 0 max(6px,env(safe-area-inset-bottom));z-index:10}.navitem{display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--muted);font-size:11px;padding:4px 12px;border-radius:8px}.navitem.active{color:var(--primary)}.navicon{font-size:18px;line-height:1}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0f1216;--surface: #191d23;--border: #2b313b;--text: #e7eaef;--muted: #9aa2ad;--primary: #4b86f2;--primary-dark: #3b74dd;--new: #4b86f2;--easy: #4b86f2;--shadow: 0 1px 3px rgba(0, 0, 0, .55), 0 1px 2px rgba(0, 0, 0, .4);--kbd-bg: rgba(255, 255, 255, .14);--hover-bg: rgba(255, 255, 255, .08);--error-bg: #3b1f1d;--error-text: #f0b4ac;--chip-bg: #242a33;--tag-new-bg: #152a49;--tag-warn-bg: #3a251f;--tag-good-bg: #183324}}:root[data-theme=dark]{--bg: #0f1216;--surface: #191d23;--border: #2b313b;--text: #e7eaef;--muted: #9aa2ad;--primary: #4b86f2;--primary-dark: #3b74dd;--new: #4b86f2;--easy: #4b86f2;--shadow: 0 1px 3px rgba(0, 0, 0, .55), 0 1px 2px rgba(0, 0, 0, .4);--kbd-bg: rgba(255, 255, 255, .14);--hover-bg: rgba(255, 255, 255, .08);--error-bg: #3b1f1d;--error-text: #f0b4ac;--chip-bg: #242a33;--tag-new-bg: #152a49;--tag-warn-bg: #3a251f;--tag-good-bg: #183324}.theme-segmented{align-self:flex-start}.today-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:16px}.streak-stat{display:flex;align-items:center;gap:10px}.streak-flame{font-size:30px}.streak-num{font-size:26px;font-weight:800;line-height:1}.streak-label{font-size:12px;color:var(--muted)}.goal-stat{display:flex;align-items:center;gap:10px}.goal-ring-track{fill:none;stroke:var(--border);stroke-width:6}.goal-ring-fill{fill:none;stroke:var(--primary);stroke-width:6;stroke-linecap:round;transition:stroke-dashoffset .5s ease}.goal-ring-text{fill:var(--text);font-size:20px;font-weight:800}.goal-label{font-size:12px;color:var(--muted);text-align:right;line-height:1.4}.goal-target{font-weight:700}.study-progressbar{height:4px;background:var(--border);border-radius:2px;margin:-8px 0 16px;overflow:hidden}.study-progressbar>i{display:block;height:100%;background:var(--primary);border-radius:2px;transition:width .3s ease}.skeleton{display:inline-block;border-radius:6px;background:linear-gradient(90deg,var(--border) 25%,rgba(127,127,127,.16) 37%,var(--border) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}.skeleton-text{height:14px}.skeleton-pill{height:14px;width:22px;margin:0 auto;border-radius:20px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.empty-state{padding:36px 16px}.empty-emoji{font-size:34px;margin-bottom:6px}.empty-sub{font-size:13px;opacity:.8;margin-top:2px}.toast-stack{position:fixed;left:0;right:0;bottom:calc(74px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:8px;z-index:50;pointer-events:none;padding:0 12px}.toast{background:var(--text);color:var(--bg);padding:10px 16px;border-radius:22px;font-size:14px;font-weight:600;box-shadow:var(--shadow);max-width:90%;animation:toastIn .2s ease}.toast-success{background:var(--good);color:#fff}.toast-error{background:var(--again);color:#fff}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.rating-btn{min-height:58px;justify-content:center}.card-enter{animation:cardIn .28s ease}@keyframes cardIn{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}.flash-reveal{display:contents}.flash-reveal>*{animation:revealIn .22s ease}@keyframes revealIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.card-enter,.flash-reveal>*,.toast,.skeleton{animation:none}.goal-ring-fill,.study-progressbar>i,.flashcard.clickable{transition:none}}.field-hint{font-size:12px;font-weight:400;color:var(--muted)}.typed-toggle.active{background:var(--primary);border-color:var(--primary);color:#fff}.typed-form{display:flex;gap:8px}.typed-input{flex:1}.typed-result{font-weight:700;font-size:15px;margin-bottom:8px}.typed-result.ok{color:var(--good)}.typed-result.bad{color:var(--again)}.banner{display:flex;align-items:center;justify-content:center;gap:12px;padding:9px 14px;font-size:13px;font-weight:600;text-align:center}.banner-offline{background:var(--tag-warn-bg);color:var(--learn)}.banner-install{background:var(--primary);color:#fff;flex-wrap:wrap}.banner-actions{display:inline-flex;gap:8px}.banner-install .btn.primary{background:#fff;color:var(--primary);border-color:#fff}.banner-install .btn.ghost{background:transparent;color:#fff;border-color:#ffffff8c}
