:root{--paper-home:#fff;--paper-reader:#fff;--paper-card:#fff;--ink:#111;--ink-soft:#333;--ink-mute:#666;--ink-faint:#999;--rule:#ccc;--rule-soft:#ddd;--accent:#00c;--accent-soft:#eef;--highlight:#fe6;--highlight-soft:#fff5aa;--warn:#c30}*{box-sizing:border-box}html,body{color:#111;background:#fff;margin:0;padding:0;font-family:system-ui,sans-serif}body{padding:0 8px}img{max-width:100%;height:auto}.topbar{border-bottom:1px solid #ccc;flex-wrap:wrap;align-items:center;gap:12px;padding:6px 0;display:flex}.topbar-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-left:auto;display:flex}.user-menu,.width-picker{position:relative}.user-menu-popover,.width-menu,.upload-flyout{z-index:200;background:#fff;border:1px solid #999;min-width:200px;padding:6px;position:absolute;top:calc(100% + 4px);right:0}.ctx{z-index:200;background:#fff;border:1px solid #999;min-width:200px;padding:6px;position:fixed}.user-menu-item,.ctx-item,.width-option{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:0;padding:6px 8px;text-decoration:none;display:block}.user-menu-item:hover,.ctx-item:hover,.width-option:hover{background:#eee}.ctx-sep{border-top:1px solid #ccc;margin:4px 0}.upload-drop{text-align:center;cursor:pointer;border:2px dashed #999;padding:16px}.upload-drop.drag-over{background:#eee;border-color:#000}.modal-backdrop{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-box{background:#fff;border:1px solid #999;width:92%;max-width:480px;max-height:90vh;padding:20px;overflow-y:auto}.reader-body{align-items:flex-start;display:flex}.toc{border-right:1px solid #ccc;flex-shrink:0;width:260px;max-height:100vh;padding:8px 8px 40px 0;position:sticky;top:0;overflow-y:auto}.reader-body.toc-collapsed .toc{display:none}.toc-item{text-align:left;cursor:pointer;width:100%;font:inherit;color:#444;background:0 0;border:0;padding:4px 6px;display:block}.toc-item.active{color:#000;font-weight:700}.toc-item.focused{text-decoration:underline}.toc-item.focus-dim{opacity:.4}.toc-d1{padding-left:20px}.toc-d2{padding-left:34px}.toc-d3{padding-left:48px}.reader-stage{flex:1;align-items:flex-start;min-width:0;padding:0 12px;display:flex}.reader-column{flex:1;min-width:0;margin:0 auto}.reader-body[data-width=narrow] .reader-column{max-width:600px}.reader-body[data-width=medium] .reader-column{max-width:720px}.reader-body[data-width=wide] .reader-column{max-width:880px}.reader-body[data-width=wider] .reader-column{max-width:1040px}.fc-layer{flex-shrink:0;width:340px;position:relative}.fc-layer.is-hidden{display:none}.fc-group{position:absolute;left:12px;right:0}.fc-layer.is-settled .fc-group{transition:top .16s}@media (prefers-reduced-motion:reduce){.fc-layer.is-settled .fc-group{transition:none}}.flashcard{background:#fff;border:1px solid #999;padding:8px}.flashcard.is-active{border-color:#000}.fc-sep{border:0;border-top:1px solid #ccc;margin:6px 0}mark.epub-highlight{background:var(--highlight);cursor:pointer}mark.epub-highlight.active{outline:2px solid #c90}.sel-pop,.hl-delete-pill{cursor:pointer;font:inherit;background:#fff;border:1px solid #333;padding:4px 10px}.epub-content,.epub-content *{color:#111!important;background-color:#0000!important}.epub-content mark.epub-highlight,.epub-content mark.epub-highlight *{background:var(--highlight)!important}.epub-content img{max-width:100%;height:auto}.epub-content .epub-hidden{cursor:pointer;font-size:0;line-height:0}.epub-content .epub-hidden:before{content:"···";cursor:pointer;-webkit-user-select:none;user-select:none;border:1px dashed #999;margin:0 2px;padding:1px 6px;font-size:12px;display:inline-block}.card-editor{white-space:pre-wrap;word-break:break-word;outline:0;width:100%;min-height:1.5em}.card-editor:empty:before{content:attr(data-placeholder);color:#999;pointer-events:none;font-style:italic}.rv-front-editor:focus,.rv-back-editor:focus{outline:none}.rv-front-editor:empty:before,.rv-back-editor:empty:before{content:attr(data-placeholder);color:#999;font-style:italic}.book-row{border-bottom:1px solid #ddd;align-items:center;gap:12px;padding:6px 0;display:flex}.book-title-cell{flex:1;min-width:0}.progress-track{vertical-align:middle;background:#ddd;width:80px;height:8px;display:inline-block}.progress-fill{background:#444;height:100%}.card-row{border-bottom:1px solid #ddd;align-items:flex-start;gap:12px;padding:8px 0;display:flex}.btn{color:#111;cursor:pointer;min-height:40px;font:inherit;background:#fff;border:1px solid #333;justify-content:center;align-items:center;gap:6px;padding:8px 14px;text-decoration:none;display:inline-flex}.btn-primary{color:#fff;background:#111}.btn:disabled{opacity:.5}input,select,textarea,button{font:inherit;font-size:16px}.auth-root{max-width:420px;margin:0 auto;padding:24px 0}.auth-heading{margin:12px 0}.auth-field{margin-bottom:12px}.auth-label{margin-bottom:4px;display:block}.auth-input{border:1px solid #999;width:100%;padding:10px}.auth-submit{color:#fff;cursor:pointer;background:#111;border:1px solid #333;width:100%;min-height:44px;margin-top:8px}.auth-error{color:#c00;border:1px solid #c00;margin-bottom:12px;padding:8px}.rv-dash-body{max-width:720px;margin:0 auto;padding:8px 0}.rv-stats-row{flex-wrap:wrap;gap:8px;display:flex}.rv-stat-card{border:1px solid #ccc;flex:1;min-width:90px;padding:8px 12px}.rv-stat-value{font-size:22px;font-weight:700}.rv-heatmap-wrap{overflow-x:auto}.rv-section{margin:20px 0}.rv-book-row{border-bottom:1px solid #ddd;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;display:flex}.rv-body{max-width:640px;margin:0 auto;padding:8px 0}.rv-progress-wrap{flex:1;align-items:center;gap:8px;min-width:120px;display:flex}.rv-progress-track{background:#ddd;flex:1;height:8px}.rv-progress-fill{background:#444;height:100%}.rv-source{justify-content:space-between;align-items:center;gap:8px;margin:10px 0 6px;display:flex}.rv-card{border:1px solid #999;padding:16px}.rv-front{font-size:20px;line-height:1.4}.rv-back{font-size:17px;line-height:1.5}.rv-divider{border-top:1px solid #ccc;margin:12px 0}.rv-actions{gap:8px;margin-top:16px;display:flex}.rv-actions .btn{flex-direction:column;flex:1;gap:2px;min-height:56px}.rv-interval{color:#666;font-size:12px}.rv-hint{color:#888;text-align:center;margin-top:12px;font-size:12px}@media (pointer:coarse){.rv-kbd,.rv-hint{display:none}}html.app-mode .brand,html.app-mode .auth-brand,html.app-mode .auth-sub{display:none}.pdf-text-layer{text-align:initial;forced-color-adjust:none;transform-origin:0 0;caret-color:canvastext;z-index:0;-moz-text-size-adjust:none;text-size-adjust:none;-webkit-user-select:text;user-select:text;--scale-factor:1;--user-unit:1;--total-scale-factor:calc(var(--scale-factor) * var(--user-unit));--scale-round-x:1px;--scale-round-y:1px;--min-font-size:1;--text-scale-factor:calc(var(--total-scale-factor) * var(--min-font-size));--min-font-size-inv:calc(1 / var(--min-font-size));line-height:1;position:absolute;inset:0;overflow:clip}.pdf-text-layer :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;-webkit-user-select:text;user-select:text;position:absolute}.pdf-text-layer>:not(.markedContent),.pdf-text-layer .markedContent span:not(.markedContent){z-index:1;--font-height:0;--scale-x:1;--rotate:0deg;font-size:calc(var(--text-scale-factor) * var(--font-height));transform:rotate(var(--rotate)) scaleX(var(--scale-x)) scale(var(--min-font-size-inv))}.pdf-text-layer .markedContent{display:contents}.pdf-text-layer span[role=img]{-webkit-user-select:none;user-select:none;cursor:default}.pdf-text-layer .endOfContent{z-index:0;cursor:default;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:100% 0 0}.pdf-text-layer.selecting .endOfContent{top:0}.pdf-text-layer ::selection{background:#5a78f04d}
