:root{--bg: #f6f6f7;--surface: #ffffff;--sunken: #f2f2f4;--raised: #fbfbfc;--overlay: #ffffff;--rail-bg: #f0f0f2;--ink: #17171a;--ink-2: #5a5a61;--ink-3: #909097;--ink-4: #a0a0a6;--ink-inv: #f2f2f4;--line: #e3e3e6;--line-2: #dcdce0;--line-3: #c9c9cf;--track: #e6e6ea;--accent: #3d5a80;--accent-2: #2a4260;--accent-soft: #eef2f8;--accent-line: #c3cfe2;--focus: #3d5a80;--ok: #2f6f4f;--ok-soft: #eef5f0;--ok-line: #c6dfd0;--warn: #8a6a25;--warn-soft: #f7f2e4;--warn-line: #ddd0a8;--bad: #9c4433;--bad-soft: #fbf1ee;--bad-line: #e8cdc4;--star: #5f4f86;--star-soft: #f2f0f7;--star-line: #d2cae4;--hl: #ecf0d9;--d-easy: #a8a8b0;--d-mid: #77777f;--d-hard: #4a4a52;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 20px;--s6: 28px;--s7: 40px;--r0: 0;--r1: 3px;--r2: 5px;--r3: 7px;--r-full: 999px;--f-sans: "IBM Plex Sans", "PingFang SC", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;--f-mono: "IBM Plex Mono", "SF Mono", ui-monospace, Menlo, Consolas, monospace;--f-word: "IBM Plex Mono", "SF Mono", ui-monospace, Menlo, monospace;--t-2xs: 10px;--t-xs: 10.5px;--t-sm: 11px;--t-md: 11.5px;--t-base: 12.5px;--t-lg: 14px;--t-xl: 17px;--t-2xl: 22px;--t-3xl: 34px;--sh1: 0 1px 1px rgba(0,0,0,.06);--sh2: 0 8px 26px rgba(0,0,0,.14);--sh3: 0 18px 48px rgba(0,0,0,.24);--dur1: 80ms;--dur2: .14s;--ease: cubic-bezier(.2, .8, .2, 1);--rail: 206px;--panel: 328px;--safe: env(safe-area-inset-bottom, 0px);--tabbar: 52px;--top: 44px;--filterbar: 34px;--statusbar: 24px}@media(prefers-color-scheme:dark){:root{--bg: #131316;--surface: #1a1a1e;--sunken: #212127;--raised: #1e1e23;--overlay: #1f1f25;--rail-bg: #16161a;--ink: #e8e8ec;--ink-2: #a6a6ae;--ink-3: #75757e;--ink-4: #62626b;--ink-inv: #17171a;--line: #2b2b32;--line-2: #34343c;--line-3: #45454f;--track: #2f2f37;--accent: #8fa9cc;--accent-2: #a8bcd8;--accent-soft: #1e2530;--accent-line: #33415a;--focus: #8fa9cc;--ok: #6fb28c;--ok-soft: #16241c;--ok-line: #2c4636;--warn: #c4a45f;--warn-soft: #262015;--warn-line: #473c22;--bad: #cc8272;--bad-soft: #271a17;--bad-line: #4a2f27;--star: #a495c9;--star-soft: #201d2b;--star-line: #3a3350;--hl: #3a3d23;--d-easy: #55555e;--d-mid: #7e7e88;--d-hard: #b0b0ba;--sh1: 0 1px 1px rgba(0,0,0,.4);--sh2: 0 10px 28px rgba(0,0,0,.5);--sh3: 0 18px 48px rgba(0,0,0,.6)}}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;height:100%}body{margin:0;height:100%;background:var(--bg);color:var(--ink);font:var(--t-base)/1.45 var(--f-sans);font-feature-settings:"ss01","cv11";letter-spacing:-.005em;overflow:hidden}#root{height:100%}a{color:inherit;text-decoration:none}h1,h2,h3,h4,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:0;padding:0}img,svg{display:block;max-width:100%}:focus{outline:none}:focus-visible{outline:2px solid var(--focus);outline-offset:1px;border-radius:var(--r1)}::selection{background:color-mix(in srgb,var(--focus) 28%,transparent)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.shell{display:grid;grid-template-columns:1fr;height:100%;overflow:hidden}.rail{display:none;flex-direction:column;gap:2px;background:var(--rail-bg);border-right:1px solid var(--line);padding:0 0 var(--s2);overflow-y:auto;-webkit-user-select:none;user-select:none}.rail-brand{display:flex;flex-direction:column;gap:2px;padding:12px 12px 10px;border-bottom:1px solid var(--line);margin-bottom:8px}.rail-brand .name{font-size:var(--t-sm);font-weight:650;letter-spacing:-.01em;color:var(--ink)}.rail-brand .meta{font-size:var(--t-2xs);color:var(--ink-3);font-variant-numeric:tabular-nums;font-family:var(--f-mono)}.rail-nav{display:flex;flex-direction:column;gap:1px;padding:0 var(--s2)}.rail-nav a{display:flex;align-items:center;gap:var(--s2);height:26px;padding:0 var(--s2);border-radius:var(--r1);color:var(--ink-2);font-size:var(--t-base);transition:background var(--dur1),color var(--dur1)}.rail-nav a .glyph{width:14px;flex:none;text-align:center;font:var(--t-sm)/1 var(--f-mono);opacity:.55}.rail-nav a .label{flex:1;min-width:0}.rail-nav a .ico{width:16px;height:16px;opacity:.75;flex:none}.rail-nav a .kbd{margin-left:auto;font:500 var(--t-2xs)/1 var(--f-mono);color:var(--ink-3);border:1px solid var(--line);border-radius:3px;padding:2px 5px;background:var(--bg)}.rail-nav a:hover{background:var(--sunken);color:var(--ink)}.rail-nav a.on{background:var(--accent-soft);color:var(--ink);font-weight:600}.rail-nav a.on .glyph,.rail-nav a.on .ico{opacity:1}.rail-section{margin-top:10px;padding:0 var(--s3) 6px;font-size:var(--t-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.rail-queues{display:flex;flex-direction:column;gap:1px;padding:0 var(--s3)}.rail-queues button{display:flex;align-items:center;gap:var(--s2);width:100%;padding:4px 6px;border-radius:var(--r1);color:var(--ink-2);font-size:var(--t-sm);transition:background var(--dur1),color var(--dur1)}.rail-queues button:hover{background:var(--sunken);color:var(--ink)}.rail-queues .dot{width:6px;height:6px;border-radius:2px;flex:none}.rail-queues .label{flex:1;text-align:left}.rail-queues .n{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--ink);font-variant-numeric:tabular-nums}.rail-meter{margin-top:auto;padding:10px var(--s3);border-top:1px solid var(--line)}.rail-meter .head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:5px}.rail-meter .head .k{font-size:var(--t-xs);color:var(--ink-3)}.rail-meter .head .v{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--ink);font-variant-numeric:tabular-nums}.rail-foot{padding:var(--s2) var(--s3) 0;font-size:var(--t-2xs);color:var(--ink-4);line-height:1.5;font-variant-numeric:tabular-nums;font-family:var(--f-mono)}.rail-cmd{display:flex;align-items:center;gap:8px;margin:4px 4px 8px;padding:7px 10px;border:1px solid var(--line);border-radius:var(--r1);background:var(--bg);color:var(--ink-3);font-size:var(--t-sm);cursor:pointer;transition:border-color var(--dur1),color var(--dur1)}.rail-cmd:hover{border-color:var(--line-2);color:var(--ink-2)}.rail-cmd .kbd{margin-left:auto;font:500 var(--t-2xs)/1 var(--f-mono);border:1px solid var(--line);border-radius:3px;padding:2px 5px;background:var(--surface)}.app{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.topbar{flex:none;display:flex;align-items:center;gap:10px;height:var(--top);padding:0 var(--s3);background:var(--surface);border-bottom:1px solid var(--line);z-index:20}.topbar-stats{display:flex;align-items:center;gap:14px;margin-left:auto;font-family:var(--f-mono);font-size:var(--t-sm);color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}.topbar-stats b{color:var(--ink);font-weight:600}.topbar-stats .sep{width:1px;height:14px;background:var(--line)}.topbar-title{font-size:var(--t-md);font-weight:600;color:var(--ink);white-space:nowrap}.topbar-sub{font-size:var(--t-xs);color:var(--ink-3);font-variant-numeric:tabular-nums;font-family:var(--f-mono)}.topbar .search{flex:1;max-width:480px;position:relative}.topbar .search input{width:100%;height:30px;padding:0 28px 0 30px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r1);font-size:var(--t-sm);color:var(--ink);transition:border-color var(--dur1),box-shadow var(--dur1)}.topbar .search input::placeholder{color:var(--ink-3)}.topbar .search input:focus{border-color:var(--focus);box-shadow:0 0 0 2px color-mix(in srgb,var(--focus) 22%,transparent);background:var(--surface)}.topbar .search .ico{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--ink-3);pointer-events:none}.topbar .search .hint{position:absolute;right:7px;top:50%;transform:translateY(-50%);font:500 var(--t-2xs)/1 var(--f-mono);color:var(--ink-3);border:1px solid var(--line);border-radius:3px;padding:2px 5px;background:var(--surface);pointer-events:none}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:6px}.filterbar{flex:none;display:flex;align-items:center;gap:6px;height:var(--filterbar);padding:0 var(--s3);background:var(--raised);border-bottom:1px solid var(--line);overflow:hidden;z-index:15}.filterbar .lead{flex:none;font-size:var(--t-xs);color:var(--ink-3);letter-spacing:.05em}.chip{display:flex;flex:none;align-items:center;gap:5px;white-space:nowrap;height:20px;padding:0 var(--s2);font-size:var(--t-md);border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--r1);transition:border-color var(--dur1),background var(--dur1)}.chip:hover{border-color:var(--line-3)}.chip .k{color:var(--ink-3);font-size:var(--t-xs)}.chip.on{border-color:var(--accent-line);background:var(--accent-soft)}.filterbar .clear{height:20px;padding:0 6px;font-size:var(--t-xs);color:var(--ink-3);border-radius:var(--r1)}.filterbar .clear:hover{color:var(--ink);background:var(--sunken)}.filterbar .tail{margin-left:auto;flex:none;display:flex;align-items:center;gap:10px;white-space:nowrap}.filterbar .tail .n{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--ink);font-variant-numeric:tabular-nums}.filterbar .tail .note{font-size:var(--t-xs);color:var(--ink-3)}.workspace{flex:1;min-height:0;display:grid;overflow:hidden;grid-template-columns:minmax(0,1fr)}.workspace.with-inspector{grid-template-columns:minmax(0,1fr) var(--panel)}.main{min-width:0;min-height:0;overflow:auto;padding:var(--s3);scroll-behavior:smooth}.main.dense{padding:var(--s3)}.main.flush{padding:0}.sidepanel{min-width:0;border-left:1px solid var(--line);background:var(--surface);overflow:auto;display:none}.sidepanel.open{display:block}.statusbar{flex:none;display:flex;align-items:center;gap:14px;height:var(--statusbar);padding:0 var(--s3);background:var(--rail-bg);border-top:1px solid var(--line);font-family:var(--f-mono);font-size:var(--t-xs);color:var(--ink-3);white-space:nowrap;overflow:hidden}.statusbar .where{color:var(--ink);flex:none}.statusbar .hint{overflow:hidden;text-overflow:ellipsis}.statusbar .toast{margin-left:auto;flex:none;max-width:40%;overflow:hidden;text-overflow:ellipsis}.dockbar{position:fixed;left:50%;bottom:38px;z-index:60;transform:translate(-50%);display:flex;align-items:center;gap:6px;padding:6px var(--s2);border-radius:var(--r3);white-space:nowrap}.dockbar.dark{background:#1d1d20;color:#f2f2f4;box-shadow:0 8px 26px #00000047}.dockbar.dark .count{font-family:var(--f-mono);font-size:var(--t-md);padding:0 var(--s1);flex:none}.dockbar.dark .sep{width:1px;height:16px;background:#3a3a40;flex:none}.dockbar.dark button{flex:none;height:24px;padding:0 9px;font-size:var(--t-md);color:#e6e6ea;background:#2b2b30;border:1px solid #3a3a40;border-radius:var(--r1);transition:background var(--dur1),color var(--dur1)}.dockbar.dark button:hover{background:#3a3a40;color:#fff}.dockbar.dark button.ghost{background:transparent;border:0;color:#a0a0a6}.dockbar.dark button.ghost:hover{color:#fff}.dockbar.light{background:var(--surface);border:1px solid var(--line-2);box-shadow:var(--sh2)}.dockbar.light .note{font-size:var(--t-sm);color:var(--ink-3);flex:none}.dockbar.light button{flex:none;height:24px;padding:0 9px;font-size:var(--t-md);color:var(--ink-2);background:var(--raised);border:1px solid var(--line);border-radius:var(--r1)}.dockbar.light button:hover{border-color:var(--line-3);color:var(--ink)}.dockbar.light button.primary{padding:0 11px;color:#fff;background:#2b2b2f;border-color:#2b2b2f}.dockbar.light button.primary:hover{background:var(--ink)}.tabbar{flex:none;display:flex;background:var(--surface);border-top:1px solid var(--line);padding-bottom:var(--safe);z-index:30}.tabbar a{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 2px 5px;font-size:var(--t-2xs);color:var(--ink-3)}.tabbar a .ico{width:18px;height:18px}.tabbar a.on{color:var(--ink);font-weight:600}@media(min-width:1024px){.shell{grid-template-columns:var(--rail) 1fr}.rail{display:flex}.tabbar{display:none}:root{--tabbar: 0px}.sidepanel.open{display:block}}.stack{display:flex;flex-direction:column;gap:var(--s3)}.hstack{display:flex;align-items:center;gap:var(--s2)}.spacer{margin-left:auto}.grow{flex:1;min-width:0}.split{display:grid;gap:var(--s3);grid-template-columns:1fr}@media(min-width:900px){.split.cols-2{grid-template-columns:1fr 1fr}.split.cols-3{grid-template-columns:1fr 1fr 1fr}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r2);padding:var(--s3) var(--s4)}.card.flush{padding:0;overflow:hidden}.card.pad-sm{padding:var(--s2) var(--s3)}.card+.card{margin-top:var(--s3)}.stack>.card+.card{margin-top:0}.sec{display:flex;align-items:center;gap:var(--s2);font-size:var(--t-xs);font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);margin-bottom:var(--s2)}.sec .n{font-weight:500;text-transform:none;letter-spacing:0;font-variant-numeric:tabular-nums;font-family:var(--f-mono);color:var(--ink-3)}.sec .spacer{font-weight:500;text-transform:none;letter-spacing:0}.muted{color:var(--ink-2)}.dim{color:var(--ink-3)}.small{font-size:var(--t-sm)}.xs{font-size:var(--t-xs)}.mono{font-family:var(--f-mono)}.num{font-variant-numeric:tabular-nums;font-family:var(--f-mono)}.trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.empty{text-align:center;color:var(--ink-3);padding:var(--s7) var(--s4);font-size:var(--t-md)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:30px;padding:0 11px;font:500 var(--t-sm)/1 var(--f-sans);color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r1);transition:background var(--dur1),border-color var(--dur1),transform var(--dur1);-webkit-user-select:none;user-select:none;white-space:nowrap}.btn:hover{background:var(--sunken)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn .kbd{font:500 var(--t-2xs)/1 var(--f-mono);color:var(--ink-3);border:1px solid var(--line);border-radius:3px;padding:1px 4px;background:var(--bg)}.btn-primary{background:var(--ink);border-color:var(--ink);color:var(--ink-inv)}.btn-primary:hover{background:color-mix(in srgb,var(--ink) 88%,transparent)}.btn-primary .kbd{color:color-mix(in srgb,var(--ink-inv) 70%,transparent);border-color:color-mix(in srgb,var(--ink-inv) 25%,transparent);background:transparent}.btn-ok{background:var(--ok-soft);border-color:var(--ok-line);color:var(--ok)}.btn-bad{background:var(--bad-soft);border-color:var(--bad-line);color:var(--bad)}.btn-ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn-ghost:hover{background:var(--sunken);color:var(--ink)}.btn-sm{height:24px;padding:0 8px;font-size:var(--t-xs)}.btn-lg{height:36px;padding:0 16px;font-size:var(--t-md);border-radius:var(--r2)}.btn-block{width:100%}.btn-icon{width:30px;height:30px;padding:0;color:var(--ink-2)}.btn-icon:hover{color:var(--ink)}.btn-row{display:flex;gap:var(--s2)}.btn-row>.btn{flex:1}.seg{display:inline-flex;padding:2px;gap:1px;background:var(--sunken);border:1px solid var(--line);border-radius:var(--r1)}.seg a,.seg button{flex:1;height:26px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;font:500 var(--t-sm)/1 var(--f-sans);color:var(--ink-2);border-radius:3px;white-space:nowrap;transition:background var(--dur1),color var(--dur1)}.seg a.on,.seg button.on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:var(--sh1)}.seg.block{display:flex;width:100%}.field{display:inline-flex;flex-direction:column;gap:3px;min-width:0}.field>label{font-size:var(--t-2xs);font-weight:550;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3);padding-left:1px}select,input[type=text],input[type=number],input[type=search]{height:28px;padding:0 8px;font-size:var(--t-sm);color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r1);cursor:pointer}select:focus,input:focus{border-color:var(--focus);box-shadow:0 0 0 2px color-mix(in srgb,var(--focus) 20%,transparent);outline:none}.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:var(--s2)}.filters .field,.filters select{width:100%}.chips{display:flex;flex-wrap:wrap;gap:5px}.chip{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 9px;font-size:var(--t-xs);color:var(--ink-2);background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-full);cursor:pointer;transition:background var(--dur1),border-color var(--dur1),color var(--dur1)}.chip:hover{background:var(--sunken)}.chip.on{color:var(--ink);background:var(--accent-soft);border-color:var(--accent-line);font-weight:600}.tag{display:inline-flex;align-items:center;height:18px;padding:0 6px;font-size:var(--t-2xs);font-weight:550;color:var(--ink-2);background:var(--sunken);border:1px solid var(--line);border-radius:var(--r-full);white-space:nowrap}.tag.ok{color:var(--ok);background:var(--ok-soft);border-color:var(--ok-line)}.tag.warn{color:var(--warn);background:var(--warn-soft);border-color:var(--warn-line)}.tag.bad{color:var(--bad);background:var(--bad-soft);border-color:var(--bad-line)}.pill{display:inline-block;font-size:var(--t-2xs);line-height:1.4;padding:1px 6px;border-radius:3px;background:var(--sunken);color:var(--ink-2);vertical-align:middle;font-variant-numeric:tabular-nums}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.bad{background:var(--bad-soft);color:var(--bad)}kbd,.kbd-key{display:inline-block;font:500 var(--t-2xs)/1 var(--f-mono);color:var(--ink-3);border:1px solid var(--line);border-bottom-width:2px;border-radius:3px;padding:2px 5px;background:var(--surface);vertical-align:middle}.rows{display:flex;flex-direction:column}.row{display:flex;align-items:center;gap:10px;height:32px;padding:0 8px;color:var(--ink);border-bottom:1px solid var(--line);min-width:0;cursor:pointer;transition:background var(--dur1)}.rows>.row:last-child{border-bottom:0}.row:hover,.row.hot{background:var(--sunken)}.row.on{background:var(--accent-soft)}.row .dot{width:6px;height:6px;border-radius:50%;flex:none}.row .w{font-weight:600;font-size:var(--t-md);font-family:var(--f-word);min-width:96px;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .ph{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--ink-3);min-width:0;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .g{flex:1;min-width:0;color:var(--ink-2);font-size:var(--t-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .meta{font-size:var(--t-2xs);color:var(--ink-3);white-space:nowrap;font-variant-numeric:tabular-nums;font-family:var(--f-mono)}.row .d{font-variant-numeric:tabular-nums;font-family:var(--f-mono);font-size:var(--t-xs);min-width:28px;text-align:right;font-weight:550}.row .st{font-size:var(--t-xs);width:14px;text-align:center;color:var(--ink-3);flex:none}.row .st.known{color:var(--ok)}.row .st.learning{color:var(--ink-2)}.row .st.starred{color:var(--warn)}.row .mk{flex:none;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:var(--t-xs);font-weight:600;color:var(--ink-3);border:1px solid var(--line);border-radius:var(--r1);background:transparent;opacity:0;transition:opacity var(--dur1),background var(--dur1),color var(--dur1)}.row:hover .mk,.row.hot .mk,.row .mk.on{opacity:1}.row .mk:hover{border-color:var(--ok-line);color:var(--ok)}.row .mk.known{background:var(--ok-soft);border-color:var(--ok-line);color:var(--ok);opacity:1}.row .mk.learning{background:var(--accent-soft);border-color:var(--accent-line);color:var(--ink-2);opacity:1}.row .mk.starred{background:var(--warn-soft);border-color:var(--warn-line);color:var(--warn);opacity:1}.thead{display:flex;align-items:center;gap:10px;height:26px;padding:0 8px;font-size:var(--t-2xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line);background:var(--raised);position:sticky;top:0;z-index:5}.thead span{min-width:0}.tiles{display:grid;gap:6px;grid-template-columns:repeat(auto-fill,minmax(128px,1fr))}@media(min-width:1100px){.tiles{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}.tile{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:1px;text-align:left;align-items:stretch;min-height:40px;padding:7px 10px 7px 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r1);color:var(--ink);transition:background var(--dur1),border-color var(--dur1),transform var(--dur1);-webkit-user-select:none;user-select:none}.tile:hover{border-color:var(--line-2);background:var(--raised)}.tile:active{transform:scale(.98)}.tile .tw{font-weight:600;font-size:var(--t-sm);line-height:1.3;font-family:var(--f-word);overflow-wrap:anywhere;padding-right:12px}.tile .tp,.tile .tg{font-size:var(--t-2xs);color:var(--ink-3);line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile .tp{font-family:var(--f-mono)}.tile[aria-pressed=true]{background:var(--ok-soft);border-color:var(--ok-line)}.tile[aria-pressed=true] .tw{color:var(--ok)}.tile[aria-pressed=true]:after{content:"✓";position:absolute;top:5px;right:7px;font-size:var(--t-xs);font-weight:700;color:var(--ok)}.tile.hot{outline:2px solid var(--focus);outline-offset:-1px}.actionbar{position:sticky;z-index:15;bottom:0;display:flex;align-items:center;gap:var(--s2);margin-top:var(--s3);padding:8px 10px;background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:var(--r2);box-shadow:var(--sh2)}.bar{height:4px;border-radius:2px;overflow:hidden;background:var(--track)}.bar>i{display:block;height:100%;background:var(--ink);transition:width var(--dur2) var(--ease)}.bar.thin{height:3px}.bar.ok>i{background:var(--ok)}.stats{display:grid;gap:6px;grid-template-columns:repeat(auto-fit,minmax(88px,1fr))}.stat{background:var(--sunken);border-radius:var(--r1);padding:10px 12px}.stat .n{font-size:var(--t-xl);font-weight:650;line-height:1.15;font-variant-numeric:tabular-nums;font-family:var(--f-mono);letter-spacing:-.02em}.stat .l{font-size:var(--t-2xs);color:var(--ink-3);margin-top:2px}.toast{position:fixed;z-index:100;left:50%;bottom:calc(var(--tabbar) + var(--safe) + 16px);transform:translate(-50%) translateY(8px);background:var(--ink);color:var(--ink-inv);padding:8px 14px;border-radius:var(--r-full);font-size:var(--t-sm);box-shadow:var(--sh2);opacity:0;pointer-events:none;transition:opacity var(--dur2),transform var(--dur2) var(--ease);max-width:min(90vw,360px);text-align:center}.toast.show{opacity:.96;transform:translate(-50%) translateY(0)}@media(min-width:1024px){.toast{left:auto;right:20px;bottom:20px;transform:translateY(8px)}.toast.show{transform:translateY(0)}}.cmd-backdrop{position:fixed;inset:0;z-index:90;background:#00000052;display:flex;justify-content:center;padding-top:min(18vh,140px);animation:fade-in var(--dur2) var(--ease)}.cmd{width:min(560px,calc(100vw - 24px));max-height:min(70vh,520px);background:var(--overlay);border:1px solid var(--line-2);border-radius:var(--r3);box-shadow:var(--sh2);display:flex;flex-direction:column;overflow:hidden;animation:rise-in var(--dur2) var(--ease)}.cmd-input{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line)}.cmd-input input{flex:1;height:auto;border:0;background:transparent;font-size:var(--t-lg);padding:0;box-shadow:none!important;outline:none}.cmd-input input:focus{box-shadow:none!important}.cmd-list{overflow:auto;padding:6px;flex:1}.cmd-group{padding:8px 10px 4px;font-size:var(--t-2xs);font-weight:650;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}.cmd-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r1);cursor:pointer;color:var(--ink)}.cmd-item:hover,.cmd-item.sel{background:var(--accent-soft)}.cmd-item .label{flex:1;min-width:0;font-size:var(--t-md);font-weight:500}.cmd-item .sub{font-size:var(--t-xs);color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.cmd-item .kbd{font:500 var(--t-2xs)/1 var(--f-mono);color:var(--ink-3);border:1px solid var(--line);border-radius:3px;padding:2px 5px;background:var(--bg)}.cmd-empty{padding:28px;text-align:center;color:var(--ink-3);font-size:var(--t-sm)}.cmd-foot{border-top:1px solid var(--line);padding:7px 12px;display:flex;gap:12px;font-size:var(--t-2xs);color:var(--ink-3)}.cmd-foot span{display:inline-flex;align-items:center;gap:4px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise-in{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.suggest{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:40;background:var(--overlay);border:1px solid var(--line-2);border-radius:var(--r2);box-shadow:var(--sh2);overflow:hidden;max-height:360px;overflow-y:auto}.suggest a,.suggest button{display:flex;gap:8px;align-items:baseline;width:100%;text-align:left;padding:7px 10px;color:var(--ink);border:0;background:transparent;cursor:pointer}.suggest a+a,.suggest button+button,.suggest a+button,.suggest button+a{border-top:1px solid var(--line)}.suggest a.sel,.suggest a:hover,.suggest button.sel,.suggest button:hover{background:var(--accent-soft)}.suggest b{min-width:96px;font-weight:600;font-size:var(--t-sm);font-family:var(--f-word)}.suggest .gloss{flex:1;min-width:0;color:var(--ink-2);font-size:var(--t-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggest .d{font-variant-numeric:tabular-nums;font-family:var(--f-mono);font-size:var(--t-xs)}.crumb{font-size:var(--t-xs);color:var(--ink-3);margin-bottom:var(--s3);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.crumb a:hover{color:var(--ink)}.crumb b{color:var(--ink-2);font-weight:550}.word-head{display:flex;align-items:flex-start;gap:var(--s3)}.word-head h1{font-size:var(--t-2xl);font-weight:650;line-height:1.15;letter-spacing:-.02em;font-family:var(--f-word);overflow-wrap:anywhere}.word-diff{text-align:center;flex:none;min-width:48px}.word-diff .n{font-size:var(--t-2xl);font-weight:650;line-height:1;font-variant-numeric:tabular-nums;font-family:var(--f-mono)}.word-diff .l{font-size:var(--t-2xs);color:var(--ink-3);margin-top:2px}.note{background:var(--sunken);border-radius:var(--r1);padding:8px 10px;margin-top:var(--s2);font-size:var(--t-sm);color:var(--ink-2);white-space:pre-wrap}.note b{color:var(--ink);font-weight:600}.factline{display:flex;flex-wrap:wrap;gap:10px 14px;margin-top:var(--s3);padding-top:var(--s3);border-top:1px solid var(--line);color:var(--ink-3);font-size:var(--t-xs)}.factline b{color:var(--ink);font-variant-numeric:tabular-nums;font-family:var(--f-mono);font-weight:600}.markrow{display:flex;gap:6px;margin-top:var(--s3)}.markrow .btn{flex:1}.markrow .btn.on[data-st=known]{background:var(--ok-soft);border-color:var(--ok-line);color:var(--ok)}.markrow .btn.on[data-st=learning]{background:var(--accent-soft);border-color:var(--accent-line);color:var(--ink)}.markrow .btn.on[data-st=starred]{background:var(--warn-soft);border-color:var(--warn-line);color:var(--warn)}.sent{display:block;color:var(--ink);border-left:2px solid var(--line);padding:6px 0 6px 12px;margin-bottom:10px;transition:border-color var(--dur1),background var(--dur1);border-radius:0 var(--r1) var(--r1) 0}.sent:last-child{margin-bottom:0}.sent:hover{border-left-color:var(--ink);background:var(--sunken)}.sent .loc{font-size:var(--t-2xs);color:var(--ink-3);margin-bottom:2px;font-variant-numeric:tabular-nums;font-family:var(--f-mono);display:flex;align-items:center;gap:6px}.sent .txt{font-size:var(--t-md);line-height:1.6}.sent mark{background:var(--hl);color:inherit;padding:0 2px;border-radius:2px;font-weight:650}mark.hl-hit{background:var(--hl);color:inherit;padding:0 2px;border-radius:2px;font-weight:700;box-decoration-break:clone;-webkit-box-decoration-break:clone}mark.hl-hit{animation:hl-flash 1.1s var(--ease) 1}@keyframes hl-flash{0%{background:color-mix(in srgb,var(--hl) 40%,transparent)}35%{background:var(--hl)}to{background:var(--hl)}}.hl-banner{display:flex;align-items:center;gap:10px;padding:8px 12px;margin-bottom:var(--s3);background:color-mix(in srgb,var(--hl) 35%,var(--surface));border:1px solid color-mix(in srgb,var(--hl) 55%,var(--line));border-radius:var(--r1);font-size:var(--t-sm)}.hl-banner .btn{margin-left:auto}.breakdown{display:grid;grid-template-columns:auto 1fr auto;gap:5px 10px;align-items:center;font-size:var(--t-xs);margin-top:var(--s2)}details.card>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:6px}details.card>summary::-webkit-details-marker{display:none}details.card>summary:before{content:"▸";color:var(--ink-3);font-size:var(--t-xs);transition:transform var(--dur1)}details.card[open]>summary:before{transform:rotate(90deg)}.flashcard{display:flex;flex-direction:column;min-height:min(48vh,340px);cursor:pointer;padding:var(--s5);-webkit-user-select:none;user-select:none;transition:border-color var(--dur1)}.flashcard:hover{border-color:var(--line-2)}.flashcard:focus-visible{border-color:var(--focus)}.fc-top{display:flex;align-items:center;gap:var(--s2);min-height:20px}.fc-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:4px;padding:var(--s4) 0}.fc-word{font-size:clamp(26px,5vw,var(--t-3xl));font-weight:650;line-height:1.15;word-break:break-word;letter-spacing:-.02em;font-family:var(--f-word)}.fc-gloss{margin-top:var(--s3);font-size:var(--t-lg);line-height:1.5;white-space:pre-wrap;min-height:2.4em;transition:filter var(--dur2),opacity var(--dur2)}.flashcard[data-revealed="0"] .fc-gloss{filter:blur(7px);opacity:.45}.fc-note{width:100%;margin-top:var(--s3);text-align:left;background:var(--sunken);border-radius:var(--r1);padding:8px 12px;font-size:var(--t-sm);color:var(--ink-2);white-space:pre-wrap}.fc-eg mark{background:var(--hl);color:inherit;padding:0 2px;border-radius:2px;font-weight:650}.fc-eg .loc{display:block;color:var(--ink-3);font-size:var(--t-2xs);margin-bottom:3px;font-family:var(--f-mono)}.fc-hint{text-align:center;margin-top:var(--s2)}.flashcard[data-revealed="1"] .fc-hint{visibility:hidden}.yeargrid{display:grid;gap:6px;grid-template-columns:repeat(auto-fill,minmax(84px,1fr))}.yr{display:flex;flex-direction:column;align-items:stretch;gap:3px;padding:10px 10px 8px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:var(--r1);text-align:center;transition:border-color var(--dur1),background var(--dur1),transform var(--dur1)}.yr:hover{border-color:var(--line-2);background:var(--raised)}.yr:active{transform:scale(.98)}.yr .y{font-size:var(--t-lg);font-weight:650;line-height:1.15;font-variant-numeric:tabular-nums;font-family:var(--f-mono)}.passage p{margin:0 0 var(--s3);line-height:1.7;font-size:var(--t-md)}.passage p:last-child{margin-bottom:0}.q{border-top:1px solid var(--line);padding:var(--s4) 0}.q:first-of-type{border-top:0;padding-top:0}.q.focus{background:var(--accent-soft);border-radius:var(--r2);margin:0 calc(-1 * var(--s3));padding:var(--s4) var(--s3);border-top-color:transparent}.q .stem{line-height:1.55;font-size:var(--t-md)}.q .no{font-weight:650;color:var(--ink-2);margin-right:8px;font-variant-numeric:tabular-nums;font-family:var(--f-mono)}.opts{margin-top:var(--s2)}.opt{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;margin:4px 0;border:1px solid var(--line);border-radius:var(--r1);cursor:pointer;line-height:1.5;font-size:var(--t-md);transition:border-color var(--dur1),background var(--dur1)}.opt:not(.static):hover{border-color:var(--line-2);background:var(--sunken)}.opt.static{cursor:default}.opt .L{font-weight:650;min-width:14px;color:var(--ink-2);font-family:var(--f-mono);font-size:var(--t-sm)}.opt.right{border-color:var(--ok-line);background:var(--ok-soft)}.opt.wrong{border-color:var(--bad-line);background:var(--bad-soft)}.opt.right .L{color:var(--ok)}.opt.wrong .L{color:var(--bad)}.opt.hot{outline:2px solid var(--focus);outline-offset:-1px}.expl{margin-top:8px;padding:10px 12px;background:var(--sunken);border-radius:var(--r1);font-size:var(--t-sm);color:var(--ink-2);white-space:pre-wrap}.action-card{display:flex;flex-direction:column;gap:6px;color:var(--ink);min-height:120px;transition:border-color var(--dur1),background var(--dur1)}.action-card:hover{border-color:var(--line-2);background:var(--raised)}.action-card .ttl{font-size:var(--t-lg);font-weight:650;letter-spacing:-.01em}.action-card .desc{font-size:var(--t-sm);color:var(--ink-2);line-height:1.45;flex:1}.action-card .foot{font-size:var(--t-xs);color:var(--ink-3);font-variant-numeric:tabular-nums;font-family:var(--f-mono);display:flex;align-items:center;gap:8px}.help-strip{display:flex;flex-wrap:wrap;gap:10px 16px;padding:8px 0;font-size:var(--t-xs);color:var(--ink-3)}.help-strip span{display:inline-flex;align-items:center;gap:5px}.tiergrid{display:grid;grid-template-columns:auto 1fr auto;gap:6px 12px;align-items:center;margin-top:var(--s3)}.skeleton{background:linear-gradient(90deg,var(--sunken) 25%,var(--raised) 50%,var(--sunken) 75%);background-size:200% 100%;animation:shimmer 1.2s infinite linear;border-radius:var(--r1);height:14px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.gap-1{gap:var(--s1)}.gap-2{gap:var(--s2)}.gap-3{gap:var(--s3)}.mt-1{margin-top:var(--s1)}.mt-2{margin-top:var(--s2)}.mt-3{margin-top:var(--s3)}.mt-4{margin-top:var(--s4)}.mb-2{margin-bottom:var(--s2)}.mb-3{margin-bottom:var(--s3)}.topsearch{position:relative;display:flex;align-items:center;width:400px;flex:none;height:26px;padding:0 52px 0 24px;background:var(--sunken);border:1px solid var(--line);border-radius:var(--r2);color:var(--ink-3);font-size:var(--t-sm);text-align:left;transition:border-color var(--dur1),background var(--dur1)}.topsearch:hover,.topsearch:focus-visible{border-color:var(--accent);background:var(--surface)}.topsearch .ico{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--ink-3);font-size:var(--t-sm)}.topsearch .ph{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topsearch .hint{position:absolute;right:6px;top:50%;transform:translateY(-50%);font:500 var(--t-2xs)/1 var(--f-mono);color:var(--ink-3);border:1px solid var(--line-2);border-radius:3px;padding:2px 4px;background:var(--surface)}.wb{display:grid;gap:10px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r2);overflow:hidden}.kpi{background:var(--surface);padding:10px var(--s3)}.kpi .l{font-size:var(--t-xs);color:var(--ink-3);letter-spacing:.04em}.kpi .n{font-family:var(--f-mono);font-size:var(--t-2xl);font-weight:600;line-height:1.25;font-variant-numeric:tabular-nums}.kpi .s{font-size:var(--t-xs);color:var(--ink-4)}.wb-split{display:grid;gap:10px;align-items:start;grid-template-columns:minmax(0,1fr) 300px}@media(max-width:1240px){.wb-split{grid-template-columns:minmax(0,1fr)}}.wb-side{display:grid;gap:10px}.panel{border:1px solid var(--line);border-radius:var(--r2);background:var(--surface);overflow:hidden;container-type:inline-size}.panel.pad{padding:10px}.panel-head{display:flex;align-items:center;gap:var(--s2);height:30px;padding:0 10px;border-bottom:1px solid var(--line);background:var(--raised)}.panel-head .t{font-size:var(--t-sm);font-weight:600}.panel-head .s{font-size:var(--t-xs);color:var(--ink-3)}.panel-head .go{margin-left:auto;height:20px;padding:0 var(--s2);font-size:var(--t-sm);color:#fff;background:#2b2b2f;border:1px solid #2b2b2f;border-radius:var(--r1)}.panel-head .go:hover{background:var(--ink)}.panel-title{font-size:var(--t-sm);font-weight:600;margin-bottom:var(--s2)}.hrow{display:grid;align-items:center;gap:var(--s2);grid-template-columns:20px 150px minmax(0,1fr) 52px 48px 74px;height:27px;padding:0 10px;border-bottom:1px solid var(--sunken);cursor:pointer;font-size:var(--t-base)}.hrow:last-child{border-bottom:0}.hrow:hover{background:var(--accent-soft)}.hrow .st{font-size:var(--t-sm);text-align:center}.hrow .w{font-family:var(--f-mono);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hrow .g{color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hrow .num{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--ink-3);text-align:right;font-variant-numeric:tabular-nums}.hrow .d{display:flex;align-items:center;gap:5px;justify-content:flex-end}.hrow .d .bar{width:40px}.hrow .d b{font-family:var(--f-mono);font-size:var(--t-sm);font-weight:400;width:22px;text-align:right;font-variant-numeric:tabular-nums}.hrow-skel{padding:var(--s3)}@container (max-width: 560px){.hrow{grid-template-columns:20px 132px minmax(0,1fr) 48px 74px}.hrow .num.span{display:none}}@container (max-width: 440px){.hrow{grid-template-columns:20px 118px minmax(0,1fr) 74px}.hrow .num{display:none}}.resume{display:flex;align-items:center;gap:var(--s2);width:100%;padding:6px 7px;margin-bottom:var(--s1);border:1px solid var(--line);background:var(--raised);border-radius:var(--r2);text-align:left}.resume:hover{border-color:var(--line-3);background:var(--surface)}.resume .grow{flex:1;min-width:0}.resume .t{display:block;font-size:var(--t-sm);color:var(--ink)}.resume .s{display:block;font-size:var(--t-xs);color:var(--ink-3)}.resume .cta{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--accent)}.keyrow{display:flex;align-items:center;gap:var(--s2);padding:2px 0;font-size:var(--t-sm);color:var(--ink-2)}.keyrow kbd{font:var(--t-2xs)/1.6 var(--f-mono);border:1px solid var(--line-2);border-radius:3px;padding:1px 5px;background:var(--raised);color:var(--ink);min-width:22px;text-align:center}.insp-head{position:sticky;top:0;z-index:2;display:flex;align-items:flex-start;gap:var(--s2);padding:9px var(--s3);background:var(--raised);border-bottom:1px solid var(--line)}.insp-head .grow{flex:1;min-width:0}.insp-head .w{display:flex;align-items:center;gap:6px;font-family:var(--f-mono);font-size:var(--t-xl);font-weight:600;overflow-wrap:anywhere}.insp-head .w .say{flex:none;width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:var(--t-sm);color:var(--ink-3);border:1px solid var(--line);border-radius:var(--r1);background:var(--surface)}.insp-head .w .say:hover{color:var(--accent);border-color:var(--accent-line)}.insp-head .ph{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--ink-3)}.insp-diff{text-align:right;flex:none}.insp-diff .n{font-family:var(--f-mono);font-size:var(--t-xl);font-weight:600;line-height:1.1}.insp-diff .l{font-size:var(--t-2xs);color:var(--ink-4)}.insp-body{padding:10px var(--s3)}.insp-gloss{margin:9px 0 0;font-size:var(--t-base);line-height:1.6;white-space:pre-wrap}.insp-note{margin-top:var(--s2);background:var(--bg);border-radius:var(--r2);padding:7px 9px;font-size:var(--t-sm);color:var(--ink-2);line-height:1.6}.insp-note b{color:var(--ink)}.insp-facts{display:flex;flex-wrap:wrap;gap:var(--s3);margin-top:9px;padding-top:var(--s2);border-top:1px solid var(--sunken);font-family:var(--f-mono);font-size:var(--t-xs);color:var(--ink-3)}.insp-facts b{color:var(--ink)}.insp-marks{display:flex;gap:var(--s1);margin-top:9px}.insp-marks button{flex:1;height:26px;font-size:var(--t-md);border:1px solid var(--line);border-radius:var(--r1);background:var(--surface);color:var(--ink-2)}.insp-marks button:hover{border-color:var(--line-3);color:var(--ink)}.insp-marks button.on{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-2);font-weight:600}.insp-sec{display:flex;align-items:baseline;gap:6px;margin:var(--s3) 0 6px}.insp-sec .t{font-size:var(--t-xs);letter-spacing:.05em;color:var(--ink-3);text-transform:uppercase}.insp-sec .n{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--ink-4)}.insp-sec .more{margin-left:auto;font-size:var(--t-sm);color:var(--accent)}.insp-sent{display:block;border-left:2px solid var(--line);padding:5px 0 5px 9px;margin-bottom:var(--s2)}.insp-sent:hover{border-left-color:var(--accent)}.insp-sent .loc{font-family:var(--f-mono);font-size:var(--t-2xs);color:var(--ink-4);margin-bottom:2px}.insp-sent .txt{font-size:var(--t-md);line-height:1.65;color:var(--ink-2)}.insp-sent mark{background:var(--hl);color:inherit;padding:0 2px;border-radius:2px;font-weight:600}.insp-none{font-size:var(--t-sm);color:var(--ink-3);padding:var(--s2) 0}.insp-empty{padding:28px var(--s3);text-align:center;font-size:var(--t-sm);color:var(--ink-3)}.insp-empty .sub{margin-top:6px;font-size:var(--t-xs);color:var(--ink-4)}.lhead,.lrow{display:grid;align-items:center;gap:var(--s2);grid-template-columns:26px 22px 168px minmax(0,1fr) 74px 54px 50px 84px;padding:0 var(--s3)}.lhead{position:sticky;top:0;z-index:2;height:26px;background:var(--raised);border-bottom:1px solid var(--line);font-size:var(--t-xs);color:var(--ink-3);letter-spacing:.04em}.lhead .r,.lrow .num{text-align:right}.lrow{height:28px;border-bottom:1px solid var(--sunken);cursor:pointer;font-size:var(--t-base);background:var(--surface)}.lrow:hover,.lrow.cur{background:var(--accent-soft)}.lrow.sel{background:var(--raised)}.lrow .w{font-family:var(--f-mono);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lrow .g{color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lrow .tier{font-size:var(--t-xs);color:var(--ink-3);white-space:nowrap;overflow:hidden}.lrow .num{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--ink-2);font-variant-numeric:tabular-nums}.lrow .d{display:flex;align-items:center;gap:5px;justify-content:flex-end}.lrow .d .bar{width:40px}.lrow .d b{font-family:var(--f-mono);font-size:var(--t-sm);font-weight:400;width:22px;text-align:right;font-variant-numeric:tabular-nums}.lrow .box{width:14px;height:14px;display:flex;align-items:center;justify-content:center;font-size:9px;border-radius:3px;color:#fff;border:1px solid var(--line-3);background:var(--surface)}.lrow .box.on{border-color:var(--accent);background:var(--accent)}.lrow .stbtn{width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:var(--t-sm);border-radius:3px}.lrow .stbtn:hover{background:var(--sunken)}.tiles{display:grid;gap:5px;grid-template-columns:repeat(auto-fill,minmax(128px,1fr))}.tile{position:relative;display:flex;flex-direction:column;gap:1px;align-items:stretch;text-align:left;overflow:hidden;padding:6px var(--s2) 6px 10px;min-height:42px;border:1px solid var(--line);background:var(--surface);border-radius:var(--r2)}.tile.on{border-color:var(--ok-line);background:var(--ok-soft)}.tile .spine{position:absolute;left:0;top:0;bottom:0;width:2px}.tile .w{font-family:var(--f-mono);font-size:var(--t-base);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile .g{font-size:var(--t-2xs);color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recite{display:grid;gap:10px;align-items:start;grid-template-columns:minmax(0,1fr) 268px}@media(max-width:1180px){.recite{grid-template-columns:minmax(0,1fr)}}.seg{display:flex;background:var(--sunken);border:1px solid var(--line);border-radius:var(--r2);padding:2px;gap:2px}.seg button{height:22px;padding:0 var(--s3);font-size:var(--t-md);color:var(--ink-2);border-radius:var(--r1)}.seg button.on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:var(--sh1)}.card-face{border:1px solid var(--line);border-radius:var(--r2);background:var(--surface);min-height:300px;display:flex;flex-direction:column;padding:14px;cursor:pointer}.card-face .meta{display:flex;align-items:center;gap:var(--s2)}.card-face .meta .tag2{font-size:var(--t-xs);color:var(--ink-3);border:1px solid var(--line);border-radius:3px;padding:1px 6px}.card-face .meta .s{font-size:var(--t-xs);color:var(--ink-3)}.card-face .meta .d{margin-left:auto;font-family:var(--f-mono);font-size:var(--t-sm);font-weight:600}.card-face .mid{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s1);padding:16px 0}.card-face .word{display:flex;align-items:center;gap:var(--s2);font-family:var(--f-mono);font-size:var(--t-3xl);font-weight:600;letter-spacing:-.01em}.card-face .phon{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--ink-3)}.card-face .gloss{margin-top:10px;font-size:var(--t-lg);line-height:1.55;text-align:center;max-width:440px;transition:filter .18s,opacity .18s}.card-face .gloss.hidden{filter:blur(7px);opacity:.45}.card-face .back{border-top:1px solid var(--sunken);padding-top:var(--s2)}.card-face .back .root{font-size:var(--t-sm);color:var(--ink-2)}.card-face .back .root b{color:var(--ink)}.card-face .back .eg{margin-top:6px;background:var(--bg);border-radius:var(--r2);padding:var(--s2) 9px;font-size:var(--t-md);line-height:1.6;color:var(--ink-2)}.card-face .back .eg .loc{display:block;font-family:var(--f-mono);font-size:var(--t-2xs);color:var(--ink-3);margin-bottom:2px}.card-face .back .eg mark{background:var(--hl);color:inherit;padding:0 2px;border-radius:2px;font-weight:600}.card-face .flip{text-align:center;font-size:var(--t-sm);color:var(--ink-4)}.card-face .flip.gone{visibility:hidden}.grades{display:flex;gap:6px;margin-top:var(--s2)}.grades button{height:34px;font-size:var(--t-base);border:1px solid var(--line-2);border-radius:var(--r2);background:var(--surface);color:var(--ink-2)}.grades button.wide{flex:1}.grades button.narrow{width:74px;font-size:var(--t-md)}.grades button kbd{font-family:var(--f-mono);opacity:.6;background:none;border:0;padding:0}.grades .no{color:var(--bad);background:var(--bad-soft);border-color:var(--bad-line)}.grades .yes{color:var(--ok);background:var(--ok-soft);border-color:var(--ok-line)}.grades button:hover{filter:brightness(.97)}.qlist{border:1px solid var(--line);border-radius:var(--r2);background:var(--surface);overflow:hidden}.qlist .h{height:26px;display:flex;align-items:center;padding:0 10px;border-bottom:1px solid var(--line);background:var(--raised);font-size:var(--t-sm);font-weight:600}.qrow{display:flex;align-items:center;gap:var(--s2);height:24px;padding:0 10px;border-bottom:1px solid var(--sunken)}.qrow.cur{background:var(--accent-soft)}.qrow .i{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--ink-4);width:20px;font-variant-numeric:tabular-nums}.qrow .w{font-family:var(--f-mono);font-size:var(--t-sm);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qrow .mk{font-size:var(--t-sm);width:14px;text-align:center}.saybar{display:flex;align-items:center;gap:var(--s1)}.saybar button{height:22px;padding:0 var(--s2);font-size:var(--t-sm);border:1px solid var(--line);border-radius:var(--r1);background:var(--surface);color:var(--ink-2)}.saybar button.on{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-2)}.saybar .blocked{font-size:var(--t-xs);color:var(--warn)}.yeargrid{display:grid;gap:var(--s1);grid-template-columns:repeat(auto-fill,minmax(76px,1fr))}.yr{display:flex;flex-direction:column;align-items:stretch;gap:3px;padding:7px var(--s2);text-align:center;border:1px solid var(--line);background:var(--raised);border-radius:var(--r2)}.yr:hover{border-color:var(--line-3);background:var(--surface)}.yr.on{border-color:var(--accent-line);background:var(--accent-soft)}.yr .y{font-family:var(--f-mono);font-size:var(--t-md);font-weight:600;font-variant-numeric:tabular-nums}.prow{display:flex;align-items:center;gap:10px;height:30px;padding:0 10px;border-bottom:1px solid var(--sunken);font-size:var(--t-base);background:var(--surface)}.prow:last-child{border-bottom:0}.prow:hover{background:var(--accent-soft)}.prow .kind{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--ink-3);width:52px;flex:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prow .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prow .qs,.prow .acc{font-family:var(--f-mono);font-size:var(--t-xs);text-align:right;flex:none;font-variant-numeric:tabular-nums}.prow .qs{width:64px;color:var(--ink-2)}.prow .acc{width:70px}.prow .bar{width:56px;flex:none}
