:root{
  /* 墨池（默认主题）：墨黑纸白 + 描金 + 朱砂，取代原来的冷紫科技色 */
  --bg:#0B0B0D; --bg2:#121214; --card:#17171A; --line:#2C2C31;
  --txt:#F1EEE8; --dim:#9C968C;
  --brand:#C9A24E; --brand2:#DCC07A;
  --grad:linear-gradient(135deg,#B08A3E,#DCC07A 52%,#C9A24E);
  --ok:#6FAF8B; --warn:#D9A441; --err:#C0453A;
}
html[data-theme="violet"]{
  --bg:#0B0B0D; --bg2:#121214; --card:#17171A; --line:#2C2C31; --txt:#F1EEE8; --dim:#9C968C;
  --brand:#C9A24E; --brand2:#DCC07A; --grad:linear-gradient(135deg,#C9A24E,#DCC07A 55%,#B08A3E);
  --ok:#34d399; --warn:#fbbf24; --err:#f87171;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:radial-gradient(1200px 600px at 85% -10%,#1A1712 0%,var(--bg) 55%);color:var(--txt);font:15px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;min-height:100vh}
a{color:var(--brand2);text-decoration:none}
.wrap{max-width:1160px;margin:0 auto;padding:0 20px}
.top{position:sticky;top:0;z-index:50;background:rgba(10,11,22,.82);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.top-in{display:flex;align-items:center;gap:22px;height:62px}
.brand{font-weight:800;font-size:19px;color:#fff;display:flex;align-items:center;gap:8px;white-space:nowrap}
.brand .logo{width:30px;height:30px;border-radius:9px;background:var(--grad);display:inline-flex;align-items:center;justify-content:center;font-weight:900;box-shadow:0 4px 14px rgba(201,162,78,.4)}
.brand em{font-style:normal;color:var(--dim);font-weight:500;font-size:12.5px;margin-left:2px}
.nav{display:flex;gap:4px;flex:1}
.nav a{padding:7px 13px;border-radius:9px;color:var(--dim);font-size:14.5px}
.nav a.on,.nav a:hover{color:#fff;background:rgba(201,162,78,.16)}
.user{display:flex;align-items:center;gap:10px;white-space:nowrap}
.bal{font-weight:700;color:var(--ok);font-size:14.5px}
#userName{color:var(--dim);font-size:13.5px;max-width:120px;overflow:hidden;text-overflow:ellipsis}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:11px;padding:11px 20px;font-size:14.5px;font-weight:700;cursor:pointer;color:#fff;background:var(--grad);box-shadow:0 6px 18px rgba(201,162,78,.35);transition:.22s}
.btn:hover{transform:translateY(-1px);filter:brightness(1.06)}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.btn.ghost{background:transparent;box-shadow:none;border:1px solid var(--line);color:var(--txt)}
.btn.sm{padding:6px 13px;font-size:13.5px;border-radius:9px}
.btn.danger{background:linear-gradient(135deg,#f87171,#fb7185);box-shadow:none}
.btn.full{width:100%}
.view{padding:26px 0 60px;min-height:70vh}
.hero{padding:34px 0 10px}
.hero h1{font-size:32px;font-weight:900;letter-spacing:.5px}
.hero p{color:var(--dim);margin-top:8px}
.section-h{display:flex;align-items:baseline;justify-content:space-between;margin:30px 0 14px;gap:10px;flex-wrap:wrap}
.section-h h2{font-size:19px;font-weight:800}
.section-h .sub{color:var(--dim);font-size:13.5px}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 4px}
.chip{padding:7px 15px;border-radius:99px;border:1px solid var(--line);color:var(--dim);cursor:pointer;font-size:13.5px;background:var(--card)}
.chip.on{color:#fff;border-color:transparent;background:var(--grad)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:14px;margin-top:14px}
.mcard{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;cursor:pointer;transition:.16s;position:relative;overflow:hidden}
.mcard::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--grad);opacity:0;transition:.22s}
.mcard:hover{transform:translateY(-3px);border-color:#4A4128}
.mcard.on{border-color:var(--brand);box-shadow:0 8px 26px rgba(201,162,78,.28)}
.mcard.on::before{opacity:1}
.mcard .ico{width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,#2a2c5a,#1d2044);display:flex;align-items:center;justify-content:center;font-size:24px;margin-bottom:12px}
.mcard h3{font-size:14.5px}
.mcard .ven{color:var(--brand2);font-size:12.5px;margin-top:2px}
.mcard .note{color:var(--dim);font-size:12.5px;margin-top:8px;min-height:38px}
.mcard .fee{color:var(--ok);font-size:12.5px;font-weight:600;margin-top:10px}
.mcard .free{color:var(--warn)}
.work{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:18px}
.work .pan{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:12px}
@media(max-width:860px){.work{grid-template-columns:1fr}}
.pan label{font-size:13.5px;color:var(--dim)}
textarea,.inp{width:100%;background:var(--bg2);border:1px solid var(--line);border-radius:11px;color:var(--txt);padding:12px 14px;font:inherit;outline:none}
textarea{min-height:150px;resize:vertical}
textarea:focus,.inp:focus{border-color:var(--brand)}
select.inp{padding:10px}
.out{background:var(--bg2);border:1px solid var(--line);border-radius:11px;padding:14px;white-space:pre-wrap;word-break:break-word;min-height:220px;max-height:560px;overflow:auto;color:#e6e9ff;font-size:14.5px}
.out .ph{color:#555a85;font-size:13.5px}
.imgs{display:grid;grid-template-columns:1fr;gap:12px}
.imgs img{width:100%;border-radius:12px;border:1px solid var(--line)}
.pg-loading{display:flex;flex-direction:column;gap:10px;align-items:center;justify-content:center;padding:36px;color:var(--dim)}
.spin{width:26px;height:26px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--brand2);animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
.meta{font-size:12.5px;color:var(--dim)}
.err{color:var(--err);font-size:13.5px}
.box{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px;max-width:480px;margin:30px auto}
.box h2{font-size:19px;margin-bottom:6px}
.box .sub{color:var(--dim);font-size:13.5px;margin-bottom:18px}
.field{margin-bottom:14px}
.field label{display:block;font-size:13.5px;color:var(--dim);margin-bottom:6px}
.tip{font-size:12.5px;color:var(--dim);margin-top:10px}
.amounts{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.amt{border:1px solid var(--line);background:var(--bg2);border-radius:12px;padding:14px;text-align:center;cursor:pointer;font-weight:800;font-size:16px}
.amt.on{border-color:var(--brand);background:rgba(201,162,78,.14);color:#fff}
.qr{text-align:center;padding:16px}
.qr img{width:220px;height:220px;object-fit:contain;border-radius:12px;border:1px solid var(--line);background:#fff}
.qr .phqr{width:220px;height:220px;border-radius:12px;border:1px dashed #444a7a;display:flex;align-items:center;justify-content:center;color:#666a99;font-size:12.5px;margin:0 auto;background:var(--bg2)}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line)}
th{color:var(--dim);font-weight:600}
.st{font-size:12.5px;padding:2px 9px;border-radius:99px}
.st.pending{background:rgba(251,191,36,.14);color:var(--warn)}
.st.submitted{background:rgba(59,130,246,.16);color:#93c5fd}
.st.done{background:rgba(52,211,153,.14);color:var(--ok)}
.st.rejected{background:rgba(248,113,113,.14);color:var(--err)}
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:#1c1f3f;border:1px solid var(--line);color:#fff;padding:11px 20px;border-radius:12px;font-size:14.5px;z-index:99;opacity:0;pointer-events:none;transition:.22s;box-shadow:0 10px 30px rgba(0,0,0,.4)}
.toast.show{opacity:1}
.foot{color:#565a85;font-size:12.5px;padding:22px 20px;border-top:1px solid #1c1f3d;text-align:center;margin-top:10px}
.reason{color:#c4b5fd;font-size:13.5px;background:#1e1b3a;border-left:2px solid var(--brand);padding:8px 12px;border-radius:6px;margin-bottom:8px;white-space:pre-wrap}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.flow{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.flow a{font-size:13.5px}

/* ===== 多板块扩展 ===== */
.badge{display:inline-block;padding:6px 14px;border-radius:99px;background:rgba(201,162,78,.14);color:#c4b5fd;font-size:13.5px;border:1px solid rgba(220,192,122,.3);margin-bottom:18px}
.hero{padding:44px 0 20px;text-align:center}
.hero h1{font-size:40px;line-height:1.25;font-weight:900}
.hero .grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{color:var(--dim);max-width:760px;margin:12px auto 0}
.hero-cta{display:flex;gap:14px;justify-content:center;margin-top:26px;flex-wrap:wrap}
.btn.big{padding:13px 28px;font-size:16px}
.hero-stats{display:flex;gap:26px;justify-content:center;margin-top:34px;flex-wrap:wrap}
.hero-stats b{font-size:24px;color:#fff;display:block}
.hero-stats span{color:var(--dim);font-size:13.5px}
.block{margin:44px 0}
.sec-h{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:16px;gap:12px;flex-wrap:wrap}
.sec-h h2{font-size:24px;font-weight:800}
.sec-h p{color:var(--dim);font-size:13.5px;margin-top:4px}
.sec-h .more{color:var(--brand2);font-size:13.5px}
.caps{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.cap{background:linear-gradient(160deg,#181a3c,#101226);border:1px solid var(--line);border-radius:16px;padding:20px 16px;text-align:center;cursor:pointer;transition:.16s}
.cap:hover{transform:translateY(-3px);border-color:#5a4fd0}
.cap .ci{font-weight:800;font-size:14.5px;color:#fff}
.cap .cn{color:var(--dim);font-size:12.5px;margin-top:6px}
.idea-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.idea{display:flex;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;cursor:pointer;transition:.16s}
.idea:hover{border-color:#5a4fd0}
.idea .ii{font-size:24px}
.idea b{font-size:14.5px}
.idea p{color:var(--dim);font-size:12.5px;margin-top:3px}
.page-h{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin:10px 0 22px;flex-wrap:wrap}
.page-h h1{font-size:24px;font-weight:900}
.page-h p{color:var(--dim);font-size:13.5px;margin-top:4px}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}
.tab{padding:9px 16px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--dim);cursor:pointer;font-size:14.5px}
.tab.on{background:var(--grad);color:#fff;border-color:transparent}
.grid.sm{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));margin-bottom:20px}
.mcard .mc-top{display:flex;justify-content:space-between;align-items:flex-start}
.mcard .ico{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,#2a2c5a,#1d2044);display:flex;align-items:center;justify-content:center;font-size:19px;margin-bottom:10px}
.tag{font-size:11.5px;padding:2px 8px;border-radius:99px;font-weight:700}
.tag.free{background:rgba(251,191,36,.15);color:#fbbf24}
.tag.hot{background:rgba(52,211,153,.15);color:#34d399}
.tag.new{background:rgba(220,192,122,.18);color:#c4b5fd}
.sel-info{margin-bottom:10px}
.chk{display:inline-flex;align-items:center;gap:6px;margin-top:10px;font-size:13.5px;color:var(--dim);cursor:pointer}.chk input{accent-color:#6c5ce7}
.lbl{display:block;font-size:13.5px;color:var(--dim);margin:6px 0 6px}
.opts{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}
.opts label{font-size:12.5px;color:var(--dim)}
.opts .inp{width:auto;min-width:120px;padding:8px 12px;margin-right:8px}
.up-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
input[type=file]{color:var(--dim);font-size:13.5px}
.up-prev{margin-top:10px}
.up-prev img{max-width:220px;border-radius:12px;border:1px solid var(--line)}
.works{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.wcard{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.wmedia{background:#000}
.wmedia img,.wmedia video{width:100%;max-height:260px;display:block;object-fit:cover}
.wmeta{padding:10px 12px;font-size:12.5px;color:var(--dim);line-height:1.6}
.wmeta b{color:#e8eaff}
.ok{color:var(--ok)}
@media(max-width:640px){.hero h1{font-size:32px}}

/* ===== 灵感广场 ===== */
.masonry{columns:3;column-gap:14px}
@media(max-width:900px){.masonry{columns:2}}
@media(max-width:560px){.masonry{columns:1}}
.gcard{break-inside:avoid;margin:0 0 14px;background:var(--card);border:1px solid var(--line);border-radius:15px;overflow:hidden}
.gmedia img,.gmedia video{width:100%;display:block;background:#000}
.gbody{padding:11px 12px}
.gmeta{display:flex;gap:8px;align-items:center;margin-bottom:6px}
.gmodel{font-weight:700;font-size:13.5px;color:#e8eaff}
.gprompt{color:var(--dim);font-size:12.5px;margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.gauthor{color:#565a85;font-size:11.5px;margin-bottom:8px}
.gacts{display:flex;gap:8px;flex-wrap:wrap}
.wacts{padding:0 12px 11px;display:flex;gap:8px}

.warnbar{background:rgba(251,191,36,.10);border:1px solid rgba(251,191,36,.28);color:#fde68a;padding:10px 14px;border-radius:12px;font-size:13.5px;margin-bottom:14px}
.warnbar a{color:#fff;font-weight:700;margin:0 3px;text-decoration:underline}
.hero-ask{display:flex;gap:10px;max-width:640px;margin:18px auto 6px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:6px 6px 6px 18px}
.hero-ask .inp{flex:1;min-width:0;background:transparent;border:0;color:#fff;outline:0}
.hero-ask .btn{white-space:nowrap}
.hero-ask .inp::placeholder{color:rgba(255,255,255,.55)}

/* ================= 主题切换 ================= */
html[data-theme="aurora"]{
  --bg:#071423; --bg2:#0a1d33; --card:#0d2540; --line:#1c3d5f; --txt:#eaf6ff; --dim:#7ea3c9;
  --brand:#14b8e6; --brand2:#4cc9ff; --grad:linear-gradient(135deg,#14b8e6,#3f8cff 55%,#7b6cff);
  --ok:#2dd4bf; --warn:#fbbf24; --err:#fb7185;
  --glowTop:#0d3a66; --navOn:rgba(20,184,230,.18); --btnShadow:rgba(20,184,230,.32);
  --icoGrad:linear-gradient(135deg,#0e3a63,#0a2547); --cardGlow:rgba(20,184,230,.30); --soft:rgba(20,184,230,.16);
}
html[data-theme="sunset"]{
  --bg:#180b12; --bg2:#24101a; --card:#2c1622; --line:#5b2736; --txt:#fff0ec; --dim:#d09aa6;
  --brand:#ff7a59; --brand2:#ffa36b; --grad:linear-gradient(135deg,#ff6b5b,#ff8e53 55%,#ffb35c);
  --ok:#34d399; --warn:#fbbf24; --err:#fb7185;
  --glowTop:#4a1b26; --navOn:rgba(255,122,89,.18); --btnShadow:rgba(255,122,89,.32);
  --icoGrad:linear-gradient(135deg,#4a2030,#331722); --cardGlow:rgba(255,122,89,.30); --soft:rgba(255,122,89,.16);
}
html[data-theme="sakura"]{
  --bg:#150b1c; --bg2:#21102c; --card:#2a1438; --line:#57305f; --txt:#fff0fb; --dim:#c79cc8;
  --brand:#e879b9; --brand2:#f49ac1; --grad:linear-gradient(135deg,#e879b9,#c084fc 55%,#DCC07A);
  --ok:#34d399; --warn:#fbbf24; --err:#fb7185;
  --glowTop:#3a1b4d; --navOn:rgba(232,121,185,.18); --btnShadow:rgba(232,121,185,.32);
  --icoGrad:linear-gradient(135deg,#431c52,#2b1338); --cardGlow:rgba(232,121,185,.30); --soft:rgba(232,121,185,.16);
}
html[data-theme="mint"]{
  --bg:#061512; --bg2:#08201a; --card:#0c2a22; --line:#1e4a3d; --txt:#e9fff7; --dim:#7fbfa9;
  --brand:#10b981; --brand2:#34d399; --grad:linear-gradient(135deg,#10b981,#0ea5a4 55%,#B08A3E);
  --ok:#34d399; --warn:#fbbf24; --err:#fb7185;
  --glowTop:#0b3d33; --navOn:rgba(16,185,129,.18); --btnShadow:rgba(16,185,129,.32);
  --icoGrad:linear-gradient(135deg,#0d3d33,#09281f); --cardGlow:rgba(16,185,129,.30); --soft:rgba(16,185,129,.16);
}
/* 取色器 */
.th-pick{display:inline-flex;gap:6px;align-items:center;margin-right:4px}
.thd{width:20px;height:20px;border-radius:50%;border:2px solid rgba(255,255,255,.25);cursor:pointer;padding:0;transition:.16s;background:var(--dot,#C9A24E)}
.thd.on{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,.35)}
.thd[data-th=""]{--dot:#C9A24E}
.thd[data-th="aurora"]{--dot:#14b8e6}
.thd[data-th="sunset"]{--dot:#ff7a59}
.thd[data-th="sakura"]{--dot:#e879b9}
.thd[data-th="mint"]{--dot:#10b981}
/* 每页氛围色（顶部光晕随页面微调） */
[data-view="theatre"]{--glowTop:#3b1b5e}
[data-view="templates"]{--glowTop:#123a55}
[data-view="gallery"]{--glowTop:#451d4a}
[data-view="models"]{--glowTop:#23316b}
[data-view="recharge"]{--glowTop:#143b2e}

/* ================= 电影打板 · 剧场 & 效果预览 ================= */
/* 模型卡封面：效果预览 */
.mc-cover{position:relative;height:104px;border-radius:12px;overflow:hidden;margin-bottom:10px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#232658,#161a3d);border:1px solid var(--line)}
.mc-cover.grad{font-size:34px}
.mc-cover img,.mc-cover video{width:100%;height:100%;object-fit:cover;display:block}
.mc-badge{position:absolute;right:6px;top:6px;background:rgba(0,0,0,.55);color:#ffe27a;font-size:11.5px;padding:1px 7px;border-radius:99px;backdrop-filter:blur(4px);letter-spacing:.5px}
.mcard .ven{margin-top:0}
/* 剧场 场记板 Hero */
.th-hero{position:relative;border-radius:20px;overflow:hidden;background:radial-gradient(800px 300px at 15% 0%,rgba(255,122,89,.18),transparent 60%),linear-gradient(135deg,#1b1030,#0e1a33 60%,#121214);border:1px solid rgba(255,255,255,.12);padding:0 0 18px;margin-bottom:18px}
.filmstrip{height:9px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.9) 0 5px,transparent 5px 13px);opacity:.95;animation:filmRun 1.4s linear infinite;box-shadow:0 0 0 1px rgba(0,0,0,.18)}
.th-hero-in{display:flex;gap:16px;align-items:center;padding:20px 22px 6px}
.clap{flex:0 0 64px;width:64px;height:64px;border-radius:12px;background:linear-gradient(135deg,#fbbf24,#f59e0b);display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 8px 22px rgba(251,191,36,.35);transform:rotate(-3deg)}
.clap .big{font-size:32px;line-height:1}
.clap small{font-size:11.5px;color:#3a2a00;font-weight:800;letter-spacing:1px;background:#fff;padding:1px 4px;border-radius:3px;margin-top:2px}
.th-hero-in h1{font-size:24px;font-weight:900}
.th-hero-in p{color:var(--dim);font-size:13.5px;margin-top:4px}
.th-stats{display:flex;gap:0;padding:12px 22px 0}
.th-stats div{flex:1;text-align:center;border-right:1px solid rgba(255,255,255,.08)}
.th-stats div:last-child{border-right:0}
.th-stats b{display:block;font-size:19px}
.th-stats span{color:var(--dim);font-size:12.5px}
.th-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 16px}
/* 海报卡片 */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.pcard{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;cursor:pointer;transition:.22s;position:relative}
.pcard:hover{transform:translateY(-4px);box-shadow:0 14px 34px rgba(0,0,0,.35);border-color:#f59e0b66}
.pcard .poster{position:relative;aspect-ratio:3/3.6;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 30% 20%,#3a2a55,#151832 70%);font-size:52px}
.pcard .poster .pt{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.8));color:#fff;padding:26px 14px 12px;font-weight:800;font-size:14.5px}
.pcard .poster .strip{position:absolute;top:0;left:0;right:0;height:6px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.5) 0 4px,transparent 4px 10px)}
.pcard .pbody{padding:11px 14px}
.pcard .pmeta{display:flex;gap:10px;font-size:12.5px;color:var(--dim);flex-wrap:wrap}
.pcard .pbar{display:flex;gap:6px;margin-top:8px}
.pcard .pbar i{height:3px;border-radius:2px;background:var(--ok);flex:1;opacity:.85}
.pcard .pbar i.empty{background:rgba(255,255,255,.14)}
/* 单镜 · 电影布光 */
.shot{display:flex;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:14px}
.shot .rail{flex:0 0 52px;text-align:center;border-right:1px dashed var(--line);padding-right:10px}
.shot .rail .no{font-size:24px;font-weight:900;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.shot .rail .lbl{font-size:11.5px;color:var(--dim);letter-spacing:1px}
.shot .dot{width:9px;height:9px;border-radius:50%;margin:6px auto 0;background:#555}
.shot .dot.ok{background:var(--ok);box-shadow:0 0 8px var(--ok)}
.shot .dot.run{background:#fbbf24;box-shadow:0 0 8px #fbbf24;animation:blink 1s infinite}
.shot .dot.fail{background:var(--err)}
@keyframes blink{50%{opacity:.3}}
.shot .main{flex:1;min-width:0}
.shot .main .titles{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.shot .main h4{font-size:14.5px}
.shot video{width:100%;border-radius:10px;background:#000;margin-top:8px;max-height:260px}
.shot .dialogue{margin-top:6px;font-size:12.5px;color:var(--dim)}
/* 效果抢先看 */
.eff-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}
.eff-strip .eff{border-radius:14px;overflow:hidden;border:1px solid var(--line);position:relative;cursor:pointer}
.eff-strip .eff img,.eff-strip .eff video{width:100%;height:150px;object-fit:cover;display:block;background:#000}
.eff-strip .eff .lb{position:absolute;left:8px;bottom:8px;background:rgba(0,0,0,.6);color:#fff;font-size:11.5px;padding:2px 8px;border-radius:99px;backdrop-filter:blur(4px)}
.eff .play{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);width:34px;height:34px;border-radius:50%;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;color:#fff;font-size:14.5px;padding-left:3px;border:1px solid rgba(255,255,255,.55)}

/* ===== 装饰 & 互动增强 ===== */
body::before{content:"";position:fixed;inset:-20%;pointer-events:none;z-index:0;background:
radial-gradient(720px 460px at 12% 8%,color-mix(in srgb,var(--brand,#C9A24E) 24%,transparent),transparent 60%),
radial-gradient(640px 420px at 88% 18%,color-mix(in srgb,var(--brand2,#DCC07A) 20%,transparent),transparent 60%),
radial-gradient(760px 520px at 70% 88%,color-mix(in srgb,var(--brand,#C9A24E) 16%,transparent),transparent 60%);
filter:saturate(1.1)}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background-image:radial-gradient(rgba(255,255,255,.06) 1px,transparent 1.5px);background-size:22px 22px}
#view{position:relative;z-index:1}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:linear-gradient(var(--brand),var(--brand2));border-radius:8px}
.btn:active{transform:scale(.97)}
.chip:hover{transform:translateY(-1px)}
.mcard,.pcard,.cap,.eff,.wcard{position:relative;overflow:hidden}
.mcard::after,.pcard::after,.cap::after,.eff::after,.wcard::after{content:"";position:absolute;top:0;left:-130%;width:55%;height:100%;background:linear-gradient(105deg,transparent,rgba(255,255,255,.12),transparent);transition:left .5s ease;pointer-events:none}
.mcard:hover::after,.pcard:hover::after,.cap:hover::after,.eff:hover::after,.wcard:hover::after{left:130%}
.mc-cover img,.eff img{transition:transform .5s ease}
.mcard:hover .mc-cover img,.eff:hover img{transform:scale(1.06)}
.eff:hover{border-color:var(--brand)}
@keyframes wfpop{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.page-h,.hero h1,.shot{animation:wfpop .4s ease both}
.hero-ask{animation:wfpop .5s .05s ease both}
/* 工作流 */
.wf-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.wf-step{transition:.22s}
.wf-step:hover{border-color:var(--brand)}
.wf-step .row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
@keyframes filmRun{to{background-position:26px 0}}
@keyframes stripRun{to{background-position:20px 0}}
.poster .strip{animation:stripRun .8s linear infinite}
/* 背景特效画布 */
#fx{position:fixed;inset:0;z-index:0;pointer-events:none;mix-blend-mode:screen;opacity:.95}
/* 剧场：纯黑片场背景，让鼠标光晕里的胶卷分镜更清楚 */
body[data-view="theatre"]{background:#0e1116 !important;background-image:linear-gradient(115deg,transparent 12%,rgba(255,255,255,.055) 22%,transparent 32%),linear-gradient(65deg,transparent 68%,rgba(140,160,255,.05) 78%,transparent 88%),linear-gradient(300deg,transparent 8%,rgba(255,255,255,.04) 18%,transparent 26%),radial-gradient(640px 340px at 16% -6%,rgba(255,255,255,.09),transparent 70%),radial-gradient(540px 320px at 88% -2%,rgba(130,150,255,.08),transparent 70%) !important}
body[data-view="theatre"]::before,body[data-view="theatre"]::after{display:none}
body[data-view="theatre"] .th-hero{background:radial-gradient(720px 380px at 18% 0%,rgba(255,255,255,.07),transparent 58%),linear-gradient(180deg,#15171d,#0e1116);border-color:rgba(222,222,222,.15)}
body[data-view="theatre"] .mcard,body[data-view="theatre"] .pcard,body[data-view="theatre"] .shot,body[data-view="theatre"] .gcard{background:rgba(23,23,23,.82) !important;border-color:rgba(222,222,222,.15);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
body[data-view="theatre"] .clap{background:linear-gradient(135deg,#fff3c4,#f0c040)}
body[data-view="theatre"] .pcard .poster{background:radial-gradient(circle at 50% 18%,#202027,#0c0d10 75%)}
/* 剧场：顶部光柱缓慢漂移 */
body[data-view="theatre"]{animation:beamsDrift 16s ease-in-out infinite alternate}
@keyframes beamsDrift{from{background-position:0 0,0 0,0 0,0 0,0 0}to{background-position:46px 0,-34px 0,22px 0,0 0,0 0}}
/* 剧场：右侧竖向胶卷装饰（常驻微显） */
body[data-view="theatre"] #view::after{content:"";position:fixed;top:70px;right:8px;width:34px;height:64vh;opacity:.22;pointer-events:none;background:repeating-linear-gradient(to bottom,rgba(255,252,240,.7) 0 6px,transparent 6px 16px),repeating-linear-gradient(to bottom,transparent 0 40px,rgba(255,252,240,.55) 40px 46px,transparent 46px 120px),linear-gradient(rgba(60,60,66,.9),rgba(30,30,34,.9));-webkit-mask-image:linear-gradient(180deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(180deg,transparent,#000 12%,#000 88%,transparent);filter:drop-shadow(0 0 2px rgba(255,255,255,.3));border:1px solid rgba(255,255,255,.08);border-radius:8px}
body[data-view="theatre"] #view{position:relative}
/* ===== AI剧场 · RunningHub 首页风格 ===== */
body[data-view="theatre"] #view{max-width:1180px}
.th-top{display:flex;align-items:center;gap:26px;flex-wrap:wrap;padding:8px 0 4px}
.th-logo{font-weight:900;font-size:19px;display:flex;gap:8px;align-items:center;letter-spacing:1px}
.th-logo b{background:linear-gradient(135deg,#fff,#cfd6ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.th-logo em{font-style:normal;color:var(--dim);font-size:12.5px}
.th-quick{display:flex;gap:4px;flex-wrap:wrap;flex:1}
.th-quick span{padding:7px 13px;border-radius:9px;color:var(--dim);cursor:pointer;font-size:13.5px}
.th-quick span:hover,.th-quick span.on{color:#fff;background:rgba(255,255,255,.08)}
.th-stage{display:grid;grid-template-columns:1fr 240px;gap:22px;margin:10px 0 22px;position:relative}
.th-create{padding:24px 2px}
.th-create h1{font-size:34px;line-height:1.22;font-weight:900;letter-spacing:.5px}
.th-grad{background:linear-gradient(135deg,#fff,#ffd9a0 60%,#9ec7ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.th-sub{color:var(--dim);font-size:13.5px;margin:10px 0 18px}
.th-tabs{display:flex;gap:10px;margin-bottom:12px}
.th-tab{padding:9px 18px;border-radius:99px;border:1px solid var(--line);background:rgba(255,255,255,.03);color:var(--dim);cursor:pointer;font-size:14.5px}
.th-tab.on{color:#0e1116;background:#fff;border-color:#fff;font-weight:700}
.th-input{position:relative;max-width:760px}
.th-input textarea{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:16px 18px 38px;color:#fff;font-size:16px;min-height:96px;resize:vertical}
.th-input textarea:focus{border-color:rgba(255,255,255,.4)}
.th-count{position:absolute;right:16px;bottom:12px;color:#8a8fa3;font-size:12.5px}
.th-opts{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0;color:var(--dim);font-size:13.5px}
.th-opts .inp{width:auto;min-width:110px;background:rgba(255,255,255,.05)}
.th-price{font-weight:700;color:#ffd9a0}
.th-go{display:inline-block;border:0;border-radius:12px;padding:14px 30px;font-size:16px;font-weight:800;cursor:pointer;color:#0e1116;background:linear-gradient(135deg,#fff,#ffd9a0);box-shadow:0 10px 30px rgba(255,255,255,.18);transition:.22s}
.th-go:hover{transform:translateY(-2px);filter:brightness(1.05)}
.th-deco{display:flex;flex-direction:column;gap:14px;justify-content:flex-end;padding-bottom:8px}
.th-deco .clap{align-self:flex-start}
.th-section{margin-top:10px}
.th-sec-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.th-sec-h h2{font-size:19px;font-weight:800}
.works-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}
.wpost{cursor:pointer;border-radius:16px;overflow:hidden;background:#111;border:1px solid rgba(222,222,222,.14);transition:.22s;box-shadow:0 10px 26px rgba(0,0,0,.4)}
.wpost:hover{transform:translateY(-5px);border-color:rgba(255,255,255,.32);box-shadow:0 18px 40px rgba(0,0,0,.5)}
.wp-media{position:relative;aspect-ratio:16/12;overflow:hidden;display:flex;align-items:center;justify-content:center}
.wp-media img{width:100%;height:100%;object-fit:cover;transition:.5s}
.wpost:hover .wp-media img{transform:scale(1.07)}
.wp-ph{font-size:46px;opacity:.9}
.wp-tag{position:absolute;left:10px;top:10px;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);color:#ffd9a0;font-size:11.5px;padding:3px 10px;border-radius:99px}
.wp-shade{position:absolute;inset:0;background:linear-gradient(transparent 40%,rgba(0,0,0,.82))}
.wp-meta{position:absolute;left:0;right:0;bottom:0;padding:30px 12px 10px;color:#fff}
.wp-meta b{display:block;font-size:14.5px}
.wp-meta span{font-size:12.5px;color:#cfd3e0;margin-top:3px;display:block}
.th-empty{text-align:center;color:var(--dim);font-size:13.5px;padding:26px 0 10px}
.th-empty a{margin-left:8px}
@media(max-width:860px){.th-stage{grid-template-columns:1fr}.th-deco{display:none}}
/* 剧场空位道具（场记板/胶片/灯） */
.th-props{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.th-props i{position:absolute;display:block}
.p-clap{width:56px;height:40px;border-radius:5px;background:linear-gradient(135deg,#fff3c4,#e6b93a);opacity:.16;box-shadow:0 4px 12px rgba(0,0,0,.5)}
.p-clap::before{content:"";position:absolute;left:6px;right:6px;top:0;height:5px;background:repeating-linear-gradient(45deg,#333 0 5px,#eee 5px 10px);border-radius:3px 3px 0 0}
.p-clap::after{content:"SCENE";position:absolute;inset:auto 0 3px 0;text-align:center;font:700 7px/9px Arial;color:#333;letter-spacing:2px}
.p-reel{width:34px;height:34px;border-radius:50%;background:radial-gradient(circle,#3a3a42 0 30%,#1b1b1f 31% 36%,transparent 37%),repeating-conic-gradient(rgba(255,255,255,.14) 0 14deg,transparent 14deg 24deg);opacity:.15;border:2px solid rgba(255,255,255,.2)}
.p-bulb{width:18px;height:26px;border-radius:10px 10px 4px 4px;background:radial-gradient(circle at 50% 30%,#fff8d6 0 25%,rgba(255,240,180,.25) 26% 60%,rgba(255,255,255,.06) 61%);opacity:.35;filter:blur(.2px)}
/* 大场记板水印（填充空洞） */
.p-clap.big{opacity:.085;transform-origin:center;filter:drop-shadow(0 6px 18px rgba(0,0,0,.6))}
@media(max-width:900px){.p-clap.big{opacity:.05}}

/* 剧场：标题+输入区 放大并居中 */
body[data-view="theatre"] .th-stage{grid-template-columns:1fr;max-width:1000px;margin:6px auto 26px}
body[data-view="theatre"] .th-deco{display:none}
body[data-view="theatre"] .th-create{text-align:center;display:flex;flex-direction:column;align-items:center;padding:30px 2px 10px}
body[data-view="theatre"] .th-create h1{font-size:clamp(42px,5.6vw,62px);line-height:1.16}
body[data-view="theatre"] .th-sub{font-size:14.5px;max-width:640px}
body[data-view="theatre"] .th-tabs{justify-content:center}
body[data-view="theatre"] .th-tab{padding:11px 24px;font-size:14.5px}
body[data-view="theatre"] .th-input{width:100%;max-width:880px;margin:6px auto}
body[data-view="theatre"] .th-input textarea{min-height:140px;font-size:19px;padding:20px 22px 46px;border-radius:18px;text-align:left}
body[data-view="theatre"] .th-opts{justify-content:center;gap:12px;margin:16px 0 18px}
body[data-view="theatre"] .th-opts .inp{min-width:130px;padding:12px 14px}
body[data-view="theatre"] .th-count{bottom:16px;right:22px;font-size:13.5px}
body[data-view="theatre"] .th-go{padding:16px 44px;font-size:19px;border-radius:14px}
/* ================= 高级感设计系统（全局精修） ================= */
::selection{background:color-mix(in srgb,var(--brand) 55%,transparent);color:#fff}
body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;letter-spacing:.15px}
h1,h2,h3{letter-spacing:.3px}
/* 顶栏：更精致的玻璃+渐变底线 */
.top{border-bottom:0;background:color-mix(in srgb,var(--bg) 78%,transparent)!important}
.top::after{content:"";position:absolute;left:8%;right:8%;bottom:0;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--brand2) 60%,transparent),transparent)}
.nav a{position:relative;transition:.22s;border-radius:10px}
.nav a.on,.nav a:hover{background:var(--soft,rgba(201,162,78,.14));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--brand2) 30%,transparent)}
/* 按钮：内高光+层次 */
.btn{background-image:linear-gradient(180deg,rgba(255,255,255,.18),transparent 45%),var(--grad);box-shadow:0 10px 24px -8px var(--btnShadow,rgba(201,162,78,.5)),inset 0 1px 0 rgba(255,255,255,.25)}
.btn.ghost{background:color-mix(in srgb,var(--bg2) 60%,transparent);backdrop-filter:blur(6px)}
.btn:hover{box-shadow:0 14px 30px -8px var(--btnShadow,rgba(201,162,78,.6)),inset 0 1px 0 rgba(255,255,255,.25)}
/* 卡片：更大圆角+精致描边+悬浮光 */
.mcard,.pcard,.wcard,.gcard,.cap,.eff{transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.mcard{border-radius:18px;border-color:color-mix(in srgb,var(--line) 70%,transparent)}
.mcard:hover,.pcard:hover{border-color:color-mix(in srgb,var(--brand2) 45%,transparent);box-shadow:0 22px 44px -18px rgba(0,0,0,.55),0 0 0 1px color-mix(in srgb,var(--brand) 18%,transparent)}
.mcard.on{box-shadow:0 18px 40px -16px var(--cardGlow,rgba(201,162,78,.4))}
/* 输入：聚焦光环 */
textarea,.inp{transition:border-color .22s,box-shadow .22s,background .22s}
textarea:focus,.inp:focus{border-color:color-mix(in srgb,var(--brand2) 70%,transparent);box-shadow:0 0 0 4px var(--soft,rgba(201,162,78,.16));background:color-mix(in srgb,var(--bg2) 85%,transparent)}
/* 标题层级 */
.page-h h1,.hero h1,.th-sec-h h2,.sec-h h2{font-weight:900}
.page-h h1{font-size:24px}
.sec-h h2{position:relative;padding-left:14px}
.sec-h h2::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:4px;height:18px;border-radius:3px;background:var(--grad);box-shadow:0 0 10px var(--btnShadow,rgba(201,162,78,.5))}
/* 分区标题更透气 */
.sec-h{margin:34px 0 16px}
/* 标签更精致 */
.tag{border-radius:99px;letter-spacing:.3px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
/* 灵感/作品媒体加光框 */
.gmedia img,.gmedia video,.wmedia img,.wmedia video{border-radius:12px 12px 0 0}
/* 表格 */
th{text-transform:none;letter-spacing:.4px;font-weight:600}
/* 提示条 */
.warnbar{border-radius:12px;backdrop-filter:blur(6px)}
/* 页脚 */
.foot{background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--bg2) 70%,transparent));border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent)}
/* 键盘可达焦点 */
a:focus-visible,.btn:focus-visible,.inp:focus-visible{outline:2px solid var(--brand2);outline-offset:2px}
/* 少动效偏好 */
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* ============ 2026-09-04 视觉评审 · 模型广场精修 ============ */
/* 卡片纵向弹性：价格统一钉底，消除同行错位 */
.mcard{display:flex;flex-direction:column}
.mcard .fee{margin-top:auto;padding-top:10px}
.mcard .ven{margin-top:3px}
/* 顶部导航：当前页更明确的“on”态（配合 setNav 修复） */
.nav a.on{color:#fff;font-weight:600}
/* 激活 Tab：柔和投影 + 顶部内高光 */
.tab.on{box-shadow:0 8px 20px -8px var(--btnShadow,rgba(201,162,78,.45)),inset 0 1px 0 rgba(255,255,255,.22)}
/* 页脚对比度：暗色 #565a85 → 语义中灰色（可读性达标） */
.foot{color:var(--dim)}
/* 无预览图封面：按厂商低饱和色相区分 + 内高光，打破整屏同质化 */
.mc-cover.grad{
  background:
    radial-gradient(95% 130% at 12% 0%,var(--gv,rgba(201,162,78,.42)),transparent 58%),
    radial-gradient(90% 120% at 96% 104%,var(--gv2,rgba(220,192,122,.34)),transparent 55%),
    linear-gradient(135deg,#222550,#16193a 72%);
  font-size:32px;
  color:#fff;
  text-shadow:0 5px 16px rgba(0,0,0,.42)
}
.mc-cover.grad::before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 1px 0 rgba(255,255,255,.09);pointer-events:none}
.mc-cover.gv0{--gv:rgba(201,162,78,.5);--gv2:rgba(220,192,122,.4)}
.mc-cover.gv1{--gv:rgba(34,211,238,.5);--gv2:rgba(59,130,246,.4)}
.mc-cover.gv2{--gv:rgba(96,165,250,.5);--gv2:rgba(45,212,191,.38)}
.mc-cover.gv3{--gv:rgba(45,212,191,.48);--gv2:rgba(16,185,129,.36)}
.mc-cover.gv4{--gv:rgba(251,191,36,.42);--gv2:rgba(251,146,60,.34)}
.mc-cover.gv5{--gv:rgba(244,114,182,.46);--gv2:rgba(192,132,252,.4)}
/* 计费说明行 */
.fee-key{font-size:12.5px;color:var(--dim);text-align:right;margin:-8px 0 4px;opacity:.9;letter-spacing:.2px}
/* 页面标题更紧凑 */
.page-h h1{line-height:1.3}
.page-h p{margin-top:8px;margin-bottom:2px}

/* ===== 对标升级：视频创作面板（chips / 分段控件 / 拖拽上传 / 进度 / 能力徽标） ===== */
.mini-act{float:right;font-size:12.5px;color:var(--brand2);border:1px solid var(--line);border-radius:99px;padding:2px 10px;text-decoration:none}
.mini-act:hover{background:rgba(201,162,78,.14);color:#fff}
.vchips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 2px}
.vchip{padding:6px 13px;border-radius:99px;border:1px solid var(--line);background:var(--card);color:var(--dim);font-size:13.5px;cursor:pointer;transition:.16s;user-select:none}
.vchip:hover{transform:translateY(-1px);color:#fff;border-color:rgba(220,192,122,.55)}
.vchip.on{color:#fff;border-color:transparent;background:var(--grad);box-shadow:0 4px 14px rgba(201,162,78,.32)}
.vopts{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 2px}
.vlabel{color:var(--dim);font-size:13.5px;min-width:44px}
.seg{display:inline-flex;background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:11px;padding:3px;gap:3px;flex-wrap:wrap}
.sg{padding:5px 12px;border-radius:8px;font-size:13.5px;color:var(--dim);cursor:pointer;transition:.16s;white-space:nowrap}
.sg:hover{color:#fff;background:rgba(255,255,255,.06)}
.sg.on{color:#fff;background:var(--grad);box-shadow:0 3px 10px rgba(201,162,78,.3)}
.switch{display:inline-flex;align-items:center;gap:9px;margin:10px 0 0;color:var(--txt);font-size:14.5px;cursor:pointer;user-select:none}
.switch input{display:none}
.switch i{width:40px;height:22px;border-radius:99px;background:rgba(255,255,255,.14);position:relative;transition:.22s;flex:0 0 auto}
.switch i::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.22s}
.switch input:checked + i{background:var(--grad)}
.switch input:checked + i::after{left:21px}
.vprice{margin:12px 0 2px;padding:9px 13px;border-radius:11px;border:1px dashed var(--line);background:rgba(201,162,78,.07);font-size:13.5px;color:var(--dim)}
.vprice b{color:var(--ok);font-size:14.5px}
.vtags{margin-left:10px;color:var(--brand2)}
.dz-row{display:flex;gap:12px;flex-wrap:wrap}
.dropzone{flex:1 1 200px;min-height:92px;border:1.5px dashed var(--line);border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;background:rgba(255,255,255,.02);transition:.16s;padding:12px}
.dropzone:hover,.dropzone.on{border-color:var(--brand2);background:rgba(201,162,78,.1);transform:translateY(-1px)}
.dropzone b{font-size:14.5px;color:#fff}
.dropzone span{font-size:12.5px;color:var(--dim)}
.dropzone em{font-style:normal;font-size:12.5px;color:var(--ok);max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dz-prev{display:flex;gap:12px;margin-top:10px;flex-wrap:wrap}
.dz-prev figure{margin:0;width:132px}
.dz-prev img{width:100%;border-radius:10px;border:1px solid var(--line);display:block}
.dz-prev figcaption{font-size:12.5px;color:var(--dim);text-align:center;margin-top:4px}
.progwrap{padding:18px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.03)}
.progbar{height:8px;border-radius:99px;background:rgba(255,255,255,.09);overflow:hidden}
.progbar i{display:block;height:100%;width:6%;border-radius:99px;background:var(--grad);transition:width 1s linear}
.progtxt{margin-top:11px;font-size:14.5px;color:var(--txt)}
.progtxt b{color:var(--brand2)}
.act-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:12px}
.cap-row{display:flex;gap:6px;flex-wrap:wrap;margin:2px 0 8px}
.cap{font-size:11.5px;color:var(--brand2);background:rgba(201,162,78,.13);border:1px solid rgba(201,162,78,.28);border-radius:7px;padding:2px 7px}
.prov{display:inline-block;font-size:11.5px;color:#fff;background:rgba(255,255,255,.1);border-radius:6px;padding:1px 6px;margin-right:7px}
.tag.rec{background:rgba(52,211,153,.16);color:#34d399;border:1px solid rgba(52,211,153,.3);margin-left:6px}
.mcard.recent{border-color:rgba(52,211,153,.35)}

/* ===== 参考图 / 批量 / 图片处理 / 广场互动 ===== */
.refgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.refgrid .dropzone{min-height:84px}
.editbox{margin-top:14px;padding-top:12px;border-top:1px dashed var(--line)}
.editcmp{display:flex;gap:14px;flex-wrap:wrap}
.editcmp figure{margin:0;flex:1 1 220px}
.editcmp img{width:100%;border-radius:12px;border:1px solid var(--line);display:block}
.editcmp figcaption{text-align:center;font-size:12.5px;color:var(--dim);margin-top:6px}
.gbody .act-row{gap:6px}

/* ===== 复刻板块：导航图标 / 提示词 / 素材库 / 工具箱 / 文档 / 任务 ===== */
.nav{gap:2px}
.nav>a,.nav-more{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border-radius:9px;color:var(--dim);font-size:13.5px;cursor:pointer;position:relative}
.nav>a:hover,.nav-more:hover{color:#fff;background:rgba(201,162,78,.16)}
.nav>a.on{color:#fff;background:rgba(201,162,78,.22)}
.ni{width:15px;height:15px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.nav-more .caret{width:12px;height:12px;opacity:.7}
.nm-menu{display:none;position:absolute;top:34px;right:0;min-width:196px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:6px;box-shadow:0 14px 40px rgba(0,0,0,.45);z-index:60}
.nav-more:hover .nm-menu{display:block}
.nm-menu a{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;color:var(--txt);font-size:13.5px}
.nm-menu a:hover{background:rgba(201,162,78,.16)}
.nm-menu .soon{margin-left:auto;font-style:normal;font-size:11.5px;color:var(--warn);border:1px solid rgba(251,191,36,.35);border-radius:6px;padding:0 5px}
.vic{width:16px;height:16px;vertical-align:-3px;margin-right:6px;border-radius:3px;background:rgba(255,255,255,.9);padding:1px}
.skill-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.skill-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;transition:.22s}
.skill-card:hover{transform:translateY(-2px);border-color:rgba(220,192,122,.5)}
.skill-card h3{font-size:16px;margin:6px 0 6px}
.skill-card p{color:var(--dim);font-size:13.5px;line-height:1.6}
.sc-pre{margin:10px 0;padding:10px;border-radius:10px;background:rgba(0,0,0,.25);border:1px dashed var(--line);color:var(--dim);font-size:12.5px;line-height:1.6;max-height:88px;overflow:hidden}
.asset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.asset-card{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.ac-media img,.ac-media video{width:100%;height:150px;object-fit:cover;display:block;background:#000}
.ac-meta{padding:10px 12px;display:flex;flex-direction:column;gap:3px}
.ac-meta b{font-size:13.5px}
.ac-meta span{color:var(--dim);font-size:11.5px}
.ac-meta .act-row{margin-top:7px}
.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}
.tool-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;cursor:pointer;transition:.22s}
.tool-card:hover{transform:translateY(-3px);border-color:rgba(220,192,122,.55);box-shadow:0 12px 30px rgba(0,0,0,.3)}
.tool-card.dim{opacity:.72;cursor:default}
.tool-card h3{margin:10px 0 6px;font-size:16px}
.tool-card p{color:var(--dim);font-size:13.5px;line-height:1.6;min-height:40px}
.tc-ico{width:42px;height:42px;border-radius:12px;background:var(--grad);display:flex;align-items:center;justify-content:center;font-size:19px}
.soon-tag,.soon-tag{display:inline-block;font-size:11.5px;color:var(--warn);border:1px solid rgba(251,191,36,.35);border-radius:7px;padding:2px 8px}
.doc-wrap{display:flex;gap:22px;align-items:flex-start}
.doc-nav{position:sticky;top:80px;display:flex;flex-direction:column;gap:2px;min-width:150px}
.doc-nav a{padding:7px 11px;border-radius:9px;color:var(--dim);font-size:13.5px}
.doc-nav a:hover,.doc-nav a.on{color:#fff;background:rgba(201,162,78,.18)}
.doc-body{flex:1;min-width:0;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px 22px}
.doc-body h2{font-size:16px;margin:18px 0 8px}
.doc-body h2:first-child{margin-top:0}
.doc-body p{color:var(--dim);line-height:1.75;font-size:14.5px}
.doc-code{background:rgba(0,0,0,.3);border:1px solid var(--line);border-radius:11px;padding:13px;overflow:auto;font-size:12.5px;line-height:1.7;color:#cbd5ff;white-space:pre}
.doc-list{margin:8px 0 0 18px;color:var(--dim);line-height:1.9;font-size:14.5px}
.tbl{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.tbl th,.tbl td{padding:11px 13px;text-align:left;font-size:13.5px;border-bottom:1px solid var(--line)}
.tbl th{color:var(--dim);font-weight:600;background:rgba(255,255,255,.03)}
.tbl tr:last-child td{border-bottom:0}
.soon-box{max-width:620px;margin:28px auto;text-align:center;background:var(--card);border:1px dashed var(--line);border-radius:20px;padding:44px 26px}
.sb-ico{font-size:46px}
.soon-box h2{margin:12px 0 8px}
.soon-box p{color:var(--dim)}
.sb-list{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:16px}
.sb-list span{font-size:12.5px;color:var(--brand2);background:rgba(201,162,78,.13);border:1px solid rgba(201,162,78,.28);border-radius:99px;padding:4px 12px}
@media(max-width:900px){.nav{overflow:auto}.doc-wrap{flex-direction:column}.doc-nav{position:static;flex-direction:row;overflow:auto}}

/* ===== 对标图片：浅色主题（主色 #7B61FF） ===== */
html[data-theme="light"]{
  --bg:#ffffff; --bg2:#f7f8fa; --card:#ffffff; --line:#e5e6eb; --txt:#1d2129; --dim:#86909c;
  --brand:#C9A24E; --brand2:#6a4fe8; --grad:linear-gradient(135deg,#C9A24E,#6a4fe8);
  --ok:#52c41a; --warn:#faad14; --err:#ff4d4f;
}
html[data-theme="light"] body{background:#ffffff;color:var(--txt)}
html[data-theme="light"] .top{background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);backdrop-filter:blur(10px)}
html[data-theme="light"] .side{background:#fff;border-right:1px solid var(--line)}
html[data-theme="light"] .mcard,html[data-theme="light"] .box,html[data-theme="light"] .pan,html[data-theme="light"] .chip,html[data-theme="light"] .seg,html[data-theme="light"] .vchip,html[data-theme="light"] .asset-card,html[data-theme="light"] .tool-card,html[data-theme="light"] .skill-card,html[data-theme="light"] .soon-box,html[data-theme="light"] .tbl{background:#fff}
html[data-theme="light"] .mcard:hover,html[data-theme="light"] .asset-card:hover,html[data-theme="light"] .tool-card:hover{box-shadow:0 2px 8px rgba(0,0,0,.08);border-color:#d9dbe1}
html[data-theme="light"] .nav>a:hover,html[data-theme="light"] .nav-more:hover{background:#f7f8fa;color:#1d2129}
html[data-theme="light"] .vprice{background:#f5f1ff;border-color:#e0d7ff;color:#4e5969}
html[data-theme="light"] .progbar{background:#f2f3f5}
html[data-theme="light"] .sc-pre{background:#f7f8fa;color:#4e5969}
html[data-theme="light"] .doc-code{background:#f7f8fa;color:#1d2129}
html[data-theme="light"] .doc-body{background:#fff}
html[data-theme="light"] .nm-menu{background:#fff;box-shadow:0 8px 24px rgba(0,0,0,.12)}
html[data-theme="light"] .nm-menu a{color:#1d2129}
html[data-theme="light"] .nm-menu a:hover{background:#f7f8fa}
html[data-theme="light"] .switch i{background:#e5e6eb}
html[data-theme="light"] .dropzone{background:#f7f8fa;border-color:#c9cdd4}
html[data-theme="light"] .side-user{background:#f7f8fa}
html[data-theme="light"] .foot{color:#86909c;border-top:1px solid var(--line)}
html[data-theme="light"] .thd{background:#e5e6eb}

/* ===== 对标图片：左侧 280px 侧边栏 + 顶部 64px 通栏 ===== */
.app{display:flex;min-height:100vh}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.side{width:280px;flex:0 0 280px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:var(--bg2);border-right:1px solid var(--line);padding:14px 12px}
.side-brand{display:flex;align-items:center;gap:8px;padding:6px 8px 14px;font-size:16px}
.side-brand .logo{width:28px;height:28px;border-radius:9px;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800}
.side-brand .ver{font-style:normal;font-size:11.5px;color:var(--dim);background:rgba(125,125,125,.12);border-radius:6px;padding:1px 6px}
.side-nav{display:flex;flex-direction:column;gap:2px}
.side-nav a{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:8px;color:var(--txt);font-size:14.5px;font-weight:500}
.side-nav a:hover{background:var(--bg2)}
.side-nav a.on{background:#f5f1ff;color:var(--brand)}
html[data-theme="light"] .side-nav a.on{background:#f5f1ff;color:#C9A24E;box-shadow:inset 2px 0 0 #C9A24E}
.side-nav a .hot{margin-left:auto;font-style:normal;font-size:11.5px;color:#fff;background:#ff4d4f;border-radius:5px;padding:1px 5px}
.side-sub{display:flex;gap:4px;flex-wrap:wrap;padding:12px 6px 8px;border-bottom:1px solid var(--line);margin-bottom:8px}
.side-sub a{font-size:13.5px;color:var(--dim);padding:4px 10px;border-radius:99px;cursor:pointer}
.side-sub a:hover{background:var(--bg2)}
.side-sub a.on{color:#fff;background:var(--brand)}
.side-filter{display:flex;flex-direction:column;gap:8px;padding:0 4px 8px}
.side-filter select,.side-filter input{width:100%;height:34px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--txt);padding:0 10px;font-size:13.5px;outline:none}
.side-models{flex:1;overflow:auto;padding:2px 2px 8px}
.sm-item{display:flex;align-items:center;gap:9px;padding:9px 8px;border-radius:8px;cursor:pointer;border:1px solid transparent}
.sm-item:hover{background:var(--bg2)}
.sm-item.on{background:#f5f1ff;border-color:#e0d7ff}
.sm-item img{width:20px;height:20px;border-radius:5px;background:#fff;padding:1px;flex:0 0 auto}
.sm-ico{width:20px;height:20px;border-radius:5px;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12.5px;flex:0 0 auto}
.sm-txt{flex:1;min-width:0}
.sm-txt b{display:block;font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sm-txt span{font-size:11.5px;color:var(--dim)}
.sm-rate{font-size:11.5px;color:#52c41a;background:rgba(82,196,26,.12);border-radius:5px;padding:1px 5px;flex:0 0 auto}
.side-user{border-radius:10px;padding:10px;display:flex;align-items:center;gap:9px}
.side-user .ava{width:30px;height:30px;border-radius:50%;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13.5px}
.side-user .su-txt{flex:1;min-width:0}
.side-user .su-txt b{font-size:13.5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-user .su-txt span{font-size:11.5px;color:var(--dim)}
.side-user .tag{font-size:11.5px}
.top{position:sticky;top:0;z-index:50;height:64px;background:rgba(10,11,22,.82);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.top .top-in{display:flex;align-items:center;justify-content:space-between;gap:16px;height:64px;padding:0 20px;max-width:none}
.crumb{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--dim)}
.crumb a{color:var(--dim)}
.crumb a:hover{color:var(--txt)}
.crumb i{font-style:normal;opacity:.6}
.crumb span{color:var(--txt);font-weight:600}
.top-acts{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}
.top-acts .ta{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--dim);padding:7px 10px;border-radius:8px;white-space:nowrap}
.top-acts .ta:hover{background:var(--bg2);color:var(--txt)}
.top-acts .ta.promo{color:#fff;background:var(--grad);font-weight:600}
.ticons{display:inline-flex;align-items:center;gap:4px}
.tib{width:32px;height:32px;border-radius:8px;border:0;background:transparent;color:var(--dim);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.tib:hover{background:var(--bg2);color:var(--txt)}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--grad);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13.5px;font-weight:700}
.main .wrap{max-width:1320px;width:100%;margin:0 auto;padding:0 24px}
@media(max-width:1100px){.side{display:none}.main .wrap{padding:0 14px}}

/* ===== 底部固定创作栏（对标图片） ===== */
.composer{display:none;position:fixed;left:280px;right:0;bottom:0;z-index:90;background:var(--card);border-top:1px solid var(--line);box-shadow:0 -6px 24px rgba(0,0,0,.06);padding:10px 20px}
.cmp-inner{display:flex;align-items:center;gap:14px;max-width:1320px;margin:0 auto}
.cmp-left{display:flex;flex-direction:column;gap:3px;min-width:200px}
.cmp-model{font-size:13.5px;font-weight:600}
.cmp-tag{font-size:11.5px;color:var(--brand);background:#f5f1ff;border-radius:6px;padding:1px 6px;align-self:flex-start}
.cmp-params{display:flex;gap:10px;font-size:11.5px;color:var(--dim);flex-wrap:wrap}
.cmp-price{color:var(--ok);font-weight:600}
.cmp-sheet{display:flex;gap:4px;background:var(--bg2);border-radius:8px;padding:3px}
.cmp-tab{font-size:12.5px;color:var(--dim);padding:5px 10px;border-radius:6px;cursor:pointer;white-space:nowrap}
.cmp-tab.on{background:var(--card);color:var(--brand);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.cmp-right{flex:1;display:flex;align-items:center;gap:8px;min-width:0}
.cmp-input{flex:1;min-width:120px;height:38px;max-height:96px;resize:vertical;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--txt);padding:9px 12px;font-size:13.5px;outline:none;font-family:inherit}
.cmp-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(201,162,78,.12)}
@media(max-width:1100px){.composer{left:0}}

/* 悬浮客服按钮（对标图片：右侧居中 48px 紫色圆） */
.fab{position:fixed;right:24px;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;z-index:95;box-shadow:0 8px 24px rgba(201,162,78,.4)}
.fab:hover{filter:brightness(1.06);transform:translateY(-50%) scale(1.05)}
.fab .ni{width:20px;height:20px}

/* ===== 对话界面（对标图片：AI 左气泡 / 用户右气泡 / 底部输入区） ===== */
.chat-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.chat-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--card);margin-bottom:14px}
.ch-left{display:flex;align-items:center;gap:10px;min-width:0}
.ch-ava{width:34px;height:34px;border-radius:8px;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;flex:0 0 auto}
.ch-left b{display:block;font-size:14.5px}
.ch-left span{font-size:12.5px;color:var(--dim)}
.ch-right{display:flex;gap:8px;flex:0 0 auto}
.chat-body{min-height:calc(100vh - 420px);padding:8px 4px 230px;display:flex;flex-direction:column;gap:24px;overflow:auto}
.chat-welcome{margin:auto;text-align:center;max-width:640px;padding:26px}
.cw-ico{width:56px;height:56px;border-radius:16px;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;margin:0 auto 14px}
.chat-welcome h2{font-size:19px;font-weight:600;margin-bottom:8px}
.chat-welcome p{color:var(--dim);font-size:14.5px;line-height:1.7}
.cw-tips{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:16px}
.cw-tips span{font-size:12.5px;color:var(--dim);background:var(--bg2);border:1px solid var(--line);border-radius:99px;padding:4px 12px}
.msg{display:flex;gap:12px;max-width:760px}
.msg.ai{align-self:flex-start}
.msg.me{align-self:flex-end;flex-direction:row-reverse}
.m-ava{width:32px;height:32px;border-radius:4px;background:var(--bg2);border:1px solid var(--line);color:var(--txt);display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700;flex:0 0 auto}
.msg.me .m-ava{background:var(--brand);border-color:transparent;color:#fff}
.m-main{min-width:0}
.m-meta{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:12.5px;color:var(--dim)}
.msg.me .m-meta{flex-direction:row-reverse}
.m-meta b{font-size:12.5px;color:var(--txt);font-weight:600}
.m-bub{background:var(--card);border:1px solid #E9E5FF;border-radius:8px;padding:16px;font-size:14.5px;line-height:1.75;color:#4E5969;word-break:break-word}
html:not([data-theme="light"]) .m-bub{border-color:var(--line);color:var(--txt)}
.msg.me .m-bub{background:#7B61FF;border-color:transparent;color:#fff}
.m-bub h2,.m-bub h3,.m-bub h4{color:#1D2129;margin:10px 0 6px;font-weight:600}
html:not([data-theme="light"]) .m-bub h2,html:not([data-theme="light"]) .m-bub h3,html:not([data-theme="light"]) .m-bub h4{color:var(--txt)}
.m-bub h2{font-size:19px}.m-bub h3{font-size:16px}.m-bub h4{font-size:14.5px}
.msg.me .m-bub h2,.msg.me .m-bub h3,.msg.me .m-bub h4{color:#fff}
.m-code{background:#282C34;color:#fff;border-radius:4px;padding:12px;margin:10px 0;overflow:auto;font-size:12.5px;line-height:1.7;white-space:pre-wrap}
.m-li{margin:3px 0}
.m-acts{display:flex;gap:8px;margin-top:8px;opacity:0;transition:.22s}
.msg:hover .m-acts{opacity:1}
.m-acts button{border:1px solid var(--line);background:transparent;color:var(--dim);font-size:12.5px;border-radius:6px;padding:3px 9px;cursor:pointer}
.m-acts button:hover{color:var(--brand);border-color:#E9E5FF;background:#F5F1FF}
.dot-flash{display:inline-flex;gap:4px;align-items:center;height:20px}
.dot-flash i{width:6px;height:6px;border-radius:50%;background:var(--brand);opacity:.35;animation:ycDot 1.2s infinite}
.dot-flash i:nth-child(2){animation-delay:.2s}.dot-flash i:nth-child(3){animation-delay:.4s}
@keyframes ycDot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.cmp-inner.cc{display:flex;flex-direction:column;gap:8px;max-width:1320px;margin:0 auto}
.cc-tool{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--dim)}
.cc-tabs{display:flex;gap:4px;background:var(--bg2);border-radius:8px;padding:3px}
.cc-model{font-weight:600;color:var(--txt);font-size:13.5px}
.cc-right-meta{margin-left:auto}
.cc-input{display:flex;align-items:flex-end;gap:10px}
.cc-input .cmp-input{min-height:80px;flex:1;border-color:#F0F2F5;padding:16px;font-size:14.5px;border-radius:8px}
.cc-input .cmp-input::placeholder{font-size:13.5px;color:#86909C}
.cc-send{display:flex;align-items:center;gap:8px;padding-bottom:4px}
.cc-count{font-size:12.5px;color:var(--dim);min-width:44px;text-align:right}
html:not([data-theme="light"]) .cc-input .cmp-input{border-color:var(--line)}

/* ===== 对话区/输入框加宽到界面两边 ===== */
body[data-view="create"] .main .wrap{max-width:none;width:100%;padding:0 16px}
.chat-body{padding:8px 0 240px}
.msg{max-width:none;width:100%}
.msg .m-main{flex:1;min-width:0}
.msg .m-bub{width:100%}
.cmp-inner,.cmp-inner.cc{max-width:none;width:100%}
.composer{padding:10px 16px}

/* 输入行拉满（修正 align-items:center 导致的收缩） */
.cmp-inner.cc{align-items:stretch}
.cmp-inner.cc .cc-tool{width:100%}
.cmp-inner.cc .cc-input{width:100%}
.cmp-inner.cc .cc-input .cmp-input{width:auto;flex:1 1 auto;min-width:0}

/* ===== 页脚固定到界面最底部 ===== */
.main{min-height:100vh}
.foot{margin-top:auto;padding-top:18px;padding-bottom:18px;text-align:center;color:var(--dim);font-size:12.5px;border-top:1px solid var(--line)}
.foot div{opacity:.9}
/* 创作页有固定底部创作栏：给页脚留出空间，滚到底可见 */
body[data-view="create"] .foot{padding-bottom:230px}
@media(max-width:1100px){body[data-view="create"] .foot{padding-bottom:240px}}

/* 修正：.main .wrap 的 margin:0 auto 覆盖了 margin-top:auto */
.main > .foot{margin:auto auto 0;width:100%}
body[data-view="create"] .main > .foot{padding-bottom:230px}

/* 版权行放进底部对话框内（创作栏最下方） */
.cmp-foot{margin-top:8px;padding-top:7px;border-top:1px solid var(--line);text-align:center;font-size:12.5px;color:var(--dim)}
body[data-view="create"] .main > .foot{display:none}

/* 通用创作栏与对话界面统一：模型/参数行在输入框上方，右对齐 */
.cmp-inner.cc .cc-tool .cc-model{font-weight:600;color:var(--txt)}
.cmp-inner.cc .cc-tool .cc-right-meta{margin-left:auto;font-size:12.5px;color:var(--dim)}

/* ===== 文生图/视频 也改成对话式界面：隐藏旧标题与模型网格，右侧改为结果流 ===== */
body.studio .page-h{display:none}
body.studio #mgrid{display:none}
body.studio .sec-h{display:none}
body.studio .work{display:block;margin-top:8px}
body.studio .work>.pan:first-child{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px}
body.studio .work>.pan:last-child{background:transparent;border:0;padding:0}
body.studio .studio-head{display:flex;align-items:center;gap:10px;padding:2px 2px 12px;border-bottom:1px solid var(--line);margin-bottom:14px}
body.studio .studio-head b{display:block;font-size:14.5px}
body.studio .studio-head span{font-size:12.5px;color:var(--dim)}
body.studio .feed-pan .chat-body{padding:0 0 20px;min-height:200px}
.m-media{padding:10px}
.m-media img,.m-media video{width:100%;border-radius:6px;display:block}
.mp-btn{border:1px solid var(--line);background:transparent;color:var(--dim);font-size:12.5px;border-radius:6px;padding:3px 9px;cursor:pointer;text-decoration:none}
.mp-btn:hover{color:var(--brand);border-color:#E9E5FF;background:#F5F1FF}
body.studio .cmp-foot{display:block}

/* 侧栏模型卡：成功率 / 徽章 / 收藏 */
.sm-item{flex-wrap:wrap}
.sm-rate{font-size:11.5px;color:#52c41a;background:rgba(82,196,26,.12);border-radius:5px;padding:1px 5px;flex:0 0 auto}
.sm-badges{display:flex;gap:3px;flex:0 0 auto}
.sm-bdg{font-style:normal;font-size:11.5px;color:#C9A24E;background:#f5f1ff;border:1px solid #e9e5ff;border-radius:4px;padding:0 4px}
.sm-bdg.hot{color:#fff;background:#ff4d4f;border-color:transparent}
.sm-fav{font-size:12.5px;color:var(--dim);cursor:pointer;flex:0 0 auto;padding:0 2px}
.sm-fav.on{color:#faad14}
.sm-txt span{display:block;font-size:11.5px;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 创作栏快捷行（对标：资产/批量导入/灵感 + 稳定优先 + 画质档） */
.cc-quick{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--dim);padding:2px 0 2px}
.cc-quick a{color:var(--dim);border:1px solid var(--line);border-radius:6px;padding:3px 10px;text-decoration:none}
.cc-quick a:hover{color:var(--brand);border-color:#E9E5FF;background:#F5F1FF}
.cc-quick .cq-sep{flex:1}
.cq-chip{border:1px solid var(--line);border-radius:6px;padding:3px 10px;background:var(--bg2)}

/* ===== 创作栏对标补充：模式/道具/工具条/弹窗 ===== */
.cc-modes{display:flex;gap:4px;background:var(--bg2);border-radius:8px;padding:3px;align-self:flex-start}
.cc-modes .cmp-tab{cursor:pointer}
.cc-props{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--dim)}
.cc-props .cq-price{color:var(--ok);font-weight:600}
.cc-switch{cursor:pointer;border:1px solid var(--line);border-radius:6px;padding:2px 8px}
.cc-switch:hover{color:var(--brand);border-color:#E9E5FF;background:#F5F1FF}
.cc-refcnt{border:1px solid var(--line);border-radius:6px;padding:2px 8px}
.cc-tools{display:flex;gap:6px;flex-wrap:wrap}
.cc-tools button{border:1px solid var(--line);background:transparent;color:var(--dim);font-size:12.5px;border-radius:6px;padding:3px 9px;cursor:pointer}
.cc-tools button:hover{color:var(--brand);border-color:#E9E5FF;background:#F5F1FF}
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}
.modal-box{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;width:min(880px,100%)}
.mb-head{display:flex;align-items:center;justify-content:space-between;font-weight:600;margin-bottom:10px}
.modal-box textarea{width:100%;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--txt);padding:12px;font-size:14.5px;line-height:1.7;font-family:inherit;resize:vertical;outline:none}
/* 无限画布 */
.cv-board{position:relative;height:70vh;border:1px solid var(--line);border-radius:14px;overflow:auto;background:var(--card)}
.cv-grid{position:absolute;inset:0;background-image:radial-gradient(rgba(125,125,125,.25) 1px,transparent 1px);background-size:22px 22px}
.cv-items{position:absolute;inset:0}
.cv-card{position:absolute;width:210px;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:0 6px 18px rgba(0,0,0,.08)}
.cv-card img,.cv-card video{width:100%;height:130px;object-fit:cover;display:block;background:#000}
.cv-card span{display:block;font-size:11.5px;color:var(--dim);padding:6px 8px}
/* 一键漫剧 */
.comic-wrap{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}
.comic-form{flex:1 1 380px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px}
.comic-preview{flex:1 1 420px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;min-height:300px}
.comic-form textarea{width:100%;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--txt);padding:12px;font-size:14.5px;font-family:inherit;outline:none;resize:vertical}
.comic-panels{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.cpanel{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--bg2)}
.cp-no{font-size:11.5px;color:var(--brand);margin-bottom:6px}
.cp-scene{font-size:13.5px;line-height:1.65}
.cp-meta{font-size:11.5px;color:var(--dim);margin-top:6px}
/* 3D 导演台 */
.dir-wrap{display:flex;gap:16px;flex-wrap:wrap}
.dir-stage{position:relative;flex:1 1 460px;height:420px;border:1px solid var(--line);border-radius:14px;background:radial-gradient(600px 300px at 50% 110%,rgba(201,162,78,.18),transparent),var(--card);overflow:hidden;perspective:600px}
.ds-floor{position:absolute;left:50%;bottom:60px;width:420px;height:220px;transform:translateX(-50%) rotateX(62deg);background:repeating-linear-gradient(90deg,rgba(125,125,125,.25) 0 1px,transparent 1px 42px),repeating-linear-gradient(0deg,rgba(125,125,125,.25) 0 1px,transparent 1px 42px);border:1px solid var(--line)}
.ds-actor{position:absolute;left:50%;bottom:150px;transform:translateX(-50%);font-size:44px}
.ds-cam{position:absolute;left:22%;bottom:120px;font-size:32px}
.ds-tip{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);font-size:12.5px;color:var(--dim)}
.dir-panel{flex:1 1 340px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px}

/* 侧栏「更多功能」区（新板块入口） */
.side-more{display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:6px 2px 8px;border-bottom:1px solid var(--line);margin-bottom:8px}
.side-more a{display:flex;align-items:center;gap:6px;padding:6px 7px;border-radius:7px;color:var(--dim);font-size:12.5px;white-space:nowrap;overflow:hidden}
.side-more a:hover{background:var(--bg2);color:var(--txt)}
.side-more .soon{margin-left:auto;font-style:normal;font-size:11.5px;color:var(--warn);border:1px solid rgba(250,173,20,.35);border-radius:4px;padding:0 3px}
.side-more .ni{width:13px;height:13px}

/* 第三批样式：上传位/置顶行/侧栏收起/站长推荐徽章 */
.cc-uploads{display:flex;gap:6px;flex-wrap:wrap}
.cc-uploads .cmp-tab{cursor:pointer}
.sh-right{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.sm-bdg.rec{color:#fff;background:#C9A24E;border-color:transparent}
.side-toggle{margin-left:auto;border:1px solid var(--line);background:transparent;color:var(--dim);border-radius:6px;width:22px;height:22px;line-height:1;cursor:pointer}
.side-toggle:hover{color:var(--brand);border-color:#E9E5FF}
body.side-collapsed .side{width:64px;flex:0 0 64px;padding:14px 6px}
body.side-collapsed .side-brand b,body.side-collapsed .side-brand .ver,body.side-collapsed .side-nav a span,body.side-collapsed .side-more,body.side-collapsed .side-sub,body.side-collapsed .side-filter,body.side-collapsed .sm-txt,body.side-collapsed .sm-rate,body.side-collapsed .sm-badges,body.side-collapsed .sm-fav,body.side-collapsed .side-user .su-txt,body.side-collapsed .side-user .tag{display:none}
body.side-collapsed .side-nav a,body.side-collapsed .sm-item{justify-content:center}
body.side-collapsed .composer{left:64px}
body.side-collapsed .main .wrap{max-width:none}

/* 第四批：收起输入区 / 素材库收藏夹 */
.composer.min .cc-quick,.composer.min .cc-tools,.composer.min .cc-uploads,.composer.min .cc-input{display:none}
.composer.min{padding:8px 16px}
#asImport{border-style:dashed}

/* 旧参数卡片默认隐藏，改为创作栏「⚙ 参数与素材」弹出面板 */
body.studio .work > .pan:first-child{display:none}
body.studio .work > .pan:first-child.mopen{display:block;position:fixed;left:280px;right:0;top:64px;bottom:0;z-index:120;overflow:auto;background:var(--card);border:0;border-radius:0;padding:22px;margin:0}
body.studio.side-collapsed .work > .pan:first-child.mopen{left:64px}
.mp-close{position:sticky;top:0;float:right;z-index:2;margin-bottom:8px}

/* 侧栏模型名完整显示（不截断，允许换行） */
.side-models .sm-item{align-items:flex-start;padding:9px 8px}
.side-models .sm-txt{flex:1 1 auto;min-width:0}
.side-models .sm-txt b{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.35;word-break:break-word;display:block}
.side-models .sm-txt span{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.4;word-break:break-word}
.side-models .sm-rate,.side-models .sm-fav{margin-top:1px}
.side-models .sm-badges{flex-wrap:wrap;max-width:100%}

/* 真·无限画布 */
.cv-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.cv-zoom{margin-left:auto;display:flex;align-items:center;gap:6px}
.cv-viewport{position:relative;height:72vh;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--bg2);cursor:grab;touch-action:none}
.cv-viewport.grab{cursor:grabbing}
.cv-world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.cv-grid{position:absolute;left:-2000px;top:-2000px;width:8000px;height:8000px;background-image:radial-gradient(rgba(125,125,125,.28) 1px,transparent 1px);background-size:22px 22px}
.cv-items{position:absolute;left:0;top:0}
.cv-card{position:absolute;width:210px;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:0 6px 18px rgba(0,0,0,.1);cursor:move;user-select:none}
.cv-card:hover{border-color:#E9E5FF;box-shadow:0 10px 26px rgba(201,162,78,.18)}
.cv-card img,.cv-card video{width:100%;height:130px;object-fit:cover;display:block;background:#000;pointer-events:none}
.cv-card .ph{height:130px;display:flex;align-items:center;justify-content:center;color:var(--dim);font-size:13.5px;padding:10px;text-align:center}
.cv-card span{display:block;font-size:11.5px;color:var(--dim);padding:6px 8px;pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cv-del{position:absolute;right:6px;top:6px;width:22px;height:22px;border-radius:50%;border:0;background:rgba(0,0,0,.5);color:#fff;cursor:pointer;line-height:1;font-size:12.5px}
.cv-del:hover{background:#ff4d4f}

/* 无限画布进阶：多选 / 连线 / 导出 */
.cv-links{position:absolute;left:-4000px;top:-4000px;overflow:visible;pointer-events:none}
.cv-link{fill:none;stroke:rgba(201,162,78,.75);stroke-width:2;stroke-dasharray:6 4}
.cv-link.temp{stroke:#ff4d4f;stroke-dasharray:4 4}
.cv-card.sel{border-color:#C9A24E;box-shadow:0 0 0 2px rgba(201,162,78,.35),0 10px 26px rgba(201,162,78,.2)}
.cv-handle{position:absolute;right:-7px;top:56px;width:14px;height:14px;border-radius:50%;background:#C9A24E;border:2px solid #fff;cursor:crosshair;display:block}
.cv-handle:hover{transform:scale(1.2)}
.btn.on{color:#fff;background:var(--grad);border-color:transparent}

/* 文本节点 */
.cv-card .cv-text{min-height:130px;padding:12px;font-size:13.5px;line-height:1.6;color:var(--txt);white-space:pre-wrap;word-break:break-word;background:linear-gradient(135deg,rgba(251,191,36,.12),rgba(201,162,78,.10))}
.cv-card .cv-text::-webkit-scrollbar{width:6px}

/* 画布右键菜单 */
.cv-menu{position:fixed;z-index:300;min-width:190px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:6px;box-shadow:0 12px 34px rgba(0,0,0,.18)}
.cv-menu .cvm-title{font-size:11.5px;color:var(--dim);padding:6px 10px 4px}
.cv-menu button,.cv-menu .cvm-a{display:block;width:100%;text-align:left;border:0;background:transparent;color:var(--txt);font-size:13.5px;padding:8px 10px;border-radius:8px;cursor:pointer;text-decoration:none}
.cv-menu button:hover,.cv-menu .cvm-a:hover{background:#F5F1FF;color:var(--brand)}

/* 拼贴网格 */
.cg-grid{display:grid;gap:6px;margin-top:12px}
.cg-grid.t-2x2{grid-template-columns:1fr 1fr}
.cg-grid.t-1x2{grid-template-columns:1fr}
.cg-grid.t-2x1{grid-template-columns:1fr 1fr}
.cg-grid.t-3x3{grid-template-columns:repeat(3,1fr)}
.cg-cell{aspect-ratio:1/1;border:1px dashed var(--line);border-radius:10px;background:var(--card);display:flex;align-items:center;justify-content:center;color:var(--dim);font-size:12.5px;overflow:hidden}
.cg-cell img{width:100%;height:100%;object-fit:cover}

/* ===== 全景查看器 ===== */
.pano-stage{position:relative;width:100%;aspect-ratio:2/1;background:#0c0c14;border:1px solid var(--line);border-radius:14px;overflow:hidden;cursor:grab}
.pano-stage:active{cursor:grabbing}
.pano-stage canvas{display:block;width:100%;height:100%}
.pano-hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#9C968C;font-size:14.5px;pointer-events:none}
.pn-auto{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--dim)}
.pn-auto input{accent-color:var(--brand)}
/* ===== 导演台设定板 ===== */
.board-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:16px;margin-top:16px}
.board{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px}
.bd-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.bd-h h3{margin:0;font-size:14.5px}
.bd-row{display:grid;grid-template-columns:110px 110px 1fr 1fr auto;gap:6px;align-items:center;margin-bottom:8px}
.bd-row .inp{min-width:0}
@media (max-width:900px){.bd-row{grid-template-columns:1fr 1fr;}.bd-row .btn{grid-column:span 2}}

/* ===== 素材库文件夹树 ===== */
.asset-wrap{display:flex;gap:16px;align-items:flex-start}
.asset-tree{width:212px;flex:0 0 212px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px}
.asset-main{flex:1;min-width:0}
.tree-a{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 10px;border-radius:9px;font-size:13.5px;color:var(--txt);cursor:pointer;text-decoration:none}
.tree-a:hover{background:var(--soft,rgba(201,162,78,.10))}
.tree-a.on{background:var(--grad);color:#fff}
.tree-h{margin:12px 4px 6px;font-size:12.5px;color:var(--dim)}
.tree-empty{font-size:12.5px;color:var(--dim);padding:4px 10px}
.tree-del{border:0;background:transparent;color:inherit;opacity:.5;cursor:pointer;font-size:11.5px;line-height:1}
.tree-del:hover{opacity:1}
.fp-list{max-height:260px;overflow:auto;margin:8px 0}
.fp-item{display:flex;align-items:center;gap:8px;padding:6px 4px;font-size:13.5px}
@media (max-width:900px){.asset-wrap{flex-direction:column}.asset-tree{width:100%;flex:auto}}

/* ===== 通用站内弹窗 ===== */
.ux-msg{font-size:14.5px;color:var(--txt);margin:10px 0;line-height:1.6}

/* ===== 无限画布增强 ===== */
.cv-tools{position:absolute;left:6px;top:6px;display:flex;gap:4px;opacity:0;transition:.16s}
.cv-card:hover .cv-tools{opacity:1}
.cv-tools button{width:24px;height:24px;border-radius:7px;border:0;background:rgba(0,0,0,.55);color:#fff;cursor:pointer;font-size:12.5px;line-height:1;display:flex;align-items:center;justify-content:center}
.cv-tools button:hover{background:var(--brand)}
.cv-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;pointer-events:none;padding:20px}
.cv-empty .ce-ico{font-size:34px;opacity:.9}
.cv-empty h3{margin:2px 0;font-size:16px;color:var(--txt)}
.cv-empty p{margin:0 0 12px;font-size:12.5px;color:var(--dim);max-width:420px;line-height:1.7}
.cv-empty .act-row{pointer-events:auto}
.cv-mini{position:absolute;right:14px;bottom:14px;width:168px;height:112px;background:rgba(20,20,30,.72);border:1px solid var(--line);border-radius:10px;backdrop-filter:blur(6px);cursor:pointer;display:none;overflow:hidden}
.cv-mini i{position:absolute;background:rgba(255,255,255,.55);border-radius:2px}
.cv-mini b{position:absolute;border:1.5px solid var(--brand);border-radius:2px;background:rgba(201,162,78,.18)}
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;margin-top:6px}
.tpl-card{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;transition:.16s}
.tpl-card:hover{border-color:var(--brand);box-shadow:0 8px 22px rgba(201,162,78,.16);transform:translateY(-2px)}
.tpl-card b{display:block;font-size:14.5px;color:var(--txt);margin-bottom:4px}
.tpl-card span{display:block;font-size:12.5px;color:var(--dim);line-height:1.6}
button:disabled{opacity:.45;cursor:not-allowed}

/* ===== ICP 备案号 ===== */
.foot-icp{margin-top:6px;font-size:12.5px}
.foot-icp a,.cmp-foot a{color:inherit;text-decoration:none;border-bottom:1px dotted currentColor}
.foot-icp a:hover,.cmp-foot a:hover{color:var(--brand);border-bottom-color:var(--brand)}

/* ===== 媒体工具 / 音乐工坊 / 团队协作 ===== */
.tool-wrap{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}
.tool-panel{flex:1 1 380px;min-width:320px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px}
.tool-preview{flex:1 1 380px;min-width:320px;background:var(--bg2);border:1px solid var(--line);border-radius:14px;padding:14px;min-height:280px}
.tool-preview .tp-box{position:relative;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--card);text-align:center}
.tool-preview .tp-box img{display:block;width:100%;max-height:420px;object-fit:contain;background:#fff}
.tool-preview .tp-box.checker{background-image:linear-gradient(45deg,#e9e9ef 25%,transparent 25%),linear-gradient(-45deg,#e9e9ef 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#e9e9ef 75%),linear-gradient(-45deg,transparent 75%,#e9e9ef 75%);background-size:18px 18px;background-position:0 0,0 9px,9px -9px,-9px 0}
.tool-preview .tp-tag{position:absolute;left:10px;top:10px;background:rgba(0,0,0,.6);color:#fff;font-size:12.5px;padding:3px 9px;border-radius:999px}
.tp-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}
.tp-pair>div{position:relative;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card)}
.tp-pair>div.wide{grid-column:1 / -1}
.tp-pair img{display:block;width:100%;max-height:340px;object-fit:contain}
.tp-pair span{position:absolute;left:8px;top:8px;background:rgba(0,0,0,.6);color:#fff;font-size:11.5px;padding:2px 8px;border-radius:999px}
.wp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;max-height:60vh;overflow:auto;padding:4px}
.wp-item{display:block;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:6px;cursor:pointer;text-align:left}
.wp-item:hover{border-color:var(--brand)}
.wp-media{position:relative;display:block;border-radius:8px;overflow:hidden;background:#000}
.wp-media img,.wp-media video{display:block;width:100%;height:96px;object-fit:cover}
.wp-media i{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#fff;font-size:19px;text-shadow:0 2px 8px rgba(0,0,0,.6)}
.wp-meta{display:block;font-size:11.5px;color:var(--dim);padding:5px 2px 1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vm-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.vm-row{display:flex;align-items:center;gap:10px;background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:8px}
.vm-no{width:24px;height:24px;border-radius:50%;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12.5px;flex:0 0 24px}
.vm-row video{width:96px;height:56px;object-fit:cover;border-radius:8px;background:#000;flex:0 0 96px}
.vm-url{flex:1;min-width:0;font-size:12.5px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vm-act{display:flex;gap:4px}
.two-slot{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.slot{position:relative;border:1.5px dashed var(--line);border-radius:12px;padding:22px 12px;text-align:center;cursor:pointer;background:var(--bg2);transition:.16s;min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.slot:hover{border-color:var(--brand);background:var(--soft,rgba(201,162,78,.06))}
.slot b{font-size:13.5px;color:var(--txt)}
.slot span{font-size:11.5px;color:var(--dim);line-height:1.5}
.slot img{width:100%;max-height:180px;object-fit:contain;border-radius:8px;margin-bottom:6px}
.slot.has{border-style:solid;padding:8px}
.tabs3{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.tabs3 button{background:var(--card);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:9px 16px;font-size:13.5px;cursor:pointer}
.tabs3 button.on{background:var(--grad);color:#fff;border-color:transparent}
.seg.wrap{flex-wrap:wrap}
.mz-box{text-align:center}
.mz-wave{font-size:14.5px;color:var(--txt);margin-bottom:12px}
.ly-box pre{white-space:pre-wrap;word-break:break-word;font-size:13.5px;line-height:1.9;color:var(--txt);background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px;max-height:52vh;overflow:auto;font-family:inherit}
.bt-sum{font-size:13.5px;color:var(--txt);background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px}
.bt-table{width:100%;border-collapse:collapse;font-size:12.5px}
.bt-table th,.bt-table td{border-bottom:1px solid var(--line);padding:7px 8px;text-align:left;color:var(--txt)}
.bt-table th{color:var(--dim);font-weight:500}
.tm-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:14px}
.tm-head h2{margin:0 0 4px}
.tm-role{font-size:12.5px;color:var(--brand);background:var(--soft,rgba(201,162,78,.10));padding:2px 10px;border-radius:999px}
.tm-grid{display:grid;grid-template-columns:minmax(360px,1fr) minmax(360px,1.2fr);gap:16px;align-items:start}
@media(max-width:1000px){.tm-grid{grid-template-columns:1fr}}
.tm-table{width:100%;border-collapse:collapse;font-size:13.5px}
.tm-table th,.tm-table td{border-bottom:1px solid var(--line);padding:9px 8px;text-align:left;color:var(--txt);vertical-align:middle}
.tm-table th{color:var(--dim);font-weight:500;font-size:12.5px}
.tm-mail{display:block;font-size:11.5px;color:var(--dim);margin-top:2px}
.tm-ops{white-space:nowrap}
.tm-works{max-height:60vh;overflow:auto}

/* ===== 提示词库 ===== */
.pl-wrap{display:flex;gap:16px;align-items:flex-start}
.pl-side{width:190px;flex:0 0 190px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px;max-height:74vh;overflow:auto}
.pl-cat{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 10px;border-radius:9px;font-size:13.5px;color:var(--txt);cursor:pointer;margin-bottom:2px}
.pl-cat:hover{background:var(--soft,rgba(201,162,78,.08))}
.pl-cat.on{background:var(--grad);color:#fff}
.pl-cat em{font-style:normal;font-size:11.5px;opacity:.65}
.pl-fav-h{margin:12px 4px 4px;font-size:12.5px;color:var(--dim);border-top:1px solid var(--line);padding-top:10px}
.pl-main{flex:1;min-width:0}
.pl-card p{max-height:120px;overflow:auto}
.pl-ty{font-size:11.5px;padding:2px 8px;border-radius:999px;background:var(--soft,rgba(201,162,78,.12));color:var(--brand)}
.pl-ty.t-video{background:rgba(176,138,62,.14);color:#B08A3E}
.pl-ty.t-chat{background:rgba(52,211,153,.16);color:#10b981}
@media(max-width:1000px){.pl-wrap{flex-direction:column}.pl-side{width:100%;flex:auto;max-height:none;display:flex;flex-wrap:wrap;gap:4px}.pl-cat{width:auto}.pl-fav-h{width:100%}}

/* ===== 提示词效果图 ===== */
.pl-thumb{position:relative;width:100%;aspect-ratio:32/21;border-radius:10px;overflow:hidden;margin-bottom:10px;background:#0b0b12;cursor:zoom-in}
.pl-thumb img{width:100%;height:100%;object-fit:contain;display:block;background:#0b0b12;transition:transform .22s}
.pl-thumb:hover img{transform:scale(1.05)}
.pl-ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12.5px;color:var(--dim);letter-spacing:1px}

/* ===== 技能中心 ===== */
.sk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.sk-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:9px;transition:.16s}
.sk-card:hover{border-color:var(--brand);box-shadow:0 10px 26px rgba(201,162,78,.14);transform:translateY(-2px)}
.skc-top{display:flex;gap:10px;align-items:flex-start}
.skc-ico{font-size:24px;line-height:1;flex:0 0 auto}
.skc-top h3{margin:0 0 4px;font-size:14.5px;color:var(--txt);line-height:1.35}
.skc-cat{font-size:11.5px;padding:2px 8px;border-radius:999px;background:var(--soft,rgba(201,162,78,.12));color:var(--brand)}
.skc-desc{margin:0;font-size:12.5px;line-height:1.65;color:var(--dim);flex:1;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.skc-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.skc-src{font-size:11.5px;color:var(--dim);opacity:.85;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sk-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0 10px}
.sk-cat{font-size:11.5px;padding:2px 9px;border-radius:999px;background:var(--grad);color:#fff}
.sk-src{font-size:12.5px;color:var(--txt);background:var(--bg2);border:1px solid var(--line);padding:2px 9px;border-radius:999px}
.sk-path{font-size:11.5px;color:var(--dim)}
.sk-desc{font-size:13.5px;line-height:1.75;color:var(--txt);background:var(--bg2);border-left:3px solid var(--brand);padding:10px 12px;border-radius:0 8px 8px 0}
.sk-body{max-height:46vh;overflow:auto;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:12px;margin:12px 0}
.sk-body pre{white-space:pre-wrap;word-break:break-word;font-size:12.5px;line-height:1.7;color:var(--dim);margin:0;font-family:ui-monospace,Menlo,Consolas,monospace}
.sk-result{margin-top:14px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--bg2)}
.sk-res-head{padding:9px 13px;background:var(--soft,rgba(201,162,78,.10));font-size:13.5px;color:var(--txt);border-bottom:1px solid var(--line)}
.sk-res-body{padding:14px;max-height:52vh;overflow:auto;font-size:13.5px;line-height:1.85;color:var(--txt)}
.sk-res-body h2,.sk-res-body h3,.sk-res-body h4{margin:14px 0 8px}
.sk-res-body .m-code{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px;overflow:auto;font-size:12.5px}

.sk-pick{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0}

/* ===== 商单委托 ===== */
.biz-hero{text-align:center;padding:46px 20px 36px;background:linear-gradient(160deg,rgba(201,162,78,.10),rgba(176,138,62,.06) 60%,transparent);border:1px solid var(--line);border-radius:20px;margin-bottom:22px}
.bh-badge{display:inline-block;font-size:12.5px;color:var(--brand);background:var(--soft,rgba(201,162,78,.12));padding:5px 14px;border-radius:999px;margin-bottom:14px}
.biz-hero h1{margin:0 0 12px;font-size:32px;line-height:1.3;color:var(--txt)}
.biz-hero p{max-width:680px;margin:0 auto 20px;color:var(--dim);font-size:14.5px;line-height:1.8}
.bh-stats{display:flex;justify-content:center;gap:36px;flex-wrap:wrap;margin-bottom:24px}
.bh-stats div{text-align:center}
.bh-stats b{display:block;font-size:24px;color:var(--brand)}
.bh-stats span{font-size:12.5px;color:var(--dim)}
.biz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.biz-card{position:relative;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:10px;transition:.16s}
.biz-card:hover{border-color:var(--brand);box-shadow:0 12px 30px rgba(201,162,78,.14);transform:translateY(-3px)}
.biz-card.hot{border-color:var(--brand)}
.biz-hot{position:absolute;right:14px;top:14px;font-size:11.5px;color:#fff;background:var(--grad);padding:3px 10px;border-radius:999px}
.bc-ico{font-size:24px}
.biz-card h3{margin:0;font-size:14.5px;color:var(--txt);line-height:1.4}
.bc-price{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.bc-price b{font-size:19px;color:var(--brand)}
.bc-price span{font-size:12.5px;color:var(--dim)}
.bc-list{margin:0;padding-left:18px;flex:1}
.bc-list li{font-size:12.5px;color:var(--dim);line-height:1.9}
.biz-flow{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.bf-step{position:relative;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 14px;text-align:center}
.bf-no{position:absolute;left:10px;top:8px;font-size:11.5px;color:var(--brand);opacity:.7}
.bf-ico{font-size:24px;margin-bottom:6px}
.bf-step b{display:block;font-size:13.5px;color:var(--txt);margin-bottom:4px}
.bf-step p{margin:0;font-size:11.5px;color:var(--dim);line-height:1.6}
.biz-form-wrap{display:grid;grid-template-columns:minmax(420px,1.5fr) minmax(280px,1fr);gap:16px;align-items:start}
@media(max-width:1000px){.biz-form-wrap{grid-template-columns:1fr}}
.biz-form .lbl i{color:var(--err);font-style:normal}
.bf-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}
@media(max-width:640px){.bf-row{grid-template-columns:1fr}}
.biz-side h3{margin:0 0 4px;font-size:14.5px}
.biz-side .inp{width:100%}
.biz-ok{margin-top:14px;background:var(--soft,rgba(201,162,78,.08));border:1px solid var(--brand);border-radius:12px;padding:14px}
.biz-ok b{color:var(--ok);display:block;margin-bottom:8px}
.biz-ok code{background:var(--card);border:1px solid var(--line);padding:3px 10px;border-radius:8px;font-size:14.5px;color:var(--brand)}
.biz-q{margin-top:12px;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.biz-q-h{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--bg2);font-size:12.5px;color:var(--txt);border-bottom:1px solid var(--line)}
.biz-q-b{display:flex;flex-direction:column;gap:4px;padding:12px;font-size:12.5px;color:var(--dim)}
.biz-q-b b{color:var(--txt);font-size:13.5px}
.biz-st{font-size:11.5px;padding:2px 9px;border-radius:999px;white-space:nowrap}
.biz-st.s-warn{background:rgba(250,173,20,.16);color:#b8860b}
.biz-st.s-info{background:rgba(176,138,62,.16);color:#B08A3E}
.biz-st.s-ok{background:rgba(82,196,26,.16);color:#52c41a}
.biz-st.s-dim{background:rgba(134,144,156,.16);color:var(--dim)}
.biz-mine-list{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.biz-mine-item{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:9px 11px}
.biz-mine-item b{display:block;font-size:12.5px;color:var(--txt)}
.biz-mine-item span{font-size:11.5px;color:var(--dim)}
.biz-faq{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:10px}
.faq{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.faq summary{cursor:pointer;font-size:13.5px;color:var(--txt);font-weight:500}
.faq p{margin:9px 0 0;font-size:12.5px;color:var(--dim);line-height:1.8}
.ad-biz{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px}
.ab-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:6px}
.ab-head b{font-size:13.5px;color:var(--txt)}
.ab-no{font-size:11.5px;color:var(--brand)}
.ab-time{font-size:11.5px;color:var(--dim)}
.ab-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--dim);margin-bottom:6px}
.ab-brief{margin:0 0 6px;font-size:12.5px;color:var(--txt);line-height:1.7}
.ab-refs{margin:0 0 8px;font-size:11.5px;color:var(--dim);word-break:break-all}

/* ===== 商单渠道通知 ===== */
.ch-help{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:10px 0}
.ch-help b{font-size:13.5px;color:var(--txt)}
.ch-help ul{margin:8px 0 6px;padding-left:20px}
.ch-help li{font-size:12.5px;color:var(--dim);line-height:1.9}
.ch-help code{background:var(--card);border:1px solid var(--line);padding:1px 6px;border-radius:6px;color:var(--brand);font-size:12.5px}
.ch-add{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:12px 0}
.ch-add .inp{flex:1;min-width:240px}
.ch-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.ch-item{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:11px 13px}
.ch-item.off{opacity:.55}
.ci-main{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
.ci-main b{font-size:13.5px;color:var(--txt)}
.ci-type{font-size:11.5px;padding:2px 9px;border-radius:999px;background:var(--soft,rgba(201,162,78,.12));color:var(--brand)}
.ci-url{font-size:11.5px;color:var(--dim);word-break:break-all}

.src-stat{margin:0 0 12px;font-size:12.5px;color:var(--dim)}
.src-stat b{color:var(--txt);margin-right:6px}
.src-stat .bdg{display:inline-block;background:var(--bg2);border:1px solid var(--line);border-radius:999px;padding:2px 10px;margin:2px 4px 2px 0;color:var(--txt);font-size:12.5px}

/* ===== 商单大厅 / 我的商单 ===== */
.hall-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px}
.hall-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:10px;transition:.16s}
.hall-card:hover{border-color:var(--brand);box-shadow:0 12px 28px rgba(201,162,78,.14);transform:translateY(-2px)}
.hall-card.done{opacity:.72}
.hc-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.hc-type{font-size:12.5px;color:var(--brand);background:var(--soft,rgba(201,162,78,.12));padding:3px 11px;border-radius:999px}
.hc-brief{margin:0;font-size:13.5px;line-height:1.75;color:var(--txt);flex:1;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.hc-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--dim)}
.hc-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid var(--line);padding-top:10px}
.hc-no{font-size:11.5px;color:var(--dim);font-family:ui-monospace,Consolas,monospace}
.hc-taken{font-size:12.5px;color:var(--dim)}
.hl-contact{color:var(--brand);font-size:14.5px}
.mine-list{display:flex;flex-direction:column;gap:10px}
.mine-item{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px}
.mi-t{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.mi-t b{font-size:14.5px;color:var(--txt)}
.mi-tag{font-size:11.5px;padding:2px 8px;border-radius:999px;background:rgba(176,138,62,.14);color:#B08A3E}
.mi-tag.p{background:var(--soft,rgba(201,162,78,.12));color:var(--brand)}
.mine-item p{margin:0 0 8px;font-size:12.5px;line-height:1.7;color:var(--dim)}
.mi-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--dim)}
.mi-taker{margin-top:8px;font-size:12.5px;color:var(--brand);background:var(--soft,rgba(201,162,78,.08));border-radius:8px;padding:7px 10px}

/* ===== 渠道中心 ===== */
.ch-tip{background:var(--soft,rgba(201,162,78,.08));border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:0 12px 12px 0;padding:12px 15px;font-size:12.5px;line-height:1.8;color:var(--dim);margin-bottom:14px}
.ch-tip b{color:var(--txt)}
.ch-progress{display:flex;align-items:center;gap:12px;margin-bottom:18px;font-size:13.5px;color:var(--dim)}
.cp-bar{flex:1;height:8px;border-radius:99px;background:var(--bg2);border:1px solid var(--line);overflow:hidden}
.cp-bar i{display:block;height:100%;background:var(--grad);transition:.32s}
.ch-progress b{color:var(--brand);font-size:14.5px}
.ch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}
.ch-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:10px;transition:.16s}
.ch-card:hover{border-color:var(--brand);box-shadow:0 12px 28px rgba(201,162,78,.14);transform:translateY(-2px)}
.ch-card.done{border-color:rgba(82,196,26,.5)}
.cc-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.cc-top h3{margin:0 0 5px;font-size:14.5px;color:var(--txt);display:flex;align-items:center;gap:7px}
.cc-hot{font-size:11.5px;color:#fff;background:var(--grad);padding:2px 8px;border-radius:999px;font-weight:400}
.cc-tag{font-size:11.5px;color:var(--brand);background:var(--soft,rgba(201,162,78,.12));padding:2px 9px;border-radius:999px}
.cc-ok{font-size:11.5px;color:#52c41a;white-space:nowrap}
.cc-use{margin:0;font-size:12.5px;color:var(--txt);line-height:1.7}
.cc-rows{display:flex;flex-direction:column;gap:5px;background:var(--bg2);border-radius:10px;padding:10px 11px}
.cc-rows div{display:flex;gap:8px;font-size:12.5px;line-height:1.6}
.cc-rows b{flex:0 0 62px;color:var(--dim);font-weight:400}
.cc-rows span{color:var(--txt)}
.cc-rows .hl{color:var(--brand)}
.cc-foot{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}
.ch-road{display:flex;flex-direction:column;gap:10px}
.cr-item{display:flex;gap:12px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.cr-no{flex:0 0 26px;height:26px;border-radius:50%;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12.5px}
.cr-item b{font-size:13.5px;color:var(--txt);display:block;margin-bottom:3px}
.cr-item p{margin:0;font-size:12.5px;color:var(--dim)}

/* ===== 平台佣金 ===== */
.mi-comm{margin-top:8px;font-size:12.5px;color:var(--dim);background:var(--bg2);border-radius:8px;padding:8px 10px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.mi-comm.warn{color:#b8860b;background:rgba(250,173,20,.12)}
.mi-comm.ok{color:#52c41a;background:rgba(82,196,26,.12);border:0}
.comm-set{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:12px 0}
.comm-stat{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:12px 0}
.comm-stat>div{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;text-align:center}
.comm-stat b{display:block;font-size:19px;color:var(--brand);margin-bottom:3px}
.comm-stat span{font-size:11.5px;color:var(--dim)}
.hl-err{color:var(--err)!important}

/* ===== 海外商单 ===== */
.ext-note{font-size:12.5px;color:var(--dim);margin-bottom:10px}
.ext-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.ext-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:8px;transition:.16s}
.ext-card:hover{border-color:var(--brand);box-shadow:0 10px 24px rgba(201,162,78,.12);transform:translateY(-2px)}
.ec-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.ec-src{font-size:11.5px;font-weight:600;color:#fff;background:var(--grad);padding:2px 9px;border-radius:999px}
.ec-date{font-size:11.5px;color:var(--dim)}
.ext-card h4{margin:0;font-size:13.5px;line-height:1.5;color:var(--txt)}
.ec-co{font-size:12.5px;color:var(--dim)}
.ec-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--dim)}
.ext-card .btn{margin-top:auto;align-self:flex-start}

/* ===== 全网商单 · 实时同步 ===== */
.ext-tip{font-size:12.5px;color:var(--dim);padding:6px 2px}
.ext-card.bounty{border-color:rgba(251,191,36,.42)}
.ext-card.bounty .ec-src{background:rgba(251,191,36,.18);color:var(--warn)}
.ec-desc{font-size:12.5px;color:var(--dim);line-height:1.6;margin:2px 0 6px}
.ec-act{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:auto}
.ec-act .btn{margin-top:0}

/* ===== 结算中心 ===== */
.settle-guide{display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:var(--bg2);border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:14px}
.sg-step{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--dim)}
.sg-step b{display:inline-flex;width:20px;height:20px;border-radius:50%;background:var(--brand);color:#fff;align-items:center;justify-content:center;font-size:11.5px;font-weight:700;flex:0 0 auto}
.settle-guide i{color:var(--dim);font-style:normal}
.settle-stat{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:18px}
.settle-stat>div{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.settle-stat b{display:block;font-size:19px;color:var(--txt);margin-bottom:3px}
.settle-stat span{font-size:12.5px;color:var(--dim)}
.settle-list{display:grid;gap:12px}
.settle-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px 16px}
.settle-card:hover{border-color:var(--brand)}
.sc-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.sc-title{font-weight:700;font-size:14.5px}
.sc-st{font-size:11.5px;padding:3px 9px;border-radius:20px;background:var(--bg2);color:var(--dim)}
.sc-st.ok{background:rgba(52,211,153,.14);color:var(--ok)}
.sc-st.warn{background:rgba(251,191,36,.14);color:var(--warn)}
.sc-st.info{background:var(--navOn,rgba(201,162,78,.16));color:var(--brand2)}
.sc-st.err{background:rgba(248,113,113,.14);color:var(--err)}
.sc-brief{margin:8px 0;font-size:12.5px;color:var(--dim);line-height:1.7}
.sc-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--dim)}
.sc-num{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:10px 0 6px}
.sc-num>div{background:var(--bg2);border-radius:10px;padding:8px 10px}
.sc-num b{display:block;font-size:14.5px}
.sc-num span{font-size:11.5px;color:var(--dim)}
.sc-flow{font-size:11.5px;color:var(--dim);margin-top:4px}
.sc-act{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}
.sc-wait{font-size:12.5px;color:var(--dim)}
.sc-wait.ok{color:var(--ok)}
.sc-logs{margin-top:10px;font-size:12.5px;color:var(--dim)}
.sc-logs summary{cursor:pointer;color:var(--brand2)}
.scl{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px dashed var(--line)}
.wd-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;align-items:end}
.wd-form .btn{height:38px}
.mi-tag.x{background:rgba(251,191,36,.16);color:var(--warn)}
.mi-comm.info{color:var(--brand2);background:var(--navOn,rgba(201,162,78,.14))}
.mi-taker a{color:var(--brand2);word-break:break-all}
.hl-ok{color:var(--ok)!important}

/* ===== 代码修复 / Bug 赏金 ===== */
.ext-card.fix{border-color:rgba(201,162,78,.42)}
.ec-kind{font-size:11.5px;padding:2px 7px;border-radius:20px;font-weight:600}
.ec-kind.fix{background:rgba(201,162,78,.18);color:var(--brand2)}
.ec-kind.bounty{background:rgba(251,191,36,.18);color:var(--warn)}
.cc-live{font-size:11.5px;margin-left:6px;padding:2px 7px;border-radius:20px;background:rgba(52,211,153,.16);color:var(--ok);font-weight:600}

/* ============================================================
   砚池 · 墨池界格  design system v3        2026-09-30
   ------------------------------------------------------------
   方向：宣纸（冷调纸白）+ 墨（深靛）+ 青金（主色）+ 描金（结构）+ 朱砂（印记）
   五条原则：
     1 结构用线，不用阴影          —— 层级靠细线与留白，不靠投影和渐变
     2 描金只做引导                —— 金色只出现在分隔、焦点、当前项
     3 朱砂只做印记                —— 红色只用于「已确认」状态，不做按钮
     4 宋体只做标题                —— 标题用衬线，功能文字一律无衬线
     5 面板只包原子项              —— 区块保持通透，只有可点单元才有边框
   ============================================================ */

/* ---------- 1. 令牌 ---------- */
:root{
  --r-mark:4px; --r-surface:12px; --r-pill:999px;
  --font-display:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong",SimSun,serif;
  --font-ui:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",Roboto,sans-serif;
  --dur:140ms;
  /* 浅色（站点默认主题）*/
  --paper:#F4F5F9; --surface:#FFFFFF; --surface-2:#FAFBFD;
  --ink:#141A2E; --ink-2:#5A6180; --ink-3:#8A90A8;
  --rule:#E3E5EF; --rule-strong:#CFD3E2;
  --gold:#B08A3E; --gold-soft:#E7D9B6; --seal:#C0453A; --brand-text:#5B45D6;
}
html[data-theme=""]{
  --paper:var(--bg); --surface:var(--card); --surface-2:var(--bg2);
  --ink:var(--txt); --ink-2:var(--dim); --ink-3:var(--dim);
  --rule:var(--line); --rule-strong:var(--line);
  --gold:#D4B36A; --gold-soft:rgba(212,179,106,.32); --seal:#E0705A; --brand-text:var(--brand2);
}
html[data-theme="violet"],html[data-theme="aurora"],html[data-theme="sunset"],html[data-theme="sakura"],html[data-theme="mint"]{
  --paper:var(--bg); --surface:var(--card); --surface-2:var(--bg2);
  --ink:var(--txt); --ink-2:var(--dim); --ink-3:var(--dim);
  --rule:var(--line); --rule-strong:var(--line);
  --gold:#D4B36A; --gold-soft:rgba(212,179,106,.32); --seal:#E0705A; --brand-text:var(--brand2);
}
html[data-theme="light"]{
  --paper:#F4F5F9; --surface:#FFFFFF; --surface-2:#FAFBFD;
  --ink:#141A2E; --ink-2:#5A6180; --ink-3:#8A90A8;
  --rule:#E3E5EF; --rule-strong:#CFD3E2;
  --gold:#B08A3E; --gold-soft:#E7D9B6; --seal:#C0453A; --brand-text:#5B45D6;
}

/* ---------- 2. 字体与排印 ---------- */
body{
  font-family:var(--font-ui);
  font-size:14.5px; line-height:1.75;
  color:var(--ink);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  font-variant-numeric:tabular-nums;
}
h1,h2,.page-h h1,.sec-h h2,.foot-brand{
  font-family:var(--font-display); font-weight:700; letter-spacing:.012em; color:var(--ink);
}
h1,.page-h h1{font-size:clamp(24px,2.5vw,31px); line-height:1.35}
h2,.sec-h h2{font-size:19px; line-height:1.45}
h3{font-size:14.5px; font-weight:650; line-height:1.5}
p{max-width:78ch}
.sec-h p,.page-h p,.sub,.meta,.tip{font-size:12.5px; line-height:1.7; color:var(--ink-3)}
.num,.fee,.vprice,.bal,.sc-num b,.settle-stat b,td{font-variant-numeric:tabular-nums}

/* ---------- 3. 结构：区块用线，不用卡片 ---------- */
.sec-h{
  align-items:flex-end; gap:14px; flex-wrap:wrap;
  margin:38px 0 16px; padding-top:15px;
  border-top:1px solid var(--rule); position:relative;
}
.sec-h::after{
  content:""; position:absolute; left:0; right:0; top:3px; height:1px;
  background:var(--gold-soft); pointer-events:none;
}
.sec-h h2{margin:0}
.sec-h p{margin:3px 0 0}
.block{display:block}
.main .wrap{position:relative}
@media(min-width:1200px){
  .main .wrap::before{content:none}
}

/* ---------- 4. 顶栏与侧栏 ---------- */
.top{
  background:color-mix(in srgb,var(--paper) 90%,transparent)!important;
  border-bottom:1px solid var(--rule)!important;
}
.side{background:var(--paper); border-right:1px solid var(--rule)}
.side-nav a{border-radius:var(--r-mark); color:var(--ink-2); font-size:13.5px; font-weight:500}
.side-nav a:hover{background:var(--surface); color:var(--ink)}
html[data-theme] .side-nav a.on{
  background:var(--surface); color:var(--brand-text);
  box-shadow:inset 2px 0 0 var(--gold); border-radius:var(--r-mark);
}
.side-sub{border-bottom:1px solid var(--rule)}
.side-sub a{border-radius:var(--r-mark); font-size:12.5px; color:var(--ink-3)}
.side-sub a.on{background:var(--brand); color:#fff}
.side-filter select,.side-filter input{border-radius:var(--r-mark); border:1px solid var(--rule-strong); background:var(--surface); color:var(--ink)}
.sm-item{border-radius:var(--r-mark); border-bottom:1px solid var(--rule); padding:8px}
.sm-item:hover{background:var(--surface)}
.sm-item.on{background:var(--surface); box-shadow:inset 2px 0 0 var(--gold)}
.sm-txt b{font-weight:600; color:var(--ink)}
.sm-txt span{color:var(--ink-3)}
.sm-sub{display:flex; align-items:baseline; justify-content:space-between; gap:8px}
.sm-sub em{font-style:normal; color:var(--ink-3); overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.sm-sub i{font-style:normal; color:var(--ink-2); flex:0 0 auto; font-variant-numeric:tabular-nums}
.sm-rate{background:transparent; border:1px solid var(--rule-strong); color:var(--ink-2); border-radius:var(--r-mark)}
.side-user{background:var(--surface); border:1px solid var(--rule); border-radius:var(--r-surface)}
.crumb{color:var(--ink-3)}
.crumb a{color:var(--ink-3)} .crumb a:hover{color:var(--brand-text)}
.crumb span{color:var(--ink); font-weight:600}
.top-acts .ta{border-radius:var(--r-mark); color:var(--ink-2)}
.top-acts .ta:hover{background:var(--surface); color:var(--ink)}
.top-acts .ta.promo{
  background:transparent; color:var(--brand-text);
  border:1px solid var(--gold); font-weight:600;
}
.tib{border-radius:var(--r-mark)} .tib:hover{background:var(--surface); color:var(--ink)}
.avatar,.side-user .ava,.side-brand .logo{border-radius:var(--r-mark)}

/* ---------- 5. 按钮 / 标签 / 表单 ---------- */
.btn{
  background:var(--brand); color:#fff; border:1px solid transparent;
  border-radius:var(--r-mark); box-shadow:none; font-weight:600; font-size:14.5px;
  padding:10px 18px; transition:background var(--dur) ease,border-color var(--dur) ease,color var(--dur) ease;
}
.btn:hover{transform:none; filter:none; background:var(--brand2)}
.btn:active{transform:translateY(1px)}
.btn.ghost{background:transparent; border:1px solid var(--rule-strong); color:var(--ink)}
.btn.ghost:hover{background:var(--surface-2); border-color:var(--gold); color:var(--ink)}
.btn.sm{border-radius:var(--r-mark); padding:6px 12px; font-size:12.5px}
.btn.danger{background:var(--seal); border-color:var(--seal)}
.chip{
  background:var(--surface); border:1px solid var(--rule-strong); color:var(--ink-2);
  border-radius:var(--r-mark); font-size:12.5px; padding:6px 12px;
  transition:border-color var(--dur) ease,color var(--dur) ease,background var(--dur) ease;
}
.chip:hover{border-color:var(--gold); color:var(--ink)}
.chip.on{background:var(--brand); border-color:var(--brand); color:#fff; font-weight:600}
.tag,.mi-tag,.ec-kind,.cap,.bdg{border-radius:var(--r-mark)}
input,textarea,select,.inp{
  background:var(--surface); border:1px solid var(--rule-strong); color:var(--ink);
  border-radius:var(--r-mark);
}
input:focus,textarea:focus,select:focus,.inp:focus{
  border-color:var(--brand);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 15%,transparent);
}
input::placeholder,textarea::placeholder{color:var(--ink-3)}

/* ---------- 6. 卡片：撤掉浮起与紫色光晕 ---------- */
.mcard,.box,.pan,.ch-card,.hall-card,.ext-card,.settle-card,.mine-item,
.asset-card,.tool-card,.skill-card,.pcard,.biz-card,.tbl,.soon-box,.biz-form,.biz-side,.tpl-card{
  background:var(--surface); border:1px solid var(--rule);
  border-radius:var(--r-surface); box-shadow:none;
}
.mcard,.ch-card,.hall-card,.ext-card,.asset-card,.tool-card,.skill-card,.biz-card,.tpl-card{
  transition:border-color var(--dur) ease,background var(--dur) ease;
}
.mcard:hover,.ch-card:hover,.hall-card:hover,.ext-card:hover,
.asset-card:hover,.tool-card:hover,.skill-card:hover,.biz-card:hover,.tpl-card:hover{
  transform:none!important; box-shadow:none; border-color:var(--rule-strong);
  border-top-color:var(--gold);
}
.mcard::before{background:var(--gold); height:2px}
.mcard.on{border-color:var(--gold); box-shadow:none}
.mcard .ven .prov{color:var(--brand-text); font-weight:600}
.mcard .fee{color:var(--ink); font-weight:600}
.mc-cover{border-radius:var(--r-surface) var(--r-surface) 0 0}
.mc-badge{border-radius:var(--r-mark)}

/* 状态：已确认用朱砂印记 */
.cc-ok,.sc-st.ok,.mi-comm.ok{color:var(--seal)}
.cc-ok{background:color-mix(in srgb,var(--seal) 12%,transparent); border-radius:var(--r-mark)}
.cc-live{background:transparent; border:1px solid var(--rule-strong); color:var(--ink-2); border-radius:var(--r-mark)}
.cc-hot{border-radius:var(--r-mark)}

/* ---------- 7. 弹窗 / 提示 ---------- */
.modal-mask{background:color-mix(in srgb,var(--ink) 40%,transparent); backdrop-filter:blur(2px)}
.modal-box{background:var(--surface); border:1px solid var(--rule); border-radius:var(--r-surface); box-shadow:0 24px 60px -34px rgba(10,14,30,.5)}
.toast{
  background:var(--ink); color:var(--paper);
  border:1px solid var(--gold-soft); border-left:3px solid var(--gold);
  border-radius:var(--r-mark); box-shadow:none; font-size:13.5px; padding:11px 16px;
}
.fab{background:var(--brand); border-radius:var(--r-mark)}
.foot{border-top:1px solid var(--rule); color:var(--ink-3); background:transparent}

/* ---------- 8. 表格与列表 ---------- */
th{font-size:12.5px; color:var(--ink-3); font-weight:600; border-bottom:1px solid var(--rule-strong)}
td{border-bottom:1px solid var(--rule)}
tr:hover td{background:var(--surface-2)}

/* ---------- 9. 首页卷首 ---------- */
.hero{padding:44px 0 6px; max-width:900px}
.hero h1{font-size:clamp(26px,3.2vw,38px); line-height:1.34; max-width:22ch}
.hero>p{color:var(--ink-2); max-width:64ch; margin-top:14px; font-size:14.5px}
.hero-ask{
  display:flex; gap:10px; max-width:660px; margin:26px 0 10px;
  background:var(--surface); border:1px solid var(--rule-strong);
  border-left:3px solid var(--gold); border-radius:var(--r-mark); padding:6px 6px 6px 14px;
}
.hero-ask .inp{flex:1; min-width:0; background:transparent; border:0; color:var(--ink); outline:0; box-shadow:none}
.hero-ask .inp::placeholder{color:var(--ink-3)}
.hero-ask .btn{white-space:nowrap; border-radius:var(--r-mark)}
.hero-note{display:flex; align-items:center; gap:16px; flex-wrap:wrap; font-size:12.5px; color:var(--ink-3)}
.hero-note a{color:var(--brand-text); border-bottom:1px solid var(--gold-soft)}
.hero-meta{
  display:flex; flex-wrap:wrap; gap:0; margin:30px 0 0; padding:14px 0;
  border-top:1px solid var(--rule); border-bottom:1px solid var(--rule); max-width:760px;
}
.hero-meta>div{padding:0 22px; border-left:1px solid var(--rule)}
.hero-meta>div:first-child{padding-left:0; border-left:0}
.hero-meta dt{font-size:12.5px; color:var(--ink-3)}
.hero-meta dd{margin:2px 0 0; font-family:var(--font-display); font-size:19px; color:var(--ink)}
.caps{gap:10px}
.cap{background:var(--surface); border:1px solid var(--rule); border-radius:var(--r-mark)}
.cap:hover{border-top-color:var(--gold)}

/* ---------- 10. 焦点、选区、滚动条、动效 ---------- */
:focus-visible{outline:2px solid var(--gold); outline-offset:2px; border-radius:2px}
::selection{background:var(--gold-soft); color:var(--ink)}
*::-webkit-scrollbar{width:10px; height:10px}
*::-webkit-scrollbar-thumb{background:var(--rule-strong); border:3px solid transparent; background-clip:content-box; border-radius:99px}
*::-webkit-scrollbar-thumb:hover{background:var(--ink-3); background-clip:content-box}
*::-webkit-scrollbar-track{background:transparent}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important; transition:none!important}
  .btn:active,.mcard:hover{transform:none!important}
}
@media(max-width:760px){
  .hero{padding:26px 0 4px}
  .hero-meta>div{padding:0 14px}
}

/* ---------- 11. 精修（第二轮） ---------- */
.hero h1{font-weight:700; font-size:clamp(26px,3vw,34px)}
:root{--ink-3:#737A93}
html[data-theme="light"]{--ink-3:#737A93}

/* 能力磁贴：只作用于首页大磁贴，卡片徽标不受影响 */
.cap-row .cap{background:transparent; border:1px solid var(--rule-strong); border-radius:var(--r-mark); color:var(--ink-2)}
.caps .cap{
  background:var(--surface); border:1px solid var(--rule); border-radius:var(--r-surface);
  padding:22px 18px; text-align:left;
  transition:border-color var(--dur) ease;
}
.caps .cap:hover{transform:none; border-color:var(--rule-strong); border-top-color:var(--gold)}
.caps .cap .ci{font-family:var(--font-display); font-weight:700; font-size:16px; color:var(--ink)}
.caps .cap .cn{color:var(--ink-3); font-size:12.5px; margin-top:4px}

/* 分段控件与标签页统一为墨线风格 */
.seg{border-radius:var(--r-mark); background:var(--surface); border:1px solid var(--rule-strong); padding:2px}
.tabs3 button{
  background:transparent; border:1px solid var(--rule-strong); color:var(--ink-2);
  border-radius:var(--r-mark); padding:8px 15px; font-size:13.5px;
  transition:border-color var(--dur) ease,color var(--dur) ease,background var(--dur) ease;
}
.tabs3 button:hover{border-color:var(--gold); color:var(--ink)}
.tabs3 button.on{background:var(--ink); border-color:var(--ink); color:var(--paper); font-weight:600}

/* 区块右上角的「更多」入口 */
.more{font-size:12.5px; color:var(--brand-text); border-bottom:1px solid transparent; padding-bottom:1px}
.more:hover{border-bottom-color:var(--gold)}

/* 通栏提示条：朱线引导，不做渐变 */
.notice-band{
  background:var(--surface); border:1px solid var(--rule); border-left:3px solid var(--gold);
  border-radius:var(--r-mark); padding:20px 22px;
}

/* 商单 / 需求大厅 卷首 */
.biz-hero{
  text-align:left; max-width:900px; padding:34px 0 4px; margin-bottom:8px;
  background:transparent; border:0; border-radius:0;
}
.bh-badge{
  display:inline-block; font-size:12.5px; font-weight:600; color:var(--ink-2);
  background:transparent; border-left:3px solid var(--gold); border-radius:0;
  padding:3px 0 3px 10px; margin-bottom:12px;
}
.biz-hero h1{font-family:var(--font-display); font-weight:700; font-size:clamp(24px,2.6vw,32px); line-height:1.35; color:var(--ink); margin:0 0 10px}
.biz-hero p{max-width:70ch; margin:0 0 18px; color:var(--ink-2); font-size:14.5px}
.biz-hero .act-row{justify-content:flex-start!important}
.bh-stats{
  justify-content:flex-start; gap:0; margin:22px 0 18px;
  border-top:1px solid var(--rule); border-bottom:1px solid var(--rule); padding:12px 0;
}
.bh-stats div{text-align:left; padding:0 22px; border-left:1px solid var(--rule)}
.bh-stats div:first-child{padding-left:0; border-left:0}
.bh-stats b{display:block; font-family:var(--font-display); font-size:19px; font-weight:700; color:var(--ink)}
.bh-stats span{font-size:12.5px; color:var(--ink-3)}
.biz-hot{background:transparent; border:1px solid var(--gold); color:var(--gold); border-radius:var(--r-mark)}
.biz-card.hot{border-color:var(--rule); border-top-color:var(--gold)}

@media(max-width:760px){
  .bh-stats div{padding:0 12px}
  .caps .cap{padding:18px 14px}
}

/* ---------- 12. 精修（第三轮）：创作台与消息流 ---------- */
.composer{
  background:var(--surface); border-top:1px solid var(--rule); box-shadow:none;
}
.chat-head{border-radius:var(--r-surface); background:var(--surface); border-color:var(--rule)}
.m-bub{border-radius:var(--r-surface); border-color:var(--rule); background:var(--surface); color:var(--ink)}
.msg.me .m-bub{background:var(--brand); border-color:var(--brand); color:#fff}
.m-bub h2,.m-bub h3,.m-bub h4{color:var(--ink); font-family:var(--font-display); font-weight:700}
.msg.me .m-bub h2,.msg.me .m-bub h3,.msg.me .m-bub h4{color:#fff}
.m-ava{border-radius:var(--r-mark); background:var(--surface); border-color:var(--rule)}
.m-acts button{border-radius:var(--r-mark)}
.m-acts button:hover{background:var(--surface-2); border-color:var(--gold); color:var(--brand-text)}
.cc-input .cmp-input{border-color:var(--rule-strong); border-radius:var(--r-surface)}
.cw-tips span{border-radius:var(--r-mark); background:var(--surface); border-color:var(--rule); color:var(--ink-3)}
.cc-tabs{border-radius:var(--r-mark); background:var(--surface); border:1px solid var(--rule)}

/* ---------- 13. 收尾：一个记忆点（朱砂印章）+ 克制动效 ---------- */
@keyframes wfpop{from{opacity:0}to{opacity:1}}
.side-brand{font-family:var(--font-display); font-size:16px; letter-spacing:.02em; color:var(--ink)}
.side-brand .logo{
  background:transparent; color:var(--seal);
  border:1.5px solid var(--seal); border-radius:2px;
  font-family:var(--font-display); font-weight:700; font-size:16px;
  width:30px; height:30px;
}
.side-brand .ver{background:transparent; border:1px solid var(--rule-strong); border-radius:var(--r-mark); color:var(--ink-3)}

/* ---------- 14. 收尾：清掉残留的渐变装饰与异形圆角 ---------- */
.cc-rows,.cc-rows>div{border-radius:var(--r-mark)}
.hot,.sm-ico,.side-nav a .hot,img{border-radius:var(--r-mark)}
.cc-hot{background:transparent; border:1px solid var(--gold); color:var(--gold); border-radius:var(--r-mark)}
.cr-no{background:var(--ink); color:var(--paper); border-radius:var(--r-mark); font-weight:700}
.fab{box-shadow:none; border:1px solid var(--rule-strong)}
.fab:hover{transform:translateY(-50%); background:var(--brand2)}
.tag.free{box-shadow:none}

/* ---------- 15. 收尾：标签页去光晕 ---------- */
.tab{border-radius:var(--r-mark); background:transparent; border:1px solid var(--rule-strong); color:var(--ink-2); font-size:13.5px}
.tab:hover{border-color:var(--gold); color:var(--ink)}
.tab.on{background:var(--ink); border-color:var(--ink); color:var(--paper); box-shadow:none; font-weight:600}

/* ---------- 16. 模型占位封面：从渐变雾改为纸底 + 厂商色线 ---------- */
.mc-cover.grad{
  background:var(--surface-2);
  border-bottom:1px solid var(--rule);
  box-shadow:inset 0 3px 0 var(--gv,rgba(201,162,78,.5));
  color:var(--ink-3);
  text-shadow:none;
}
.mc-cover.grad::before{display:none}

/* ============================================================
   17. 对标 liblib.tv 的结构升级        2026-09-30
   借鉴的是「结构」不是「皮肤」：
     · 内容优先：内页不再用大卷首，改成一条工具栏（标题+说明+操作）
     · 媒体优先：卡片 16:9 封面 + 悬停蒙层动作
     · 胶囊徽标、下划线标签页、更密的侧栏、16px 栅格间距
   砚池保留自己的墨色 + 描金 + 朱砂，不换成对方的青色。
   ============================================================ */

:root{ --r-media:16px; --side-w:248px }

/* ---------- 17.1 内页工具栏（对标 liblib 无大标题） ---------- */
.page-h{
  align-items:flex-end; margin:4px 0 16px; padding-bottom:10px;
  border-bottom:1px solid var(--rule); position:relative;
}
.page-h::after{
  content:""; position:absolute; left:0; bottom:-1px; width:56px; height:1px; background:var(--gold);
}
.page-h>div{display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; min-width:0}
.page-h h1{font-family:var(--font-display); font-size:19px; font-weight:700; letter-spacing:.01em}
.page-h p{margin:0; font-size:12.5px; color:var(--ink-3)}

/* ---------- 17.2 媒体卡：16:9 封面 + 悬停动作 ---------- */
.mcard,.ch-card,.hall-card,.ext-card,.pcard,.tpl-card,.asset-card,.tool-card,.skill-card{
  border-radius:var(--r-media);
}
.mc-cover{
  aspect-ratio:16/9; height:auto;
  border-radius:var(--r-media) var(--r-media) 0 0;
  margin-bottom:12px;
}
.mc-cover::after{
  content:""; position:absolute; inset:0; opacity:0;
  display:flex; align-items:center; justify-content:center;
  background:rgba(9,11,22,.46); color:#fff;
  font-size:12.5px; font-weight:600; letter-spacing:.04em;
  transition:opacity var(--dur) ease;
}
.mcard:hover .mc-cover::after{content:"开始创作"; opacity:1}
.mcard .mc-top{position:absolute; z-index:2}

/* ---------- 17.3 胶囊徽标（只改小徽标，不动大磁贴） ---------- */
.tag,.mi-tag,.ec-kind,.bdg,.cc-live,.cc-hot,.biz-hot,.sc-st,.ec-src,.cc-tag{
  border-radius:var(--r-pill);
}

/* ---------- 17.4 下划线标签页（对标 liblib） ---------- */
.tabs3{gap:0; border-bottom:1px solid var(--rule); margin-bottom:16px; align-items:center}
.tabs3 button{
  background:transparent; border:0; border-bottom:2px solid transparent;
  border-radius:0; padding:8px 2px; margin-right:22px;
  color:var(--ink-3); font-size:13.5px;
}
.tabs3 button:hover{color:var(--ink); border-color:transparent; border-bottom-color:var(--rule-strong)}
.tabs3 button.on{
  background:transparent; color:var(--ink); font-weight:600;
  border-color:transparent; border-bottom-color:var(--gold);
}
.tabs{gap:0; border-bottom:1px solid var(--rule)}
.tab{
  border:0; border-bottom:2px solid transparent; border-radius:0;
  background:transparent; color:var(--ink-3); padding:8px 2px; margin-right:20px;
}
.tab:hover{border-color:transparent; border-bottom-color:var(--rule-strong); color:var(--ink)}
.tab.on{background:transparent; border-color:transparent; border-bottom-color:var(--gold); color:var(--ink); font-weight:600}

/* ---------- 17.5 更密的侧栏（对标 liblib 240px / 32px 行高） ---------- */
.side{width:var(--side-w); flex:0 0 var(--side-w); padding:12px 10px}
.side-nav{gap:1px}
.side-nav a{padding:7px 10px; font-size:13.5px; border-radius:6px; min-height:34px}
.side-brand{padding:4px 6px 12px}
.sm-item{padding:7px 8px}
.composer{left:var(--side-w)}
body.studio .work>.pan:first-child.mopen{left:var(--side-w)}
@media(max-width:1100px){ .composer{left:0} body.studio .work>.pan:first-child.mopen{left:0} }

/* ---------- 17.6 栅格间距对齐 16px ---------- */
.grid,.hall-grid,.ext-grid,.ch-grid,.caps,.tpl-grid{gap:16px}

/* ---------- 17.7 深色基底微调（靠近 liblib 的层次，但保留暗紫蓝） ---------- */
html[data-theme=""],html:not([data-theme]){
  --bg:#0B0B0D; --bg2:#121214; --card:#17171A; --line:#2C2C31;
  --txt:#F1EEE8; --dim:#9C968C;
}
html[data-theme=""] .top,html:not([data-theme]) .top{background:rgba(11,11,13,.9)!important}
html[data-theme=""] .side,html:not([data-theme]) .side{background:#101012}
html[data-theme=""] .mcard:hover,html:not([data-theme]) .mcard:hover,
html[data-theme=""] .ch-card:hover,html:not([data-theme]) .ch-card:hover,
html[data-theme=""] .hall-card:hover,html:not([data-theme]) .hall-card:hover,
html[data-theme=""] .ext-card:hover,html:not([data-theme]) .ext-card:hover{background:#1c2039}

/* ---------- 18. 收尾：去掉环境光晕，回到「平底 + 结构线」（对标 liblib 的平面感） ---------- */
body{background:var(--bg)}
body::before,body::after{display:none}
html[data-theme="light"] body{background:var(--bg)}

/* 侧栏行高收紧到 ~32px，对齐 liblib 的密度 */
.side-nav a{padding:6px 10px; line-height:1.3; min-height:0; font-size:13.5px}
.side-nav{gap:0}
.side-sub{padding:10px 4px 8px}
.side-filter select,.side-filter input{height:32px}
.sm-item{padding:6px 8px}
.sm-txt b{font-size:13.5px}
.sm-txt span{font-size:11.5px}

/* ---------- 19. 顶部栏溢出修复 + 分级降级 ---------- */
.top-in{gap:12px; min-width:0}
.top-acts{flex:0 1 auto; min-width:0}
.crumb{min-width:0; overflow:hidden; white-space:nowrap}
@media(max-width:1560px){ .th-pick{display:none} }
@media(max-width:1440px){ #userName{display:none} }
@media(max-width:1360px){ .crumb a[href*="tasks"],.crumb a[href*="assets"]{display:none} }
@media(max-width:1260px){ #topInvite{display:none} }
@media(max-width:1120px){ .top-acts .ta.promo{display:none} }


/* ---------- 20. 顶部栏降级断点调整（保留主题色点） ---------- */
@media(max-width:1560px){ #userName{display:none} }
@media(max-width:1420px){ .crumb a[href*="tasks"],.crumb a[href*="assets"]{display:none} }
@media(max-width:1340px){ #topInvite{display:none} }
@media(max-width:1180px){ .th-pick{display:none} }

/* ---------- 21. 恢复主题色点（覆盖此前 1560px 的隐藏规则） ---------- */
@media(min-width:1181px){ .th-pick{display:inline-flex} }

/* ---------- 22. 顶部栏微调，消除 4px 溢出 ---------- */
@media(max-width:1320px){
  .ticons{gap:2px}
  .top-acts .ta{padding:7px 8px}
  .top-acts{gap:6px}
}

/* ============================================================
   23. 交互细节升级（第五轮）
   ============================================================ */

/* 提示条：语义色由左侧朱线表达 */
.toast.ok{border-left-color:var(--ok)}
.toast.err{border-left-color:var(--err)}

/* 能力磁贴 / 模型分类：线性图标 */
.cap-ico{width:20px;height:20px;stroke-width:1.6;opacity:.92}
.caps .cap .ci{display:flex;align-items:center;gap:9px}
.sm-ico .ni{width:14px;height:14px}
.mc-cover .ni{width:30px;height:30px;stroke-width:1.4;opacity:.85}

/* 骨架屏（柔和呼吸，不用渐变扫光） */
.sk-card{pointer-events:none}
.sk-line{height:10px;border-radius:var(--r-mark);background:var(--rule);margin:11px 0;animation:skPulse 1.5s ease-in-out infinite}
.sk-line.w45{width:45%}.sk-line.w55{width:55%}.sk-line.w70{width:70%}.sk-line.w85{width:85%}.sk-line.w90{width:90%}
@keyframes skPulse{0%,100%{opacity:.42}50%{opacity:.85}}

/* 触屏设备：把仅在悬停出现的操作常显 */
@media (hover:none){
  .m-acts,.cv-tools{opacity:1!important}
  .mcard .mc-cover::after{content:"";opacity:0}
}

/* 键盘焦点在导航与卡片上更明确 */
.side-nav a:focus-visible,.sm-item:focus-visible,.mcard:focus-visible{outline:2px solid var(--gold);outline-offset:2px}


/* ============================================================
   24. 3D 导演台（机位预演 + 分镜表）
   ============================================================ */
.dv-wrap{display:grid;grid-template-columns:minmax(420px,1.35fr) minmax(300px,1fr);gap:16px;align-items:start}
@media(max-width:1000px){ .dv-wrap{grid-template-columns:1fr} }
.dv-left,.dv-right{display:flex;flex-direction:column;gap:12px}

.dv-plan{
  position:relative;width:100%;aspect-ratio:16/10;overflow:hidden;
  border:1px solid var(--rule);border-radius:var(--r-surface);
  background:
    repeating-linear-gradient(90deg,var(--rule) 0 1px,transparent 1px 10%),
    repeating-linear-gradient(0deg,var(--rule) 0 1px,transparent 1px 10%),
    var(--surface-2);
  touch-action:none;cursor:crosshair;
}
.dv-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.dv-mark{
  position:absolute;transform:translate(-50%,-50%);font-size:24px;line-height:1;
  cursor:grab;user-select:none;touch-action:none;z-index:2;
  filter:drop-shadow(0 2px 6px rgba(0,0,0,.35));
}
.dv-mark.drag{cursor:grabbing;transform:translate(-50%,-50%) scale(1.18)}
.dv-actor{font-size:24px}
.dv-hint{position:absolute;left:10px;bottom:8px;font-size:11.5px;color:var(--ink-3);pointer-events:none}

.dv-params{display:flex;flex-direction:column;gap:8px;background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-surface);padding:12px 14px}
.dv-params .vopts{align-items:center;gap:10px}
.dv-live{font-size:11.5px;color:var(--gold);border:1px solid var(--gold-soft);border-radius:var(--r-pill);padding:2px 9px;white-space:nowrap}
.dv-range{flex:1;min-width:120px;max-width:220px;accent-color:var(--brand);height:2px}
.dv-params .seg{flex-wrap:wrap}

.dv-view{
  position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;
  border:1px solid var(--rule-strong);border-radius:var(--r-surface);
  background:linear-gradient(180deg,var(--surface-2),var(--surface));
}
.dv-view::after{content:"";position:absolute;inset:0;pointer-events:none;border:1px solid rgba(255,255,255,.06)}
.dv-subject{position:absolute;transform:translate(-50%,-50%);color:var(--ink-3);transition:height .16s ease,left .16s ease,top .16s ease}
.dv-subject svg{width:100%;height:100%;fill:currentColor;display:block}
.dv-tag{position:absolute;left:10px;top:10px;font-size:11.5px;color:var(--ink-2);background:color-mix(in srgb,var(--surface) 82%,transparent);border:1px solid var(--rule);border-radius:var(--r-pill);padding:2px 10px}
.dv-warn{position:absolute;right:10px;top:10px;font-size:11.5px;color:var(--err);opacity:0;transition:opacity .16s}
.dv-warn.on{opacity:1}
.dv-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.dv-metrics>div{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-mark);padding:9px 11px}
.dv-metrics b{display:block;font-size:14.5px;color:var(--ink);font-variant-numeric:tabular-nums}
.dv-metrics span{font-size:11.5px;color:var(--ink-3)}

/* 运镜示意：0固定 1推近 2拉远 3横移 4环绕 5跟随 6升降 7手持 */
.dv-view.mv-1 .dv-subject{animation:dvPush 2.6s ease-in-out infinite}
.dv-view.mv-2 .dv-subject{animation:dvPull 2.6s ease-in-out infinite}
.dv-view.mv-3 .dv-subject{animation:dvPan 3s ease-in-out infinite}
.dv-view.mv-4 .dv-subject{animation:dvOrbit 3.4s ease-in-out infinite}
.dv-view.mv-5 .dv-subject{animation:dvFollow 2.8s ease-in-out infinite}
.dv-view.mv-6 .dv-subject{animation:dvCrane 3s ease-in-out infinite}
.dv-view.mv-7 .dv-subject{animation:dvHand 1.6s ease-in-out infinite}
@keyframes dvPush{0%,100%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.16)}}
@keyframes dvPull{0%,100%{transform:translate(-50%,-50%) scale(1.16)}50%{transform:translate(-50%,-50%) scale(1)}}
@keyframes dvPan{0%,100%{transform:translate(-62%,-50%)}50%{transform:translate(-38%,-50%)}}
@keyframes dvOrbit{0%{transform:translate(-64%,-50%) scale(1)}50%{transform:translate(-36%,-50%) scale(1.06)}100%{transform:translate(-64%,-50%) scale(1)}}
@keyframes dvFollow{0%,100%{transform:translate(-56%,-46%)}50%{transform:translate(-44%,-56%)}}
@keyframes dvCrane{0%,100%{transform:translate(-50%,-62%)}50%{transform:translate(-50%,-38%)}}
@keyframes dvHand{0%,100%{transform:translate(-51%,-50%) rotate(-.6deg)}50%{transform:translate(-49%,-50%) rotate(.6deg)}}

/* 分镜表 */
.shot-row{display:grid;grid-template-columns:34px 76px 84px 46px minmax(160px,1fr) auto;gap:8px;align-items:center;padding:8px 6px;border-bottom:1px solid var(--rule)}
.shot-row.on{background:var(--surface-2);box-shadow:inset 2px 0 0 var(--gold)}
.sr-no{font-family:var(--font-display);font-size:14.5px;color:var(--gold);text-align:center}
.sr-shot,.sr-move{font-size:12.5px;color:var(--ink)}
.sr-dur{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.sr-act{display:flex;gap:4px}
.sr-act .btn{padding:4px 8px;font-size:11.5px}
.shot-row .inp{padding:6px 9px;font-size:12.5px}
@media(max-width:820px){
  .shot-row{grid-template-columns:28px 1fr auto;grid-auto-rows:auto}
  .sr-move,.sr-dur{display:none}
  .sr-desc{grid-column:1 / -1}
}
.dv-prompt{
  margin:0;padding:14px 16px;white-space:pre-wrap;word-break:break-word;
  background:var(--surface-2);border:1px solid var(--rule);border-radius:var(--r-mark);
  font-family:var(--font-ui);font-size:13.5px;line-height:1.9;color:var(--ink-2);max-height:320px;overflow:auto;
}

/* ---------- 25. 导演台标记与读数 ---------- */
.dv-mark{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--r-mark);border:1px solid var(--rule-strong);background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--ink-2)}
.dv-mark .ni{width:19px;height:19px}
.dv-cam{border-color:var(--gold);color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,var(--surface))}
.dv-actor{color:var(--ink)}
.dv-mark:hover{border-color:var(--gold)}
.dv-view .dv-subject{transition:height .22s ease,left .22s ease,top .22s ease}


/* ============================================================
   26. 3D 导演台（场景搭建 + 多机位）
   ============================================================ */
.dv3-wrap{display:grid;grid-template-columns:minmax(460px,1.6fr) minmax(280px,1fr);gap:16px;align-items:start}
@media(max-width:1040px){ .dv3-wrap{grid-template-columns:1fr} }
.dv3-left,.dv3-right{display:flex;flex-direction:column;gap:10px;min-width:0}
.dv3-stage{position:relative;border:1px solid var(--rule);border-radius:var(--r-surface);overflow:hidden;background:var(--surface-2)}
.dv3-canvas{display:block;width:100%;aspect-ratio:16/9;touch-action:none;cursor:grab}
.dv3-canvas.drag{cursor:grabbing}
.dv3-badge{position:absolute;left:10px;top:10px;font-size:11.5px;color:var(--ink-2);background:color-mix(in srgb,var(--surface) 86%,transparent);border:1px solid var(--rule);border-radius:var(--r-pill);padding:2px 10px;pointer-events:none}
.dv3-help{position:absolute;left:10px;bottom:8px;right:10px;font-size:11.5px;color:var(--ink-3);pointer-events:none}
.dv3-multi{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.dv3-thumb{position:relative;border:1px solid var(--rule);border-radius:var(--r-mark);overflow:hidden;cursor:pointer;background:var(--surface-2)}
.dv3-thumb:hover{border-color:var(--gold)}
.dv3-thumb canvas{display:block;width:100%;aspect-ratio:16/9}
.dv3-thumb span{position:absolute;left:5px;top:4px;font-size:11.5px;color:var(--ink-2);background:color-mix(in srgb,var(--surface) 84%,transparent);border-radius:var(--r-pill);padding:1px 6px}
.dv3-prop{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-surface);padding:12px 14px;min-height:120px}
.dv3-ph{font-size:13.5px;font-weight:600;color:var(--ink);margin-bottom:8px}
.dv3-srow{display:grid;grid-template-columns:74px 1fr 40px;align-items:center;gap:8px;margin-bottom:6px;font-size:12.5px;color:var(--ink-3)}
.dv3-srow b{text-align:right;font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums}
.dv3-range{width:100%;accent-color:var(--brand);height:2px}
.dv3-more summary{cursor:pointer;font-size:13.5px;color:var(--ink-2);font-weight:600}
.dv3-more[open] summary{margin-bottom:4px}
.shot-row .sr-move{color:var(--ink-3)}

/* ============================================================
   27. 分镜画布（对标 liblib 画布交互：平移 / 缩放 / 节点 / 连线）
   ============================================================ */
.dvc-board{padding-bottom:10px}
.dvc-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:2px 0 10px}
.dvc-tools .seg{margin:0}
.dvc-vp{
  position:relative;height:420px;overflow:hidden;
  border:1px solid var(--rule);border-radius:var(--r-surface);
  background-color:var(--surface-2);
  background-image:radial-gradient(var(--rule-strong) 1px,transparent 1.4px);
  background-size:22px 22px;
  cursor:grab;touch-action:none;user-select:none;
}
.dvc-vp.panning{cursor:grabbing}
.dvc-world{position:absolute;left:0;top:0;width:4000px;height:2600px;transform-origin:0 0}
.dvc-edges{position:absolute;left:0;top:0;width:4000px;height:2600px;overflow:visible;pointer-events:none}
.dvc-edge{fill:none;stroke:var(--gold);stroke-width:2;pointer-events:stroke;cursor:pointer;opacity:.75}
.dvc-edge:hover{opacity:1;stroke-width:3}
.dvc-edge.tmp{stroke-dasharray:5 4;opacity:.9}
.dvc-node{
  position:absolute;width:232px;background:var(--surface);
  border:1px solid var(--rule);border-radius:var(--r-surface);
  box-shadow:0 8px 24px -14px rgba(0,0,0,.5);
}
.dvc-node.on{border-color:var(--gold)}
.dvc-head{display:flex;align-items:center;gap:8px;padding:7px 9px;border-bottom:1px solid var(--rule);cursor:grab}
.dvc-head b{font-size:12.5px;color:var(--ink)}
.dvc-cam{font-size:11.5px;color:var(--gold);border:1px solid var(--gold-soft);border-radius:var(--r-pill);padding:1px 7px}
.dvc-x{margin-left:auto;border:0;background:transparent;color:var(--ink-3);cursor:pointer;font-size:12.5px;padding:2px 4px}
.dvc-x:hover{color:var(--err)}
.dvc-body{padding:8px 9px 9px}
.dvc-thumb{display:block;width:100%;aspect-ratio:16/9;border-radius:var(--r-mark);background:var(--bg2)}
.dvc-meta{display:flex;gap:6px;flex-wrap:wrap;margin:7px 0 6px}
.dvc-meta span{font-size:11.5px;color:var(--ink-2);border:1px solid var(--rule);border-radius:var(--r-pill);padding:1px 7px}
.dvc-desc{padding:5px 8px;font-size:11.5px;margin-bottom:6px}
.dvc-foot{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--ink-3)}
.dvc-foot .btn{margin-left:auto;padding:3px 8px;font-size:11.5px}
.dvc-port{position:absolute;width:12px;height:12px;border-radius:50%;border:2px solid var(--gold);background:var(--surface);top:26px;cursor:crosshair}
.dvc-in{left:-7px}
.dvc-out{right:-7px}
.dvc-port:hover{background:var(--gold)}
.dvc-zoom{font-size:11.5px;color:var(--ink-3);min-width:40px;text-align:center;font-variant-numeric:tabular-nums}
@media(max-width:820px){ .dvc-vp{height:320px} }

/* ============================================================
   28. 3D 导演台 · 对标 LibTV（对象树 / 属性 / 画幅 / 截图）
   ============================================================ */
.dv3-bar{flex-wrap:wrap;justify-content:flex-end}
.dv3-sep{width:1px;height:18px;background:var(--rule-strong);margin:0 4px}
.dv3-main{display:grid;grid-template-columns:212px minmax(380px,1fr) 268px;gap:12px;align-items:start}
@media(max-width:1180px){ .dv3-main{grid-template-columns:180px 1fr} .dv3-prop{grid-column:1 / -1} }
@media(max-width:860px){ .dv3-main{grid-template-columns:1fr} .dv3-tree{order:2} }
.dv3-tree{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-surface);padding:10px}
.dv3-tree .inp{height:30px;font-size:12.5px;margin-bottom:8px}
.dv3-th{font-size:12.5px;color:var(--ink-3);margin:2px 0 7px}
.dv3-grp{font-size:11.5px;color:var(--ink-3);margin:9px 0 4px;padding-top:6px;border-top:1px solid var(--rule)}
.dv3-grp:first-child{border-top:0;padding-top:0;margin-top:2px}
.dv3-list{max-height:420px;overflow:auto}
.dv3-item{display:flex;align-items:center;gap:6px;padding:5px 6px;border-radius:var(--r-mark);cursor:pointer;font-size:12.5px;color:var(--ink-2)}
.dv3-item:hover{background:var(--surface-2)}
.dv3-item.on{background:var(--surface-2);box-shadow:inset 2px 0 0 var(--gold);color:var(--ink)}
.dv3-ic{display:inline-flex;width:14px;height:14px;color:var(--ink-3)}
.dv3-ic .ni{width:14px;height:14px}
.dv3-item b{font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dv3-tools{display:flex;gap:2px}
.dv3-tools button{border:0;background:transparent;color:var(--ink-3);cursor:pointer;font-size:11.5px;padding:1px 3px;border-radius:3px}
.dv3-tools button:hover{background:var(--surface);color:var(--ink)}
.dv3-name{margin-bottom:8px}
.dv3-name .inp{height:32px;font-size:13.5px}
.dv3-tabs{display:flex;gap:0;border-bottom:1px solid var(--rule);margin-bottom:8px}
.dv3-tabs button{border:0;background:transparent;color:var(--ink-3);font-size:12.5px;padding:6px 12px;border-bottom:2px solid transparent;cursor:pointer}
.dv3-tabs button.on{color:var(--ink);border-bottom-color:var(--gold);font-weight:600}
.dv3-poses{display:flex;flex-wrap:wrap;gap:6px}
.dv3-poses .btn.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.dv3-color{width:44px;height:26px;border:1px solid var(--rule);border-radius:var(--r-mark);background:none;cursor:pointer;padding:0}
.dv3-stage .dv3-canvas{aspect-ratio:16/9}

/* ---------- 29. 导演台左侧工具列 / 预设定格 ---------- */
.dv3-tree{padding:8px}
.dv3-vert{display:grid;grid-template-columns:1fr 1fr;gap:3px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid var(--rule)}
.dv3-vert button{border:1px solid var(--rule);background:transparent;color:var(--ink-2);font-size:11.5px;padding:6px 4px;border-radius:var(--r-mark);cursor:pointer}
.dv3-vert button:hover{border-color:var(--gold);color:var(--ink)}
.dv3-vert button.on{background:var(--ink);border-color:var(--ink);color:var(--paper);font-weight:600}
.dv3-pane{min-height:180px}
.dv3-grid2{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.dv3-grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px}
.dv3-grid2 .btn,.dv3-grid3 .btn{padding:5px 4px;font-size:11.5px;justify-content:center}
.dv3-grid2 .btn.on,.dv3-grid3 .btn.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.dv3-bgthumb{width:100%;border-radius:var(--r-mark);border:1px solid var(--rule);margin-top:8px}
.dv3-tabs button{font-size:12.5px}
.dv3-prop{max-height:620px;overflow:auto}

/* ---------- 30. 动画时间轴样式 ---------- */
.dv3-anim{padding:12px 14px}
.dv3-anim .act-row{flex-wrap:wrap;gap:6px}
.dv3-small{width:180px;height:26px;padding:0 8px;flex:none}
.dv3-num{width:70px;height:26px;padding:0 8px;flex:none}
.dv3-tracks{display:flex;flex-direction:column;gap:5px;margin-top:6px}
.dv3-track{display:flex;align-items:center;gap:10px;padding:6px 8px;border:1px solid var(--rule);border-radius:var(--r-mark);background:var(--surface-2);font-size:12.5px}
.dv3-track b{color:var(--ink)}

/* ============================================================
   31. 世界级官网标准：信息架构 / 移动导航 / 页脚 / 首页实景 / 回到顶部
   ============================================================ */

/* ---------- 31.1 侧栏分组 ---------- */
.side-secs{flex:1;overflow:auto;padding:2px 2px 8px;margin-top:2px}
.side-sec{margin-bottom:10px}
.side-cap{font-size:11.5px;letter-spacing:.14em;color:var(--ink-3);padding:2px 10px 5px;text-transform:none}
.side-sec a{display:flex;align-items:center;gap:9px;padding:6px 10px;border-radius:var(--r-mark);color:var(--ink-2);font-size:13.5px;line-height:1.3}
.side-sec a:hover{background:var(--surface);color:var(--ink)}
.side-sec a.on{background:var(--surface);color:var(--brand-text);box-shadow:inset 2px 0 0 var(--gold)}
.side-sec a .hot{margin-left:auto;font-style:normal;font-size:11.5px;color:#fff;background:var(--seal);border-radius:var(--r-mark);padding:0 5px;line-height:15px}
.side-nav{gap:2px}

/* ---------- 31.2 移动端底部导航 + 抽屉 ---------- */
.mob-bar{display:none}
.side-mask{display:none}
@media(max-width:1100px){
  .mob-bar{
    display:flex;position:fixed;left:0;right:0;bottom:0;z-index:150;
    background:color-mix(in srgb,var(--paper) 94%,transparent);backdrop-filter:blur(12px);
    border-top:1px solid var(--rule);padding:6px 4px calc(6px + env(safe-area-inset-bottom));
  }
  .mob-bar a,.mob-bar button{
    flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;border:0;background:transparent;
    color:var(--ink-3);font-size:11.5px;padding:4px 0;border-radius:var(--r-mark);cursor:pointer;text-decoration:none;
  }
  .mob-bar .ni{width:19px;height:19px}
  .mob-bar a.on,.mob-bar button.on{color:var(--brand-text)}
  .side{
    display:flex!important;position:fixed;left:0;top:0;bottom:0;z-index:210;
    transform:translateX(-104%);transition:transform .22s ease;box-shadow:0 0 40px rgba(0,0,0,.35);
    padding-bottom:72px;
  }
  .side.open{transform:translateX(0)}
  .side-mask{display:block;position:fixed;inset:0;z-index:200;background:rgba(8,10,20,.5);opacity:0;pointer-events:none;transition:opacity .22s}
  .side-mask.on{opacity:1;pointer-events:auto}
  .main .wrap{padding:0 14px}
  .foot{padding-bottom:76px}
}

/* ---------- 31.3 页脚 ---------- */
.foot{border-top:1px solid var(--rule);margin-top:40px;padding:32px 20px 26px;text-align:left}
.foot-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:28px;max-width:1320px;margin:0 auto}
.fg-brand b{font-family:var(--font-display);font-size:19px;color:var(--ink);display:block;margin-bottom:8px}
.fg-brand p{font-size:12.5px;color:var(--ink-3);line-height:1.8;max-width:34ch;margin-bottom:10px}
.fg-col h4{font-size:12.5px;color:var(--ink);margin:0 0 10px;font-weight:600;letter-spacing:.04em}
.fg-col a{display:block;font-size:12.5px;color:var(--ink-3);line-height:2.1}
.fg-col a:hover{color:var(--brand-text)}
.foot-bottom{max-width:1320px;margin:22px auto 0;padding-top:14px;border-top:1px solid var(--rule);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-3)}
@media(max-width:820px){ .foot-grid{grid-template-columns:1fr 1fr} .foot{padding-left:16px;padding-right:16px} }

/* ---------- 31.4 首页实景 Hero ---------- */
.hero2{display:grid;grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr);gap:34px;align-items:center;max-width:none;padding:38px 0 6px}
.hero2 h1{font-size:clamp(26px,3.2vw,40px);line-height:1.28;max-width:20ch}
.hero2 .hero-ask{margin:22px 0 8px;max-width:none}
.hero2 .hero-meta{max-width:none;margin-top:24px}
.hero-visual{position:relative;border:1px solid var(--rule);border-radius:var(--r-surface);overflow:hidden;background:#101010;aspect-ratio:16/10;box-shadow:0 30px 70px -40px rgba(10,14,30,.6)}
.hero-visual canvas{display:block;width:100%;height:100%;touch-action:none}
.hv-cap{position:absolute;left:12px;bottom:10px;font-size:11.5px;color:#9C968C;pointer-events:none}
@media(max-width:900px){ .hero2{grid-template-columns:1fr;gap:22px} .hero2 h1{max-width:none} }

/* ---------- 31.5 回到顶部 ---------- */
.to-top{
  position:fixed;right:22px;bottom:26px;z-index:140;width:38px;height:38px;border-radius:var(--r-mark);
  border:1px solid var(--rule-strong);background:var(--surface);color:var(--ink-2);cursor:pointer;font-size:14.5px;
  opacity:0;pointer-events:none;transition:opacity .22s ease,border-color .16s ease;box-shadow:0 10px 26px -18px rgba(10,14,30,.6);
}
.to-top.on{opacity:1;pointer-events:auto}
.to-top:hover{border-color:var(--gold);color:var(--ink)}
@media(max-width:1100px){ .to-top{bottom:74px;right:16px} }

/* ---------- 31.6 分段进入（一次性编排，尊重 reduce） ---------- */
.hero-copy>*{animation:heroIn .5s cubic-bezier(.2,.7,.2,1) both}
.hero-copy>*:nth-child(1){animation-delay:.02s}
.hero-copy>*:nth-child(2){animation-delay:.08s}
.hero-copy>*:nth-child(3){animation-delay:.14s}
.hero-copy>*:nth-child(4){animation-delay:.2s}
.hero-copy>*:nth-child(5){animation-delay:.26s}
.hero-visual{animation:heroIn .6s .16s cubic-bezier(.2,.7,.2,1) both}
@keyframes heroIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){ .hero-copy>*,.hero-visual{animation:none} }

/* ============================================================
   32. 公司级基础件：启动屏 / 设计令牌 / 无障碍 / 快捷键面板
   ============================================================ */

/* ---------- 32.1 设计令牌（字号阶梯 + 间距阶梯） ---------- */
:root{
  --t-2xs:11.5px; --t-xs:12.5px; --t-sm:13.5px; --t-md:14.5px; --t-lg:16px; --t-xl:19px; --t-2xl:24px; --t-3xl:32px; --t-4xl:46px;
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-6:24px; --s-8:32px; --s-12:48px;
}
body{font-size:var(--t-md)}
.sec-h{margin:var(--s-8) 0 var(--s-4)}
.sec-h h2{font-size:var(--t-xl)}
.sec-h p{font-size:var(--t-sm)}
.page-h{margin:var(--s-1) 0 var(--s-4);padding-bottom:var(--s-3)}
.meta,.tip{font-size:var(--t-sm)}

/* ---------- 32.2 启动屏 ---------- */
.boot{
  position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;
  background:var(--bg);transition:opacity .32s ease;
}
.boot.out{opacity:0;pointer-events:none}
.boot-in{display:flex;flex-direction:column;align-items:center;gap:10px}
.boot-mark{
  width:46px;height:46px;border:1.5px solid var(--seal);border-radius:3px;color:var(--seal);
  display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:24px;
}
.boot-in b{font-family:var(--font-display);font-size:16px;color:var(--ink);letter-spacing:.04em}
.boot-bar{width:132px;height:2px;background:var(--rule);overflow:hidden;border-radius:2px;margin-top:2px}
.boot-bar i{display:block;height:100%;width:38%;background:var(--gold);animation:bootRun 1.15s ease-in-out infinite}
.boot-tip{font-size:var(--t-xs);color:var(--ink-3)}
@keyframes bootRun{0%{transform:translateX(-100%)}100%{transform:translateX(360%)}}
@media (prefers-reduced-motion:reduce){ .boot-bar i{animation:none;width:100%} }

/* ---------- 32.3 无障碍 ---------- */
.skip{
  position:fixed;left:8px;top:-40px;z-index:500;background:var(--ink);color:var(--paper);
  padding:8px 14px;border-radius:var(--r-mark);font-size:13.5px;transition:top .16s ease;
}
.skip:focus{top:8px}
#view:focus{outline:none}
.kbd-list{display:flex;flex-direction:column;gap:8px;margin:12px 0}
.kbd-list>div{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--ink-2)}
.kbd-list kbd{
  display:inline-block;min-width:24px;text-align:center;padding:2px 7px;border:1px solid var(--rule-strong);
  border-bottom-width:2px;border-radius:var(--r-mark);background:var(--surface-2);font-family:var(--font-ui);
  font-size:11.5px;color:var(--ink);
}

/* ---------- 33. AI 搭场景面板 ---------- */
.dv3-ai{width:100%;min-height:86px;font-size:12.5px;line-height:1.7;resize:vertical;margin-bottom:8px}
.dv3-aiprev{margin-top:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dv3-aiprev img{width:88px;height:60px;object-fit:cover;border-radius:var(--r-mark);border:1px solid var(--rule)}
.dv3-vert{grid-template-columns:1fr 1fr}

/* ============================================================
   34. 高级化：模型卡信息层级 / 空状态 / 细节排版
   ============================================================ */

/* ---------- 34.1 模型卡：一条分隔线，两类信息 ---------- */
.mcard h3{letter-spacing:.012em;font-weight:640;margin-bottom:2px}
.mcard .ven{margin-bottom:0}
.mcard .mc-caps{font-size:11.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.mcard .mc-foot{
  display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  margin-top:11px;padding-top:10px;border-top:1px solid var(--rule);
}
.mcard .fee{font-size:14.5px;font-weight:640;color:var(--ink);white-space:nowrap;letter-spacing:.01em}
.mcard .note{
  margin-top:7px;font-size:11.5px;color:var(--ink-3);line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
}
.mcard .cap-row{display:none}         /* 能力徽标已并入 mc-foot 文本 */

/* ---------- 34.2 侧栏模型行：徽标最多两个，价格右对齐 ---------- */
.sm-bdg{font-style:normal;font-size:11.5px;line-height:15px;padding:0 5px;border-radius:var(--r-mark);border:1px solid var(--rule);color:var(--ink-3);white-space:nowrap}
.sm-bdg.hot{color:var(--seal);border-color:color-mix(in srgb,var(--seal) 45%,transparent)}
.sm-bdg.rec{color:var(--gold);border-color:var(--gold-soft)}
.sm-bdg.free{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 45%,transparent)}
.sm-item{gap:8px}
.sm-txt b{letter-spacing:.01em}

/* ---------- 34.3 空状态：线性图标 + 短引导 ---------- */
.empty-ico{
  width:44px;height:44px;margin:0 auto 10px;border:1px solid var(--rule);border-radius:50%;
  display:flex;align-items:center;justify-content:center;color:var(--ink-3);
}
.empty-ico .ni{width:20px;height:20px}

/* ---------- 34.4 细节：价格与数字统一等宽、标题字距 ---------- */
.money,.fee,.vprice,.bal,.dv3-srow b,.settle-stat b,.sc-num b,.mc-foot .fee{font-variant-numeric:tabular-nums}
.sec-h h2,.page-h h1{letter-spacing:.015em}
.tip,.meta{letter-spacing:.005em}

/* ============================================================
   35. 卡片封面系统升级
   ============================================================ */

/* 35.1 图片封面：内描边定义边缘 + 渲染即淡入 + 悬停微缩放 */
.mc-cover{background:var(--surface-2)}
.mc-cover.has-img{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--rule-strong) 70%,transparent)}
.mc-cover img{animation:imgIn .38s ease both}
@keyframes imgIn{from{opacity:0}to{opacity:1}}
.mcard:hover .mc-cover img{transform:scale(1.025)}
@media (prefers-reduced-motion:reduce){ .mc-cover img{animation:none} .mcard:hover .mc-cover img{transform:none} }

/* 35.2 「效果」角标：右上角半透明药丸，压在图上可读 */
.mc-badge{
  position:absolute;right:8px;top:8px;z-index:3;
  font-size:11.5px;line-height:18px;padding:0 8px;border-radius:var(--r-pill);
  background:rgba(8,10,20,.55);color:#fff;backdrop-filter:blur(4px);
}
.mc-badge.play{background:color-mix(in srgb,var(--seal) 82%,transparent)}

/* 35.3 占位封面：界格网纹 + 大号分类图标 + 厂商落款 */
.mc-cover.grad{
  background:
    repeating-linear-gradient(0deg, color-mix(in srgb,var(--rule) 80%,transparent) 0 1px, transparent 1px 16px),
    repeating-linear-gradient(90deg, color-mix(in srgb,var(--rule) 80%,transparent) 0 1px, transparent 1px 16px),
    var(--surface-2);
  box-shadow:inset 0 3px 0 var(--gv,rgba(201,162,78,.5));
  color:var(--ink-3);
}
.mc-cover.grad .ni{width:52px;height:52px;stroke-width:1.2;opacity:.42}
.mc-ph-vendor{
  position:absolute;left:0;right:0;bottom:9px;text-align:center;
  font-size:11.5px;letter-spacing:.06em;color:var(--ink-3);opacity:.8;
}

/* 35.4 封面上的模型标签：贴左上，半透明底 */
.mcard .mc-top{left:8px;top:8px}
.mcard .mc-top .tag{background:rgba(8,10,20,.55);color:#fff;border-color:transparent;backdrop-filter:blur(4px)}

/* ============================================================
   36. 封面系统 v2：厂商色晕 · 徽章主体 · 载入骨架 · 悬停引导
   ============================================================ */

/* 36.1 封面统一变量与画幅（图片封面与占位封面共用一套底色） */
.mc-cover{--vh:123,97,255; height:118px}

/* 36.2 占位封面：界格底 + 厂商色晕 + 圆形能力徽章 + 类别落款 */
.mc-cover.ph,
.mc-cover.nofit{
  background:
    radial-gradient(58% 62% at 50% 40%, rgba(var(--vh),.20), transparent 72%),
    repeating-linear-gradient(0deg, color-mix(in srgb,var(--rule) 78%,transparent) 0 1px, transparent 1px 16px),
    repeating-linear-gradient(90deg, color-mix(in srgb,var(--rule) 78%,transparent) 0 1px, transparent 1px 16px),
    var(--surface-2);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--rule-strong) 70%,transparent), inset 0 3px 0 rgba(var(--vh),.55);
  color:var(--ink-3);
}
.mc-ph-glow{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(52% 56% at 50% 42%, rgba(var(--vh),.16), transparent 74%)}
.mc-ph-medal{
  position:relative;z-index:1;width:56px;height:56px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  border:1px solid color-mix(in srgb, rgb(var(--vh)) 32%, var(--rule-strong));
  background:color-mix(in srgb, var(--surface) 62%, transparent);
  box-shadow:0 6px 18px -12px rgba(0,0,0,.5);
  color:color-mix(in srgb, rgb(var(--vh)) 62%, var(--ink));
}
.mc-cover.ph .mc-ph-medal .ni,
.mc-cover.nofit .mc-ph-medal .ni{width:26px;height:26px;stroke-width:1.35;opacity:1}
.mc-ph-cat{position:absolute;left:0;right:0;bottom:10px;text-align:center;z-index:1;
  font-size:11.5px;letter-spacing:.16em;color:var(--ink-3);opacity:.82}

/* 36.3 图片封面：底部压暗 + 内描边 + 悬停描金引导线 */
.mc-scrim{position:absolute;inset:auto 0 0 0;height:44%;z-index:1;pointer-events:none;
  background:linear-gradient(transparent, rgba(6,8,18,.42))}
.mc-ring{position:absolute;inset:0;z-index:3;border-radius:inherit;pointer-events:none;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--rule-strong) 70%,transparent);
  transition:box-shadow .22s ease}
.mcard:hover .mc-ring{box-shadow:inset 0 0 0 1px var(--gold-soft)}

/* 36.4 载入骨架：图片未就绪时的柔和流光，加载完成自动停 */
.mc-cover.has-img{
  background:linear-gradient(100deg,var(--surface-2) 28%, color-mix(in srgb,var(--ink) 5%,var(--surface-2)) 50%, var(--surface-2) 72%);
  background-size:220% 100%;
  animation:covShim 1.25s linear infinite;
}
@keyframes covShim{from{background-position:120% 0}to{background-position:-120% 0}}
.mc-cover.has-img.img-ok{animation:none}
@media (prefers-reduced-motion:reduce){ .mc-cover.has-img{animation:none} }

/* 36.5 图片加载失败：就地换成设计好的占位封面，不留破图 */
.mc-ph-fb{display:none;position:absolute;inset:0;align-items:center;justify-content:center}
.mc-cover.nofit .mc-ph-fb{display:flex}
.mc-cover.nofit img,
.mc-cover.nofit .mc-scrim,
.mc-cover.nofit .mc-ring,
.mc-cover.nofit .mc-badge{display:none!important}

/* 36.6 角标减重：只做一枚，与左上标签对称 */
.mc-badge{box-shadow:0 4px 12px -8px rgba(0,0,0,.7)}

/* ============================================================
   37. 封面系统 v3：型号字标（每张封面各不相同）
   ============================================================ */

/* 37.1 字标主体：系列名大、版本号小，居中偏上，压住留白 */
.mc-ph-mark{
  position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;
  gap:4px;padding:0 14px;max-width:100%;text-align:center;
}
.mc-ph-mark b{
  font-family:var(--font-ui);font-size:24px;font-weight:640;line-height:1.12;
  letter-spacing:.005em;color:var(--ink);
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.mc-ph-mark i{
  font-style:normal;font-size:11.5px;line-height:1;letter-spacing:.1em;
  color:var(--ink-3);text-transform:uppercase;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
/* 徽章版式（旧结构）保留兜底 */
.mc-ph-medal{display:none}

/* 37.2 类别落款：与字标拉开层次，弱但不虚 */
.mc-ph-cat{font-size:11.5px;letter-spacing:.18em;opacity:.7}

/* 37.3 左上角标签提到可读对比度（原来 .55 透明压不住暗底） */
.mcard .mc-top .tag{
  background:rgba(10,12,24,.74);color:#fff;font-weight:560;
  border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(6px);
}
.mcard .mc-top .tag.free{background:rgba(10,12,24,.74);color:#7CE0A8}
.mcard .mc-top .tag.hot{background:rgba(10,12,24,.74);color:#8FD8C0}
.mcard .mc-top .tag.new{background:rgba(10,12,24,.74);color:#C6B8FF}

/* 37.4 卡片标题最多两行，同行卡片高度对齐 */
.mcard h3{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;line-height:1.35;min-height:calc(1.35em * 2);
}

/* 37.5 封面高度微调，让字标与图面比例更紧实 */
.mc-cover{height:112px}

/* ============================================================
   38. 无限画布 v2：框选 · 平移模式 · 可点连线 · 底部提示
   ============================================================ */
.cv-sep{width:1px;height:20px;background:var(--rule);margin:0 2px}
.cv-viewport.space{cursor:grab}
.cv-viewport.space:active{cursor:grabbing}
.cv-viewport.pan{cursor:grab}
.cv-marquee{position:absolute;display:none;z-index:5;pointer-events:none;
  border:1px solid var(--brand);background:color-mix(in srgb,var(--brand) 14%,transparent);
  border-radius:2px;box-shadow:0 0 0 1px color-mix(in srgb,var(--brand) 22%,transparent)}
.cv-hint{position:absolute;left:10px;bottom:10px;z-index:4;pointer-events:none;
  font-size:11.5px;color:var(--ink-3);background:color-mix(in srgb,var(--surface) 84%,transparent);
  border:1px solid var(--rule);border-radius:var(--r-pill);padding:3px 10px;backdrop-filter:blur(6px)}
.cv-handle.lft{left:-7px;right:auto}
.cv-link{pointer-events:stroke;cursor:pointer}
.cv-link:hover{stroke:var(--seal);stroke-width:3}
.cv-link-dot{fill:var(--brand);opacity:.85;pointer-events:none}
.cv-card.dragging{opacity:.92;box-shadow:0 18px 40px rgba(201,162,78,.28);z-index:6}
.cv-card.dragging *{pointer-events:none}
.cv-mini i.on{background:var(--brand);opacity:.9}
@media (max-width:760px){ .cv-hint{display:none} .cv-viewport{height:64vh} }

/* ---------- 38.2 生成节点（画布上的 AI 链路节点） ---------- */
.cv-gen{min-height:130px;padding:12px;display:flex;flex-direction:column;gap:6px;justify-content:center;
  background:linear-gradient(160deg, color-mix(in srgb,var(--brand) 12%,var(--surface-2)), var(--surface-2))}
.cv-gen-kind{font-size:11.5px;letter-spacing:.14em;color:var(--brand);font-weight:640}
.cv-gen-state{font-size:12.5px;color:var(--ink-2);line-height:1.5}
.cv-gen-pv{font-size:11.5px;color:var(--ink-3);line-height:1.6;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cv-gen.wait{background:repeating-linear-gradient(45deg,transparent 0 8px,color-mix(in srgb,var(--rule) 70%,transparent) 8px 9px),var(--surface-2)}
.cv-gen.wait .cv-gen-kind{color:var(--ink-3)}
.cv-gen.busy{animation:cvPulse 1.1s ease-in-out infinite}
@keyframes cvPulse{0%,100%{opacity:1}50%{opacity:.62}}
.cv-card .cv-tools button[data-run]{color:var(--brand);font-weight:700}
@media (prefers-reduced-motion:reduce){ .cv-gen.busy{animation:none} }

/* ============================================================
   39. 品牌识别 / 顶栏秩序 / 首屏呼吸（对标获奖级评审的针对性修整）
   ============================================================ */

/* ---------- 39.1 首屏「砚池」识别：界格底纹 + 朱砂印 ---------- */
.hero2{position:relative;isolation:isolate;padding:30px 0 2px}
.hero2::before{
  content:""; position:absolute; inset:-34px 0 -8px; z-index:-1; pointer-events:none; opacity:.7;
  background-image:
    repeating-linear-gradient(0deg, color-mix(in srgb,var(--rule) 58%,transparent) 0 1px, transparent 1px 34px),
    repeating-linear-gradient(90deg, color-mix(in srgb,var(--rule) 58%,transparent) 0 1px, transparent 1px 34px),
    radial-gradient(58% 68% at 76% 26%, color-mix(in srgb,var(--brand) 18%,transparent), transparent 72%);
  -webkit-mask-image:radial-gradient(82% 84% at 38% 46%, #000 26%, transparent 92%);
  mask-image:radial-gradient(82% 84% at 38% 46%, #000 26%, transparent 92%);
}
/* 朱砂印：把「砚」做成印章，给衬线标题一个存在的理由 */
.hero-copy h1{position:relative;padding-right:2.1em}
.hero-copy h1::after{
  content:"砚"; position:absolute; right:0; top:.04em;
  width:1.4em; height:1.4em; display:flex; align-items:center; justify-content:center;
  font-family:var(--font-display); font-weight:700; font-size:.44em; line-height:1;
  color:#fff; background:var(--seal); border-radius:3px;
  transform:rotate(-3.5deg); opacity:.94;
  box-shadow:0 2px 0 color-mix(in srgb,var(--seal) 62%,#000), inset 0 0 0 1px rgba(255,255,255,.16);
}
.hero2 .hero-meta{margin-top:18px}
.hero2 + .block .sec-h{margin-top:18px}
/* 首屏顶部那道描金引导线，把视线钉在标题上 */
.hero2 .hero-copy::before{
  content:""; display:block; width:44px; height:2px; margin-bottom:16px;
  background:linear-gradient(90deg,var(--gold),transparent);
}
@media (max-width:640px){
  .hero-copy h1{padding-right:0}
  .hero-copy h1::after{position:static; display:inline-flex; margin-left:.35em; vertical-align:.06em; width:1.2em; height:1.2em}
}

/* ---------- 39.2 顶栏秩序：分组留白 + 分隔线 + 禁止折行 ---------- */
.top-in{gap:12px}
.top-in .user{padding-left:12px; border-left:1px solid var(--rule)}
.top-in .user>*{flex:0 0 auto}
#userName{max-width:96px}
#logoutBtn{white-space:nowrap; padding:6px 10px; border-radius:8px; color:var(--ink-3)}
#logoutBtn:hover{color:var(--ink); background:var(--surface-2)}
.top-acts{gap:4px}
@media (max-width:1180px){ #userName{display:none} }

/* ---------- 39.3 卡片/区块的呼吸感统一 ---------- */
.block{margin-top:var(--s-8)}
.block>.sec-h{margin-top:0}
.hero2+.block{margin-top:var(--s-6)}

/* 39.4 首屏防横向溢出（装饰层不得撑出滚动条） */
.hero2{overflow:visible}
.hero2::before{max-width:100%}
body{overflow-x:hidden}

/* ---------- 39.5 顶栏减负：主题色板收进下拉，功能区加分组分隔 ---------- */
.ticons{position:relative}
.th-pick{
  position:absolute; right:0; top:calc(100% + 10px); display:none;
  grid-template-columns:repeat(6,1fr); gap:6px; padding:10px; margin:0;
  background:var(--surface); border:1px solid var(--rule); border-radius:var(--r-surface);
  box-shadow:0 20px 44px -22px rgba(0,0,0,.65); z-index:60;
}
.ticons:hover .th-pick{ display:grid; }
.th-pick::before{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}
.top-acts{gap:2px; padding-left:12px; border-left:1px solid var(--rule)}
.top-acts .ta{padding:6px 9px}
.ticons{padding-left:10px; border-left:1px solid var(--rule)}
@media (hover:none){ .th-pick{display:none} }
@media (max-width:1400px){ .top-acts .ta.promo{display:none} }

/* ============================================================
   40. 墨池界格：把「紫色辉光 + 圆点噪点」换成站点级的墨/纸/界格语言
   （这一层决定全站气质，是"看起来像不像模板"的关键）
   ============================================================ */

/* ---------- 40.1 站级底：界格格网 + 墨晕，取代紫光 ---------- */
body::before{
  inset:0 !important; z-index:0;
  background:
    radial-gradient(120% 86% at 100% 0%, color-mix(in srgb,var(--brand) 12%,transparent), transparent 56%),
    radial-gradient(96% 72% at 0% 100%, color-mix(in srgb,var(--gold) 9%,transparent), transparent 60%),
    repeating-linear-gradient(0deg, color-mix(in srgb,var(--rule) 55%,transparent) 0 1px, transparent 1px 32px),
    repeating-linear-gradient(90deg, color-mix(in srgb,var(--rule) 55%,transparent) 0 1px, transparent 1px 32px);
  -webkit-mask-image:radial-gradient(130% 108% at 46% 14%, #000 34%, transparent 94%);
  mask-image:radial-gradient(130% 108% at 46% 14%, #000 34%, transparent 94%);
}
body::after{ background-image:none !important; }

/* ---------- 40.2 小节标题：朱砂引首 + 描金细线 ---------- */
.sec-h{position:relative; padding-bottom:10px; border-bottom:1px solid var(--rule)}
.sec-h::after{content:"";position:absolute;left:0;bottom:-1px;width:52px;height:1px;background:var(--gold)}
.sec-h h2{display:flex;align-items:center;gap:10px}
.sec-h h2::before{
  content:""; flex:0 0 auto; width:3px; height:.9em; border-radius:1px;
  background:linear-gradient(180deg,var(--seal),color-mix(in srgb,var(--seal) 55%,transparent));
}
.page-h::after{width:64px}

/* ---------- 40.3 侧栏：分组小标题走描金，选中态用朱砂侧印 ---------- */
.side-cap{color:var(--gold); letter-spacing:.2em; font-size:11.5px; opacity:.9}
.side-sec a.on{box-shadow:inset 2px 0 0 var(--seal) !important}
.side-sec a.on{color:var(--ink)}
.side-sec{position:relative}
.side-brand{padding-bottom:16px; border-bottom:1px solid var(--rule); margin-bottom:12px}
.side-brand b{font-family:var(--font-display); letter-spacing:.06em; font-size:17px}

/* ---------- 40.4 卡片：悬停用描金引首，不再用紫色渐变条 ---------- */
.mcard::before{
  height:2px;
  background:linear-gradient(90deg,var(--gold),color-mix(in srgb,var(--gold) 25%,transparent));
}
.mcard:hover{border-color:color-mix(in srgb,var(--gold) 42%,var(--rule))}
.cap{border-top:2px solid transparent; transition:border-color .16s ease}
.cap:hover{border-top-color:var(--gold)}

/* ---------- 40.5 顶栏：底部描金细线，与界格呼应 ---------- */
.top{border-bottom-color:var(--rule)}
.top::after{
  content:""; position:absolute; left:0; bottom:-1px; width:120px; height:1px;
  background:linear-gradient(90deg,var(--gold),transparent);
}

/* ============================================================
   41. 描金收敛：金只做「引首 / 印记 / 主动作」，不做地毯式铺色
   ============================================================ */

/* 41.1 链接与文字强调：从亮金改成哑金砂，退到正文之后 */
:root{ --brand2:#C4B79C; }
html[data-theme="violet"]{ --brand2:#8b7cf8; }
html[data-theme="light"]{ --brand2:#8A6A22; }

/* 41.2 次要描边不再用金：只有当前态与主动作才用金 */
.mcard:hover{border-color:var(--rule-strong)}
.ch-card:hover,.hall-card:hover{border-color:var(--rule-strong)}
.side-sec a:hover{color:var(--ink)}

/* 41.3 次要按钮回到中性描边，把实心描金留给唯一主 CTA */
.btn.ghost{background:transparent; border:1px solid var(--rule-strong); color:var(--ink)}
.btn.ghost:hover{border-color:var(--gold)}

/* 41.4 只有「数据数字」和品牌落款保留描金 */
.hero-meta dd{color:var(--gold)}

/* ============================================================
   42. 墨卷：把首屏当杂志封面排，而不是"深色 SaaS 首页"
   ============================================================ */

/* 42.1 拉丁小字眉题：给中文主标题一个编辑体例上的"上游" */
.hero2 .hero-copy::before{
  content:"YANCHI · AI CREATION STUDIO";
  display:block; width:auto; height:auto; margin:0 0 20px; background:none;
  font-family:var(--font-ui); font-size:11.5px; font-weight:600;
  letter-spacing:.3em; color:var(--gold); text-transform:uppercase; opacity:.92;
}

/* 42.2 主标题：放大、收行距、收紧字距，让衬线当一次主角 */
.hero2 h1{
  font-size:clamp(32px,4.3vw,56px); line-height:1.12;
  letter-spacing:-.012em; max-width:15ch; font-weight:700;
}
.hero2 .hero-copy>p{font-size:16px; line-height:1.78; color:var(--ink-2); max-width:34em; margin-top:14px}

/* 42.3 数据行当刊物栏排，数字用大号衬线 */
.hero2 .hero-meta{margin-top:26px; padding:16px 0}
.hero2 .hero-meta dt{font-size:11.5px; letter-spacing:.14em; color:var(--ink-3)}
.hero2 .hero-meta dd{font-size:26px; line-height:1.1; font-weight:700; margin-top:4px}

/* 42.4 小节标题：编号感引首 + 渐隐描金线 */
.sec-h{align-items:center; padding-bottom:12px}
.sec-h>div:first-child{gap:14px}
.sec-h h2{font-size:22px; letter-spacing:.01em}
.sec-h h2::before{width:3px; height:1.05em}
.sec-h::after{
  width:160px; height:2px; border-radius:2px;
  background:linear-gradient(90deg,var(--gold) 0 22%, color-mix(in srgb,var(--gold) 45%,transparent) 62%, transparent 100%);
}

/* 42.5 版面节奏：区块之间给足呼吸 */
.block{margin-top:56px}
.hero2+.block{margin-top:40px}
.eff-strip{gap:14px}

@media (max-width:900px){
  .hero2 h1{font-size:clamp(28px,7vw,40px); max-width:none}
  .hero2 .hero-copy::before{margin-bottom:14px; letter-spacing:.2em}
  .block{margin-top:40px}
}

/* ============================================================
   43. 视线锚点：核心卖点最强、数据次要、其余退后，把节奏拉开
   ============================================================ */

/* 43.1 首屏唯一主角：slogan + 输入框 */
.hero2 h1{font-weight:700; text-shadow:0 1px 0 rgba(0,0,0,.25)}
.hero2 .hero-ask{margin:26px 0 10px; padding:8px 8px 8px 20px; border-radius:999px;
  background:color-mix(in srgb,var(--surface) 92%,transparent);
  border:1px solid color-mix(in srgb,var(--gold) 38%,var(--rule));
  box-shadow:0 18px 44px -26px rgba(0,0,0,.85)}
.hero2 .hero-ask:focus-within{border-color:var(--gold); box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 16%,transparent),0 18px 44px -26px rgba(0,0,0,.85)}
.hero2 .hero-ask .btn{background:var(--grad); color:#1A1408; font-weight:700}

/* 43.2 数据行退为刊物脚注：小、淡、不抢视线 */
.hero2 .hero-meta{margin-top:22px; padding:12px 0; opacity:.86}
.hero2 .hero-meta dt{font-size:11.5px; letter-spacing:.12em; color:var(--ink-3)}
.hero2 .hero-meta dd{font-size:19px; font-weight:600; margin-top:2px; color:var(--ink-2)}

/* 43.3 次级入口再退一档 */
.hero2 .hero-note{font-size:12.5px; opacity:.82}
.hero2 .hero-copy>p{color:var(--ink-2); opacity:.92}

/* 43.4 区块之间留足呼吸，让每屏只有一个重心 */
.block{margin-top:72px}
.hero2+.block{margin-top:52px}
.sec-h{margin-bottom:20px}
.grid,.caps,.eff-strip{gap:18px}

/* 43.5 卡片整体降噪：默认更安静，悬停才起来 */
.mcard{background:color-mix(in srgb,var(--card) 88%,transparent); border-color:color-mix(in srgb,var(--rule) 75%,transparent)}
.mcard:hover{background:var(--card)}

/* ============================================================
   44. 工具页统一：把首页的墨卷体例下沉到所有工具页 + 修移动端溢出
   ============================================================ */

/* 44.1 工具页页头：与首页同一套体例（衬线标题 + 描金引首） */
.page-h h1{font-family:var(--font-display); font-size:26px; letter-spacing:.005em}
.page-h p{max-width:62ch; line-height:1.7}
.page-h::after{width:120px; height:2px; border-radius:2px;
  background:linear-gradient(90deg,var(--gold) 0 26%, color-mix(in srgb,var(--gold) 42%,transparent) 64%, transparent 100%)}

/* 44.2 工具面板：宣纸面 + 描金上缘，和卡片同一套"纸"的逻辑 */
.tool-panel,.tool-preview{
  border-radius:var(--r-surface); padding:22px;
  background:color-mix(in srgb,var(--card) 92%,transparent);
  border:1px solid color-mix(in srgb,var(--rule) 80%,transparent);
  box-shadow:inset 0 2px 0 color-mix(in srgb,var(--gold) 55%,transparent);
}
.tool-preview{background:color-mix(in srgb,var(--bg2) 92%,transparent); box-shadow:inset 0 2px 0 color-mix(in srgb,var(--rule) 90%,transparent)}
.tool-panel .lbl{margin-top:16px}
.tool-panel .act-row{margin-top:18px}
.tool-panel .tip{margin-top:12px; padding-top:12px; border-top:1px solid var(--rule)}

/* 44.3 上传槽位：从"虚线框"改成有明确落点的纸槽 */
.slot{
  border:1px solid color-mix(in srgb,var(--rule) 85%,transparent); border-style:dashed;
  background:color-mix(in srgb,var(--bg2) 80%,transparent); border-radius:var(--r-surface);
  padding:26px 14px; min-height:170px; gap:6px;
  transition:border-color .16s ease, background .16s ease, transform .16s ease;
}
.slot b{font-size:13.5px; font-weight:640; color:var(--ink); letter-spacing:.01em}
.slot span{font-size:12.5px; color:var(--ink-3); line-height:1.6; max-width:24ch}
.slot:hover{border-color:color-mix(in srgb,var(--gold) 55%,var(--rule)); background:color-mix(in srgb,var(--card) 70%,transparent); transform:translateY(-1px)}
.slot.has{border-style:solid; border-color:color-mix(in srgb,var(--gold) 42%,var(--rule)); padding:0; overflow:hidden}
.slot.has b{position:absolute; left:10px; bottom:10px; padding:3px 9px; border-radius:var(--r-pill);
  background:rgba(8,8,10,.72); color:#fff; font-weight:600; backdrop-filter:blur(6px)}
.slot img{width:100%; height:100%; object-fit:cover; display:block; min-height:170px}

/* 44.4 预览区空状态：与全站空状态一致（线性图标 + 一句引导） */
.tool-preview .chat-welcome{gap:10px}
.tool-preview .cw-ico{font-size:30px; opacity:.9}
.tool-preview .chat-welcome h2{font-family:var(--font-display); font-size:19px}
.tool-preview .chat-welcome p{color:var(--ink-3); font-size:12.5px}

/* 44.5 【修复】移动端：槽位改单列、面板取消 min-width（原来会横向溢出） */
@media (max-width:900px){
  .tool-panel,.tool-preview{flex:1 1 100%; min-width:0; padding:18px}
  .two-slot{grid-template-columns:1fr}
  .slot{min-height:140px; padding:20px 12px}
  .page-h h1{font-size:22px}
}
@media (max-width:640px){
  .tool-panel,.tool-preview{padding:14px; border-radius:12px}
  .tool-panel .act-row{flex-direction:column; align-items:stretch}
  .tool-panel .act-row .btn{width:100%; justify-content:center}
}

/* ---------- 44.6 入场动效：错落上浮，克制到不打断阅读 ---------- */
.rv{opacity:0; transform:translateY(16px);
  transition:opacity .52s cubic-bezier(.22,.61,.36,1), transform .52s cubic-bezier(.22,.61,.36,1);
  transition-delay:var(--rv-d,0ms); will-change:opacity,transform}
.rv.rv-in{opacity:1; transform:none; will-change:auto}

/* ---------- 44.7 微交互：按压回弹、落点反馈 ---------- */
.btn{transition:transform .14s cubic-bezier(.22,.61,.36,1), background .16s ease, box-shadow .2s ease, border-color .16s ease}
.btn:active{transform:translateY(1px) scale(.992)}
.tib{transition:transform .14s ease, background .16s ease, color .16s ease}
.tib:active{transform:scale(.93)}
.slot:active{transform:scale(.995)}
.mcard:active{transform:translateY(-1px) scale(.998)}

@media (prefers-reduced-motion:reduce){
  .rv{opacity:1 !important; transform:none !important; transition:none !important}
  .hero-visual,.hero-copy{transform:none !important}
}

/* ============================================================
   45. 视觉打磨：把评审指出的"廉价点"逐条改掉
   ============================================================ */

/* 45.1 顶栏运营位：从"促销横幅"改成安静的描金信息条 */
.top-acts .ta.promo{background:transparent; color:var(--gold); font-weight:600;
  border:1px solid color-mix(in srgb,var(--gold) 34%,transparent); padding:5px 11px}
.top-acts .ta.promo:hover{background:color-mix(in srgb,var(--gold) 12%,transparent); border-color:color-mix(in srgb,var(--gold) 60%,transparent)}

/* 45.2 侧栏红标 → 描金标，去掉塑料感荧光红 */
.side-nav a em.hot,.side-sec a em.hot,.side-more em.hot{
  background:color-mix(in srgb,var(--gold) 16%,transparent);
  color:var(--gold); border:1px solid color-mix(in srgb,var(--gold) 34%,transparent);
  box-shadow:none; font-weight:600; letter-spacing:.04em}

/* 45.3 余额与账号：数值清晰、账号退后，不再糊成一串 */
.bal{font-variant-numeric:tabular-nums; letter-spacing:.01em}
.user #userName{opacity:.7; margin-left:2px}
.user::before{content:""; width:1px; height:16px; background:var(--rule); margin-right:8px}

/* 45.4 剧场主输入区：给核心操作一条能看见的边界 */
.th-input{
  border:1px solid color-mix(in srgb,var(--gold) 30%,var(--rule)) !important;
  background:color-mix(in srgb,var(--surface) 86%,transparent) !important;
  border-radius:var(--r-surface); box-shadow:0 20px 50px -30px rgba(0,0,0,.9);
  transition:border-color .18s ease, box-shadow .22s ease}
.th-input:focus-within{border-color:color-mix(in srgb,var(--gold) 70%,transparent) !important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 13%,transparent),0 20px 50px -30px rgba(0,0,0,.9)}
.th-input textarea::placeholder{color:var(--ink-3) !important; opacity:.85}
.th-input .th-count{right:14px; bottom:10px; font-variant-numeric:tabular-nums; color:var(--ink-3)}

/* 45.5 剧场副标题：字重与主标题匹配，别虚 */
.th-create .th-sub{color:var(--ink-2); font-size:13.5px; line-height:1.7; opacity:1}

/* 45.6 主按钮：去掉发虚的米黄渐变，改实心描金 + 深墨字 */
#thGoBig,.th-create .btn{
  background:linear-gradient(135deg,#D9B45E,#C9A24E 60%,#B08A3E) !important;
  color:#1A1408 !important; font-weight:700; border:0;
  box-shadow:0 10px 26px -14px color-mix(in srgb,var(--gold) 70%,transparent)}
#thGoBig:hover,.th-create .btn:hover{filter:brightness(1.06)}

/* ============================================================
   46. 功能页统一：页头变成"作品底图 + 墨色渐隐"的横幅
   ============================================================ */
.page-h.ph-art{
  position:relative; isolation:isolate; overflow:hidden;
  border-radius:var(--r-surface); border-bottom:0;
  padding:30px 26px 28px; margin:0 0 24px; min-height:150px;
  display:flex; align-items:flex-end; gap:20px; flex-wrap:wrap;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--rule) 70%,transparent);
}
.page-h.ph-art.has-art{background-image:var(--ph-art); background-size:cover; background-position:center 32%}
.page-h.ph-art.has-art::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(100deg, rgba(7,7,9,.94) 0 38%, rgba(7,7,9,.72) 66%, rgba(7,7,9,.42) 100%)
}
.page-h.ph-art.has-art::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:3px; width:auto;
  background:linear-gradient(90deg,var(--gold) 0 120px, color-mix(in srgb,var(--gold) 30%,transparent) 260px, transparent);
}
.page-h.ph-art h1{font-size:30px; color:#fff; letter-spacing:.005em; text-shadow:0 2px 12px rgba(0,0,0,.5)}
.page-h.ph-art p{color:rgba(255,255,255,.76); max-width:60ch}
.page-h.ph-art >div{position:relative; z-index:1}
.page-h.ph-art .btn.ghost{background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.22); color:#fff; backdrop-filter:blur(6px)}
.page-h.ph-art .btn.ghost:hover{background:rgba(255,255,255,.16); border-color:color-mix(in srgb,var(--gold) 60%,transparent)}
@media (max-width:760px){
  .page-h.ph-art{padding:22px 18px; min-height:120px}
  .page-h.ph-art h1{font-size:22px}
}

/* ============================================================
  47. 剧场页重做：清掉装饰噪音，主视觉改成有底图的横幅
  ============================================================ */

/* 47.1 先清掉满屏乱飘的场记板 / 胶卷 / 灯泡（原来 8 个 + 2 个放大 6 倍） */
.th-props .p-clap.big,.th-props .p-reel,.th-props .p-bulb{display:none}
.th-props .p-clap{opacity:.045; filter:grayscale(1)}

/* 47.2 舞台改成有真实作品做底的横幅（底图写死在 CSS，不需要改 JS） */
.th-stage{
  --th-art:url(/up/p_6a327a75896d708d2cd7c076.jpg);
  position:relative; isolation:isolate; overflow:hidden;
  grid-template-columns:minmax(0,1fr) 250px; gap:26px; align-items:start;
  border-radius:var(--r-surface); padding:36px 32px 32px; margin:0 0 30px;
  background-image:
    linear-gradient(100deg, rgba(7,7,9,.95) 0 38%, rgba(7,7,9,.74) 68%, rgba(7,7,9,.46) 100%),
    var(--th-art);
  background-size:cover; background-position:center 34%;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--rule) 72%,transparent), 0 30px 70px -46px rgba(0,0,0,.9);
}
.th-stage::after{content:""; position:absolute; left:0; right:0; bottom:0; height:3px;
  background:linear-gradient(90deg,var(--gold) 0 150px, color-mix(in srgb,var(--gold) 30%,transparent) 300px, transparent 420px)}
/* 胶卷条收成一条精致的边，不再是随机跑马灯 */
.th-stage .filmstrip{position:absolute; left:0; right:0; top:0; height:5px; opacity:.5; animation:none;
  background:repeating-linear-gradient(90deg,color-mix(in srgb,var(--gold) 55%,transparent) 0 3px,transparent 3px 11px)}

/* 47.3 主标题：去掉蓝紫渐变，改成墨底描金 */
.th-create{padding:0; position:relative; z-index:1}
.th-create h1{font-size:clamp(28px,3.4vw,42px); line-height:1.16; font-weight:700; letter-spacing:-.01em; color:#fff}
.th-grad{background:linear-gradient(120deg,#F0DCA8,#C9A24E 70%); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent}
.th-create .th-sub{color:rgba(255,255,255,.72); font-size:13.5px; margin:12px 0 20px; max-width:52ch}

/* 47.4 输入区做成一块明确的纸面，浮在横幅上 */
.th-input{max-width:none; background:rgba(10,10,12,.62); border:1px solid color-mix(in srgb,var(--gold) 32%,transparent);
  border-radius:var(--r-surface); padding:2px; backdrop-filter:blur(8px)}
.th-input textarea{background:transparent; border:0; color:#fff; font-size:16px; min-height:104px; padding:16px 18px 40px}
.th-input textarea:focus{outline:0}
.th-input textarea::placeholder{color:rgba(255,255,255,.5)}
.th-input .th-count{color:rgba(255,255,255,.5)}

/* 47.5 选项行与主按钮 */
.th-opts{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:14px 0 18px; color:rgba(255,255,255,.7); font-size:13px}
.th-opts .inp{background:rgba(10,10,12,.6); border:1px solid color-mix(in srgb,var(--rule) 90%,transparent); color:#fff}
.th-price{color:var(--gold); font-weight:700; font-variant-numeric:tabular-nums; margin-left:auto}
.th-go{background:linear-gradient(135deg,#D9B45E,#C9A24E 60%,#B08A3E); color:#1A1408; font-weight:700; border:0;
  padding:13px 30px; border-radius:var(--r-pill); box-shadow:0 14px 32px -18px color-mix(in srgb,var(--gold) 80%,transparent)}
.th-go:hover{filter:brightness(1.06)}

/* 47.6 右侧场记板 + 数据：做成横幅里的一块信息牌 */
.th-deco{position:relative; z-index:1; display:flex; flex-direction:column; gap:16px; align-items:stretch}
.th-deco .clap{width:100%; height:auto; aspect-ratio:1.25; border-radius:var(--r-surface);
  background:rgba(10,10,12,.6); border:1px solid color-mix(in srgb,var(--rule) 85%,transparent); backdrop-filter:blur(6px)}
.th-stats{gap:8px}
.th-stats>div{background:rgba(10,10,12,.55); border:1px solid color-mix(in srgb,var(--rule) 80%,transparent); border-radius:var(--r-mark); padding:8px 10px; backdrop-filter:blur(6px)}
.th-stats b{color:var(--gold); font-family:var(--font-display)}

/* 47.7 顶部快捷条与区块标题 */
.th-top{border-bottom:1px solid var(--rule); padding:0 0 12px; margin-bottom:6px}
.th-quick span{border:1px solid transparent; border-radius:var(--r-mark)}
.th-quick span.on,.th-quick span:hover{border-color:color-mix(in srgb,var(--gold) 40%,transparent); color:var(--gold); background:color-mix(in srgb,var(--gold) 10%,transparent)}
.th-section{margin-top:36px}
.th-sec-h{padding-bottom:10px; border-bottom:1px solid var(--rule); position:relative}
.th-sec-h::after{content:""; position:absolute; left:0; bottom:-1px; width:64px; height:2px; border-radius:2px; background:var(--gold)}
.th-sec-h h2{font-family:var(--font-display); font-size:22px}
.th-empty{margin-top:16px; border:1px dashed color-mix(in srgb,var(--rule) 90%,transparent); border-radius:var(--r-surface); padding:20px; justify-content:center; gap:12px}

@media (max-width:900px){
  .th-stage{grid-template-columns:1fr; padding:24px 18px; gap:18px}
  .th-deco{flex-direction:row; flex-wrap:wrap}
  .th-deco .clap{max-width:150px}
  .th-create h1{font-size:clamp(24px,6.4vw,34px)}
}

/* ============================================================
  48. 定制页重做 · 剩余：创作台(对话) / 一键漫剧 / 导演台 / 画布
  统一成"纸面面板 + 描金引首 + 衬线标题"的同一套语言
   ============================================================ */

/* ---------- 48.1 创作台 · 对话视图 ---------- */
.chat-tabs{border-bottom:1px solid var(--rule); gap:2px; padding-bottom:0}
.chat-tabs .tab{border-radius:var(--r-mark) var(--r-mark) 0 0; border:1px solid transparent; border-bottom:0}
.chat-tabs .tab.on{border-color:var(--rule); background:var(--surface); color:var(--ink); box-shadow:inset 0 2px 0 var(--gold)}
.chat-head{
  background:color-mix(in srgb,var(--card) 92%,transparent); border:1px solid color-mix(in srgb,var(--rule) 80%,transparent);
  border-radius:var(--r-surface); padding:14px 16px; margin:14px 0;
  box-shadow:inset 0 2px 0 color-mix(in srgb,var(--gold) 55%,transparent);
}
.chat-head .ch-ava{background:var(--seal); color:#fff; font-family:var(--font-display); border-radius:var(--r-mark)}
.chat-head b{font-family:var(--font-display); font-size:16px; letter-spacing:.01em}
.chat-head span{color:var(--ink-3)}
.composer{border-top:1px solid color-mix(in srgb,var(--gold) 22%,var(--rule))}

/* ---------- 48.2 一键漫剧 ---------- */
.comic-wrap{gap:22px}
.comic-form,.comic-preview{
  background:color-mix(in srgb,var(--card) 92%,transparent);
  border:1px solid color-mix(in srgb,var(--rule) 80%,transparent);
  border-radius:var(--r-surface); padding:22px;
  box-shadow:inset 0 2px 0 color-mix(in srgb,var(--gold) 55%,transparent);
}
.comic-preview{background:color-mix(in srgb,var(--bg2) 92%,transparent); box-shadow:inset 0 2px 0 color-mix(in srgb,var(--rule) 90%,transparent)}
.comic-preview .chat-welcome h2{font-family:var(--font-display); font-size:19px}
.comic-preview .chat-welcome p{color:var(--ink-3); font-size:12.5px}
.comic-form .vlabel,.comic-form .lbl{margin-top:14px}

/* ---------- 48.3 3D 导演台 ---------- */
.dv3-stage{border:1px solid color-mix(in srgb,var(--rule) 80%,transparent); border-radius:var(--r-surface);
  overflow:hidden; box-shadow:inset 0 2px 0 color-mix(in srgb,var(--gold) 45%,transparent), 0 26px 60px -42px rgba(0,0,0,.9)}
.dv3-badge{background:rgba(8,8,10,.7); border-color:color-mix(in srgb,var(--gold) 30%,transparent); color:var(--gold); backdrop-filter:blur(6px)}
.dv3-thumb{border-radius:var(--r-mark); overflow:hidden; border:1px solid color-mix(in srgb,var(--rule) 85%,transparent); transition:border-color .16s ease}
.dv3-thumb:hover{border-color:color-mix(in srgb,var(--gold) 50%,transparent)}
.dv3-thumb canvas{border-radius:0}

/* ---------- 48.4 无限画布：工具条与视口统一到纸面语言 ---------- */
.cv-bar{border-bottom:1px solid var(--rule); padding-bottom:12px}
.cv-viewport{border-radius:var(--r-surface); border-color:color-mix(in srgb,var(--rule) 82%,transparent);
  box-shadow:inset 0 2px 0 color-mix(in srgb,var(--gold) 42%,transparent)}
.cv-card{box-shadow:0 10px 26px -18px rgba(0,0,0,.85)}
.cv-card.sel{box-shadow:inset 0 0 0 1px var(--gold), 0 12px 30px -18px rgba(0,0,0,.85)}

/* ---------- 48.5 通用：这些页面里所有 h1/h2 走衬线 ---------- */
#view .chat-head b,#view .dv3-badge,#view .th-sec-h h2{font-family:var(--font-display)}

/* ============================================================
  49. 首页重做：把首屏做成一张"电影海报"
   ============================================================ */

/* 49.1 首屏 = 真实墨色山水打底的电影海报 */
.hero2{
  position:relative; isolation:isolate; overflow:hidden;
  border-radius:var(--r-surface);
  padding:58px 48px 42px; margin:0 0 8px;
  background-image:
    linear-gradient(92deg, #0B0B0D 0 26%, rgba(11,11,13,.90) 46%, rgba(11,11,13,.52) 74%, rgba(11,11,13,.30) 100%),
    url(/up/th_9a1a0179c17a6994b4aca821.jpg);
  background-repeat:no-repeat;
  background-position:0 0, 100% 42%;
  background-size:auto, cover;
  box-shadow:0 46px 110px -70px rgba(0,0,0,.95), inset 0 0 0 1px color-mix(in srgb,var(--gold) 16%,transparent);
}
.hero2::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:3px;
  background:linear-gradient(90deg,var(--gold) 0 190px, color-mix(in srgb,var(--gold) 34%,transparent) 380px, transparent 560px);
}
/* 关掉上一版加在 hero2 上的界格底纹，避免和海报底图打架 */
.hero2::before{display:none}

/* 49.2 标题区：把光环收紧，字距再收一点，读起来像刊头 */
.hero2 h1{color:#fff; text-shadow:0 3px 24px rgba(0,0,0,.55); max-width:14ch}
.hero2 .hero-copy::before{color:var(--gold); opacity:.95}
.hero2 .hero-copy>p{color:rgba(255,255,255,.78)}

/* 49.3 主输入框：浮在海报上的一块玻璃 */
.hero2 .hero-ask{
  background:rgba(12,12,14,.62);
  border:1px solid color-mix(in srgb,var(--gold) 34%,transparent);
  backdrop-filter:blur(10px);
  box-shadow:0 26px 60px -34px rgba(0,0,0,.95);
}
.hero2 .hero-ask .inp{color:#fff}
.hero2 .hero-ask .inp::placeholder{color:rgba(255,255,255,.5)}

/* 49.4 数据行与次级入口：压到最弱，别跟海报抢 */
.hero2 .hero-meta{border-color:rgba(255,255,255,.14)}
.hero2 .hero-meta>div{border-left-color:rgba(255,255,255,.14)}
.hero2 .hero-meta dt{color:rgba(255,255,255,.55)}
.hero2 .hero-meta dd{color:var(--gold)}
.hero2 .hero-note a,.hero2 .hero-note span{color:rgba(255,255,255,.68)}

/* 49.5 3D 实景：做成海报右侧的悬浮玻璃卡 */
.hero2 .hero-visual{
  border-radius:var(--r-surface);
  border:1px solid color-mix(in srgb,var(--gold) 22%,transparent);
  background:rgba(10,10,12,.5); backdrop-filter:blur(8px);
  box-shadow:0 30px 70px -44px rgba(0,0,0,.95);
}
.hero2 .hv-cap{color:rgba(255,255,255,.6)}

/* 49.6 首屏下的四个能力磁贴：从"平铺卡"改成"墨阶" */
.caps{gap:0; border-top:1px solid var(--rule)}
.cap{background:transparent; border:0; border-bottom:1px solid var(--rule); border-radius:0;
  padding:22px 20px; position:relative; transition:background .18s ease}
.cap::after{content:""; position:absolute; left:20px; right:20px; bottom:-1px; height:1px; background:var(--gold);
  transform:scaleX(0); transform-origin:left; transition:transform .24s cubic-bezier(.22,.61,.36,1)}
.cap:hover{background:color-mix(in srgb,var(--gold) 6%,transparent)}
.cap:hover::after{transform:scaleX(1)}
.cap .ci{font-family:var(--font-display); font-size:19px}
.cap .cn{color:var(--ink-3)}

/* 49.7 效果墙：第一张跨两列，做出主次 */
.eff-strip{gap:12px}
.eff-strip>:first-child{grid-column:span 2}

@media (max-width:900px){
  .hero2{padding:34px 20px 28px; background-position:0 0, 78% 40%}
  .hero2 .hero-ask{border-radius:var(--r-surface); padding:10px}
  .hero2 .hero-ask .btn{width:100%}
  .eff-strip>:first-child{grid-column:span 1}
}

/* ============================================================
  50. 首页极简版：一句主张 → 四个入口 → 一排作品（其余全砍）
   ============================================================ */
.hm-hero{padding:78px 0 58px; border-bottom:1px solid var(--rule); position:relative}
.hm-hero::after{content:""; position:absolute; left:0; bottom:-1px; width:104px; height:3px; background:var(--gold)}
.hm-kicker{margin:0 0 22px; font-size:11.5px; letter-spacing:.3em; color:var(--gold); text-transform:uppercase}
.hm-hero h1{font-family:var(--font-display); font-weight:700; color:var(--ink);
  font-size:clamp(38px,6.2vw,74px); line-height:1.03; letter-spacing:-.02em; margin:0}
.hm-sub{margin:22px 0 0; max-width:46ch; font-size:16px; line-height:1.8; color:var(--ink-2)}
.hm-acts{display:flex; gap:12px; flex-wrap:wrap; margin-top:32px}
.hm-note{margin:18px 0 0; font-size:12.5px; color:var(--ink-3)}

.hm-entries{display:grid; grid-template-columns:repeat(4,1fr); border-bottom:1px solid var(--rule)}
.hm-entry{display:flex; flex-direction:column; gap:7px; padding:26px 22px; position:relative;
  border-left:1px solid var(--rule); transition:background .18s ease}
.hm-entry:first-child{border-left:0}
.hm-entry::after{content:""; position:absolute; left:0; right:0; bottom:-1px; height:2px; background:var(--gold);
  transform:scaleX(0); transform-origin:left; transition:transform .26s cubic-bezier(.22,.61,.36,1)}
.hm-entry:hover{background:color-mix(in srgb,var(--gold) 5%,transparent)}
.hm-entry:hover::after{transform:scaleX(1)}
.hm-ei .ni{width:22px; height:22px; color:var(--gold)}
.hm-entry b{font-family:var(--font-display); font-size:17px; color:var(--ink); font-weight:700}
.hm-entry i{font-style:normal; font-size:12.5px; color:var(--ink-3)}
.hm-arrow{margin-top:6px; font-size:13px; color:var(--gold); opacity:0; transform:translateX(-4px);
  transition:opacity .18s ease, transform .18s ease}
.hm-entry:hover .hm-arrow{opacity:1; transform:none}

.hm-wall-sec{margin-top:66px}
.hm-wall-h{display:flex; justify-content:space-between; align-items:baseline; gap:12px;
  margin:0 0 18px; padding-bottom:12px; border-bottom:1px solid var(--rule)}
.hm-wall-h h2{font-family:var(--font-display); font-size:22px; margin:0}
.hm-wall{display:grid; grid-template-columns:repeat(3,1fr); gap:14px}
.hm-shot{position:relative; margin:0; border-radius:var(--r-surface); overflow:hidden;
  border:1px solid var(--rule); background:var(--surface-2)}
.hm-shot img{width:100%; aspect-ratio:4/3; object-fit:cover; display:block;
  transition:transform .5s cubic-bezier(.22,.61,.36,1)}
.hm-shot:hover img{transform:scale(1.03)}
.hm-shot figcaption{position:absolute; left:0; right:0; bottom:0; padding:26px 12px 10px;
  font-size:12px; color:#fff; background:linear-gradient(transparent, rgba(6,6,8,.74))}

@media (max-width:900px){
  .hm-hero{padding:42px 0 34px}
  .hm-sub{font-size:14.5px}
  .hm-entries{grid-template-columns:1fr 1fr}
  .hm-entry{border-top:1px solid var(--rule)}
  .hm-entry:nth-child(odd){border-left:0}
  .hm-wall{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .hm-entries,.hm-wall{grid-template-columns:1fr}
  .hm-entry{border-left:0}
}

/* ============================================================
  51. 首页 · 简洁大气：只剩「一句主张 + 四个入口」
   ============================================================ */

/* 51.1 主张：居中、占满一屏、只靠字号和留白撑气场 */
.hm-hero{
  position:relative; isolation:isolate; overflow:hidden;
  padding:128px 0 104px; min-height:64vh;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; border-bottom:0;
}
/* 一层极淡的墨晕，只为了让纯黑底有深度，不做任何图形 */
.hm-hero::before{content:""; position:absolute; inset:-30% 0 -10%; z-index:-1; pointer-events:none;
  background:radial-gradient(46% 42% at 50% 40%, color-mix(in srgb,var(--brand) 11%,transparent), transparent 70%)}
.hm-hero::after{content:""; position:absolute; left:50%; bottom:0; transform:translateX(-50%);
  width:132px; height:2px; background:linear-gradient(90deg,transparent,var(--gold),transparent)}

.hm-kicker{margin:0 0 26px; font-size:11.5px; letter-spacing:.34em; color:var(--gold); text-transform:uppercase}
.hm-hero h1{
  font-family:var(--font-display); font-weight:700; color:#fff; margin:0;
  font-size:clamp(42px,7.6vw,94px); line-height:1; letter-spacing:-.03em;
}
.hm-sub{margin:30px auto 0; max-width:42ch; font-size:17px; line-height:1.78; color:var(--ink-2)}
.hm-acts{display:flex; gap:14px; flex-wrap:wrap; justify-content:center; margin-top:42px}
.hm-note{margin:22px 0 0; font-size:12.5px; color:var(--ink-3)}

/* 51.2 四个入口：通栏分栏，内容居中，比"卡片"更克制也更大气 */
.hm-entries{display:grid; grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--rule); border-bottom:1px solid var(--rule)}
.hm-entry{display:flex; flex-direction:column; align-items:center; text-align:center;
  gap:9px; padding:44px 24px 40px; position:relative; border-left:1px solid var(--rule);
  transition:background .2s ease}
.hm-entry:first-child{border-left:0}
.hm-entry::after{content:""; position:absolute; left:0; right:0; bottom:-1px; height:2px; background:var(--gold);
  transform:scaleX(0); transform-origin:center; transition:transform .28s cubic-bezier(.22,.61,.36,1)}
.hm-entry:hover{background:color-mix(in srgb,var(--gold) 5%,transparent)}
.hm-entry:hover::after{transform:scaleX(1)}
.hm-ei .ni{width:26px; height:26px; color:var(--gold)}
.hm-entry b{font-family:var(--font-display); font-size:19px; font-weight:700; color:var(--ink); margin-top:2px}
.hm-entry i{font-style:normal; font-size:12.5px; color:var(--ink-3); line-height:1.6}
.hm-arrow{margin-top:8px; font-size:13px; color:var(--gold); opacity:0; transform:translateY(-3px);
  transition:opacity .18s ease, transform .18s ease}
.hm-entry:hover .hm-arrow{opacity:1; transform:none}

/* 51.3 让主输入框这类残留元素别出现在极简首屏上 */
.hm-hero .hero-ask,.hm-hero .hero-meta{display:none}

@media (max-width:900px){
  .hm-hero{padding:64px 0 56px; min-height:auto}
  .hm-sub{font-size:15px; padding:0 4px}
  .hm-entries{grid-template-columns:1fr 1fr}
  .hm-entry{padding:30px 16px; border-top:1px solid var(--rule)}
  .hm-entry:nth-child(odd){border-left:0}
}
@media (max-width:520px){ .hm-entries{grid-template-columns:1fr} .hm-entry{border-left:0} }

/* ============================================================
  52. 首页去掉侧边栏：首页只有主张与入口，导航从内页开始
   ============================================================ */
body[data-view="home"] .side{display:none !important}
body[data-view="home"] .side-mask{display:none !important}
body[data-view="home"] .main,
body[data-view="home"].side-collapsed .main{margin-left:0 !important}
body[data-view="home"] .composer{left:0 !important}
body[data-view="home"] .sideToggle,body[data-view="home"] #sideToggle{display:none !important}
/* 没有侧栏，首页可以用更宽的版面 */
body[data-view="home"] .wrap{max-width:1260px}

/* ============================================================
  53. 首页去掉界格竖线：首页只留一层极淡墨晕，不要任何"边线"
   ============================================================ */
body[data-view="home"]::before{
  background-image:
    radial-gradient(120% 86% at 100% 0%, color-mix(in srgb,var(--brand) 12%,transparent), transparent 56%),
    radial-gradient(96% 72% at 0% 100%, color-mix(in srgb,var(--gold) 8%,transparent), transparent 60%);
  -webkit-mask-image:none; mask-image:none;
}
/* 首屏与入口区都不加竖向边框 */
body[data-view="home"] .hm-hero,
body[data-view="home"] .hm-entries,
body[data-view="home"] .hm-entry{border-left:0 !important}
body[data-view="home"] .wrap,body[data-view="home"] .main,body[data-view="home"] #view{border-left:0 !important; box-shadow:none}


/* ============================================================
  54. 首页左缘 1px 亮线 · 兜底清除
  实测：截图第 12 列亮度 35，相邻列仅 8~14 —— 存在一条 1px 亮线。
  已排除 body/html 背景、body::before/::after、#fx 画布、以及全部 DOM 元素的边框。
  剩下最可能的来源是首屏墨晕伪元素被 overflow 硬裁切的边缘，这里整层移除。
   ============================================================ */
body[data-view="home"] .hm-hero::before{display:none !important}
/* 同时把首屏/入口区的任何内阴影、描边也去掉 */
body[data-view="home"] .hm-hero,
body[data-view="home"] .hm-entries,
body[data-view="home"] .hm-entry{box-shadow:none !important; outline:0 !important}
/* 首屏不要 overflow 裁切（避免制造硬边缘） */
body[data-view="home"] .hm-hero{overflow:visible}

/* ============================================================
  55. 滚动条滑块调暗（疑似"左边那条竖线"的真凶）
  证据：截图第 12 列亮度 35（背景 11），1px 亮线贯穿整屏；
       对照页 example.com 因为不可滚动、没有滚动条 → 无亮线。
  现样式：*::-webkit-scrollbar-thumb{background:var(--rule-strong)} —— 浅灰滑块压在深色底上就是一条亮条。
  改法：滑块改用半透明的墨灰，仅在悬停时提亮。
   ============================================================ */
*::-webkit-scrollbar-thumb{
  background:color-mix(in srgb,var(--ink-3) 38%,transparent) !important;
  border:3px solid transparent; background-clip:content-box; border-radius:99px;
}
*::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ink-3) 62%,transparent) !important; background-clip:content-box}
*::-webkit-scrollbar{width:10px; height:10px}
*::-webkit-scrollbar-track{background:transparent}










/* ============================================================
  56. 首页标题放大 + 吃掉两侧留白
  思路：用容器查询单位 cqw，让标题始终占满内容宽度的约 90%——
       不管屏幕多宽都饱满，不会在宽屏上又变成"中间一小团"。
  换算式：7 个字 × 字宽 ≈ 标题总宽 → 13.2cqw ≈ 90% 内容宽
   ============================================================ */
body[data-view="home"] .wrap{max-width:1440px}
.hm-hero{container-type:inline-size}
.hm-hero h1{
  font-size:clamp(34px, 12.4vw, 150px);   /* 老浏览器兜底 */
  line-height:1.02; letter-spacing:-.03em;
}
@supports (font-size:1cqw){
  .hm-hero h1{font-size:clamp(32px, 13.2cqw, 210px)}
}
.hm-sub{max-width:58ch; font-size:17px}
.hm-kicker{margin-bottom:28px}
.hm-acts{margin-top:44px}
.hm-note{margin-top:24px}
/* 入口分栏跟着宽度走，横向撑开 */
.hm-entries{border-top:1px solid var(--rule)}
@media (max-width:900px){
  .hm-hero h1{font-size:clamp(30px, 15vw, 72px)}
  .hm-sub{font-size:15px; max-width:36ch}
}

/* ============================================================
  57. 首页满宽：不再把内容卡在 1440px 里，两侧只留比例型留白
  问题：屏幕一宽（1920/2560），1440px 的内容列居中 → 两侧各空 240~560px
   ============================================================ */
body[data-view="home"] .wrap{
  max-width:none !important;
  width:100%;
  padding-left:clamp(20px, 5vw, 96px);
  padding-right:clamp(20px, 5vw, 96px);
}
/* 标题上限同步放宽，宽屏才不会又缩回"中间一小团" */
@supports (font-size:1cqw){
  .hm-hero h1{font-size:clamp(32px, 13.2cqw, 300px)}
}
.hm-sub{max-width:64ch}
/* 入口分栏本来就通栏，跟着满宽一起撑开 */
.hm-entries{width:100%}
@media (max-width:900px){
  body[data-view="home"] .wrap{padding-left:20px; padding-right:20px}
}

/* ============================================================
  58. 首页两侧填满：更大的标题 + 侧边竖排标识 + 能力条 + 入口加厚
  问题：满宽后标题只占整屏约 81%，两侧仍空。
  改法：标题收到 10.2cqw（克制体量、以留白为主）· 两侧靠竖排字与能力条撑住 · 内容留白 3.4vw/64 ·
        首屏左右加竖排细字 · 底部加六项能力条横向撑满 · 四入口加厚。
   ============================================================ */
body[data-view="home"] .wrap{
  padding-left:clamp(16px,3.4vw,64px) !important;
  padding-right:clamp(16px,3.4vw,64px) !important;
}
.hm-hero{padding:96px 0 62px; min-height:auto}
.hm-glow{position:absolute; inset:-18% 0 -12%; z-index:-1; pointer-events:none;
  background:
    radial-gradient(34% 32% at 50% 42%, color-mix(in srgb,var(--gold) 14%,transparent), transparent 72%),
    radial-gradient(42% 40% at 4% 82%, color-mix(in srgb,var(--seal) 7%,transparent), transparent 72%),
    radial-gradient(42% 40% at 96% 20%, color-mix(in srgb,var(--gold) 8%,transparent), transparent 72%);
}
.hm-rail{position:absolute; top:50%; writing-mode:vertical-rl; font-size:11px; line-height:1;
  letter-spacing:.46em; text-transform:uppercase; pointer-events:none; user-select:none;
  color:color-mix(in srgb,var(--gold) 60%,transparent)}
.hm-rail-l{left:-40px; transform:translateY(-50%)}
.hm-rail-r{right:-40px; transform:translateY(-50%) rotate(180deg)}
.hm-hero h1{letter-spacing:-.035em; text-wrap:balance;
  text-shadow:0 2px 70px color-mix(in srgb,var(--gold) 22%,transparent)}
@supports (font-size:1cqw){
  .hm-hero h1{font-size:clamp(30px,10.2cqw,240px)}
}
.hm-sub{max-width:min(88%,900px); font-size:17.5px; line-height:1.85}
.hm-kicker{margin-bottom:30px}
.hm-acts{margin-top:44px; gap:16px}
.hm-note{margin-top:22px; letter-spacing:.02em}
.hm-caps{list-style:none; margin:44px auto 0; padding:20px 0 0; width:100%;
  display:flex; align-items:center; justify-content:space-between; gap:clamp(8px,2.2vw,44px);
  border-top:1px solid color-mix(in srgb,var(--rule) 82%,transparent);
  font-size:12px; letter-spacing:.16em; color:var(--ink-3)}
.hm-caps li{position:relative; padding-left:15px; white-space:nowrap}
.hm-caps li::before{content:""; position:absolute; left:0; top:50%; width:5px; height:5px; margin-top:-3px;
  border:1px solid color-mix(in srgb,var(--gold) 72%,transparent); transform:rotate(45deg)}

.hm-entries{border-top:1px solid var(--rule); border-bottom:1px solid var(--rule)}
.hm-entry{padding:52px 26px 46px; gap:12px; overflow:hidden; isolation:isolate}
.hm-entry::before{content:""; position:absolute; inset:0; z-index:-1; opacity:0;
  background:radial-gradient(74% 62% at 50% 0%, color-mix(in srgb,var(--gold) 13%,transparent), transparent 72%);
  transition:opacity .32s ease}
.hm-entry:hover::before{opacity:1}
.hm-idx{position:absolute; top:18px; right:22px; font-family:var(--font-display); font-size:13px;
  letter-spacing:.16em; color:color-mix(in srgb,var(--ink-3) 62%,transparent)}
.hm-ei{display:grid; place-items:center; width:58px; height:58px; border-radius:50%;
  border:1px solid color-mix(in srgb,var(--gold) 34%,transparent);
  background:radial-gradient(circle at 50% 34%, color-mix(in srgb,var(--gold) 16%,transparent), transparent 72%);
  transition:transform .32s cubic-bezier(.22,.61,.36,1), border-color .32s ease}
.hm-entry:hover .hm-ei{transform:translateY(-3px) scale(1.05); border-color:color-mix(in srgb,var(--gold) 74%,transparent)}
.hm-ei .ni{width:24px; height:24px}
.hm-entry b{font-size:21px; letter-spacing:.01em}
.hm-entry i{font-size:13px}
.hm-arrow{opacity:.34; transform:none; font-size:12px; letter-spacing:.12em}
.hm-entry:hover .hm-arrow{opacity:1; transform:translateY(2px)}

@media (max-width:1280px){ .hm-rail{display:none} }
@media (max-width:900px){
  .hm-hero{padding:72px 0 54px}
  .hm-sub{font-size:15.5px; max-width:38ch}
  .hm-caps{margin-top:36px; flex-wrap:wrap; justify-content:center; gap:10px 22px; font-size:11px}
  .hm-entry{padding:36px 16px 32px}
  .hm-ei{width:48px; height:48px}
  .hm-entry b{font-size:18px}
  .hm-idx{top:12px; right:14px; font-size:11px}
}
@media (max-width:760px){
  .hm-hero h1{font-size:clamp(24px,9.4cqw,68px)}
  .hm-caps{display:none}
}

/* ============================================================
  59. 首屏交互动效（参考 xk.lk888.ai 的手法，配色仍为墨池描金）
  背景：60s 旋转流光 + 3 颗 25s 浮动光球 + 10s 呼吸网格
  轨道：14 个真实模型绕首屏 80s 匀速公转，各自反向自转保持水平
  细节：金点脉冲徽标 / 标题尾金线呼吸 / 按钮扫光 / 入口悬停柔光
  说明：全部 pointer-events:none 且 z-index:-1，只做氛围，不挡任何图标与按钮
   ============================================================ */
.hm-hero{--R:clamp(240px,42vw,1200px)}
.hm-bg{position:absolute; inset:-6% 0; z-index:-1; pointer-events:none; overflow:hidden}
.hm-flow{position:absolute; inset:-50%;
  background:conic-gradient(transparent 0deg,
    color-mix(in srgb,var(--gold) 7%,transparent) 60deg, transparent 120deg,
    color-mix(in srgb,var(--seal) 5%,transparent) 180deg, transparent 240deg,
    color-mix(in srgb,var(--gold) 6%,transparent) 300deg, transparent 360deg);
  animation:hmFlow 60s linear infinite}
.hm-bg-orb{position:absolute; border-radius:50%; filter:blur(72px);
  animation:hmBgOrb 25s ease-in-out infinite}
.hm-bg-orb.o1{width:420px;height:420px;left:-7%;top:6%;
  background:radial-gradient(circle,color-mix(in srgb,var(--gold) 15%,transparent),transparent 70%)}
.hm-bg-orb.o2{width:340px;height:340px;right:-5%;top:0;
  background:radial-gradient(circle,color-mix(in srgb,var(--gold) 11%,transparent),transparent 70%);
  animation-delay:-8s}
.hm-bg-orb.o3{width:300px;height:300px;left:42%;bottom:-16%;
  background:radial-gradient(circle,color-mix(in srgb,var(--seal) 9%,transparent),transparent 70%);
  animation-delay:-16s}
.hm-grid{position:absolute; inset:0;
  background-image:linear-gradient(color-mix(in srgb,var(--gold) 5%,transparent) 1px,transparent 1px),
                   linear-gradient(90deg,color-mix(in srgb,var(--gold) 5%,transparent) 1px,transparent 1px);
  background-size:56px 56px;
  -webkit-mask-image:radial-gradient(72% 62% at 50% 46%,#000 18%,transparent 78%);
  mask-image:radial-gradient(72% 62% at 50% 46%,#000 18%,transparent 78%);
  animation:hmGrid 10s ease-in-out infinite}
@keyframes hmFlow{to{transform:rotate(360deg)}}
@keyframes hmBgOrb{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(26px,-32px,0) scale(1.09)}}
@keyframes hmGrid{0%,100%{opacity:.5}50%{opacity:1}}

/* —— 模型轨道环：只在左右两侧可见，中间用遮罩挖空，绝不压住标题 —— */
.hm-orbit-mask{position:absolute; inset:0; z-index:-1; pointer-events:none; overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,#000 0%,transparent 27%,transparent 73%,#000 100%);
  mask-image:linear-gradient(90deg,#000 0%,transparent 27%,transparent 73%,#000 100%)}
.hm-orbit{position:absolute; left:50%; top:50%; width:0; height:0;
  animation:hmOrbit 80s linear infinite}
.hm-node{position:absolute; left:0; top:0; width:0; height:0;
  transform:rotate(var(--a)) translateY(calc(-1 * var(--R)))}
.hm-node-in{position:absolute; left:0; top:0; display:flex; align-items:center; gap:7px;
  padding:6px 13px; border-radius:99px; white-space:nowrap; font-style:normal;
  background:color-mix(in srgb,var(--gold) 5%,transparent);
  border:1px solid color-mix(in srgb,var(--gold) 16%,transparent);
  font-size:11.5px; color:color-mix(in srgb,var(--ink) 64%,transparent);
  animation:hmNode 80s linear infinite}
.hm-node-in::before{content:""; width:5px; height:5px; border-radius:50%; flex:none;
  background:color-mix(in srgb,var(--gold) 78%,transparent);
  box-shadow:0 0 8px color-mix(in srgb,var(--gold) 58%,transparent)}
.hm-node-in b{font-weight:600; letter-spacing:.02em}
@keyframes hmOrbit{to{transform:rotate(360deg)}}
@keyframes hmNode{
  from{transform:translate(-50%,-50%) rotate(calc(var(--a) * -1))}
  to{transform:translate(-50%,-50%) rotate(calc((var(--a) + 360deg) * -1))}
}
@media (max-width:1100px){ .hm-orbit-mask,.hm-grid{display:none} }

/* —— 药丸徽标 + 金点脉冲 —— */
.hm-kicker{display:inline-flex; align-items:center; gap:9px; margin:0 0 26px;
  padding:7px 16px; border-radius:99px;
  background:color-mix(in srgb,var(--gold) 7%,transparent);
  border:1px solid color-mix(in srgb,var(--gold) 20%,transparent);
  font-size:11px; letter-spacing:.22em;
  color:color-mix(in srgb,var(--gold) 86%,var(--ink))}
.hm-kicker::before{content:""; width:6px; height:6px; border-radius:50%; flex:none;
  background:var(--gold); box-shadow:0 0 10px color-mix(in srgb,var(--gold) 72%,transparent);
  animation:hmPulse 2.2s ease-in-out infinite}
@keyframes hmPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.34;transform:scale(.78)}}

/* —— 标题尾金线：呼吸式光标，不闪屏 —— */
.hm-caret{display:inline-block; width:3px; height:.74em; margin-left:.1em; vertical-align:-.04em;
  background:linear-gradient(180deg,transparent,var(--gold),transparent);
  animation:hmCaret 1.6s ease-in-out infinite}
@keyframes hmCaret{0%,100%{opacity:.14}50%{opacity:.92}}

/* —— 按钮扫光 —— */
.hm-acts .btn{position:relative; overflow:hidden}
.hm-acts .btn::after{content:""; position:absolute; top:0; bottom:0; left:-70%; width:46%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.24),transparent);
  transform:skewX(-18deg); pointer-events:none;
  transition:left .6s cubic-bezier(.22,.61,.36,1)}
.hm-acts .btn:hover::after{left:126%}

/* —— 四入口：悬停柔光 + 编号点亮 —— */
.hm-entry{transition:background .3s ease, border-color .3s ease}
.hm-entry:hover{background:color-mix(in srgb,var(--gold) 4%,transparent);
  border-color:color-mix(in srgb,var(--gold) 26%,var(--rule))}
.hm-entry:hover .hm-idx{color:color-mix(in srgb,var(--gold) 72%,transparent)}

@media (prefers-reduced-motion:reduce){
  .hm-flow,.hm-bg-orb,.hm-grid,.hm-orbit,.hm-node-in,.hm-kicker::before,.hm-caret{animation:none !important}
}
/* ============================================================
  60. 首页背景改纯色（按用户要求）
  关掉：60s 流光 / 3 颗模糊光球 / 呼吸网格 / 首屏金晕 / body 墨晕渐变
  保留：模型轨道环（交互动效）、四入口微交互、粒子层 #fx（用户此前特别要求保留）
  纯色用 var(--bg)，跟随主题切换联动
   ============================================================ */
body[data-view="home"]{
  background:var(--bg) !important;
  background-image:none !important;
}
body[data-view="home"]::before,
body[data-view="home"] .hm-bg,
body[data-view="home"] .hm-glow{display:none !important}
/* ============================================================
  61. 模型轨道环「做清晰一点」（按用户要求）
  改前：字号 11.5 / 字重 400 / 文字 ink 64% / 底 gold 5% / 边 gold 16% / 胶囊 129×34
  改后：字号 13   / 字重 600 / 文字 ink 92% / 底 gold 11% / 边 gold 40% / 胶囊更大更实
  另加：玻璃模糊底 + 投影让胶囊"浮"起来；补一条极淡的环形轨道线，把"环"讲清楚
   ============================================================ */
.hm-node-in{
  padding:7px 15px; gap:8px;
  background:color-mix(in srgb,var(--gold) 11%,transparent);
  border:1px solid color-mix(in srgb,var(--gold) 40%,transparent);
  font-size:13px; font-weight:600;
  color:color-mix(in srgb,var(--ink) 92%,transparent);
  text-shadow:0 1px 3px rgba(0,0,0,.55);
  box-shadow:0 8px 20px -10px rgba(0,0,0,.85),
             inset 0 1px 0 color-mix(in srgb,var(--gold) 16%,transparent);
  -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
}
.hm-node-in b{font-weight:600; letter-spacing:.01em}
.hm-node-in::before{
  width:6px; height:6px;
  background:color-mix(in srgb,var(--gold) 92%,transparent);
  box-shadow:0 0 10px color-mix(in srgb,var(--gold) 78%,transparent);
}

/* 遮罩：最外侧改为实区，中段才淡出 —— 两侧的胶囊更"实"，不再一进渐变就发灰 */
.hm-orbit-mask{
  -webkit-mask-image:linear-gradient(90deg,#000 0%,#000 12%,transparent 30%,transparent 70%,#000 88%,#000 100%);
  mask-image:linear-gradient(90deg,#000 0%,#000 12%,transparent 30%,transparent 70%,#000 88%,#000 100%);
}
/* 环形轨道线：1px 描金圆，只在左右两侧露出，把"轨道"这件事讲明白 */
.hm-orbit-mask::before{
  content:""; position:absolute; left:50%; top:50%;
  width:calc(var(--R) * 2); height:calc(var(--R) * 2);
  margin-left:calc(var(--R) * -1); margin-top:calc(var(--R) * -1);
  border-radius:50%;
  border:1px solid color-mix(in srgb,var(--gold) 15%,transparent);
  box-shadow:0 0 40px -10px color-mix(in srgb,var(--gold) 18%,transparent) inset;
  pointer-events:none;
}

@media (max-width:1100px){
  .hm-node-in{font-size:12px; padding:6px 13px}
}

/* ============================================================
  62. 上线前修正：首页主标题跟随主题色
  问题：h1 原来是硬编码 #fff，浅色主题下 --bg:#ffffff → 白字白底不可见。
  改法：color 改用 var(--ink)（深色主题 #F1EEE8，肉眼与 #fff 几乎无差；浅色主题自动转深色）。
   ============================================================ */
html[data-theme="light"] body[data-view="home"] .hm-hero h1{color:var(--ink)}

/* 62b. 兜底：第 51 段还有一份 h1 color:#fff，这里用更高优先级统一成主题墨色 */
body[data-view="home"] .hm-hero h1{color:var(--ink) !important}
/* ============================================================
  63. 轨道环：文字胶囊 → 厂商图标徽章（按用户要求）
  每个节点改成 48px 圆形玻璃徽章，内含按厂商自绘的极简几何符号；
  鼠标悬停放大图标并浮出模型名（参考站也是悬停出名字卡片）。
  符号均为自绘几何图形，不使用任何厂商官方 logo 素材。
   ============================================================ */
.hm-node-in{
  box-sizing:border-box;
  width:48px; height:48px; padding:0; gap:0;
  display:grid; place-items:center;
  border-radius:50%;
  background:color-mix(in srgb,var(--gold) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--gold) 42%,transparent);
  color:color-mix(in srgb,var(--gold) 92%,var(--ink));
  box-shadow:0 10px 24px -12px rgba(0,0,0,.9),
             inset 0 1px 0 color-mix(in srgb,var(--gold) 18%,transparent);
  -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
  transition:background .28s ease, border-color .28s ease, box-shadow .28s ease;
}
.hm-node-in::before{display:none}
.hm-node-in svg{
  display:block; width:22px; height:22px; fill:none; stroke:currentColor;
  stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round;
  transition:transform .32s cubic-bezier(.22,.61,.36,1);
}
.hm-node-in:hover{
  background:color-mix(in srgb,var(--gold) 20%,transparent);
  border-color:color-mix(in srgb,var(--gold) 80%,transparent);
}
.hm-node-in:hover svg{transform:scale(1.12)}
.hm-node-in::after{
  content:attr(data-n);
  position:absolute; left:50%; top:calc(100% + 9px); transform:translateX(-50%);
  white-space:nowrap; font-style:normal; font-size:12px; font-weight:600; letter-spacing:.02em;
  padding:5px 11px; border-radius:99px;
  background:color-mix(in srgb,var(--card) 92%,transparent);
  border:1px solid color-mix(in srgb,var(--gold) 34%,transparent);
  color:color-mix(in srgb,var(--ink) 94%,transparent);
  box-shadow:0 10px 26px -12px rgba(0,0,0,.9);
  opacity:0; pointer-events:none; transition:opacity .2s ease;
}
.hm-node-in:hover::after{opacity:1}
@media (max-width:1100px){ .hm-node-in{width:42px; height:42px} .hm-node-in svg{width:19px; height:19px} }
/* ============================================================
  64. 轨道环：换成各 AI 厂商的官方 logo（按用户要求）
  8 个 logo 已自托管在 /up/logos/（deepseek / 混元 / 智谱 / Kimi /
  MiniMax / 通义千问 / 百度 / 豆包）。徽章改为浅色圆底 —— 因为这些
  官网图标多为深色系，直接放深色底上会看不清。
   ============================================================ */
.hm-node-in{
  background:rgba(246,247,249,.94);
  border:1px solid color-mix(in srgb,var(--gold) 46%,transparent);
  color:var(--ink);
}
.hm-node-in .hm-logo{
  display:block; width:26px; height:26px; object-fit:contain;
  user-select:none; -webkit-user-drag:none;
  transition:transform .32s cubic-bezier(.22,.61,.36,1);
}
.hm-node-in:hover{
  background:#fff;
  border-color:color-mix(in srgb,var(--gold) 92%,transparent);
  box-shadow:0 12px 28px -12px rgba(0,0,0,.95),
             0 0 22px -6px color-mix(in srgb,var(--gold) 55%,transparent);
}
.hm-node-in:hover .hm-logo{transform:scale(1.12)}
@media (max-width:1100px){ .hm-node-in .hm-logo{width:22px; height:22px} }
/* ============================================================
  65. 轨道环：解决"外部浏览器看不到"
  原逻辑：@media (max-width:1100px){ .hm-orbit-mask{display:none} }
  —— 笔记本外接屏/浏览器 125% 缩放后 CSS 宽度常只有 1000~1099px，
     正好落进隐藏区间，于是"标题后面的轨道环没有显示"。
  改法：1) 显示阈值 1100 → 820px
        2) 半径改成随视口自适应 clamp(240px,42vw,1200px)，窄屏自动收小
        3) 窄屏减少节点数量（14→8→6）并收窄可见带，保证不压标题
   ============================================================ */
.hm-orbit-mask{display:block}
.hm-hero{--R:clamp(240px,42vw,1200px)}
@media (max-width:1100px){
  .hm-orbit-mask{
    -webkit-mask-image:linear-gradient(90deg,#000 0%,#000 14%,transparent 26%,transparent 74%,#000 86%,#000 100%);
    mask-image:linear-gradient(90deg,#000 0%,#000 14%,transparent 26%,transparent 74%,#000 86%,#000 100%);
  }
  .hm-node:nth-child(n+9){display:none}
  .hm-node-in{width:42px; height:42px}
  .hm-node-in .hm-logo{width:22px; height:22px}
}
@media (max-width:960px){
  .hm-node:nth-child(n+7){display:none}
  .hm-node-in{width:38px; height:38px}
  .hm-node-in .hm-logo{width:19px; height:19px}
  .hm-node-in::after{display:none}
}
@media (max-width:820px){
  .hm-orbit-mask{display:none}
}
/* ============================================================
  66. 轨道环健壮性兜底（针对"某些环境仍不显示"）
  1) --R 先给固定值，支持 clamp 的浏览器再升级为自适应（防 calc+clamp 解析失败导致节点堆到圆心被遮罩挖空）
  2) 环的层级从 z-index:-1 提到 z-index:1，正文各块 z-index:2
     —— 不再依赖父级 isolation 与负 z-index，任何背景都盖不住它
   ============================================================ */
.hm-hero{--R:430px}
@supports (width:clamp(1px,1vw,2px)){
  .hm-hero{--R:clamp(240px,42vw,1200px)}
}
.hm-hero .hm-orbit-mask{z-index:1}
.hm-hero .hm-kicker,
.hm-hero h1,
.hm-hero .hm-sub,
.hm-hero .hm-acts,
.hm-hero .hm-note,
.hm-hero .hm-caps{position:relative; z-index:2}
.hm-hero .hm-rail{z-index:2}

/* ============================================================
  67. 轨道环：窄窗口也显示（阈值 820 -> 640px）
  640~820px 的窗口也显示环，只保留 4 个节点 + 更小半径 + 更靠边可见带。
   ============================================================ */
@media (max-width:820px){
  .hm-orbit-mask{display:block;
    -webkit-mask-image:linear-gradient(90deg,#000 0%,#000 9%,transparent 18%,transparent 82%,#000 91%,#000 100%);
    mask-image:linear-gradient(90deg,#000 0%,#000 9%,transparent 18%,transparent 82%,#000 91%,#000 100%)}
  .hm-hero{--R:clamp(180px,42vw,340px)}
  .hm-node:nth-child(n+5){display:none}
  .hm-node-in{width:34px; height:34px}
  .hm-node-in .hm-logo{width:17px; height:17px}
  .hm-node-in::after{display:none}
}
@media (max-width:640px){ .hm-orbit-mask{display:none} }

/* ============================================================
  68. 平台需求为空时，把「全网商单」提到主位（默认内容）
  逻辑在前端 drawHall() 里：平台自营单 0 条时，
  交换两个区块的 DOM 顺序，并给全网商单加 is-primary 强调、给空块加 is-empty 压缩
   ============================================================ */
.biz-sec.is-primary > .sec-h{margin-top:0 !important; position:relative; padding-left:15px; border-left:3px solid var(--brand)}
.biz-sec.is-primary > .sec-h h2{font-size:25px; letter-spacing:-.01em}
.biz-sec.is-primary > .sec-h h2::after{
  content:"实时更新 · 推荐"; margin-left:10px; font-size:11px; font-weight:600;
  padding:2px 9px; border-radius:99px; vertical-align:middle; letter-spacing:.06em;
  background:color-mix(in srgb,var(--brand) 16%,transparent);
  color:var(--brand-text); border:1px solid color-mix(in srgb,var(--brand) 26%,transparent)}
.biz-sec.is-empty{margin-top:26px}
.biz-sec.is-empty > .sec-h h2{font-size:15px; color:var(--dim)}
.biz-sec.is-empty > .sec-h p{display:none}
.biz-sec.is-empty > .chips{display:none}
.biz-sec.is-empty #hlBox .box{padding:16px !important; border-style:dashed; text-align:left !important}
.biz-sec.is-empty #hlBox .box .empty-ico{display:none}
.biz-sec.is-empty #hlBox .box p{display:inline; margin-right:10px; font-size:13px}
/* ============================================================
  69. 会员：付费墙 + 会员中心（商单/变现板块准入）
  价格：¥168/月 · ¥688/半年 · ¥1688/年
   ============================================================ */
.vip-wall{padding:38px 0 60px; display:flex; justify-content:center}
.vw-card{max-width:900px; width:100%; border-radius:var(--r-surface); padding:38px 32px; text-align:center;
  background:linear-gradient(180deg,color-mix(in srgb,var(--gold) 7%,transparent),transparent 46%),var(--card);
  border:1px solid color-mix(in srgb,var(--gold) 26%,transparent);
  box-shadow:0 30px 80px -50px rgba(0,0,0,.9)}
.vw-badge{display:inline-block; padding:4px 13px; border-radius:99px; font-size:11.5px; letter-spacing:.14em;
  background:color-mix(in srgb,var(--gold) 16%,transparent); color:var(--brand-text);
  border:1px solid color-mix(in srgb,var(--gold) 34%,transparent)}
.vw-card h2{margin:16px 0 10px; font-family:var(--font-display); font-size:27px; color:var(--ink)}
.vw-sub{color:var(--dim); font-size:14px; line-height:1.9; max-width:640px; margin:0 auto 26px}
.vw-plans,.vip-plans{display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin:0 0 24px}
.vp-card{position:relative; display:flex; flex-direction:column; align-items:center; gap:6px;
  background:var(--card); border:1px solid var(--line); border-radius:14px; padding:24px 16px 20px;
  cursor:pointer; text-align:center; transition:transform .2s ease, border-color .2s ease, box-shadow .2s ease}
.vp-card:hover{transform:translateY(-3px); border-color:color-mix(in srgb,var(--gold) 62%,transparent);
  box-shadow:0 18px 40px -28px color-mix(in srgb,var(--gold) 70%,transparent)}
.vp-card.hot{border-color:color-mix(in srgb,var(--gold) 62%,transparent)}
.vp-tag{position:absolute; top:-11px; left:50%; transform:translateX(-50%); white-space:nowrap;
  font-size:11px; font-weight:700; padding:2px 11px; border-radius:99px; background:var(--brand); color:#fff}
.vp-price{font-family:var(--font-display); font-size:31px; line-height:1; color:var(--brand-text)}
.vp-name{font-size:14.5px; font-weight:600; color:var(--ink)}
.vp-note{font-size:12px; color:var(--dim)}
.vp-go{font-size:12px; color:var(--brand-text); margin-top:6px}
.vw-tip{font-size:12.5px; color:var(--dim); margin:14px 0 0}
.vip-state{display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin:0 0 28px}
.vip-state>div{display:flex; flex-direction:column; gap:4px; background:var(--card);
  border:1px solid var(--line); border-radius:12px; padding:14px 16px}
.vs-k{font-size:12px; color:var(--dim)}
.vs-v{font-size:15px; color:var(--ink)}
.vip-state.on .vs-v{color:var(--brand-text)}
.vip-pay{margin-top:22px; background:var(--card); border-radius:14px; padding:22px;
  border:1px solid color-mix(in srgb,var(--gold) 30%,transparent)}
.vy-h{display:flex; justify-content:space-between; align-items:baseline; gap:12px; flex-wrap:wrap; margin-bottom:16px}
.vy-no{font-size:12px; color:var(--dim)}
.vy-qrs{display:grid; grid-template-columns:repeat(2,1fr); gap:16px; max-width:520px; margin:0 auto 16px}
.vy-qrs>div{background:#fff; border-radius:12px; padding:10px; display:flex; flex-direction:column; align-items:center; gap:6px}
.vy-qrs span{font-size:12px; color:#333}
.vy-qrs img{width:100%; max-width:190px; aspect-ratio:1/1; object-fit:contain; display:block}
.vy-tip{font-size:13.5px; color:var(--ink-2); text-align:center; margin:0 0 16px}
.vy-note{font-size:12px; color:var(--dim); text-align:center; margin:12px 0 0}
@media (max-width:760px){
  .vw-plans,.vip-plans,.vip-state{grid-template-columns:1fr}
  .vw-card{padding:26px 18px}
}