:root{--bg:#fdfcfb;--card:#fff;--ink:#1b1f23;--ink-2:#6f7780;--line:#e8e5e0;--accent:#bf3b24;--accent-bg:#fbf0ec;--hl:#fcf2ed;--ok:#2f6b3a;--bad:#a0342c;--serif:"Georgia", "Songti SC", "STSong", "SimSun", serif;--sans:system-ui, -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;font:17px/1.8 var(--sans);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}*{box-sizing:border-box}body{background-color:#0000;background-image:radial-gradient(1100px 420px at 50% -120px,#bf3b240d,#0000 60%),linear-gradient(#f1ede6 0%,#f8f5f0 45%,#fdfcfa 100%);background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box;background-clip:border-box,border-box;min-height:100svh;margin:0}button{font:inherit;cursor:pointer;color:inherit;-webkit-tap-highlight-color:transparent;background:0 0;border:none}a{color:inherit;text-decoration:none}textarea{font:inherit;color:inherit}.app-shell{flex-direction:column;max-width:720px;min-height:100svh;margin:0 auto;display:flex}.topbar{-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);z-index:10;background:#fdfcfbd1;justify-content:space-between;align-items:center;max-width:720px;height:52px;margin:0 auto;padding:0 20px;display:flex;position:fixed;top:0;left:0;right:0}.brand{font-family:var(--serif);letter-spacing:.14em;color:var(--ink);font-size:16px}.topbar nav{color:var(--ink-2);letter-spacing:.04em;gap:16px;font-size:14px;display:flex}.main{flex:1;padding:76px 24px 32px}.btn{background:var(--ink);color:#fff;letter-spacing:.02em;border-radius:999px;padding:10px 20px;font-size:14.5px;transition:transform .15s,box-shadow .15s,opacity .15s;display:inline-block;box-shadow:0 1px 4px #1b1f231f}@media (hover:hover){.btn:hover{transform:translateY(-1px);box-shadow:0 4px 14px #1b1f232e}}.btn:active{transform:scale(.96)}.btn.secondary{background:var(--card);color:var(--ink);border:1px solid var(--line);box-shadow:none}.btn.ghost{color:var(--ink-2);border:1px solid var(--line);box-shadow:none;background:0 0}.btn:disabled{opacity:.45}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px}@keyframes fade-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.anim-in{animation:.5s cubic-bezier(.22,.61,.36,1) both fade-up}.home-hero{text-align:center;padding:48px 0 34px}.home-hero .logo-mark{color:#fff;width:56px;height:56px;font-family:var(--serif);background:linear-gradient(135deg,#2a3138,#14181d);border-radius:17px;justify-content:center;align-items:center;margin:0 auto 18px;font-size:28px;animation:.5s cubic-bezier(.22,.61,.36,1) 50ms both fade-up;display:flex;box-shadow:0 10px 26px #1b1f232e}.home-hero h1{font-family:var(--serif);letter-spacing:.1em;margin:0 0 12px;font-size:30px;font-weight:600;animation:.5s cubic-bezier(.22,.61,.36,1) .12s both fade-up}.home-hero p{color:var(--ink-2);letter-spacing:.06em;margin:0;font-size:14.5px;animation:.5s cubic-bezier(.22,.61,.36,1) .19s both fade-up}.home-actions{gap:12px;margin-bottom:30px;animation:.5s cubic-bezier(.22,.61,.36,1) .26s both fade-up;display:flex}.home-actions .btn{text-align:center;flex:1;padding:12px 8px;font-size:15px}.shelf-title{font-family:var(--serif);letter-spacing:.1em;color:var(--ink-2);margin:0 0 12px;font-size:15px}.book-item{background:var(--card);border:1px solid var(--line);border-radius:18px;align-items:center;gap:14px;margin-bottom:10px;padding:12px 16px;transition:box-shadow .15s,transform .12s;display:flex;box-shadow:0 2px 10px #1b1f230a}.book-item:active{transform:scale(.99);box-shadow:0 4px 16px #1b1f2314}.book-cover{width:44px;height:44px;font-family:var(--serif);color:#fff;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;font-size:20px;display:flex;box-shadow:0 3px 10px #1b1f231f}.book-item .name{text-overflow:ellipsis;white-space:nowrap;text-align:left;flex:1;font-size:16px;overflow:hidden}.book-item .del{color:var(--bad);opacity:.7;padding:4px 8px;font-size:13px}.empty{color:var(--ink-2);text-align:center;letter-spacing:.04em;padding:28px 0;font-size:14px}.page-head{align-items:center;gap:12px;margin-bottom:18px;display:flex}.page-title{font-family:var(--serif);letter-spacing:.08em;font-size:18px;font-weight:600}.paste-page textarea{border:1px solid var(--line);background:var(--card);resize:vertical;border-radius:16px;outline:none;width:100%;min-height:300px;padding:16px;font-size:15px;line-height:1.8}.paste-page textarea:focus{border-color:var(--accent)}.char-count{color:var(--ink-2);margin:10px 4px;font-size:13px}.char-count.warn{color:var(--bad)}.paste-actions{gap:10px;margin-top:10px;display:flex}.paste-actions .btn{text-align:center;flex:1}.read-page{background:var(--bg);flex-direction:column;max-width:720px;margin:0 auto;display:flex;position:fixed;inset:52px 0 0}.read-head{color:var(--ink-2);align-items:center;gap:10px;padding:8px 14px;font-size:14px;display:flex}.back{color:var(--ink-2);border:1px solid var(--line);background:var(--card);border-radius:999px;padding:4px 10px;font-size:15px}.loading{color:var(--accent);letter-spacing:.04em}.err{color:var(--bad);font-size:13px}.hint{letter-spacing:.04em}.text-area{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;padding:12px 24px 70px;font-size:19px;line-height:2;overflow:hidden auto}.s-block{margin-bottom:4px}.s-line{letter-spacing:.01em;overflow-wrap:break-word;word-break:normal;margin:0}.word{cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:6px;margin-right:.3em;padding:1px 2px;transition:background .1s;position:relative}.word:active{background:var(--hl)}.word.hl{border-bottom:1.5px dotted var(--accent);border-radius:2px}.word.tapped:after{content:"";background:var(--ink-2);opacity:.5;border-radius:50%;width:4px;height:4px;position:absolute;bottom:-3px;left:50%;transform:translate(-50%)}.word.active-tok{background:var(--hl);box-shadow:0 0 0 3px var(--hl);border-radius:6px}.m5-box{background:var(--accent-bg);border-left:3px solid var(--accent);font-family:var(--serif);color:#4a3f3a;overflow-wrap:break-word;border-radius:12px;margin:10px 0 14px;padding:12px 16px;font-size:17px;line-height:2;display:block}.m5-note{color:var(--ink-2);margin-top:6px;font-size:12px;display:block}.md-toggle{color:var(--accent);border:1px solid var(--accent);background:0 0;border-radius:999px;padding:2px 10px;font-size:13px}.fs-ctl{gap:4px;margin-left:auto;display:inline-flex}.fs-btn{color:var(--ink-2);border:1px solid var(--line);background:var(--card);border-radius:999px;padding:1px 8px;font-size:12px}.md-container h1,.md-container h2,.md-container h3,.md-container h4{font-family:var(--serif);margin:16px 0 8px;line-height:1.4}.md-container h1{font-size:24px}.md-container h2{font-size:21px}.md-container h3{font-size:19px}.md-container h4{font-size:16px}.md-container p{overflow-wrap:break-word;margin:0 0 8px}.md-container ul,.md-container ol{margin:6px 0;padding-left:1.5em}.md-container blockquote{border-left:3px solid var(--line);color:var(--ink-2);margin:8px 0;padding-left:14px}.md-container code{background:var(--accent-bg);border-radius:4px;padding:0 4px;font-size:.88em}.md-container pre{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px;font-size:14px;overflow-x:auto}.md-container pre code{background:0 0;padding:0}.md-container a{color:var(--accent);text-decoration:underline}.md-container hr{border:none;border-top:1px solid var(--line);margin:16px 0}.float-panel{-webkit-backdrop-filter:blur(20px);z-index:100;touch-action:none;background:#ffffffb8;border:1px solid #1b1f231a;border-radius:16px;width:min(340px,100vw - 24px);max-width:640px;padding:8px 14px 12px;position:fixed;box-shadow:0 2px 8px #1b1f230f,0 18px 48px #1b1f2333}.float-panel.dragging{-webkit-backdrop-filter:none;background:#fffffff0;transition:none}.fp-head{align-items:center;gap:10px;margin-bottom:10px;display:flex}.fp-head b{font-family:var(--serif);color:#14181d;font-size:17px;font-weight:700}.drag-bar{height:20px;color:var(--ink-2);letter-spacing:3px;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:8px;justify-content:center;align-items:center;margin:-2px 0 2px;font-size:12px;display:flex}.drag-bar:active{background:var(--hl)}.drag-handle{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex:1}.drag-dots{color:#4a525b;letter-spacing:2px;margin-right:6px;font-size:12px}.fp-close{color:#4a525b;border:1px solid #e8e5e0e6;border-radius:999px;padding:4px 8px;font-size:15px}.fp-body{font-family:var(--serif);white-space:pre-wrap;overflow-wrap:break-word;color:#1f2429;touch-action:none;max-height:38svh;font-size:15px;line-height:1.8;overflow-y:auto}.fp-body.scrollable{touch-action:pan-y}.fp-usage{color:var(--ink-2);text-align:right;margin-top:8px;font-size:11.5px}.fp-prev-label{color:var(--ink-2);margin-bottom:6px;font-size:12px}.fp-prev-mapping{font-family:var(--serif);color:#33383e;white-space:pre-wrap;font-size:14.5px;line-height:1.85}.fp-prev-m5{font-family:var(--serif);color:#5b463e;background:var(--accent-bg);border-left:3px solid var(--accent);border-radius:8px;margin-top:8px;padding:8px 10px;font-size:14px;line-height:1.8}.fp-prev-src{color:var(--ink-2);margin-top:8px;font-size:12.5px;line-height:1.6}.fp-corp-title{margin-bottom:4px;font-size:12px}.fp-corp-item{margin-bottom:4px;line-height:1.6}.fp-corp-src{color:var(--accent);vertical-align:1px;border:1px solid #bf3b2459;border-radius:999px;margin-right:6px;padding:0 6px;font-size:11px;display:inline-block}.edit-page{flex-direction:column;height:calc(100svh - 130px);display:flex}.edit-actions{gap:8px;margin-left:auto;display:flex}.edit-actions .btn{padding:6px 14px;font-size:13px}.edit-title{border:1px solid var(--line);background:var(--card);box-sizing:border-box;border-radius:12px;outline:none;width:100%;margin-bottom:8px;padding:10px 12px;font-size:16px;font-weight:600}.edit-title:focus{border-color:var(--accent)}.edit-toolbar{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.edit-toolbar button{border:1px solid var(--line);background:var(--card);min-width:34px;color:var(--ink);border-radius:8px;padding:5px 8px;font-size:13px}.edit-toolbar button:active{background:var(--hl)}.md-editor{border:1px solid var(--line);background:var(--card);resize:none;box-sizing:border-box;border-radius:14px;outline:none;flex:1;width:100%;padding:14px;font-size:15px;line-height:1.8}.md-editor:focus{border-color:var(--accent)}.md-preview{border:1px solid var(--line);background:var(--card);border-radius:14px;flex:1;padding:14px 16px;font-size:16px;line-height:1.9;overflow-y:auto}.search-input{border:1px solid var(--line);background:var(--card);box-sizing:border-box;border-radius:12px;outline:none;width:100%;margin-bottom:12px;padding:10px 14px;font-size:15px}.search-input:focus{border-color:var(--accent)}.clear-all{margin-left:auto;padding:5px 12px;font-size:13px}.wl-item{background:var(--card);border:1px solid var(--line);border-radius:16px;margin-bottom:10px;padding:14px 16px;box-shadow:0 2px 10px #1b1f230a}.wl-head{border-bottom:1px dashed var(--line);align-items:baseline;gap:10px;margin-bottom:10px;padding-bottom:10px;display:flex}.wl-word{font-family:var(--serif);letter-spacing:.02em;font-size:20px;font-weight:600}.wl-src{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:11px;overflow:hidden}.wl-act{color:var(--ink-2);border:1px solid var(--line);background:var(--card);border-radius:999px;padding:2px 8px;font-size:12.5px}.wl-act.del{color:var(--bad);border-color:#a0342c59}.wl-sec-label{letter-spacing:.12em;color:var(--ink-2);margin:10px 0 4px;font-size:11px}.wl-mapping{font-family:var(--serif);color:#33383e;white-space:pre-wrap;font-size:15px;line-height:1.85}.wl-m5{font-family:var(--serif);color:#5b463e;background:var(--accent-bg);border-left:3px solid var(--accent);border-radius:8px;padding:9px 12px;font-size:14.5px;line-height:1.85}.wl-sentence{color:var(--ink-2);padding:4px 2px;font-size:13.5px;font-style:italic;line-height:1.7}.wl-edit{border:1px solid var(--line);width:100%;min-height:120px;font-family:var(--serif);resize:vertical;box-sizing:border-box;border-radius:10px;outline:none;padding:10px;font-size:14px;line-height:1.8}.wl-edit-actions{gap:8px;margin-top:8px;display:flex}.wl-edit-actions .btn{padding:6px 14px;font-size:13px}.slide-enter-active,.slide-leave-active{transition:opacity .15s}.slide-enter-from,.slide-leave-to{opacity:0}.page-enter-active,.page-leave-active{transition:opacity .2s,transform .2s cubic-bezier(.22,.61,.36,1)}.page-enter-from{opacity:0;transform:translateY(12px)}.page-leave-to{opacity:0;transform:translateY(-6px)}.thinking{align-items:center;gap:4px;padding:3px 0;display:inline-flex}.thinking i{background:var(--accent);border-radius:50%;width:5px;height:5px;animation:1s ease-in-out infinite blink}.thinking i:nth-child(2){animation-delay:.15s}.thinking i:nth-child(3){animation-delay:.3s}@keyframes blink{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}@keyframes m5-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.m5-box{animation:none}.m5-box.m5-new{animation:.28s m5-in}.m5-skeleton{border-left:3px solid var(--accent);background:linear-gradient(90deg, var(--accent-bg) 25%, #f6f1ec 50%, var(--accent-bg) 75%);background-size:200% 100%;border-radius:12px;height:4em;margin:10px 0 14px;animation:1.2s linear infinite shimmer;display:block}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes word-pop{0%{transform:scale(.94)}60%{transform:scale(1.04)}to{transform:scale(1)}}.word.active-tok{background:var(--hl);box-shadow:0 0 0 3px var(--hl);border-radius:6px;animation:.2s word-pop}.settings-page h2{font-family:var(--serif);letter-spacing:.06em;margin:26px 0 10px;font-size:17px}.settings-page textarea{border:1px solid var(--line);background:var(--card);resize:vertical;border-radius:14px;outline:none;width:100%;min-height:190px;padding:14px;font-size:14px;line-height:1.65}.settings-page textarea:focus{border-color:var(--accent)}.api-input{border:1px solid var(--line);background:var(--card);border-radius:12px;outline:none;width:100%;margin-bottom:8px;padding:10px 12px;font-size:14px}.api-input:focus{border-color:var(--accent)}.api-row{gap:8px;display:flex}.api-row .api-input{flex:1}.model-list{flex-wrap:wrap;gap:6px;margin:6px 0 4px;display:flex}.model-list .chip{color:var(--accent);background:var(--card);border:1px solid #bf3b2466;border-radius:999px;padding:3px 10px;font-size:12.5px}.model-list .chip:active{transform:scale(.95)}.settings-actions{gap:10px;margin-top:10px;display:flex}.settings-actions .btn{padding:9px 18px;font-size:14px}.note{color:var(--ink-2);margin:8px 2px 0;font-size:13px}.list-item{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:8px;padding:8px 0;font-size:14px;display:flex}.list-item .del{color:var(--bad);flex-shrink:0;font-size:13px}@media (width>=768px){.app-shell{max-width:960px}.topbar{max-width:960px;padding:0 28px}.main{padding:84px 32px 32px}.read-page{max-width:960px}.text-area{max-width:820px;margin:0 auto;padding-left:32px;padding-right:32px}.home-hero h1{font-size:38px}.book-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.book-grid .book-item{margin-bottom:0}.words-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.words-grid .wl-item{margin-bottom:0}.float-panel{width:420px}.fp-body{max-height:50svh}}@media (width>=1024px){.app-shell,.topbar,.read-page{max-width:1080px}.text-area{max-width:880px}}
