:root{--bg: #0b0b0d;--bg-deep: #070708;--surface: #151518;--surface-2: #202024;--surface-3: #2a2a2f;--surface-raised: #202024;--border-subtle: #303035;--hairline: #303035;--hairline-strong: #3a3a40;--border: #303035;--accent: #ff8b6b;--accent-pressed: #ed7558;--accent-soft: rgba(255, 139, 107, .16);--accent-ghost: rgba(255, 139, 107, .09);--text-on-accent: #25130d;--focus: #ffc0ab;--primary: var(--accent);--primary-bright: var(--accent);--primary-dim: var(--accent-soft);--primary-ghost: var(--accent-ghost);--on-primary: var(--text-on-accent);--grad-primary: var(--accent);--success: #6ccb95;--success-dim: rgba(108, 203, 149, .16);--warning: #e9b86f;--warning-dim: rgba(233, 184, 111, .16);--danger: #ff8f8f;--danger-dim: rgba(255, 143, 143, .16);--accent-warm: var(--warning);--accent-warm-dim: var(--warning-dim);--text-primary: #f5f2ee;--text-secondary: #b7b2ad;--text-tertiary: #8e8984;--scrim: rgba(7, 7, 8, .7);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow-md: 0 6px 20px rgba(0, 0, 0, .4);--shadow-lg: 0 16px 44px rgba(0, 0, 0, .55);--shadow-cover: 0 6px 18px rgba(0, 0, 0, .45);--shadow-cover-lg: 0 18px 48px rgba(0, 0, 0, .6);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--r-control: 14px;--r-chip: 999px;--r-card: 20px;--r-sheet: 24px;--r-cover: 10px;--font-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-serif: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, ui-serif, Georgia, "Times New Roman", serif;--fs-xs: .75rem;--fs-sm: .875rem;--fs-md: 1rem;--fs-lg: 1.125rem;--fs-xl: 1.375rem;--fs-2xl: 1.75rem;--fs-3xl: 2rem;--tracking-label: .08em;--t-fast: .14s;--t-base: .18s;--t-slow: .22s;--ease: cubic-bezier(.2, 0, .2, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--touch: 44px;--tabbar-h: 58px;--tabbar-gap: 0px;--miniplayer-h: 60px;--miniplayer-gap: 0px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--bottom-chrome: calc(var(--tabbar-h) + var(--tabbar-gap) + var(--safe-bottom));--bottom-chrome-mini: calc(var(--bottom-chrome) + var(--miniplayer-h) + var(--miniplayer-gap));color-scheme:dark}.reader-theme-dark{--reader-bg: #0f0f12;--reader-bg-soft: #151518;--reader-text: #ece8e3;--reader-muted: #a9a49e;--reader-highlight: rgba(255, 139, 107, .2);--reader-highlight-line: rgba(255, 139, 107, .75);--reader-rule: rgba(255, 255, 255, .09);color-scheme:dark}.reader-theme-light{--reader-bg: #faf8f4;--reader-bg-soft: #f1ede6;--reader-text: #23201d;--reader-muted: #655f58;--reader-highlight: rgba(237, 117, 88, .18);--reader-highlight-line: rgba(237, 117, 88, .8);--reader-rule: rgba(35, 32, 29, .12);color-scheme:light}.reader-theme-sepia{--reader-bg: #f3e9d2;--reader-bg-soft: #ecdfc2;--reader-text: #43382a;--reader-muted: #6b5c45;--reader-highlight: rgba(222, 110, 78, .2);--reader-highlight-line: rgba(222, 110, 78, .8);--reader-rule: rgba(67, 56, 42, .14);color-scheme:light}@media(prefers-reduced-motion:reduce){:root{--t-fast: 1ms;--t-base: 1ms;--t-slow: 1ms}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text-primary);font-family:var(--font-ui);font-size:var(--fs-md);line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;overscroll-behavior-y:none}img{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3,h4,p{margin:0}a{color:var(--accent);text-decoration:none}code{font-size:.9em;background:var(--surface-2);padding:1px 6px;border-radius:6px}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:8px}:focus:not(:focus-visible){outline:none}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app-shell{min-height:100%;display:flex;flex-direction:column;position:relative;z-index:1}.app-main{flex:1;width:100%;max-width:680px;margin:0 auto;padding:calc(var(--safe-top) + var(--sp-4)) calc(var(--safe-right) + var(--sp-4)) calc(var(--bottom-chrome-mini) + var(--sp-5)) calc(var(--safe-left) + var(--sp-4))}.app-main.no-miniplayer{padding-bottom:calc(var(--bottom-chrome) + var(--sp-5))}.app-main.bare{padding-bottom:calc(var(--safe-bottom) + var(--sp-5))}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;height:calc(var(--tabbar-h) + var(--safe-bottom));padding:4px max(var(--sp-2),var(--safe-right)) calc(4px + var(--safe-bottom)) max(var(--sp-2),var(--safe-left));gap:2px;background:color-mix(in srgb,var(--bg) 95%,transparent);-webkit-backdrop-filter:saturate(160%) blur(20px);backdrop-filter:saturate(160%) blur(20px);border-top:1px solid var(--border-subtle)}.tabbar a{position:relative;flex:1;min-height:var(--touch);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:14px;color:var(--text-secondary);font-size:.6875rem;font-weight:600;letter-spacing:.01em;transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.tabbar a:active{opacity:.6}.tabbar a.active{color:var(--accent)}.miniplayer{position:fixed;left:0;right:0;bottom:calc(var(--bottom-chrome) + var(--miniplayer-gap));z-index:41;height:var(--miniplayer-h);display:flex;align-items:center;gap:var(--sp-3);padding:0 max(var(--sp-2),var(--safe-right)) 0 max(var(--sp-3),var(--safe-left));background:color-mix(in srgb,var(--surface-2) 92%,transparent);-webkit-backdrop-filter:saturate(160%) blur(20px);backdrop-filter:saturate(160%) blur(20px);border-top:1px solid var(--border-subtle);cursor:pointer;overflow:hidden}.miniplayer:active{background:var(--surface-3)}.miniplayer .mp-cover{width:34px;flex:none}.miniplayer .mp-cover .cover{border-radius:6px;box-shadow:none}.miniplayer .mp-meta{flex:1;min-width:0}.miniplayer .mp-title,.miniplayer .mp-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.miniplayer .mp-title{font-size:var(--fs-sm);font-weight:600}.miniplayer .mp-sub{font-size:var(--fs-xs);color:var(--text-secondary);margin-top:1px;font-variant-numeric:tabular-nums}.miniplayer .mp-progress{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--surface-3)}.miniplayer .mp-progress>div{height:100%;background:var(--accent);transition:width var(--t-base) var(--ease)}.sidebar{display:none}@media(min-width:900px){.tabbar{display:none}.app-shell{flex-direction:row}.sidebar{display:flex;flex-direction:column;gap:var(--sp-1);width:240px;flex:none;position:sticky;top:0;height:100vh;padding:var(--sp-6) var(--sp-3) var(--sp-5);border-right:1px solid var(--border-subtle);background:var(--surface)}.sidebar .brand{font-family:var(--font-serif);font-size:var(--fs-xl);line-height:1.2;white-space:nowrap;padding:0 var(--sp-3) var(--sp-5);color:var(--text-primary)}.sidebar .brand:after{content:"";display:block;width:28px;height:3px;border-radius:2px;margin-top:var(--sp-2);background:var(--accent)}.sidebar a{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--touch);padding:0 var(--sp-3);border-radius:var(--r-control);color:var(--text-secondary);font-weight:600;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.sidebar a:hover{background:var(--surface-2);color:var(--text-primary)}.sidebar a.active{color:var(--accent);background:var(--accent-ghost)}.app-main{max-width:880px;padding:var(--sp-6) var(--sp-6) calc(var(--miniplayer-h) + var(--sp-6) + var(--sp-5))}.app-main.no-miniplayer,.app-main.bare{padding-bottom:var(--sp-6)}.miniplayer{left:auto;right:var(--sp-5);bottom:var(--sp-5);width:400px;padding:0 var(--sp-2);border:1px solid var(--border-subtle);border-radius:18px;box-shadow:var(--shadow-md)}}.page-header{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4);min-height:var(--touch)}.page-title{font-size:var(--fs-2xl);font-weight:700;letter-spacing:-.01em;line-height:1.15;margin-bottom:var(--sp-4)}.page-header .page-title{margin:0;flex:1;min-width:0}.section-title{font-size:var(--fs-md);font-weight:700;letter-spacing:-.005em;color:var(--text-primary);margin:var(--sp-6) 0 var(--sp-3);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.section-title:first-child{margin-top:0}.section-title .section-action{font-size:var(--fs-sm);font-weight:600;color:var(--accent);background:none;border:none;padding:var(--sp-2) 0;cursor:pointer;min-height:var(--touch);display:inline-flex;align-items:center;gap:4px;white-space:nowrap;flex:none}.eyebrow{font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--text-secondary)}.row{display:flex;align-items:center;gap:var(--sp-3)}.stack{display:flex;flex-direction:column;gap:var(--sp-3)}.muted{color:var(--text-secondary)}.small{font-size:var(--fs-sm)}.xsmall{font-size:var(--fs-xs)}.spacer{flex:1}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hscroll{display:flex;gap:var(--sp-3);overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin:0 calc(-1 * var(--sp-4));padding:var(--sp-1) var(--sp-4) var(--sp-2)}.hscroll>*{scroll-snap-align:start;flex:none}.hscroll::-webkit-scrollbar{display:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--touch);padding:0 var(--sp-5);border:1px solid transparent;border-radius:var(--r-control);background:var(--surface-2);color:var(--text-primary);font-weight:600;font-size:var(--fs-sm);cursor:pointer;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease),color var(--t-fast) var(--ease);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.btn:hover:not(:disabled){background:var(--surface-3)}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--accent);color:var(--text-on-accent)}.btn-primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.04)}.btn-primary:active:not(:disabled){background:var(--accent-pressed);filter:none}.btn-ghost{background:transparent;border-color:var(--border-subtle);color:var(--text-primary)}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-ghost:active:not(:disabled){background:var(--surface-3)}.btn-danger{background:var(--danger-dim);color:var(--danger)}.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 24%,transparent)}.btn-icon{width:var(--touch);min-width:var(--touch);padding:0;border-radius:999px}.btn-sm{min-height:36px;font-size:var(--fs-xs);padding:0 var(--sp-3)}.btn-sm.btn-icon{width:36px;min-width:36px}.btn-quiet{background:none;color:var(--accent);padding:0 var(--sp-2)}.btn-quiet:hover:not(:disabled){background:var(--accent-ghost)}.card{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--r-card);padding:var(--sp-4)}.card.card-flat{border-color:transparent}.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:var(--r-chip);font-size:var(--fs-xs);font-weight:600;line-height:1.5;background:var(--surface-2);color:var(--text-secondary);border:1px solid transparent;white-space:nowrap}.chip-primary{background:var(--accent-soft);color:var(--accent)}.chip-warm{background:var(--warning-dim);color:var(--warning)}.chip-danger{background:var(--danger-dim);color:var(--danger)}.chip-success{background:var(--success-dim);color:var(--success)}.chip-btn{cursor:pointer;min-height:36px;padding:0 14px;border-color:var(--border-subtle);color:var(--text-primary);background:transparent;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.chip-btn:hover{background:var(--surface-2)}.chip-btn:active{transform:scale(.96)}.chip-btn[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,transparent)}.tag{display:inline-flex;align-items:center;gap:3px;font-size:.6875rem;font-weight:600;line-height:1.4;padding:1px 7px;border-radius:6px;background:var(--surface-2);color:var(--text-secondary);white-space:nowrap}.tag-accent{color:var(--accent);background:var(--accent-soft)}.tag-success{color:var(--success);background:var(--success-dim)}.tag-warning{color:var(--warning);background:var(--warning-dim)}.progressbar{height:4px;border-radius:var(--r-chip);background:var(--surface-3);overflow:hidden}.progressbar>div{height:100%;border-radius:var(--r-chip);background:var(--accent);transition:width var(--t-base) var(--ease)}.progressbar.warm>div{background:var(--warning)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:var(--scrim);display:flex;align-items:flex-end;justify-content:center;animation:fade-in var(--t-base) var(--ease)}.sheet{width:100%;max-width:560px;max-height:85vh;overflow-y:auto;background:var(--surface);border:1px solid var(--border-subtle);border-bottom:none;border-radius:var(--r-sheet) var(--r-sheet) 0 0;padding:var(--sp-3) var(--sp-5) calc(var(--sp-5) + var(--safe-bottom));box-shadow:var(--shadow-lg);animation:sheet-up var(--t-slow) var(--ease-out)}.sheet .sheet-grip{width:36px;height:4px;border-radius:2px;background:var(--hairline-strong);margin:var(--sp-1) auto var(--sp-4)}.sheet h2{font-size:var(--fs-lg);font-weight:700;margin-bottom:var(--sp-4)}@media(min-width:900px){.sheet-backdrop{align-items:center}.sheet{border-radius:var(--r-sheet);border-bottom:1px solid var(--border-subtle);max-height:80vh}}@keyframes sheet-up{0%{transform:translateY(24px);opacity:.4}to{transform:translateY(0);opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.option-row{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:var(--touch);padding:var(--sp-2) var(--sp-3);background:none;border:none;border-radius:var(--r-control);cursor:pointer;text-align:left;color:inherit;transition:background var(--t-fast) var(--ease)}.option-row:hover{background:var(--surface-2)}.option-row:active{background:var(--surface-3)}.option-row.is-current{background:var(--accent-ghost);color:var(--accent)}.option-row.danger{color:var(--danger)}.toast-region{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--bottom-chrome-mini) + var(--sp-3));z-index:80;display:flex;flex-direction:column;gap:var(--sp-2);width:min(92vw,420px)}.toast{display:flex;align-items:center;gap:var(--sp-3);background:var(--surface-3);border:1px solid var(--hairline-strong);border-radius:var(--r-control);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);box-shadow:var(--shadow-md);animation:sheet-up var(--t-base) var(--ease-out)}.toast.error{border-color:color-mix(in srgb,var(--danger) 55%,transparent)}.toast.error:before{content:"!";flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:12px;background:var(--danger-dim);color:var(--danger)}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--sp-3);padding:var(--sp-7) var(--sp-4);color:var(--text-secondary)}.empty-state .es-icon{width:60px;height:60px;display:grid;place-items:center;border-radius:18px;background:var(--surface-2);color:var(--accent);margin-bottom:var(--sp-1)}.empty-state .es-icon.is-error{color:var(--danger);background:var(--danger-dim)}.empty-state .es-icon.is-offline{color:var(--text-secondary)}.empty-state h3{color:var(--text-primary);font-size:var(--fs-lg);font-weight:700}.empty-state p{max-width:36ch}.empty-state .es-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-2);margin-top:var(--sp-2)}.skeleton{border-radius:var(--r-control);background:linear-gradient(100deg,var(--surface) 40%,var(--surface-2) 50%,var(--surface) 60%);background-size:200% 100%;animation:shimmer 1.4s infinite linear}.skeleton.skeleton-cover{aspect-ratio:2 / 3;width:100%;border-radius:var(--r-cover)}@keyframes shimmer{0%{background-position:150% 0}to{background-position:-50% 0}}@media(prefers-reduced-motion:reduce){.skeleton{animation:none;background:var(--surface-2)}}.cover{position:relative;aspect-ratio:2 / 3;border-radius:var(--r-cover);overflow:hidden;background:var(--surface-2);box-shadow:var(--shadow-cover);isolation:isolate}.cover:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 0 1px #ffffff0f;z-index:2}.cover img{width:100%;height:100%;object-fit:contain;background:var(--surface-2)}.cover .cover-ph{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:space-between;padding:12%;border-left:4px solid rgba(255,255,255,.22)}.cover .cover-ph .ph-title{font-family:var(--font-serif);font-weight:600;font-size:clamp(.65rem,2.4cqw + .5rem,1rem);line-height:1.25;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}.cover .cover-ph .ph-author{font-size:clamp(.55rem,1.6cqw + .45rem,.8rem);opacity:.85;text-transform:uppercase;letter-spacing:var(--tracking-label)}.badge-offline{position:absolute;top:6px;right:6px;z-index:3;background:var(--success);color:#0b1a12;border-radius:999px;width:22px;height:22px;display:grid;place-items:center;box-shadow:0 1px 4px #00000073}.badge-partial{background:var(--warning);color:#2a1f0c}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:var(--sp-5) var(--sp-4)}@media(min-width:600px){.book-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}.book-cell{position:relative;text-align:left;background:none;border:none;padding:0;cursor:pointer;border-radius:var(--r-cover);color:inherit;transition:transform var(--t-base) var(--ease-out)}.book-cell .cover{transition:transform var(--t-base) var(--ease-out),box-shadow var(--t-base) var(--ease-out)}.book-cell:hover .cover{transform:translateY(-2px);box-shadow:var(--shadow-cover-lg)}.book-cell:active{transform:scale(.98)}.book-cell .bc-title{font-size:var(--fs-sm);font-weight:600;margin-top:var(--sp-2);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.book-cell .bc-author{font-size:var(--fs-xs);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.book-cell .bc-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.book-cell-wrap{position:relative}.book-cell-wrap .bc-menu{position:absolute;top:4px;right:4px;z-index:4;width:32px;min-width:32px;min-height:32px;height:32px;border-radius:999px;background:#0b0b0d99;border:none;color:var(--text-primary);padding:0;display:grid;place-items:center;cursor:pointer;opacity:.85}.book-cell-wrap .bc-menu:hover{opacity:1;background:#0b0b0dcc}.book-row{display:flex;gap:var(--sp-3);align-items:center;flex:1;min-width:0;background:none;border:none;border-radius:var(--r-control);padding:var(--sp-2) var(--sp-2);cursor:pointer;text-align:left;color:inherit;transition:background var(--t-fast) var(--ease)}.book-row:hover{background:var(--surface)}.book-row .cover{width:52px;flex:none;box-shadow:var(--shadow-sm)}.book-list>*+*{border-top:1px solid var(--border-subtle)}.input,.select{width:100%;min-height:var(--touch);padding:0 var(--sp-4);border-radius:var(--r-control);border:1px solid var(--border-subtle);background:var(--surface-2);color:var(--text-primary);transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.input:focus,.select:focus{border-color:color-mix(in srgb,var(--accent) 60%,transparent);background:var(--surface)}.input::placeholder{color:var(--text-tertiary)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23b7b2ad' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:34px}.select.select-compact{min-height:38px;font-size:var(--fs-sm);border-radius:12px;padding-left:var(--sp-3)}.search-field{position:relative;flex:1;min-width:0}.search-field>svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--text-secondary);pointer-events:none}.search-field>.input{padding-left:42px}.field{display:flex;flex-direction:column;gap:var(--sp-1)}.field>label{font-size:var(--fs-sm);color:var(--text-secondary);font-weight:600}.toggle{position:relative;width:50px;height:30px;flex:none;border-radius:999px;border:1px solid var(--border-subtle);background:var(--surface-3);cursor:pointer;transition:background var(--t-base) var(--ease),border-color var(--t-base) var(--ease)}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--text-secondary);transition:transform var(--t-base) var(--ease-out),background var(--t-base) var(--ease)}.toggle[aria-checked=true]{background:var(--accent);border-color:var(--accent)}.toggle[aria-checked=true]:after{transform:translate(20px);background:var(--text-on-accent)}.segmented{display:inline-flex;background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--r-control);padding:3px;gap:2px;max-width:100%}.segmented button{border:none;background:none;color:var(--text-secondary);min-height:36px;padding:0 var(--sp-3);border-radius:11px;font-size:var(--fs-sm);font-weight:600;cursor:pointer;white-space:nowrap;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.segmented button[aria-pressed=true]{background:var(--surface-3);color:var(--text-primary)}.conn-dot{width:8px;height:8px;border-radius:50%;flex:none}.conn-dot.online{background:var(--success)}.conn-dot.server_down{background:var(--warning)}.conn-dot.offline,.conn-dot.checking{background:var(--text-tertiary)}.setting-row{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--touch);padding:var(--sp-2) 0;flex-wrap:wrap}.setting-row .sr-label{flex:1;min-width:140px;font-weight:500}.setting-row .sr-label .small{color:var(--text-secondary);font-weight:400}.card.stack>.setting-row+.setting-row{border-top:1px solid var(--border-subtle)}.status-line{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);min-height:24px}.status-line>svg{flex:none}.status-line.ok>svg{color:var(--success)}.status-line.warn>svg{color:var(--warning)}.status-line.bad>svg{color:var(--danger)}.status-line.neutral>svg{color:var(--text-secondary)}.kindle-state{display:flex;gap:var(--sp-3);align-items:flex-start}.kindle-state .ks-icon{width:40px;height:40px;flex:none;border-radius:12px;display:grid;place-items:center;background:var(--surface-2);color:var(--text-secondary)}.kindle-state.tone-success .ks-icon{background:var(--success-dim);color:var(--success)}.kindle-state.tone-accent .ks-icon{background:var(--accent-soft);color:var(--accent)}.kindle-state.tone-warning .ks-icon{background:var(--warning-dim);color:var(--warning)}.kindle-state.tone-danger .ks-icon{background:var(--danger-dim);color:var(--danger)}.kindle-state .ks-title{font-weight:700}.kindle-state .ks-next{margin-top:var(--sp-1);font-size:var(--fs-sm)}.kindle-state .ks-detail{margin-top:2px;font-size:var(--fs-xs);color:var(--text-secondary)}.kindle-stats{display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-5);align-items:center;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-control);background:var(--surface-2)}.kindle-stats .ks-stat{display:flex;align-items:baseline;gap:5px}.kindle-stats .ks-stat-n{font-size:var(--fs-lg);font-weight:700;font-variant-numeric:tabular-nums}.kindle-stats .ks-stat-l{font-size:var(--fs-xs);color:var(--text-secondary)}.kindle-panel .kp-head{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.kindle-panel .kp-title{font-weight:700;display:inline-flex;align-items:center;gap:6px}.kindle-panel .kp-detail{font-size:var(--fs-sm);color:var(--text-secondary);margin-top:var(--sp-1)}.kindle-panel .kp-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-3)}.kindle-panel .kp-note{margin-top:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-control);background:var(--surface-2);font-size:var(--fs-sm);display:flex;gap:var(--sp-2);align-items:flex-start}.kindle-panel .kp-note>svg{flex:none;margin-top:2px}.kindle-panel .kp-note.warn>svg{color:var(--warning)}.kindle-panel .kp-note.bad>svg{color:var(--danger)}.kindle-panel .kp-note.ok>svg{color:var(--success)}.kindle-panel .kp-toc{margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border-subtle)}.kindle-panel .kp-toc .btn{width:100%}@media(min-width:420px){.kindle-panel .kp-toc .btn{width:auto}}.kch-intro{display:flex;flex-direction:column;gap:var(--sp-2);margin:calc(-1 * var(--sp-1)) 0 var(--sp-3)}.kch-intro .kp-note{margin-top:0}.kch{padding-bottom:var(--sp-3);margin-bottom:var(--sp-2);border-bottom:1px solid var(--border-subtle)}.kch:last-child{border-bottom:none}.kch.is-preparing .chapter-row{background:var(--accent-ghost)}.kch-meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);padding:0 var(--sp-3);margin-top:var(--sp-1);font-size:var(--fs-xs);color:var(--text-secondary)}.kch-meta .btn{flex:1 1 100%;margin-top:var(--sp-1)}@media(min-width:360px){.kch-meta .btn{flex:none;margin-top:0}}.kch-loc{font-variant-numeric:tabular-nums;white-space:nowrap}.kch-text{display:inline-flex;align-items:center;gap:4px;color:var(--success);white-space:nowrap}.kch-detail{padding:0 var(--sp-3);margin-top:var(--sp-1);font-size:var(--fs-xs);color:var(--text-secondary);overflow-wrap:anywhere}.kch-bar{margin:var(--sp-2) var(--sp-3) 0}.kch .kp-note,.kch-intro .kp-note{padding:var(--sp-3) var(--sp-4);border-radius:var(--r-control);background:var(--surface-2);font-size:var(--fs-sm);display:flex;gap:var(--sp-2);align-items:flex-start}.kch .kp-note{margin:var(--sp-2) var(--sp-3) 0}.kch .kp-note>svg,.kch-intro .kp-note>svg{flex:none;margin-top:2px}.kch .kp-note.warn>svg,.kch-intro .kp-note.warn>svg{color:var(--warning)}.kch .kp-note.bad>svg{color:var(--danger)}.kch .kp-note.ok>svg{color:var(--success)}.progressbar.indeterminate>div{width:35%;animation:indeterminate 1.3s infinite var(--ease)}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(300%)}}@media(prefers-reduced-motion:reduce){.progressbar.indeterminate>div{animation:none;width:100%;opacity:.5}}.no-text-state{display:flex;gap:var(--sp-3);align-items:flex-start;padding:var(--sp-4);border-radius:var(--r-card);background:var(--surface);border:1px solid color-mix(in srgb,var(--warning) 45%,transparent)}.no-text-state>svg{flex:none;color:var(--warning);margin-top:2px}.no-text-state .nt-title{font-weight:700}.no-text-state .nt-detail{font-size:var(--fs-sm);color:var(--text-secondary);margin-top:2px}.disclosure{border:none;background:none}.disclosure>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);font-weight:600;color:var(--text-secondary);min-height:32px}.disclosure>summary::-webkit-details-marker{display:none}.disclosure[open]>summary svg{transform:rotate(180deg)}.cover-halo{position:relative;display:inline-block}.cover-halo:before{content:"";position:absolute;top:-22%;right:-30%;bottom:-22%;left:-30%;border-radius:50%;background:var(--halo, transparent);filter:blur(28px);opacity:.55;z-index:0;pointer-events:none}.cover-halo>.cover{position:relative;z-index:1}.hero-continue{position:relative;display:flex;gap:var(--sp-4);align-items:stretch;padding:var(--sp-4);border-radius:var(--r-card);background:var(--surface);border:1px solid var(--border-subtle)}.hero-continue .cover{width:96px;flex:none;align-self:flex-start}@media(min-width:400px){.hero-continue .cover{width:112px}}.hero-continue .hero-body{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:space-between;gap:var(--sp-3)}.hero-continue .hero-title{font-family:var(--font-serif);font-size:var(--fs-lg);font-weight:600;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.hero-progress-row{display:flex;align-items:center;gap:var(--sp-3)}.hero-progress-row .progressbar{flex:1}.hero-play{width:48px;height:48px;min-width:48px;min-height:48px;border-radius:50%;background:var(--accent);color:var(--text-on-accent);padding:0}.hero-play:active:not(:disabled){background:var(--accent-pressed)}.detail-head{display:flex;gap:var(--sp-4);align-items:flex-start;margin-bottom:var(--sp-5)}.detail-head .cover{width:104px;flex:none}@media(min-width:400px){.detail-head .cover{width:128px}}.detail-head .detail-title{font-family:var(--font-serif);font-size:var(--fs-xl);font-weight:600;line-height:1.2;overflow-wrap:anywhere}.detail-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-5)}.detail-actions .btn{flex:1 1 100%}@media(min-width:420px){.detail-actions .btn{flex:1 1 150px}}.chapter-row .ch-num{width:26px;flex:none;font-size:var(--fs-xs);color:var(--text-secondary);font-variant-numeric:tabular-nums}.chapter-row .ch-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-page{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);max-width:520px;margin:0 auto}.player-top{display:flex;align-items:center;width:100%;gap:var(--sp-2)}.player-top .player-top-label{flex:1;text-align:center;font-size:var(--fs-sm);font-weight:600;color:var(--text-secondary)}.player-cover-wrap{padding:var(--sp-3) 0 var(--sp-2)}.player-cover{width:min(56vw,250px);border-radius:14px}.player-cover .cover{border-radius:14px;box-shadow:var(--shadow-cover-lg)}@media(max-height:700px){.player-cover{width:min(42vw,190px)}}.player-meta{text-align:center;width:100%}.player-meta .player-title{font-family:var(--font-serif);font-size:var(--fs-xl);font-weight:600;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.player-meta .player-author{color:var(--text-secondary);font-size:var(--fs-sm);margin-top:2px}.player-meta .player-chapter{color:var(--text-secondary);font-size:var(--fs-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.player-chapter-btn{display:inline-flex;align-items:center;gap:var(--sp-2);max-width:100%;margin-top:var(--sp-2);padding:var(--sp-1) var(--sp-3);min-height:36px;border-radius:999px;border:1px solid var(--border-subtle);background:var(--surface);color:var(--text-secondary);font:inherit;cursor:pointer}.player-chapter-btn:active{background:var(--surface-2, var(--surface))}.player-chapter-btn>svg{flex:none}.player-ch-row{align-items:flex-start}.player-ch-row .pch-icon{flex:none;margin-top:2px;opacity:.8}.player-ch-row .pch-title{flex:1;min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.3}.player-ch-row .pch-meta{flex:none;font-size:var(--fs-xs);color:var(--text-secondary);font-variant-numeric:tabular-nums;margin-top:2px}.player-ch-row.is-current .pch-meta{color:var(--accent, inherit)}.player-ch-row:disabled{opacity:.45;cursor:default}.player-banner{width:100%;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-control);background:var(--surface);border:1px solid var(--border-subtle);font-size:var(--fs-sm)}.player-banner>svg{flex:none}.player-banner.warn{border-color:color-mix(in srgb,var(--warning) 50%,transparent)}.player-banner.warn>svg{color:var(--warning)}.player-banner.bad{border-color:color-mix(in srgb,var(--danger) 50%,transparent)}.player-banner.bad>svg{color:var(--danger)}.player-banner span{flex:1;min-width:0}.player-controls{display:flex;align-items:center;justify-content:center;gap:var(--sp-3);width:100%}@media(min-width:400px){.player-controls{gap:var(--sp-4)}}.player-play{width:72px;height:72px;min-width:72px;border-radius:50%;background:var(--accent);color:var(--text-on-accent);padding:0}.player-play:hover:not(:disabled){background:var(--accent)}.player-play:active:not(:disabled){background:var(--accent-pressed);transform:scale(.95)}.player-skip{width:56px;min-width:56px;height:56px;position:relative;background:var(--surface-2);border:1px solid var(--border-subtle)}.player-skip .skip-n{position:absolute;font-size:9px;font-weight:700;letter-spacing:0;top:50%;left:50%;transform:translate(-50%,-38%)}.player-seekbar{width:100%}.player-seekbar input[type=range]{width:100%;height:var(--touch);margin:calc(-1 * var(--sp-2)) 0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.player-seekbar input[type=range]::-webkit-slider-runnable-track{height:5px;border-radius:var(--r-chip);background:linear-gradient(to right,var(--accent) 0%,var(--accent) calc(var(--seek, 0) * 1%),var(--surface-3) calc(var(--seek, 0) * 1%),var(--surface-3) 100%)}.player-seekbar input[type=range]::-moz-range-track{height:5px;border-radius:var(--r-chip);background:var(--surface-3)}.player-seekbar input[type=range]::-moz-range-progress{height:5px;border-radius:var(--r-chip);background:var(--accent)}.player-seekbar input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;margin-top:-5.5px;border-radius:50%;background:var(--text-primary);box-shadow:0 1px 4px #00000080;transition:transform var(--t-fast) var(--ease)}.player-seekbar input[type=range]:active::-webkit-slider-thumb{transform:scale(1.2)}.player-seekbar input[type=range]::-moz-range-thumb{width:16px;height:16px;border:none;border-radius:50%;background:var(--text-primary);box-shadow:0 1px 4px #00000080}.player-times{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-xs);color:var(--text-secondary);font-variant-numeric:tabular-nums;margin-top:var(--sp-2)}.player-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-2);width:100%}.code-block{margin:var(--sp-3) 0;border:1px solid var(--border-subtle);border-radius:var(--r-card);background:var(--surface);overflow:hidden;font-family:var(--font-ui);text-align:left}.code-block .cb-head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border-subtle)}.code-block .cb-summary,.code-block .cb-prose{padding:var(--sp-2) var(--sp-3) 0;font-size:var(--fs-sm);line-height:1.4}.code-block .cb-prose{color:var(--text-secondary)}.code-block .cb-pre{margin:var(--sp-2) 0 0;padding:var(--sp-3);overflow-x:auto;-webkit-overflow-scrolling:touch;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.45;background:var(--surface-2);white-space:pre;-moz-tab-size:2;tab-size:2}.code-block .cb-note{padding:var(--sp-2) var(--sp-3)}.player-code-btn{width:100%;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-control);background:var(--accent-ghost);border:1px solid var(--border-subtle);color:inherit;font:inherit;font-size:var(--fs-sm);cursor:pointer;text-align:left}.player-code-btn .pcb-cta{margin-left:auto;color:var(--accent);font-weight:600}.np-code{color:var(--text-secondary)}.narration-panel{width:100%;border-radius:var(--r-card);background:var(--surface);border:1px solid var(--border-subtle);overflow:hidden}.narration-panel>.np-head{width:100%;display:flex;align-items:center;gap:var(--sp-2);min-height:var(--touch);padding:0 var(--sp-4);background:none;border:none;color:inherit;cursor:pointer;font-size:var(--fs-sm);font-weight:600;text-align:left}.narration-panel>.np-head>svg:last-child{transition:transform var(--t-base) var(--ease)}.narration-panel.open>.np-head>svg:last-child{transform:rotate(180deg)}.narration-panel>.np-body{padding:0 var(--sp-4) var(--sp-4);font-family:var(--font-serif);font-size:var(--fs-md);line-height:1.6;max-height:32vh;overflow-y:auto}.narration-panel .np-current{background:var(--accent-soft);box-shadow:inset 0 -2px 0 var(--accent);border-radius:4px;padding:0 2px}.voice-card{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--r-card);padding:var(--sp-3) var(--sp-4)}.voice-card.is-unavailable{opacity:.6}.voice-card .vc-head{display:flex;align-items:center;gap:var(--sp-3)}.voice-card .vc-name{font-weight:700;font-size:var(--fs-md)}.voice-card .vc-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.voice-card .vc-meta{font-size:var(--fs-xs);color:var(--text-secondary);margin-top:4px;overflow-wrap:anywhere}.voice-card .vc-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-3)}.voice-card .btn-fav[aria-pressed=true]{color:var(--accent)}.onboarding{position:relative;max-width:480px;margin:0 auto;padding:calc(var(--safe-top) + var(--sp-7)) var(--sp-5) calc(var(--safe-bottom) + var(--sp-6));display:flex;flex-direction:column;gap:var(--sp-5);min-height:100vh;justify-content:center}.onboarding .brand{font-family:var(--font-serif);font-size:2.6rem;letter-spacing:.005em;color:var(--text-primary)}.onboarding .brand:after{content:"";display:block;width:40px;height:4px;border-radius:2px;background:var(--accent);margin-top:var(--sp-2)}.onboarding .feature{display:flex;gap:var(--sp-3);align-items:flex-start}.onboarding .feature .f-icon{width:40px;height:40px;flex:none;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}.code-input{font-size:1.7rem;letter-spacing:.35em;text-align:center;text-transform:uppercase;font-variant-numeric:tabular-nums;font-family:var(--font-ui);min-height:56px}.form-error{display:flex;gap:var(--sp-2);align-items:flex-start;color:var(--danger);font-size:var(--fs-sm)}.form-error>svg{flex:none;margin-top:2px}.reader-surface{min-height:100vh;background:var(--reader-bg);color:var(--reader-text);transition:background var(--t-slow) var(--ease),color var(--t-slow) var(--ease)}.reader-content{max-width:38em;margin:0 auto;padding:calc(var(--safe-top) + 76px) clamp(var(--sp-5),6vw,var(--sp-7)) 42vh}.reader-content h2{font-family:var(--font-serif);font-size:1.55em;line-height:1.22;margin:0 0 var(--sp-5)}.reader-content h2:after{content:"";display:block;width:40px;height:3px;margin-top:var(--sp-3);border-radius:2px;background:var(--accent)}.reader-content>p{-webkit-hyphens:auto;hyphens:auto}.reader-sentence{cursor:pointer;border-radius:4px;padding:.05em .1em;margin:0 -.1em;transition:background var(--t-base) var(--ease),box-shadow var(--t-base) var(--ease);-webkit-tap-highlight-color:transparent}.reader-sentence.narrated{background:var(--reader-highlight);box-shadow:inset 0 -2px 0 var(--reader-highlight-line)}.reader-topbar{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;gap:var(--sp-1);padding:calc(var(--safe-top) + var(--sp-2)) var(--sp-3) var(--sp-2);background:color-mix(in srgb,var(--reader-bg) 90%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--reader-rule);color:var(--reader-text)}.reader-topbar .btn{background:transparent;color:inherit;border-color:transparent}.reader-topbar .btn:hover:not(:disabled){background:color-mix(in srgb,var(--reader-text) 8%,transparent)}.reader-topbar .rt-meta{flex:1;min-width:0;padding:0 var(--sp-1)}.reader-topbar .rt-title{font-size:var(--fs-sm);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reader-topbar .rt-sub{font-size:var(--fs-xs);color:var(--reader-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reader-narration-panel{position:fixed;left:max(var(--sp-3),var(--safe-left));right:max(var(--sp-3),var(--safe-right));bottom:calc(var(--safe-bottom) + var(--sp-3));z-index:49;background:var(--surface-2);color:var(--text-primary);border-radius:18px;border:1px solid var(--border-subtle);padding:var(--sp-2) var(--sp-3);box-shadow:var(--shadow-md);max-width:560px;margin:0 auto}.reader-narration-panel .btn-icon.btn-primary{width:40px;min-width:40px;min-height:40px}.reader-nav{display:flex;justify-content:space-between;gap:var(--sp-2);margin-top:var(--sp-6)}.reader-nav .btn{color:inherit;border-color:var(--reader-rule)}.prep-head{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-4);min-height:var(--touch)}.prep-head .prep-title{font-size:var(--fs-xl);font-weight:700;letter-spacing:-.01em;line-height:1.2}.prep-head .prep-sub{font-family:var(--font-serif);font-size:var(--fs-sm);color:var(--text-secondary);margin-top:2px}.prep-h2{font-size:var(--fs-md);font-weight:700;letter-spacing:-.005em}.prep-section{margin-top:var(--sp-5)}.prep-stats{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.prep-stats .prep-stat:first-child{grid-column:1 / -1}@media(min-width:400px){.prep-stats{grid-template-columns:repeat(3,1fr)}.prep-stats .prep-stat:first-child{grid-column:auto}}.prep-stat{min-width:0;display:flex;flex-direction:column;gap:2px;padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--r-card)}.prep-stat .ps-n{font-size:var(--fs-2xl);font-weight:700;line-height:1.1;letter-spacing:-.01em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.prep-stat.is-accent .ps-n{color:var(--accent)}.prep-stat .ps-l{font-size:var(--fs-sm);font-weight:600;margin-top:2px}.prep-stat .ps-h{font-size:var(--fs-xs);color:var(--text-secondary);line-height:1.35}.prep-def{font-size:var(--fs-xs);color:var(--text-tertiary);margin-top:var(--sp-2);overflow-wrap:anywhere}.prep-cur{margin:var(--sp-3) 0;overflow-wrap:anywhere}.prep-wide{width:100%}@media(min-width:420px){.prep-wide{width:auto}}.prep-progress,.prep-status,.prep-form{display:flex;flex-direction:column;gap:var(--sp-3)}.prep-status-head{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.prep-status-head>svg{flex:none;color:var(--text-secondary)}.prep-status.ok .prep-status-head>svg{color:var(--success)}.prep-status.warn .prep-status-head>svg{color:var(--warning)}.prep-status.bad .prep-status-head>svg{color:var(--danger)}.prep-live{width:10px;height:10px;flex:none;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);animation:prep-pulse 1.6s infinite var(--ease)}@keyframes prep-pulse{0%,to{opacity:1}50%{opacity:.4}}@media(prefers-reduced-motion:reduce){.prep-live{animation:none}}.prep-kv{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2) var(--sp-4);margin:0}.prep-kv dt{font-size:var(--fs-xs);color:var(--text-secondary)}.prep-kv dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums}.prep-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.prep-actions .btn{flex:1 1 140px}.prep-note{display:flex;gap:var(--sp-2);align-items:flex-start;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-control);background:var(--surface-2);font-size:var(--fs-sm);min-width:0}.prep-note>svg{flex:none;margin-top:2px;color:var(--text-secondary)}.prep-note.ok>svg{color:var(--success)}.prep-note.warn>svg{color:var(--warning)}.prep-note.bad>svg{color:var(--danger)}.prep-note>span{min-width:0;overflow-wrap:anywhere}.prep-form .field>.select{width:100%}.prep-ch{border-bottom:1px solid var(--border-subtle)}.prep-ch:last-child{border-bottom:none}.prep-ch-btn{display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:var(--touch);padding:var(--sp-2) var(--sp-1);background:none;border:none;border-radius:var(--r-control);color:inherit;cursor:pointer;text-align:left;transition:background var(--t-fast) var(--ease)}.prep-ch-btn:hover{background:var(--surface-2)}.prep-ch-btn .ch-num{width:24px;flex:none;font-size:var(--fs-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums}.prep-ch-btn .prep-ch-title{flex:1;min-width:0;font-size:var(--fs-sm);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prep-ch-btn .prep-ch-count{flex:none;font-size:var(--fs-xs);color:var(--text-secondary);white-space:nowrap;font-variant-numeric:tabular-nums}.prep-ch-btn .chev{flex:none;color:var(--text-secondary);transition:transform var(--t-base) var(--ease)}.prep-ch-btn[aria-expanded=true] .chev{transform:rotate(180deg)}.prep-pages{list-style:none;margin:0;padding:0 0 var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.prep-page{min-width:0;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-control);background:var(--surface-2)}.prep-page .pp-head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--text-secondary)}.prep-page .pp-loc{font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums;white-space:nowrap}.prep-page .pp-sent{font-family:var(--font-serif);font-size:var(--fs-sm);line-height:1.4;margin-top:var(--sp-1);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.prep-ch-empty{padding:0 0 var(--sp-3);font-size:var(--fs-xs);color:var(--text-secondary)}.book-list>.row>button:last-child{flex:none}
