/* ⚔️ 定战役目标（2026-09-16）：出方案 → 修正 → 定稿 → 按稿执行。动态感：跑动时间线 / 分块流式上屏 / 评分条长出来 / 数字滚 / 周历铺开 */
@keyframes cpIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes cpFlip{from{opacity:0;transform:perspective(900px) rotateY(-70deg)}to{opacity:1;transform:none}}
@keyframes cpPulse{0%,100%{opacity:.35}50%{opacity:1}}
@keyframes cpGrow{from{width:0}}
@keyframes cpGlow{0%{box-shadow:0 0 0 0 rgba(255,90,31,.5)}100%{box-shadow:0 0 0 14px rgba(255,90,31,0)}}
@keyframes cpFlash{0%{background:#fff3ea}100%{background:#fff}}
.cp-in{animation:cpIn .45s ease both}
.cp-flip{animation:cpFlip .6s cubic-bezier(.2,.8,.3,1) both}
.cp-flash{animation:cpFlash 1.2s ease both}
#camp-root{min-height:120px}
.cp-steps{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:14px;font-size:.86rem}
.cp-steps .st{display:flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;background:#f4f1ee;color:var(--ink3)}
.cp-steps .st.on{background:var(--red);color:#fff;font-weight:600}
.cp-steps .st.done{background:#e6f6ee;color:var(--ok)}
.cp-steps .arr{color:#ccc}
.cp-hero{display:flex;gap:22px;align-items:center;flex-wrap:wrap;padding:8px 4px}
.cp-hero h2{font-size:1.35rem;margin:0 0 6px}
.cp-hero .big{font-size:1.08rem;padding:14px 26px;border-radius:14px;animation:cpGlow 2.2s ease-out infinite}
.cp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.cp-cell{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:.9rem;opacity:0;animation:cpIn .4s ease forwards}
.cp-cell .k{color:var(--ink3);font-size:.76rem;margin-bottom:3px;display:flex;justify-content:space-between}
.cp-cell .guess{background:#fff3ea;color:var(--red);border-radius:999px;padding:0 7px;font-size:.7rem}
.cp-cell .v{line-height:1.5;word-break:break-all}
.cp-ask{display:grid;gap:12px;margin-top:14px}
.cp-q{background:#fffdf9;border:1.5px solid #ffd9c4;border-radius:14px;padding:14px 16px}
.cp-q .n{display:inline-block;width:24px;height:24px;line-height:24px;text-align:center;border-radius:50%;background:var(--red);color:#fff;font-weight:700;margin-right:8px;font-size:.85rem}
.cp-q b{font-size:1rem}
.cp-q .hint{color:var(--ink3);font-size:.8rem;margin:4px 0 8px 32px}
.cp-q textarea,.cp-q input[type=text]{width:100%;min-height:54px;font-size:.95rem;border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.cp-q .row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.cp-tl{background:#fff;border:1px dashed #ffc7a0;border-radius:14px;padding:12px 16px;margin:12px 0}
.cp-tl .t{display:flex;gap:10px;align-items:flex-start;padding:5px 0;font-size:.9rem;animation:cpIn .35s ease both}
.cp-tl .dot{width:10px;height:10px;border-radius:50%;background:#ddd;margin-top:6px;flex:none}
.cp-tl .t.run .dot{background:var(--red);animation:cpPulse 1s ease-in-out infinite}
.cp-tl .t.done .dot{background:var(--ok)}
.cp-tl .t.fail .dot{background:var(--danger,#E5322D)}
.cp-tl .d{color:var(--ink3);font-size:.8rem}
.cp-tl .secs{margin-left:auto;color:var(--ink3);font-size:.76rem;white-space:nowrap}
.cp-wait{margin-top:10px;background:linear-gradient(135deg,#fff7f2,#fff);border:1px solid #ffe1cf;border-radius:12px;padding:12px 16px;font-size:.9rem;line-height:1.7;min-height:64px}
.cp-wait .ttl{font-weight:700;color:var(--red);margin-bottom:3px}
.cp-cands{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-top:8px}
.cp-cand{background:#fff;border:2px solid var(--line);border-radius:16px;padding:16px 18px;cursor:pointer;position:relative;opacity:0;transition:border-color .2s,transform .2s}
.cp-cand:hover{border-color:#ffb08a;transform:translateY(-2px)}
.cp-cand.rec{border-color:var(--red)}
.cp-cand.sel{border-color:var(--ok);background:#f4fbf6}
.cp-cand .badge{position:absolute;top:-11px;right:14px;background:var(--red);color:#fff;font-size:.74rem;padding:2px 10px;border-radius:999px;font-weight:600}
.cp-cand .dir{color:var(--ink3);font-size:.78rem}
.cp-cand h3{margin:4px 0 6px;font-size:1.12rem;font-family:'deyihei',sans-serif;font-weight:400}
.cp-cand .one{font-size:.9rem;line-height:1.6;color:var(--ink2);margin-bottom:8px}
.cp-score{display:grid;grid-template-columns:auto 1fr auto;gap:4px 8px;align-items:center;font-size:.76rem;color:var(--ink3);margin:6px 0}
.cp-score .bar{height:7px;background:#f0ece8;border-radius:999px;overflow:hidden}
.cp-score .bar i{display:block;height:100%;background:linear-gradient(90deg,#ffb08a,var(--red));border-radius:999px;animation:cpGrow .9s ease-out both}
.cp-cand .tot{font-family:'deyihei',sans-serif;font-size:1.5rem;color:var(--red);text-align:right}
.cp-cand .nd{font-size:.8rem;color:var(--ink3);margin-top:6px}
.cp-core{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 22px}
.cp-core .blk{opacity:0;animation:cpIn .5s ease forwards;margin-bottom:12px}
.cp-core h3{font-size:.82rem;color:var(--ink3);margin:0 0 4px;font-weight:600;letter-spacing:.04em}
.cp-core .title{font-family:'deyihei',sans-serif;font-size:1.6rem;font-weight:400;color:var(--ink)}
.cp-core .one{font-size:1.02rem;line-height:1.7;background:#fff7f2;border-left:4px solid var(--red);padding:8px 12px;border-radius:0 10px 10px 0}
.cp-nums{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}
.cp-num{background:#fffdf9;border:1px solid #ffe1cf;border-radius:12px;padding:10px 12px;text-align:center}
.cp-num .n{font-family:'deyihei',sans-serif;font-size:2rem;color:var(--red);line-height:1.1}
.cp-num input{width:90px;text-align:center;font-size:1.3rem;font-family:'deyihei',sans-serif;color:var(--red);border:none;border-bottom:2px dashed #ffb08a;background:transparent}
.cp-num .l{font-size:.8rem;color:var(--ink3)}
.cp-num .how{font-size:.72rem;color:var(--ink3);margin-top:3px;line-height:1.4}
.cp-list li{margin:3px 0;line-height:1.55}
.cp-judge{font-size:1rem;font-weight:600;padding:8px 12px;background:#f4f1ee;border-radius:10px}
.cp-ask-ai{margin-top:12px;border:1.5px solid #ffd9c4;background:#fffaf6;border-radius:14px;padding:12px 14px}
.cp-ask-ai .q{font-size:.95rem;margin-bottom:8px}
.cp-ask-ai .q b{color:var(--red)}
.cp-talk{display:flex;gap:8px;align-items:flex-end}
.cp-talk textarea{flex:1;min-height:44px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:.92rem}
.cp-vers{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:.78rem;color:var(--ink3);margin-bottom:8px}
.cp-vers .v{background:#f4f1ee;border-radius:999px;padding:1px 9px}
.cp-vers .v.cur{background:var(--red);color:#fff}
.cp-blocks{display:grid;gap:12px;margin-top:10px}
.cp-blk{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 18px;opacity:0;animation:cpIn .5s ease forwards}
.cp-blk.todo{opacity:.55;animation:none;border-style:dashed;background:#fbfaf8}
.cp-blk h3{margin:0 0 8px;font-size:1.02rem;display:flex;align-items:center;gap:8px}
.cp-blk h3 .st{font-size:.72rem;color:var(--ink3);font-weight:400}
.cp-blk table{width:100%;font-size:.86rem;border-collapse:collapse}
.cp-blk th{color:var(--ink3);font-weight:500;text-align:left;padding:4px 6px;border-bottom:1px solid var(--line)}
.cp-blk td{padding:5px 6px;border-bottom:1px dashed #f0ece8;vertical-align:top;line-height:1.5}
.cp-blk .tags{display:flex;gap:6px;flex-wrap:wrap}
.cp-blk .tag{background:#f4f1ee;border-radius:999px;padding:2px 10px;font-size:.8rem}
.cp-blk .tag.miss{background:#fff1ea;color:var(--red)}
.cp-warn{background:#fff1ea;color:#b23b10;border-radius:10px;padding:8px 12px;font-size:.88rem;line-height:1.6;margin-top:8px}
.cp-review{margin-top:12px}
.cp-prob{border:1px solid #ffd9c4;border-left:4px solid var(--warn);border-radius:10px;padding:10px 12px;margin:8px 0;font-size:.9rem;line-height:1.6;animation:cpIn .4s ease both}
.cp-prob .w{color:var(--ink3);font-size:.78rem}
.cp-prob.done{opacity:.55;border-left-color:var(--ok)}
.cp-weeks{display:grid;grid-template-columns:repeat(13,1fr);gap:5px;margin:10px 0}
.cp-wk{background:#fff;border:1px solid var(--line);border-radius:10px;padding:6px 4px;text-align:center;font-size:.72rem;min-height:74px;opacity:0;animation:cpFlip .5s ease both;position:relative}
.cp-wk.p0{background:#fff9f4}.cp-wk.p1{background:#fff3ea}.cp-wk.p2{background:#ffece0}
.cp-wk.cur{border-color:var(--red);box-shadow:0 0 0 2px #ffd9c4}
.cp-wk .n{font-weight:700;color:var(--red)}
.cp-wk .th{color:var(--ink2);line-height:1.3;margin:3px 0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.cp-wk .g{color:var(--ink3);font-size:.68rem}
.cp-wk .flag{position:absolute;top:-8px;right:-4px;font-size:.9rem}
.cp-wk.redo::after{content:'待重排';position:absolute;bottom:2px;left:0;right:0;font-size:.62rem;color:var(--warn)}
.cp-phase{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0}
.cp-phase div{font-size:.8rem;text-align:center;padding:6px;border-radius:10px;background:#f4f1ee}
.cp-first{margin-top:10px}
.cp-first .t{display:flex;gap:10px;align-items:center;padding:6px 0;border-bottom:1px dashed #f0ece8;font-size:.9rem}
.cp-first .t .d{min-width:52px;color:var(--red);font-family:'deyihei',sans-serif}
.cp-done-top{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
/* 驾驶舱顶条 */
#campcard{background:linear-gradient(135deg,#fff7f2,#fff);border:1.5px solid #ffd9c4}
.cpbar-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cpbar-h .nm{font-family:'deyihei',sans-serif;font-size:1.3rem}
.cpbar-h .wk{background:var(--red);color:#fff;border-radius:999px;padding:2px 12px;font-size:.84rem}
.cpbar-h .nx{margin-left:auto;font-size:.88rem;color:var(--ink2)}
.cpbar-rows{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:8px 18px;margin-top:8px;font-size:.92rem}
.cpbar-rows .lab{color:var(--ink3);font-size:.78rem;margin-right:6px}
.cpbar-rows b{color:var(--red)}
.cpbar-rows .owe{color:var(--warn);font-size:.82rem}
.cpbar-th{margin-top:8px;font-size:.95rem}
.cpbar-gate{margin-top:10px;background:#fff1ea;border-radius:10px;padding:10px 12px;font-size:.9rem;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
@media(max-width:900px){.cp-weeks{grid-template-columns:repeat(7,1fr)}}
