@font-face{font-family:"PT Serif";font-style:normal;font-weight:400;font-display:swap;src:url(./pt-serif-cyrillic-400-normal-B-euljER.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"PT Serif";font-style:normal;font-weight:400;font-display:swap;src:url(./pt-serif-latin-400-normal-Cx0mQj7e.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"PT Serif";font-style:normal;font-weight:700;font-display:swap;src:url(./pt-serif-cyrillic-700-normal-DvVvs_4R.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"PT Serif";font-style:normal;font-weight:700;font-display:swap;src:url(./pt-serif-latin-700-normal-Bsuo9jes.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(./inter-cyrillic-400-normal-obahsSVq.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(./inter-latin-400-normal-C38fXH4l.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(./inter-cyrillic-600-normal-CWCymEST.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(./inter-latin-600-normal-LgqL8muc.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #F4EBDD;--card: #FBF6EE;--ink: #1A1714;--muted: #6B6358;--line: #E3D7C4;--border: #D9CBB4;--card-border: #E6DAC6;--tick: #C9B89C;--accent: #B3261E;--book: "PT Serif", Georgia, "Times New Roman", serif;--ui: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--ui);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}#app{max-width:480px;margin:0 auto;min-height:100vh;min-height:100dvh}button{font:inherit;color:inherit}a{color:var(--ink)}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.icon{width:22px;height:22px;flex:none}.library{display:flex;flex-direction:column;gap:24px;padding:calc(20px + env(safe-area-inset-top)) 20px calc(28px + env(safe-area-inset-bottom))}.library-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.wordmark{margin:0;font-family:var(--book);font-size:30px;font-weight:700;letter-spacing:-.01em}.wordmark span{color:var(--accent)}.section-title{margin:0;font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.section{display:flex;flex-direction:column;gap:12px}.book-card{display:flex;gap:16px;padding:16px;border-radius:20px;background:var(--card);border:1px solid var(--card-border)}.cover{box-sizing:border-box;width:72px;height:104px;flex:none;padding:10px 8px;border-radius:6px;color:var(--bg);font-family:var(--book);display:flex;flex-direction:column;justify-content:space-between}.cover-title{font-size:11px;line-height:1.2;hyphens:auto;-webkit-hyphens:auto;overflow-wrap:anywhere}.cover-author{font-size:9px;opacity:.85}.book-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.book-title{margin:0;font-family:var(--book);font-size:18px;font-weight:700;line-height:1.25}.book-author{margin:2px 0 0;font-size:14px;color:var(--muted)}.book-meta{margin:0;font-size:13px;color:var(--muted)}.bar{height:4px;border-radius:2px;background:var(--line);overflow:hidden}.bar-fill{height:100%;background:var(--accent);width:0}.btn-primary{align-self:flex-start;min-height:44px;padding:0 20px 0 16px;border:0;border-radius:22px;background:var(--ink);color:var(--bg);font-size:15px;font-weight:600;display:inline-flex;align-items:center;gap:8px;text-decoration:none;cursor:pointer}.notice{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:16px;border:1px solid var(--card-border);background:var(--card);font-size:14px;line-height:1.45}.notice p{margin:0;flex:1}.notice-close{min-width:44px;min-height:44px;margin:-12px -12px -12px 0;border:0;background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer}.notice-error{border-color:var(--accent)}.header-actions{display:flex;align-items:center;gap:8px}.icon-btn.outlined{border:1px solid var(--border);color:var(--ink)}.icon-btn.filled{background:var(--ink);color:var(--bg)}.icon-btn.small{width:40px;height:44px;color:var(--muted)}.icon-btn.small .icon{width:18px;height:18px}.upload{min-height:60px;border:1.5px dashed var(--tick);border-radius:16px;display:flex;align-items:center;gap:14px;padding:8px 16px;cursor:pointer}.upload[aria-busy=true]{opacity:.6;cursor:progress}.upload-text{display:flex;flex-direction:column;gap:2px}.upload-title{font-size:15px;font-weight:600}.upload-hint{font-size:13px;color:var(--muted)}.upload:focus-within,#book-file:focus-visible+.upload{outline:2px solid var(--ink);outline-offset:2px}.book-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.book-row{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line)}.book-row:last-child{border-bottom:0}.book-row-link{flex:1;min-width:0;display:flex;align-items:center;gap:14px;padding:10px 0;text-decoration:none;color:var(--ink)}.cover-sm{width:40px;height:56px;flex:none;border-radius:4px}.book-row-text{display:flex;flex-direction:column;gap:2px;min-width:0}.book-row-title{font-family:var(--book);font-size:16px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-row-author{font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-status{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--muted);white-space:nowrap}.row-status .icon{width:16px;height:16px}.row-confirm{display:flex;align-items:center;gap:4px}.btn-danger{min-height:40px;padding:0 14px;border:0;border-radius:20px;background:var(--accent);color:#fff8f0;font-size:14px;font-weight:600;cursor:pointer}.btn-text{min-height:44px;padding:0 12px;border:0;background:transparent;display:inline-flex;align-items:center;font-size:15px;font-weight:600;color:var(--ink);text-decoration:none;cursor:pointer}.shelf{display:flex;gap:12px;overflow-x:auto;margin:0 -20px;padding:0 20px 4px;scrollbar-width:none;scroll-snap-type:x proximity}.shelf::-webkit-scrollbar{display:none}.shelf-item{flex:none;text-decoration:none;scroll-snap-align:start;border-radius:8px}.cover.cover-lg{width:96px;height:136px;padding:12px 10px;border-radius:8px}.cover-lg .cover-title{font-size:14px}.cover-lg .cover-author{font-size:11px}.reader{display:flex;flex-direction:column;height:100vh;height:100dvh;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.reader-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 8px}.icon-btn{width:44px;height:44px;flex:none;border:0;padding:0;background:transparent;display:flex;align-items:center;justify-content:center;border-radius:22px;cursor:pointer}.reader-title{flex:1;min-width:0;text-align:center}.reader-title p{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reader-title .t1{font-size:15px;font-weight:600}.reader-title .t2{margin-top:2px;font-size:12px;color:var(--muted)}.stage{flex:1;display:flex;flex-direction:column;justify-content:center;gap:12px;padding:0 20px;border:0;background:transparent;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;text-align:left}.ticks{display:flex;width:100%}.ticks .l{flex:2 1 0}.ticks .r{flex:3 1 0}.ticks .m{width:2px;height:18px;border-radius:1px;background:var(--tick)}.word{margin:0;display:flex;align-items:baseline;width:100%;font-family:var(--book);font-size:clamp(30px,9.5vw,42px);font-weight:400;line-height:1.2;white-space:pre}.word .l{flex:2 1 0;min-width:0;display:flex;justify-content:flex-end}.word .m{color:var(--accent)}.word .r{flex:3 1 0;min-width:0}.status{min-height:20px;margin:4px 0 0;text-align:center;font-size:13px;color:var(--muted)}.reader-bottom{display:flex;flex-direction:column;gap:20px;padding:0 20px 28px}.progress-row{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--muted)}.wpm-label{margin:0;text-align:center;font-size:15px;font-weight:600}.controls{display:flex;align-items:center;justify-content:space-between}.ctrl{width:48px;height:48px;border-radius:24px;border:1px solid var(--border);background:transparent;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer}.ctrl.plain{border-color:transparent}.ctrl:disabled{opacity:.35;cursor:default}.ctrl-play{width:72px;height:72px;border-radius:36px;border:0;background:var(--ink);color:var(--bg);display:flex;align-items:center;justify-content:center;cursor:pointer}.ctrl-play .icon{width:28px;height:28px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.reader-loading,.reader-error{margin:auto;padding:24px;text-align:center;color:var(--muted);font-size:15px}.reader-error{display:flex;flex-direction:column;align-items:center;gap:16px;color:var(--ink)}.reader-error p{margin:0;line-height:1.45}.reader-error .btn-primary{align-self:center}.reader-warn{margin:0 20px;font-size:13px;line-height:1.4;color:var(--accent);text-align:center}.progress-row{margin-top:8px}.speed{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.speed-title{margin:0;font-size:17px;font-weight:600}.speed-body{display:flex;flex-direction:column;gap:28px;padding:8px 20px 28px}.speed-hero{display:flex;flex-direction:column;align-items:center;gap:4px}.speed-number{margin:0;font-family:var(--book);font-size:72px;font-weight:700;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.speed-unit{margin:0;font-size:15px;color:var(--muted)}.speed-book{margin:8px 0 0;font-size:13px;color:var(--muted);text-align:center}.slider{display:flex;flex-direction:column;gap:6px}.slider-label{font-size:13px;font-weight:600;color:var(--muted)}.slider input[type=range]{width:100%;height:44px;margin:0;accent-color:var(--ink);cursor:pointer}.scale-bar{height:6px;border-radius:3px;background:var(--line);overflow:hidden}.scale-bar span{display:block;height:100%;background:#3d5a4a}.scale{position:relative;height:18px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.scale span{position:absolute;top:0}.scale .mid{transform:translate(-50%)}.speed-note{margin:0;display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:var(--card);border:1px solid var(--card-border);font-size:13px;line-height:1.4}.speed-note[hidden]{display:none}.speed-note .icon{width:20px;height:20px}.presets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.preset{min-height:60px;border-radius:16px;border:1px solid var(--border);background:transparent;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;padding:8px 14px;text-align:left;cursor:pointer}.preset[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.preset-name{font-size:15px;font-weight:600}.preset-wpm{font-size:13px;opacity:.8}.toggles{display:flex;flex-direction:column}.toggle{min-height:68px;border:0;border-bottom:1px solid var(--line);background:transparent;display:flex;align-items:center;gap:16px;padding:10px 0;text-align:left;cursor:pointer}.toggle:last-child{border-bottom:0}.toggle-text{flex:1;display:flex;flex-direction:column;gap:2px}.toggle-name{font-size:15px;font-weight:600}.toggle-hint{font-size:13px;color:var(--muted)}.switch{width:48px;height:28px;flex:none;padding:3px;border-radius:14px;background:var(--border);display:flex;justify-content:flex-start;transition:background .15s}.switch span{width:22px;height:22px;border-radius:11px;background:var(--card)}.toggle[aria-pressed=true] .switch{background:var(--ink);justify-content:flex-end}html.preview,html.preview body,html.preview #app{height:100%;min-height:0}html.preview .reader{height:100%;padding-top:0;padding-bottom:0}html.preview .library{padding-top:20px;padding-bottom:28px}html.preview .speed{min-height:100%;padding-top:0;padding-bottom:0}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
