:root{color-scheme:dark;--bg: #0b0a14;--bg-2: #131225;--fg: #f5f3ff;--muted: #9b97b8;--dim: #5f5a82;--accent: #8b5cf6;--accent-2: #3b82f6;--danger: #ef4444;--safe-top: env(safe-area-inset-top, 0);--safe-bottom: env(safe-area-inset-bottom, 0)}*{box-sizing:border-box}html,body{margin:0;height:100%;background:radial-gradient(ellipse at top,#1a1633 0%,var(--bg) 60%);color:var(--fg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,SF Pro Text,sans-serif;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;user-select:none}#app{min-height:100dvh;display:block}.view{min-height:100dvh;display:grid;grid-template-rows:auto 1fr auto;padding:calc(var(--safe-top) + 12px) 20px calc(var(--safe-bottom) + 16px)}.view[hidden]{display:none!important}.view-library{grid-template-rows:auto 1fr}.topbar{display:flex;align-items:baseline;gap:12px;padding:4px 4px 16px}.brand{margin:0;font-size:22px;font-weight:700;letter-spacing:-.02em;background:linear-gradient(135deg,#c4b5fd,#93c5fd);-webkit-background-clip:text;background-clip:text;color:transparent}.brand .dot{color:var(--accent);-webkit-text-fill-color:var(--accent)}.book-title{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.upload-btn{margin-left:auto;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;border:0;font:inherit;font-size:13px;font-weight:500;padding:8px 14px;border-radius:999px;cursor:pointer;box-shadow:0 4px 14px #8b5cf659}.link-back{background:none;border:0;color:var(--muted);font:inherit;font-size:14px;cursor:pointer;padding:0}.link-back:hover{color:var(--fg)}.library-empty{text-align:center;padding:60px 20px;color:var(--muted)}.library-empty p{margin:0 0 8px}.library-empty .dim{color:var(--dim);font-size:13px;line-height:1.6}.library-empty code{background:#ffffff12;padding:1px 6px;border-radius:4px;font-size:12px}.book-list{list-style:none;margin:0;padding:8px 0 80px;display:grid;gap:12px}.book-card{position:relative;background:#ffffff0a;border:1px solid rgba(255,255,255,.06);border-radius:14px;transition:background .15s ease}.book-card:hover{background:#ffffff12}.book-ready{cursor:default}.book-generating{opacity:.85}.book-failed{border-color:#ef444466}.book-main{width:100%;text-align:left;background:transparent;border:0;color:inherit;font:inherit;cursor:pointer;padding:16px 56px 16px 18px;display:grid;gap:6px}.book-main:disabled{cursor:default}.book-card-title{font-size:16px;font-weight:500;color:var(--fg)}.book-card-meta{font-size:12px;color:var(--muted)}.book-status{letter-spacing:.02em}.book-card-meta .dim{color:var(--dim)}.book-progress{margin-top:8px}.book-progress-bar{height:3px;background:#ffffff12;border-radius:2px;overflow:hidden}.book-progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .4s ease}.book-progress-text{font-size:11px;color:var(--dim);margin-top:4px;font-variant-numeric:tabular-nums}.book-error{margin-top:6px;font-size:12px;color:#fca5a5}.book-delete{position:absolute;top:50%;right:14px;transform:translateY(-50%);background:transparent;border:0;color:var(--dim);cursor:pointer;width:32px;height:32px;display:grid;place-items:center;border-radius:8px}.book-delete:hover{color:#ef4444;background:#ef44441a}.progress{display:grid;gap:4px}.progress-bar{height:3px;background:#ffffff12;border-radius:2px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .2s linear;width:0%}.time-row{display:flex;justify-content:space-between;font-size:11px;color:var(--dim);font-variant-numeric:tabular-nums}.dialog{border:0;border-radius:18px;padding:0;width:min(420px,calc(100% - 32px));background:#141225;color:var(--fg);box-shadow:0 24px 60px #0009}.dialog::backdrop{background:#0009;backdrop-filter:blur(4px)}.dialog form{display:grid;gap:16px;padding:22px}.dialog h2{margin:0;font-size:18px}.dialog label{display:grid;gap:6px;font-size:12px;color:var(--muted)}.dialog input[type=text],.dialog select,.dialog input[type=file]{background:#0a0a14;border:1px solid #2a2540;color:var(--fg);border-radius:10px;padding:10px 12px;font:inherit;font-size:14px;width:100%}.dialog input[type=file]{padding:8px;cursor:pointer}.dialog small{color:var(--dim)}.dialog-actions{display:flex;gap:10px;justify-content:flex-end}.dialog-actions button{padding:9px 16px;border-radius:10px;border:0;background:#2a2540;color:var(--fg);font:inherit;cursor:pointer}.dialog-actions .primary{background:linear-gradient(135deg,var(--accent),var(--accent-2))}.dialog-actions button:disabled{opacity:.6;cursor:wait}.view-editor{grid-template-rows:auto auto 1fr auto;gap:12px}.view-reader{display:flex;flex-direction:column;height:100dvh;max-height:100dvh;overflow:hidden;padding-bottom:0}.view-reader .passage{flex:1;min-height:0;overflow-y:auto;justify-content:flex-start;padding-bottom:280px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.15) transparent;scroll-behavior:smooth;-webkit-overflow-scrolling:touch}.view-reader .controls{position:fixed;left:0;right:0;bottom:0;padding:14px 20px calc(var(--safe-bottom) + 12px);background:linear-gradient(to bottom,#0b0a1400,#0b0a14a6 22%,#0b0a14eb 60%);backdrop-filter:blur(20px) saturate(170%);-webkit-backdrop-filter:blur(20px) saturate(170%);z-index:50}.editor-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 4px 12px;border-bottom:1px solid rgba(255,255,255,.06)}.editor-summary{font-size:13px;color:var(--muted)}.editor-toolbar-actions{display:flex;gap:8px}.btn{border:1px solid rgba(255,255,255,.1);background:#ffffff0d;color:var(--fg);padding:8px 14px;border-radius:999px;font:inherit;font-size:13px;cursor:pointer}.btn:hover{background:#ffffff14}.btn:disabled{opacity:.6;cursor:wait}.btn-primary{border-color:transparent;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;box-shadow:0 3px 12px #8b5cf64d}.chapter-list{list-style:none;margin:0;padding:0 0 12px;display:grid;gap:10px;overflow-y:auto}.chapter-card{background:#ffffff0a;border:1px solid rgba(255,255,255,.07);border-radius:12px;overflow:hidden;transition:background .15s ease}.chapter-card.chapter-ready{border-color:#22c55e40}.chapter-card.chapter-generating{border-color:#8b5cf659}.chapter-card.chapter-partial{border-color:#eab3084d}.chapter-card.chapter-failed{border-color:#ef44444d}.chapter-header{display:flex;align-items:center;gap:10px;width:100%;background:transparent;border:0;color:var(--fg);font:inherit;font-size:15px;padding:14px;text-align:left;cursor:pointer}.chapter-header:hover{background:#ffffff08}.chapter-level{font-family:ui-monospace,SF Mono,Consolas,monospace;color:var(--dim);font-size:12px;width:28px;flex-shrink:0}.chapter-header-title{flex:1;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chapter-status-badge{flex-shrink:0}.chapter-caret{color:var(--dim);font-size:12px;flex-shrink:0}.badge{font-size:11px;padding:3px 9px;border-radius:999px;font-weight:500;letter-spacing:.02em}.badge-editing{background:#94a3b826;color:#cbd5e1}.badge-generating{background:#8b5cf633;color:#c4b5fd}.badge-ready{background:#22c55e2e;color:#86efac}.badge-partial{background:#eab3082e;color:#fde68a}.badge-failed{background:#ef44442e;color:#fca5a5}.chapter-body{padding:4px 14px 16px;display:grid;gap:12px;border-top:1px solid rgba(255,255,255,.04)}.chapter-field{display:grid;gap:6px;font-size:12px;color:var(--muted)}.chapter-field input,.chapter-field textarea{background:#0a0a14;border:1px solid #2a2540;color:var(--fg);border-radius:10px;padding:10px 12px;font:inherit;font-size:14px;width:100%;resize:vertical}.chapter-field textarea{font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:13px;line-height:1.55;min-height:120px}.chapter-stats{font-size:11px;color:var(--dim);font-variant-numeric:tabular-nums}.chapter-error{font-size:12px;color:#fca5a5;background:#ef444414;padding:8px 10px;border-radius:8px}.chapter-actions{display:flex;gap:8px;flex-wrap:wrap}.editor-hint{font-size:11px;color:var(--dim);line-height:1.5;margin:0;padding:0 4px}.editor-hint strong{color:var(--muted)}.chapter-switcher{display:flex;align-items:center;gap:6px;margin-left:auto;flex-shrink:0}.ch-nav{width:28px;height:28px;border-radius:999px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;color:var(--fg);font:inherit;font-size:16px;line-height:1;cursor:pointer;display:grid;place-items:center}.ch-nav:hover:not(:disabled){background:#ffffff14}.ch-nav:disabled{color:var(--dim);opacity:.5;cursor:not-allowed}.ch-label{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;min-width:50px;text-align:center}.voice-row{display:flex;gap:8px;align-items:stretch}.voice-row select{flex:1}.voice-preview{width:40px;height:40px;border-radius:10px;border:1px solid #2a2540;background:#0a0a14;color:var(--fg);cursor:pointer;display:grid;place-items:center;position:relative;flex-shrink:0}.voice-preview:hover{background:#15122a;border-color:#3a3055}.voice-preview svg{display:none}.voice-preview[data-state=idle] .voice-preview-play{display:block}.voice-preview[data-state=playing] .voice-preview-stop{display:block;color:var(--accent)}.voice-preview[data-state=loading] .voice-preview-spinner{display:block}.voice-preview-spinner{display:none;width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.15);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.passage{display:flex;flex-direction:column;justify-content:center;gap:14px;min-height:0;overflow:hidden;padding:8px 4px}.passage-prev,.passage-next{margin:0;font-size:15px;line-height:1.55;color:var(--dim);max-height:4em;overflow:hidden;text-overflow:ellipsis}.passage-current{margin:0;font-size:22px;line-height:1.45;letter-spacing:-.005em;color:var(--fg);font-weight:500}.word{transition:background .15s ease-out,color .15s ease-out;border-radius:6px;padding:2px 0;-webkit-box-decoration-break:clone;box-decoration-break:clone}.word-read{color:var(--dim)}.word-active{background:linear-gradient(135deg,#8b5cf62e,#3b82f624);color:#f5f3ff;box-shadow:inset 0 -2px #8b5cf68c}.controls{display:grid;gap:12px;padding-top:12px}.status{text-align:center;font-size:12px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-variant-numeric:tabular-nums}.meter{position:relative;height:4px;background:#ffffff0f;border-radius:2px;overflow:hidden}.meter-fill{position:absolute;inset:0 auto 0 0;width:0%;background:linear-gradient(90deg,#22c55e,#eab308 60%,#ef4444);transition:width 60ms linear}.meter-mark{position:absolute;top:-2px;bottom:-2px;width:2px}.meter-floor{background:#7dd3fccc}.control-row{display:flex;align-items:center;justify-content:center;gap:24px}.control-row.secondary{gap:14px}.ctl{width:56px;height:56px;border-radius:50%;border:0;background:#ffffff0f;color:var(--fg);display:grid;place-items:center;cursor:pointer;transition:transform .1s ease,background .15s ease}.ctl:active{transform:scale(.94)}.ctl:hover{background:#ffffff1a}.ctl-primary{width:76px;height:76px;background:linear-gradient(135deg,var(--accent),var(--accent-2));box-shadow:0 8px 28px #8b5cf673;color:#fff}.ctl-primary:hover{background:linear-gradient(135deg,var(--accent),var(--accent-2))}.ctl-mic{width:44px;height:44px;background:#ffffff0a;color:var(--muted);position:relative}.ctl-mic .mic-icon-live,.ctl-mic .mic-icon-muted{display:none}.ctl-mic[data-state=off] .mic-icon-live,.ctl-mic[data-state=on] .mic-icon-live,.ctl-mic[data-state=muted] .mic-icon-muted{display:block}.ctl-mic[data-state=on]{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;box-shadow:0 4px 14px #ef444466;animation:mic-pulse 1.8s ease-in-out infinite}.ctl-mic[data-state=muted]{background:#94a3b81f;color:#94a3b8}@keyframes mic-pulse{0%,to{box-shadow:0 4px 14px #ef444466}50%{box-shadow:0 4px 18px #ef4444a6}}.speed{background:#ffffff0f;color:var(--fg);border:0;height:36px;min-width:60px;padding:0 14px;border-radius:18px;cursor:pointer;font:inherit;font-size:14px;font-weight:500;font-variant-numeric:tabular-nums}.speed:hover{background:#ffffff1a}.hint{text-align:center;font-size:11px;color:var(--dim);padding:4px 16px;line-height:1.4}
