/* ============================================================================
 * ShotLive 漫剧工厂 · 样式
 * ============================================================================ */
#page-shotlive.page { padding: 0; height: 100vh; min-height: 100vh; overflow: hidden; }
.sl-root { height: 100%; background:var(--bg-warm); color:var(--strong); font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", sans-serif; }
.sl-wrap { display:flex; flex-direction:column; height:100%; overflow:hidden; }

/* Header */
.sl-header { display:flex; align-items:center; justify-content:space-between; padding:18px 28px; background:linear-gradient(135deg, var(--bg-warm) 0%, #ffffff 100%); border-bottom:1px solid var(--border); }
.sl-header-title { display:flex; align-items:center; gap:14px; }
.sl-header-title > i { font-size:32px; background:linear-gradient(135deg,#c8791f,#e0a13a); -webkit-background-clip:text; background-clip:text; color:transparent; }
.sl-title { font-size:20px; font-weight:600; letter-spacing:0.5px; }
.sl-sub { font-size:12px; color:var(--text-secondary); margin-top:2px; }
.sl-header-actions { display:flex; gap:10px; align-items:center; }
.sl-project-name { display:inline-flex; align-items:center; gap:8px; padding:6px 14px; border-radius:20px; background:var(--bg-warm); font-size:13px; color:#2a2f3d; }
.sl-project-name a { color:#c8791f; }

/* Model bar */
.sl-model-bar { display:flex; flex-wrap:wrap; gap:16px; padding:14px 28px; background:var(--bg-warm); border-bottom:1px solid var(--border); }
.sl-model-group { display:flex; align-items:center; gap:8px; }
.sl-model-group label { font-size:12px; color:var(--text-secondary); white-space:nowrap; }
.sl-model-group select, .sl-model-group input { padding:6px 10px; background:var(--bg-warm); border:1px solid var(--border); border-radius:6px; color:var(--strong); font-size:13px; min-width:120px; }
.sl-model-group input[type=number] { min-width:64px; width:70px; }

/* Body */
.sl-body { display:grid; grid-template-columns: 200px 1fr 320px; gap:0; flex:1; min-height:0; }

/* Phase nav */
.sl-phase-nav { background:var(--bg-warm); border-right:1px solid var(--border); padding:20px 0; }
.sl-phase { padding:16px 20px; cursor:pointer; transition:background .2s; border-left:3px solid transparent; }
.sl-phase:hover { background:var(--border); }
.sl-phase.active { background:var(--border); border-left-color:#c8791f; }
.sl-phase.done { color:#5fb878; }
.sl-phase-no { font-size:11px; color:var(--text-hint); letter-spacing:1px; margin-bottom:4px; }
.sl-phase-name { font-size:15px; font-weight:500; }
.sl-phase-name i { margin-right:8px; }

/* Main */
.sl-main { padding:24px 28px; overflow-y:auto; min-height:0; }
.sl-panel { background:var(--bg-white); border:1px solid var(--border); border-radius:12px; padding:24px; margin-bottom:20px; }
.sl-panel-title { font-size:17px; font-weight:600; margin-bottom:8px; display:flex; align-items:center; gap:10px; }
.sl-panel-title i { color:#c8791f; }
.sl-panel-desc { font-size:13px; color:var(--text-secondary); margin-bottom:18px; line-height:1.6; }
.sl-panel-desc strong { color:#2a2f3d; }
.sl-panel-footer { display:flex; gap:10px; justify-content:flex-end; margin-top:18px; padding-top:16px; border-top:1px solid var(--border); flex-wrap:wrap; }
.sl-empty { text-align:center; color:var(--text-hint); padding:24px; }
.sl-empty i { font-size:40px; margin-bottom:12px; opacity:0.4; }

/* Buttons */
.sl-btn { display:inline-flex; align-items:center; gap:6px; padding:8px 16px; border-radius:6px; background:var(--bg-warm); border:1px solid var(--border); color:var(--strong); font-size:13px; cursor:pointer; transition:all .2s; }
.sl-btn:hover:not(:disabled) { background:var(--border); border-color:var(--border); }
.sl-btn:disabled { opacity:0.5; cursor:not-allowed; }
.sl-btn.primary { background:linear-gradient(135deg,#c8791f,#e0a13a); border:none; color:#ffffff; }
.sl-btn.primary:hover:not(:disabled) { filter:brightness(1.1); }
.sl-btn.ghost { background:transparent; }
.sl-btn.danger { color:#e06a5a; border-color:rgba(224,123,99,.13); }
.sl-btn.danger:hover { background:rgba(224,123,99,.13); }
.sl-btn.small { padding:5px 10px; font-size:12px; }
.sl-btn.tiny  { padding:4px 8px; font-size:11px; }
.sl-btn.large { padding:14px 28px; font-size:15px; }

/* Inputs */
.sl-panel input[type=text], .sl-panel input:not([type]), .sl-panel select, .sl-panel textarea {
    width:100%; padding:8px 12px; background:var(--bg-warm); border:1px solid var(--border); border-radius:6px; color:var(--strong); font-size:13px; font-family:inherit;
}
.sl-panel textarea { resize:vertical; min-height:60px; line-height:1.6; }
.sl-panel input:focus, .sl-panel textarea:focus, .sl-panel select:focus { outline:none; border-color:#c8791f; }

/* Phase 1 */
.sl-novel-box { margin-bottom:20px; }
.sl-novel-input { font-family:monospace; font-size:13px; }
.sl-novel-bar { display:flex; align-items:center; gap:10px; margin-top:10px; flex-wrap:wrap; }
.sl-novel-stat { color:var(--text-secondary); font-size:12px; flex:1; }
.sl-chapters { display:grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap:12px; margin-bottom:20px; }
.sl-chapter { background:var(--bg-warm); border:1px solid var(--border); border-radius:8px; padding:12px; transition:border-color .2s; }
.sl-chapter:hover { border-color:#c8791f; }
.sl-chapter.active { border-color:#c8791f; background:var(--border); }
.sl-chapter-head { display:flex; align-items:center; gap:10px; margin-bottom:8px; flex-wrap:wrap; }
.sl-chapter-no { background:#c8791f; color:#ffffff; padding:3px 8px; border-radius:4px; font-size:11px; font-weight:500; }
.sl-chapter-title { flex:1; font-size:14px; font-weight:500; }
.sl-chapter-len { font-size:11px; color:var(--text-hint); }
.sl-chapter-preview { font-size:12px; color:var(--text-secondary); line-height:1.5; max-height:66px; overflow:hidden; }
.sl-ep-panel { background:var(--bg-warm); border:1px solid var(--border); border-radius:8px; padding:20px; margin-top:12px; }
.sl-ep-meta .sl-row { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.sl-ep-meta .sl-row label { width:80px; color:var(--text-secondary); font-size:12px; }
.sl-acts { display:grid; grid-template-columns:1fr; gap:12px; margin-top:16px; }
.sl-act-card { background:var(--border); border-radius:6px; padding:12px; }
.sl-act-head { display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.sl-act-no { background:linear-gradient(135deg,#c8791f,#e0a13a); color:#ffffff; padding:2px 10px; border-radius:10px; font-size:11px; }
.sl-act-title { flex:1; background:transparent !important; border:none !important; font-size:14px; font-weight:500; padding:4px !important; }
.sl-act-summary { background:var(--bg-warm) !important; border:1px solid var(--border) !important; font-size:12px; color:#2a2f3d; }

/* Phase 2 cards */
.sl-sub-tabs { display:flex; gap:4px; border-bottom:1px solid var(--border); margin-bottom:16px; }
.sl-sub-tab { padding:10px 18px; cursor:pointer; color:var(--text-secondary); font-size:13px; border-bottom:2px solid transparent; transition:all .2s; }
.sl-sub-tab:hover { color:#2a2f3d; }
.sl-sub-tab.active { color:#c8791f; border-bottom-color:#c8791f; }
.sl-asset-tab { display:none; }
.sl-asset-tab.active { display:block; }
.sl-card-grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap:14px; }
.sl-card { background:var(--bg-warm); border:1px solid var(--border); border-radius:8px; overflow:hidden; transition:border-color .2s; }
.sl-card:hover { border-color:var(--border); }
.sl-card-cover { position:relative; aspect-ratio: 3/4; background:var(--border); display:flex; align-items:center; justify-content:center; }
.sl-card-cover img { width:100%; height:100%; object-fit:cover; }
.sl-card-empty, .sl-card-loading { color:var(--text-hint); font-size:12px; text-align:center; }
.sl-card-empty i, .sl-card-loading i { font-size:32px; margin-bottom:6px; display:block; opacity:0.4; }
.sl-cloud-badge { position:absolute; top:8px; right:8px; background:rgba(95,184,120,0.9); color:#ffffff; padding:3px 6px; border-radius:4px; font-size:10px; }
.sl-card-body { padding:12px; display:flex; flex-direction:column; gap:6px; }
.sl-card-name { font-weight:500; font-size:14px; }
.sl-card-row { display:flex; gap:6px; }
.sl-card-row input { font-size:12px; padding:5px 8px !important; }
.sl-card-prompt { font-family:monospace; font-size:11px; line-height:1.5; }
.sl-card-actions { display:flex; gap:6px; margin-top:6px; flex-wrap:wrap; }

/* Variations */
.sl-variations { border-top:1px dashed var(--border); padding-top:10px; margin-top:6px; }
.sl-variations-title { font-size:11px; color:var(--text-secondary); margin-bottom:6px; }
.sl-variations-grid { display:grid; grid-template-columns: repeat(3, 1fr); gap:6px; }
.sl-variation-item { background:var(--border); border-radius:4px; padding:4px; text-align:center; }
.sl-variation-item img { width:100%; aspect-ratio:1; object-fit:cover; border-radius:3px; }
.sl-var-empty, .sl-var-loading { aspect-ratio:1; background:var(--bg-warm); border-radius:3px; display:flex; align-items:center; justify-content:center; color:var(--text-hint); font-size:10px; }
.sl-variation-name { font-size:11px; padding:4px 0 2px; color:#2a2f3d; }
.sl-variation-actions { display:flex; gap:3px; justify-content:center; }

/* Phase 3 shots */
.sl-shot-toolbar { display:flex; gap:10px; margin-bottom:16px; flex-wrap:wrap; }
.sl-shot-grid { display:flex; flex-direction:column; gap:14px; }
.sl-shot-card { background:var(--bg-warm); border:1px solid var(--border); border-radius:8px; padding:14px; }
.sl-shot-head { display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.sl-shot-idx { background:#c8791f; color:#ffffff; padding:3px 10px; border-radius:12px; font-size:12px; font-weight:600; }
.sl-shot-size { background:rgba(232,176,75,.12); color:#e8c073; padding:2px 8px; border-radius:10px; font-size:11px; border:1px solid #fcd9a3; }
.sl-shot-title { flex:1; font-size:14px; font-weight:500; padding:6px 10px !important; }
.sl-shot-dur { color:var(--text-secondary); font-size:12px; background:var(--border); padding:3px 10px; border-radius:10px; }
.sl-keyframe-row { display:grid; grid-template-columns: 1fr 1fr 1fr; gap:10px; margin-bottom:10px; }
.sl-keyframe { background:var(--border); border-radius:6px; padding:8px; }
.sl-kf-title { font-size:11px; color:var(--text-secondary); margin-bottom:6px; }
.sl-kf-hint { color:var(--text-hint); }
.sl-kf-thumb { aspect-ratio: 9/16; background:var(--border); border-radius:4px; overflow:hidden; display:flex; align-items:center; justify-content:center; margin-bottom:6px; }
.sl-kf-thumb img, .sl-kf-thumb video { width:100%; height:100%; object-fit:cover; }
.sl-kf-empty { color:var(--text-hint); font-size:10px; text-align:center; }
.sl-kf-empty i { font-size:20px; display:block; margin-bottom:4px; opacity:0.4; }
.sl-shot-body { display:flex; flex-direction:column; gap:8px; }
.sl-shot-desc, .sl-shot-prompt { font-size:12px; }
.sl-shot-prompt { font-family:monospace; }
.sl-shot-tags { display:grid; grid-template-columns: 60px 1fr 60px 1fr 60px 1fr; gap:6px; align-items:center; font-size:11px; }
.sl-shot-tags label { color:var(--text-secondary); font-size:11px; }
.sl-shot-tags select { padding:4px 8px !important; font-size:11px; }
.sl-shot-tags select[multiple] { min-height:60px; }
.sl-shot-actions { display:flex; justify-content:flex-end; }

/* Phase 4 */
.sl-compose-running { background:var(--border); border-left:3px solid #c8791f; padding:16px; border-radius:6px; margin:12px 0; }
.sl-compose-title { font-weight:500; margin-bottom:6px; }
.sl-compose-text { font-size:13px; color:#2a2f3d; }
.sl-final-preview { background:#1d2233; border-radius:8px; overflow:hidden; margin:12px 0; }
.sl-final-preview video { width:100%; max-height:70vh; background:#000; }
.sl-final-meta { padding:12px; display:flex; gap:16px; align-items:center; flex-wrap:wrap; font-size:12px; }
.sl-final-stat { color:var(--text-secondary); }
.sl-cloud-badge-lg { padding:4px 12px; border-radius:14px; font-size:12px; }
.sl-cloud-badge-lg.uploading { background:var(--bg-warm); color:#60a5fa; }
.sl-cloud-badge-lg.done { background:rgba(77,191,168,.12); color:#5fb878; }
.sl-cloud-badge-lg.fail { background:rgba(224,123,99,.13); color:#e06a5a; }
.sl-cloud-badge-lg.fail a { color:#e8908a; text-decoration:underline; }
.sl-compose-expired { background:rgba(224,123,99,.13); padding:16px; border-radius:6px; display:flex; gap:12px; align-items:center; }
.sl-compose-expired > i { font-size:28px; color:#e06a5a; }

/* Side log */
.sl-side { background:var(--bg-warm); border-left:1px solid var(--border); display:flex; flex-direction:column; min-height:0; overflow:hidden; }
.sl-side-title { padding:14px 16px; border-bottom:1px solid var(--border); font-size:13px; color:#2a2f3d; flex-shrink:0; }
.sl-side-body { flex:1; min-height:0; overflow-y:auto; overflow-x:hidden; padding:6px 10px; scrollbar-width:thin; scrollbar-color:var(--border) transparent; }
.sl-side-body::-webkit-scrollbar { width:8px; }
.sl-side-body::-webkit-scrollbar-track { background:transparent; }
.sl-side-body::-webkit-scrollbar-thumb { background:var(--border); border-radius:4px; }
.sl-side-body::-webkit-scrollbar-thumb:hover { background:#b4bacb; }
.sl-log { display:flex; gap:6px; padding:6px; font-size:11px; font-family:monospace; border-bottom:1px dashed var(--border); line-height:1.5; }
.sl-log .t { color:var(--text-hint); }
.sl-log .lv { padding:0 5px; border-radius:3px; font-size:10px; font-weight:600; align-self:flex-start; }
.sl-log .msg { color:#2a2f3d; word-break:break-all; flex:1; }
.sl-log-sys .lv  { background:var(--bg-warm); color:#60a5fa; }
.sl-log-ok  .lv  { background:rgba(77,191,168,.12); color:#5fb878; }
.sl-log-warn .lv { background:rgba(232,176,75,.12); color:#e8c073; }
.sl-log-err  .lv { background:rgba(224,123,99,.13); color:#e06a5a; }
.sl-log-info .lv { background:var(--bg-warm); color:var(--text-secondary); }

/* Prompt Center Modal */
.sl-modal { position:fixed; inset:0; z-index:10000; display:flex; align-items:center; justify-content:center; }
.sl-modal-backdrop { position:absolute; inset:0; background:rgba(0,0,0,0.6); backdrop-filter:blur(4px); }
.sl-modal-body { position:relative; width:90vw; max-width:1200px; height:84vh; background:var(--bg-warm); border:1px solid var(--border); border-radius:12px; display:flex; flex-direction:column; overflow:hidden; box-shadow:0 20px 60px rgba(0,0,0,0.5); }
.sl-modal-head { padding:16px 20px; border-bottom:1px solid var(--border); position:relative; }
.sl-modal-title { font-size:16px; font-weight:600; }
.sl-modal-title i { color:#c8791f; margin-right:8px; }
.sl-modal-desc { font-size:12px; color:var(--text-secondary); margin-top:4px; }
.sl-modal-close { position:absolute; right:16px; top:16px; width:32px; height:32px; border-radius:6px; background:var(--bg-warm); border:1px solid var(--border); color:var(--strong); cursor:pointer; }
.sl-modal-content { flex:1; display:grid; grid-template-columns: 280px 1fr; min-height:0; }
.sl-prompt-list { border-right:1px solid var(--border); overflow-y:auto; padding:8px; }
.sl-prompt-item { padding:10px 12px; cursor:pointer; border-radius:6px; margin-bottom:2px; transition:background .2s; }
.sl-prompt-item:hover { background:var(--bg-warm); }
.sl-prompt-item.active { background:var(--border); }
.sl-prompt-name { font-size:13px; font-weight:500; margin-bottom:3px; }
.sl-prompt-step { font-size:11px; color:var(--text-secondary); }
.sl-prompt-badges { margin-top:4px; }
.sl-badge { font-size:10px; padding:2px 6px; border-radius:3px; margin-right:4px; }
.sl-badge.proj { background:#e0a13a; color:#ffffff; }
.sl-badge.global { background:#60a5fa; color:#fff; }
.sl-badge.def { background:#9aa0ac; color:#fff; }
.sl-prompt-editor { padding:16px 20px; overflow-y:auto; display:flex; flex-direction:column; gap:10px; }
.sl-pe-title { font-size:15px; font-weight:600; }
.sl-pe-desc  { font-size:12px; color:var(--text-secondary); margin-top:3px; }
.sl-pe-vars  { margin-top:8px; font-size:11px; color:var(--text-secondary); background:var(--bg-warm); padding:8px 12px; border-radius:6px; }
.sl-pe-vars code { background:#f6ecd9; padding:1px 5px; border-radius:3px; color:#c8791f; font-size:11px; }
.sl-var-desc { color:#2a2f3d; }
.sl-pe-actions { display:flex; gap:10px; margin-top:10px; align-items:center; flex-wrap:wrap; }
.sl-pe-actions select { flex:1; min-width:200px; padding:6px 10px; background:var(--bg-warm); border:1px solid var(--border); border-radius:6px; color:var(--strong); font-size:12px; }
.sl-pe-label { font-size:12px; color:var(--text-secondary); margin-bottom:4px; display:block; margin-top:10px; }
.sl-pe-textarea { width:100%; background:var(--bg-white); border:1px solid var(--border); border-radius:6px; color:var(--strong); padding:12px; font-family:monospace; font-size:12px; line-height:1.6; resize:vertical; }
.sl-pe-textarea:focus { outline:none; border-color:#c8791f; }

/* Responsive */
@media (max-width: 1400px) {
    .sl-body { grid-template-columns: 180px 1fr 280px; }
    .sl-model-bar { padding:10px 20px; }
    .sl-model-group select { min-width:100px; }
}
@media (max-width: 1100px) {
    .sl-body { grid-template-columns: 160px 1fr; }
    .sl-side { display:none; }
}
