:root{--paper: #fbf8f2;--paper-2: #f4eee3;--paper-3: #eae2d3;--surface: #ffffff;--ink: #1c1a17;--ink-2: #4a463e;--ink-3: #8b8577;--rule: #e4dccb;--rule-2: #d3c9b4;--rule-3: #bfb39a;--accent: #1f4b6e;--accent-d: #163a57;--accent-soft: #e9f0f6;--accent-soft-2: #d9e6f0;--accent-line: #b7cbdb;--accent-line-2: #8fb0cb;--ok: #2f7a4f;--ok-bg: #e4f0e8;--ok-line: #c3dccb;--warn: #a9741a;--warn-bg: #f8eeda;--warn-line: #e6d5a9;--miss: #c0392b;--miss-bg: #fae7e4;--miss-line: #efc9c2;--h-sm: 28px;--h-md: 36px;--h-lg: 44px;--r: 6px;--r-sm: 4px;--rail-w: 62px;--rail-w-open: 238px;--rail-hover-speed: .9s;--pane-max: 1120px;--shadow: 0 1px 0 rgba(28, 26, 23, .03), 0 14px 28px -22px rgba(28, 26, 23, .5);--shadow-pop: 0 16px 34px -18px rgba(28, 26, 23, .42);--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", Roboto, Helvetica, Arial, sans-serif;--serif: Georgia, "Iowan Old Style", "Times New Roman", "Songti SC", serif;--mono: "SF Mono", ui-monospace, Consolas, "Courier New", monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--sans);font-size:14px;line-height:1.6;color:var(--ink);background-color:var(--paper);background-image:radial-gradient(rgba(28,26,23,.045) .8px,transparent .8px);background-size:22px 22px;-webkit-font-smoothing:antialiased}button{font-family:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}h1,h2,h3,h4{color:var(--ink)}.shell{display:flex;align-items:flex-start;min-height:100vh}.rail{position:sticky;top:0;flex:0 0 auto;width:var(--rail-w);height:100vh;overflow:hidden;background:var(--paper-2);border-right:1px solid var(--rule);padding:14px 10px 12px;display:flex;flex-direction:column;transition:width .22s cubic-bezier(.4,0,.2,1),box-shadow .22s ease;z-index:40}.shell.rail-open .rail{width:var(--rail-w-open);box-shadow:10px 0 26px -20px #1c1a178c}.rail-brand{display:flex;align-items:center;gap:9px;height:44px;padding:0;margin:0 -1px 14px;color:var(--ink);text-decoration:none;white-space:nowrap}.rail-brand:hover{text-decoration:none}.brand-mark{flex:0 0 44px;width:44px;height:44px;display:block;object-fit:contain}.brand-text{display:flex;flex-direction:column;line-height:1.2}.brand-text b{font-family:var(--serif);font-size:16px;letter-spacing:.01em}.rail-nav{display:flex;flex-direction:column;gap:3px}.rail-item{position:relative;isolation:isolate;display:flex;align-items:center;gap:11px;height:40px;padding:0 10px;border:1px solid transparent;border-radius:var(--r);color:var(--ink-2);font-size:13.5px;font-weight:600;white-space:nowrap;text-decoration:none;cursor:pointer;background:none;width:100%;text-align:left;overflow:hidden}.rail-item:before{content:"";position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:#ffffffc7;transform:scaleX(0);transform-origin:left center;transition:transform var(--rail-hover-speed) cubic-bezier(.22,1,.36,1)}.rail-item:not(.active):hover:before{transform:scaleX(1)}.rail-item:not(.active):hover{color:var(--ink);text-decoration:none}.rail-item.active{background:var(--surface);border-color:var(--rule-2);color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.rail-item svg{flex:0 0 18px;width:18px;height:18px}.rail-text{flex:1;min-width:0;opacity:0;transform:translate(-6px);transition:opacity .16s ease .02s,transform .16s ease .02s}.shell.rail-open .rail-text{opacity:1;transform:none}.rail-foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--rule)}.rail-badge{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink-3);background:var(--paper-3);border-radius:3px;padding:1px 6px}.pane{flex:1;min-width:0;padding:20px 30px 72px}.pane-bar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:4px 0 16px;margin-bottom:6px;background:linear-gradient(var(--paper) 72%,rgba(251,248,242,0))}.pane-bar-in{flex:1;min-width:0;display:flex;align-items:center;gap:12px;flex-wrap:wrap;max-width:var(--pane-max);margin-inline:auto;transition:max-width .22s cubic-bezier(.4,0,.2,1)}.pane-body{max-width:var(--pane-max);margin-inline:auto;transition:max-width .22s cubic-bezier(.4,0,.2,1)}.shell.rail-open .pane-bar-in,.shell.rail-open .pane-body{max-width:calc(100vw - var(--rail-w-open) - 60px)}@media(min-width:1500px){:root{--pane-max: 1280px}}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-bottom:14px;margin-bottom:18px;border-bottom:1px solid var(--rule)}.page-head h2{margin:0;font-size:23px;font-weight:700;letter-spacing:-.012em}.page-head .desc{margin:5px 0 0;font-size:12.5px;color:var(--ink-3)}.eyebrow{display:block;margin-bottom:6px;font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}.sub-head{display:flex;align-items:center;gap:8px;margin:16px 0 8px;font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--ink-3)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--h-md);padding:0 15px;border:1px solid var(--rule-2);border-radius:var(--r);background:var(--surface);color:var(--ink);font-family:var(--sans);font-size:13px;font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;transition:background .14s ease,border-color .14s ease,color .14s ease}.btn:hover{background:var(--paper-2);border-color:var(--rule-3)}.btn:active{background:var(--paper-3)}.btn.primary{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent)}.btn.primary:hover{background:var(--accent-soft-2);border-color:var(--accent-line-2);color:var(--accent-d)}.btn.soft{background:#f2f5f8;border-color:#dbe2e9;color:var(--ink-2)}.btn.soft:hover{background:#e7edf3;border-color:#c6d1dc}.btn.ghost{background:var(--paper-2);border-color:var(--rule);color:var(--ink-2)}.btn.ghost:hover{background:var(--paper-3);border-color:var(--rule-2);color:var(--ink)}.btn.ok{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok)}.btn.ok:hover{background:#d6e9dd;border-color:#a9cdb6}.btn.warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn)}.btn.warn:hover{background:#f2e4c8;border-color:#dcc38c}.btn.danger{background:var(--miss-bg);border-color:var(--miss-line);color:var(--miss)}.btn.danger:hover{background:#f5d9d4;border-color:#e3b2aa}.btn.plain{background:transparent;border-color:transparent;color:var(--ink-3)}.btn.plain:hover{background:var(--paper-3);border-color:var(--rule);color:var(--ink)}.btn:disabled,.btn[disabled]{opacity:.45;cursor:not-allowed}.btn:disabled:hover,.btn[disabled]:hover{background:var(--surface);border-color:var(--rule-2);color:var(--ink)}.btn.primary:disabled:hover{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent)}.btn.sm{height:var(--h-sm);padding:0 11px;font-size:12px;border-radius:var(--r-sm)}.btn.lg{height:var(--h-lg);padding:0 22px;font-size:14px}.btn.block{display:flex;width:100%}.btn.on{background:var(--accent-soft-2);border-color:var(--accent-line-2);color:var(--accent-d)}.btn.ghost.on{background:var(--paper-3);border-color:var(--rule-3);color:var(--ink)}.row{display:flex;align-items:center;gap:8px}.row.wrap{flex-wrap:wrap}.row.end{justify-content:flex-end}.row.between{justify-content:space-between}.row.stretch{align-items:stretch}.col{display:flex;flex-direction:column;gap:10px}.spacer{flex:1;min-width:0}.eq{display:grid;gap:10px}.eq.c2{grid-template-columns:repeat(2,1fr)}.eq.c3{grid-template-columns:repeat(3,1fr)}.eq.c4{grid-template-columns:repeat(4,1fr)}.seg{display:inline-flex;padding:3px;gap:3px;background:var(--paper-3);border:1px solid var(--rule);border-radius:var(--r)}.seg>button{height:var(--h-sm);padding:0 14px;border:1px solid transparent;border-radius:var(--r-sm);background:transparent;color:var(--ink-2);font-size:12.5px;font-weight:600;white-space:nowrap;cursor:pointer}.seg>button:hover{background:#ffffffa8}.seg>button.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent)}.seg.plain>button.on{background:var(--surface);border-color:var(--rule-2);color:var(--ink)}.seg>button.sort-dir{display:inline-flex;align-items:center;justify-content:center;padding:0 10px}.input,select.input,textarea.input{width:100%;height:var(--h-md);padding:0 12px;border:1px solid var(--rule-2);border-radius:var(--r);background:var(--surface);color:var(--ink);font-family:inherit;font-size:13.5px;outline:none;transition:border-color .14s ease,box-shadow .14s ease}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #1f4b6e1f}.input::placeholder{color:var(--ink-3)}textarea.input{height:auto;min-height:132px;padding:11px 12px;resize:vertical;line-height:1.65;font-family:var(--mono);font-size:12.5px}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;padding-right:30px}.input.sm{height:var(--h-sm);font-size:12.5px}.input.mono{font-family:var(--mono);font-size:12.5px}.field-labeled{display:flex;flex-direction:column;gap:6px}.field-label{font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}.card{background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:18px}.card+.card{margin-top:14px}.card.tight{padding:13px 16px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:-2px 0 14px;padding-bottom:11px;border-bottom:1px solid var(--rule)}.card-head h3{margin:0;font-size:14px;font-weight:700}.card-head .meta{font-size:11.5px;color:var(--ink-3);font-family:var(--mono)}.cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}.cols>*+*,.cols>.card+.card{margin-top:0}.divider{height:1px;background:var(--rule);margin:14px 0}.divider.dashed{background:none;border-top:1px dashed var(--rule)}.tag{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:3px;background:var(--paper-3);color:var(--ink-2);font-size:11px;font-weight:700;letter-spacing:.02em;white-space:nowrap}.tag.ok{background:var(--ok-bg);color:var(--ok)}.tag.warn{background:var(--warn-bg);color:var(--warn)}.tag.miss{background:var(--miss-bg);color:var(--miss)}.tag.ink{background:var(--accent-soft);color:var(--accent)}.tag.line{background:var(--surface);border:1px solid var(--rule-2);color:var(--ink-3)}.tag.mono{font-family:var(--mono);font-weight:500;letter-spacing:0}.tag.tap{font-family:var(--sans);cursor:pointer;transition:border-color .14s ease,color .14s ease}.tag.tap:hover{border-color:var(--rule-3);color:var(--ink-2)}.tag.tap.mono{font-family:var(--mono)}.tag.status-toggle{border:none;line-height:inherit;cursor:pointer}.kv{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed var(--rule)}.kv:last-child{border-bottom:none}.kv .k{font-size:12.5px;color:var(--ink-3)}.kv .v{font-size:13px;font-weight:600;font-family:var(--mono);text-align:right}.kv .v.wide{font-family:var(--sans);font-weight:600}.val{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--ink);text-align:right;white-space:nowrap}.val.url{max-width:340px;overflow:hidden;text-overflow:ellipsis}.hint{font-size:12px;color:var(--ink-3)}.mono{font-family:var(--mono)}.ai-note{background:var(--accent-soft);border:1px solid var(--accent-line);border-left:3px solid var(--accent-line-2);border-radius:6px;padding:9px 12px;margin-bottom:14px;color:var(--accent-d);font-size:12.5px;line-height:1.75;white-space:pre-wrap;word-break:break-word}.ai-note .kk{display:inline-block;margin-right:6px;font-weight:700;color:var(--accent)}.sentence{font-family:var(--serif);font-size:19px;line-height:2;color:var(--ink);margin:0}.sentence+.sentence{margin-top:14px}.trans{font-size:12.5px;color:var(--ink-3);margin:5px 0 0;font-family:var(--sans)}.token{padding:1px 3px;border-radius:3px;cursor:pointer}.token.ok{background:var(--ok-bg);color:var(--ok)}.token.ambiguous{background:var(--warn-bg);color:var(--warn);text-decoration:underline dotted;text-underline-offset:3px}.token.missing{background:var(--miss-bg);color:var(--miss);text-decoration:underline dotted;text-underline-offset:3px}.token.typo{color:var(--ink-3);text-decoration:line-through}.token.unknown{background:var(--paper-2)}.token.punct{color:var(--ink-3);cursor:default}.token:not(.punct):hover{background:var(--accent-soft)}.token-wrap{position:relative;display:inline-block}.token-map{position:absolute;left:50%;bottom:calc(100% + 7px);transform:translate(-50%);white-space:nowrap;background:var(--ink);color:#f7f3ea;font-family:var(--mono);font-size:11px;padding:6px 9px;border-radius:var(--r-sm);z-index:20;pointer-events:none;box-shadow:var(--shadow-pop)}.flash{position:relative;background:var(--surface);border:1px solid var(--rule-2);border-radius:10px;box-shadow:var(--shadow);padding:56px 28px 48px;text-align:center}.flash:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1px solid var(--rule);border-radius:4px;pointer-events:none}.flash .idx{position:absolute;top:18px;left:20px;font-family:var(--mono);font-size:11px;color:var(--ink-3);letter-spacing:.06em}.flash .corner{position:absolute;top:18px;right:20px}.auto-toggle{display:inline-flex;align-items:center;gap:7px;height:26px;padding:0 10px 0 7px;border:1px solid var(--rule-2);border-radius:999px;background:var(--surface);color:var(--ink-3);font-family:var(--sans);font-size:11.5px;font-weight:700;letter-spacing:.02em;line-height:1;cursor:pointer;transition:background .16s ease,border-color .16s ease,color .16s ease}.auto-toggle:hover{border-color:var(--rule-3);color:var(--ink-2)}.auto-toggle .knob{position:relative;flex:0 0 auto;width:26px;height:14px;border-radius:999px;background:var(--rule-2);transition:background .16s ease}.auto-toggle .knob:after{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:999px;background:var(--surface);box-shadow:0 1px 2px #1c1a1747;transition:transform .16s ease}.auto-toggle.on{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok)}.auto-toggle.on:hover{background:#d6e9dd;border-color:#a9cdb6}.auto-toggle.on .knob{background:var(--ok)}.auto-toggle.on .knob:after{transform:translate(12px)}.flash .word{font-family:var(--serif);font-size:52px;font-weight:700;letter-spacing:-.015em;line-height:1.1;word-break:break-word}.flash .phon{font-family:var(--mono);font-size:13.5px;color:var(--ink-3);margin-top:10px}.flash .reveal{margin-top:28px;padding-top:22px;border-top:1px solid var(--rule)}.flash .reveal .pos{font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--accent);text-transform:uppercase}.flash .reveal .mean{font-size:17px;margin-top:7px}.flash .reveal .eg{font-family:var(--serif);font-size:14.5px;color:var(--ink-2);margin-top:14px;line-height:1.75}.flash .keyhint{font-family:var(--mono);font-size:11px;color:var(--ink-3);margin-top:20px}.study-flash,.review-flash{min-height:320px;display:flex;flex-direction:column;justify-content:center;align-items:center}.study-flash .word,.study-flash .phon,.review-flash .word,.review-flash .phon,.study-flash .reveal,.review-flash .reveal{flex:0 0 auto}.flash.center{max-width:740px;margin:0 auto}.progress{height:4px;background:var(--paper-3);border-radius:999px;overflow:hidden}.progress>i{display:block;height:100%;background:var(--accent);border-radius:999px;transition:width .25s ease}.word-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.word-card{display:flex;flex-direction:column;gap:6px;background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:14px 15px;color:inherit;text-decoration:none;text-align:left;transition:border-color .14s ease,transform .14s ease,box-shadow .14s ease}.word-card:hover{text-decoration:none;border-color:var(--accent-line-2);transform:translateY(-2px);box-shadow:var(--shadow)}.word-card .w{font-family:var(--serif);font-size:21px;font-weight:700;letter-spacing:-.01em;word-break:break-all}.word-card .p{font-family:var(--mono);font-size:11.5px;color:var(--ink-3)}.word-card .m{font-size:12.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.word-card .f{display:flex;align-items:center;gap:8px;margin-top:6px;padding-top:10px;border-top:1px dashed var(--rule)}.word-card .f .n{font-family:var(--mono);font-size:11px;color:var(--ink-3);white-space:nowrap}.word-card .f .n b{color:var(--ink-2);font-weight:600}.word-card.pickable{position:relative;cursor:pointer;-webkit-user-select:none;user-select:none}.word-card.pickable:hover{transform:none;box-shadow:none;border-color:var(--accent-line)}.word-card.pickable .w{padding-right:26px}.word-card.picked{border-color:var(--accent-line-2);background:var(--accent-soft)}.word-card.picked:hover{border-color:var(--accent-line-2)}.word-card .pick-mark{position:absolute;top:13px;right:13px;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--rule-2);border-radius:999px;background:var(--surface);color:var(--accent-d)}.word-card.picked .pick-mark{border-color:var(--accent-line-2);background:var(--accent-soft-2)}.wordbook-status-sel{position:relative;display:inline-flex;align-items:center}.wordbook-status-sel select{width:auto;padding-right:32px}.wordbook-status-sel>svg{position:absolute;right:11px;color:var(--ink-3);pointer-events:none}.list-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px dashed var(--rule)}.list-row:last-child{border-bottom:none}.list-row .main{flex:1;min-width:0}.list-row .ttl{font-size:13.5px;font-weight:700}.list-row .sub{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row .main.stack{display:flex;flex-direction:column;gap:2px}.list-row .sub.wrap{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.45}.list-row .ref-side{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px;max-width:60%}.list-row.ref-row{flex-wrap:wrap;row-gap:6px}@media(max-width:860px){.list-row .ref-side{max-width:100%;width:100%;justify-content:flex-start}}.ref-add{display:flex;align-items:center;gap:10px;padding:8px;margin:0 -8px;border-radius:6px;cursor:pointer}.ref-add:hover{background:var(--paper-2)}.ref-add.on,.ref-add.on:hover{background:var(--accent-soft)}.ref-add .pick{flex:0 0 20px;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--rule-2);border-radius:999px;background:var(--surface);color:var(--accent-d)}.ref-add.on .pick{border-color:var(--accent-line-2);background:var(--accent-soft-2)}.ref-add .ttl{font-size:13px;font-weight:700}.ref-add .input{margin-left:auto;width:148px}.tag.del{padding-right:6px;transition:border-color .14s ease,color .14s ease,background .14s ease}.tag.del:hover{border-color:var(--miss-line);background:var(--miss-bg);color:var(--miss)}.tpl-entry{padding:18px;margin:-18px;border-radius:7px;cursor:pointer;transition:background .14s ease}.tpl-entry:hover{background:var(--paper-2)}.tpl-entry h3{margin:0;font-size:14px;font-weight:700}.tpl-entry .row>svg{flex:none;color:var(--ink-3);transition:color .14s ease,transform .14s ease}.tpl-entry:hover .row>svg{color:var(--ink);transform:translate(2px)}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--rule);margin-bottom:16px}.tabs>button{height:34px;padding:0 14px;border:none;background:none;margin-bottom:-1px;border-bottom:2px solid transparent;color:var(--ink-3);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}.tabs>button:hover{color:var(--ink)}.tabs>button.on{color:var(--accent);border-bottom-color:var(--accent)}.defs{list-style:none;margin:0;padding:0}.defs>li{display:flex;gap:6px;padding:10px 0;border-bottom:1px dashed var(--rule)}.defs>li:last-child{border-bottom:none}.defs .pos{font-size:11.5px;font-weight:700;color:var(--accent);min-width:18px;padding-top:2px}.defs .t{font-size:14px}.form-pair{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 10px;border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--paper)}.form-pair .ty{font-size:11px;font-weight:700;color:var(--warn)}.form-pair .sp{font-family:var(--serif);font-size:14px}.eg-item{padding:12px 0;border-bottom:1px dashed var(--rule)}.eg-item:last-child{border-bottom:none}.eg-item .en{font-family:var(--serif);font-size:15.5px;line-height:1.75}.eg-item .cn{font-size:12.5px;color:var(--ink-3);margin-top:3px}.eg-item .meta{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}.edit-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}.edit-row .grow{flex:1;min-width:0}.edit-row .sel{width:132px;flex:0 0 132px}.rel-wrap{position:relative;flex:1;min-width:0}.rel-suggest{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:40;background:var(--surface);border:1px solid var(--rule-2);border-radius:var(--r);box-shadow:var(--shadow-pop);max-height:190px;overflow-y:auto}.rel-suggest>div{padding:8px 10px;cursor:pointer;display:flex;justify-content:space-between;gap:8px;font-size:12.5px}.rel-suggest>div:hover{background:var(--accent-soft)}.drag-handle{color:var(--ink-3);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;font-size:13px;letter-spacing:-2px;padding:8px 5px 8px 12px;margin:-8px -5px -8px -12px}.edit-row.sort-target{outline:1px dashed var(--ink-3);outline-offset:2px;border-radius:4px}.copy-wrap{position:relative}.copy-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:60;width:max-content;padding:5px;background:var(--surface);border:1px solid var(--rule-2);border-radius:var(--r);box-shadow:var(--shadow-pop)}.copy-menu:before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}.copy-menu>button{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;padding:7px 9px;border:none;border-radius:var(--r-sm);background:transparent;color:var(--ink);font-family:var(--sans);font-size:12.5px;font-weight:600;text-align:left;white-space:nowrap;cursor:pointer}.copy-menu>button:hover{background:var(--accent-soft);color:var(--accent)}.search{position:relative;flex:1;min-width:200px;max-width:520px}.search .ico{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--ink-3);pointer-events:none}.search>input{padding-left:34px;padding-right:32px}.search-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:20px;height:20px;display:grid;place-items:center;border:none;border-radius:50%;background:var(--paper-3);color:var(--ink-3);font-size:13px;line-height:1;padding:0;cursor:pointer}.search-clear:hover{background:var(--paper-2);color:var(--ink)}.suggest-box{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:60;background:var(--surface);border:1px solid var(--rule-2);border-radius:var(--r);box-shadow:var(--shadow-pop);overflow:hidden}.suggest-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 13px;cursor:pointer;font-size:13px}.suggest-item:hover{background:var(--accent-soft)}.suggest-item .s{font-family:var(--serif);font-weight:700}.suggest-item .h{font-size:11.5px;color:var(--ink-3);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html.lock-scroll body{overflow:hidden;padding-right:var(--sbw, 0px)}.mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#1c1a1757;display:flex;align-items:center;justify-content:center;padding:20px;overscroll-behavior:contain}.mask.bottom{align-items:flex-end;padding:0}.modal{background:var(--surface);border:1px solid var(--rule-2);border-radius:10px;width:540px;max-width:100%;max-height:86vh;overflow-y:auto;padding:18px;box-shadow:var(--shadow-pop);overscroll-behavior:contain}.modal.sheet{width:100%;border-radius:12px 12px 0 0;max-height:80vh}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--rule)}.modal-head h3{margin:0;font-size:15px}.modal-close{border:1px solid var(--rule);background:var(--paper-2);color:var(--ink-3);width:26px;height:26px;border-radius:var(--r-sm);font-size:15px;line-height:1;display:grid;place-items:center;padding:0;cursor:pointer}.modal-close:hover{background:var(--paper-3);color:var(--ink)}.toast-wrap{position:fixed;left:50%;bottom:26px;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.toast{background:var(--surface);border:1px solid var(--rule-2);border-left:3px solid var(--accent);color:var(--ink);padding:9px 15px;border-radius:var(--r);font-size:13px;box-shadow:var(--shadow-pop);max-width:84vw}.toast.err{border-left-color:var(--miss)}.empty{text-align:center;color:var(--ink-3);padding:40px 14px}.empty .g{font-family:var(--serif);font-size:38px;color:var(--paper-3);line-height:1}.loading{display:flex;flex-direction:column;align-items:center;gap:12px;padding:56px 16px;color:var(--ink-3)}.spinner{width:26px;height:26px;border:3px solid var(--rule);border-top-color:var(--accent);border-radius:50%;animation:spin .85s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.paste-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:stretch}.paste-col{display:flex;flex-direction:column;min-width:0}.paste-col .paste-prompt{display:flex;flex:1 1 auto;flex-direction:column;min-height:0}.paste-col .paste-prompt>.paste-input{flex:1 1 auto;min-height:176px}.paste-col .paste-input{flex:1 1 auto;min-height:176px}.paste-col .paste-btns{margin-top:auto;padding-top:10px}.paste-col .paste-head{min-height:var(--h-sm)}.tpl-picker{display:grid;grid-template-columns:170px 210px minmax(0,1fr);gap:10px;--pk-list-h: 300px }.tpl-picker .pk-col{display:flex;flex-direction:column;min-width:0}.tpl-picker .pk-list{display:flex;flex-direction:column;gap:4px;max-height:var(--pk-list-h);overflow-y:auto}.tpl-picker .pk-list .item{height:var(--h-md);text-align:left;justify-content:flex-start;min-width:0}.tpl-picker .pk-list .item .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.5}.tpl-picker .pk-list .item .cnt{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink-3)}.tpl-picker .pk-list .item.cat{cursor:default}.tpl-picker .pk-preview{flex:none;height:var(--pk-list-h);max-height:none;overflow-y:auto;overscroll-behavior:contain}.tpl-picker .pk-preview.blank{background:transparent;border-color:transparent}.tpl-picker.with-actions .pk-preview{height:calc(var(--pk-list-h) - var(--h-sm) - 8px)}.pick-preview{flex:1;min-width:0;background:var(--paper);border:1px solid var(--rule);border-radius:var(--r);padding:10px;max-height:232px;overflow-y:auto}.pick-preview pre{margin:0;white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.6;font-family:var(--mono);color:var(--ink-2)}@media(max-width:860px){html,body,#app{max-width:100%;overflow-x:hidden;overscroll-behavior:none}.shell{display:block}.rail{position:fixed;left:0;right:0;bottom:0;top:auto;width:auto;height:auto;flex-direction:row;align-items:center;padding:6px 8px calc(6px + env(safe-area-inset-bottom));border-right:none;border-top:1px solid var(--rule);background:#f4eee3f7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:none;z-index:70;transform:translateZ(0);-webkit-transform:translateZ(0);will-change:transform}.shell.rail-open .rail{width:auto;box-shadow:none}.rail-brand,.rail-foot{display:none}.rail-nav{flex-direction:row;flex:1;gap:2px}.rail-item{flex:1;height:48px;flex-direction:column;gap:2px;padding:0;font-size:10.5px;justify-content:center;box-shadow:none}.rail-item.active{box-shadow:none;padding-left:0}.rail-text{opacity:1;transform:none;flex:0 0 auto}.rail-badge{display:none}.pane{padding:16px 15px 104px}.pane-body,.pane-bar-in,.shell.rail-open .pane-body,.shell.rail-open .pane-bar-in{max-width:none}.pane-body,.pane-bar-in{transition:none}.cols,.paste-cols,.word-grid{grid-template-columns:1fr}.wordbook-filters>.row{display:grid;grid-template-columns:1fr;gap:10px}.wordbook-filters .wordbook-status-sel,.wordbook-filters .wordbook-status-sel select{width:100%}.wordbook-filters .wordbook-sort-row{display:grid;grid-template-columns:1fr;gap:10px}.wordbook-filters .wordbook-reset{justify-self:end}.wordbook-filters .seg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;min-width:0;gap:4px;padding:4px}.wordbook-filters .seg>button{min-width:0;width:100%;padding-inline:6px;overflow:hidden;text-overflow:ellipsis}.flash{padding:46px 18px 38px}.flash .word{font-size:38px}.tpl-picker{grid-template-columns:1fr;--pk-list-h: 204px }}@media(prefers-reduced-motion:reduce){.rail,.rail-text,.btn,.word-card,.progress>i,.pane-body,.pane-bar-in{transition:none!important}}
