:root{
  --bg:#131315; --panel:#1c1c1f; --panel2:#242428; --line:#2f2f35; --line2:#3a3a42;
  --text:#e9e9ec; --muted:#8b8b95; --dim:#66666f;
  --accent:#ff8a3d; --accent2:#ffb066; --accent-soft:rgba(255,138,61,.12);
  --blue:#4a9eff; --ok:#34d399; --warn:#fbbf24; --bad:#f87171;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --sat:env(safe-area-inset-top,0px); --sab:env(safe-area-inset-bottom,0px);
  --r:12px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{
  background:var(--bg); color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  font-size:14px; line-height:1.55; display:flex; flex-direction:column;
  -webkit-font-smoothing:antialiased; overscroll-behavior-y:none;
}
button,input,textarea,select{font-family:inherit;color:inherit}
.hidden{display:none!important}
.grow{flex:1}

/* ============ 顶栏 ============ */
.topbar{
  flex:0 0 auto; display:flex; align-items:center; gap:10px;
  padding:calc(10px + var(--sat)) 14px 10px;
  background:linear-gradient(180deg,#191919,#141416);
  border-bottom:1px solid var(--line); position:relative; z-index:20;
}
.brand{display:flex;align-items:center;gap:7px;font-size:16px;letter-spacing:.2px}
.brand b{color:var(--accent);font-weight:800}
.brand .dot{
  width:9px;height:9px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 10px rgba(255,138,61,.85);
}
.tb-info{font:10.5px/1 var(--mono);color:var(--dim);max-width:44vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tb-btn{
  width:34px;height:34px;border-radius:9px;border:1px solid var(--line2);
  background:#202024;color:var(--text);font-size:15px;cursor:pointer;
}
.tb-btn:active{background:#2a2a30}

/* ============ 主体 ============ */
.pane{
  flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:12px 12px calc(18px + var(--sab));
}
.view{display:flex;flex-direction:column;gap:12px}
.sec-head{display:flex;align-items:baseline;gap:8px;margin:2px 2px 0}
.sec-head b{font-size:17px;font-weight:800;letter-spacing:-.2px}
.sec-count{font-size:11.5px;color:var(--dim);font-family:var(--mono)}

/* ============ 舞台 ============ */
.stage{
  position:relative;width:100%;aspect-ratio:16/9;background:#0a0a0b;
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
#cv{max-width:100%;max-height:100%;display:block;object-fit:contain}
.stage-empty{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:6px;text-align:center;padding:14px;
}
.se-ico{font-size:26px;color:var(--accent);opacity:.9}
.se-t{font-size:13.5px;font-weight:600}
.se-s{font-size:11px;color:var(--dim);line-height:1.6;max-width:88%}
.se-btns{display:flex;gap:8px;margin-top:8px}
.stage-hud{
  position:absolute;left:8px;top:8px;font:9.5px/1 var(--mono);color:#c9c9d0;
  background:rgba(0,0,0,.55);border:1px solid rgba(255,255,255,.1);
  padding:4px 7px;border-radius:5px;pointer-events:none;
}
.stage-tools{
  position:absolute;right:8px;bottom:8px;display:flex;gap:6px;
}
.st-btn{
  border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.55);
  color:#e9e9ec;border-radius:7px;padding:5px 9px;font-size:11px;cursor:pointer;
  backdrop-filter:blur(6px);
}
.st-btn.on{border-color:var(--accent);color:var(--accent2);background:rgba(255,138,61,.16)}
.st-btn:active{transform:scale(.96)}

/* ============ 当前效果 ============ */
.look-chip{
  display:flex;align-items:center;gap:9px;padding:9px 11px;
  border:1px solid var(--line);border-radius:10px;background:var(--panel);
}
.lc-name{font-size:13px;font-weight:600;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lc-meta{font:10px/1 var(--mono);color:var(--dim);flex:0 0 auto}

/* ============ 面板 ============ */
.panel{border:1px solid var(--line);border-radius:var(--r);background:var(--panel);overflow:hidden}
.p-head{
  display:flex;align-items:center;gap:8px;padding:11px 12px;cursor:pointer;
  border-bottom:1px solid transparent;
}
.p-head b{font-size:13px;font-weight:700}
.p-hint{font-size:11px;color:var(--dim);margin-left:auto;font-family:var(--mono)}
.p-arrow{font-style:normal;color:var(--dim);font-size:12px;transition:.2s}
.panel.open .p-head{border-bottom-color:var(--line)}
.panel.open .p-arrow{transform:rotate(180deg)}
.p-body{display:none;padding:10px 12px 14px;flex-direction:column;gap:11px}
.panel.open .p-body{display:flex}

.pr{display:flex;align-items:center;gap:9px}
.pr-k{flex:0 0 56px;font-size:11.5px;color:var(--muted)}
.pr input[type=range]{
  flex:1;-webkit-appearance:none;height:3px;border-radius:2px;
  background:var(--line2);outline:none;
}
.pr input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;width:15px;height:15px;border-radius:50%;
  background:var(--accent);border:2px solid #1a1a1d;cursor:pointer;
  box-shadow:0 0 8px rgba(255,138,61,.4);
}
.pr-v{flex:0 0 44px;text-align:right;font:10.5px/1 var(--mono);color:var(--text);font-variant-numeric:tabular-nums}
.pr-rgb{display:flex;flex-direction:column;gap:6px;margin:2px 0 4px;padding-left:8px;border-left:2px solid var(--line)}
.pr-sub{display:flex;align-items:center;gap:7px}
.pr-sub i{font-style:normal;font:9px/1 var(--mono);color:var(--dim);width:9px}
.pr-sub input[type=range]{height:2px}

/* ============ 按钮 ============ */
.btn{
  flex:1 1 auto;padding:11px 12px;border-radius:10px;cursor:pointer;
  border:1px solid var(--line2);background:var(--panel2);color:var(--text);
  font-size:13px;font-weight:600;white-space:nowrap;
}
.btn:active{transform:scale(.985);background:#2b2b31}
.btn.primary{
  background:linear-gradient(180deg,var(--accent2),var(--accent));
  color:#1a0d00;border-color:transparent;font-weight:800;
  box-shadow:0 4px 16px rgba(255,138,61,.26);
}
.btn:disabled{opacity:.45;box-shadow:none}
.act-row{display:flex;gap:8px}
.tip{font-size:11px;color:var(--dim);line-height:1.65;margin:0 2px}
.msg{font-size:11.5px;margin:6px 0 0;line-height:1.6;min-height:1px}
.msg.ok{color:var(--ok)} .msg.err{color:var(--bad)}

/* ============ 效果库 ============ */
.search{
  width:100%;height:38px;border-radius:10px;border:1px solid var(--line2);
  background:var(--panel);padding:0 12px;font-size:13px;outline:none;
}
.search:focus{border-color:var(--accent)}
.cats{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
.cats::-webkit-scrollbar{display:none}
.cat{
  flex:0 0 auto;border:1px solid var(--line2);background:var(--panel);
  color:var(--muted);border-radius:999px;padding:6px 12px;font-size:12px;cursor:pointer;
}
.cat.on{border-color:var(--accent);color:var(--accent2);background:var(--accent-soft);font-weight:700}
.look-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:9px;padding-bottom:8px}
.look-card{
  border:1.5px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel);
  cursor:pointer;padding:0;text-align:left;
}
.look-card:active{transform:scale(.97)}
.look-card.on{border-color:var(--accent);box-shadow:0 0 0 2px rgba(255,138,61,.25)}
.lc-swatch{height:54px;position:relative}
.lc-swatch::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 40%,rgba(0,0,0,.5));
}
.lc-t{font-size:10.5px;padding:6px 7px 7px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.look-more{padding:12px 0 4px;text-align:center}

/* ============ AI ============ */
textarea{
  width:100%;border:1px solid var(--line2);border-radius:11px;background:var(--panel);
  padding:11px 12px;font-size:13.5px;line-height:1.6;resize:vertical;outline:none;
}
textarea:focus{border-color:var(--accent)}
textarea::placeholder{color:var(--dim)}
.chips{display:flex;gap:7px;flex-wrap:wrap}
.chip{
  border:1px solid var(--line2);background:var(--panel);color:var(--muted);
  border-radius:999px;padding:5px 11px;font-size:11.5px;cursor:pointer;
}
.chip:active{border-color:var(--accent);color:var(--accent2)}

.plan-card{border:1px solid rgba(255,138,61,.35);border-radius:var(--r);background:linear-gradient(180deg,rgba(255,138,61,.07),var(--panel));padding:12px}
.pc-head{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.pc-head b{font-size:15px;font-weight:800;color:var(--accent2)}
.pc-head span{font:10px/1 var(--mono);color:var(--dim);margin-left:auto}
.pc-note{font-size:12px;color:var(--muted);line-height:1.65;margin-bottom:8px}
.pc-steps{margin:0 0 10px;padding-left:18px;font-size:12px;color:var(--muted);line-height:1.8}
.pc-steps li::marker{color:var(--accent);font-family:var(--mono);font-size:10px}
.pc-params{
  display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px;
}
.pc-p{
  border:1px solid var(--line);border-radius:7px;padding:6px 7px;background:#151518;
}
.pc-p b{display:block;font:11px/1.3 var(--mono);color:var(--text);font-variant-numeric:tabular-nums}
.pc-p span{font-size:9.5px;color:var(--dim)}

/* ============ 智能体 ============ */
.sw-row{display:flex;align-items:center;gap:10px;margin:8px 0}
.sw-k{flex:0 0 34px;font-size:11.5px;color:var(--muted)}
.sw{display:flex;align-items:center;gap:8px;cursor:pointer}
.sw input{display:none}
.sw i{
  width:40px;height:22px;border-radius:11px;background:var(--line2);position:relative;transition:.2s;
}
.sw i::after{
  content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;
  background:#fff;transition:.2s;
}
.sw input:checked + i{background:var(--accent)}
.sw input:checked + i::after{transform:translateX(18px)}
.sw em{font-style:normal;font-size:11.5px;color:var(--muted)}
.sw-row input[type=range]{
  flex:1;-webkit-appearance:none;height:3px;border-radius:2px;background:var(--line2);outline:none;
}
.sw-row input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;width:16px;height:16px;border-radius:50%;
  background:var(--accent);border:2px solid #1a1a1d;cursor:pointer;
}
.sw-v{font:11px/1 var(--mono);color:var(--accent2);flex:0 0 34px;text-align:right}
.sw-roles{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0}
.sw-role{
  font-size:10px;padding:3px 7px;border-radius:5px;border:1px solid var(--line);
  color:var(--dim);background:#151518;font-family:var(--mono);
}
.sw-role.live{border-color:rgba(255,138,61,.4);color:var(--accent2);background:rgba(255,138,61,.08)}
.sw-out{margin-top:8px;display:flex;flex-direction:column;gap:5px;max-height:190px;overflow-y:auto}
.sw-vote{font-size:11px;color:var(--muted);line-height:1.55;border-left:2px solid var(--line2);padding-left:8px}
.sw-vote b{color:var(--accent2);font-weight:600}

/* ============ 设置 ============ */
.set-sec{border:1px solid var(--line);border-radius:var(--r);background:var(--panel);padding:12px}
.set-title{font-size:13px;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:8px}
.key-state{font-size:11px;font-weight:600;color:var(--dim);margin-left:auto;font-family:var(--mono)}
.key-state.ok{color:var(--ok)}
.set-sec input{
  width:100%;height:38px;border-radius:9px;border:1px solid var(--line2);
  background:#151518;padding:0 11px;font-size:12.5px;outline:none;margin-bottom:8px;
  font-family:var(--mono);
}
.set-sec input:focus{border-color:var(--accent)}
.seg{display:flex;gap:5px;flex:1}
.seg button{
  flex:1;border:1px solid var(--line2);background:#151518;color:var(--muted);
  border-radius:8px;padding:7px 0;font-size:11.5px;cursor:pointer;
}
.seg button.on{border-color:var(--accent);color:var(--accent2);background:var(--accent-soft);font-weight:700}

/* ============ 底部导航 ============ */
.tabbar{
  flex:0 0 auto;display:grid;grid-template-columns:repeat(4,1fr);
  background:#171719;border-top:1px solid var(--line);
  padding-bottom:var(--sab);position:relative;z-index:30;
}
.tab{
  border:0;background:transparent;padding:8px 0 9px;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--dim);
}
.tab i{font-style:normal;font-size:16px;line-height:1}
.tab span{font-size:10px}
.tab.on{color:var(--accent)}
.tab.on i{filter:drop-shadow(0 0 6px rgba(255,138,61,.6))}

/* ============ 弹层 ============ */
.layer{
  position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.62);
  display:flex;align-items:flex-end;justify-content:center;backdrop-filter:blur(4px);
}
.sheet{
  width:100%;max-width:560px;background:var(--panel);border-radius:16px 16px 0 0;
  padding:14px 16px calc(22px + var(--sab));max-height:86vh;overflow-y:auto;
  border-top:1px solid var(--line2);
}
.sheet-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.sheet-head b{flex:1;text-align:center;font-size:15px}
.link-btn{border:none;background:none;color:var(--accent);font-size:13px;font-weight:600;padding:4px}
.inst-body{font-size:12.5px;color:var(--muted);line-height:1.85}
.inst-body b{color:var(--text)}
.viewer{align-items:center}
#cvFull{max-width:96vw;max-height:76vh;border-radius:10px}
.view-acts{position:fixed;bottom:0;left:0;right:0;padding:12px 14px calc(22px + var(--sab));display:flex;gap:8px}
.view-acts .act{
  flex:1;padding:11px 0;border-radius:10px;border:1px solid var(--line2);
  background:rgba(28,28,31,.94);color:var(--text);font-size:13px;font-weight:600;
}

/* ============ toast ============ */
.toast{
  position:fixed;left:50%;bottom:calc(84px + var(--sab));transform:translateX(-50%);
  background:rgba(32,32,36,.97);border:1px solid var(--line2);color:var(--text);
  padding:9px 16px;border-radius:999px;font-size:12.5px;z-index:300;
  max-width:84vw;text-align:center;animation:fadeUp .22s ease;
}
.toast.err{border-color:rgba(248,113,113,.5);color:#fecaca}
@keyframes fadeUp{from{opacity:0;transform:translate(-50%,8px)}}

@media(min-width:720px){
  .pane{max-width:760px;margin:0 auto;width:100%}
  .look-grid{grid-template-columns:repeat(5,1fr)}
  .layer{align-items:center}
  .sheet{border-radius:16px;margin-bottom:5vh}
}
@media(max-width:380px){
  .pc-params{grid-template-columns:repeat(2,1fr)}
  .pr-k{flex-basis:48px;font-size:11px}
}
