:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.sidebar{position:fixed;left:0;top:0;bottom:0;width:240px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:200;overflow-y:auto;overflow-x:hidden}.sidebar-brand{padding:16px 20px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.sidebar-logo{font-size:17px;font-weight:700;color:var(--text);text-decoration:none;letter-spacing:-.01em}.sidebar-logo:hover{color:var(--accent)}.sidebar-nav{display:flex;flex-direction:column;padding:12px 0;flex-shrink:0}.sidebar-nav-item{display:flex;align-items:center;gap:10px;padding:10px 20px;color:var(--text-dim);text-decoration:none;font-size:14px;font-weight:500;border-left:3px solid transparent;transition:background .12s,color .12s,border-color .12s;position:relative}.sidebar-nav-item:hover{background:var(--surface-hover);color:var(--text)}.sidebar-nav-item--active{color:var(--accent);background:#6366f11a;border-left-color:var(--accent)}.sidebar-nav-icon{font-size:16px;flex-shrink:0;width:20px;text-align:center}.sidebar-nav-label{flex:1}.sidebar-badge{display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;font-size:10px;font-weight:700;min-width:18px;height:18px;border-radius:9px;padding:0 5px;line-height:1}.sidebar-spacer{flex:1}.sidebar-status-section{padding:4px 0;border-top:1px solid var(--border);flex-shrink:0}.sidebar-status-wrap{padding:0}.sidebar-status-btn{display:flex;align-items:center;gap:8px;width:100%;padding:10px 20px;background:none;border:none;color:var(--text-dim);font-size:13px;font-weight:500;cursor:pointer;text-align:left;border-radius:0;transition:background .12s,color .12s}.sidebar-status-btn:hover{background:var(--surface-hover);color:var(--text)}.sidebar-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block}.sidebar-dot--checking{background:var(--text-dim);animation:sidebar-dot-pulse 1.4s ease-in-out infinite}.sidebar-dot--connected{background:var(--success)}.sidebar-dot--cold{background:var(--warning);animation:sidebar-dot-pulse 2s ease-in-out infinite}.sidebar-dot--busy{background:#3b82f6}.sidebar-dot--offline{background:var(--danger)}@keyframes sidebar-dot-pulse{0%,to{opacity:1}50%{opacity:.35}}.sidebar-status-label{flex:1}.sidebar-status-chevron{font-size:10px;color:var(--text-dim)}.sidebar-status-details{padding:8px 20px 12px;background:var(--bg);border-top:1px solid var(--border)}.sidebar-status-detail-line{font-size:11px;color:var(--text-dim);line-height:1.6;word-break:break-word}.sidebar-status-checking{font-size:11px;color:var(--text-dim);font-style:italic}.sidebar-footer{border-top:1px solid var(--border);padding:4px 0 8px;flex-shrink:0}.sidebar-logout{display:flex;align-items:center;gap:10px;width:100%;padding:10px 20px;background:none;border:none;color:var(--text-dim);font-size:14px;font-weight:500;cursor:pointer;text-align:left;border-left:3px solid transparent;transition:background .12s,color .12s}.sidebar-logout:hover{background:#ef444414;color:var(--danger)}.sidebar-hamburger{display:none;position:fixed;top:var(--hamburger-offset, 8px);left:var(--hamburger-offset, 8px);z-index:300;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:var(--hamburger-size, 40px);height:var(--hamburger-size, 40px);font-size:18px;color:var(--text);cursor:pointer;align-items:center;justify-content:center;touch-action:manipulation;transition:background .12s}.sidebar-hamburger:hover{background:var(--surface-hover)}.sidebar-hamburger:active{transform:scale(.94)}.sidebar-backdrop{display:none;position:fixed;inset:0;background:#0000008c;z-index:199}@media(max-width:768px){.sidebar{transform:translate(-100%);transition:transform .22s cubic-bezier(.4,0,.2,1);z-index:201;width:280px}.sidebar--open{transform:translate(0);box-shadow:4px 0 24px #0006}.sidebar-hamburger{display:flex}.sidebar-backdrop{display:block}}@keyframes page-fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.page-transition-enter{animation:page-fade-in .15s ease-out forwards}.skeleton{background:var(--surface);border-radius:var(--radius);animation:skeleton-pulse 1.4s ease-in-out infinite}.skeleton-card{height:120px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);animation:skeleton-pulse 1.4s ease-in-out infinite}.skeleton-text{height:14px;background:var(--surface-hover);border-radius:4px;animation:skeleton-pulse 1.4s ease-in-out infinite;margin-bottom:8px}@media(max-width:1024px){.template-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.prompt-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}@media(max-width:640px){.character-page{padding-bottom:5.5rem}.template-grid,.prompt-grid{grid-template-columns:1fr}.template-card{width:100%}.draft-actions{flex-direction:row;flex-wrap:wrap;gap:.5rem;width:100%}.draft-actions .btn-sm{flex:1;min-height:2.75rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;touch-action:manipulation}.template-actions{flex-direction:row;gap:.5rem;width:100%}.template-actions .btn-sm{flex:1;min-height:2.75rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;touch-action:manipulation}.editor-actions{flex-direction:column;gap:.5rem}.editor-actions button{width:100%;min-height:2.75rem;text-align:center;touch-action:manipulation}.preset-header{gap:.5rem;padding:.75rem}.tab-bar{flex-wrap:wrap;gap:.3rem}.tab{flex:1;min-width:5rem;text-align:center;min-height:2.75rem;touch-action:manipulation}.drafts-toolbar{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.drafts-toolbar button{width:100%;min-height:2.75rem;touch-action:manipulation}.toolbar-right{flex-direction:column;width:100%;gap:.5rem}.toolbar-right button{width:100%;min-height:2.75rem;touch-action:manipulation}.draft-audio audio,.audio-player audio{width:100%}.draft-list{gap:.75rem}input[type=file]{width:100%;min-height:2.75rem}}.char-sticky-bar{display:none}@media(max-width:640px){.char-sticky-bar{display:flex;gap:.5rem;position:fixed;bottom:0;left:0;right:0;z-index:200;padding:.6rem 1rem;padding-bottom:max(.6rem,env(safe-area-inset-bottom));padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right));background:#1a1a2eeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--border, #2a2e3a)}.char-sticky-bar button{flex:1;min-height:2.75rem;font-size:.875rem;touch-action:manipulation}}.projects-page{max-width:900px;margin:0 auto;padding:1.5rem}.projects-header{margin-bottom:1.5rem}.projects-header h1{font-size:1.75rem;margin:0 0 .25rem}.projects-subtitle{color:var(--text-muted, #888);margin:0}.upload-card{background:var(--card-bg, #1e1e2e);border:1px solid var(--border-color, #333);border-radius:8px;padding:1.25rem;margin-bottom:1.5rem}.upload-card h2{margin:0 0 .75rem;font-size:1rem;color:var(--text-muted, #aaa);text-transform:uppercase;letter-spacing:.05em}.upload-form-row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.upload-title-input{flex:1;min-width:180px;padding:.5rem .75rem;background:var(--input-bg, #2a2a3e);border:1px solid var(--border-color, #444);border-radius:4px;color:var(--text, #e0e0e0);font-size:.95rem}.file-label{display:inline-flex;align-items:center;padding:.5rem .75rem;background:var(--input-bg, #2a2a3e);border:1px solid var(--border-color, #444);border-radius:4px;cursor:pointer;font-size:.9rem;color:var(--text-muted, #aaa);min-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-label input[type=file]{display:none}.upload-error{color:#e24a4a;margin:.5rem 0 0;font-size:.875rem}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.project-card{background:var(--card-bg, #1e1e2e);border:1px solid var(--border-color, #333);border-radius:8px;padding:1rem;cursor:pointer;transition:border-color .15s,background .15s}.project-card:hover{border-color:#4a90e2;background:var(--card-hover, #252538)}.project-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.project-title{font-size:1rem;margin:0;line-height:1.3;flex:1;word-break:break-word}.btn-delete-small{background:none;border:none;color:var(--text-muted, #888);cursor:pointer;padding:.2rem .4rem;font-size:.85rem;border-radius:3px;flex-shrink:0}.btn-delete-small:hover{background:#e24a4a26;color:#e24a4a}.project-meta{display:flex;gap:.75rem;font-size:.8rem;color:var(--text-muted, #888);margin-bottom:.5rem;flex-wrap:wrap}.project-date{margin-left:auto}.project-progress{height:4px;background:var(--border-color, #333);border-radius:2px;position:relative;margin-top:.25rem}.project-progress-bar{height:100%;background:#4ae24a;border-radius:2px;transition:width .3s}.project-progress-label{position:absolute;right:0;top:6px;font-size:.7rem;color:var(--text-muted, #888)}.empty-state{text-align:center;padding:3rem;color:var(--text-muted, #888)}.project-detail-page{max-width:900px;margin:0 auto;padding:1.5rem}.project-detail-header{margin-bottom:1.5rem}.project-detail-header h1{font-size:1.75rem;margin:.5rem 0 .25rem}.project-detail-meta{color:var(--text-muted, #888);margin:0;font-size:.9rem}.btn-back{background:none;border:none;color:#4a90e2;cursor:pointer;padding:0;font-size:.9rem}.btn-back:hover{text-decoration:underline}.section-card{background:var(--card-bg, #1e1e2e);border:1px solid var(--border-color, #333);border-radius:8px;padding:1.25rem;margin-bottom:1rem}.section-card h2{margin:0;font-size:1rem;color:var(--text-muted, #aaa);text-transform:uppercase;letter-spacing:.05em}.section-card-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.section-card-actions{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.empty-hint{color:var(--text-muted, #888);font-size:.9rem;margin:0}.cast-table{width:100%;border-collapse:collapse;font-size:.9rem}.cast-table th{text-align:left;padding:.4rem .75rem;color:var(--text-muted, #aaa);font-weight:500;border-bottom:1px solid var(--border-color, #333)}.cast-table td{padding:.5rem .75rem;border-bottom:1px solid rgba(255,255,255,.05)}.speaker-tag{background:#4a90e226;border:1px solid rgba(74,144,226,.3);border-radius:3px;padding:.1rem .4rem;font-size:.85rem;color:#4a90e2}.no-template{color:var(--text-muted, #666);font-style:italic}.chapters-list{display:flex;flex-direction:column;gap:.5rem}.chapter-row{border:1px solid var(--border-color, #333);border-radius:6px;overflow:hidden;transition:border-color .15s}.chapter-row:hover{border-color:#4a90e2}.chapter-row-main{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;cursor:pointer;background:var(--row-bg, transparent)}.chapter-status-badge{font-size:1rem;flex-shrink:0}.chapter-info{flex:1;min-width:0}.chapter-title{font-size:.95rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chapter-progress{margin-top:.3rem;max-width:300px}.chapter-progress-track{display:flex;height:4px;border-radius:2px;overflow:hidden;background:var(--border-color, #333);width:100%}.chapter-progress-seg{height:100%;transition:width .3s;min-width:0}.chapter-progress-seg--rendered{background:#4ae24a}.chapter-progress-seg--matched{background:#c9a800}.chapter-progress-seg--unmatched{background:#e24a4a}.chapter-progress-seg--failed{background:#888}.chapter-progress-label{display:flex;align-items:center;gap:.25rem;font-size:.75rem;color:var(--text-muted, #888);margin-top:.15rem}.chapter-progress-matched{color:#c9a800}.chapter-progress-unmatched{color:#e24a4a}.chapter-counts{font-size:.8rem;color:var(--text-muted, #888);flex-shrink:0}.chapter-actions{display:flex;gap:.4rem;padding:.4rem .75rem;background:#00000026;border-top:1px solid var(--border-color, #333)}.btn-sm{padding:.3rem .65rem;font-size:.8rem;border-radius:4px;border:1px solid var(--border-color, #444);cursor:pointer;background:var(--input-bg, #2a2a3e);color:var(--text, #e0e0e0);transition:background .1s,border-color .1s}.btn-sm:hover:not(:disabled){background:var(--btn-hover, #3a3a50)}.btn-view{color:var(--text-muted, #aaa)}.loading-text{color:var(--text-muted, #888);text-align:center;padding:2rem}.section-hint{color:var(--text-muted, #888);font-size:.85rem;margin:0 0 .75rem}.cast-table-wrapper{overflow-x:auto}.cast-table--editable td{padding:.4rem .5rem;vertical-align:middle}.cast-select{width:100%;min-width:140px;padding:.3rem .5rem;background:var(--input-bg, #2a2a3e);border:1px solid var(--border-color, #444);border-radius:4px;color:var(--text, #e0e0e0);font-size:.85rem;cursor:pointer}.cast-select:disabled{opacity:.5;cursor:not-allowed}.cast-save-row{display:flex;align-items:center;gap:.75rem;margin-top:.75rem}.cast-save-error{color:#e24a4a;font-size:.85rem}.cast-saved-ok{color:#4ae24a;font-size:.85rem}.match-stats{margin-top:1rem;padding:.75rem 1rem;border-radius:6px;font-size:.9rem}.match-stats--ok{background:#4ae24a14;border:1px solid rgba(74,226,74,.25)}.match-stats--warn{background:#e2a84a14;border:1px solid rgba(226,168,74,.3)}.match-stats-summary{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.match-stats-icon{font-size:1rem}.match-stats-toggle{font-size:.8rem;margin-left:auto}.match-stats-detail{margin-top:.75rem;padding-top:.75rem;border-top:1px solid rgba(255,255,255,.07)}.match-stats-hint{font-size:.8rem;color:var(--text-muted, #888);margin:0 0 .5rem}.match-stats-speaker{margin-bottom:.5rem}.match-stats-speaker code{font-size:.85rem;color:#4a90e2}.match-stats-speaker ul{list-style:none;padding:0;margin:.25rem 0 0 .75rem}.match-stats-speaker li{font-size:.82rem;color:var(--text-muted, #aaa);padding:.1rem 0}.btn-export{border-color:#e24ae266;color:#c8f}.btn-export:hover:not(:disabled){background:#e24ae21a}@media(max-width:640px){.project-detail-page{padding:1rem;padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right));padding-bottom:max(1rem,env(safe-area-inset-bottom))}.project-detail-header h1{font-size:1.4rem}.chapter-row-main{flex-wrap:wrap;padding:.75rem;gap:.5rem}.chapter-info{width:100%;flex-basis:100%}.chapter-title{font-size:.9rem;white-space:normal;overflow:visible;text-overflow:unset}.chapter-progress{max-width:100%;margin-top:.4rem}.chapter-progress-track{height:6px}.chapter-counts{font-size:.85rem;margin-left:auto}.chapter-actions{flex-wrap:wrap;gap:.4rem;padding:.5rem .75rem}.chapter-actions .btn-sm{flex:1;min-height:2.75rem;text-align:center;touch-action:manipulation;display:inline-flex;align-items:center;justify-content:center}.cast-table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.cast-table th,.cast-table td{padding:.5rem .4rem;font-size:.875rem}.cast-select{min-width:120px;min-height:2.75rem;font-size:.875rem;touch-action:manipulation}.cast-save-row{flex-direction:column;gap:.5rem}.cast-save-row button{width:100%;min-height:2.75rem;touch-action:manipulation}.section-card-actions{flex-direction:column;width:100%;gap:.5rem}.section-card-actions button,.section-card-actions label{width:100%;min-height:2.75rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;touch-action:manipulation;box-sizing:border-box;cursor:pointer}.section-card-header{flex-direction:column;align-items:flex-start}.upload-area{padding:2rem 1rem;min-height:100px}.match-stats-summary{flex-direction:column;align-items:flex-start;gap:.4rem}}@media(max-width:1024px){.project-detail-page{padding:1.25rem}.section-card-header{flex-wrap:wrap}.cast-table-wrapper{overflow-x:auto}}.cast-section-collapsible{display:block}@media(max-width:640px){.cast-section-collapsible{display:none;overflow:hidden}.cast-section-collapsible.cast-section-open{display:block}}.cast-section-toggle{display:none}@media(max-width:640px){.cast-section-toggle{display:inline}}.chapter-detail-page{max-width:900px;margin:0 auto;padding:1.5rem}.breadcrumb{display:flex;align-items:center;gap:.4rem;font-size:.85rem;margin-bottom:.75rem;flex-wrap:wrap}.breadcrumb a{color:#4a90e2;text-decoration:none}.breadcrumb a:hover{text-decoration:underline}.breadcrumb-sep{color:var(--text-muted, #666)}.breadcrumb-current{color:var(--text, #e0e0e0);font-weight:500}.chapter-header{margin-bottom:1rem}.chapter-header h1{font-size:1.5rem;margin:.5rem 0 .25rem}.chapter-header-meta{display:flex;gap:.5rem;align-items:center;font-size:.85rem;color:var(--text-muted, #888);flex-wrap:wrap}.chapter-active-badge{font-size:.8rem;color:#e2a84a;animation:pulse 1.5s ease-in-out infinite}.render-all-progress{font-size:.8rem;color:#4a90e2;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.chapter-action-bar{display:flex;gap:.5rem;margin-bottom:1.25rem;flex-wrap:wrap;align-items:center}.btn-primary{padding:.5rem 1rem;background:#4a90e2;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .15s}.btn-primary:hover:not(:disabled){background:#3a80d2}.btn-secondary{padding:.5rem 1rem;background:var(--input-bg, #2a2a3e);color:#4ae24a;border:1px solid rgba(74,226,74,.4);border-radius:6px;cursor:pointer;font-size:.9rem;transition:background .15s}.btn-secondary:hover:not(:disabled){background:#4ae24a1a}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.export-group{display:flex;align-items:center;gap:.3rem;margin-left:auto;flex-wrap:wrap}.silence-select{padding:.4rem .5rem;background:var(--input-bg, #2a2a3e);border:1px solid var(--border-color, #444);border-radius:4px;color:var(--text, #e0e0e0);font-size:.85rem;cursor:pointer}.btn-export{padding:.5rem .85rem;background:var(--input-bg, #2a2a3e);color:#c8f;border:1px solid rgba(200,100,255,.4);border-radius:6px;cursor:pointer;font-size:.9rem;transition:background .15s}.btn-export:hover:not(:disabled){background:#c864ff1a}.btn-export:disabled{opacity:.5;cursor:not-allowed}.btn-export--md{color:#8cf;border-color:#64b4ff66}.btn-export--md:hover:not(:disabled){background:#64b4ff1a}.btn-overlay-toggle{padding:.5rem 1rem;background:var(--input-bg, #2a2a3e);color:var(--text, #e0e0e0);border:1px solid var(--border-color, #444);border-radius:6px;cursor:pointer;font-size:.9rem;white-space:nowrap;transition:background .15s}.btn-overlay-toggle:hover{background:#ffffff12}.segment-editor{background:var(--card-bg, #1e1e2e);border:1px solid var(--border-color, #333);border-radius:10px;padding:1.25rem;display:flex;flex-direction:column;gap:1rem}.seg-nav{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.btn-nav{width:2.5rem;height:2.5rem;background:var(--input-bg, #2a2a3e);border:1px solid var(--border-color, #444);border-radius:6px;color:var(--text, #e0e0e0);font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .1s}.btn-nav:hover:not(:disabled){background:#ffffff1a}.btn-nav:disabled{opacity:.35;cursor:not-allowed}.seg-nav-info{display:flex;align-items:center;gap:.75rem;flex:1;justify-content:center;flex-wrap:wrap}.seg-nav-counter{font-size:1rem;font-weight:600;color:var(--text, #e0e0e0)}.seg-status-badge{font-size:.8rem;padding:.2rem .6rem;border-radius:12px;border:1px solid;font-weight:500}.seg-duration{font-size:.8rem;color:var(--text-muted, #888)}.seg-field-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.seg-field-group{display:flex;flex-direction:column;gap:.35rem}.seg-field-label{font-size:.8rem;color:var(--text-muted, #888);font-weight:500;min-width:5.5rem;flex-shrink:0}.seg-speaker-tag{padding:.2rem .6rem;background:#4a90e21f;border:1px solid rgba(74,144,226,.35);border-radius:4px;font-size:.875rem;color:#4a90e2;font-weight:500}.seg-input{flex:1;padding:.4rem .6rem;background:var(--input-bg, #2a2a3e);border:1px solid var(--border-color, #444);border-radius:4px;color:var(--text, #e0e0e0);font-size:.9rem;min-width:0}.seg-input:focus{outline:none;border-color:#4a90e2}.seg-textarea{width:100%;box-sizing:border-box;padding:.6rem .75rem;background:var(--input-bg, #2a2a3e);border:1px solid var(--border-color, #444);border-radius:6px;color:var(--text, #e0e0e0);font-size:.95rem;font-family:inherit;line-height:1.6;resize:vertical}.seg-textarea:focus{outline:none;border-color:#4a90e2}.seg-textarea--sm{font-size:.875rem}.seg-text-hint{font-size:.75rem;color:var(--text-muted, #666);align-self:flex-end}.seg-template-group{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.seg-select{flex:1;min-width:140px;padding:.35rem .5rem;background:var(--input-bg, #2a2a3e);border:1px solid var(--border-color, #444);border-radius:4px;color:var(--text, #e0e0e0);font-size:.875rem;cursor:pointer}.template-preview-wrap{display:flex;align-items:center;gap:.3rem}.template-preview-error{font-size:.75rem;color:#e24a4a}.seg-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.seg-actions-right{display:flex;gap:.5rem;margin-left:auto}.btn-sm{padding:.35rem .75rem;font-size:.82rem;border-radius:4px;border:1px solid var(--border-color, #444);cursor:pointer;background:var(--input-bg, #2a2a3e);color:var(--text, #e0e0e0);transition:background .1s;white-space:nowrap}.btn-sm:disabled{opacity:.5;cursor:not-allowed}.btn-save{border-color:#4a90e266;color:#4a90e2}.btn-save:hover:not(:disabled){background:#4a90e21a}.btn-render{border-color:#4a90e266;color:#4a90e2}.btn-render:hover:not(:disabled){background:#4a90e21a}.btn-approve{border-color:#4ae24a66;color:#4ae24a}.btn-approve:hover:not(:disabled){background:#4ae24a1a}.btn-split{border-color:#e2a84a66;color:#e2a84a}.btn-split:hover:not(:disabled){background:#e2a84a1a}.btn-merge{border-color:#c864ff66;color:#c8f}.btn-merge:hover:not(:disabled){background:#c864ff1a}.btn-preview{border-color:#4ae24a66;color:#4ae24a;padding:.3rem .65rem}.btn-preview:hover:not(:disabled){background:#4ae24a1a}.btn-play{border-color:#4ae24a66;color:#4ae24a}.btn-play:hover:not(:disabled){background:#4ae24a1a}.btn-link{background:none;border:none;color:#4a90e2;cursor:pointer;font-size:.85rem;padding:0;text-decoration:underline}.seg-audio-section{border-top:1px solid var(--border-color, #333);padding-top:.75rem}.segment-audio{width:100%;height:36px}.audio-loading{font-size:.85rem;color:var(--text-muted, #888);font-style:italic}.audio-error{display:flex;align-items:center;gap:.5rem;color:#e24a4a;font-size:.85rem}.seg-save-error{padding:.4rem .75rem;background:#e24a4a1a;border:1px solid rgba(226,74,74,.3);border-radius:4px;color:#e24a4a;font-size:.85rem}.segment-error{padding:.5rem .75rem;background:#e24a4a1a;border:1px solid rgba(226,74,74,.3);border-radius:4px;color:#e24a4a;font-size:.85rem}.error-banner{background:#e24a4a1a;border:1px solid rgba(226,74,74,.3);border-radius:6px;padding:.75rem 1rem;color:#e24a4a;margin-bottom:1rem}.error-inline{color:#e24a4a}.keyboard-hint{margin-top:.75rem;font-size:.75rem;color:var(--text-muted, #555);text-align:center}.loading-text{color:var(--text-muted, #888);text-align:center;padding:3rem}.empty-hint{color:var(--text-muted, #888);font-size:.9rem}.overlay-backdrop{position:fixed;inset:0;background:#0000008c;z-index:1000;display:flex;justify-content:flex-end}.overlay-panel{width:min(420px,92vw);height:100vh;background:var(--card-bg, #1a1a2e);border-left:1px solid var(--border-color, #333);display:flex;flex-direction:column;overflow:hidden;animation:slide-in .18s ease}@keyframes slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.overlay-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem .75rem;border-bottom:1px solid var(--border-color, #333);flex-shrink:0}.overlay-title{font-size:1rem;font-weight:600;margin:0;color:var(--text, #e0e0e0)}.overlay-close{background:none;border:none;color:var(--text-muted, #888);font-size:1.1rem;cursor:pointer;padding:.25rem .5rem;border-radius:4px;transition:background .1s}.overlay-close:hover{background:#ffffff14}.overlay-filters{padding:.75rem 1rem;display:flex;flex-direction:column;gap:.5rem;border-bottom:1px solid var(--border-color, #333);flex-shrink:0}.overlay-search{width:100%;box-sizing:border-box;padding:.4rem .6rem;background:var(--input-bg, #2a2a3e);border:1px solid var(--border-color, #444);border-radius:5px;color:var(--text, #e0e0e0);font-size:.875rem}.overlay-search:focus{outline:none;border-color:#4a90e2}.overlay-filter-select{width:100%;padding:.35rem .5rem;background:var(--input-bg, #2a2a3e);border:1px solid var(--border-color, #444);border-radius:4px;color:var(--text, #e0e0e0);font-size:.82rem;cursor:pointer}.overlay-list{flex:1;overflow-y:auto;padding:.5rem 0}.overlay-empty{text-align:center;color:var(--text-muted, #888);padding:2rem;font-size:.875rem}.overlay-item{display:flex;align-items:center;gap:.6rem;width:100%;padding:.6rem 1rem;background:none;border:none;border-bottom:1px solid rgba(255,255,255,.04);cursor:pointer;text-align:left;transition:background .1s;color:var(--text, #e0e0e0)}.overlay-item:hover{background:#ffffff0d}.overlay-item--active{background:#4a90e21f!important}.overlay-item-idx{font-size:.72rem;color:var(--text-muted, #666);min-width:1.8rem;text-align:right;flex-shrink:0}.overlay-item-speaker{font-size:.75rem;padding:.1rem .4rem;background:#ffffff0f;border-radius:3px;flex-shrink:0;white-space:nowrap;color:#4a90e2}.overlay-item-text{flex:1;font-size:.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text, #ccc)}.overlay-item-status{font-size:.72rem;flex-shrink:0;white-space:nowrap}.mobile-action-bar{display:none}@media(max-width:640px){.chapter-action-bar{display:none}.mobile-action-bar{display:flex;align-items:center;gap:.5rem;position:fixed;bottom:0;left:0;right:0;z-index:200;padding:.6rem 1rem;padding-bottom:max(.6rem,env(safe-area-inset-bottom));padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right));background:#1a1a2eeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--border-color, #333)}.mobile-action-btn{flex:1;min-height:2.75rem;font-size:.875rem;padding:.6rem .5rem;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;touch-action:manipulation}.mobile-more-wrap{position:relative;flex-shrink:0}.mobile-more-wrap>.mobile-action-btn{flex:none;min-width:2.75rem;padding:.6rem .75rem}.mobile-more-backdrop{position:fixed;inset:0;z-index:198}.mobile-more-menu{position:absolute;bottom:calc(100% + .5rem);right:0;min-width:180px;background:var(--card-bg, #1e1e2e);border:1px solid var(--border-color, #333);border-radius:8px;padding:.4rem 0;z-index:199;box-shadow:0 -4px 20px #00000080}.mobile-more-item{display:block;width:100%;padding:.75rem 1rem;background:none;border:none;color:var(--text, #e0e0e0);font-size:.9rem;text-align:left;cursor:pointer;touch-action:manipulation;transition:background .1s;min-height:2.75rem}.mobile-more-item:disabled{opacity:.4;cursor:not-allowed}.mobile-more-item:not(:disabled):active{background:#ffffff14}.mobile-more-separator{height:1px;background:var(--border-color, #333);margin:.3rem 0}.chapter-detail-page{padding-bottom:calc(var(--bottom-bar-h) + env(safe-area-inset-bottom) + 1rem)}}@media(max-width:640px){.chapter-detail-page{padding:.75rem;padding-bottom:calc(var(--bottom-bar-h) + env(safe-area-inset-bottom) + 1rem)}.chapter-header h1{font-size:1.2rem}.segment-editor{padding:.9rem;padding-bottom:calc(var(--bottom-bar-h) + env(safe-area-inset-bottom) + 1rem);gap:.75rem}.seg-nav{gap:.5rem;padding-left:calc(var(--hamburger-size) + var(--hamburger-offset) * 2)}.seg-field-row{flex-direction:column;align-items:flex-start}.seg-field-label{min-width:unset}.seg-input,.seg-template-group{width:100%}.seg-actions,.seg-actions-right{display:none}.btn-nav{min-width:2.75rem;min-height:2.75rem}.overlay-panel{width:100vw}.export-group{margin-left:0;width:100%}.btn-export{flex:1;text-align:center}}.app-main--fullscreen .chapter-detail-page{height:100%;display:flex;flex-direction:column;overflow:hidden;padding:0;max-width:none}.app-main--fullscreen .breadcrumb{padding:6px 16px 0;margin-bottom:0;font-size:.8rem}.app-main--fullscreen .chapter-header{padding:4px 16px 0;margin-bottom:0}.app-main--fullscreen .chapter-header h1{font-size:1.1rem;margin:0}.app-main--fullscreen .chapter-header-meta{font-size:.75rem;gap:.35rem}.app-main--fullscreen .chapter-action-bar{padding:6px 16px;margin-bottom:0;border-bottom:1px solid var(--border-color, #333)}.app-main--fullscreen .segment-editor{flex:1;overflow:hidden;display:flex;flex-direction:column;border-radius:0;border-left:none;border-right:none;border-bottom:none;margin:0;padding:12px 16px;gap:8px}.app-main--fullscreen .seg-field-group--main-text{flex:1;overflow:hidden;display:flex;flex-direction:column;min-height:60px}.app-main--fullscreen .seg-field-group--main-text .seg-textarea{flex:1;resize:none;overflow-y:auto;min-height:60px}.app-main--fullscreen .keyboard-hint{display:none}@media(max-width:768px){.app-main--fullscreen .breadcrumb,.app-main--fullscreen .chapter-header,.app-main--fullscreen .chapter-action-bar{display:none}.app-main--fullscreen .chapter-detail-page{padding-bottom:0}}.chapter-detail-page.swipe-hint--left{box-shadow:inset -8px 0 16px #6366f12e;transition:box-shadow .1s ease}.chapter-detail-page.swipe-hint--right{box-shadow:inset 8px 0 16px #6366f12e;transition:box-shadow .1s ease}:root{--bg: #0f1117;--surface: #1a1d27;--surface-hover: #242836;--border: #2a2e3a;--text: #e4e4e7;--text-dim: #8b8fa3;--accent: #6366f1;--accent-hover: #818cf8;--danger: #ef4444;--success: #22c55e;--warning: #eab308;--radius: 8px;--sidebar-w: 240px;--hamburger-size: 40px;--hamburger-offset: 8px;--bottom-bar-h: 56px;--header-mobile-h: 48px}*{margin:0;padding:0;box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Inter,sans-serif;line-height:1.5}.app-header{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--border)}.app-header .logo{font-size:18px;font-weight:700;color:var(--text);text-decoration:none}.app-header nav{display:flex;gap:16px;align-items:center}.app-header nav a{color:var(--text-dim);text-decoration:none;font-size:14px}.app-header nav a:hover{color:var(--text)}.app-main{max-width:1200px;margin:0 auto;padding:24px}button,.btn-primary,.btn-secondary{cursor:pointer;border:none;border-radius:var(--radius);padding:8px 16px;font-size:14px;font-weight:500;transition:all .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:var(--surface-hover)}.btn-link{background:none;color:var(--text-dim);border:none;cursor:pointer;font-size:14px}.btn-link:hover{color:var(--text)}.btn-sm{padding:4px 10px;font-size:12px}.btn-danger{background:var(--danger);color:#fff}.btn-back{background:none;color:var(--text-dim);border:none;font-size:14px;cursor:pointer}.btn-back:hover{color:var(--text)}input,textarea,select{width:100%;padding:10px 12px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);font-size:14px;font-family:inherit;margin-bottom:12px}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent)}.auth-page{display:flex;justify-content:center;align-items:center;min-height:100vh;background:var(--bg)}.auth-card{background:var(--surface);padding:40px;border-radius:12px;width:100%;max-width:400px;border:1px solid var(--border)}.auth-card h1{font-size:24px;margin-bottom:4px}.auth-card h2{font-size:16px;color:var(--text-dim);margin-bottom:24px}.auth-card button[type=submit]{width:100%;padding:12px;margin-top:4px}.auth-link{margin-top:16px;text-align:center;font-size:14px;color:var(--text-dim)}.auth-link a{color:var(--accent);text-decoration:none}.error{color:var(--danger);font-size:14px;margin-top:12px}.status-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.status-info{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text-dim)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.green{background:var(--success)}.dot.red{background:var(--danger)}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.create-form{background:var(--surface);padding:20px;border-radius:var(--radius);border:1px solid var(--border);margin-bottom:16px}.character-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.character-card{background:var(--surface);padding:20px;border-radius:var(--radius);border:1px solid var(--border);text-decoration:none;color:var(--text);transition:all .15s}.character-card:hover{border-color:var(--accent);transform:translateY(-2px)}.character-card h4{margin-bottom:8px}.character-card .desc{font-size:13px;color:var(--text-dim)}.empty{color:var(--text-dim);font-size:14px}.page-header{margin-bottom:24px}.page-header h2{font-size:24px;margin:8px 0 4px}.base-desc{color:var(--text-dim);font-size:14px}section{background:var(--surface);padding:20px;border-radius:var(--radius);border:1px solid var(--border);margin-bottom:16px}section h3{margin-bottom:12px;font-size:16px}.preview-actions{display:flex;gap:8px;margin-bottom:12px}.hint{color:var(--text-dim);font-size:13px;margin-bottom:12px}.refine-result{background:var(--bg);padding:12px;border-radius:var(--radius);margin-top:12px}.refine-result p{margin-bottom:8px;font-size:14px}.refine-result code{background:var(--surface-hover);padding:2px 6px;border-radius:4px;font-size:13px}.emotion-group{margin-bottom:16px}.emotion-group h4{text-transform:capitalize;margin-bottom:8px;color:var(--text-dim);font-size:14px}.prompt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}.prompt-card{background:var(--bg);padding:12px;border-radius:var(--radius);border:1px solid var(--border)}.prompt-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.prompt-name{font-size:13px;font-weight:500}.prompt-desc{font-size:12px;color:var(--text-dim);margin-bottom:8px}.prompt-actions{display:flex;gap:4px}.badge{font-size:11px;padding:2px 6px;border-radius:4px;background:var(--surface-hover)}.badge.intense{background:var(--danger);color:#fff}.badge.medium{background:var(--warning);color:#000}.audio-player{display:flex;align-items:center;gap:8px;margin-top:8px}.audio-label{font-size:13px;color:var(--text-dim)}.play-btn{font-size:18px;background:var(--accent);color:#fff;border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center}.loading{text-align:center;padding:40px;color:var(--text-dim)}.account-page section,.config-page section{margin-bottom:16px}.info-row{display:flex;gap:8px;margin-bottom:8px;font-size:14px}.info-row span:first-child{color:var(--text-dim);min-width:100px}.text-green{color:var(--success)}.text-red{color:var(--danger)}.danger-zone{border-color:var(--danger)}.danger-zone h3{color:var(--danger)}.warning-text{color:var(--danger);font-size:14px;margin-bottom:12px}.btn-row{display:flex;gap:8px}.form-row{margin-bottom:12px}.form-row label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:4px}.flash{padding:10px 14px;border-radius:var(--radius);margin-bottom:16px;font-size:14px}.flash.success{background:#22c55e1a;color:var(--success);border:1px solid var(--success)}.flash.error{background:#ef44441a;color:var(--danger);border:1px solid var(--danger);display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.flash-actions{display:flex;gap:6px;align-items:center;flex-shrink:0}.btn-retry{background:var(--danger);color:#fff;border:none;white-space:nowrap}.btn-retry:hover{background:#dc2626}.btn-dismiss{background:transparent;color:var(--danger);border:1px solid var(--danger);white-space:nowrap}.btn-dismiss:hover{background:var(--danger);color:#fff}.flash.flash-duplicate{background:#ca8a041f;color:#c9a800;border:1px solid rgba(202,138,4,.5);display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.btn-warn{background:transparent;color:#c9a800;border:1px solid rgba(202,138,4,.6);white-space:nowrap}.btn-warn:hover{background:#ca8a0433}.btn-link-inline{background:transparent;color:#4a90e2;border:none;text-decoration:underline;cursor:pointer;white-space:nowrap;font-size:inherit;padding:.15rem .3rem}code{background:var(--surface-hover);padding:2px 6px;border-radius:4px;font-size:13px;font-family:JetBrains Mono,monospace}.base-section{position:relative}.base-desc-input{font-size:14px;resize:vertical}.preview-bar{position:sticky;top:0;z-index:10;background:var(--surface);border:1px solid var(--accent)}.tab-bar{display:flex;gap:4px;margin-bottom:16px}.tab{padding:10px 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;color:var(--text-dim);font-size:14px;font-weight:500;cursor:pointer}.tab.active{background:var(--surface-hover);color:var(--text);border-bottom-color:transparent}.presets-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.filter-group{display:flex;gap:4px}.btn-filter{padding:6px 12px;font-size:12px;background:var(--bg);color:var(--text-dim);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer}.btn-filter.active{background:var(--accent);color:#fff;border-color:var(--accent)}.preset-list{display:flex;flex-direction:column;gap:4px}.preset-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:border-color .15s}.preset-row.expanded{border-color:var(--accent)}.preset-row.has-prompt{border-left:3px solid var(--success)}.preset-header{display:flex;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;-webkit-user-select:none;user-select:none}.preset-header:hover{background:var(--surface-hover)}.preset-label{display:flex;align-items:center;gap:6px;min-width:200px;flex-shrink:0}.preset-type{font-size:16px}.preset-summary{flex:1;font-size:13px;color:var(--text-dim);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.preset-actions-compact{display:flex;align-items:center;gap:4px;flex-shrink:0}.expand-icon{color:var(--text-dim);font-size:12px;margin-left:4px}.btn-cast{background:var(--success);color:#fff}.btn-cast:hover{background:#16a34a}.badge.intensity-medium{background:var(--warning);color:#000}.badge.intensity-intense{background:var(--danger);color:#fff}.badge.intensity-full{background:var(--accent);color:#fff}.badge.cast{background:var(--success);color:#fff;font-size:10px}.preset-editor{padding:16px;border-top:1px solid var(--border);background:var(--bg)}.editor-field{margin-bottom:12px}.editor-field label{display:block;font-size:13px;font-weight:500;margin-bottom:4px}.editor-field label .hint{font-weight:400}.editor-field textarea{margin-bottom:0}.full-instruct{display:block;padding:8px 12px;background:var(--surface);border-radius:var(--radius);font-size:12px;color:var(--text-dim);word-break:break-all;white-space:pre-wrap}.editor-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}.refine-inline{margin-top:12px;padding:12px;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border)}.refine-inline textarea{margin-bottom:8px}.library-tab .emotion-group{margin-bottom:20px}.emotion-group .count{font-weight:400;color:var(--text-dim)}.presets-tab{background:none;border:none;padding:0}.connection-status{background:var(--surface);padding:12px 16px;border-radius:var(--radius);border:1px solid var(--border);margin-bottom:16px;transition:background .3s}.conn-header{display:flex;align-items:center;gap:8px;margin-bottom:4px;font-size:14px}.conn-detail{font-size:13px;color:var(--text-dim)}.conn-last-checked{font-size:11px;color:var(--text-dim);margin-top:4px;opacity:.7}.conn-refresh{margin-left:auto;padding:2px 8px;font-size:14px;line-height:1}@keyframes conn-flash{0%{background:var(--surface)}20%{background:#6366f12e}to{background:var(--surface)}}.conn-flash{animation:conn-flash 1.5s ease-out forwards}.no-gpu-warning{background:#ef444414;border:1px solid rgba(239,68,68,.35);border-left:3px solid var(--danger);border-radius:var(--radius);padding:10px 14px;font-size:13px;color:var(--danger);margin-bottom:16px;line-height:1.5}.info-box{background:var(--bg);padding:12px 16px;border-radius:var(--radius);border:1px solid var(--border);font-size:13px;color:var(--text-dim);margin-bottom:16px;line-height:1.6}.info-box strong{color:var(--text)}.info-box.technical{border-color:var(--accent);border-left:3px solid var(--accent)}.info-box code{font-size:12px}.technical-toggle{margin-bottom:8px;text-align:right}.quick-feedback-grid{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.btn-quick-feedback{background:var(--surface);color:var(--text-dim);border:1px solid var(--border);padding:6px 12px;font-size:12px;border-radius:16px;cursor:pointer;transition:all .15s;white-space:nowrap}.btn-quick-feedback:hover:not(:disabled){background:var(--accent);color:#fff;border-color:var(--accent)}.toolbar-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.preset-row.custom-preset{border-left:3px solid var(--accent)}.badge.custom{background:#6366f133;color:var(--accent-hover);border:1px solid var(--accent);font-size:10px}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;width:100%;max-width:560px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-header h3{font-size:18px}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}@media(max-width:768px){.modal-card{padding:16px}.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}}button,.btn-primary,.btn-secondary,.btn-nav,.btn-overlay-toggle,.btn-export,.btn-filter,.btn-sm,.tab,.overlay-item{touch-action:manipulation}@media(max-width:1024px){.app-main{padding:20px}.character-grid,.template-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.prompt-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}button:active:not(:disabled),.btn-primary:active:not(:disabled),.btn-secondary:active:not(:disabled),.btn-sm:active:not(:disabled),.btn-nav:active:not(:disabled),.btn-export:active:not(:disabled),.btn-overlay-toggle:active:not(:disabled),.btn-filter:active:not(:disabled),.tab:active:not(.active),.overlay-item:active{transform:scale(.97);filter:brightness(.88);transition:transform .08s ease,filter .08s ease}@media(hover:none){.character-card:hover{transform:none}.btn-primary:hover:not(:disabled){background:var(--accent)}.btn-secondary:hover:not(:disabled){background:var(--surface)}.btn-filter:hover{background:var(--bg);color:var(--text-dim)}.preset-header:hover{background:unset}.overlay-item:hover{background:none}}.overlay-panel{transition:transform .2s ease}@media(max-width:768px){.app-main{padding:12px}.app-header{padding:10px 12px}.app-header nav{gap:8px}.app-header nav a{font-size:12px}.character-grid{grid-template-columns:1fr}.preset-header{flex-wrap:wrap;gap:6px;padding:8px 10px}.preset-label{min-width:unset;flex-shrink:1}.preset-summary{display:none}.preset-actions-compact{width:100%;justify-content:flex-end;gap:6px}.preset-actions-compact .btn-sm{font-size:11px;padding:4px 8px}.presets-toolbar{flex-direction:column;gap:8px;align-items:stretch}.filter-group{flex-wrap:wrap}.editor-actions{flex-direction:column;gap:6px}.editor-actions button{width:100%;text-align:center}.prompt-grid{grid-template-columns:1fr}.status-bar{flex-direction:column;gap:8px;align-items:flex-start}.quick-feedback-grid{gap:4px}.btn-quick-feedback{font-size:11px;padding:4px 8px}.tab-bar{flex-wrap:wrap}.tab{flex:1;text-align:center;font-size:13px;padding:8px 12px}.full-instruct{font-size:11px;word-break:break-word}textarea,input{font-size:16px}}.app--sidebar-layout{display:flex}.app--sidebar-layout .app-main{margin-left:240px;flex:1;min-width:0;max-width:100%}.app-main--fullscreen{padding:0!important;overflow:hidden;height:100vh;height:100dvh;display:flex;flex-direction:column}.app--fullscreen-page .app-main{max-width:unset}.settings-page{max-width:700px}.settings-page h2{margin-bottom:16px;font-size:22px}.settings-tabs{margin-bottom:0;border-bottom:1px solid var(--border)}.settings-tab-content{padding-top:16px}.character-card-wrapper{position:relative}.btn-delete-char{position:absolute;top:8px;right:8px;background:#ef44441f;color:var(--danger);border:1px solid rgba(239,68,68,.25);border-radius:var(--radius);padding:4px 8px;font-size:14px;cursor:pointer;opacity:0;transition:opacity .15s;touch-action:manipulation}.character-card-wrapper:hover .btn-delete-char{opacity:1}@media(hover:none){.btn-delete-char{opacity:1}}.speaker-tag-badge{display:inline-block;font-size:11px;color:var(--accent);background:#6366f11f;border:1px solid rgba(99,102,241,.3);border-radius:4px;padding:1px 6px;margin-bottom:6px}.cast-import-result{background:#22c55e14;border:1px solid rgba(34,197,94,.3);border-radius:var(--radius);padding:10px 14px;margin-bottom:12px;font-size:13px;display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}.cast-warnings{margin-top:6px;padding-left:16px}.cast-warnings .warning{font-size:12px;color:var(--warning)}.section-header-actions{display:flex;gap:8px;flex-wrap:wrap}@keyframes page-fade-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.page-transition-enter{animation:page-fade-in .14s ease-out forwards}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.skeleton-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);animation:skeleton-pulse 1.4s ease-in-out infinite}.skeleton-text{height:13px;background:var(--surface-hover);border-radius:4px;animation:skeleton-pulse 1.4s ease-in-out infinite;margin-bottom:8px}.skeleton-text--short{width:40%}.skeleton-text--medium{width:70%}@media(max-width:768px){.app--sidebar-layout .app-main{margin-left:0;padding-top:calc(var(--hamburger-size) + var(--hamburger-offset) * 2)}.app-main--fullscreen{padding-top:0!important}}@keyframes preset-pulse{0%{border-color:var(--accent);box-shadow:0 0 #6366f166}50%{border-color:var(--accent-hover);box-shadow:0 0 0 4px #6366f100}to{border-color:var(--accent);box-shadow:0 0 #6366f100}}.preset-row.generating{border-color:var(--accent);animation:preset-pulse 1.8s ease-in-out infinite}.generating-status{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 14px;background:#6366f112;border-top:1px solid rgba(99,102,241,.25);font-size:13px;color:var(--text-dim);flex-wrap:wrap}.generating-timer{display:flex;align-items:center;gap:8px;flex:1;min-width:0}@keyframes dot-pulse{0%,to{opacity:1}50%{opacity:.2}}.spinner-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);flex-shrink:0;animation:dot-pulse 1.2s ease-in-out infinite}.cold-start-msg{color:var(--warning);font-size:12px;font-style:italic}.btn-cancel{background:transparent;color:var(--text-dim);border:1px solid var(--border);white-space:nowrap;flex-shrink:0}.btn-cancel:hover{background:#ef44441f;color:var(--danger);border-color:var(--danger)}@media(max-width:768px){.generating-status{flex-direction:column;align-items:flex-start;gap:6px;padding:8px 10px}.generating-timer{flex-wrap:wrap;gap:6px}.cold-start-msg{display:block;margin-top:2px}.btn-cancel{align-self:flex-end;padding:6px 14px;font-size:12px}.flash.error{flex-direction:column;align-items:flex-start}.flash-actions{align-self:flex-end}}.runpod-queue{margin-top:6px;font-size:13px}.queue-toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);cursor:pointer}.queue-badge{background:var(--warning);color:#000;border-radius:10px;padding:1px 7px;font-size:11px;font-weight:600}.queue-badge-ok{background:var(--surface-raised);color:var(--text-dim)}.queue-details{margin-top:8px;padding:10px 12px;background:var(--surface-raised);border-radius:6px;display:flex;flex-direction:column;gap:10px}.queue-section{display:flex;flex-direction:column;gap:3px}.queue-section-title{font-size:11px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px}.queue-row{display:flex;justify-content:space-between;padding:2px 0}.queue-label{color:var(--text-dim)}.queue-count{font-weight:600;min-width:24px;text-align:right}.queue-wait{font-size:12px;color:var(--text-dim);display:flex;gap:6px;align-items:center}.queue-wait-note{font-size:10px;opacity:.6}.tab-badge{display:inline-block;margin-left:5px;background:var(--surface-hover);color:var(--text-dim);border-radius:8px;padding:0 6px;font-size:11px;font-weight:600}.tab-badge-active{display:inline-block;margin-left:5px;width:7px;height:7px;border-radius:50%;background:#f59e0b;animation:pulse 1.2s infinite;vertical-align:middle}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.btn-draft{background:var(--surface-hover);color:var(--text-dim);border:1px solid var(--border)}.btn-draft:hover:not(:disabled){background:#1e40af22;color:#60a5fa;border-color:#60a5fa44}.btn-approve{background:#16a34a22;color:#4ade80;border:1px solid #4ade8044}.btn-approve:hover:not(:disabled){background:#16a34a44}.drafts-tab{padding:0}.draft-list{display:flex;flex-direction:column;gap:10px}.draft-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px 14px;transition:border-color .15s}.draft-card.draft-status-ready{border-left:3px solid #4ade80}.draft-card.draft-status-generating{border-left:3px solid #f59e0b}.draft-card.draft-status-pending{border-left:3px solid #6b7280}.draft-card.draft-status-failed{border-left:3px solid #f87171}.draft-card.draft-status-approved{border-left:3px solid #60a5fa}.draft-header{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.draft-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.draft-status-badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;background:var(--surface-hover)}.draft-status-badge.ready{background:#16a34a22;color:#4ade80}.draft-status-badge.generating{background:#92400e22;color:#f59e0b}.draft-status-badge.pending{background:var(--surface-hover);color:var(--text-dim)}.draft-status-badge.failed{background:#7f1d1d22;color:#f87171}.draft-status-badge.approved{background:#1e3a8a22;color:#60a5fa}.draft-preset{font-size:13px;display:flex;align-items:center;gap:5px}.draft-actions{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.draft-text{font-size:12px;color:var(--text-dim);font-style:italic;margin:6px 0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.draft-error{font-size:11px;color:#f87171;margin:4px 0;word-break:break-word}.draft-audio{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}.draft-footer{margin-top:8px;text-align:right}.templates-tab{padding:0}.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.template-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px;border-left:3px solid #60a5fa;display:flex;flex-direction:column;gap:8px}.template-header{display:flex;align-items:center;gap:6px}.template-name{font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:6px}.template-name:hover{color:var(--accent)}.rename-hint{font-size:11px;color:var(--text-dim);opacity:.5}.template-name:hover .rename-hint{opacity:1}.rename-form{display:flex;gap:5px;align-items:center;width:100%}.rename-input{flex:1;padding:4px 8px;font-size:13px;background:var(--input-bg);border:1px solid var(--border);border-radius:4px;color:var(--text)}.template-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}.template-actions{display:flex;gap:5px;flex-wrap:wrap}@media(max-width:640px){.draft-header{flex-direction:column;align-items:flex-start}.draft-actions{flex-wrap:wrap}.template-grid{grid-template-columns:1fr}}.navbar-status{background:var(--surface);border-bottom:1px solid var(--border);padding:0 24px}.navbar-status .connection-status{margin-bottom:0;border-radius:0;border:none;border-left:3px solid transparent;padding:8px 12px;background:transparent}.navbar-status .conn-header{font-size:13px}.navbar-status .conn-detail{font-size:12px}.nav-drafts-link{display:flex;align-items:center;gap:4px}.nav-queue-badge{display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;padding:0 4px;line-height:1}.btn-retry{background:#eab3081f;color:var(--warning);border-color:#eab30866}.btn-retry:hover:not(:disabled){background:#eab30838;border-color:var(--warning)}.draft-instruct{font-size:.85rem;color:var(--text-secondary, #a0a0b0);margin:.25rem 0;font-style:italic}@media(max-width:640px){.btn-nav{min-width:2.75rem;min-height:2.75rem}.btn-primary,.btn-secondary,.btn-export,.btn-overlay-toggle{min-height:2.75rem;padding:.75rem 1rem;display:inline-flex;align-items:center;justify-content:center}.seg-select,.silence-select,select{min-height:2.75rem}.overlay-item{min-height:3rem;padding:.75rem 1rem}.tab{min-height:2.75rem;padding:.75rem 1rem}}@media(max-width:640px){body,textarea,input,select{font-size:16px}.seg-field-label,.form-row label,.editor-field label,.hint,.base-desc,.chapter-header-meta,.draft-text,.audio-label,.seg-duration,.overlay-item-idx,.overlay-item-text{font-size:.875rem}h1{font-size:1.4rem}h2{font-size:1.25rem}.seg-field-group{gap:.75rem}.editor-field,.form-row{margin-bottom:.75rem}.app-main{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));padding-bottom:max(16px,env(safe-area-inset-bottom))}.chapter-detail-page,.project-detail-page{padding-left:max(.75rem,env(safe-area-inset-left));padding-right:max(.75rem,env(safe-area-inset-right))}}
