:root{--bg:#f6f4ef;--surface:#fff;--surface-2:#f0ede6;--border:#e4dfd4;--text:#24211c;--muted:#7b7468;--accent:#c2410c;--accent-soft:#fbe9de;--new:#3884ff33;--new-solid:#3884ff;--lv1:#f5be1e8c;--lv2:#f5be1e61;--lv3:#f5be1e38;--lv4:#f5be1e1a;--known:#16a34a;--danger:#dc2626;--shadow:0 1px 2px #281e0a0d, 0 8px 24px #281e0a0f;--radius:12px;--reading-font:"Charter", "Iowan Old Style", "Georgia", "Cambria", serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#17161a;--surface:#211f25;--surface-2:#2a2830;--border:#36333c;--text:#ebe7df;--muted:#9c968b;--accent:#fb923c;--accent-soft:#3b2a1e;--new:#609cff3d;--new-solid:#609cff;--lv1:#fac83266;--lv2:#fac83247;--lv3:#fac8322b;--lv4:#fac83214;--shadow:0 1px 2px #0000004d, 0 8px 24px #00000040;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font:14px/1.5 Segoe UI Variable,Segoe UI,system-ui,sans-serif}button{font:inherit;color:inherit;cursor:pointer}h1{letter-spacing:-.01em;margin:0 0 2px;font-size:26px}h2{margin:0 0 12px}h4{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:14px 0 6px;font-size:12px}.muted{color:var(--muted)}.small{font-size:12px}.loading{height:100%;color:var(--muted);place-items:center;display:grid}.btn{border:1px solid var(--border);background:var(--surface);white-space:nowrap;border-radius:9px;padding:8px 14px;transition:background .15s,border-color .15s,transform 50ms}.btn:hover:not(:disabled){border-color:var(--muted)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){filter:brightness(1.07);border-color:var(--accent)}.btn.ghost{background:0 0;border-color:#0000}.icon-btn{background:0 0;border:0;border-radius:8px;place-items:center;width:32px;height:32px;font-size:16px;transition:background .15s;display:inline-grid}.icon-btn:hover{background:var(--surface-2)}.star.on{color:#eab308}.link{color:var(--accent);text-align:left;background:0 0;border:0;padding:0}.link:hover{text-decoration:underline}.link.plain{color:var(--text);font-weight:600}.link.danger{color:var(--danger)}.input{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;border-radius:9px;outline:none;padding:9px 12px;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input.slim{padding:5px 9px}.textarea{resize:vertical;min-height:320px;font-family:var(--reading-font);font-size:16px;line-height:1.6}.row{align-items:center;gap:8px;display:flex}.row.tight{gap:2px}.row.center{justify-content:center}.row.spread{justify-content:space-between}.seg{background:var(--surface-2);border-radius:9px;gap:2px;padding:3px;display:inline-flex}.seg button{color:var(--muted);background:0 0;border:0;border-radius:7px;padding:5px 12px}.seg button.on{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000001a}.seg.wide{margin-bottom:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}kbd{opacity:.6;border:1px solid;border-radius:4px;padding:0 4px;font:11px ui-monospace,monospace}.picker{place-items:center;height:100%;display:grid}.picker-card{text-align:center;width:460px}.brand{font-family:var(--reading-font);letter-spacing:-.02em;font-size:24px;font-weight:700}.brand span{color:var(--accent)}.brand.big{font-size:56px}.profiles{flex-wrap:wrap;justify-content:center;gap:16px;margin:28px 0;display:flex}.profile-tile{border:1px solid var(--border);background:var(--surface);border-radius:16px;justify-items:center;gap:10px;min-width:130px;padding:20px 24px 14px;font-weight:600;transition:transform .15s,box-shadow .15s;display:grid}.profile-tile:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.avatar{color:#fff;border-radius:50%;flex:none;place-items:center;width:30px;height:30px;font-weight:700;display:inline-grid}.avatar.large{width:64px;height:64px;font-size:26px}.shell{height:100%;display:flex}.sidebar{border-right:1px solid var(--border);flex-direction:column;flex:none;gap:18px;width:208px;padding:22px 14px 14px;display:flex}.sidebar .brand{padding:0 10px}.sidebar nav{gap:2px;display:grid}.nav-item{text-align:left;color:var(--muted);background:0 0;border:0;border-radius:9px;align-items:center;gap:10px;padding:9px 10px;transition:background .15s,color .15s;display:flex}.nav-item:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.nav-item.active{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 3px #0000000f}.nav-item:disabled{opacity:.4;cursor:default}.nav-icon{text-align:center;width:18px}.badge{background:var(--accent);color:#fff;border-radius:10px;margin-left:auto;padding:1px 7px;font-size:11px;font-weight:700}.side-stats{color:var(--muted);gap:2px;margin-top:auto;padding:0 10px;font-size:13px;display:grid}.side-stats b{color:var(--text)}.profile-chip{text-align:left;background:0 0;border:0;border-radius:9px;align-items:center;gap:10px;padding:8px 10px;display:flex}.profile-chip:hover{background:var(--surface-2)}.profile-name{text-overflow:ellipsis;flex:1;font-weight:600;overflow:hidden}.profile-chip .muted{font-size:11px}.main{flex:1;min-width:0;overflow:auto}.page-wrap{max-width:1080px;margin:0 auto;padding:32px 36px 60px}.page-wrap.narrow{max-width:720px}.view-head{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;display:flex}.view-head p{margin:0}.empty{text-align:center;color:var(--muted);border:1.5px dashed var(--border);border-radius:var(--radius);padding:60px 20px}.cards{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px;display:grid}.text-card{cursor:pointer;flex-direction:column;padding:18px 18px 12px;transition:transform .15s,box-shadow .15s;display:flex}.text-card:hover{transform:translateY(-2px)}.text-card h3{font-family:var(--reading-font);margin:0 0 6px;font-size:19px}.excerpt{color:var(--muted);font-family:var(--reading-font);flex:1;margin:0 0 14px}.meter{background:var(--surface-2);border-radius:3px;height:5px;overflow:hidden}.meter div{background:var(--known);border-radius:3px;height:100%;transition:width .4s}.card-foot{justify-content:space-between;align-items:center;margin-top:8px;font-size:12px;display:flex}.card-actions{opacity:0;transition:opacity .15s;display:flex}.text-card:hover .card-actions{opacity:1}.new-dot{background:var(--new-solid);vertical-align:0;border-radius:50%;width:8px;height:8px;display:inline-block}.modal-backdrop{z-index:10;background:#14100a59;place-items:center;animation:.15s fade;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:16px;gap:12px;width:min(760px,92vw);padding:24px;animation:.18s ease-out rise;display:grid;box-shadow:0 20px 60px #00000040}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}.reader{height:100%;display:flex}.reader-main{flex-direction:column;flex:1;min-width:0;display:flex}.reader-head{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 20px;display:flex}.reader-title{white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:600;overflow:hidden}.reader-scroll{scroll-behavior:smooth;flex:1;overflow:auto}.reading{max-width:720px;font-family:var(--reading-font);-webkit-user-select:text;user-select:text;margin:0 auto;padding:40px 32px 16px;line-height:1.85}.reading p{margin:0 0 1.1em}.w{cursor:pointer;border-radius:4px;margin:0 -1px;padding:1px;transition:background .2s,box-shadow .15s}.w:hover{box-shadow:0 0 0 1.5px var(--accent)}.w.st0{background:var(--new)}.w.st1{background:var(--lv1)}.w.st2{background:var(--lv2)}.w.st3{background:var(--lv3)}.w.st4{background:var(--lv4);text-underline-offset:4px;-webkit-text-decoration:underline dotted #c8961499;text-decoration:underline dotted #c8961499}.w.fav{text-underline-offset:5px;-webkit-text-decoration:underline wavy #eab308;text-decoration:underline wavy #eab308}.w.sel{box-shadow:0 0 0 2px var(--accent)}.google-open{justify-content:center;align-items:center;gap:8px;width:100%;padding:12px;display:flex}.quick-phrase{align-items:flex-start;margin:4px 0 12px}.gt-icon-btn{color:#4285f4;font-family:Segoe UI,sans-serif;font-weight:800}.pager{justify-content:space-between;gap:8px;max-width:720px;margin:8px auto 0;padding:0 32px;display:flex}.hint{text-align:center;padding:18px 32px 32px}.panel{border-left:1px solid var(--border);background:var(--surface);flex-direction:column;flex:none;gap:10px;width:390px;padding:18px 20px 30px;animation:.18s ease-out slide;display:flex;overflow:auto}@keyframes slide{0%{opacity:0;transform:translate(16px)}}.panel-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.panel-word{flex-wrap:wrap;align-items:baseline;gap:8px;min-width:0;display:flex}.panel-word .word{font-family:var(--reading-font);word-break:break-word;font-size:28px;font-weight:700;line-height:1.2}.article{border-radius:6px;padding:1px 7px;font-size:15px;font-weight:700}.g-m{color:#1d4ed8;background:#dbeafe}.g-f{color:#be185d;background:#fce7f3}.g-n{color:#15803d;background:#dcfce7}.lemma,.ipa{color:var(--muted);margin-top:-6px}.quick{margin-top:-4px}.status-row{flex-wrap:wrap;gap:4px;display:flex}.status-btn{border:1px solid var(--border);background:var(--surface);border-radius:8px;min-width:34px;padding:5px 10px;font-size:13px;font-weight:600;transition:all .15s}.status-btn:hover{border-color:var(--muted)}.status-btn.on.sb1{background:var(--lv1)}.status-btn.on.sb2{background:var(--lv2)}.status-btn.on.sb3{background:var(--lv3)}.status-btn.on.sb4{background:var(--lv4)}.status-btn.on{border-color:#d4a017}.status-btn.on.sb5{background:var(--known);border-color:var(--known);color:#fff}.status-btn.on.sb-1{background:var(--muted);border-color:var(--muted);color:var(--surface)}.field{color:var(--muted);gap:4px;font-size:12px;display:grid}.field .input{color:var(--text);font-size:14px}.note{resize:vertical;min-height:52px}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-top:6px;display:flex}.tab{color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 10px}.tab.on{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.tab-body{padding-top:4px}.defs ol{margin:0;padding-left:20px}.defs li{margin-bottom:8px}.def{text-align:left;background:0 0;border:0;border-radius:6px;margin-left:-4px;padding:2px 4px;transition:background .15s}.def:hover{background:var(--accent-soft)}.example{font-family:var(--reading-font);color:var(--muted);padding-left:2px;font-size:13px;font-style:italic}.source{margin-top:16px}.translation{font-size:18px;font-family:var(--reading-font);margin:6px 0}.chips{flex-wrap:wrap;gap:6px;margin-bottom:6px;display:flex}.chip{border:1px solid var(--border);background:var(--surface-2);border-radius:20px;padding:3px 11px;font-size:13px;transition:border-color .15s}.chip:hover{border-color:var(--accent)}.wiki img{float:right;border-radius:8px;max-width:110px;max-height:130px;margin:0 0 8px 12px}.wiki article{margin-top:10px;line-height:1.6}.wiki article h4{text-transform:none;letter-spacing:0;color:var(--text);margin-top:0;font-size:16px}.links{gap:10px;margin:6px 0;padding:0;list-style:none;display:grid}.error{color:var(--danger)}.skeleton{gap:10px;padding-top:8px;display:grid}.skeleton div{background:linear-gradient(90deg, var(--surface-2), var(--border), var(--surface-2));background-size:200% 100%;border-radius:6px;height:12px;animation:1.2s infinite shimmer}.skeleton div:nth-child(2){width:80%}.skeleton div:nth-child(3){width:60%}@keyframes shimmer{to{background-position:-200% 0}}.search{width:220px}.vocab{gap:6px;display:grid}.vocab-row{background:var(--surface);border:1px solid var(--border);border-radius:10px;grid-template-columns:32px 170px 220px 1fr 110px 32px;align-items:center;gap:10px;padding:6px 10px;display:grid}.vocab-word{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vocab-context{text-overflow:ellipsis;white-space:nowrap;font-family:var(--reading-font);overflow:hidden}.review-start{text-align:center;max-width:420px;margin:30px auto;padding:36px}.big-number{font-size:64px;font-weight:700;font-family:var(--reading-font);color:var(--accent);line-height:1}.review-progress{text-align:center;margin-bottom:10px}.flashcard{text-align:center;max-width:640px;margin:20px auto;padding:40px 40px 30px;animation:.2s ease-out rise}.fc-word{font-family:var(--reading-font);justify-content:center;align-items:center;gap:6px;font-size:38px;font-weight:700;display:flex}.card-context{font-family:var(--reading-font);margin:18px 0 4px;font-size:19px;line-height:1.6}.card-context mark{background:var(--lv1);color:inherit;border-radius:4px;padding:0 2px}.reveal{margin-top:28px;padding:11px 26px}.fc-answer{border-top:1px solid var(--border);margin-top:22px;padding-top:20px;animation:.2s fade}.fc-meaning{margin-bottom:4px;font-size:22px;font-weight:600}.fc-note{color:var(--muted);white-space:pre-wrap;margin-top:8px}.grades{grid-template-columns:repeat(4,1fr);gap:8px;margin-top:24px;display:grid}.grade{border:1px solid var(--border);background:var(--surface);border-radius:10px;gap:2px;padding:10px 6px;transition:transform .1s,border-color .15s;display:grid}.grade span{color:var(--muted);font-size:12px}.grade kbd{justify-self:center}.grade:hover{transform:translateY(-1px)}.grade.again:hover{border-color:var(--danger)}.grade.hard:hover{border-color:#d97706}.grade.good:hover{border-color:var(--known)}.grade.easy:hover{border-color:#2563eb}.settings{padding:6px 22px}.setting{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:20px;padding:16px 0;display:flex}.setting:last-child{border-bottom:0}.setting p{margin:2px 0 0}.setting.column{flex-direction:column;align-items:stretch;gap:10px}input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}input[type=range]{accent-color:var(--accent);width:200px}body{-webkit-tap-highlight-color:transparent}@media (hover:none){.w:hover{box-shadow:none}.card-actions{opacity:1}}@media (width<=760px){body{font-size:15px}.picker-card{width:100%;padding:0 20px}.brand.big{font-size:44px}.shell{flex-direction:column}.sidebar{z-index:20;width:auto;padding:4px 6px calc(4px + env(safe-area-inset-bottom));border-right:0;border-top:1px solid var(--border);background:var(--surface);flex-direction:row;align-items:center;gap:0;position:fixed;bottom:0;left:0;right:0}.sidebar .brand,.side-stats,.profile-name,.profile-chip .muted{display:none}.sidebar nav{flex:1;justify-content:space-around;display:flex}.nav-item{flex-direction:column;gap:0;padding:6px 4px;font-size:11px;position:relative;box-shadow:none!important;background:0 0!important}.nav-item.active{color:var(--accent)}.nav-icon{width:auto;font-size:19px}.badge{margin:0;position:absolute;top:0;right:0}.profile-chip{padding:6px}.main{padding-bottom:calc(64px + env(safe-area-inset-bottom))}.page-wrap{padding:calc(18px + env(safe-area-inset-top)) 14px 30px}.view-head{flex-wrap:wrap;align-items:flex-start}.view-head .row{width:100%}.search{flex:1;width:auto}.seg.wide{max-width:100%;display:flex;overflow-x:auto}.seg.wide button{white-space:nowrap}.cards{grid-template-columns:1fr}.modal{width:100%;height:100%;padding:calc(16px + env(safe-area-inset-top)) 16px 16px;border-radius:0;align-content:start}.textarea{min-height:50vh}.reader-head{padding:calc(8px + env(safe-area-inset-top)) 10px 8px}.reader-head .btn.ghost{padding:6px 8px}.reading{padding:22px 18px 10px;line-height:1.75}.pager{flex-wrap:wrap;padding:0 14px}.pager .btn.primary{white-space:normal;order:-1;width:100%}.pager .btn:not(.primary){flex:1}.hint{display:none}.panel{left:0;right:0;bottom:calc(56px + env(safe-area-inset-bottom));z-index:15;border-left:0;border-top:1px solid var(--border);border-radius:18px 18px 0 0;width:auto;padding:14px 16px 24px;animation:.2s ease-out sheet;position:fixed;top:38vh;box-shadow:0 -10px 30px #0000002e}@keyframes sheet{0%{opacity:0;transform:translateY(40px)}}.panel-word .word{font-size:24px}.tabs{overflow-x:auto}.tab{white-space:nowrap}.vocab-row{grid-template-columns:32px 1fr auto 32px;grid-template-areas:"star word status del""star meaning meaning meaning";row-gap:4px}.vocab-row>:first-child{grid-area:star}.vocab-row>:nth-child(2){grid-area:word}.vocab-row>:nth-child(3){grid-area:meaning}.vocab-row>:nth-child(4){display:none}.vocab-row>:nth-child(5){grid-area:status;width:100px}.vocab-row>:nth-child(6){grid-area:del}.flashcard{padding:28px 18px 20px}.fc-word{font-size:30px}.card-context{font-size:17px}.grades{gap:6px}.grade kbd,.reveal kbd{display:none}.setting{flex-wrap:wrap}}
