/* Tools float above the reading surface; paper and typography keep their familiar palette. */
.import-orbit{position:fixed;right:24px;bottom:max(80px,env(safe-area-inset-bottom));width:52px;height:52px;padding:0;border:0;border-radius:50%;z-index:80;background:var(--ink,#263c34);color:#faf7ef;box-shadow:0 4px 20px #1329202b;display:grid;place-items:center}
.import-orbit[hidden]{display:none}.import-orbit svg{position:absolute;inset:4px;width:44px;height:44px;transform:rotate(-90deg);fill:none;stroke-width:2}.orbit-track{stroke:#ffffff30}.orbit-value{stroke:#d7dfbb;stroke-dasharray:113.1;stroke-dashoffset:calc(113.1 * (1 - var(--import-progress,0)));transition:stroke-dashoffset .25s linear}.orbit-count{font-size:10px;font-variant-numeric:tabular-nums}
.import-orbit.is-running .orbit-track{stroke-dasharray:4 109;animation:orbit-spin 2s linear infinite;transform-origin:22px 22px}.import-task-dialog .modal{width:min(600px,calc(100vw - 32px))}.task-overview strong{font:36px var(--serif);font-variant-numeric:tabular-nums}.task-overview p{min-height:3em;font-size:14px;overflow-wrap:anywhere}.task-overview progress{width:100%;height:5px;accent-color:var(--ink)}.task-files{list-style:none;padding:0;margin:20px 0;max-height:38dvh;overflow:auto}.task-files li{display:grid;gap:7px;padding:13px 0;border-bottom:1px solid var(--line);font-size:14px;overflow-wrap:anywhere}.task-files small{color:var(--muted);font-size:12px}.task-files~.modal-footer{flex-wrap:wrap}
@keyframes orbit-spin{to{transform:rotate(360deg)}}
.quote-listen{min-height:44px;padding:10px 13px;border:1px solid currentColor;border-radius:6px;font:13px var(--sans);white-space:nowrap;background:transparent;color:inherit}.quote-selection-bar{max-width:850px}.quote-selection-actions{flex-wrap:wrap;justify-content:flex-end}.quote-selection-status{font-size:11px}
#reader-seek-root{position:relative;width:100%;max-width:360px;margin:0 auto;opacity:1}.reader-seek{display:block;width:100%;height:28px;margin:0;accent-color:var(--text,#263c34);cursor:ew-resize;touch-action:none}.reader-seek::-webkit-slider-thumb{width:18px;height:18px}.seek-endpoints{display:none;justify-content:space-between;font-size:10px}.seek-preview{position:absolute;bottom:calc(100% + 18px);left:50%;transform:translateX(-50%);width:max-content;max-width:min(560px,78vw);white-space:normal;padding:14px 20px;background:var(--paper,#faf7ef);color:var(--text,#263c34);border:1px solid #8884;border-radius:14px;box-shadow:0 10px 36px #0002;pointer-events:none;z-index:9}.seek-preview strong{display:block;font:500 15px/1.6 var(--sans)}.seek-preview span{display:block;font-size:12px;opacity:.7;margin-top:4px}.seek-preview[hidden]{display:none}.immersive-reader .reader-bottom{height:76px;padding-bottom:8px}.immersive-reader .reader-progress{opacity:1}.immersive-reader .reader-top .reader-heading{transition:opacity .2s}
.book-leaf-scene{contain:none!important;overflow:visible!important;z-index:2;isolation:isolate}
.book-leaf{position:absolute;top:0;height:100%;transform-style:preserve-3d;will-change:transform}
.leaf-crop{position:absolute;inset:0;overflow:hidden;background:var(--paper);pointer-events:none}.leaf-still{right:auto}
.leaf-face{backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateZ(.2px)}
.leaf-back{transform:rotateY(180deg) translateZ(.3px)}
.leaf-shade{position:absolute;inset:0;pointer-events:none;backface-visibility:visible;background:linear-gradient(90deg,#0000 0%,#0005 43%,#fff5 55%,#0000 100%);background-size:220% 100%;transform:translateZ(.7px);opacity:0}
.leaf-cast{position:absolute;inset:0;background:linear-gradient(90deg,transparent,#0005 47%,#0008 50%,#0005 53%,transparent);pointer-events:none;opacity:0}
.welcome-guide .modal{width:min(600px,calc(100vw - 32px));padding:28px 34px}.welcome-guide .modal-title h2{font-size:16px;color:var(--muted);font-weight:400}.guide-content h3{font:500 clamp(24px,3vw,32px)/1.5 var(--serif);margin:12px 0}.guide-content>p{min-height:5.8em;font-size:15px;line-height:1.9;color:var(--muted)}.guide-step{font-size:12px;letter-spacing:2px;font-variant-numeric:tabular-nums;color:var(--muted)}.guide-dots{display:flex;gap:7px;margin:20px 0 30px}.guide-dots span{width:6px;height:6px;border-radius:50%;background:#87908050}.guide-dots .active{width:26px;border-radius:6px;background:var(--ink)}.guide-actions{display:flex;justify-content:space-between;gap:8px;align-items:center}.guide-actions>div{display:flex;gap:8px}.guide-scene{height:160px;position:relative;margin:4px 0 24px;display:flex;align-items:center;justify-content:center;gap:12px;background:#e9ebdf80;overflow:hidden}.guide-scene i{display:block;width:60px;height:88px;background:#879d8b;box-shadow:inset 4px 0 #ffffff40;transform:rotate(-6deg);border-radius:1px 3px 3px 1px}.guide-scene i:nth-child(2){height:105px;background:#263c34;transform:translateY(-9px);animation:guide-lift 3s ease-in-out infinite}.guide-scene i:nth-child(3){background:#b8b99e;transform:rotate(7deg)}.guide-scene[data-scene=type] i{background:#faf7ef;box-shadow:0 4px 12px #263c3412,inset 0 -44px #eee9dc}.guide-scene[data-scene=listen] span{position:absolute;inset:10px;text-align:center;font:120px var(--serif);color:#c4ba88}.guide-scene[data-scene=vault] i{background:#263c34}.guide-scene span{pointer-events:none}.guide-scene[data-scene=import] i:nth-child(2){animation:guide-import 2s ease-in-out infinite}
@keyframes guide-lift{0%,100%{transform:translateY(-9px)}50%{transform:translateY(-17px)}}@keyframes guide-import{0%,100%{opacity:.4;transform:translateY(6px)}50%{opacity:1;transform:translateY(-9px)}}
.toc-tabs{display:flex;border-radius:10px;background:#8881;padding:4px;margin:12px 0 18px;gap:3px}.toc-tabs button{flex:1;min-height:40px;border:0;border-radius:7px;font-size:13px;color:inherit;background:transparent}.toc-tabs button.active{background:var(--paper);box-shadow:0 1px 4px #0001}.toc-close{float:right}.toc-book-title{font-size:13px;line-height:1.6;color:var(--muted);padding-right:32px}.toc-position{font-size:12px;margin:8px 0}.toc-mark{text-align:left;width:100%;padding:12px 0;border-bottom:1px solid #8882;background:none;color:inherit}.toc-mark span{display:block;line-height:1.8;font-size:14px}.toc-mark small{font-size:11px;opacity:.65}
@media(max-width:600px){.quote-selection-bar{align-items:flex-start;gap:8px}.quote-selection-actions{max-width:145px;gap:5px}.quote-selection-actions .quote-save,.quote-listen{padding:8px 10px;min-height:38px;font-size:12px}.quote-dismiss{position:absolute;right:0;top:-38px;background:var(--paper);border:1px solid #8883;border-radius:50%;width:32px;height:32px}.import-orbit{right:13px;bottom:90px;width:48px;height:48px}.import-orbit svg{inset:2px}.welcome-guide .modal{padding:20px}.guide-content>p{min-height:7em}.guide-scene{height:125px}.guide-actions .text-btn{font-size:12px;padding:6px}.guide-actions .secondary,.guide-actions .primary{padding:10px 12px;font-size:13px}.immersive-reader .reader-bottom{height:64px}.reader-seek{height:24px}}
@media(prefers-reduced-motion:reduce){.guide-scene i,.import-orbit.is-running .orbit-track{animation:none!important}.orbit-value{transition:none}}
[hidden]{display:none!important}
.guide-language-mark{display:flex;align-items:baseline;justify-content:center;gap:20px;color:#526b58;background:linear-gradient(135deg,#e8ebdf,#f2f0e6);padding:24px;margin:0 0 24px;font:56px/1.2 var(--serif);border-radius:3px}.guide-language-mark span{font-size:24px;color:#8b9982}.guide-language>p{min-height:0;margin-bottom:20px}.guide-languages{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0 28px}.guide-language-option{min-height:64px;padding:15px;border:1px solid var(--line);border-radius:5px;text-align:left;font-size:16px;transition:background .15s,color .15s}.guide-language-option[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}.page-viewport-snapshot,.page-text-fragment{pointer-events:none}.page-viewport-snapshot mark{background:#ead48c;color:inherit}.reader-motion-snapshot img{user-select:none;-webkit-user-drag:none}
@media(max-width:600px){.guide-language .guide-actions{align-items:stretch;flex-direction:column-reverse;gap:18px}.guide-language .guide-actions>.primary{width:100%;min-height:46px}.guide-language-option{min-height:55px}}

.book-search-field{display:flex;gap:8px;margin:10px 0 16px}.book-search-field input{min-width:0;flex:1;background:transparent;color:inherit}.book-search-field .primary{flex-shrink:0;padding:10px 14px}.search-status{font-size:12px;line-height:1.8;opacity:.7;margin:12px 0}.book-search-result{display:block;text-align:left;width:100%;padding:16px 0;border-bottom:1px solid #8883}.book-search-result small{display:block;font-size:11px;opacity:.65;margin-bottom:7px}.book-search-result span{font:15px/1.9 var(--sans);overflow-wrap:anywhere}.book-search-result mark{background:#e5ce86;color:inherit;border-radius:2px}.search-more{margin-top:16px;width:100%}.reader-search-return{position:absolute;bottom:88px;left:50%;transform:translateX(-50%);z-index:4;background:var(--paper);color:var(--text);border:1px solid #8884;border-radius:22px;padding:10px 18px;font-size:12px;box-shadow:0 5px 18px #0001}.controls-hidden .reader-search-return{opacity:0;visibility:hidden}.book-search-panel{width:min(480px,calc(100vw - 32px))!important}

.backup-progress{width:100%;height:6px;accent-color:var(--ink);margin:14px 0}.backup-status{font-size:16px!important;line-height:1.8}.backup-detail{min-height:3em;overflow-wrap:anywhere}.backup-scope{padding:18px 0;margin:16px 0;border-block:1px solid var(--line)}.backup-scope label{display:flex;gap:10px;align-items:center;font-size:14px}.backup-scope p{margin:10px 0}.backup-missing{font-size:13px;padding:14px;background:#8a996514;border:1px solid #8a99652b;border-radius:6px;margin-top:16px;max-height:180px;overflow:auto}.backup-missing ul{padding-left:20px;margin:10px 0 0;line-height:1.9}
.book-search-panel{height:min(720px,calc(100dvh - 110px));display:flex;flex-direction:column;overflow:hidden!important}.book-search-panel>.reader-panel-title,.book-search-panel>form,.book-search-panel>.search-status,.book-search-panel>.search-more{flex-shrink:0}.book-search-results{overflow-y:auto;min-height:0;flex:1;overscroll-behavior:contain}
