@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#fbfaf4;--surface:#fff;--ink:#2c2c2c;--muted:#8a8578;--hairline:#e4e0d3;--accent:#b4543e;--accent-soft:#f3e6e1;--pill:#eae5d6;--highlight:#f4e9c9;--font-ui:"Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif:"Fraunces Variable", "Book Antiqua", Georgia, serif}@media (prefers-color-scheme:dark){:root{--bg:#1a1815;--surface:#221f1b;--ink:#ece8dd;--muted:#97917f;--hairline:#37332b;--accent:#d0765f;--accent-soft:#3a2a24;--pill:#2e2a23;--highlight:#4a3f22}}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);margin:0;font-size:16px;line-height:1.5}h1{font-family:var(--font-serif);font-variation-settings:"opsz" 60;letter-spacing:-.01em;font-weight:380}.container{max-width:960px;margin:0 auto;padding:1.25rem 1.25rem 4rem}.container.narrow{max-width:560px}.page-header{justify-content:space-between;align-items:center;gap:1rem;margin:1.5rem 0 2rem;display:flex}.page-header h1{margin:0;font-size:2.25rem;line-height:1.1}.header-actions{align-items:center;gap:.5rem;display:flex}.breadcrumb{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.5rem;font-size:.75rem;text-decoration:none;display:inline-block}.breadcrumb:hover{color:var(--ink)}.page-message{color:var(--muted);text-align:center;padding:3rem 1rem}.page-message a,.error{color:var(--accent)}.hint{color:var(--muted);margin:.25rem 0;font-size:.85rem}.tag{text-transform:uppercase;letter-spacing:.09em;background:var(--pill);color:var(--muted);border-radius:999px;margin-left:.5rem;padding:.15rem .6rem;font-size:.65rem}.tag.success{background:var(--accent-soft);color:var(--accent)}.tag.leech{background:var(--accent);color:var(--bg)}.button,button{font:inherit;letter-spacing:.02em;border:1px solid var(--hairline);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:999px;padding:.5rem 1.1rem;font-size:.85rem;font-weight:500;text-decoration:none;transition:background .15s;display:inline-block}.button.primary,button.primary{background:var(--ink);border-color:var(--ink);color:var(--bg)}.button.subtle{color:var(--muted);background:0 0;border-color:#0000}.button.subtle:hover{color:var(--ink)}button:disabled{opacity:.45;cursor:default}input,textarea,select{font:inherit;border:1px solid var(--hairline);background:var(--surface);width:100%;color:var(--ink);border-radius:10px;padding:.55rem .75rem}input:focus,textarea:focus,select:focus{border-color:var(--muted);outline:none}label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:1rem;font-size:.75rem;display:block}label input,label textarea,label select{margin-top:.35rem}.login{max-width:360px;margin:18vh auto 0;padding:1rem}.login h1{text-align:center;margin-bottom:2rem;font-size:2.5rem}.login button{width:100%;margin-top:.5rem}.deck-list{margin:0 0 2.5rem;padding:0;list-style:none}.deck-list li+li{border-top:1px solid var(--hairline)}.deck-row{color:var(--ink);justify-content:space-between;align-items:center;padding:1rem .25rem;text-decoration:none;display:flex}.deck-row:hover .deck-name{color:var(--accent)}.deck-name{font-family:var(--font-serif);font-size:1.35rem;font-weight:420}.deck-counts{gap:.4rem;display:flex}.count{text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;min-width:2.1rem;padding:.15rem .5rem;font-size:.8rem}.count.due{background:var(--accent);color:var(--bg)}.count.new{background:var(--pill);color:var(--ink)}.count.total{border:1px solid var(--hairline);color:var(--muted);background:0 0}.inline-form{border-top:1px solid var(--hairline);gap:.5rem;padding-top:1.5rem;display:flex}.inline-form input{flex:1}.inline-form button{white-space:nowrap}.vocab-table{border-collapse:collapse;width:100%}.vocab-table th{text-align:left;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);border-bottom:1px solid var(--ink);padding:.6rem .75rem .6rem .25rem;font-size:.7rem;font-weight:500}.vocab-table td{border-bottom:1px solid var(--hairline);vertical-align:top;padding:.9rem .75rem .9rem .25rem}.vocab-table tr.suspended{opacity:.4}.vocab-table .native{color:var(--muted);font-size:.95rem}.vocab-table .sentence,.vocab-table .forms{font-family:var(--font-serif);font-variation-settings:"opsz" 18;font-size:1.15rem;font-weight:400;line-height:1.5}.vocab-table .sentence strong{background:var(--highlight);border-radius:3px;padding:0 2px;font-weight:620}.vocab-table .forms{white-space:nowrap}.audio-button{color:var(--muted);background:0 0;border:none;margin-left:.35rem;padding:0 .3rem;font-size:.8rem}.audio-button:hover,.audio-button.playing{color:var(--accent)}@media (width<=640px){.page-header h1{font-size:1.75rem}.page-header{flex-wrap:wrap}.header-actions{flex-wrap:wrap;gap:.4rem;width:100%}.header-actions .button{padding:.4rem .8rem;font-size:.8rem}.vocab-table .forms{white-space:normal}}.practice-bar{gap:.5rem;margin-bottom:2rem;display:flex}.progress{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.85rem}.practice-card{border-top:1px solid var(--hairline);text-align:center;padding-top:2.5rem}.prompt-label{text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0 0 .5rem;font-size:.7rem}.prompt{font-family:var(--font-serif);margin:0 0 2rem;font-size:2.5rem;font-weight:420;line-height:1.15}.context-sentence{font-family:var(--font-serif);font-variation-settings:"opsz" 18;margin:-1rem 0 2rem;font-size:1.15rem;line-height:1.6}.context-sentence strong{background:var(--highlight);border-radius:3px;padding:0 2px;font-weight:620}.answer-input{font-family:var(--font-serif);text-align:center;padding:.75rem;font-size:1.3rem}.button.check{width:100%;margin-top:.75rem;padding:.7rem}.verdict{text-transform:uppercase;letter-spacing:.09em;margin:0 0 1rem;font-size:.75rem}.verdict.ok{color:var(--ok,#4c8a4c)}.verdict.wrong{color:var(--accent)}.typed-answer{font-family:var(--font-serif);color:var(--accent);margin:0 0 .25rem;font-size:1.15rem;text-decoration:line-through}.expected{font-family:var(--font-serif);margin:0 0 1.25rem;font-size:1.7rem;font-weight:500}.reveal .sentence{font-family:var(--font-serif);font-variation-settings:"opsz" 18;color:var(--ink);margin:0 0 2rem;font-size:1.15rem;line-height:1.6}.reveal .sentence strong{background:var(--highlight);border-radius:3px;padding:0 2px;font-weight:620}.reveal-actions{justify-content:center;gap:.5rem;display:flex}.reveal-actions .button.primary{min-width:10rem}.summary-stats{font-size:1.15rem}.summary-stats strong{font-family:var(--font-serif);font-size:1.6rem}.summary-heading{text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:2rem 0 .5rem;font-size:.75rem}.summary-missed{margin:0 0 2rem;padding:0;list-style:none}.summary-missed li{border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:baseline;gap:1rem;padding:.6rem .25rem;display:flex}.summary-missed .native{color:var(--muted)}.summary-missed .forms{font-family:var(--font-serif);font-size:1.1rem}.summary-actions{gap:.5rem;display:flex}.password-handout{border:1px solid var(--accent);border-radius:10px;margin-bottom:1.5rem;padding:.75rem 1rem}.password-handout p{margin:.15rem 0}.password-value{letter-spacing:.05em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.3rem}.user-list{margin:0 0 2rem;padding:0;list-style:none}.user-list li{border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:center;gap:1rem;padding:.7rem .25rem;display:flex}.user-list li.inactive .user-name{opacity:.45}.user-name{font-family:var(--font-serif);font-size:1.15rem}.user-actions{gap:.25rem;display:flex}.success-text{color:var(--success,#2a9d8f)}.token-row{flex-wrap:wrap;gap:.3rem;margin:0 0 1.25rem;display:flex}.token{font-family:var(--font-serif);background:0 0;border:1px solid #0000;border-radius:6px;padding:.15rem .45rem;font-size:1.05rem}.token:hover{border-color:var(--hairline)}.token.marked{background:var(--highlight);font-weight:620}.row-actions a{color:var(--muted);font-size:1rem;text-decoration:none}.row-actions a:hover{color:var(--accent)}.deck-manage{align-items:center;gap:.25rem;margin-left:auto;display:inline-flex}.button.danger{border-color:var(--accent);color:var(--accent)}.danger-zone{border-top:1px solid var(--hairline);margin-top:2rem;padding-top:1rem}.import-controls{flex-wrap:wrap;align-items:center;gap:1rem;margin:.75rem 0 1.25rem;display:flex}.inline-label{text-transform:none;letter-spacing:normal;align-items:center;gap:.4rem;margin:0;font-size:.85rem;display:inline-flex}.inline-label input[type=file],.inline-label input[type=checkbox],.inline-label.deck-pick select{width:auto}.import-preview{margin-bottom:1rem}.import-button{width:100%;padding:.7rem}.book-list{margin:0;padding:0;list-style:none}.book-list li{border-bottom:1px solid var(--hairline);align-items:center;gap:.5rem;display:flex}.book-row{color:var(--ink);flex:1;justify-content:space-between;align-items:baseline;gap:1rem;padding:.9rem .25rem;text-decoration:none;display:flex}.book-title{font-family:var(--font-serif);font-size:1.25rem}.book-author{color:var(--muted);font-size:.85rem;display:block}.book-progress{color:var(--muted);font-variant-numeric:tabular-nums}.reader{flex-direction:column;height:100dvh;display:flex}.reader-bar{border-bottom:1px solid var(--hairline);align-items:center;gap:.75rem;padding:.5rem 1rem;display:flex;position:relative}.reader-bar .breadcrumb{margin:0}.reader-title{font-family:var(--font-serif);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.reader-body{flex:1;min-height:0;display:flex;position:relative}.tap-zone{z-index:2;background:0 0;border:none;border-radius:0;width:18%;padding:0;display:none;position:absolute;top:15%;bottom:5%}@media (pointer:coarse){.tap-zone{display:block}}.tap-zone.left{left:0}.tap-zone.right{right:0}.reader-bar .nav{padding:.2rem .6rem;font-size:1.1rem}.reader-settings{z-index:6;background:var(--surface);border:1px solid var(--hairline);border-radius:10px;flex-direction:column;gap:.6rem;min-width:240px;padding:.75rem 1rem;display:flex;position:absolute;top:calc(100% + .25rem);right:.5rem;box-shadow:0 6px 24px #00000026}.setting-row{justify-content:space-between;align-items:center;gap:1rem;font-size:.9rem;display:flex}.setting-row select{width:auto}.capture-sheet{z-index:10;background:var(--surface);border:1px solid var(--hairline);border-radius:12px;width:min(560px,100vw - 2rem);padding:.9rem 1rem;position:fixed;bottom:1rem;left:50%;transform:translate(-50%);box-shadow:0 8px 32px #0003}.capture-word{font-family:var(--font-serif);justify-content:space-between;align-items:center;margin:0 0 .5rem;font-size:1.25rem;font-weight:500;display:flex}.capture-sheet textarea{font-family:var(--font-serif)}.sheet-label{margin-bottom:.5rem;font-size:.7rem}.suggestion-row{flex-wrap:wrap;gap:.35rem;margin:0 0 .5rem;display:flex}.button.suggestion{font-family:var(--font-serif);padding:.3rem .8rem;font-size:.95rem}.button.suggestion.picked{background:var(--ink);color:var(--bg);border-color:var(--ink)}.capture-actions{flex-direction:column;gap:.5rem;display:flex}.capture-actions .save-button{white-space:nowrap;text-overflow:ellipsis;width:100%;padding:.6rem;overflow:hidden}@media (width<=480px){.capture-sheet{border-radius:12px 12px 0 0;width:100vw;bottom:0}}.capture-form{border-top:1px solid var(--hairline);padding-top:1.5rem}.capture-form button[type=submit]{width:100%;margin-top:.5rem;padding:.7rem}
