*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%}body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.app-root[data-theme=light]{--bg: #f2f2f7;--surface: #ffffff;--toolbar: rgba(249, 249, 251, .82);--label: #000000;--label-2: rgba(60, 60, 67, .6);--label-3: rgba(60, 60, 67, .3);--separator: rgba(60, 60, 67, .18);--fill: rgba(118, 118, 128, .12);--fill-strong: rgba(118, 118, 128, .2);--accent: #007aff;--accent-pressed: #0067e0;--danger: #ff3b30;--danger-fill: rgba(255, 59, 48, .12);--shadow: 0 .5px 0 rgba(0, 0, 0, .04)}.app-root[data-theme=dark]{--bg: #000000;--surface: #1c1c1e;--toolbar: rgba(30, 30, 32, .72);--label: #ffffff;--label-2: rgba(235, 235, 245, .6);--label-3: rgba(235, 235, 245, .3);--separator: rgba(84, 84, 88, .6);--fill: rgba(118, 118, 128, .24);--fill-strong: rgba(118, 118, 128, .36);--accent: #0a84ff;--accent-pressed: #409cff;--danger: #ff453a;--danger-fill: rgba(255, 69, 58, .18);--shadow: none}.app-root{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,sans-serif;background:var(--bg);color:var(--label)}.app-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.55rem 1rem;padding-top:calc(.55rem + env(safe-area-inset-top));padding-left:calc(1rem + env(safe-area-inset-left));padding-right:calc(1rem + env(safe-area-inset-right));background:var(--toolbar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:.5px solid var(--separator);flex-shrink:0;z-index:20}.app-title{font-size:1.0625rem;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:.45rem 1rem;border:none;border-radius:11px;background:var(--fill);color:var(--label);font-size:.95rem;font-weight:590;font-family:inherit;letter-spacing:-.01em;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s ease,transform .08s ease,opacity .15s ease}.btn:hover:not(:disabled){background:var(--fill-strong)}.btn:active:not(:disabled){transform:scale(.96)}.btn:disabled{opacity:.35;cursor:default}.btn-icon{min-width:44px;padding:.45rem .6rem;font-size:1.15rem;line-height:1}.btn-play{background:var(--accent);color:#fff;padding-inline:1.25rem}.btn-play:hover:not(:disabled){background:var(--accent-pressed)}.btn-stop{background:var(--danger-fill);color:var(--danger)}.btn-stop:hover:not(:disabled){background:var(--danger-fill);filter:brightness(1.1)}.file-pick-btn{display:inline-flex;align-items:center;cursor:pointer;padding:.4rem .85rem;min-height:36px;background:var(--accent);border-radius:10px;color:#fff;font-size:.9rem;font-weight:590;-webkit-tap-highlight-color:transparent;transition:background .15s,transform .08s}.file-pick-btn:active{transform:scale(.96)}.settings-btn{min-height:36px;min-width:36px;padding:.3rem .55rem;font-size:1.15rem;background:var(--fill)}.settings-btn--active{background:var(--accent);color:#fff}.splash{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;color:var(--label-2);font-size:1.0625rem;text-align:center;padding:2rem}.splash-pick-btn{margin-top:.75rem}.reader-layout{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0}.viewer-wrapper{flex:1 1 auto;min-height:0;background:var(--surface);position:relative}.tap-zone{position:absolute;top:0;bottom:0;width:30%;background:transparent;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent;z-index:10;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0}.tap-zone--prev{left:0}.tap-zone--next{right:0}.tap-zone:active{background:#0000000a}.text-layer{flex-shrink:0;max-height:24vh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:.85rem 1.1rem;padding-left:calc(1.1rem + env(safe-area-inset-left));padding-right:calc(1.1rem + env(safe-area-inset-right));background:var(--bg);border-top:.5px solid var(--separator);font-size:1rem;line-height:1.75;color:var(--label-2)}.sentence{border-radius:6px;transition:background .2s,color .2s;padding:0 .1em}.sentence--active{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--label)}.controls-bar{display:flex;flex-direction:column;gap:.55rem;padding:.6rem 1rem;padding-bottom:calc(.6rem + env(safe-area-inset-bottom));padding-left:calc(1rem + env(safe-area-inset-left));padding-right:calc(1rem + env(safe-area-inset-right));background:var(--toolbar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:.5px solid var(--separator);flex-shrink:0;z-index:20}.transport-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.playback-btns{display:flex;align-items:center;gap:.5rem}.meta-row{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.5rem .85rem}.engine-badge{font-size:.8rem;font-weight:590;padding:.25rem .6rem;border-radius:999px;white-space:nowrap}.engine-badge--webSpeech{background:color-mix(in srgb,#34c759 18%,transparent);color:#2faa4e}.engine-badge--cloudflare{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}.voice-select,.settings-select{max-width:60vw;padding:.4rem .6rem;background:var(--fill);border:none;border-radius:9px;color:var(--label);font-size:.9rem;font-family:inherit;-moz-appearance:none;appearance:none;-webkit-appearance:none}.rate-label{display:flex;align-items:center;gap:.45rem;font-size:.85rem;color:var(--label-2);white-space:nowrap}.rate-slider,.settings-range{width:110px;cursor:pointer;accent-color:var(--accent)}.rate-value{min-width:2.6ch;text-align:right;font-variant-numeric:tabular-nums;color:var(--label)}.voice-unavailable{font-size:.82rem;color:var(--danger)}.reading-progress{font-size:.8rem;color:var(--label-2);font-variant-numeric:tabular-nums;white-space:nowrap;padding:.2rem .5rem;border-radius:999px;background:var(--fill)}.settings-panel{background:var(--surface);border-bottom:.5px solid var(--separator);padding:.9rem 1rem;padding-left:calc(1rem + env(safe-area-inset-left));padding-right:calc(1rem + env(safe-area-inset-right));flex-shrink:0;display:flex;flex-direction:column;gap:.85rem;max-height:70vh;overflow-y:auto;-webkit-overflow-scrolling:touch}.settings-header{display:flex;align-items:center;justify-content:space-between}.settings-title{font-weight:700;font-size:1.0625rem;letter-spacing:-.01em}.settings-close-btn{min-height:32px;min-width:32px;padding:.2rem .5rem;font-size:.95rem}.settings-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.settings-label{font-size:.95rem;color:var(--label);white-space:nowrap;min-width:6rem}.settings-note{font-size:.82rem;color:var(--label-2);line-height:1.5}.settings-note--warn{color:var(--danger)}.settings-range-val{font-size:.9rem;min-width:3ch;text-align:right;font-variant-numeric:tabular-nums;color:var(--label-2)}.engine-toggle{display:inline-flex;gap:2px;padding:2px;background:var(--fill);border-radius:9px}.engine-btn{min-height:32px;border:none;border-radius:7px;background:transparent;color:var(--label);font-size:.875rem;font-weight:590;padding:.3rem .85rem}.engine-btn:hover:not(:disabled){background:transparent}.engine-btn--active{background:var(--surface);color:var(--label);box-shadow:0 1px 3px #0000001f}.app-root[data-theme=dark] .engine-btn--active{background:var(--fill-strong);box-shadow:none}.epub-error-banner{flex-shrink:0;display:flex;align-items:center;gap:.5rem;padding:.6rem 1rem;background:var(--danger-fill);border-bottom:.5px solid var(--separator);color:var(--danger);font-size:.9rem;line-height:1.45}
