:root{--canvas:#111113;--surface-1:#1a1a1e;--surface-2:#222226;--ink:#f4f4f5;--ink-2:#b8b6bd;--ink-3:#7c7a83;--stroke:#ffffff14;--accent:#5865f2;--accent-ink:#f4f4f8;--danger:#e0685f;--danger-soft:#e0685f24;--success:#6bbf8b;--success-soft:#6bbf8b24;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fs-base:17px;font:var(--fs-base)/1.5 var(--sans);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--ink-2);background:var(--canvas);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (width>=768px){:root{--fs-base:13px}}*{box-sizing:border-box}body{margin:0}h1,h2,h3{color:var(--ink);margin:0;font-weight:600}.app-shell{flex-direction:column;max-width:640px;min-height:100vh;margin:0 auto;display:flex}.screen{padding:var(--s4) var(--s4) var(--s7);gap:var(--s5);flex-direction:column;flex:1;display:flex}.nav{align-items:center;gap:var(--s3);padding:var(--s4);border-bottom:1px solid var(--stroke);display:flex}.nav-title{text-align:center;justify-content:center;align-items:center;gap:var(--s2);flex:1;font-size:1.15em;display:inline-flex}.nav-sync-badge{background:var(--surface-2);min-width:1.6em;height:1.6em;color:var(--ink-2);border-radius:999px;justify-content:center;align-items:center;padding:0 .4em;font-size:.6em;font-weight:600;line-height:1;display:inline-flex}.nav-side{width:48px;display:flex}.nav-side-end{justify-content:flex-end}.nav-icon-btn{width:48px;height:48px;color:var(--ink-2);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;display:flex}.nav-icon-btn:hover{background:var(--surface-1);color:var(--ink)}.nav-icon-btn:active{background:var(--surface-2)}.nav-icon-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn{font:inherit;border:1px solid var(--stroke);background:var(--surface-1);min-height:48px;color:var(--ink);cursor:pointer;border-radius:10px;padding:12px 24px;font-weight:600}.btn:hover{background:var(--surface-2)}.btn:active{background:var(--surface-1);opacity:.85}.btn:disabled{color:var(--ink-3);cursor:not-allowed;opacity:.6}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-accent{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn-accent:hover{background:#6b77f4}.btn-accent:active{background:var(--accent);opacity:.85}.btn-block{width:100%}.btn-sm{border-radius:10px;min-height:36px;padding:8px 16px;font-weight:500}.btn-icon{border-radius:999px;justify-content:center;align-items:center;width:48px;height:48px;padding:0;display:flex}.due-hero{background:var(--surface-1);border:1px solid var(--stroke);padding:var(--s6) var(--s5);text-align:center;gap:var(--s3);border-radius:20px;flex-direction:column;display:flex}.due-number{color:var(--ink);font-size:3em;font-weight:700;line-height:1}.due-label{color:var(--ink-3)}.deck-list{gap:var(--s2);flex-direction:column;display:flex}.deck-row{align-items:stretch;gap:var(--s2);background:var(--surface-1);border:1px solid var(--stroke);padding:var(--s2);border-radius:14px;display:flex}.deck-row-main{align-items:center;gap:var(--s3);padding:var(--s3) var(--s3);text-align:left;min-height:48px;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:10px;flex:1;display:flex}.deck-row-main:hover{background:var(--surface-2)}.deck-row-main:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.deck-row-edit{color:var(--ink-3);text-decoration:none}.deck-row-edit:hover{color:var(--ink)}.deck-name{color:var(--ink);flex:1;font-weight:500}.deck-counts{gap:var(--s2);font-size:.9em;display:flex}.deck-count-due{color:var(--accent)}.deck-count-new{color:var(--ink-3)}.deck-empty{color:var(--ink-3);padding:var(--s4) 0}.new-deck-row{gap:var(--s2);display:flex}.field{font:inherit;min-height:48px;padding:0 var(--s3);border:1px solid var(--stroke);background:var(--surface-1);color:var(--ink);border-radius:10px;flex:1}.field:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.fab{right:max(var(--s5), calc((100vw - 640px) / 2 + var(--s5)));bottom:var(--s6);background:var(--accent);width:56px;height:56px;color:var(--accent-ink);border:1px solid var(--accent);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;display:flex;position:fixed}.fab:hover{background:#6b77f4}.fab:active{opacity:.85}.fab:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.section-title{color:var(--ink);font-size:1.05em;font-weight:600}.stub{color:var(--ink-3);padding:var(--s6) 0;text-align:center}.form-field{gap:var(--s2);flex-direction:column;display:flex}.form-field label{color:var(--ink);font-weight:500}.hint{color:var(--ink-3);font-size:.9em}.study-screen{gap:var(--s4)}.study-remaining{color:var(--ink-3);text-align:center}.study-card-tap{font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;flex:1;padding:0;display:flex}.study-card-tap:disabled{cursor:default}.study-card-tap:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:20px}.card-face{background:var(--surface-1);border:1px solid var(--stroke);text-align:center;isolation:isolate;border-radius:20px;flex:1;width:100%;min-height:240px;position:relative;overflow:hidden}.card-face-content{z-index:1;width:100%;height:100%;padding:var(--s6) var(--s5);justify-content:center;align-items:center;gap:var(--s4);flex-direction:column;display:flex;position:relative}.card-face-text{color:var(--ink);font-size:1.4em;font-weight:500}.card-face-example{color:var(--ink-3)}.card-face-image{border-radius:12px;max-width:100%;max-height:200px}.card-face-speak{color:var(--ink-2);background:var(--surface-2)}.card-face-speak:hover{color:var(--ink)}.shader-backdrop{z-index:0;pointer-events:none;border-radius:inherit;position:absolute;inset:0;overflow:hidden}.shader-backdrop-scrim{background:#0a0a0e52;position:absolute;inset:0}.study-done{background:var(--surface-1);border:1px solid var(--stroke);padding:var(--s6) var(--s5);text-align:center;gap:var(--s3);border-radius:20px;flex-direction:column;align-items:center;display:flex}.study-done .btn{justify-content:center;align-items:center;text-decoration:none;display:flex}.learn-screen{gap:var(--s4)}.learn-progress{gap:var(--s2);flex-direction:column;display:flex}.learn-progress-track{background:var(--surface-2);border-radius:999px;height:6px;overflow:hidden}.learn-progress-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .2s}.learn-progress-label{color:var(--ink-3);text-align:center}.learn-choices{gap:var(--s2);flex-direction:column;display:flex}.learn-choice{font:inherit;min-height:48px;padding:var(--s3) var(--s4);border:1px solid var(--stroke);background:var(--surface-1);color:var(--ink);text-align:left;cursor:pointer;border-radius:10px}.learn-choice:hover:not(:disabled){background:var(--surface-2)}.learn-choice:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.learn-choice:disabled{cursor:not-allowed}.learn-choice-correct{background:var(--success-soft);border-color:var(--success);color:var(--success)}.learn-choice-wrong{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.learn-choice-reveal{border-color:var(--success);color:var(--success)}.learn-typed,.learn-close{gap:var(--s3);flex-direction:column;display:flex}.learn-close-hint{color:var(--ink-2);text-align:center}.learn-close-actions{gap:var(--s2);grid-template-columns:1fr 1fr;display:grid}.rating-bar{gap:var(--s2);grid-template-columns:repeat(4,1fr);display:grid}.rating-btn{font:inherit;border:1px solid var(--stroke);background:var(--surface-1);min-height:56px;color:var(--ink);cursor:pointer;padding:var(--s2) var(--s1);border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.rating-btn:hover{background:var(--surface-2)}.rating-btn:active{opacity:.85}.rating-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.rating-btn:disabled{cursor:not-allowed;opacity:.6}.rating-btn:disabled:hover{background:var(--surface-1)}.rating-text{font-weight:600}.rating-interval{color:var(--ink-3);font-size:.85em}.rating-again{color:var(--danger)}.rating-good{border-color:var(--accent)}.editor-header{justify-content:space-between;align-items:center;gap:var(--s3);display:flex}.editor-header .deck-name{font-size:1.1em}.editor-hint{color:var(--ink-3)}.editor-table-wrap{border:1px solid var(--stroke);background:var(--surface-1);border-radius:14px;overflow-x:auto}.editor-table{border-collapse:collapse;width:100%;min-width:640px}.editor-table th{text-align:left;color:var(--ink-3);padding:var(--s3) var(--s3) var(--s2);border-bottom:1px solid var(--stroke);white-space:nowrap;font-size:.85em;font-weight:500}.editor-table td{padding:var(--s2);border-bottom:1px solid var(--stroke);vertical-align:top}.editor-table tr:last-child td{border-bottom:none}.editor-cell-input{font:inherit;width:100%;min-height:48px;padding:var(--s2) var(--s3);color:var(--ink);background:0 0;border:1px solid #0000;border-radius:8px}.editor-cell-input:hover{background:var(--surface-2)}.editor-cell-input:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;background:var(--surface-2);border-color:var(--stroke)}.editor-type-select{font:inherit;min-height:48px;padding:0 var(--s2);border:1px solid var(--stroke);background:var(--surface-1);color:var(--ink);border-radius:8px}.editor-type-select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.editor-row-drop{outline:2px dashed var(--accent);outline-offset:-2px}.editor-delete-btn{width:48px;height:48px;color:var(--ink-3);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;padding:0;display:flex}.editor-delete-btn:hover{background:var(--danger-soft);color:var(--danger)}.editor-delete-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.editor-thumb{object-fit:cover;border-radius:6px;width:40px;height:40px;display:block}.editor-add-row{justify-content:center;align-items:center;gap:var(--s2);color:var(--ink-3);cursor:pointer;background:0 0;border:none;width:100%;min-height:48px;display:flex}.editor-add-row:hover{color:var(--ink);background:var(--surface-2)}.sheet-backdrop{z-index:20;background:#00000080;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--surface-1);border:1px solid var(--stroke);width:100%;max-width:640px;padding:var(--s5) var(--s5) var(--s7);gap:var(--s4);border-top-left-radius:20px;border-top-right-radius:20px;flex-direction:column;display:flex;box-shadow:0 -14px 34px -18px #0000008c}.sheet-header{justify-content:space-between;align-items:center;display:flex}.sheet-title{color:var(--ink);font-size:1.1em;font-weight:600}.sheet-close{width:48px;height:48px;color:var(--ink-3);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;display:flex}.sheet-close:hover{background:var(--surface-2);color:var(--ink)}.sheet-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.toast{left:50%;bottom:var(--s6);background:var(--surface-2);border:1px solid var(--stroke);padding:var(--s3) var(--s4);color:var(--ink);align-items:center;gap:var(--s2);z-index:30;border-radius:12px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 14px 34px -18px #0000008c}.toast-success{color:var(--success)}.toast-error{color:var(--danger)}.danger-zone{border:1px solid var(--danger-soft);padding:var(--s4);gap:var(--s3);border-radius:14px;flex-direction:column;display:flex}.btn-danger{color:var(--danger)}.btn-danger:hover{background:var(--danger-soft)}.range-row{align-items:center;gap:var(--s3);display:flex}.range-value{color:var(--ink);text-align:right;min-width:3.5em;font-weight:600}.stepper-row{justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s3) 0;border-bottom:1px solid var(--stroke);display:flex}.stepper-label{color:var(--ink);font-weight:500}.stepper-controls{align-items:center;gap:var(--s3);display:flex}.stepper-btn{min-width:48px;padding:12px;font-size:1.1em;font-weight:700}.stepper-value{color:var(--ink);text-align:center;min-width:1.5em;font-weight:600}.btn-tf-true:hover,.btn-tf-true:focus-visible,.btn-tf-true-selected{background:var(--success-soft);color:var(--success);border-color:var(--success)}.btn-tf-true:focus-visible{outline-color:var(--success)}.btn-tf-false:hover,.btn-tf-false:focus-visible,.btn-tf-false-selected{background:var(--danger-soft);color:var(--danger);border-color:var(--danger)}.btn-tf-false:focus-visible{outline-color:var(--danger)}.test-paper{gap:var(--s6)}.test-section{gap:var(--s4);flex-direction:column;display:flex}.test-question{gap:var(--s2);flex-direction:column;display:flex}.match-columns{gap:var(--s3);grid-template-columns:1fr 1fr;display:grid}.match-col{gap:var(--s2);flex-direction:column;display:flex}.match-item{min-height:48px;padding:var(--s2) var(--s3);border:1px solid var(--stroke);background:var(--surface-1);color:var(--ink-2);text-align:left;cursor:pointer;justify-content:center;gap:var(--s1);border-radius:10px;flex-direction:column;display:flex}.match-item:hover:not(:disabled){background:var(--surface-2)}.match-item:disabled{cursor:not-allowed;opacity:.6}.match-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.match-item-selected{border-color:var(--accent);color:var(--ink)}.match-item-paired{background:var(--success-soft);color:var(--ink)}.match-screen{gap:var(--s4)}.match-hud{justify-content:space-between;align-items:center;display:flex}.match-grid{gap:var(--s3);grid-template-columns:repeat(2,1fr);display:grid}@media (width>=480px){.match-grid{grid-template-columns:repeat(3,1fr)}}@media (width>=768px){.match-grid{grid-template-columns:repeat(4,1fr)}}.match-tile{min-height:72px;padding:var(--s3);border:1px solid var(--stroke);background:var(--surface-1);color:var(--ink-2);cursor:pointer;text-align:center;border-radius:14px;justify-content:center;align-items:center;transition:background .12s,border-color .12s,opacity .2s;display:flex}.match-tile:hover:not(:disabled){background:var(--surface-2)}.match-tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.match-tile-text{-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:.95em;display:-webkit-box;overflow:hidden}.match-tile-selected{border-color:var(--accent);color:var(--ink)}.match-tile-miss{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.match-tile-matched{opacity:0;pointer-events:none}.match-best-beaten{color:var(--success)}.weak-list{gap:var(--s3);flex-direction:column;display:flex}.weak-item{padding:var(--s3);background:var(--surface-1);border:1px solid var(--stroke);gap:var(--s1);border-radius:12px;flex-direction:column;display:flex}.import-link-row{justify-content:flex-end;display:flex}.import-tabs{gap:var(--s2);display:flex}.import-tab{flex:1}.import-tab-active{background:var(--surface-2);color:var(--ink);border-color:var(--ink-3)}.import-textarea{min-height:160px;padding:var(--s3);resize:vertical;line-height:1.5}.import-error{color:var(--danger)}.import-preview{gap:var(--s2);flex-direction:column;display:flex}.import-preview-table{border:1px solid var(--stroke);border-radius:12px;overflow:hidden}.import-preview-row{gap:var(--s3);padding:var(--s2) var(--s3);display:flex}.import-preview-row+.import-preview-row{border-top:1px solid var(--stroke)}.import-preview-term{color:var(--ink);flex:1;font-weight:500}.import-preview-def{color:var(--ink-2);flex:1}.btn-loading{justify-content:center;align-items:center;gap:var(--s2);display:inline-flex}.spinner{border:2px solid #f4f4f54d;border-top-color:currentColor;border-radius:999px;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.draft-list{gap:var(--s3);flex-direction:column;display:flex}.draft-row{background:var(--surface-1);border:1px solid var(--stroke);padding:var(--s3);gap:var(--s2);border-radius:14px;flex-direction:column;display:flex}.draft-row-off{opacity:.5}.draft-row-head{justify-content:space-between;align-items:center;display:flex}.draft-checkbox{align-items:center;min-height:48px;display:flex}.draft-checkbox input{width:20px;height:20px}.draft-badge{color:var(--ink-2);background:var(--surface-2);padding:var(--s1) var(--s3);border-radius:999px;font-size:.85em;font-weight:600}.draft-field{min-height:44px}.draft-warning{color:var(--danger);background:var(--danger-soft);padding:var(--s2) var(--s3);border-radius:8px;font-size:.9em}.draft-actions{gap:var(--s2);align-items:stretch;display:flex}.draft-actions .btn-block{flex:1}
