/* Shared dark theme. Authentication and request handlers remain in their existing modules. */
:root {
  color-scheme:dark;
  --bg:#0b0e17;--bg2:#111622;--bg3:#1a2130;--bg4:#222c3e;
  --border:#2b3447;--border2:#3c4960;
  --text:#e8edf7;--text2:#bdc7d8;--text3:#a0aabc;
  --accent:#4b88ff;--accent2:#92b7ff;--accent-bg:rgba(75,136,255,.14);
  --green:#7bd5a0;--red:#ff9c99;--yellow:#e7bb70;--blue:#92b7ff;
  --radius:8px;--radius-lg:12px;--shadow:0 16px 48px rgba(0,0,0,.38);
  --pan:var(--bg2);--pan2:var(--bg3);--sunk:var(--bg);
  --line:var(--border);--line2:var(--border2);
  --fg:var(--text);--fg2:var(--text2);--fg3:var(--text3);
  --acc:var(--accent);--acc2:var(--accent2);--accfg:#fff;
  --accdim:var(--accent-bg);--glass:rgba(17,22,34,.96);
}
body::after{display:none}
#panel-recharge{min-width:0;background:var(--bg)}
.recharge-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;background:var(--bg2);border-bottom:1px solid var(--border);flex-shrink:0}
.recharge-toolbar b{font-size:14px;font-weight:550}
.recharge-toolbar a{font-size:13px;color:var(--accent2);text-decoration:none;padding:8px;border-radius:6px}
.recharge-toolbar a:hover{background:var(--bg3)}
#recharge-frame{display:block;width:100%;flex:1;min-height:0;border:0;background:#fff;color-scheme:normal}
.recharge-content{overflow:auto;padding:24px;display:grid;grid-template-columns:minmax(0,1fr);gap:24px;align-content:start}
.recharge-card{padding:24px;border:1px solid var(--border);border-radius:12px;background:var(--bg2);min-width:0}
.recharge-payment{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:32px}
.recharge-selection{min-width:0}
.recharge-payment-preview{min-width:0;border-left:1px solid var(--border);padding-left:32px;display:flex;flex-direction:column;text-align:center}
.recharge-payment-preview .cashier-status{font-size:13px;line-height:1.8;overflow-wrap:anywhere}
.recharge-payment-preview .cashier-qr{width:100%;max-width:360px;box-sizing:border-box;align-self:center}
.cashier-qr-placeholder{display:flex;flex:1;min-height:260px;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--text3);padding:24px 12px}
.cashier-qr-placeholder svg{width:64px;height:64px;opacity:.55}
.cashier-qr-placeholder b{font-size:14px;font-weight:500}
.recharge-card .cashier-qr-placeholder p{font-size:12px;margin:0}
.recharge-payment-preview:has(.cashier-qr:not([hidden])) .cashier-qr-placeholder,.recharge-payment-preview:has(.cashier-status:not(:empty)) .cashier-qr-placeholder{display:none}
.recharge-card h2{font-size:18px;margin:0 0 16px}
.recharge-card p{color:var(--text2);font-size:13px;line-height:1.7;margin:12px 0}
.cashier-faces{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0}
.cashier-faces button{cursor:pointer;border:1px solid var(--border);background:var(--bg3);border-radius:8px;padding:12px 16px;font-size:15px;color:var(--text);flex:1 1 110px;min-height:74px;text-align:left}
.cashier-faces button b,.cashier-faces button small{display:block}
.cashier-faces button small{font-size:12px;color:var(--text3);margin-top:6px}
.cashier-faces button:disabled,.cashier-channels button:disabled{opacity:.55}
.cashier-label{font-size:13px;color:var(--text2);margin-bottom:12px}
.cashier-channels{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}
.cashier-channels button{color:var(--text2);padding:10px 12px;border:1px solid var(--border);background:var(--bg3);border-radius:8px;font:inherit;font-size:13px;cursor:pointer}
.cashier-channels button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-bg);color:var(--accent2)}
.cashier-qr{text-align:center;border:1px solid var(--border);background:var(--bg);padding:18px;margin-top:18px;border-radius:10px}
.cashier-qr[hidden]{display:none}
.cashier-qr img,.acct-pay-qr img{display:block;width:min(220px,100%);height:auto;background:white;border:10px solid white;border-radius:8px;margin:0 auto}
.cashier-qr a{display:inline-block;text-decoration:none;margin-top:10px}
.cashier-status small,#pay-recharge-status small{display:block;overflow-wrap:anywhere;color:var(--text3)}
.cashier-status [data-status=credited]{color:var(--green)}
.cashier-status [data-status=failed],.cashier-status [data-status=expired],.cashier-error{color:var(--red)}
#cashier-create{width:100%;min-height:44px}
#cashier-legacy{margin-top:24px;color:var(--text3);font-size:13px}
#cashier-legacy summary{cursor:pointer;padding:10px 0}
#cashier-redeem-result{margin-top:12px;font-size:13px;overflow-wrap:anywhere}
.acct-face-chips button.chip,.acct-pay-chips button.chip{font-family:var(--font);text-align:left;color:var(--text2)}
.acct-face-chips button.active,.acct-pay-chips button.active{color:var(--accent2)}
.cashier-faces button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-bg);color:var(--accent2)}
.recharge-card .cashier-note{font-size:12px;color:var(--text3)}
#cashier-error{color:var(--red);font-size:13px;line-height:1.6}
.cashier-orders-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:16px}
.cashier-orders-head h2{margin:0}
.cashier-order{padding:16px 0;border-top:1px solid var(--border);overflow-wrap:anywhere}
.cashier-order b,.cashier-order small{display:block}
.cashier-order small{font-size:12px;margin-top:8px;color:var(--text3)}
.cashier-order [data-status=credited]{color:var(--green)}
@media(max-width:760px){.recharge-content{padding:14px;gap:14px}.recharge-card{padding:18px}.recharge-payment{grid-template-columns:minmax(0,1fr);gap:24px}.recharge-payment-preview{border-left:0;border-top:1px solid var(--border);padding:24px 0 0}.cashier-qr-placeholder{min-height:180px}}
button,input,textarea,select{accent-color:var(--accent)}
button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent2);outline-offset:3px}
button:disabled{cursor:not-allowed}
::-webkit-scrollbar-thumb{background:var(--border2)}
.lang-dock-btn,.lang-dock-menu,.cs-panel,.cs-note,.cs-note button,.cs-msg-body,.cs-form,.cs-form textarea,.cs-form .cs-attach,.cs-form .cs-emoji-btn,.announce-bar,.announce-box,.announce-box-ft .announce-back,.acts button,.face-batch-acts button,.acct-side,.acct-recharge-row .input,.agent-cs-box{background:var(--bg2)}
.cs-form .cs-attach:hover,.cs-form .cs-emoji-btn:hover,.cs-form .cs-emoji-btn.on,.cs-emoji button:hover,.announce-box-ft .announce-back:hover{background:var(--bg3)}
.q-f.on,.jobs-tab.on,.face-batch-modes button.on{background:var(--bg4);box-shadow:none;color:var(--text)}
.job-more,.face-batch-thumb button{background:var(--bg2);color:var(--text)}
.job-veil button{background:var(--bg3)}
.qi-newtask.on .plus{background:var(--accent-bg);color:var(--accent2)}
.docs-nav button.on,.docs-nav-sub button.on,.docs-mode-tabs button.on{color:var(--accent2)}
.cs-msg.me .cs-msg-body{color:var(--text)}
.sidebar{min-height:68px;height:auto;gap:8px;padding:12px 20px;background:var(--bg2)}
.sidebar .logo{width:30px;height:30px;border-radius:8px;font-size:14px;flex-shrink:0}
.studio-brand{font-size:14px;font-weight:650;margin-right:20px;white-space:nowrap}
.sidebar .nav-btn{min-height:36px;font-size:13px;padding:8px 10px;border-radius:7px;color:var(--text3);white-space:nowrap}
.sidebar .nav-btn[data-panel="image"]{display:flex!important}
.sidebar .nav-btn.active{background:var(--accent-bg);color:var(--text);box-shadow:none}
.sidebar .nav-btn:hover{background:var(--bg3);color:var(--text)}
.sidebar-bottom{gap:6px}
.sidebar #sidebar-limits,.sidebar #sidebar-gen-limit{display:flex!important;gap:3px;padding:4px 6px}
.sidebar #sidebar-limits[style*="display: none"],.sidebar #sidebar-gen-limit[style*="display: none"]{display:none!important}
.sidebar #sidebar-logout-btn{display:none!important}
.sidebar #sidebar-limits .sb-label,.sidebar #sidebar-gen-limit .sb-label{display:none}
.sidebar #top-logout:hover{color:var(--red)!important}
.announce-bar{padding:0 20px}
#bench{position:relative;display:flex;flex-direction:row;isolation:isolate;overflow:hidden}
#bench .queue{width:220px;max-height:none;background:var(--bg2)}
#bench .qh{align-items:center;padding:20px 16px 12px;gap:8px}
#bench .qh b{font-size:13px;letter-spacing:0;text-transform:none;color:var(--text)}
#bench .qh-meta{margin-left:auto;font-size:12px}
#bench .q-filters{border-radius:8px;padding:4px;gap:4px;margin:0 12px 12px;background:var(--bg3)}
#bench .q-f{font-size:12px;border-radius:5px;min-height:30px}
#bench .ql{padding:0 12px 16px}
#bench .qi-newtask{border-radius:8px;margin-bottom:16px;padding:10px;grid-template-columns:28px 1fr}
#bench .qi-newtask .plus{width:28px;height:28px;border-radius:6px}
#bench .qi-newtask .tx s{font-size:12px}
#bench .qi{padding:12px 8px;border-radius:8px;gap:8px}
#bench .qi .qth,#bench .qi .ph{border-radius:6px}
#bench .qi .pill{font-size:11px;border-radius:4px}
#bench .qi .qm{font-size:12px}
#bench .qi.is-fail .why,#bench .qi.is-ok .why{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.5;max-height:3em;font-size:12px}
#bench .stage{background:var(--bg);padding:0 20px;gap:16px;min-width:0}
.studio-stage-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;padding-top:20px}
.studio-kind{display:flex;gap:6px;flex-wrap:wrap}
.studio-kind button,.studio-drawer-btn{border:1px solid var(--border);background:var(--bg2);padding:8px 14px;border-radius:8px;min-height:36px;font-size:13px;cursor:pointer}
.studio-kind button:hover,.studio-drawer-btn:hover{background:var(--bg3);border-color:var(--border2)}
.studio-kind button[aria-pressed="true"]{background:var(--accent-bg);border-color:var(--accent);color:var(--text)}
.studio-mobile-tools{display:flex;gap:8px}
.studio-drawer-btn{display:none}
#bench .stage-split,#bench .stage-split.has-meta{display:flex;flex-direction:column;gap:12px;min-height:0;flex:1;overflow:auto}
#bench .view{padding:20px;background:#080b12;border:1px solid var(--border);border-radius:10px;flex:1;min-height:140px}
#bench .view-empty{max-width:400px;padding:24px 12px}
#bench .view-empty b{color:var(--text);font-size:16px;font-weight:550;margin-bottom:10px}
#bench .view-empty span{font-size:13px;color:var(--text3)}
#bench .view .wait{border-radius:10px;background:var(--bg2);padding:24px}
#bench .shot-grid img,#bench .shot-grid video{max-width:min(100%,420px);border-radius:8px}
.studio-result-details{border:1px solid var(--border);border-radius:8px;background:var(--bg2);flex-shrink:0;overflow:hidden}
.studio-result-details>summary{font-size:13px;padding:12px 14px;cursor:pointer;list-style-position:inside;color:var(--text2)}
.studio-result-details[open]>summary{border-bottom:1px solid var(--border)}
#bench .shot-meta{border:0;max-height:210px;overflow:auto;gap:12px;background:var(--bg2);padding-bottom:16px}
#bench .shot-meta .acts{position:sticky;background:var(--bg2);padding:12px 14px;border-bottom:0}
#bench .shot-meta .acts button{border-radius:7px;padding:8px 10px;min-height:34px}
#bench .shot-kicker{font-size:12px}
#bench .shot-meta .ask{font-size:14px;line-height:1.65}
#bench .shot-meta .labs span{font-size:12px;border-radius:5px;padding:4px 7px}
#bench .dock{padding:14px;margin-bottom:20px;background:var(--bg2);border:1px solid var(--border);border-radius:12px;max-height:52%;overflow:auto}
.studio-draft-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;font-size:14px}
.studio-draft-head b{font-weight:550}
#studio-draft-kind{font-size:12px;color:var(--text3)}
.studio-prompt-label{display:block;margin:10px 0 6px;font-size:12px;color:var(--text3)}
#bench .composer{padding:0;background:var(--bg3);border-radius:8px}
#bench .composer textarea{min-height:104px;max-height:200px;font-size:14px;line-height:1.65;padding:12px;overflow:auto}
#bench .composer .at-menu{right:0}
#bench .tools{justify-content:space-between;gap:16px;min-height:40px;margin-top:14px}
#bench .cost{display:block;font-size:12px;color:var(--text3);line-height:1.5;min-width:0}
#bench .fire{min-height:40px;padding:0 18px;border-radius:8px;font-size:14px}
#bench .fire:hover{transform:none;box-shadow:none}
#bench .fire-cost{font-size:12px}
#bench .pc-refhint{font-size:12px;line-height:1.55}
#bench .pc-addf{width:60px;height:60px;border-radius:8px;font-size:12px;color:var(--text2)}
#bench .pc-thumb{width:60px;height:60px;border-radius:8px}
#bench #refs:not(:has(.pc-thumb)){flex-direction:row;align-items:center;flex-wrap:wrap;gap:8px 12px}
#bench #refs:not(:has(.pc-thumb)) .pc-addf{width:auto;height:36px;min-width:80px;flex-direction:row;gap:8px;padding:0 10px}
#bench #refs:not(:has(.pc-thumb)) .pc-refhint{flex:1;min-width:120px}
#bench .pc-thumbs.omni{flex-wrap:wrap;overflow:visible;gap:8px}
#bench .pc-thumbs.omni .pc-thumb{margin-left:0;transform:none;width:60px;height:60px;border:1px solid var(--border);box-shadow:none}
#bench .pc-thumbs.omni .pc-thumb:hover{transform:none;z-index:auto}
#bench .pc-thumbs.omni .pc-addf{margin-left:0}
.bench-settings{width:280px;flex-shrink:0;padding:20px 18px 28px;border-left:1px solid var(--border);background:var(--bg2);overflow:auto;min-height:0}
.studio-settings-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:22px;font-size:14px}
.studio-settings-head b{font-weight:550}
.studio-close{display:none;width:32px;height:32px;border:1px solid var(--border);border-radius:6px;background:var(--bg3);font-size:20px;cursor:pointer}
#params{display:block}
#params .pc-model{width:100%;height:auto;min-height:74px;display:flex;align-items:flex-start;flex-direction:column;gap:6px;padding:12px;border:1px solid var(--border2);border-radius:8px;background:var(--bg3);text-align:left;color:var(--text)}
#params .pc-model:hover{border-color:var(--accent)}
#params .pc-model .k{font-size:12px;color:var(--text3)}
#params .pc-model b{font-size:14px;font-weight:550;overflow-wrap:anywhere}
#params .pc-model .pc-tag{font-size:12px;color:var(--text3)}
.studio-model-sub{font-size:12px;color:var(--text3);line-height:1.55;margin:10px 0 20px;overflow-wrap:anywhere}
.studio-output-title{font-size:13px;font-weight:550;margin-bottom:14px}
.studio-setting{display:flex;flex-direction:column;gap:8px;font-size:12px;color:var(--text3);margin-bottom:16px}
#params .studio-select,#params .studio-neg{width:100%;min-width:0;min-height:38px;border:1px solid var(--border);background:var(--bg3);border-radius:7px;padding:8px 10px;font:inherit;font-size:13px;color:var(--text)}
#params .studio-neg{resize:vertical;line-height:1.55;min-height:80px}
.studio-setting .pc-range{padding:4px 0}
.studio-setting .pc-range input{min-width:0}
.studio-setting .pc-range em{color:var(--text);font-size:13px}
.studio-advanced,.studio-face-group{border-top:1px solid var(--border);margin-top:6px;padding:16px 0 0;font-size:13px}
.studio-advanced>summary,.studio-face-group>summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;min-height:32px}
.studio-advanced>summary::before,.studio-face-group>summary::before{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);flex-shrink:0;margin-right:4px}
.studio-advanced[open]>summary::before,.studio-face-group[open]>summary::before{transform:rotate(45deg)}
.studio-advanced>summary small,.studio-face-group>summary #studio-face-summary{font-size:12px;font-weight:400;color:var(--text3);margin-left:auto;max-width:140px;overflow-wrap:anywhere;text-align:right}
.studio-advanced-body{padding-top:16px}
#params .pc-tog{width:100%;margin:0;padding:10px;background:var(--bg3);border-radius:7px;text-align:left;font-size:13px;color:var(--text2)}
#params .pc-tog.on{border-color:var(--accent);background:var(--accent-bg);color:var(--text)}
#face-pop.docked{width:100%;height:auto;max-height:none;padding:16px 0 0;border:0;background:transparent;left:auto!important;position:static;overflow:visible}
#face-pop.docked .face-pop-hd{display:none}
#face-pop.docked .face-mode{font-size:12px;border:1px solid transparent;padding:9px 2px;min-height:36px;color:var(--text3)}
#face-pop.docked .face-mode:hover,#face-pop.docked .face-mode.on{background:var(--bg4);color:var(--text);box-shadow:none}
#face-pop.docked .face-modes{background:var(--bg3);margin-bottom:16px}
#face-pop.docked .face-prev-empty{background:var(--bg3);border-radius:8px;margin-bottom:12px;font-size:12px;padding:16px 12px}
#face-pop.docked .face-pop-sub{font-size:12px}
#face-pop.docked .face-pop-grid{gap:14px}
.studio-scrim{position:absolute;inset:0;z-index:24;background:rgba(0,0,0,.62);border:0}
.studio-scrim[hidden],.studio-face-group[hidden],.studio-result-details[hidden]{display:none!important}
.jobs-bar{padding:22px 28px;border-bottom:1px solid var(--border);background:var(--bg2)}
.jobs-list{padding:24px 28px 40px}
.jobs-tabs,.face-batch-modes{border-radius:8px}
.jobs-tab,.face-batch-modes button{border-radius:6px;font-size:13px;min-height:34px}
.job{border-radius:10px}
.face-batch{background:var(--bg)}
.account-panel{background:var(--bg);padding:28px 32px 56px}
.acct-side{background:var(--bg2)}
.docs-nav{background:var(--bg2);padding-top:20px}
.docs-top{background:var(--bg2);padding:20px 28px}
.docs-page p,.docs-page li,.docs-lead{font-size:14px}
.pricing-channel{background:var(--bg2);border-radius:10px}
.lang-dock{left:14px;bottom:12px}
.lang-dock-btn{border-radius:7px;font-size:12px}
body.bench-in .lang-dock{display:none}
.cs-dock{bottom:12px;right:14px}
.cs-panel,.cs-note,.cs-msg-body{border-radius:10px}
.cs-panel{overflow:hidden}
@media(min-width:981px) and (max-width:1280px){
  .studio-brand{display:none}
  .sidebar{padding:12px 16px;gap:5px}
  .sidebar .nav-btn{padding:8px;font-size:12px}
  #bench .queue{width:190px}
  .bench-settings{width:260px;padding:20px 16px}
  #bench .stage{padding:0 16px}
}
@media(max-width:1180px){
  .sidebar #sidebar-limits,.sidebar #sidebar-gen-limit{display:none!important}
}
@media(max-width:980px){
  .studio-brand{display:none}
  .sidebar{flex-wrap:wrap;padding:10px 14px;gap:4px}
  .sidebar .nav-btn{padding:8px;font-size:12px}
  #bench .queue{display:none}
  #studio-history-toggle{display:block}
  #bench .queue.is-open{display:flex;position:absolute;top:0;bottom:0;left:0;width:min(320px,calc(100% - 24px));max-height:none;z-index:25;border-right:1px solid var(--border);border-bottom:0}
  #bench .queue .studio-close{display:block}
  #bench .queue .qh{padding-top:16px}
}
@media(max-width:760px){
  .bench-settings{display:none}
  #studio-settings-toggle{display:block}
  .bench-settings.is-open{display:block;position:absolute;right:0;top:0;bottom:0;z-index:25;width:min(340px,calc(100% - 24px));max-height:none}
  .bench-settings .studio-close{display:block}
  #bench .stage{padding:0 14px;gap:12px}
  .studio-stage-head{padding-top:14px;gap:8px;flex-wrap:wrap}
  .studio-kind button,.studio-drawer-btn{font-size:12px;padding:8px 10px}
}
@media(max-width:640px){
  .sidebar{padding:8px 12px;overflow:visible}
  .sidebar .nav-btn{min-height:36px;padding:6px 8px}
  .sidebar-bottom{width:100%;margin:4px 0 0;padding-top:6px;border-top:1px solid var(--border);justify-content:flex-end;gap:4px}
  .sidebar #sidebar-balance{margin-right:auto}
  .sidebar .logo{width:26px;height:26px;margin-right:4px}
  #bench .stage{overflow:auto;display:block;padding:0 12px 18px}
  .studio-stage-head{margin-bottom:12px}
  .studio-kind{gap:4px}
  .studio-kind button,.studio-drawer-btn{min-height:40px;padding:8px 10px}
  #bench .stage-split{min-height:230px;margin-bottom:12px}
  #bench .view{min-height:230px;padding:14px}
  #bench .view img,#bench .view video{max-height:350px}
  #bench .shot-meta{max-height:280px}
  #bench .dock{max-height:none;overflow:visible;margin-bottom:0;padding:14px}
  #bench .composer textarea{font-size:16px;min-height:112px;max-height:230px}
  #bench .tools{position:sticky;bottom:-18px;z-index:4;background:var(--bg2);padding:10px 0;margin-top:6px;gap:8px}
  #bench .fire{min-height:44px;padding:0 12px}
  #bench .fire-cost{font-size:11px}
  .studio-setting .studio-select,.studio-setting .studio-neg{font-size:16px!important;min-height:44px!important}
  .studio-close{width:36px;height:36px}
  .studio-advanced>summary,.studio-face-group>summary{min-height:44px}
  .account-panel{padding:16px 14px 40px}
  .docs-top{padding:16px}
  .docs-top b{font-size:15px}
  .docs-top span{font-size:12px}
  .jobs-bar,.jobs-list{padding:16px 14px}
  .cs-dock{right:12px;bottom:12px}
  .cs-fab{min-height:36px}
  .cs-dock.in-studio-header{position:static;gap:0;z-index:195;flex-shrink:0}
  .cs-dock.in-studio-header .cs-fab{border:1px solid var(--border);background:var(--bg3);color:var(--text2);box-shadow:none;border-radius:7px;min-height:36px;padding:6px 10px;font-size:12px}
  .cs-dock.in-studio-header .cs-panel{position:fixed;right:12px;bottom:12px}
}
@media(prefers-reduced-motion:reduce){.app.bench-live *,body.bench-in #app{animation:none!important;transition:none!important}}
