/* Stage cards v2: consistent sizing and story-first layout across topic / outline / beat. */
.candidate-card h3{margin-top:12px;margin-bottom:9px;font-size:17px;word-break:break-word}
.candidate-card .market-score small{font-family:var(--sans);letter-spacing:.08em}
.candidate-premise{padding:9px 10px;border-left:3px solid var(--clay);border-radius:0 7px 7px 0;background:#f2eee5}
.candidate-premise>span,.candidate-story-item>span{display:block;font:7px var(--mono);letter-spacing:.08em;color:#9a7254}
.candidate-premise p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;margin:4px 0 0;color:var(--ink);font-size:10px;font-weight:600;line-height:1.55}
.candidate-story-map{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:9px}
.candidate-story-item{min-width:0;padding:8px 9px;border:1px solid #e2e1d8;border-radius:8px;background:#fffdf7}
.candidate-story-item>span{color:#74877f}
.candidate-story-item p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;margin:4px 0 0;font-size:9px;line-height:1.5;color:#586963}
.candidate-story-item.hook{border-color:#ead5c1;background:#fffaf3}
.candidate-story-item.hook>span,.candidate-story-item.payoff>span{color:#a1673d}
.candidate-story-item.payoff{border-color:#e6d9c8}
.candidate-tags{margin-top:9px}
.candidate-score-detail,.candidate-anchors{display:none}
.candidate-card.selected .candidate-score-detail{display:grid}
.candidate-card.selected .candidate-anchors{display:flex}
.candidate-card.selected .candidate-premise{background:#edf4ef}
.candidate-card.selected .candidate-story-item{background:#f8fbf8;border-color:#cfe0d8}
.candidate-card.explore .candidate-story-map{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:760px){.candidate-story-map,.candidate-card.explore .candidate-story-map{grid-template-columns:repeat(2,minmax(0,1fr))}.candidate-premise p{-webkit-line-clamp:3}.candidate-story-item p{-webkit-line-clamp:3}}

/* Outline cards: never let a button grid squeeze the text. */
.outline-options{display:grid;grid-template-columns:1fr;gap:11px;margin-top:15px}
.outline-option{display:block;min-width:0;border:1px solid var(--line);border-radius:12px;background:var(--card);overflow:hidden}
.outline-option.selected{border:2px solid var(--pine-600);background:var(--mint-100)}
.outline-select{display:flex;align-items:flex-start;gap:10px;width:100%;min-width:0;text-align:left;padding:16px 15px 12px}
.outline-no{flex:none;width:30px;height:30px;border-radius:9px;background:var(--pine-700);color:#fff;display:grid;place-items:center;font:10px var(--mono)}
.outline-option.selected .outline-no{background:var(--clay)}
.outline-body{flex:1;min-width:0}
.outline-body h3{font-size:13px;color:var(--pine-700);margin:2px 0 7px;white-space:normal;word-break:break-word;line-height:1.4}
.outline-body p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;margin:0;font-size:10px;line-height:1.6;color:#5d6d66}
.outline-hooks{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
.outline-hooks span{font:8px var(--mono);color:#6f8279;background:#eaf1ec;border-radius:5px;padding:3px 5px}
.outline-score{flex:none;text-align:right}
.outline-score b{display:block;font:19px var(--mono);font-weight:500;color:var(--pine-900)}
.outline-score small{font:7px var(--mono);letter-spacing:.08em;color:#9aa49e}
.outline-option .redraw-link{margin:0 15px 13px;width:auto;border-top:1px dashed #d6ddd5;padding-top:9px}
@media(min-width:1180px){.outline-options{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Beat stage: simple scale setup plus readable episode cards. */
.beat-setup{display:grid;gap:14px;max-width:560px;margin:22px 0 0;padding:20px;border:1px solid var(--line);border-radius:13px;background:#fbfaf4}
.beat-setup-option>span{display:block;font-size:9px;color:#8b9790;margin-bottom:8px}
.seg-group{display:flex;gap:7px;flex-wrap:wrap}
.seg-group button{min-width:92px;height:38px;border:1px solid #c9d9d0;border-radius:9px;background:#fff;color:var(--pine-700);font-size:11px;font-weight:600}
.seg-group button.active{background:var(--pine-700);border-color:var(--pine-700);color:#fff}
.beat-custom-field{min-height:38px;display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border:1px solid #c9d9d0;border-radius:9px;background:#fff;color:#687b72;font-size:9px}
.beat-custom-field:focus-within{border-color:var(--pine-700);box-shadow:0 0 0 2px rgba(24,78,58,.08)}
.beat-custom-field input{width:64px;border:0;border-bottom:1px solid #d9e3dc;background:transparent;color:var(--pine-900);font:12px var(--mono);text-align:center;outline:0;padding:4px 2px}
.beat-custom-field em{font-style:normal;white-space:nowrap;color:#8b9790}
.beat-total{font-size:11px;color:#687b72;padding:10px 0 2px}
.beat-total b{font:18px var(--mono);color:var(--pine-900);margin:0 5px}
.beat-total small{display:block;margin-top:7px;color:#819087;line-height:1.55}
.episode-cards{display:grid;gap:13px;margin-top:17px}
.episode-card{border:1px solid var(--line);border-radius:13px;background:#fdfcf7;overflow:hidden}
.episode-card header{display:flex;align-items:center;gap:9px;padding:13px 15px;background:var(--mint-100);border-bottom:1px solid #dfe8e1}
.episode-card header>span{flex:none;font:9px var(--mono);color:#fff;background:var(--pine-700);border-radius:6px;padding:4px 6px}
.episode-card header h3{flex:1;min-width:0;margin:0;font-size:13px;color:var(--pine-700);word-break:break-word}
.episode-card .text-button{flex:none;font-size:9px}
.episode-hook{padding:10px 15px 0;margin:0;font-size:10px;color:#7a4b2e}
.episode-hook::before{content:"开场钩子 ";font:8px var(--mono);color:#a1673d}
.beat-list{display:grid;padding:8px 15px}
.beat-row{display:grid;grid-template-columns:46px minmax(0,1fr) auto;gap:9px;align-items:start;padding:8px 0;border-bottom:1px dashed #e6e3d8}
.beat-row:last-child{border-bottom:0}
.beat-time{font:8px var(--mono);color:#98a29c;padding-top:2px}
.beat-row div{min-width:0}
.beat-row b{display:block;font-size:10px;color:var(--pine-700)}
.beat-row p{margin:3px 0 0;font-size:9px;line-height:1.55;color:#5d6d66}
.beat-row em{font:8px var(--mono);font-style:normal;color:#a36b3e}
.episode-end{padding:0 15px 13px;margin:0;font-size:10px;color:#7a4b2e}
.episode-end::before{content:"结尾钩子 ";font:8px var(--mono);color:#a1673d}

.candidate-seat{display:inline-block;margin:0 0 9px;font:8px var(--mono);letter-spacing:.06em;color:#7b8d85;background:#eef2ec;border:1px solid #dce5de;border-radius:999px;padding:3px 8px}
.candidate-card.trend .candidate-seat{color:#8a5a33;background:#f7efe4;border-color:#ead9c4}
.candidate-card.explore .candidate-seat{color:#6a5f9c;background:#eeebf6;border-color:#dcd6ef}
.candidate-title-origin{display:block;font-size:8px;color:#9aa49e;font-weight:400;margin:2px 0 8px}
.candidate-zh-badge{display:inline-block;margin-left:6px;font:8px var(--mono);color:#2f6b54;background:#dceee4;border:1px solid #bfe0cf;border-radius:5px;padding:2px 5px;vertical-align:2px;letter-spacing:.02em}
.candidate-origin{margin-top:9px;padding:7px 9px;background:#f5f3ec;border-radius:7px;display:grid;gap:3px}
.candidate-origin span{font:7px var(--mono);letter-spacing:.08em;color:#9a8a74}
.candidate-origin p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;margin:0;font-size:8px;line-height:1.5;color:#8b918c}
.zh-source{display:block;margin-top:3px;font-size:7px;line-height:1.45;color:#a0a7a2}
.generation-actions{display:flex;justify-content:center;margin-top:16px}
.generation-actions .ghost-button{border-color:#cdd8d1}
.candidate-story-item,.candidate-premise{cursor:pointer}
.candidate-story-item p,.candidate-premise p{pointer-events:none}
.candidate-story-item.expanded p,.candidate-premise.expanded p,.outline-body.expanded p.expandable-desc{-webkit-line-clamp:none;overflow:visible}
.candidate-story-item>.item-more,.candidate-premise>.item-more,.outline-body>.item-more{display:none;margin-top:4px;font-size:8px;color:#8a9a93;font-weight:600;letter-spacing:.03em}
.clamped>.item-more{display:inline-flex;align-items:center;gap:2px}
.candidate-story-item.expanded .item-more,.candidate-premise.expanded .item-more,.outline-body.expanded .item-more{color:var(--pine-700)}
.story-expand-row{display:flex;justify-content:flex-end;margin-top:6px}
.story-expand-all{font-size:8px;color:var(--pine-700);cursor:pointer;user-select:none}
.outline-body p.expandable-desc{cursor:pointer}
.candidate-card,.outline-option,.episode-card{position:relative}

/* Collapsed cards stay compact; expanded cards must expose the original, unabridged copy. */
.candidate-card.expanded-all .candidate-story-map{grid-template-columns:1fr}
.candidate-card.expanded-all .candidate-premise p,
.candidate-card.expanded-all .candidate-story-item p,
.candidate-premise.expanded p,
.candidate-story-item.expanded p{
  display:block!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
  text-overflow:clip!important;
  white-space:normal!important;
  -webkit-box-orient:initial!important;
  -webkit-line-clamp:unset!important;
  line-clamp:unset!important;
}
.candidate-card.expanded-all .candidate-premise,
.candidate-card.expanded-all .candidate-story-item{overflow:visible}
.candidate-card.expanded-all .candidate-story-item p{font-size:10px;line-height:1.65}
@media(max-width:760px){.candidate-card.expanded-all .candidate-story-map{grid-template-columns:1fr}}

/* Outline master-detail: long copy never expands inside comparison cards. */
.outline-master-detail{display:grid;grid-template-columns:minmax(290px,.88fr) minmax(360px,1.25fr);gap:16px;align-items:start;margin-top:18px}.outline-choice-column{min-width:0}.outline-choice-hint{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:0 2px 9px}.outline-choice-hint b{font-size:10px;color:var(--pine-700)}.outline-choice-hint span{font-size:8px;color:#8c9992}.outline-master-detail .outline-options{display:grid;grid-template-columns:1fr;gap:9px;margin:0}.outline-master-detail .outline-option{display:block;border-radius:12px;overflow:hidden;background:#faf8f2}.outline-master-detail .outline-option.selected{padding:0;background:var(--mint-100);box-shadow:0 7px 24px #1f6b5d12}.outline-master-detail .outline-select{display:grid;grid-template-columns:34px minmax(0,1fr) 42px;gap:10px;padding:13px;align-items:start}.outline-master-detail .outline-no{width:31px;height:31px}.outline-card-label{display:flex;align-items:center;gap:6px;font-size:9px;color:var(--pine-700);font-weight:700}.outline-card-label>span{font:7px var(--mono);font-weight:500;padding:3px 5px;border-radius:4px;background:#e8efe9;color:#768a80}.outline-master-detail .outline-body h3{margin:7px 0 5px;font-size:12px;line-height:1.4}.outline-master-detail .outline-body>p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:9px;line-height:1.55;min-height:2.9em}.outline-axis-row{display:flex;gap:4px;margin-top:8px;overflow:hidden}.outline-axis-row span{display:block;min-width:0;max-width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:7px;padding:4px 5px;border-radius:4px;background:#eeeae1;color:#718078}.outline-master-detail .outline-body>small{display:block;margin-top:7px;font-size:8px;color:#91a099}.outline-master-detail .outline-option.selected .outline-body>small{color:var(--up);font-weight:700}.outline-master-detail .outline-score{text-align:center}.outline-master-detail .outline-score b{display:block;font:16px var(--mono);color:var(--pine-700)}.outline-master-detail .outline-score small{font:7px var(--mono);color:#9aa49e}.outline-master-detail .redraw-link{margin:0 13px 11px;padding-top:8px}.outline-detail{position:sticky;top:136px;max-height:calc(100vh - 165px);overflow:auto;border:1px solid #d5dfd7;border-radius:14px;background:#fffdf8;padding:19px;box-shadow:0 10px 30px #1f463c0a;scrollbar-width:thin}.outline-detail header{display:flex;justify-content:space-between;gap:16px;padding-bottom:14px;border-bottom:1px solid var(--line)}.outline-detail header span,.outline-detail section>span{display:block;font:8px var(--mono);letter-spacing:.08em;color:var(--clay);margin-bottom:6px}.outline-detail header h3{font:700 19px/1.35 var(--serif);color:var(--pine-700);margin:4px 0}.outline-detail header p{font-size:9px;color:#84928b;margin:0}.outline-detail header>strong{font:22px var(--mono);font-weight:500;color:var(--pine-700);text-align:center}.outline-detail header>strong small{display:block;font:7px var(--mono);color:#9ba59e}.outline-detail-story,.outline-detail-section,.outline-hook-list{padding:14px 0;border-bottom:1px solid var(--line)}.outline-detail-story p,.outline-detail-section p{font-size:10px;line-height:1.78;color:#50645d;margin:0;white-space:normal;overflow:visible;word-break:break-word}.outline-detail-section p+p{margin-top:6px}.outline-detail-section p b{color:var(--pine-700)}.outline-detail-section.difference{margin-top:12px;padding:12px;border:1px solid #d2e4da;border-radius:9px;background:var(--mint-100)}.outline-detail-section.difference span{color:var(--pine-700)}.outline-contract-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:14px 0;border-bottom:1px solid var(--line)}.outline-contract-grid section{padding:10px;border-radius:8px;background:#f4f2eb}.outline-contract-grid span{display:block;font:7px var(--mono);color:#8c9992;margin-bottom:5px}.outline-contract-grid p{font-size:9px;line-height:1.55;color:#5f716a;margin:0}.outline-hook-list>div{display:grid;grid-template-columns:36px 36px minmax(0,1fr);gap:6px;align-items:start;padding:8px 0;border-top:1px dashed #dfe3dc}.outline-hook-list b{font:8px var(--mono);color:var(--pine-700)}.outline-hook-list em{font:7px var(--mono);font-style:normal;color:var(--clay)}.outline-hook-list p,.outline-empty{font-size:9px;line-height:1.5;color:#64756e;margin:0}.outline-detail-state{margin-top:13px;padding:10px;border-radius:8px;background:#e5f1ea;color:var(--up);font-size:8px;line-height:1.5}.outline-detail-state.preview{background:var(--warn-bg);color:#95653f}
@media(max-width:1050px){.outline-master-detail{grid-template-columns:1fr}.outline-detail{position:relative;top:auto;max-height:none}.outline-choice-hint{display:none}}
@media(max-width:760px){.outline-master-detail{gap:12px}.outline-master-detail .outline-select{grid-template-columns:31px minmax(0,1fr) 38px;padding:11px}.outline-axis-row{display:none}.outline-detail{padding:15px}.outline-contract-grid{grid-template-columns:1fr}.outline-detail header h3{font-size:17px}}
.card-is-rewriting{pointer-events:none}
.card-is-rewriting::after{content:"";position:absolute;inset:0;background:rgba(253,252,247,.62);z-index:4}
.card-rewrite-status{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;gap:8px;padding:16px;text-align:center;color:var(--pine-700);font-size:11px;font-weight:600;pointer-events:auto}
.card-rewrite-status i{width:16px;height:16px;border:2px solid #c8ddd0;border-top-color:var(--pine-700);border-radius:50%;animation:card-rewrite-spin .8s linear infinite}
.card-rewrite-status>div{display:grid;justify-items:center;gap:6px;max-width:300px}.card-rewrite-status span{display:block;font-weight:400;line-height:1.55}.card-rewrite-status button{border:0;background:transparent;color:var(--pine-700);font:10px var(--sans);text-decoration:underline;cursor:pointer}.card-rewrite-status.failed{position:relative;inset:auto;margin:12px;border:1px solid #e7c7a7;border-radius:10px;background:#fff8ef;color:#684426;text-align:left;justify-content:flex-start}.card-rewrite-status.failed>div{justify-items:start;max-width:none}.card-rewrite-status.failed b{font-size:12px}.card-rewrite-actions{display:flex;gap:8px;margin-top:3px}.card-rewrite-status.failed .card-rewrite-actions button{padding:7px 10px;border:1px solid #ddc2a7;border-radius:7px;text-decoration:none}.card-rewrite-status.failed .card-rewrite-actions .primary-button{border-color:var(--pine-700);background:var(--pine-700);color:#fff}.card-rewrite-failed{border-color:#dfbd9a}
@keyframes card-rewrite-spin{to{transform:rotate(360deg)}}

.generation-error-panel{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:16px 0;padding:15px 17px;border:1px solid #e5bea0;border-radius:12px;background:#fff8ef;color:#684426}.generation-error-panel b{font-size:13px}.generation-error-panel p{margin:5px 0 0;font-size:11px;line-height:1.65}.generation-error-panel>div:last-child{display:flex;gap:8px;flex:none}.generation-error-panel button{white-space:nowrap}
@media(max-width:720px){.generation-error-panel{align-items:stretch;flex-direction:column}.generation-error-panel>div:last-child{justify-content:flex-end}}
@media(max-width:600px){.beat-custom-field{width:100%;justify-content:space-between}.beat-custom-field input{flex:1;max-width:100px}.seg-group button{flex:1;min-width:80px}}

/* Keep the three outline choices visually stable when selection copy changes. */
.outline-master-detail .outline-option{display:flex;flex-direction:column;min-height:207px}
.outline-master-detail .outline-select{flex:1}
