@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";.book-command-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--gap);align-items:start;min-height:calc(100vh - 220px)}.book-command-main{display:grid;gap:var(--gap);align-content:start;min-width:0}.book-rail{display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;padding:14px 12px;min-height:100%}.book-rail-header{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.book-rail-header h2{margin:0;font-size:15px;font-weight:600}.book-rail-header span{color:var(--text-faint);font-family:var(--font-mono);font-size:11px}.book-rail-list{display:grid;gap:2px;align-content:start;overflow:auto;max-height:calc(100vh - 260px)}.book-rail-item{display:grid;gap:6px;padding:11px 12px;border-radius:var(--radius);border:1px solid transparent;background:transparent;color:var(--text);text-decoration:none;transition:background .12s,border-color .12s}.book-rail-item:hover{background:var(--surface-2);border-color:transparent}.book-rail-item.is-active{background:var(--accent-soft);border-color:var(--accent-line)}.book-rail-item strong{font-size:13.5px;font-weight:600;line-height:1.3}.book-rail-item small{color:var(--text-faint);font-size:11.5px}.book-rail-empty{display:grid;gap:6px;padding:16px;border-radius:var(--radius-lg);border:1px dashed var(--border-strong);color:var(--text-dim)}.book-command-header{display:flex;justify-content:space-between;align-items:stretch;gap:20px;padding:18px 20px}.book-command-header>div:first-child{display:grid;gap:8px;min-width:0}.book-command-eyebrow{margin:0;text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:600;color:var(--text-faint);font-family:var(--font-mono)}.book-command-header h2{margin:0;font-size:22px;font-weight:600;letter-spacing:-.01em}.book-command-header p{margin:0;color:var(--text-dim);font-size:13px}.book-command-statusline{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:4px}.book-command-statusline-secondary{color:var(--text-dim);line-height:1.45;font-size:13px}.book-command-header-meta{min-width:220px;display:grid;gap:4px;align-content:start;padding:14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2)}.book-command-header-meta span{color:var(--text-faint);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.book-command-header-meta strong{font-size:13px;font-weight:600;margin-bottom:4px}.book-command-header-meta a,.book-inline-link,.book-tab-header a{color:var(--accent);font-weight:600;text-decoration:none;font-size:13px}.book-command-header-meta a:hover,.book-inline-link:hover,.book-tab-header a:hover{text-decoration:underline}.book-status-callout{display:grid;gap:4px;padding:12px 14px 12px 16px;border-radius:var(--radius);border:1px solid var(--border);border-left:3px solid var(--border-strong);background:var(--surface-2)}.book-status-callout strong{font-size:14px;font-weight:600}.book-status-callout span{color:var(--text-dim);font-size:13px}.book-status-callout.tone-info{border-left-color:var(--blue);background:var(--blue-soft)}.book-status-callout.tone-success{border-left-color:var(--accent);background:var(--accent-soft)}.book-status-callout.tone-warning{border-left-color:var(--amber);background:var(--amber-soft)}.book-status-callout.tone-danger{border-left-color:var(--danger);background:var(--danger-soft)}.book-lifecycle{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;padding:var(--pad)}.book-lifecycle-step{display:flex;gap:10px;min-height:78px;padding:12px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);text-decoration:none;color:var(--text);transition:border-color .12s,background .12s}.book-lifecycle-step:hover{border-color:var(--border-strong)}.book-lifecycle-step strong{font-size:13.5px;font-weight:600}.book-lifecycle-step small{display:block;margin-top:4px;color:var(--text-dim);line-height:1.4;font-size:12px}.book-lifecycle-index{width:26px;height:26px;border-radius:999px;display:inline-grid;place-items:center;flex:0 0 auto;background:var(--surface-3);color:var(--text-faint);font-weight:600;font-size:13px;font-family:var(--font-mono);border:2px solid var(--border-strong)}.book-lifecycle-step.state-done{border-color:var(--accent-line)}.book-lifecycle-step.state-done .book-lifecycle-index{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.book-lifecycle-step.state-active{border-color:var(--accent-line);background:var(--accent-soft)}.book-lifecycle-step.state-active .book-lifecycle-index{border-color:var(--accent);color:var(--accent);background:transparent}.book-lifecycle-step.state-blocked .book-lifecycle-index{border-color:var(--danger);color:var(--danger);background:transparent}.book-command-tabs{display:inline-flex;flex-wrap:wrap;gap:2px;padding:4px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);width:fit-content}.book-command-tabs a{min-height:32px;display:inline-flex;align-items:center;padding:0 14px;border-radius:6px;border:0;background:transparent;text-decoration:none;color:var(--text-dim);font-size:13px;font-weight:500;transition:background .12s,color .12s}.book-command-tabs a:hover{color:var(--text)}.book-command-tabs a.is-active{color:var(--text);background:var(--surface-1);box-shadow:var(--shadow-1)}.book-tab-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.book-tab-header h2{font-size:16px;font-weight:600;margin:0}.book-tab-panel{display:grid;gap:var(--gap);padding:var(--pad)}.book-library-overview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap)}.book-library-section{display:grid;gap:14px;padding:var(--pad);border-left:4px solid var(--border-strong)}.book-library-section-pipeline{grid-column:1 / -1;border-left-color:var(--blue)}.book-library-section-cast{border-left-color:var(--accent)}.book-library-section-budget{border-left-color:var(--amber)}.book-library-section-recording{border-left-color:var(--blue)}.book-library-section-links{grid-column:1 / -1;border-left-color:var(--danger)}.book-library-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:10px;border-bottom:1px solid var(--border)}.book-library-section-head>div{display:grid;gap:4px;min-width:0}.book-library-section-head span{color:var(--text-faint);font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.book-library-section-head h2{margin:0;font-size:16px;font-weight:600}.book-library-section-head a{flex:0 0 auto;color:var(--accent);font-size:13px;font-weight:600;text-decoration:none}.book-library-section-head a:hover{text-decoration:underline}.book-library-stage-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.book-library-stage{display:flex;min-height:74px;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.book-library-stage div{display:grid;gap:4px;min-width:0}.book-library-stage strong{font-size:13px;font-weight:600}.book-library-stage span{color:var(--text-dim);font-size:12px;line-height:1.35}.book-library-stage b{flex:0 0 auto;color:var(--text);font-family:var(--font-mono);font-size:18px;font-weight:600}.book-library-split{display:grid;gap:12px}.book-library-metric-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.book-library-cast-map{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}.book-library-cast-chip{display:grid;grid-template-columns:12px minmax(0,1fr);column-gap:8px;row-gap:2px;align-items:center;padding:9px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.book-library-cast-swatch{width:12px;height:28px;border-radius:999px;border:1px solid var(--border-strong);grid-row:1 / span 2}.book-library-cast-chip strong{overflow:hidden;font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.book-library-cast-chip small,.book-library-muted{color:var(--text-dim);font-size:12px}.book-library-cast-chip small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-library-link-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.book-library-link{display:grid;gap:5px;min-height:82px;padding:13px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);color:var(--text);text-decoration:none;transition:border-color .12s,background .12s}.book-library-link:hover{border-color:var(--border-strong);background:var(--surface-3)}.book-library-link strong{font-size:13.5px;font-weight:600}.book-library-link span{color:var(--text-dim);font-size:12.5px;line-height:1.4}.book-metric{display:grid;gap:4px;padding:14px 16px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--surface-2)}.book-metric span{color:var(--text-faint);font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:600}.book-metric strong{font-size:24px;font-weight:600;font-family:var(--font-mono);letter-spacing:-.02em}.book-metric.tone-success{border-color:var(--accent-line)}.book-metric.tone-success strong{color:var(--accent)}.book-metric.tone-warning{border-color:transparent;background:var(--amber-soft)}.book-metric.tone-warning strong{color:var(--amber)}.book-metric.tone-danger{border-color:transparent;background:var(--danger-soft)}.book-metric.tone-danger strong{color:var(--danger)}.book-action-panel h2{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);font-weight:600;margin:0 0 12px}.book-action-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.book-action-link{display:grid;gap:4px;padding:12px 14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);text-decoration:none;color:var(--text);transition:background .12s,border-color .12s}.book-action-link:hover{background:var(--surface-3)}.book-action-link strong{font-size:13.5px;font-weight:600}.book-action-link span{color:var(--text-dim);font-size:12.5px}.book-action-link.tone-info{border-color:var(--accent-line);background:var(--accent-soft)}@media (max-width: 1100px){.book-command-layout,.book-lifecycle{grid-template-columns:1fr}.book-rail{min-height:auto}.book-rail-list{max-height:320px}.book-command-header{flex-direction:column}.book-command-header-meta{min-width:0}.book-library-overview,.book-library-stage-list,.book-library-metric-row,.book-library-link-grid{grid-template-columns:1fr}}.navrail-handle{position:fixed;top:96px;left:0;z-index:40;display:inline-flex;align-items:center;justify-content:center;width:28px;height:44px;padding:0;border:1px solid var(--border-strong);border-left:none;border-radius:0 8px 8px 0;background:var(--surface-2);color:var(--text);cursor:pointer;font-size:16px;line-height:1}.navrail-handle:hover{background:var(--surface-3, var(--surface-2))}.navrail-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#00000052}.navrail-drawer{position:fixed;top:0;left:0;z-index:60;height:100vh;width:min(340px,86vw);transform:translate(-100%);transition:transform .18s ease;background:var(--surface-1, var(--surface-2));border-right:1px solid var(--border-strong);overflow:hidden}.navrail-drawer.is-open{transform:translate(0)}.navrail-drawer-inner{height:100%;overflow-y:auto;padding:12px}.navrail-collapse{position:sticky;top:0;margin-bottom:8px;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border-strong);border-radius:6px;background:var(--surface-2);color:var(--text);cursor:pointer}@media (prefers-reduced-motion: reduce){.navrail-drawer{transition:none}}.books-shelf-layout{display:grid;grid-template-columns:minmax(260px,300px) minmax(0,1fr);gap:var(--gap);align-items:start;min-height:calc(100vh - 220px)}.books-rail,.books-cast-stage{min-height:100%}.books-rail{display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;padding:14px 12px}.books-rail-header h2,.books-cast-header h2,.books-cast-empty h2{margin:0;font-size:15px;font-weight:600}.books-cast-header p,.books-cast-empty p,.books-rail-empty span,.books-cast-empty-row span{margin:6px 0 0;color:var(--text-dim);line-height:1.5}.books-rail-list{display:grid;gap:2px;align-content:start;overflow:auto;max-height:calc(100vh - 240px);padding-right:2px}.books-rail-item{width:100%;text-align:left;padding:11px 12px;border-radius:var(--radius);border:1px solid transparent;background:transparent;color:var(--text);display:grid;gap:6px;cursor:pointer;transition:background .12s ease,border-color .12s ease}.books-rail-item:hover{background:var(--surface-2)}.books-rail-item.is-active{border-color:var(--accent-line);background:var(--accent-soft)}.books-rail-item strong{font-size:13.5px;font-weight:600;line-height:1.3}.books-rail-item small{color:var(--text-faint);margin:0;font-size:11.5px}.books-rail-empty,.books-cast-empty,.books-cast-empty-row{border:1px dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--surface-2);padding:18px;color:var(--text-dim)}.books-cast-stage{display:grid;grid-template-rows:auto minmax(0,1fr);gap:var(--gap);padding:18px}.books-cast-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:start}.books-cast-stats{display:grid;grid-template-columns:repeat(2,minmax(120px,1fr));gap:10px;min-width:420px}.books-cast-stats>div{border-radius:var(--radius-lg);padding:12px 14px;border:1px solid var(--border);background:var(--surface-2);display:grid;gap:4px}.books-cast-stats span,.books-cast-metric span,.books-cast-chapters span,.books-cast-actor span,.books-cast-character small{color:var(--text-dim)}.books-cast-stats strong{font-size:22px;font-weight:600;font-family:var(--font-mono);letter-spacing:-.02em}.books-cast-total-card{grid-column:1 / -1}.books-cast-total-card strong{color:var(--accent);font-size:28px}.books-budget-summary{grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;padding:10px 0 0;border-top:1px solid var(--border)}.books-budget-summary>div{display:grid;gap:4px;padding:10px 12px;border-radius:var(--radius);background:var(--surface-2)}.books-budget-summary span,.books-budget-warnings span{color:var(--text-dim);font-size:12px}.books-budget-summary strong{font-family:var(--font-mono);font-size:14px;font-weight:600}.books-budget-warnings{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:6px}.books-budget-warnings span{padding:5px 8px;border-radius:999px;background:var(--amber-soft);color:var(--amber);font-weight:600}.books-budget-edit-strip{grid-column:1 / -1;display:grid;grid-template-columns:repeat(2,minmax(180px,240px)) auto;gap:10px;align-items:end}.books-budget-edit-strip label{display:grid;gap:5px}.books-budget-edit-strip label span{color:var(--text-dim);font-size:12px;font-weight:600}.books-budget-edit-strip input{min-height:36px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:7px 10px;font:inherit}.books-budget-edit-save{min-height:36px;border-radius:var(--radius);border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--accent);font-weight:600;padding:0 14px;cursor:pointer}.books-budget-edit-save:disabled{cursor:progress;opacity:.7}.books-ops-summary{border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--blue-soft);padding:12px 14px;display:grid;gap:6px}.books-ops-summary strong{color:var(--text)}.books-ops-summary span{color:var(--text-dim)}.books-book-banner{border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--surface-2);padding:16px;display:grid;gap:12px}.books-book-banner-copy h3{margin:0;font-size:15px;font-weight:600;color:var(--text)}.books-book-banner-copy p{margin:6px 0 0;color:var(--text-dim);line-height:1.5}.books-book-banner-actions{display:flex;gap:8px;flex-wrap:wrap}.books-book-link,.books-book-save{min-height:36px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface-1);color:var(--text);padding:0 14px;font-size:13px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;text-decoration:none;transition:background .12s,border-color .12s}.books-book-link:hover,.books-book-save:hover{background:var(--surface-3)}.books-book-link[aria-disabled=true]{opacity:.55;cursor:not-allowed}.books-book-save{background:var(--accent);border-color:transparent;color:var(--on-accent);font-weight:600}.books-book-save:hover{background:var(--accent-press)}.books-book-banner textarea{width:100%;min-height:108px;resize:vertical;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-1);color:var(--text);padding:12px 14px;font:inherit;line-height:1.5;outline:none;transition:border-color .12s,box-shadow .12s}.books-book-banner textarea:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}.books-book-banner-footer{display:flex;justify-content:flex-end}.books-palette-alert{border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--amber-soft);padding:15px 16px;display:grid;gap:10px}.books-palette-alert>strong{font-size:14px;color:var(--amber)}.books-palette-alert>span,.books-palette-alert-item small{color:var(--text-dim)}.books-palette-alert-list{display:grid;gap:8px}.books-palette-alert-actions{display:flex;justify-content:flex-end}.books-palette-alert-item{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;padding:10px 12px;border-radius:var(--radius);background:var(--surface-1);border:1px solid var(--border)}.books-palette-alert-item strong{color:var(--text)}.books-cast-table-wrap{overflow:auto;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--surface-1)}.books-cast-table{min-width:980px}.books-cast-row{display:grid;grid-template-columns:minmax(180px,var(--books-col-character, 280px)) minmax(120px,var(--books-col-chapters, 180px)) minmax(96px,var(--books-col-lines, 120px)) minmax(120px,var(--books-col-duration, 150px)) minmax(180px,var(--books-col-actor, 260px)) minmax(120px,var(--books-col-rate, 140px)) minmax(130px,var(--books-col-budget, 150px));gap:14px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border)}.books-cast-head{position:sticky;top:0;z-index:2;background:var(--surface-1);box-shadow:inset 0 -1px 0 var(--border-strong);font-size:12px;font-weight:600;color:var(--text-dim)}.books-cast-head-cell{position:relative;display:flex;align-items:center;min-height:26px}.books-col-resizer{position:absolute;top:-6px;right:-9px;width:18px;height:calc(100% + 12px);border:0;background:transparent;cursor:col-resize}.books-col-resizer:focus-visible{outline:2px solid var(--accent);outline-offset:-4px}.books-cast-row:nth-child(2n):not(.books-cast-head){background:var(--surface-2)}.books-cast-character,.books-cast-chapters,.books-cast-metric,.books-cast-actor{display:grid;gap:4px}.books-cast-edit-row{align-items:stretch}.books-cast-edit-cell{display:flex;align-items:center}.books-cast-edit-cell input{width:100%;min-height:38px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:8px 11px;font:inherit;outline:none;transition:border-color .12s,box-shadow .12s}.books-cast-edit-cell input:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}.books-cast-edit-cell-actor{gap:8px}.books-cast-budget-cell{gap:8px;justify-content:space-between}.books-cast-budget-cell strong{white-space:nowrap;font-family:var(--font-mono)}.books-cast-readonly-value{width:100%;min-height:38px;display:inline-flex;align-items:center;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);color:var(--text-dim);padding:8px 11px;font-size:13px}.books-cast-edit-cell-character input{font-weight:600}.books-cast-character-inline{width:100%;display:grid;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:8px}.books-cast-swatch-button{width:32px;height:32px;border-radius:var(--radius);border:1px solid var(--border);padding:0;cursor:pointer;transition:transform .12s ease,border-color .12s ease}.books-cast-swatch-button:hover:not(:disabled){transform:translateY(-1px);border-color:var(--accent-line)}.books-cast-swatch-button:disabled{cursor:default;opacity:.88}.books-cast-edit-cell-character input::placeholder{color:inherit;opacity:.76}.books-cast-save{min-height:38px;border-radius:var(--radius);border:1px solid transparent;background:var(--accent);color:var(--on-accent);font-weight:600;padding:0 14px;cursor:pointer;white-space:nowrap;transition:background .12s}.books-cast-save:hover:not(:disabled){background:var(--accent-press)}.books-cast-save:disabled{opacity:.7;cursor:progress}.books-cast-character strong,.books-cast-chapters strong,.books-cast-metric strong,.books-cast-actor strong{font-size:14px}.books-cast-metric strong,.books-cast-budget-cell strong{font-variant-numeric:tabular-nums}.books-cast-total-row{position:sticky;bottom:0;z-index:1;background:var(--surface-1);border-top:1px solid var(--border-strong);border-bottom:0;color:var(--text);font-size:13px;font-weight:600}.books-cast-total-row span{color:var(--text-dim)}.books-cast-total-row strong{color:var(--accent);font-family:var(--font-mono);font-size:15px;text-align:right}.books-cast-empty-row{margin:16px}.books-palette-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#02080c99;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:grid;place-items:center;padding:18px;z-index:40}.books-palette-modal{width:min(680px,100%);border-radius:var(--radius-lg);border:1px solid var(--border-strong);background:var(--surface-1);box-shadow:var(--shadow-2);padding:18px;display:grid;gap:16px}.books-palette-modal-header{display:flex;justify-content:space-between;gap:12px}.books-palette-modal-header h3{margin:0;font-size:18px;font-weight:600}.books-palette-modal-header p{margin:6px 0 0;color:var(--text-dim)}.books-palette-close{width:34px;height:34px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);color:var(--text);font-size:20px;cursor:pointer}.books-palette-close:hover{background:var(--surface-3)}.books-palette-preview{border-radius:var(--radius);border:1px solid var(--border);padding:14px 16px;display:grid;gap:6px}.books-palette-preview span{opacity:.82;font-size:12px;text-transform:uppercase;letter-spacing:.06em}.books-palette-preview strong{font-size:20px;line-height:1.35}.books-palette-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.books-palette-field{display:grid;gap:8px}.books-palette-field span{color:var(--text-dim);font-size:13px}.books-palette-color-row{display:grid;grid-template-columns:56px minmax(0,1fr);gap:10px}.books-palette-field input[type=color]{width:56px;height:44px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);padding:4px}.books-palette-field input[type=text],.books-palette-field select{width:100%;min-height:44px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:10px 12px;font:inherit;outline:none;transition:border-color .12s,box-shadow .12s}.books-palette-field input[type=text]:focus,.books-palette-field select:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}.books-palette-actions{display:flex;justify-content:flex-end;gap:10px}.books-palette-primary,.books-palette-secondary{min-height:40px;border-radius:var(--radius);padding:0 14px;cursor:pointer;font:inherit;font-weight:500}.books-palette-secondary{border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text)}.books-palette-secondary:hover{background:var(--surface-3)}.books-palette-primary{border:1px solid transparent;background:var(--accent);color:var(--on-accent);font-weight:600}.books-palette-primary:hover:not(:disabled){background:var(--accent-press)}.books-palette-primary:disabled{opacity:.7;cursor:progress}@media (max-width: 1080px){.books-shelf-layout{grid-template-columns:1fr}.books-rail{min-height:auto}.books-rail-list{max-height:340px}.books-cast-header{display:grid;grid-template-columns:1fr}.books-cast-stats{min-width:0}.books-budget-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.books-budget-edit-strip,.books-palette-grid{grid-template-columns:1fr}}.cc-overview{display:grid;gap:var(--gap);align-content:start}.cc-summary{display:flex;align-items:center;gap:10px;color:var(--text-dim);font-size:13px;margin-top:-6px}.cc-summary .num{color:var(--text);font-weight:600}.cc-summary-dot{width:4px;height:4px;border-radius:50%;background:var(--text-faint)}.cc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:var(--gap)}.cc-card{display:grid;gap:12px;padding:16px 18px;text-decoration:none;color:var(--text);transition:border-color .12s,box-shadow .12s,transform .12s}.cc-card:hover{border-color:var(--accent-line);box-shadow:var(--shadow-2);transform:translateY(-2px)}.cc-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.cc-card-title{font-size:16px;font-weight:600;line-height:1.3;letter-spacing:-.01em}.cc-card-meta{margin:0;color:var(--text-dim);font-size:12.5px}.cc-card-progress{display:flex;align-items:center;gap:10px}.cc-card-progress .bar{flex:1}.cc-card-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px 0 2px;border-top:1px solid var(--border)}.cc-card-stats>div{display:flex;flex-direction:column;gap:2px}.cc-card-stats .num{font-size:17px;font-weight:600;letter-spacing:-.02em}.cc-card-stats small{color:var(--text-faint);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.cc-card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--accent);font-size:13px;font-weight:600}.cc-card-arrow{width:16px;height:16px;transition:transform .12s}.cc-card:hover .cc-card-arrow{transform:translate(3px)}.cmg-wrap{max-width:880px;margin:0 auto;padding:24px 20px 28px}.cmg-head h1{font-size:23px;margin:0 0 4px;letter-spacing:-.2px}.cmg-sub{color:var(--text-dim);font-size:13.5px}.banner{display:flex;align-items:center;gap:13px;border-radius:var(--radius-lg, 14px);padding:14px 18px;margin:18px 0 6px;border:1px solid var(--amber);background:var(--amber-soft)}.banner.clean{border-color:var(--accent);background:var(--accent-soft)}.banner .cmg-banner-icon{width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center;font-size:15px;font-weight:700;background:var(--amber);color:#1a1206}.banner.clean .cmg-banner-icon{background:var(--accent);color:var(--on-accent)}.banner>div{font-size:14px;color:var(--text-dim)}.banner b{color:var(--text)}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:16px 0 14px}.chip-f{border:1px solid var(--border);background:var(--panel);color:var(--text-dim);border-radius:999px;padding:7px 14px;font-size:13px;cursor:pointer;font-family:inherit;transition:border-color .14s,color .14s,background .14s}.chip-f:hover:not(.on){border-color:var(--border-strong);color:var(--text)}.chip-f.on{border-color:var(--accent);color:var(--text);background:var(--accent-soft)}.cmg-search{margin-left:auto;background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:999px;padding:9px 15px;font-size:13.5px;width:230px;font-family:inherit;transition:border-color .14s,background .14s}.cmg-search:focus{outline:none;border-color:var(--accent);background:var(--panel2)}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg, 14px);padding:16px 18px;margin-bottom:12px;transition:border-color .15s,background .15s}.card:hover{border-color:var(--border-strong)}.card.flag{border-color:color-mix(in oklch,var(--amber),transparent 55%);background:linear-gradient(180deg,var(--amber-soft),transparent 40%),var(--panel)}.crow{display:flex;align-items:center;gap:11px;flex-wrap:wrap}.dot{width:11px;height:11px;border-radius:50%;flex:none;box-shadow:0 0 0 3px #ffffff0a}.nm{font-size:17px;font-weight:600;letter-spacing:-.1px}.edit{opacity:0;color:var(--text-faint);cursor:pointer;font-size:13px;transition:opacity .14s,color .14s;border:0;background:none;padding:2px 4px;font-family:inherit}.card:hover .edit{opacity:1}.edit:hover{color:var(--accent)}.badge{font-size:11px;font-weight:600;border-radius:999px;padding:3px 9px;letter-spacing:.2px;display:inline-flex;align-items:center;gap:4px}.b-known{color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px color-mix(in oklch,var(--accent),transparent 60%)}.b-new{color:var(--blue);background:var(--blue-soft);box-shadow:inset 0 0 0 1px color-mix(in oklch,var(--blue),transparent 60%)}.b-flag{color:var(--amber);background:var(--amber-soft);box-shadow:inset 0 0 0 1px color-mix(in oklch,var(--amber),transparent 55%)}.actor{margin-left:auto;display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text);background:var(--panel2);border:1px solid var(--border);border-radius:999px;padding:5px 13px 5px 8px}.actor .av{width:21px;height:21px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;background:color-mix(in oklch,var(--accent),#000 8%);color:var(--on-accent)}.actor.unassigned{color:var(--text-faint);background:transparent;border-style:dashed;border-color:var(--border-strong)}.actor.unassigned .av{background:transparent;border:1px dashed var(--border-strong);color:var(--text-faint)}.canonline{margin:7px 0 0 22px;font-size:12.5px;color:var(--text-dim)}.aliases{margin-top:11px;display:flex;flex-wrap:wrap;align-items:baseline;row-gap:6px;font-size:14px;padding-left:22px}.alabel{font-size:10.5px;text-transform:uppercase;letter-spacing:.7px;color:var(--text-dim);margin-right:14px;align-self:center;flex:none}.al{display:inline-flex;align-items:baseline;color:var(--text)}.al .x{margin-left:6px;color:var(--text-faint);cursor:pointer;font-size:12px;line-height:1;opacity:.5;transition:opacity .14s,color .14s;border:0;background:none;padding:0;align-self:center;font-family:inherit}.al .x:hover{opacity:1;color:var(--amber)}.al .x:disabled{cursor:default}.sep{color:var(--text-faint);opacity:.45;margin:0 12px}.empty-al{color:var(--text-faint);font-size:13.5px;font-style:italic}.split{margin-left:auto;color:var(--amber);font-size:13px;cursor:pointer;background:none;border:0;padding:0;font-family:inherit;display:inline-flex;align-items:center;gap:6px}.split:hover{text-decoration:underline}.note{margin-top:12px;padding-left:22px}.note-ghost{display:inline-flex;align-items:center;gap:8px;color:var(--text-faint);font-size:12.5px;cursor:text;padding:5px 0;background:none;border:0;font-family:inherit;transition:color .14s}.note-ghost:hover{color:var(--text-dim)}.note-tag{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--accent);margin-bottom:7px;letter-spacing:.2px}.cmt{width:100%;margin-top:2px;background:var(--panel2);border:1px solid var(--border-strong);color:var(--text);border-radius:var(--radius, 9px);padding:10px 13px;font:13.5px/1.5 inherit;resize:vertical;min-height:46px}.cmt:focus{outline:none;border-color:var(--accent)}.splitpanel{margin:11px 0 0 22px;border:1px solid color-mix(in oklch,var(--amber),transparent 50%);border-radius:var(--radius, 9px);padding:12px 14px;background:var(--amber-soft)}.splitpanel-title{font-size:13px;font-weight:600;color:var(--amber);margin:0 0 10px}.splitpanel-aliases{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.splitpanel-alias-check{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:5px 10px;font-size:13px;cursor:pointer}.splitpanel-alias-check input[type=checkbox]{cursor:pointer;accent-color:var(--accent)}.splitpanel-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.splitpanel-hint{font-size:12px;color:var(--text-faint)}.actionbar{position:sticky;bottom:16px;margin-top:20px;display:flex;align-items:center;gap:14px;padding:13px 16px;background:color-mix(in oklch,var(--panel),transparent 8%);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-strong);border-radius:var(--radius-lg, 14px);box-shadow:0 8px 30px #00000059}.actionbar .sum{color:var(--text-dim);font-size:13px}.actionbar .sum b{color:var(--text)}.actionbar .sum .amber{color:var(--amber)}.actionbar .autosave-note{color:var(--text-faint)}.actionbar .cmg-grow{flex:1}.btn{border:1px solid var(--border-strong);background:var(--panel2);color:var(--text);border-radius:10px;padding:11px 17px;font-size:14px;cursor:pointer;font-family:inherit;transition:border-color .14s,background .14s,filter .14s}.btn:hover:not(:disabled){border-color:var(--text-faint)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.btn.primary:hover:not(:disabled){filter:brightness(1.06)}.btn.ghost{color:var(--text-dim);background:none}.cmg-empty{color:var(--text-dim);font-size:14px;text-align:center;padding:32px 0}.cmg-loading,.cmg-error{padding:24px}.scenario-document{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-1);overflow:hidden;box-shadow:var(--shadow-1)}.scenario-cast-sheet{padding:16px 18px 14px;border-bottom:1px solid var(--border);background:var(--surface-2)}.scenario-cast-title{margin-bottom:10px;color:var(--text-dim);font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:0;text-transform:uppercase}.scenario-cast-empty,.scenario-empty{margin:0;color:var(--text-dim)}.scenario-cast-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:6px 12px}.scenario-cast-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:baseline;gap:6px;min-height:34px;padding:6px 8px;border:1px solid transparent;border-left:4px solid var(--scenario-role-color, var(--accent));border-radius:var(--radius-sm);background:transparent;color:var(--text);text-align:left}.scenario-cast-row:hover,.scenario-cast-row.is-active{border-color:var(--border-strong);border-left-color:var(--scenario-role-color, var(--accent));background:color-mix(in srgb,var(--scenario-role-color, var(--accent)) 14%,transparent)}.scenario-cast-role{min-width:0;overflow:hidden;color:var(--scenario-role-color, var(--accent));font-weight:700;text-overflow:ellipsis;white-space:nowrap}.scenario-cast-actor{color:var(--text);font-size:13px;white-space:nowrap}.scenario-cast-count{min-width:28px;padding:1px 7px;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:var(--font-mono);font-size:11px;line-height:18px;text-align:center}.scenario-cast-row small{grid-column:1 / -1;color:var(--text-dim);font-size:12px;line-height:1.35}.scenario-script-page{max-height:72vh;overflow:auto;padding:20px 18px 26px;background:var(--surface-1)}.scenario-line{display:grid;width:100%;grid-template-columns:44px minmax(132px,.22fr) minmax(0,1fr);gap:10px;align-items:start;margin:0 0 5px;padding:7px 9px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text);font-family:Cambria,Georgia,serif;font-size:22px;line-height:1.48;text-align:left;white-space:pre-wrap;word-break:break-word}.scenario-line:hover{border-color:var(--border-strong);background:var(--surface-2)}.scenario-line.is-active{border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue)}.scenario-line.is-unsure{border-color:var(--amber);box-shadow:inset 4px 0 0 var(--amber)}.scenario-line-no{color:var(--text-faint);font-family:var(--font-mono);font-size:11px;line-height:1.7;-webkit-user-select:none;user-select:none}.scenario-speaker{min-width:0;overflow:hidden;color:var(--scenario-role-color, var(--accent));font-family:var(--font-sans);font-size:14px;font-weight:800;line-height:1.9;text-overflow:ellipsis;white-space:nowrap}.scenario-dialogue-body{min-width:0}.scenario-narration-body{grid-column:2 / -1;color:var(--text-dim);font-weight:400}@media (max-width: 980px){.scenario-script-page{max-height:none}.scenario-line{grid-template-columns:34px minmax(0,1fr);font-size:19px}.scenario-speaker,.scenario-dialogue-body,.scenario-narration-body{grid-column:2}.scenario-dialogue-body{padding-left:0}}.script-view-head{display:grid;gap:12px;margin-bottom:12px}.script-view-head h2{margin:0;font-size:20px;line-height:1.3}.script-view-head p{margin:4px 0 0;color:var(--text-dim)}.script-view-controls{display:grid;grid-template-columns:minmax(220px,2fr) minmax(180px,1.3fr) auto auto auto auto;gap:8px;align-items:center}.script-view-controls input[type=text],.script-view-controls select{min-width:0;height:36px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface-2);color:var(--text);padding:0 10px;font-size:14px}.script-view-controls label{display:inline-flex;align-items:center;gap:6px;color:var(--text-dim);font-size:13px;white-space:nowrap}.script-view-controls button,.script-view-bookmark button{min-height:32px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface-2);color:var(--text);padding:0 10px}.script-view-controls button:hover,.script-view-bookmark button:hover{background:var(--surface-3)}.script-view-bookmarks,.script-view-hints{margin-top:12px}.script-view-bookmarks h3,.script-view-hints h3{margin:0 0 8px}.script-view-bookmarks p{margin:0;color:var(--text-dim)}.script-view-bookmark{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;margin-bottom:6px;padding:7px 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);font-size:13px}.script-view-bookmark span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 1120px){.script-view-controls{grid-template-columns:minmax(0,1fr) minmax(180px,1fr) auto}}@media (max-width: 760px){.script-view-controls,.script-view-bookmark{grid-template-columns:minmax(0,1fr)}.script-view-controls label{white-space:normal}}.author-shell{display:grid;grid-template-columns:minmax(240px,280px) minmax(0,1fr) minmax(300px,360px);gap:12px;align-items:start}.author-col{background:linear-gradient(180deg,var(--surface-2) 0%,var(--surface-1) 100%);border:1px solid var(--border);border-radius:14px;padding:12px;color:var(--text)}.author-stage{min-width:0;display:grid;gap:12px}.author-stage-head{padding:12px 14px}.validation-stage-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.validation-stage-copy{min-width:0}.validation-stage-copy h2{margin:0;font-size:24px;line-height:1.1;color:var(--blue)}.validation-stage-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.validation-preview-theme-toggle{display:inline-flex;gap:6px}.validation-preview-theme-toggle button{width:34px;height:34px;display:grid;place-items:center;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--accent);padding:0}.validation-preview-theme-toggle button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.validation-preview-theme-toggle button.is-active{background:var(--border-strong);color:var(--text)}.validation-preview-fontsize select{min-height:32px;min-width:72px;padding:0 10px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font-family:IBM Plex Mono,Consolas,monospace;font-size:12px}.author-empty{min-height:75vh}.author-split{min-width:0;min-height:76vh;display:flex;align-items:stretch}.author-doc-pane{min-width:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:8px}.author-doc-label{padding:0 4px;color:var(--accent);font-size:12px;letter-spacing:.14em;font-weight:700}.author-splitter{flex:0 0 14px;border:0;padding:0;margin:28px 6px 0;background:transparent;cursor:col-resize}.author-splitter span{display:block;width:100%;height:100%;border-radius:999px;background:linear-gradient(180deg,var(--border-strong),var(--border-strong),var(--border-strong));box-shadow:inset 0 0 0 1px var(--border-strong)}.toc-list{display:grid;gap:6px;max-height:78vh;overflow:auto}.author-rail-head{display:grid;gap:10px;margin-bottom:10px}.author-rail-title{margin:0}.author-book-select{display:grid;gap:6px}.author-book-select span{color:var(--accent);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.author-book-select select{min-height:36px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);padding:0 10px}.toc-item{text-decoration:none;border:1px solid var(--surface-2);background:var(--surface-2);border-radius:10px;padding:8px;color:var(--text);display:block;cursor:pointer}.toc-item:hover{border-color:var(--accent)}.toc-item.active{border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue);color:var(--blue)}.toc-meta{font-size:12px;color:var(--accent);margin-top:2px}.status-chip{display:inline-block;margin-top:4px;border-radius:999px;font-size:11px;border:1px solid var(--accent);color:var(--accent);padding:2px 8px}.paper{--script-font-size: 24px;width:100%;max-width:none;background:var(--text);color:var(--surface-2);border-radius:14px;border:1px solid var(--text);box-shadow:0 14px 34px var(--surface-2);padding:22px 24px}.author-split.is-light-theme .paper{background:var(--text);color:#11161d;border-color:var(--text);box-shadow:0 14px 34px var(--surface-2)}.author-split:not(.is-light-theme) .paper{background:linear-gradient(180deg,var(--surface-2) 0%,var(--surface-2) 100%);color:var(--accent);border-color:var(--accent);box-shadow:0 16px 34px #0006}.paper-source,.paper-script{min-height:100%;overflow:auto}.source-cast-spacer{pointer-events:none;margin-bottom:2px}.script-cast-block,.script-cast-name{display:block}.script-cast-actor{color:var(--accent);font-family:sans-serif;font-size:.7em;font-weight:600;white-space:nowrap}.script-cast-desc{margin-top:1px;color:var(--text-dim);font-family:sans-serif;font-size:.6em;font-weight:400;line-height:1.35}.paper-source{background:linear-gradient(180deg,var(--text) 0%,var(--text) 100%)}.author-split:not(.is-light-theme) .paper-source{background:linear-gradient(180deg,var(--surface-2) 0%,var(--surface-2) 100%)}.author-split:not(.is-light-theme) .paper-script{background:linear-gradient(180deg,var(--surface-2) 0%,var(--surface-2) 100%)}.paper-head{display:flex;gap:14px;justify-content:space-between;align-items:flex-start;margin-bottom:8px;flex-wrap:wrap}.paper h2{margin:0 0 6px;color:var(--surface-2);font-family:Cambria,Georgia,serif;font-size:30px}.paper-sub{margin:5px 0 16px;color:var(--blue);font-size:14px}.script-line{display:block;font-family:Cambria,Georgia,serif;font-size:var(--script-font-size, 24px);line-height:1.5;border:1px solid transparent;border-radius:8px;padding:4px 8px;margin-bottom:2px;cursor:pointer;white-space:pre-wrap;word-break:break-word}.source-line{cursor:default;background:transparent!important}.source-line:hover{border-color:transparent;background:transparent!important}.script-line:hover{border-color:var(--blue);background:var(--text)}.script-line.active{border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue);background:var(--text)}.author-split:not(.is-light-theme) .script-line:hover{border-color:var(--border-strong);background:var(--surface-2)}.author-split:not(.is-light-theme) .script-line.active{border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue);background:var(--surface-2)}.script-line.dialogue{font-weight:600}.script-line-editor{display:block;width:100%;font-family:Cambria,Georgia,serif;font-size:var(--script-font-size, 24px);line-height:1.5;border:2px solid var(--blue);border-radius:8px;padding:4px 8px;margin-bottom:2px;background:var(--text);resize:none;min-height:40px;outline:none}.line-no{color:var(--line-no-color, var(--blue));margin-right:6px;-webkit-user-select:none;user-select:none;font-size:11px;font-family:sans-serif}.author-split:not(.is-light-theme) .line-no{color:var(--accent)}.script-word{border-radius:3px;padding:0 1px;cursor:pointer}.script-word.is-inserted{background:var(--amber-soft);box-shadow:inset 0 -.12em 0 var(--amber);color:var(--amber)}.author-split.is-light-theme .script-word.is-inserted{color:inherit}.insertions-toggle{display:inline-flex;align-items:center;gap:8px;margin:4px 0 8px;padding:6px 12px;border:1px solid var(--border, rgba(255,255,255,.07));border-radius:999px;background:var(--amber-soft);color:var(--text-dim);font-size:12.5px;cursor:pointer;width:fit-content}.insertions-toggle b{color:var(--amber);margin-left:2px}.insertions-toggle .insertions-dot{width:9px;height:9px;border-radius:2px;background:var(--amber)}.insertions-toggle input{cursor:pointer;accent-color:var(--amber)}.stress-view-toggle{border-style:solid}.stress-view-toggle.is-active{border-color:var(--blue);background:var(--blue-soft);color:var(--blue)}.script-word:hover{outline:1px solid var(--blue);background:var(--blue-soft)}.author-split:not(.is-light-theme) .script-word:hover{outline-color:var(--border-strong);background:var(--border-strong)}.panel-title{margin:0 0 8px;color:var(--accent);font-size:22px}.tool-group{border:1px solid var(--surface-2);border-radius:12px;padding:10px;background:var(--surface-2);margin-bottom:10px}.tool-group h4{margin:0 0 8px;color:var(--accent);font-size:15px}.tool-hint{margin:-2px 0 8px;color:var(--accent);font-size:12px;line-height:1.35}.tool-group input,.tool-group textarea,.tool-group select{margin-bottom:8px}.tool-actions{display:grid;gap:8px}.role-hints{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.role-chip{border:1px solid var(--blue);border-radius:999px;padding:4px 8px;color:var(--blue);background:var(--blue-soft);cursor:pointer;font-size:12px;font-weight:700}.save-status{min-height:20px;color:var(--accent);font-size:12px}.save-status.error{color:var(--danger)}.issue-cloud{display:flex;flex-wrap:wrap;gap:6px;max-height:190px;overflow:auto}.issue-chip{border:1px solid var(--danger);background:var(--danger-soft);color:var(--danger);border-radius:999px;font-size:12px;padding:4px 8px;cursor:pointer}.issue-preview{margin-top:8px;border:1px solid var(--danger);border-radius:10px;background:var(--surface-2);color:var(--danger);padding:8px;font-size:13px;transition:opacity .22s ease;min-height:52px}.lexicon-cand-row{display:flex;align-items:center;gap:6px;margin-bottom:4px}.lexicon-add-btn{padding:2px 8px;font-size:14px;font-weight:700;background:var(--accent);border:1px solid var(--accent);color:var(--on-accent);border-radius:999px;cursor:pointer}.author-tools{position:sticky;top:10px;max-height:calc(100vh - 20px);overflow:auto}body.is-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.accent-builder{border:1px dashed var(--blue);border-radius:10px;background:var(--surface-2);padding:8px;min-height:48px;margin-bottom:8px}.accent-letters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.accent-letter{min-width:30px;height:30px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font-size:16px;cursor:pointer}.accent-letter.active{border-color:var(--amber);background:var(--amber-soft);color:var(--amber)}.accent-letter.disabled{opacity:.45;cursor:default}.accent-preview{font-family:Cambria,Georgia,serif;font-size:26px;color:var(--amber);margin:0;min-height:30px}.unsure-item{display:block;width:100%;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}@media (max-width: 1220px){.author-shell{grid-template-columns:1fr}.validation-stage-head{flex-direction:column;align-items:stretch}.author-split{min-height:0;flex-direction:column}.author-doc-pane{width:100%!important}.author-splitter{display:none}.toc-list{max-height:320px}.author-tools{position:static;max-height:none;overflow:visible}}.script-validation-shell{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-items:start;min-width:0}.script-validation-stage-col{min-width:0}.script-validation-shell .validation-review-rail{display:grid;align-content:start;gap:10px;padding:12px}.script-validation-shell .validation-review-book-tree{max-height:calc(100vh - 132px);overflow:auto}.script-validation-shell .validation-review-book-title,.script-validation-shell .validation-review-chapter-title{overflow-wrap:anywhere}.script-editor-shell{display:grid;grid-template-columns:minmax(0,1fr) minmax(286px,320px);gap:12px;align-items:start;min-width:0}.script-editor-shell .author-stage{min-width:0}.script-editor-shell .author-stage-head{padding:8px 12px}.script-editor-shell .validation-stage-head{align-items:center}.script-editor-shell .validation-stage-copy h2{font-size:17px;line-height:1.2}.script-editor-shell .validation-sync-toggle{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 8px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-dim);font-family:var(--font-mono, "IBM Plex Mono", "Consolas", monospace);font-size:11px;font-weight:700}.script-editor-shell .validation-sync-toggle input{margin:0;accent-color:var(--accent)}.script-editor-shell .validation-sync-toggle:has(input:checked){color:var(--accent);border-color:var(--accent-line, var(--accent));background:var(--accent-soft)}.script-editor-shell .author-split{height:clamp(640px,calc(100vh - 166px),980px);min-height:0}.script-editor-shell .author-doc-pane{min-height:0}.script-editor-shell .paper{min-height:0;max-height:100%;padding:14px 16px;border-radius:8px;color:#11161d}.script-editor-shell .author-split:not(.is-light-theme) .paper-source,.script-editor-shell .author-split:not(.is-light-theme) .paper-script{background:#fff;color:#11161d}.script-editor-shell .source-line,.script-editor-shell .script-line:not(.dialogue){color:#11161d}.script-editor-shell .script-line,.script-editor-shell .script-line-editor{border-radius:6px}.validation-tool-rail{position:sticky;top:8px;max-height:calc(100vh - 16px);overflow:auto;display:grid;align-content:start;gap:12px;min-width:0}.validation-tool-rail .author-tools{position:static;max-height:none;overflow:visible;border-radius:8px;padding:12px}.validation-tool-rail .view-toggle-list{display:grid;gap:7px}.validation-tool-rail .insertions-toggle{width:100%;margin:0;justify-content:flex-start}.validation-tool-rail .stress-view-toggle{border-radius:8px;text-align:left}.validation-tool-rail .validation-review-sidebar{position:static;max-height:none;overflow:visible;border-radius:8px;padding:12px}.validation-tool-rail .validation-review-sidebar{gap:6px}.validation-tool-rail .panel-title{font-size:18px}.validation-tool-rail .tool-group{border-radius:8px;padding:8px}.selected-line-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:24px;color:var(--accent);font-size:12px}.selected-line-meta strong{min-width:0;max-width:58%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.selected-line-meta strong.is-muted{color:var(--text-dim);font-weight:500}.validation-tool-rail .tool-actions button,.validation-tool-rail .validation-sidebar-actions button,.validation-tool-rail .validation-identity-actions button{min-width:0;white-space:normal}.validation-tool-rail .validation-sidebar-actions,.validation-tool-rail .validation-identity-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.validation-tool-rail .validation-artifact-item{grid-template-columns:minmax(42px,auto) minmax(44px,auto) minmax(0,1fr)}.validation-tool-rail .validation-signal-list li{grid-template-columns:minmax(0,.8fr) minmax(0,1fr)}.validation-tool-rail .validation-signal-list li span{text-align:left}.validation-rail-details{padding:0;overflow:hidden}.validation-rail-details summary{min-height:34px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 10px;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.validation-rail-details summary::-webkit-details-marker{display:none}.validation-rail-details summary:before{content:"›";color:var(--text-dim);transition:transform .12s ease}.validation-rail-details[open] summary:before{transform:rotate(90deg)}.validation-rail-details summary span{flex:1;min-width:0;color:var(--text);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.validation-rail-details summary small{color:var(--text-dim);font-family:var(--font-mono, "IBM Plex Mono", "Consolas", monospace);font-size:10px}.validation-rail-details>:not(summary){margin:0 10px 10px}.script-editor-shell .script-line.has-speaker{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px}.script-editor-shell .script-line-body{min-width:0}.script-editor-shell .script-speaker-chip{display:inline-flex;width:fit-content;max-width:180px;min-height:18px;align-items:center;margin-bottom:2px;padding:0 7px;border-radius:999px;border:1px solid var(--border-strong);color:var(--accent);font-family:var(--font-mono, "IBM Plex Mono", "Consolas", monospace);font-size:10px;font-weight:700;letter-spacing:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.script-editor-shell .script-line.is-unsure-attribution{border-color:var(--amber);box-shadow:inset 3px 0 0 var(--amber)}.script-editor-shell .source-line-near-active{border-color:var(--amber);background:var(--amber-soft)!important}@media (max-width: 1500px){.script-editor-shell{grid-template-columns:minmax(0,1fr) minmax(270px,300px)}.script-editor-shell .paper{padding:14px}}@media (max-width: 1220px){.script-editor-shell{grid-template-columns:minmax(0,1fr)}.validation-tool-rail{position:static;max-height:none;overflow:visible}.script-editor-shell .author-split{height:auto;min-height:0}}@media (max-width: 760px){.script-editor-shell .validation-stage-controls{display:grid;grid-template-columns:1fr}.script-editor-shell .paper{padding:12px}.validation-tool-rail .validation-sidebar-actions,.validation-tool-rail .validation-identity-actions{grid-template-columns:minmax(0,1fr)}}:root{font-family:var(--font-sans);color:var(--text);background:var(--bg);--prep-two-col: repeat(2, minmax(0, 1fr));--app-surface-bg: var(--surface-1);--app-surface-border: var(--border);--app-tab-bg: var(--surface-2);--app-tab-active-bg: var(--surface-1);--app-tab-active-edge: var(--surface-1)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:transparent}a{color:inherit}.shell{width:100%;max-width:none;margin:0;padding:24px 28px 28px}.nav{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}.nav a{padding:10px 14px;border-radius:6px;text-decoration:none;border:1px solid var(--border-strong);background:var(--surface-1)}.nav a.active{border-color:var(--border-strong);background:var(--accent);box-shadow:inset 0 0 0 1px var(--border-strong)}.shell-app{min-height:100vh;padding-top:20px}.shell-app .topbar{margin-bottom:14px}.shell-app .content{min-height:calc(100vh - 180px)}.nav-tabs{position:relative;gap:8px;margin-bottom:0;padding:0 14px;align-items:end}.nav-tabs:after{content:"";position:absolute;left:14px;right:14px;bottom:0;height:1px;background:var(--app-surface-border)}.nav-tabs a{position:relative;display:inline-flex;align-items:center;min-height:44px;margin:0;border-radius:12px 12px 0 0;padding:12px 18px 11px;background:var(--app-tab-bg);border:1px solid var(--border-strong);border-bottom-color:var(--app-surface-border);color:var(--text-dim);transform:translateY(1px);box-shadow:inset 0 1px 0 var(--border)}.nav-tabs a.active{color:var(--text);background:var(--app-tab-active-bg);border-color:var(--border-strong);border-bottom-color:transparent;box-shadow:0 -8px 18px #0000002e;z-index:2}.nav-tabs a.active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--app-tab-active-edge)}.app-main-surface{margin-top:0;padding:18px;border:1px solid var(--app-surface-border);border-top:none;border-radius:0 14px 14px;background:var(--app-surface-bg);box-shadow:0 24px 80px #00000047}.content,.grid{display:grid;gap:16px}.books-layout{display:grid;grid-template-columns:minmax(420px,1.15fr) minmax(420px,1fr);gap:16px}.prep-screen{gap:14px}.prep-top-grid{display:grid;grid-template-columns:minmax(420px,1.15fr) minmax(420px,1fr) minmax(360px,.9fr);gap:10px;align-items:stretch}.grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.panel{padding:20px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-1);box-shadow:0 24px 80px #00000047}.panel h2{margin-top:0}.panel.error{border-color:var(--danger)}.book-command-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;min-height:calc(100vh - 220px)}.book-command-main{display:grid;gap:14px;align-content:start}.book-rail{display:grid;grid-template-rows:auto minmax(0,1fr);gap:12px;padding:18px 14px;min-height:100%}.book-rail-header,.book-tab-header,.book-command-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.book-rail-header h2,.book-command-header h2,.book-tab-header h2{margin:0}.book-rail-header span,.book-command-eyebrow,.book-command-header p,.book-command-header-meta span,.book-stage-row small,.book-action-link span,.book-status-callout span{color:var(--text-dim)}.book-rail-list{display:grid;gap:10px;align-content:start;overflow:auto}.book-rail-item{display:grid;gap:6px;padding:12px 13px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-1);color:var(--text);text-decoration:none}.book-rail-item:hover,.book-rail-item.is-active{border-color:var(--border-strong);background:var(--surface-3)}.book-rail-item small{color:var(--text-dim)}.book-rail-empty{display:grid;gap:6px;padding:16px;border-radius:8px;border:1px dashed var(--border-strong)}.book-command-header{align-items:stretch}.book-command-header>div:first-child{display:grid;gap:10px}.book-command-eyebrow{margin:0;text-transform:uppercase;letter-spacing:0;font-size:12px;font-weight:800}.book-command-statusline{display:grid;gap:6px;align-items:start}.book-command-statusline-primary,.book-command-statusline-secondary{min-width:0}.book-command-statusline-secondary{color:var(--muted);line-height:1.35}.book-command-header-meta{min-width:240px;display:grid;gap:6px;align-content:start;padding:14px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-1)}.book-command-header-meta a,.book-inline-link,.book-tab-header a{color:var(--text);font-weight:700}.book-status-callout{display:grid;gap:6px;padding:14px 16px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-1)}.book-status-callout.tone-info,.book-action-link.tone-info{border-color:var(--blue)}.book-status-callout.tone-success,.book-action-link.tone-success,.book-metric.tone-success{border-color:var(--border-strong)}.book-status-callout.tone-warning,.book-action-link.tone-warning,.book-metric.tone-warning{border-color:var(--amber)}.book-status-callout.tone-danger,.book-action-link.tone-danger,.book-metric.tone-danger{border-color:var(--danger)}.book-lifecycle{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.book-lifecycle-step{display:flex;gap:10px;min-height:82px;padding:12px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2);text-decoration:none}.book-lifecycle-step.state-done{border-color:var(--border-strong)}.book-lifecycle-step.state-active{border-color:var(--blue)}.book-lifecycle-step.state-blocked{border-color:var(--danger)}.book-lifecycle-step small{display:block;margin-top:4px;color:var(--text-dim);line-height:1.35}.book-lifecycle-index{width:28px;height:28px;border-radius:999px;display:inline-grid;place-items:center;flex:0 0 auto;background:var(--border-strong);color:var(--text);font-weight:800}.book-command-tabs{display:flex;flex-wrap:wrap;gap:8px}.book-command-tabs a{min-height:40px;display:inline-flex;align-items:center;padding:9px 13px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-1);text-decoration:none;color:var(--text-dim)}.book-command-tabs a.is-active{color:var(--text);border-color:var(--border-strong);background:var(--accent)}.book-tab-panel{display:grid;gap:14px}.book-tab-header h2{font-size:24px}.book-metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.book-metric{display:grid;gap:8px;padding:14px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-1)}.book-metric span{color:var(--text-dim);font-size:13px}.book-metric strong{font-size:24px}.book-stage-list,.book-action-list{display:grid;gap:10px}.book-stage-row,.book-action-link{display:grid;gap:5px;padding:12px 14px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-1)}.book-stage-row span{color:var(--text)}.book-action-link{text-decoration:none}@media (max-width: 1100px){.book-command-layout,.book-lifecycle{grid-template-columns:1fr}.book-rail{min-height:auto}.book-rail-list{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));max-height:320px}.book-command-header{flex-direction:column}.book-command-header-meta{min-width:0}}.toast-stack{position:fixed;top:18px;right:18px;z-index:70;display:grid;gap:12px;width:min(360px,calc(100vw - 24px))}.toast{padding:14px 16px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2);box-shadow:0 18px 48px #00000052;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:grid;gap:4px;animation:toast-in .18s ease-out}.toast strong{font-size:14px}.toast span{color:var(--text-dim);font-size:13px;line-height:1.4}.toast-success{border-color:var(--border-strong)}.toast-error{border-color:var(--danger)}.toast-info{border-color:var(--blue)}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.table{display:grid;gap:8px}.row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}.row-button{width:100%;border:1px solid transparent;background:transparent;color:inherit;cursor:pointer}.row-button-text{text-align:left}.row-active{border-color:var(--border-strong);border-radius:6px;padding-inline:12px;background:var(--accent)}.row span,.list li{display:flex;flex-direction:column;gap:4px}.dictor-tools-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.9fr);gap:14px;align-items:start;margin-top:14px}.dictor-script-studio{padding:16px;position:relative}.dictor-script-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.dictor-script-head h2{margin:0;font-size:18px;line-height:1.35}.dictor-script-head-controls{display:inline-flex;align-items:center;gap:8px;flex-wrap:nowrap;white-space:nowrap}.dictor-cast-button{min-height:28px;border-radius:8px;font-size:11px;padding:0 12px;border:1px solid var(--border-strong);background:transparent;color:var(--text-dim);display:inline-flex;align-items:center}.dictor-cast-button:hover{border-color:var(--blue);background:var(--surface-2);color:var(--text)}.dictor-cast-popover{position:absolute;top:56px;right:16px;width:min(420px,calc(100vw - 48px));border:1px solid var(--border-strong);border-radius:10px;background:var(--surface-2);z-index:20;box-shadow:0 12px 30px #00000059;overflow:hidden}.dictor-cast-popover-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border-strong)}.dictor-cast-popover-head h3{margin:0}.dictor-cast-popover-body{display:grid;gap:6px;max-height:52vh;overflow:auto;padding:10px}.dictor-cast-popover-body button{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface-2);color:var(--text);padding:8px 10px;text-align:left}.dictor-cast-popover-body button.active{border-color:var(--border-strong);background:var(--accent)}.dictor-cast-popover-body button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dictor-cast-popover-body button em{font-style:normal;opacity:.75;font-size:12px}.dictor-cast-popover-body button strong{font-size:12px;opacity:.9}.dictor-script-layout{display:grid;grid-template-columns:180px minmax(0,1fr);gap:12px;align-items:start}.dictor-script-sidebar{border:1px solid var(--border-strong);border-radius:8px;background:var(--surface-1);padding:10px;max-height:74vh;overflow:auto}.dictor-script-sidebar h3{margin:2px 0 10px;font-size:14px}.dictor-chapter-list{display:grid;gap:6px}.dictor-chapter-list button{display:flex;justify-content:flex-start;align-items:center;gap:6px;text-align:left;width:100%;border:1px solid var(--border-strong);border-radius:7px;padding:7px 10px;background:var(--surface-1);color:var(--text);cursor:pointer}.dictor-chapter-list button.active{border-color:var(--border-strong);background:var(--accent)}.dictor-script-main{border:1px solid var(--border-strong);border-radius:8px;background:var(--surface-1);padding:10px}.dictor-script-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px}.dictor-script-controls input[type=text]{min-width:240px;height:34px}.dictor-script-controls label{display:inline-flex;gap:6px;align-items:center;font-size:13px}.dictor-script-controls input[type=number]{width:58px}.dictor-script-controls a{color:var(--accent);text-decoration:none;border-bottom:1px dashed var(--accent)}.dictor-script-canvas{border:1px solid var(--border-strong);border-radius:8px;background:var(--surface-2);min-height:420px;max-height:68vh;overflow:auto;padding:8px}.dictor-script-line{display:grid;grid-template-columns:44px minmax(0,1fr);gap:8px;align-items:flex-start;border:1px solid transparent;border-radius:6px;margin-bottom:4px;padding:5px 7px;cursor:pointer}.dictor-script-line .line-no{font-size:11px;color:var(--accent);padding-top:2px}.dictor-script-line .line-text{white-space:pre-wrap;font-size:var(--dictor-script-font-size, 12px);line-height:1.5}.dictor-script-line.target{box-shadow:inset 0 0 0 var(--glow, 1px) var(--accent)}.dictor-script-line.active{border-color:var(--blue);box-shadow:0 0 0 var(--glow, 1px) var(--blue)}.dictor-script-canvas.is-light-theme{background:var(--text);border-color:var(--accent)}.dictor-script-canvas.is-light-theme .dictor-script-line{color:var(--surface-2)}.dictor-script-canvas.is-light-theme .dictor-script-line .line-no{color:var(--accent)}@media (max-width: 1220px){.dictor-script-layout{grid-template-columns:minmax(0,1fr)}.dictor-script-sidebar{max-height:none}.dictor-tools-grid{grid-template-columns:minmax(0,1fr)}}.row.head{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.list{list-style:none;margin:0;padding:0;display:grid;gap:12px}.list.compact li{gap:2px}.monitor{display:grid;gap:16px}.monitor-hero{display:flex;justify-content:space-between;gap:16px;padding:18px 20px;border-radius:6px;background:linear-gradient(135deg,var(--accent),var(--surface-2));border:1px solid var(--border-strong)}.monitor-hero p{margin:6px 0 0;color:var(--text-dim)}.monitor-percent{font-size:42px;font-weight:700;line-height:1}.status-badge{display:inline-flex;align-items:center;justify-content:center;height:22px;padding:0 9px;border-radius:999px;font-size:11.5px;font-weight:500;letter-spacing:0;white-space:nowrap;border:1px solid var(--border)}.status-char_extracting,.status-processing,.status-author_review,.status-pending_review{background:var(--blue-soft);color:var(--blue);border-color:transparent}.status-done,.status-approved,.status-published,.status-published_to_dictor,.status-ready_for_mix{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-line)}.status-failed,.status-rejected_audio{background:var(--danger-soft);color:var(--danger);border-color:transparent}.status-stopped,.status-stopping,.status-skipped,.status-needs_review{background:var(--amber-soft);color:var(--amber);border-color:transparent}.status-queued,.status-waiting,.status-uploaded{background:var(--surface-2);color:var(--text-dim);border-color:var(--border)}.progress-meter{display:grid;gap:6px}.progress-track{position:relative;height:8px;border-radius:3px;overflow:hidden;background:var(--border)}.progress-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--accent) 0%,var(--accent) 100%)}.progress-label{font-size:12px;color:var(--text-dim)}.sync-indicator{display:inline-flex;margin-bottom:12px;color:var(--text-dim);font-size:12px}.stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat-card{padding:14px 16px;border-radius:6px;background:var(--surface-2);border:1px solid var(--border-strong);display:flex;flex-direction:column;gap:6px}.stat-card span{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.panel-sub{padding:16px}.panel-sub h3{margin-top:0}.prep-console-panel{display:grid;gap:10px;align-content:start}.prep-upload-panel{display:grid;gap:10px;align-content:start;height:100%}.prep-upload-panel form,.prep-upload-grid,.prep-upload-grid .form-grid-field,.file-picker-with-meta{width:100%;min-width:0}.prep-upload-header h2,.prep-console-header h2{margin:0}.prep-upload-grid{grid-template-columns:minmax(0,1fr);margin-bottom:0}.prep-upload-actions{display:flex;gap:8px;margin-top:6px}.prep-live-panel{display:grid;gap:12px;align-content:start;height:100%}.prep-live-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.prep-live-head h2{margin:0}.prep-live-empty{min-height:112px;display:grid;place-items:center;border:1px dashed var(--border-strong);color:var(--text-dim)}.prep-console-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.prep-console-list{display:grid;gap:10px}.prep-book-row{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-items:center}.prep-book-main{display:grid;gap:8px}.prep-book-strip,.prep-job-card{position:relative;border-radius:4px;border:1px solid var(--border-strong);background:linear-gradient(180deg,var(--surface-2),var(--surface-2));box-shadow:inset 0 0 var(--glow, 18px) var(--accent)}.prep-book-strip{width:100%;border-radius:4px;padding:11px 14px 10px;overflow:hidden;text-align:left}.prep-book-strip:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;width:var(--prep-progress, 0%);background:linear-gradient(90deg,var(--accent),var(--accent));pointer-events:none}.prep-book-row.is-selected .prep-book-strip{border-color:var(--border-strong);box-shadow:inset 0 0 0 1px var(--border-strong),0 0 var(--glow, 14px) var(--accent)}.prep-book-strip>*{position:relative;z-index:1}.prep-book-strip-title{display:block;font-size:18px;line-height:1.1}.prep-book-strip small{display:block;margin-top:2px;font-size:13px;color:var(--text-dim)}.prep-book-statusline{display:grid;gap:5px;color:var(--blue);font-family:IBM Plex Mono,Consolas,monospace;font-size:12px;letter-spacing:.05em;text-shadow:0 0 var(--glow, 10px) var(--blue)}.prep-book-statusline-primary,.prep-book-statusline-secondary{min-width:0}.prep-book-statusline-primary{color:var(--blue)}.prep-book-statusline-secondary{display:flex;flex-wrap:wrap;gap:12px;color:var(--blue)}.prep-book-actionhint{display:block;color:var(--blue);font-family:IBM Plex Mono,Consolas,monospace;font-size:12px;line-height:1.35;letter-spacing:.03em;text-shadow:0 0 var(--glow, 10px) var(--blue)}.prep-book-actions{display:flex;flex-wrap:wrap;gap:8px}.prep-book-livefacts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.prep-book-livefacts span{display:grid;gap:2px;padding:7px 10px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font-family:IBM Plex Mono,Consolas,monospace;font-size:13px;line-height:1.2}.prep-book-livefacts strong{color:var(--blue);font-size:10px;letter-spacing:.08em;text-transform:uppercase;text-shadow:0 0 var(--glow, 8px) var(--blue)}.prep-book-actions button,.file-picker-button,.panel button{box-shadow:0 0 #0000;transition:border-color .14s ease,box-shadow .14s ease,transform .14s ease,background .14s ease}.prep-book-actions button:hover,.file-picker-button:hover,.panel button:hover{border-color:var(--accent);box-shadow:0 0 var(--glow, 16px) var(--accent);transform:translateY(-1px)}.prep-book-actions button{min-width:140px}.prep-queue-panel{display:grid;gap:12px}.prep-queue-panel-compact{padding:14px;gap:10px;align-content:start}.prep-queue-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.prep-queue-head h2{margin:0}.prep-queue-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.prep-queue-panel-compact .prep-queue-grid{grid-template-columns:1fr;max-height:230px;overflow:auto;padding-right:2px;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:6px;color-scheme:dark;scrollbar-width:thin;scrollbar-color:var(--border-strong) var(--surface-2)}.prep-queue-panel-compact,.prep-queue-panel-compact *{scrollbar-width:thin;scrollbar-color:var(--border-strong) var(--surface-2)}.prep-queue-panel-compact::-webkit-scrollbar,.prep-queue-panel-compact *::-webkit-scrollbar{width:10px;height:10px}.prep-queue-panel-compact::-webkit-scrollbar-track,.prep-queue-panel-compact *::-webkit-scrollbar-track{background:linear-gradient(180deg,var(--surface-2),var(--surface-2));border-left:1px solid var(--border-strong)}.prep-queue-panel-compact::-webkit-scrollbar-thumb,.prep-queue-panel-compact *::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--border-strong),var(--accent));border:1px solid var(--accent);border-radius:8px;box-shadow:0 0 var(--glow, 8px) var(--accent)}.prep-queue-panel-compact::-webkit-scrollbar-thumb:hover,.prep-queue-panel-compact *::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,var(--accent),var(--accent))}.prep-queue-column{display:grid;gap:8px;align-content:start}.prep-queue-column h3{margin:0;font-size:15px;color:var(--text-dim)}.prep-queue-empty{margin:0;padding:10px;border:1px dashed var(--border-strong);color:var(--text-dim)}.prep-queue-row{border:1px solid var(--border-strong);background:var(--surface-2);border-radius:4px;padding:8px;display:grid;gap:8px}.prep-queue-row.is-selected{border-color:var(--border-strong);box-shadow:inset 0 0 0 1px var(--border-strong)}.prep-queue-book{text-align:left;display:grid;gap:2px;padding:0;background:transparent;border:0;color:inherit;cursor:pointer}.prep-queue-book strong{font-size:14px;line-height:1.2}.prep-queue-book span{font-size:12px;color:var(--blue);font-family:IBM Plex Mono,Consolas,monospace}.prep-queue-actions{display:flex;flex-wrap:wrap;gap:8px}.prep-queue-actions button{min-width:104px}@media (max-width: 1680px){.prep-top-grid{grid-template-columns:var(--prep-two-col)}.prep-queue-panel-compact{grid-column:1 / -1}.prep-queue-panel-compact .prep-queue-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none;overflow:visible}}.prep-console-empty{display:grid;gap:6px;padding:14px;border-radius:4px;border:1px dashed var(--border-strong);background:var(--surface-2)}.prep-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.prep-compact-panel{min-height:100%;padding:12px 14px}.prep-jobs-panel,.prep-overview-panel{display:grid;gap:10px;padding:12px 14px}.prep-jobs-header{display:flex;justify-content:space-between;gap:12px;align-items:center}.prep-job-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;grid-auto-rows:1fr}.prep-job-card{display:grid;gap:8px;padding:14px}.prep-pipeline-card{align-content:start}.prep-job-topline{display:flex;justify-content:space-between;gap:10px;align-items:start}.prep-job-stage{color:var(--text);text-transform:uppercase;letter-spacing:.08em;font-size:12px}.prep-job-note{color:var(--text-dim);line-height:1.45}.prep-pipeline-estimate{display:grid;gap:3px;padding-top:6px;border-top:1px solid var(--border-strong)}.prep-pipeline-estimate strong{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.prep-pipeline-estimate span{color:var(--text-dim);font-family:IBM Plex Mono,Consolas,monospace;font-size:12px;line-height:1.4}.prep-warning-panel{padding:10px 12px}.prep-warning-panel .list.compact li{padding-bottom:0;border-bottom:0}.prep-dense-layout{gap:12px}.prep-heartbeat{position:relative;overflow:hidden;padding:10px 12px;--heartbeat-glow: var(--blue);--heartbeat-edge: var(--blue);--heartbeat-scan: var(--accent)}.prep-heartbeat:before{content:"";position:absolute;inset:-20% auto -20% -20%;width:42%;background:linear-gradient(90deg,transparent 0%,var(--heartbeat-scan) 48%,transparent 100%);opacity:0;pointer-events:none}.prep-heartbeat-shell{position:relative;z-index:1;display:grid;gap:8px;align-items:stretch}.prep-heartbeat-body{display:grid;gap:8px;grid-template-columns:minmax(320px,.7fr) minmax(0,1.3fr);align-items:stretch}.prep-heartbeat-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.prep-heartbeat-summary{min-width:0}.prep-heartbeat-summary span{display:block;color:var(--blue);font-family:IBM Plex Mono,Consolas,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prep-heartbeat-console{display:grid;gap:4px;min-height:100%;padding:8px 10px;border:1px solid var(--border-strong);background:linear-gradient(180deg,var(--surface-2),var(--surface-2)),repeating-linear-gradient(180deg,var(--border-strong) 0,var(--border-strong) 1px,transparent 1px,transparent 22px);box-shadow:inset 0 0 0 var(--glow, 1px) var(--blue)}.prep-heartbeat-console-line{display:grid;grid-template-columns:88px minmax(0,1fr);gap:8px;align-items:baseline;font-family:IBM Plex Mono,Consolas,monospace;font-size:11px;line-height:1.35}.prep-heartbeat-console-line span{color:var(--blue);text-transform:uppercase;letter-spacing:.08em}.prep-heartbeat-console-line strong{color:var(--accent);font-weight:500;overflow:hidden;text-overflow:ellipsis}.prep-heartbeat-console-line.line-accent strong{color:var(--accent)}.prep-heartbeat-console-line.line-warning strong{color:var(--amber)}.prep-heartbeat-console-line.line-error strong{color:var(--danger)}.prep-heartbeat-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;align-content:stretch}.prep-heartbeat-facts span{display:grid;gap:3px;padding:7px 8px;border:1px solid var(--border-strong);background:var(--surface-2);font-family:IBM Plex Mono,Consolas,monospace;font-size:11px;line-height:1.28}.prep-heartbeat-facts strong{color:var(--blue);font-size:9px;letter-spacing:.08em;text-transform:uppercase}.prep-heartbeat-success{border-color:var(--accent);box-shadow:inset 0 0 0 var(--glow, 1px) var(--accent),0 0 var(--glow, 20px) var(--accent);--heartbeat-glow: var(--accent);--heartbeat-edge: var(--accent);--heartbeat-scan: var(--accent)}.prep-heartbeat-info{border-color:var(--blue);box-shadow:inset 0 0 0 var(--glow, 1px) var(--blue),0 0 var(--glow, 20px) var(--blue);--heartbeat-glow: var(--blue);--heartbeat-edge: var(--blue);--heartbeat-scan: var(--blue)}.prep-heartbeat-error{border-color:var(--danger);box-shadow:inset 0 0 0 var(--glow, 1px) var(--danger),0 0 var(--glow, 20px) var(--danger);--heartbeat-glow: var(--danger);--heartbeat-edge: var(--danger);--heartbeat-scan: var(--danger)}.prep-heartbeat .signal-live:before,.prep-heartbeat .signal-warm:before,.prep-heartbeat .signal-stale:before,.prep-heartbeat .signal-fault:before,.prep-heartbeat .signal-queue:before,.prep-heartbeat .signal-gate:before,.prep-heartbeat .signal-complete:before{content:""}.prep-heartbeat.signal-live{animation:prep-heartbeat-pulse 1.9s ease-in-out infinite}.prep-heartbeat.signal-live:before{opacity:1;animation:prep-heartbeat-scan 3.8s linear infinite}.prep-heartbeat.signal-warm{animation:prep-heartbeat-pulse 3.4s ease-in-out infinite}.prep-heartbeat.signal-warm:before{opacity:.72;animation:prep-heartbeat-scan 6.4s linear infinite}.prep-heartbeat.signal-stale{filter:saturate(.78)}.prep-heartbeat.signal-stale:before{opacity:.35;animation:prep-heartbeat-scan 9s linear infinite}.prep-heartbeat.signal-fault{animation:prep-heartbeat-alarm 1.4s ease-in-out infinite}.prep-heartbeat.signal-fault:before{opacity:.9;animation:prep-heartbeat-scan 4.6s linear infinite}.prep-heartbeat.signal-queue:before,.prep-heartbeat.signal-gate:before{opacity:.4;animation:prep-heartbeat-scan 10s linear infinite}.prep-heartbeat.signal-complete:before{opacity:.18}@keyframes prep-heartbeat-pulse{0%,to{box-shadow:inset 0 0 0 var(--glow, 1px) var(--blue),0 0 var(--glow, 18px) var(--blue)}50%{box-shadow:inset 0 0 0 var(--glow, 1px) var(--blue),0 0 var(--glow, 28px) var(--blue)}}@keyframes prep-heartbeat-alarm{0%,to{box-shadow:inset 0 0 0 var(--glow, 1px) var(--danger),0 0 var(--glow, 20px) var(--danger)}50%{box-shadow:inset 0 0 0 var(--glow, 1px) var(--danger),0 0 var(--glow, 30px) var(--danger)}}@keyframes prep-heartbeat-scan{0%{transform:translate(-10%)}to{transform:translate(300%)}}.prep-stage-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;grid-auto-rows:1fr}.prep-stage-layout{display:grid;grid-template-columns:minmax(320px,.78fr) minmax(0,1.22fr);gap:12px;align-items:stretch;min-height:0}.prep-stage-rail{display:grid;gap:10px;align-content:start;min-height:0;height:100%}.prep-stage-rail-head h2{margin:0 0 4px}.prep-stage-rail-head small{color:var(--text-dim)}.prep-stage-layout .prep-stage-grid{grid-template-columns:minmax(0,1fr);gap:5px;grid-auto-rows:auto}.prep-stage-card,.prep-metric-card,.prep-memory-group{padding:10px 12px}.prep-stage-card,.prep-metric-card,.prep-job-card,.prep-memory-group{height:100%}.prep-stage-head{display:flex;justify-content:space-between;gap:6px;align-items:center;padding-top:5px;margin-bottom:0}.prep-stage-head span,.prep-metric-card span,.prep-memory-group span{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);margin-top:0;margin-bottom:0;line-height:1}.prep-stage-card strong,.prep-metric-card strong{display:block;font-size:16px;line-height:1.08;color:var(--accent);margin-top:-1px}.prep-stage-card small{display:block;margin-top:1px;color:var(--text-dim);line-height:1.16;font-size:10.5px}.prep-stage-card{display:grid;align-content:start;grid-template-rows:auto auto auto auto 1fr;min-height:82px;width:100%;padding:3px 9px 7px;text-align:left;cursor:pointer;border-radius:6px;border:1px solid var(--border-strong);background:linear-gradient(180deg,var(--surface-2),var(--surface-2));box-shadow:inset 0 0 var(--glow, 18px) var(--accent);transition:border-color .14s ease,box-shadow .14s ease,transform .14s ease,background .14s ease}.prep-stage-card .status-badge{min-height:18px;padding:0 7px;font-size:10px;letter-spacing:.05em;flex-shrink:0;align-self:center;margin-top:1px;margin-right:2px}.prep-stage-card:hover{border-color:var(--accent);box-shadow:0 0 var(--glow, 16px) var(--accent)}.prep-stage-card.is-selected{transform:translateY(-1px)}.prep-stage-card.stage-done,.prep-stage-detail.stage-done{border-color:var(--accent);box-shadow:inset 0 0 0 var(--glow, 1px) var(--accent),0 0 var(--glow, 22px) var(--accent)}.prep-stage-card.stage-waiting,.prep-stage-card.stage-stopped,.prep-stage-detail.stage-waiting,.prep-stage-detail.stage-stopped{border-color:var(--amber);box-shadow:inset 0 0 0 var(--glow, 1px) var(--amber),0 0 var(--glow, 18px) var(--amber)}.prep-stage-card.stage-queued,.prep-stage-detail.stage-queued{border-color:var(--blue);box-shadow:inset 0 0 0 var(--glow, 1px) var(--blue),0 0 var(--glow, 18px) var(--blue)}.prep-stage-card.stage-processing,.prep-stage-detail.stage-processing{border-color:var(--blue);box-shadow:inset 0 0 0 var(--glow, 1px) var(--blue),0 0 var(--glow, 24px) var(--blue)}.prep-stage-card.stage-failed,.prep-stage-detail.stage-failed{border-color:var(--danger);box-shadow:inset 0 0 0 var(--glow, 1px) var(--danger),0 0 var(--glow, 24px) var(--danger)}.prep-stage-card.stage-skipped,.prep-stage-detail.stage-skipped{border-color:var(--text-dim)}.prep-stage-meta{margin-top:1px;color:var(--blue);font-family:IBM Plex Mono,Consolas,monospace;font-size:10px;line-height:1.12}.prep-stage-progress{position:relative;display:grid;align-items:center;min-height:18px;margin-top:3px;margin-bottom:0;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface-2);overflow:hidden}.prep-stage-progress-bar{position:absolute;inset:0 auto 0 0;min-width:6px;border-radius:inherit;background:linear-gradient(90deg,var(--blue),var(--accent));box-shadow:0 0 var(--glow, 18px) var(--blue)}.prep-stage-progress span{position:relative;z-index:1;padding:0 8px;color:var(--text);font-family:IBM Plex Mono,Consolas,monospace;font-size:9px;letter-spacing:.06em;text-transform:uppercase}.prep-stage-detail{display:grid;gap:14px;align-content:start;min-height:0;height:100%;overflow:visible}.prep-stage-detail-head .status-badge{margin-top:2px;margin-right:2px}.prep-stage-detail-head{display:flex;justify-content:space-between;gap:14px;align-items:start}.prep-stage-detail-head h2{margin:0 0 6px}.prep-stage-detail-head p{margin:0;color:var(--text-dim);line-height:1.45}.prep-stage-detail-grid{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(0,1.1fr);gap:12px}.prep-stage-detail-facts,.prep-stage-detail-diagnostic,.prep-stage-log-list{display:grid;gap:8px}.prep-stage-detail-facts span{display:grid;gap:3px;padding:9px 10px;border:1px solid var(--border-strong);background:var(--surface-2);font-family:IBM Plex Mono,Consolas,monospace;font-size:12px}.prep-stage-detail-facts strong,.prep-stage-detail-diagnostic strong,.prep-stage-log-list strong{color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em;font-size:11px}.prep-stage-detail-diagnostic p{margin:0;color:var(--text);line-height:1.5}.prep-stage-log{display:grid;grid-template-columns:148px minmax(0,1fr);gap:10px;padding:8px 10px;border-radius:4px;border:1px solid var(--border-strong);background:var(--surface-2)}.prep-stage-log span{color:var(--blue);font-family:IBM Plex Mono,Consolas,monospace;font-size:11px}.prep-stage-log div,.prep-stage-log-empty{color:var(--accent);line-height:1.45}.prep-stage-log.log-error,.prep-stage-log.log-warning{border-color:var(--danger)}@media (max-width: 1400px){.prep-stage-layout{grid-template-columns:1fr;align-items:start;height:auto}.prep-stage-rail{height:auto}.prep-stage-detail{height:auto;max-height:none;overflow:visible}}.prep-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;grid-auto-rows:1fr}.prep-lower-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:stretch}.prep-memory-panel,.prep-job-panel{display:grid;gap:10px;align-content:start;height:100%}.prep-job-panel h2,.prep-memory-panel h2{margin:0;font-size:20px;line-height:1.1}.prep-memory-header{display:grid;gap:10px}.prep-memory-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.prep-memory-meta span{display:grid;gap:2px;padding:8px 10px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font-family:IBM Plex Mono,Consolas,monospace;font-size:12px;line-height:1.25}.prep-memory-meta strong{color:var(--blue);font-size:10px;letter-spacing:.08em;text-transform:uppercase;text-shadow:0 0 var(--glow, 8px) var(--blue)}.prep-memory-edit{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:4px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-dim);text-decoration:none;transition:border-color .14s ease,box-shadow .14s ease,background .14s ease}.prep-memory-edit:hover{border-color:var(--accent);box-shadow:0 0 var(--glow, 16px) var(--accent);background:var(--surface-2)}.prep-memory-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;align-items:start}.prep-memory-group{border:1px solid var(--border-strong);background:var(--surface-2);display:grid;align-content:start;min-height:100%}.prep-memory-group ul{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:8px}.prep-memory-panel-wide{min-height:400px}.prep-preflight-panel{display:grid;gap:12px;align-content:start;border-color:var(--blue)}.prep-preflight-header{display:flex;align-items:start;justify-content:space-between;gap:12px}.prep-preflight-header h2{margin:0 0 4px;font-size:20px;line-height:1.1}.prep-preflight-header p{margin:0;color:var(--text-dim);font-size:12px;line-height:1.35}.prep-preflight-header>span{min-width:76px;padding:6px 9px;border:1px solid var(--blue);background:var(--surface-2);color:var(--blue);font-family:IBM Plex Mono,Consolas,monospace;font-size:11px;text-align:center;text-transform:uppercase}.prep-preflight-meta{grid-template-columns:repeat(6,minmax(0,1fr))}.prep-preflight-stages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.prep-preflight-stages article{display:grid;gap:4px;padding:10px;border:1px solid var(--border-strong);background:var(--surface-2);min-width:0}.prep-preflight-stages strong{color:var(--blue);font-family:IBM Plex Mono,Consolas,monospace;font-size:11px}.prep-preflight-stages span{color:var(--text);font-size:14px}.prep-preflight-stages small{color:var(--text-dim);font-size:11px;overflow-wrap:anywhere}.prep-preflight-warnings{display:grid;gap:6px;margin:0;padding:0;list-style:none}.prep-preflight-warnings li{padding:8px 10px;border:1px solid var(--amber);background:var(--surface-2);color:var(--amber);font-size:12px;line-height:1.35}.prep-preflight-chapters{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:6px}.prep-preflight-chapters span{padding:7px 9px;border:1px solid var(--border);background:var(--surface-2);color:var(--text);font-size:12px;line-height:1.3;overflow-wrap:anywhere}.prep-preflight-chapters strong{color:var(--blue);margin-right:6px}.prep-bible-panel{display:grid;gap:12px;align-content:start;border-color:var(--amber)}.prep-bible-meta{grid-template-columns:repeat(4,minmax(0,1fr))}.prep-bible-conflicts{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:6px}.prep-bible-conflicts span{display:grid;gap:3px;padding:8px 10px;border:1px solid var(--amber);background:var(--surface-2);color:var(--amber);font-size:12px;line-height:1.3;overflow-wrap:anywhere}.prep-bible-conflicts strong{color:var(--amber)}.prep-memory-group li{color:var(--text);line-height:1.32;border-bottom:1px solid var(--border);padding-bottom:7px;font-size:13px}.prep-memory-group li:last-child{border-bottom:0;padding-bottom:0}.char-memory-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:start}.char-memory-hero h2{margin:0 0 6px}.char-memory-hero p{margin:0;color:var(--text-dim)}.char-memory-hero-meta{display:grid;gap:8px;min-width:240px}.char-memory-hero-meta span{display:grid;gap:3px;padding:10px 12px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font-family:IBM Plex Mono,Consolas,monospace;font-size:12px}.char-memory-hero-meta .char-memory-meta-alert{border-color:var(--amber);background:var(--surface-2);color:var(--amber)}.char-memory-hero-meta strong{color:var(--blue);font-size:10px;letter-spacing:.08em;text-transform:uppercase}.char-memory-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.75fr);gap:16px}.char-memory-editor-panel,.char-memory-guide-panel{display:grid;gap:12px;align-content:start}.char-memory-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:start}.char-memory-toolbar-copy{display:grid;gap:4px}.char-memory-toolbar-copy span{color:var(--text-dim);font-size:13px;line-height:1.35}.char-memory-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.char-memory-actions .muted-action{border-color:var(--blue);color:var(--blue)}.char-memory-editor{width:100%;min-height:68vh;resize:vertical;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);padding:14px;font-family:IBM Plex Mono,Consolas,monospace;font-size:14px;line-height:1.55}.char-memory-editor-meta{display:flex;flex-wrap:wrap;gap:8px}.char-memory-editor-meta span{padding:7px 10px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--accent);font-family:IBM Plex Mono,Consolas,monospace;font-size:12px}.char-memory-guide-block{display:grid;gap:8px;padding:12px;border:1px solid var(--border-strong);background:var(--surface-2)}.char-memory-guide-block h3{margin:0;font-size:16px}.char-memory-preview-summary{display:grid;gap:8px}.char-memory-preview-summary span,.char-memory-preview-item{padding:9px 10px;border:1px solid var(--border-strong);background:var(--surface-2);font-family:IBM Plex Mono,Consolas,monospace;font-size:12px}.char-memory-preview-list{display:grid;gap:8px}.char-memory-preview-item{display:grid;gap:4px}.char-memory-preview-head{display:flex;justify-content:space-between;gap:10px}.char-memory-preview-item small,.char-memory-preview-note{color:var(--text-dim);line-height:1.4}.preview-create{border-color:var(--accent);color:var(--accent)}.preview-update{border-color:var(--amber);color:var(--amber)}.preview-remove{border-color:var(--danger);color:var(--danger)}.preview-unchanged{border-color:var(--text-dim);color:var(--text-dim)}.char-memory-preview-item.preview-create{border-color:var(--accent)}.char-memory-preview-item.preview-update{border-color:var(--amber)}.char-memory-preview-item.preview-remove{border-color:var(--danger)}.char-memory-preview-item.preview-unchanged{border-color:var(--text-dim)}.char-memory-template{margin:0;padding:12px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font-family:IBM Plex Mono,Consolas,monospace;font-size:13px;line-height:1.5;white-space:pre-wrap}.char-memory-links{display:grid;gap:8px}.char-memory-links a{color:var(--text-dim)}.validation-char-memory-panel{padding:12px 16px}.validation-char-memory-head{display:flex;justify-content:space-between;gap:16px;align-items:start}.validation-char-memory-head h3{margin:0 0 6px}.validation-char-memory-head p{margin:0;color:var(--text-dim);max-width:760px;line-height:1.45;font-size:14px}.validation-char-memory-link{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:4px;border:1px solid var(--border-strong);background:var(--surface-2);text-decoration:none}.validation-book-strip{padding:16px 18px}.validation-book-strip-head{display:flex;justify-content:space-between;gap:16px;align-items:start}.validation-book-strip-head h2{margin:4px 0 0}.validation-book-strip-head p{margin:6px 0 0;color:var(--text-dim);line-height:1.45;max-width:760px}.validation-book-strip-stats{display:grid;gap:10px;justify-items:end;min-width:240px;color:var(--text-dim);font-family:IBM Plex Mono,Consolas,monospace;font-size:12px}.validation-book-strip-stats .progress-meter{min-width:220px}.validation-book-switcher{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.validation-book-chip{display:grid;gap:4px;min-width:220px;text-align:left;padding:10px 12px;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface-2);color:inherit}.validation-book-chip.is-active{border-color:var(--border-strong);background:var(--surface-2)}.validation-review-shell{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(220px,.5fr);gap:12px;align-items:start}.validation-review-rail,.validation-review-stage,.validation-review-sidebar{min-height:0}.validation-review-rail{position:sticky;top:12px;display:grid;gap:8px}.validation-review-rail-head{display:grid;gap:4px}.validation-review-rail-head h3{margin:0;font-size:16px}.validation-review-head-tools{display:grid;gap:6px;justify-items:stretch;width:100%}.validation-preview-head h2{margin:4px 0 0}.validation-inline-char-memory{width:100%;justify-content:center;min-height:30px;font-size:12px}.validation-review-book-tree{display:grid;gap:6px;max-height:calc(100vh - 150px);overflow:auto;padding-right:2px}.validation-review-book-node{border:1px solid var(--border-strong);border-radius:6px;background:var(--surface-2)}.validation-review-book-node.is-active-book{border-color:var(--border-strong);background:var(--surface-2)}.validation-review-book-toggle{width:100%;display:grid;grid-template-columns:14px minmax(0,1fr);align-items:center;gap:8px;text-align:left;border:0;background:transparent;color:inherit;padding:8px 9px}.validation-review-book-arrow{color:var(--text-dim);font-size:12px;transition:transform .14s ease}.validation-review-book-arrow.is-open{transform:rotate(90deg)}.validation-review-book-title{font-size:13px;line-height:1.25;color:var(--text)}.validation-book-switcher-inline{margin-top:0}.validation-review-chapters{display:grid;gap:3px;padding:0 6px 6px 14px;border-top:1px solid var(--border-strong)}.validation-review-chapter-card{display:block;width:100%;padding:4px 2px 4px 8px;border-radius:0;border:0;border-left:2px solid transparent;background:transparent;color:inherit;text-align:left}.validation-review-chapter-card.is-active{border-left-color:var(--border-strong);background:var(--surface-2)}.validation-review-chapter-link{display:block;font-size:12.5px;line-height:1.3;color:var(--text)}.validation-review-chapter-title{display:block;margin-top:1px;font-size:11px;line-height:1.25;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.validation-review-chapters-empty{margin:4px 0 0;font-size:12px;color:var(--text-dim)}.validation-preview-head{display:flex;justify-content:space-between;gap:12px;align-items:start;margin-bottom:4px}.validation-preview-head p{margin:4px 0 0;color:var(--text-dim);line-height:1.35;max-width:780px;font-size:13px}.validation-preview-sidehead{display:grid;gap:0;justify-items:end}.validation-preview-controls{display:inline-flex;align-items:center;gap:12px;padding:0}.validation-preview-theme-toggle{display:inline-flex;gap:4px}.validation-preview-theme-toggle button,.validation-preview-fontsize select{min-height:28px;border-radius:8px;font-size:11px;padding:0 10px}.validation-preview-theme-toggle button{min-width:38px;border:1px solid var(--border-strong);background:transparent;color:var(--text-dim);display:inline-flex;align-items:center;justify-content:center;padding:0}.validation-preview-theme-toggle button.is-active{border-color:var(--blue);background:var(--surface-2);color:var(--text)}.validation-preview-theme-toggle button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.validation-preview-fontsize{display:inline-flex;align-items:center;gap:0}.validation-preview-fontsize select{min-width:74px;font-family:IBM Plex Mono,Consolas,monospace;color:var(--text);border:1px solid var(--border-strong);background:var(--surface-2)}.validation-preview-castbar{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.validation-preview-castbar span,.validation-sidebar-tags span{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-dim);font-size:11px;font-family:IBM Plex Mono,Consolas,monospace}.validation-script-preview{display:grid;gap:6px;min-height:calc(100vh - 210px);max-height:calc(100vh - 210px);overflow:auto;padding:10px;border-radius:8px;border:1px solid var(--border-strong);background:linear-gradient(180deg,var(--surface-2),var(--surface-2)),repeating-linear-gradient(180deg,var(--accent) 0 1px,transparent 1px 28px)}.validation-preview-line{display:grid;grid-template-columns:36px minmax(0,1fr);gap:8px;align-items:start;padding:8px 10px;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface-2)}.validation-preview-line.is-cast,.validation-preview-line.is-scene{background:var(--surface-2);border-color:var(--blue)}.validation-preview-line.is-remark{background:var(--surface-2);border-style:dashed}.validation-preview-line.is-pov-narrative{border-color:var(--blue);box-shadow:inset 2px 0 0 var(--blue)}.validation-preview-line.speaker-green{box-shadow:inset 3px 0 0 var(--accent)}.validation-preview-line.speaker-blue{box-shadow:inset 3px 0 0 var(--blue)}.validation-preview-line.speaker-amber{box-shadow:inset 3px 0 0 var(--amber)}.validation-preview-line.speaker-cyan{box-shadow:inset 3px 0 0 var(--blue)}.validation-preview-line.speaker-rose{box-shadow:inset 3px 0 0 var(--danger)}.validation-preview-line.speaker-violet{box-shadow:inset 3px 0 0 var(--blue)}.validation-preview-line-no{color:var(--blue);font-family:IBM Plex Mono,Consolas,monospace;font-size:11px;-webkit-user-select:none;user-select:none;padding-top:2px}.validation-preview-line-body{display:grid;gap:4px}.validation-preview-speaker{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.validation-preview-text{white-space:pre-wrap;word-break:break-word;line-height:1.5;color:var(--text);font-size:var(--validation-preview-font-size, 17px)}.validation-preview-segment-speech{white-space:pre-wrap}.validation-preview-segment-narration{white-space:pre-wrap;color:var(--accent);font-style:italic;font-weight:500}.validation-preview-line.has-narration-segments .validation-preview-segment-narration{padding:0 2px}.validation-preview-empty{display:grid;place-items:center;min-height:420px;text-align:center}.validation-preview-empty p{max-width:560px;color:var(--text-dim)}.validation-review-sidebar{display:grid;gap:10px}.validation-sidebar-section{display:grid;gap:8px;padding-bottom:10px;border-bottom:1px solid var(--border-strong)}.validation-review-sidebar .validation-sidebar-section:last-child{border-bottom:0;padding-bottom:0}.validation-sidebar-section h3{margin:0;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.validation-sidebar-mini-meta{display:flex;flex-wrap:wrap;gap:6px}.validation-sidebar-mini-meta span{display:inline-flex;min-height:22px;align-items:center;padding:0 8px;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-dim);font-size:10px;font-family:IBM Plex Mono,Consolas,monospace}.validation-profile-card{display:grid;grid-template-columns:auto 1fr;gap:4px 8px;align-items:center;padding:8px 10px;border:1px solid var(--blue);background:var(--surface-2)}.validation-profile-card strong,.validation-profile-card span{font-family:IBM Plex Mono,Consolas,monospace;font-size:12px;color:var(--text)}.validation-profile-card small{grid-column:1 / -1;color:var(--text-dim);font-size:11px}.validation-profile-card.is-author_assisted{border-color:var(--amber);background:var(--surface-2)}.validation-identity-queue{display:grid;gap:8px}.validation-identity-item{display:grid;gap:4px;padding:8px;border:1px solid var(--amber);background:var(--surface-2)}.validation-identity-item strong{color:var(--amber);font-size:13px}.validation-identity-item small{color:var(--text-dim);font-size:11px;line-height:1.35}.validation-identity-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.validation-identity-actions button{min-height:28px;justify-content:center;font-size:10px}.validation-notes-editor{display:grid;gap:6px}.validation-notes-editor textarea{width:100%;min-height:76px;resize:vertical;padding:8px;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font-family:IBM Plex Mono,Consolas,monospace;font-size:11px;line-height:1.35}.validation-notes-editor button{justify-content:center;min-height:30px;font-size:11px}.validation-mini-log{display:grid;gap:3px;padding:8px;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface-2)}.validation-mini-log-line{font-family:IBM Plex Mono,Consolas,monospace;font-size:11px;line-height:1.35;color:var(--accent)}.validation-artifact-panel{display:grid;gap:8px}.validation-artifact-select select{width:100%;min-height:30px;border-radius:8px}.validation-artifact-summary{display:grid;gap:6px}.validation-artifact-list{display:grid;gap:4px}.validation-artifact-item{width:100%;display:grid;grid-template-columns:minmax(54px,auto) minmax(52px,auto) minmax(0,1fr);gap:6px;align-items:center;min-height:28px;padding:0 8px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2);font-size:10px;font-family:IBM Plex Mono,Consolas,monospace;color:var(--text-dim);text-align:left}.validation-artifact-item.is-active{border-color:var(--blue);background:var(--blue);color:var(--text)}.validation-artifact-item.is-effective{box-shadow:inset 0 0 0 var(--glow, 1px) var(--accent)}.validation-signal-list li{justify-content:space-between;display:grid;grid-template-columns:minmax(120px,.8fr) minmax(0,1fr);gap:10px;align-items:start}.validation-signal-list li span{color:var(--text);text-align:right}.validation-sidebar-tags{display:flex;flex-wrap:wrap;gap:8px}.validation-sidebar-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.validation-sidebar-actions button{width:100%;justify-content:center;min-height:30px;padding:0 8px;font-size:11px}.validation-sidebar-actions button.is-warning{border-color:var(--amber);background:linear-gradient(180deg,var(--amber),var(--surface-2));color:var(--amber);box-shadow:0 0 0 var(--glow, 1px) var(--amber),0 0 var(--glow, 18px) var(--amber);animation:validation-warning-pulse 1.4s ease-in-out infinite}.validation-final-progress-section{gap:10px}.validation-final-progress{display:grid;gap:8px;padding:8px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2)}.validation-final-progress.is-active .progress-track{background:linear-gradient(90deg,var(--surface-2),var(--surface-2)),repeating-linear-gradient(90deg,var(--blue) 0 14px,var(--accent) 14px 28px)}.validation-final-progress.is-active .progress-fill{background:linear-gradient(90deg,var(--blue) 0%,var(--accent) 100%);box-shadow:0 0 var(--glow, 16px) var(--blue);animation:validation-final-progress-run 1.1s linear infinite}.validation-final-progress.is-failed .progress-fill{background:linear-gradient(90deg,var(--danger) 0%,var(--danger) 100%);box-shadow:0 0 var(--glow, 16px) var(--danger)}.validation-final-progress .progress-label{color:var(--accent)}.validation-final-progress-meta{display:flex;flex-wrap:wrap;gap:6px}.validation-final-progress-meta span,.validation-final-progress-error{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;border:1px solid var(--accent);background:var(--surface-2);color:var(--text-dim);font-size:10px;font-family:IBM Plex Mono,Consolas,monospace}.validation-final-progress-error{color:var(--danger);border-color:var(--danger)}@keyframes validation-final-progress-run{0%{filter:saturate(1)}50%{filter:saturate(1.2) brightness(1.05)}to{filter:saturate(1)}}@keyframes validation-warning-pulse{0%,to{box-shadow:0 0 0 var(--glow, 1px) var(--amber),0 0 var(--glow, 12px) var(--amber)}50%{box-shadow:0 0 0 var(--glow, 1px) var(--amber),0 0 var(--glow, 24px) var(--amber)}}.validation-sidebar-comment-grid{display:grid;gap:8px}.validation-sidebar-comment-grid input,.validation-review-mode select{width:100%;min-height:32px;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface-2);color:inherit;padding:0 8px;font-size:12px}.validation-manual-log li span{font-family:IBM Plex Mono,Consolas,monospace;font-size:11px;color:var(--text-dim);word-break:break-word}.validation-review-stage.is-light-theme .validation-script-preview{border-color:var(--blue);background:linear-gradient(180deg,var(--text),var(--text)),repeating-linear-gradient(180deg,var(--blue) 0 1px,transparent 1px 28px)}.validation-review-stage.is-light-theme .validation-preview-line{background:var(--border);border-color:var(--blue)}.validation-review-stage.is-light-theme .validation-preview-line.is-cast,.validation-review-stage.is-light-theme .validation-preview-line.is-scene{background:var(--text);border-color:var(--blue)}.validation-review-stage.is-light-theme .validation-preview-line.is-remark{background:var(--text)}.validation-review-stage.is-light-theme .validation-preview-line.is-pov-narrative{border-color:var(--blue);box-shadow:inset 2px 0 0 var(--blue)}.validation-review-stage.is-light-theme .validation-preview-line-no{color:var(--blue)}.validation-review-stage.is-light-theme .validation-preview-text,.validation-review-stage.is-light-theme .validation-preview-segment-narration,.validation-review-stage.is-light-theme .validation-preview-speaker{color:var(--surface-2)}.validation-script-head{display:flex;justify-content:space-between;gap:16px;align-items:start;margin-bottom:12px}.validation-script-links{display:grid;gap:8px;min-width:240px}.validation-script-links a{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:4px;border:1px solid var(--border-strong);background:var(--surface-2);text-decoration:none}.validation-script-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.validation-script-column{display:grid;gap:8px}.validation-script-column-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.validation-script-column-head span{color:var(--text-dim);font-size:12px;font-family:IBM Plex Mono,Consolas,monospace}.validation-script-scroll{max-height:65vh;overflow:auto;display:grid;gap:6px;padding:10px;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface-2)}.validation-script-line{display:grid;grid-template-columns:42px minmax(0,1fr);gap:8px;align-items:start;padding:6px 8px;border-radius:4px;background:var(--surface-2);line-height:1.45}.validation-script-line span{color:var(--blue);font-family:IBM Plex Mono,Consolas,monospace;font-size:12px;-webkit-user-select:none;user-select:none}.validation-script-line div{white-space:pre-wrap;word-break:break-word}.validation-script-empty{color:var(--text-dim);line-height:1.45}.validation-chapter-list{display:grid;gap:8px}.validation-chapter-card{width:100%;display:flex;justify-content:space-between;gap:14px;align-items:start;padding:12px 14px;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface-2);color:inherit;text-align:left}.validation-chapter-card.is-active{border-color:var(--border-strong);background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--border-strong)}.validation-chapter-card small{display:block;margin-top:4px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.validation-chapter-metrics{display:grid;gap:4px;justify-items:end;color:var(--text-dim);font-family:IBM Plex Mono,Consolas,monospace;font-size:12px;text-align:right}.validation-layout{align-items:start}.validation-page{align-content:start}.chapter-row button{width:100%;text-align:left;border:1px solid var(--border-strong);background:var(--surface-2);color:inherit;border-radius:6px;padding:12px;display:grid;gap:4px}.validation-panes{grid-template-columns:repeat(2,minmax(0,1fr))}.validation-actions-grid{grid-template-columns:1.4fr 1fr}.validation-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.validation-actions button,.panel button{min-height:34px;border-radius:4px;border:1px solid var(--border-strong);background:var(--surface-2);color:inherit;padding:0 12px;cursor:pointer}.panel button:disabled{opacity:.6;cursor:not-allowed}.panel button.danger{border-color:var(--danger)}.validation-editor{width:100%;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface-2);color:inherit;padding:12px;line-height:1.45;font-family:IBM Plex Mono,Consolas,monospace;resize:vertical}.panel textarea,.panel input,.panel select{width:100%;border-radius:4px;border:1px solid var(--border-strong);background:var(--surface-2);color:inherit;padding:9px 10px}.text-pane{margin:0;white-space:pre-wrap;word-break:break-word;max-height:70vh;overflow:auto;padding:16px;border-radius:6px;background:var(--text);color:var(--surface-2);font-family:"IBM Plex Serif",Georgia,serif;line-height:1.65;font-size:16px}.list li{padding-bottom:12px;border-bottom:1px solid var(--border)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:16px}.form-grid.prep-upload-grid{grid-template-columns:minmax(0,1fr)}.form-grid label{display:grid;gap:6px}.form-grid-field{display:grid;gap:6px;width:100%;justify-self:stretch}.file-picker{display:flex;align-items:center;width:100%;gap:16px;min-height:58px;padding:11px 14px 10px;border-radius:4px;border:1px solid var(--border-strong);background:var(--surface-2)}.file-picker-with-meta{display:flex;align-items:center;justify-content:flex-start}.file-picker-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.file-picker-button{display:inline-flex;align-items:center;min-height:36px;padding:0 16px;border-radius:4px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);cursor:pointer;text-decoration:none}.file-picker-button:hover{background:var(--surface-2)}.file-picker-name{flex:1 1 auto;min-width:0;color:var(--text-dim);font-family:IBM Plex Mono,Consolas,monospace;font-size:14px;line-height:1.15}.file-picker-name.is-selected{color:var(--text)}.prep-upload-meta{display:grid;grid-template-columns:repeat(2,minmax(72px,auto));gap:8px;margin-left:auto}.prep-upload-meta div{display:grid;gap:2px;min-width:92px;padding-left:14px;border-left:1px solid var(--border-strong)}.prep-upload-meta span{color:var(--text-dim);font-size:10px;letter-spacing:.08em;text-transform:uppercase}.prep-upload-meta strong{color:var(--text);font-family:IBM Plex Mono,Consolas,monospace;font-size:13px;line-height:1.2}.prep-upload-state{display:grid;gap:2px;margin-top:0;padding:6px 0 0;border-radius:0;border:1px solid var(--border-strong);border-width:1px 0 0;background:transparent}.prep-upload-state strong{font-size:11px;letter-spacing:.08em;text-transform:uppercase}.prep-upload-state span{color:var(--blue);line-height:1.25;font-size:12px;font-family:IBM Plex Mono,Consolas,monospace;text-shadow:0 0 var(--glow, 8px) var(--blue)}.prep-upload-state small{color:var(--text-dim);line-height:1.35;font-size:12px;font-family:IBM Plex Mono,Consolas,monospace}.prep-upload-actions button{min-height:34px;padding:0 14px;color:var(--text-dim);border-color:var(--border-strong);background:var(--surface-2)}.prep-upload-actions button:disabled{opacity:.7}.prep-upload-state-info{border-color:var(--blue)}.prep-upload-state-success{border-color:var(--border-strong)}.prep-upload-state-error,.prep-warning-panel{border-color:var(--danger)}.form-grid input,.form-grid select,.form-actions button,.whitelist-row button{min-height:36px;border-radius:4px;border:1px solid var(--border-strong);background:var(--surface-2);color:inherit;padding:0 12px}.form-actions{display:flex;align-items:end}.notice-inline{margin:12px 0 0;color:var(--text-dim)}.whitelist-row button{width:fit-content;min-height:32px}small{color:var(--text-dim)}@media (max-width: 900px){.shell{padding:20px}.books-layout,.prep-top-grid,.prep-stage-grid,.prep-metric-grid,.prep-lower-grid,.prep-queue-grid,.prep-memory-groups,.prep-preflight-stages,.prep-preflight-chapters,.prep-job-grid,.char-memory-hero,.char-memory-layout{grid-template-columns:1fr}.char-memory-toolbar{flex-direction:column}.char-memory-actions{justify-content:stretch}.char-memory-actions button{width:100%}.prep-stage-detail-grid,.prep-stage-log,.prep-heartbeat-facts,.prep-heartbeat-body,.prep-heartbeat-console-line{grid-template-columns:1fr}.prep-stage-detail-head,.validation-char-memory-head,.validation-book-strip-head,.validation-preview-head,.validation-review-rail-head{flex-direction:column}.validation-review-toolbar{grid-template-columns:1fr}.validation-review-toolbar-meta,.validation-review-head-tools{justify-items:start}.validation-review-shell,.validation-book-strip-stats{grid-template-columns:1fr}.validation-review-rail{position:static}.validation-review-chapters,.validation-script-preview{max-height:none;min-height:55vh}.validation-sidebar-actions,.validation-book-switcher{grid-template-columns:1fr}.validation-preview-links{min-width:0;width:100%}.validation-preview-sidehead,.validation-preview-controls{width:100%;justify-items:stretch}.validation-preview-controls{justify-content:space-between;flex-wrap:wrap}.validation-signal-list li{grid-template-columns:1fr}.validation-signal-list li span{text-align:left}.validation-script-head,.validation-script-compare{grid-template-columns:1fr;flex-direction:column}.validation-chapter-card{flex-direction:column}.validation-chapter-metrics{justify-items:start;text-align:left}.prep-memory-meta,.prep-book-livefacts,.file-picker-with-meta{grid-template-columns:1fr}.prep-upload-meta{margin-left:0;grid-template-columns:repeat(2,minmax(0,1fr))}.topbar{flex-direction:column}.prep-console-header,.prep-jobs-header{align-items:start;flex-direction:column}.prep-book-row,.prep-summary-grid,.row,.stat-grid,.form-grid{grid-template-columns:1fr}.file-picker{flex-wrap:wrap;align-items:start}.validation-panes,.validation-actions-grid{grid-template-columns:1fr}}.prep-run-observability{display:flex;flex-direction:column;gap:12px}.prep-run-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}.prep-run-grid article{padding:10px;border:1px solid var(--blue);border-radius:10px;background:var(--surface-2)}.prep-run-grid article p{margin:6px 0 0;font-size:.9rem}.prep-hover-log{text-decoration:underline dotted;cursor:help}.prep-hover-log-chip{margin-left:8px;padding:2px 7px;border-radius:999px;border:1px solid var(--blue);font-size:11px;line-height:1.4;text-transform:uppercase;letter-spacing:.04em;color:var(--blue);cursor:help}.prep-heartbeat-compact{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px}.prep-heartbeat-compact-actions{display:flex;align-items:center;gap:8px}.prep-diagnostics-inline{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:4px;margin-bottom:4px}.skeleton{position:relative;overflow:hidden;border-radius:8px;background:var(--border-strong)}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,var(--border-strong),transparent);animation:skeleton-shimmer 1.3s ease-in-out infinite}@keyframes skeleton-shimmer{to{transform:translate(100%)}}.skeleton-panel{min-height:150px}.skeleton-title{height:22px;width:45%;margin-bottom:18px}.skeleton-line{height:13px;margin-bottom:11px}.skeleton-label{display:block;margin-top:16px;opacity:.6;font-size:13px;letter-spacing:.02em}.error-boundary-detail{white-space:pre-wrap;opacity:.7;font-size:12px;margin:10px 0 14px}@media (prefers-reduced-motion: reduce){.skeleton:after{animation:none}}.letter-squares{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0}.letter-square{min-width:30px;padding:6px 0;border-radius:6px}.letter-square.vowel{border-color:var(--border-strong)}.letter-square.picked{background:var(--border-strong)}.stress-preview{font-size:20px;letter-spacing:.04em}.stress-review .chip{margin:2px;padding:2px 8px;border-radius:10px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}button{font:inherit;color:inherit;cursor:pointer}input,textarea,select{font:inherit}a{color:inherit;text-decoration:none}::selection{background:var(--accent-soft)}:root{--font-sans: "IBM Plex Sans", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--accent-h: 154;--accent: oklch(.68 .13 var(--accent-h));--accent-press: oklch(.62 .13 var(--accent-h));--accent-soft: oklch(.68 .13 var(--accent-h) / .16);--accent-line: oklch(.68 .13 var(--accent-h) / .4);--on-accent: #07120d;--bg: #0c1210;--surface-1: #121917;--surface-2: #18211e;--surface-3: #1e2825;--border: rgba(255,255,255,.07);--border-strong: rgba(255,255,255,.13);--text: #e7efe9;--text-dim: #9aaaa1;--text-faint: #66766d;--amber: oklch(.78 .12 78);--amber-soft: oklch(.78 .12 78 / .15);--blue: oklch(.72 .11 250);--blue-soft: oklch(.72 .11 250 / .15);--danger: oklch(.68 .16 25);--danger-soft: oklch(.68 .16 25 / .15);--shadow-1: 0 1px 2px rgba(0,0,0,.3);--shadow-2: 0 8px 28px rgba(0,0,0,.38);--radius: 8px;--radius-sm: 6px;--radius-lg: 12px;--row-h: 42px;--pad: 14px;--gap: 14px;color-scheme:dark}:root[data-theme=light]{--accent: oklch(.58 .13 var(--accent-h));--accent-press: oklch(.52 .13 var(--accent-h));--accent-soft: oklch(.58 .13 var(--accent-h) / .13);--accent-line: oklch(.58 .13 var(--accent-h) / .42);--on-accent: #ffffff;--bg: #eef1ee;--surface-1: #ffffff;--surface-2: #f5f7f5;--surface-3: #ecefec;--border: rgba(18,28,23,.11);--border-strong: rgba(18,28,23,.2);--text: #16201b;--text-dim: #51635a;--text-faint: #8a9890;--amber: oklch(.62 .13 70);--amber-soft: oklch(.62 .13 70 / .14);--blue: oklch(.55 .13 250);--blue-soft: oklch(.55 .13 250 / .12);--danger: oklch(.55 .18 25);--danger-soft: oklch(.55 .18 25 / .12);--shadow-1: 0 1px 2px rgba(20,32,27,.06);--shadow-2: 0 10px 30px rgba(20,32,27,.1);--glow: 0px;color-scheme:light}:root[data-density=compact]{--row-h: 36px;--pad: 11px;--gap: 10px}:root[data-density=spacious]{--row-h: 50px;--pad: 18px;--gap: 18px}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.mono{font-family:var(--font-mono);font-feature-settings:"tnum" 1}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.app{display:grid;grid-template-rows:auto auto 1fr;min-height:100vh}.topbar{display:flex;align-items:center;gap:20px;height:56px;padding:0 20px;background:var(--surface-1);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:11px;flex-shrink:0}.brand-mark{width:28px;height:28px;display:grid;place-items:center;border-radius:7px;background:var(--accent);color:var(--on-accent);flex-shrink:0}.brand-mark svg{width:17px;height:17px;display:block}.brand-text{display:flex;flex-direction:column;line-height:1.15;white-space:nowrap}.brand-name{font-size:13px;font-weight:700;letter-spacing:.12em;white-space:nowrap}.brand-sub{font-size:10px;color:var(--text-faint);letter-spacing:.06em;font-family:var(--font-mono)}.topbar-search{flex:1;max-width:380px;display:flex;align-items:center;gap:8px;height:34px;padding:0 11px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-faint)}.topbar-search svg{width:15px;height:15px;flex-shrink:0}.topbar-search input{flex:1;border:0;background:transparent;color:var(--text);outline:none;font-size:13px}.topbar-search input::placeholder{color:var(--text-faint)}.topbar-search kbd{font-family:var(--font-mono);font-size:11px;color:var(--text-faint);border:1px solid var(--border);border-radius:4px;padding:1px 5px;background:var(--surface-1)}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px}.theme-toggle{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:2px}.theme-toggle button{width:30px;height:28px;display:grid;place-items:center;border:0;background:transparent;border-radius:5px;color:var(--text-faint);transition:background .12s,color .12s}.theme-toggle button svg{width:15px;height:15px}.theme-toggle button.is-active{background:var(--surface-1);color:var(--text);box-shadow:var(--shadow-1)}.userbox{display:flex;align-items:center;gap:9px;padding:4px 6px 4px 11px;border-radius:999px;border:1px solid var(--border);background:var(--surface-2)}.userbox-info{display:flex;flex-direction:column;line-height:1.15;text-align:right}.userbox-info strong{font-size:12.5px;font-weight:600}.userbox-info span{font-size:10.5px;color:var(--text-faint)}.avatar{width:28px;height:28px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;font-size:12px;font-weight:600;background:var(--accent-soft);color:var(--accent);font-family:var(--font-mono)}.tabnav{display:flex;align-items:stretch;gap:2px;padding:0 14px;background:var(--surface-1);border-bottom:1px solid var(--border);overflow-x:auto}.tabnav::-webkit-scrollbar{height:0}.tab{position:relative;display:inline-flex;align-items:center;gap:7px;padding:0 13px;height:42px;border:0;background:transparent;color:var(--text-dim);font-size:13px;font-weight:500;white-space:nowrap;border-bottom:2px solid transparent;transition:color .12s}.tab svg{width:15px;height:15px;opacity:.85}.tab:hover{color:var(--text)}.tab.is-active{color:var(--text);border-bottom-color:var(--accent)}.tab .tab-badge{font-family:var(--font-mono);font-size:10.5px;background:var(--surface-3);color:var(--text-dim);border-radius:999px;padding:1px 6px}.tab.is-active .tab-badge{background:var(--accent-soft);color:var(--accent)}.tabnav .tab-spacer{flex:1}.tab.tab-muted{color:var(--text-faint)}.content{padding:22px;min-height:0}.content-wide{max-width:1320px;margin:0 auto}.panel{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1)}.panel-pad{padding:var(--pad)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:36px;padding:0 14px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font-size:13px;font-weight:500;white-space:nowrap;transition:background .12s,border-color .12s,transform 80ms}.btn svg{width:15px;height:15px}.btn:hover{background:var(--surface-3)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);border-color:transparent;color:var(--on-accent);font-weight:600}.btn-primary:hover{background:var(--accent-press)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-dim)}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn-sm{height:30px;padding:0 11px;font-size:12.5px}.btn-icon{width:32px;padding:0}.chip{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border-radius:999px;font-size:11.5px;font-weight:500;background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim)}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12px;color:var(--text-dim);font-weight:500}.input{height:36px;padding:0 11px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);outline:none;transition:border-color .12s,box-shadow .12s;width:100%}.input:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}.input-mono{font-family:var(--font-mono)}textarea.input{height:auto;padding:9px 11px;resize:vertical;line-height:1.5}.status{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px 0 8px;border-radius:999px;font-size:11.5px;font-weight:500;white-space:nowrap;background:var(--surface-2);color:var(--text-dim);border:1px solid var(--border)}.status .dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.status-done,.status-approved,.status-final_done,.status-published,.status-approved_audio{color:var(--accent);background:var(--accent-soft);border-color:var(--accent-line)}.status-processing,.status-char_extracting,.status-author_review,.status-pending_review,.status-needs_review{color:var(--blue);background:var(--blue-soft);border-color:transparent}.status-queued,.status-waiting,.status-uploaded{color:var(--text-dim)}.status-needs_fix,.status-stalled,.status-stopping,.status-partially_approved{color:var(--amber);background:var(--amber-soft);border-color:transparent}.status-failed,.status-rejected_audio,.status-stopped{color:var(--danger);background:var(--danger-soft);border-color:transparent}.bar{height:6px;border-radius:999px;background:var(--surface-3);overflow:hidden}.bar>i{display:block;height:100%;background:var(--accent);border-radius:999px}.bar.amber>i{background:var(--amber)}.table-wrap{overflow:auto;border-radius:var(--radius-lg)}table.tbl{width:100%;border-collapse:collapse;font-size:13px}table.tbl thead th{position:sticky;top:0;z-index:1;text-align:left;font-weight:600;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);padding:10px 12px;background:var(--surface-2);border-bottom:1px solid var(--border);white-space:nowrap}table.tbl thead th.r,table.tbl td.r{text-align:right}table.tbl tbody td{padding:0 12px;height:var(--row-h);border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}table.tbl tbody tr:hover td{background:var(--surface-2)}table.tbl tbody tr:last-child td{border-bottom:0}.cell-cell-input{width:100%;height:30px;padding:0 8px;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--text);outline:none;transition:border-color .12s,background .12s}.cell-cell-input:hover{border-color:var(--border)}.cell-cell-input:focus{border-color:var(--accent-line);background:var(--surface-1);box-shadow:0 0 0 2px var(--accent-soft)}td .cell-num{width:78px;text-align:right;font-family:var(--font-mono)}.section-title{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);font-weight:600;margin:0 0 10px}.muted{color:var(--text-dim)}.faint{color:var(--text-faint)}.divider{height:1px;background:var(--border);border:0;margin:0}.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;background:var(--bg)}.login-side{position:relative;padding:48px 56px;display:flex;flex-direction:column;justify-content:space-between;background:var(--surface-1);border-right:1px solid var(--border);overflow:hidden}.login-side:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(110% 80% at 12% 8%,var(--accent-soft),transparent 55%);pointer-events:none}.login-brand{display:flex;align-items:center;gap:13px;position:relative}.login-brand .brand-mark{width:38px;height:38px}.login-brand .brand-mark svg{width:22px;height:22px}.login-brand h1{font-size:16px;letter-spacing:.13em;margin:0;font-weight:700;white-space:nowrap}.login-brand>div{display:flex;flex-direction:column}.login-brand p{margin:2px 0 0;font-size:11px;color:var(--text-faint);font-family:var(--font-mono);letter-spacing:.05em}.login-pitch{position:relative;max-width:460px}.login-pitch h2{font-size:30px;line-height:1.18;margin:0 0 14px;font-weight:600;letter-spacing:-.01em}.login-pitch p{color:var(--text-dim);font-size:15px;margin:0;line-height:1.6}.login-flow{position:relative;display:flex;flex-wrap:wrap;gap:8px}.login-flow .chip{height:28px}.login-foot{position:relative;font-size:12px;color:var(--text-faint);font-family:var(--font-mono)}.login-panel{display:grid;place-items:center;padding:40px}.login-card{width:100%;max-width:380px}.login-card h3{font-size:20px;margin:0 0 4px;font-weight:600}.login-card .sub{color:var(--text-dim);margin:0 0 24px;font-size:13.5px}.role-grid{display:grid;gap:8px;margin-bottom:22px}.role-opt{display:flex;align-items:center;gap:12px;text-align:left;padding:12px 14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-1);transition:border-color .12s,background .12s}.role-opt:hover{border-color:var(--border-strong)}.role-opt.is-active{border-color:var(--accent-line);background:var(--accent-soft)}.role-opt .ro-radio{width:16px;height:16px;border-radius:50%;flex-shrink:0;border:2px solid var(--border-strong);display:grid;place-items:center}.role-opt.is-active .ro-radio{border-color:var(--accent)}.role-opt.is-active .ro-radio:after{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent)}.role-opt .ro-text{display:flex;flex-direction:column;line-height:1.25}.role-opt .ro-text strong{font-size:13.5px;font-weight:600}.role-opt .ro-text span{font-size:11.5px;color:var(--text-faint)}.login-tg{width:100%;height:44px;gap:9px;background:#2aabee;border-color:transparent;color:#fff;font-weight:600}.login-tg:hover{background:#1f9bd8}.login-or{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--text-faint);font-size:12px}.login-or:before,.login-or:after{content:"";flex:1;height:1px;background:var(--border)}.login-theme{position:absolute;top:24px;right:28px}.shelf{display:grid;grid-template-columns:290px 1fr;gap:var(--gap);align-items:start}.rail{display:flex;flex-direction:column;overflow:hidden}.rail-head{padding:14px 14px 12px;border-bottom:1px solid var(--border)}.rail-head .row{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.rail-head h2{font-size:15px;margin:0;font-weight:600}.rail-search{display:flex;align-items:center;gap:8px;height:34px;padding:0 10px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-faint)}.rail-search svg{width:14px;height:14px}.rail-search input{flex:1;border:0;background:transparent;color:var(--text);outline:none;font-size:13px}.rail-list{display:flex;flex-direction:column;gap:2px;padding:8px;overflow:auto;max-height:calc(100vh - 230px)}.rail-item{text-align:left;padding:11px 12px;border-radius:var(--radius);border:1px solid transparent;background:transparent;color:var(--text);display:grid;gap:6px;transition:background .12s,border-color .12s}.rail-item:hover{background:var(--surface-2)}.rail-item.is-active{background:var(--accent-soft);border-color:var(--accent-line)}.rail-item .ri-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.rail-item strong{font-size:13.5px;font-weight:600;line-height:1.25}.rail-item .ri-author{font-size:11.5px;color:var(--text-faint);white-space:nowrap}.rail-item .ri-meta{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--text-dim)}.rail-item .ri-bar{flex:1}.stage{display:flex;flex-direction:column;min-width:0;gap:var(--gap)}.book-banner{padding:18px 20px;display:flex;gap:20px;align-items:flex-start}.book-banner .bb-main{min-width:0;flex:1}.book-banner .bb-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.book-banner h2{font-size:22px;margin:0;font-weight:600;letter-spacing:-.01em;white-space:nowrap}.book-banner .bb-sub{color:var(--text-dim);font-size:13px;margin:7px 0 0}.book-banner .bb-note{color:var(--text-dim);font-size:13px;margin:13px 0 0;max-width:64ch;line-height:1.55}.book-banner .bb-actions{display:flex;gap:8px;flex-shrink:0}.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap)}.stat{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px;display:flex;flex-direction:column;gap:4px}.stat .s-label{font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;font-weight:600;display:flex;align-items:center;gap:6px}.stat .s-label svg{width:13px;height:13px}.stat .s-val{font-size:25px;font-weight:600;font-family:var(--font-mono);letter-spacing:-.02em;line-height:1.1}.stat .s-sub{font-size:11.5px;color:var(--text-dim)}.stat .s-val.accent{color:var(--accent)}.cast-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border)}.cast-head h3{font-size:14px;margin:0;font-weight:600}.cast-head .ch-tools{display:flex;gap:8px;align-items:center}.actor-cell{display:flex;align-items:center;gap:8px}.actor-cell .av{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:600;background:var(--surface-3);color:var(--text-dim);font-family:var(--font-mono);flex-shrink:0}.actor-cell.unassigned{color:var(--text-faint)}.char-name{display:flex;flex-direction:column;line-height:1.2}.char-name strong{font-weight:600;font-size:13px}.char-name small{font-size:11px;color:var(--text-faint)}.tfoot-row td{background:var(--surface-2);font-weight:600;height:44px;border-top:1px solid var(--border-strong)}.budget-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--border);border-radius:var(--radius-lg);overflow:hidden}.budget-bar>div{background:var(--surface-1);padding:13px 16px;display:flex;flex-direction:column;gap:3px}.budget-bar .bl{font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em}.budget-bar .bv{font-size:17px;font-weight:600;font-family:var(--font-mono)}.budget-bar .total .bv{color:var(--accent)}.subtabs{display:flex;gap:2px;padding:4px;background:var(--surface-2);border-radius:var(--radius);width:fit-content}.subtab{padding:7px 14px;border:0;background:transparent;border-radius:6px;color:var(--text-dim);font-size:13px;font-weight:500;white-space:nowrap}.subtab:hover{color:var(--text)}.subtab.is-active{background:var(--surface-1);color:var(--text);box-shadow:var(--shadow-1)}.pipeline{display:flex;flex-direction:column;gap:2px}.pl-step{display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:12px;padding:10px 4px}.pl-node{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;border:2px solid var(--border-strong);color:var(--text-faint);position:relative}.pl-node svg{width:12px;height:12px}.pl-step.done .pl-node{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.pl-step.active .pl-node{border-color:var(--accent);color:var(--accent)}.pl-step.active .pl-node:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:2px solid var(--accent-soft)}.pl-line{position:absolute;left:14px;width:2px;background:var(--border)}.pl-label{font-size:13.5px;font-weight:500}.pl-step.todo .pl-label{color:var(--text-faint)}.pl-meta{font-size:12px;color:var(--text-dim);display:flex;align-items:center;gap:10px}.pl-meta .mini-bar{width:90px}.two-col{display:grid;grid-template-columns:1.4fr 1fr;gap:var(--gap);align-items:start}.activity{display:flex;flex-direction:column}.act-item{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid var(--border)}.act-item:last-child{border-bottom:0}.act-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:6px;flex-shrink:0}.act-dot.blue{background:var(--blue)}.act-dot.amber{background:var(--amber)}.act-dot.faint{background:var(--text-faint)}.act-body{min-width:0}.act-body p{margin:0;font-size:13px}.act-body .at{font-size:11.5px;color:var(--text-faint);font-family:var(--font-mono);margin-top:2px}.chap-row td .cn{font-family:var(--font-mono);color:var(--text-faint);width:34px;display:inline-block}.prep-grid{display:grid;gap:var(--gap)}.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}.page-head h1{font-size:22px;margin:0;font-weight:600;letter-spacing:-.01em}.page-head p{margin:5px 0 0;color:var(--text-dim);font-size:13.5px}.page-head .ph-tools{display:flex;gap:8px}.empty{display:grid;place-items:center;gap:10px;text-align:center;padding:60px 20px;color:var(--text-faint)}.empty svg{width:34px;height:34px;opacity:.5}#tweaks{position:fixed;right:18px;bottom:18px;z-index:50;width:250px;display:none}#tweaks.open{display:block}.tw-card{background:var(--surface-1);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-2);overflow:hidden}.tw-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border)}.tw-head strong{font-size:13px}.tw-body{padding:14px;display:flex;flex-direction:column;gap:16px}.tw-group label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-weight:600;display:block;margin-bottom:8px}.tw-seg{display:flex;gap:4px}.tw-seg button{flex:1;height:32px;border:1px solid var(--border);background:var(--surface-2);border-radius:6px;font-size:12px;color:var(--text-dim)}.tw-seg button.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent)}.tw-swatches{display:flex;gap:8px}.tw-sw{width:30px;height:30px;border-radius:50%;border:2px solid transparent;cursor:pointer}.tw-sw.on{border-color:var(--text)}.tweaks-fab{position:fixed;right:18px;bottom:18px;z-index:49;width:42px;height:42px;border-radius:50%;background:var(--surface-1);border:1px solid var(--border-strong);box-shadow:var(--shadow-2);display:grid;place-items:center;color:var(--text-dim)}.tweaks-fab svg{width:18px;height:18px}@media (max-width: 1080px){.shelf{grid-template-columns:1fr}.stat-row{grid-template-columns:repeat(2,1fr)}.two-col,.login-wrap{grid-template-columns:1fr}.login-side{display:none}}
