:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#282931;background:#f5f6f8;font-size:15px;--muted:#7c7f8c;--border:#e8e9ef;--accent:#7861dd;--soft:#f1edff;--card:#fff}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,select{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--border);border-radius:9px;padding:10px 15px;background:white;color:inherit;min-height:42px;transition:background .15s,transform .15s}button:hover{background:#f4f1fc}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}a{color:var(--accent);text-decoration:none}input,textarea,select{width:100%;border:1px solid #dedfe7;border-radius:8px;padding:12px;color:inherit;background:#fff}textarea{resize:vertical;line-height:1.7}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #b6a4f3;outline-offset:2px}label{display:block;font-size:14px;font-weight:550;margin:16px 0 8px}.shell{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:30px 18px 20px;background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column}.brand{display:flex;gap:10px;align-items:center;font-size:20px;color:#272630;font-weight:750;margin:0 5px 35px}.brand small{font-size:9px;letter-spacing:2px;display:block;margin-top:5px;color:var(--muted)}.brand-icon{display:grid;place-items:center;width:38px;height:40px;border-radius:12px;background:linear-gradient(145deg,#edab93,#dac885,#95c6bb,#9992db);color:white;font-weight:900;font-size:29px}.section-label{font-size:11px;color:#9596a1;letter-spacing:1px;margin:18px 12px 8px}.nav-item{width:100%;display:flex;gap:12px;align-items:center;text-align:left;border:none;background:transparent;margin:2px 0;padding:11px 14px;color:#676975}.nav-item.active{background:var(--soft);color:#7456c3;font-weight:600}.sidebar-bottom{margin-top:auto;padding:25px 10px 0;font-size:12px;color:var(--muted)}.sidebar-bottom small{display:block;margin-top:10px;line-height:1.8}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#77b898;margin-right:5px}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 34px;font-size:13px}.pill{font-size:12px;padding:7px 12px;border:1px solid #e8dfbf;border-radius:20px;color:#95792b;background:#fffcf2}.pill.ready{color:#387f68;border-color:#cce5db;background:#f0faf5}.page{max-width:1560px;margin:auto;padding:30px 34px 50px}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:27px}.eyebrow{font-size:10px;letter-spacing:2px;color:#9393a3}h1{font-size:29px;margin:9px 0;font-weight:650;letter-spacing:-1px}.intro p{font-size:14px;color:var(--muted);margin:0}.intro-mark{font-size:14px;color:#99939f;border-left:3px solid #c8b7e7;padding-left:15px}.intro-mark span{display:block;font-size:9px;letter-spacing:1px;margin-top:8px}.workspace{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr);gap:22px}.panel,.results-panel{background:white;border:1px solid var(--border);border-radius:14px;padding:24px}.editor .panel{margin-bottom:18px}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px}.panel-heading h2{margin:0;font-size:16px;font-weight:650}.panel-heading h2>span{margin-left:8px}.panel-heading>.muted{font-size:11px}.muted{color:var(--muted)}.slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.slot{border:1px dashed #d8d5e5;border-radius:10px;padding:15px;background:#fdfcfe;min-width:0}.slot:first-child{background:#f8f6ff}.slot strong{font-size:14px}.slot .upload{width:100%;min-height:106px;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#9a8bbc;gap:8px}.upload span{font-size:28px;font-weight:200}.upload small{font-size:11px;color:#96929f}.thumbs{display:flex;gap:7px;overflow:auto}.thumb{position:relative;flex-shrink:0}.thumb img{height:78px;width:65px;object-fit:cover;border-radius:5px}.thumb button{position:absolute;top:0;right:0;padding:0;min-height:20px;width:20px;border-radius:50%;background:#fff}.helper{font-size:12px;line-height:1.7;color:var(--muted);margin:12px 0}.secondary{color:#735ac4;background:#f9f7ff;border-color:#e4ddf5}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.chip{font-size:13px;padding:8px 12px;min-height:36px}.chip.selected{background:var(--soft);color:#7654c2;border-color:#cbbced}.submit-bar{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:8px 0}.submit-bar strong{font-size:15px}.submit-bar small{display:block;color:var(--muted);font-size:11px;margin-top:7px}.primary{background:var(--accent);color:white;border:0;font-weight:600;padding:13px 25px}.primary:hover{background:#6951c9}.primary span{margin-left:28px}.results-panel{min-height:520px;align-self:start}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:330px;text-align:center;color:var(--muted)}.empty-symbol{height:92px;width:74px;border:1px solid #dedbe8;border-radius:12px;display:grid;place-items:center;font-size:32px;color:#b3a8d0;background:linear-gradient(160deg,#fcf7ef,#f1effb);transform:rotate(-7deg);margin-bottom:22px}.empty strong{font-size:15px;color:#6f6e7c;font-weight:500}.empty p{font-size:12px;max-width:210px;line-height:1.8}.result-note{font-size:11px;color:#9999a4;text-align:center;padding-top:25px;border-top:1px solid #f1f1f5}.text-button{padding:4px 0;min-height:28px;border:none;font-size:12px;color:var(--muted)}.task{border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:13px}.task-title{display:flex;justify-content:space-between;font-size:13px;gap:10px}.task small{display:block;color:var(--muted);font-size:11px;margin:8px 0}.task p{font-size:12px;line-height:1.7;color:#a8685b;overflow-wrap:anywhere}.output-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}.output-grid img{width:100%;border-radius:7px}.output-grid a{font-size:12px}.notice{color:#a05e43;font-size:13px;line-height:1.7}.hidden{display:none!important}.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.library-grid img{width:100%;height:180px;object-fit:contain;background:#fafafa;border-radius:8px}.library-grid p{font-size:13px;overflow-wrap:anywhere}.analysis{margin-top:12px}.admin-shell{max-width:1280px;margin:auto;padding:25px 35px}.admin-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.admin-top .brand{margin:0}.admin-tabs{display:flex;gap:8px;margin-bottom:24px}.admin-tabs .active{background:var(--soft);color:var(--accent)}.admin-grid{display:grid;grid-template-columns:235px 1fr;gap:20px}.provider-nav{display:flex;flex-direction:column;gap:10px}.provider-nav button{text-align:left;padding:20px}.provider-nav small{display:block;font-size:11px;margin-top:6px;color:var(--muted)}.provider-nav .active{border-color:#beaee8;background:#f8f5ff}.admin-form .panel{margin-bottom:16px}.admin-form h2{font-size:17px;margin:0 0 8px}.inline{display:flex;align-items:center;gap:10px}.inline input[type=checkbox]{width:18px;height:18px}.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.login{width:min(430px,90vw);margin:14vh auto}.login .brand{margin-bottom:32px}.login h1{font-size:25px}.code{font-family:ui-monospace,monospace;font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere;background:#f7f7fa;padding:16px;border-radius:8px;line-height:1.8}.test-result{border-left:3px solid #b39bdc;margin-top:18px;padding:10px 16px;white-space:pre-wrap;line-height:1.8;font-size:13px}.smoke-img{width:160px;border-radius:8px;margin-top:12px}@media(max-width:1100px){.shell{grid-template-columns:190px minmax(0,1fr)}.page{padding:24px 20px}.workspace{grid-template-columns:1fr}.results-panel{min-height:250px}.empty{min-height:210px}.intro-mark{display:none}}@media(max-width:640px){.shell{display:block}.sidebar{position:relative;height:auto;padding:16px}.brand{margin-bottom:12px}.sidebar nav{display:grid;grid-template-columns:repeat(2,1fr)}.sidebar-bottom,.section-label{display:none}.topbar{padding:0 18px}.page{padding:22px 14px}.panel,.results-panel{padding:18px}.panel-heading>.muted{display:none}.admin-grid{grid-template-columns:1fr}.provider-nav{flex-direction:row;overflow:auto}.admin-shell{padding:20px 14px}.two-fields{grid-template-columns:1fr}.intro h1{font-size:26px}.submit-bar .primary{padding:13px 17px}}

.garment-row{display:flex;gap:12px;align-items:center;margin:12px 0;border:1px solid var(--border);border-radius:8px;padding:10px}.garment-row img{width:62px;height:74px;object-fit:contain}.garment-row span{flex:1;overflow-wrap:anywhere;font-size:12px}.garment-row select{width:110px}details{padding:12px 0}summary{cursor:pointer}select+select,input+select{margin-top:8px}
fieldset{border:0;padding:0;margin:0;min-width:0}#preconditions:not(:empty){margin-bottom:18px;max-width:340px}#preconditions label{margin-top:0}.slot-actions{display:flex;flex-direction:column;gap:8px;margin-top:15px}.slot-actions button{width:100%;font-size:13px}.slot .helper{display:block;font-size:11px}.slot .thumbs:not(:empty){margin-top:12px}.slot .thumb img{width:86px;height:105px;object-fit:contain}.material-dialog{width:min(820px,94vw);max-height:86vh;border:1px solid var(--border);border-radius:16px;padding:26px;color:inherit}.material-dialog::backdrop{background:rgb(28 24 43 / 40%)}.material-dialog .chips,#library>.chips{margin-top:16px}.material-choice{display:flex;flex-direction:column;gap:8px;text-align:left;overflow-wrap:anywhere;min-width:0}.material-choice span{font-size:13px}.material-choice small{color:var(--muted);font-size:11px}.category-dialog{max-width:550px}.fact-card{border:1px solid var(--border);border-radius:10px;padding:14px;margin-top:14px}.fact-heading{display:flex;align-items:center;gap:10px;font-size:13px;overflow-wrap:anywhere}.fact-heading img{width:45px;height:55px;object-fit:contain;border-radius:5px}.fact-card textarea{font-size:13px;line-height:1.6}.fact-card label{font-size:12px}.asset-card>button{font-size:12px;width:100%}.analysis h3{font-size:15px}.task-analysis summary{font-size:12px;color:var(--accent)}@media(max-width:640px){.slots{grid-template-columns:1fr}.material-dialog{padding:18px}.fact-card .two-fields{gap:0}}
/* ── 提示词库面板 ── */
.pl-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 14px}
.pl-meta{color:var(--muted);font-size:12px;margin-right:auto}
.pl-wrap{display:grid;grid-template-columns:236px minmax(0,1fr);gap:16px;align-items:start}
.pl-nav{display:flex;flex-direction:column;gap:5px;position:sticky;top:12px}
.pl-group{font-size:11px;letter-spacing:.06em;color:var(--muted);margin:10px 0 1px;overflow-wrap:anywhere}
.pl-item{display:block;width:100%;text-align:left;padding:9px 11px;border-radius:10px;background:#fff;min-height:0;line-height:1.4}
.pl-item.active{border-color:var(--accent);background:var(--soft)}
.pl-item small{display:block;color:var(--muted);font-size:11px;margin-top:4px}
.pl-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#2fa36b;margin-right:7px;vertical-align:middle}
.pl-dot.err{background:#d1453b}
.pl-body{display:flex;flex-direction:column;gap:14px;min-width:0}
.pl-card{border:1px solid var(--border);border-radius:12px;padding:15px;background:#fff}
.pl-card h3{margin:0 0 4px;font-size:15px}
.pl-card>p.helper{margin:0 0 10px}
.pl-title{font-size:15px}
.pl-values{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin:10px 0}
.pl-values label{display:flex;flex-direction:column;gap:4px;font-size:12px}
.pl-values b{font-weight:600}
.pl-values em{color:var(--muted);font-style:normal;font-size:11px}
.pl-values input{padding:8px 10px}
.pl-vars{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 2px}
.pl-chip{font-size:12px;padding:4px 10px;min-height:0;border-radius:999px;line-height:1.6;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.pl-chip.used{border-color:var(--accent);color:var(--accent);background:var(--soft)}
.pl-src{font-size:11px;color:var(--muted);margin:9px 0 0}
.pl-sep{width:1px;height:26px;background:var(--border);margin:0 3px}
.pl-highlight{white-space:pre-wrap;line-height:1.85;background:#faf9ff;border:1px solid var(--border);border-radius:10px;padding:13px;margin:10px 0;max-height:320px;overflow:auto;font-size:13px;overflow-wrap:anywhere}
.pl-token{color:#a9a3c4;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.pl-empty{background:#fdeceb;color:#a3281f;border-radius:4px;padding:0 4px}
.pl-hint{color:var(--muted)}
.pl-trace{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:7px;margin-top:4px}
.pl-trace>div{border:1px solid var(--border);border-radius:9px;padding:8px 10px;font-size:12px;overflow-wrap:anywhere}
.pl-trace b{display:block;font-weight:600;margin-bottom:2px}
.pl-trace span{display:block;color:var(--muted);font-size:11px}
.pl-trace code{font-size:11px;background:var(--soft);color:var(--accent);border-radius:4px;padding:1px 4px}
.pl-issues{margin:10px 0 0}
.pl-issue{margin:0 0 6px;font-size:13px;padding:8px 11px;border-radius:9px;overflow-wrap:anywhere}
.pl-issue.err{background:#fdeceb;color:#a3281f}
.pl-issue.warn{background:#fff6e5;color:#8a5a06}
.pl-issue.ok{background:#eaf7f0;color:#1f6b46}
@media(max-width:880px){.pl-wrap{grid-template-columns:1fr}.pl-nav{position:static}}
/* ── 账号管理面板 ── */
.acct-create{border:1px solid var(--border);border-radius:12px;padding:14px;background:#fff;margin-bottom:16px}
.acct-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
.acct-row:first-child{margin-top:0}
.acct-row input{flex:1 1 180px;min-width:140px;padding:9px 11px}
.acct-row button{flex:0 0 auto;white-space:nowrap}
.acct-creds{margin-bottom:16px}
.acct-card{border:1px solid #c9d8f2;background:#f8fbff;border-radius:12px;padding:14px}
.acct-card b{display:block;font-size:15px;margin-bottom:4px}
.acct-card textarea{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:1.8;margin:8px 0 0;resize:vertical}
.acct-list{border:1px solid var(--border);border-radius:12px;background:#fff;padding:14px}
.acct-table{width:100%;border-collapse:collapse}
.acct-table th,.acct-table td{padding:8px 10px;text-align:left;border-bottom:1px solid #f0f1f5;font-size:13px;vertical-align:middle}
.acct-table th{background:#fafafc;font-size:12px;color:var(--muted);font-weight:600}
.acct-table tr:last-child td{border-bottom:none}
.acct-table tr.acct-off td{opacity:.55}
.muted-cell{color:var(--muted);font-size:12px}
.acct-ops{white-space:nowrap}
.acct-ops button{font-size:12px;padding:5px 9px;min-height:0;margin-right:4px}
.pill{display:inline-block;font-size:11px;border-radius:999px;padding:1px 8px;white-space:nowrap}
.p-on{background:#eaf7f0;color:#1f6b46}
.p-off{background:#f2f3f7;color:#6b6f7d}
.p-src{background:#eef1f8;color:#425069}
@media(max-width:760px){.acct-table{display:block;overflow-x:auto}}
/* ── 任务号（前后台共用） ── */
.task-code{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin-top:4px}
.task-code strong{font-weight:600;color:#425069;background:#eef1f8;border-radius:6px;padding:1px 7px;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.02em}
.task-code button{font-size:11px;padding:2px 8px;min-height:0;border-radius:6px}
.job-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:#425069;
  background:#eef1f8;border-radius:6px;padding:1px 7px;white-space:nowrap}
.task-audit{border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin:8px 0}
.task-audit h4{margin:0 0 4px;font-size:13px}
.task-audit p{margin:0 0 6px}
/* ── 档位价格一览 ── */
.tier-summary{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 14px}
.tier-chip{display:inline-flex;align-items:baseline;gap:6px;border:1px solid var(--border);border-radius:999px;
  padding:5px 12px;background:#fafafc;font-size:12px}
.tier-chip b{font-weight:600}
.tier-chip em{font-style:normal;color:var(--muted)}
.tier-price-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tier-price-row label{margin:0}
.tier-price-row input{width:110px;flex:0 0 auto}
.tier-money{font-size:12px;color:var(--muted);white-space:nowrap}
/* ── 专属模特 ── */
.filter-bar{display:flex;flex-direction:column;gap:10px;margin:0 0 14px}
.filter-group{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.filter-label{font-size:12px;color:var(--muted);min-width:34px;flex:0 0 auto}
.filter-group .chips{display:flex;flex-wrap:wrap;gap:6px}
.filter-group .chip{font-size:12px;padding:4px 11px;min-height:0;border-radius:999px;background:#fff}
.filter-group .chip.selected{border-color:var(--accent);background:var(--soft);color:var(--accent)}
.filter-group input{flex:1 1 200px;min-width:150px;padding:9px 12px}
.model-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:0 0 16px}
.model-stat{background:#fff;border:1px solid var(--border);border-radius:10px;padding:11px 13px}
.model-stat span{display:block;font-size:12px;color:var(--muted)}
.model-stat b{font-size:20px;font-weight:600;line-height:1.3}
.model-stat em{display:block;font-style:normal;font-size:11px;color:var(--muted)}
.model-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:14px}
.model-card{background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.model-thumb{position:relative;aspect-ratio:2/3;background:#f4f5f8;overflow:hidden}
.model-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.model-badge{position:absolute;left:8px;top:8px;font-size:11px;border-radius:999px;padding:2px 8px;background:rgba(255,255,255,.92);color:#425069;border:.5px solid rgba(0,0,0,.06)}
.model-badge.ai{background:rgba(241,237,255,.95);color:#5b3ec9}
.model-body{padding:10px 12px 4px;flex:1}
.model-body strong{font-size:14px}
.model-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.model-tag{font-size:11px;background:#f2f3f7;color:#5b5e6b;border-radius:5px;padding:1px 6px}
.model-outfit{margin:7px 0 0;font-size:12px;color:var(--muted);line-height:1.55}
.model-note{margin:5px 0 0;font-size:11px;color:#9a9daa}
.model-acts{display:flex;gap:6px;padding:10px 12px 12px}
.model-acts button{flex:1;font-size:12px;padding:6px 8px;min-height:0}
.model-foot{margin-top:18px;border-top:1px solid var(--border);padding-top:10px}
.model-foot p{margin:2px 0}
.model-dialog{width:min(520px,92vw);border:1px solid var(--border);border-radius:14px;padding:20px}
.model-dialog h3{margin:0 0 6px;font-size:16px}
.model-dialog label{display:block;font-size:12px;color:var(--muted);margin-top:11px}
.model-dialog input,.model-dialog select,.model-dialog textarea{margin-top:4px}
.model-upload-preview{display:block;margin-top:8px;max-height:190px;border-radius:9px;border:1px solid var(--border)}
.model-dialog .actions{margin-top:16px;display:flex;gap:8px;justify-content:flex-end}
/* ── 充值中心 ── */
.rc-head{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0 0 14px}
.rc-stat{background:#fff;border:1px solid var(--border);border-radius:10px;padding:12px 14px}
.rc-stat.warn{border-color:#f2d9a8;background:#fffdf7}
.rc-stat span{display:block;font-size:12px;color:var(--muted)}
.rc-stat b{font-size:20px;font-weight:600;line-height:1.35}
.rc-stat em{display:block;font-style:normal;font-size:11px;color:var(--muted);margin-top:2px}
.rc-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.rc-tab{font-size:13px;padding:6px 14px;min-height:0;border-radius:999px;background:#fff}
.rc-tab.active{border-color:var(--accent);background:var(--soft);color:var(--accent)}
.rc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin:12px 0}
.rc-grid-4{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.rc-pack{background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:6px}
.rc-pack h3{margin:0;font-size:15px}
.rc-pack-desc{margin:0;font-size:12px;color:var(--muted)}
.rc-price{display:flex;align-items:baseline;gap:5px;margin:4px 0}
.rc-price b{font-size:24px;font-weight:600}
.rc-price span{font-size:12px;color:var(--muted)}
.rc-list{margin:0;padding-left:17px;font-size:12px;color:#4a4d58;line-height:1.75;flex:1}
.rc-pack button{margin-top:8px}
.rc-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden;margin:10px 0}
.rc-table th,.rc-table td{padding:8px 11px;text-align:left;border-bottom:1px solid #f0f1f5;font-size:13px}
.rc-table th{background:#fafafc;font-size:12px;color:var(--muted);font-weight:600}
.rc-table tr:last-child td{border-bottom:none}
.rc-usage-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 10px}
.rc-export{margin-left:auto;font-size:13px;padding:6px 14px;border:1px solid var(--border);border-radius:999px;text-decoration:none;color:inherit;background:#fff}
.rc-export:hover{border-color:var(--accent);color:var(--accent)}
/* ── 后台：套餐 / 订单 / 消耗 ── */
.pack-row{border:1px solid var(--border);border-radius:10px;padding:12px;background:#fff;margin-bottom:10px;display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;align-items:end}
.pack-row label{margin:0}
.order-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--border);border-radius:10px;overflow:hidden}
.order-table th,.order-table td{padding:7px 10px;text-align:left;border-bottom:1px solid #f0f1f5;font-size:12.5px}
.order-table th{background:#fafafc;font-size:12px;color:var(--muted);font-weight:600}
.perm-feature{display:flex;align-items:center;gap:7px;font-size:13px;padding:5px 0}
.perm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:4px 14px}
/* ── 自由创作（对话式生图） ── */
.cf-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:16px;align-items:start}
.cf-side{border:1px solid var(--border);border-radius:12px;background:#fff;padding:12px;position:sticky;top:16px}
.cf-side-head{display:flex;gap:8px;margin-bottom:10px}
.cf-side-head button{width:100%;font-size:13px;padding:8px}
.cf-list{display:flex;flex-direction:column;gap:4px;max-height:62vh;overflow:auto}
.cf-item{display:flex;align-items:stretch;border-radius:9px;overflow:hidden}
.cf-item:hover{background:#fafafc}
.cf-item.active{background:var(--soft)}
.cf-item-btn{flex:1;display:flex;flex-direction:column;gap:2px;align-items:flex-start;text-align:left;
  border:none;background:transparent;padding:8px 10px;min-height:0;border-radius:0;cursor:pointer}
.cf-item-btn strong{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}
.cf-item-btn small{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}
.cf-item-del{border:none;background:transparent;color:var(--muted);font-size:12px;padding:0 9px;min-height:0;opacity:0}
.cf-item:hover .cf-item-del{opacity:1}
.cf-item-del:hover{color:#b3372b}
.cf-main{border:1px solid var(--border);border-radius:12px;background:#fff;display:flex;flex-direction:column;min-height:64vh}
.cf-main-head{display:flex;align-items:baseline;gap:10px;padding:13px 16px;border-bottom:1px solid var(--border)}
.cf-main-head strong{font-size:14px}
.cf-stream{flex:1;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:12px;max-height:58vh}
.cf-row{display:flex}
.cf-row.user{justify-content:flex-end}
.cf-row.assistant{justify-content:flex-start}
.cf-bubble{max-width:74%;background:var(--soft);color:var(--ink);border-radius:12px 12px 3px 12px;
  padding:9px 13px;font-size:13.5px;line-height:1.65;white-space:pre-wrap;word-break:break-word}
.cf-result{max-width:100%;border:1px solid var(--border);border-radius:12px;padding:12px;background:#fffdfa}
.cf-result-head{display:flex;align-items:center;gap:9px;margin-bottom:8px;flex-wrap:wrap}
.cf-status{font-size:12px;border-radius:999px;padding:2px 9px;background:#f2f3f7;color:#5b5e6b}
.cf-status.succeeded{background:#eaf7f0;color:#1f6b46}
.cf-status.failed,.cf-status.interrupted{background:#fdeceb;color:#a3281f}
.cf-status.running,.cf-status.queued{background:#fff6e5;color:#8a5a06}
.cf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.cf-cell{display:flex;flex-direction:column;gap:5px}
.cf-cell img{width:100%;border-radius:9px;display:block;background:#f4f5f8}
.cf-dl{font-size:12px;color:var(--accent);text-decoration:none}
.cf-error{margin:8px 0 0;font-size:12.5px;color:#a3281f}
.cf-empty{min-height:48vh}
.cf-wait{text-align:center}
.cf-composer{border-top:1px solid var(--border);padding:12px 16px 14px}
.cf-input-box{display:flex;flex-direction:column;gap:10px}
.cf-input-box textarea{resize:vertical;min-height:56px;font-size:13.5px}
.cf-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.cf-params{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cf-params select{width:auto;min-width:78px;font-size:12.5px;padding:6px 8px;min-height:0}
.cf-ref-btn{font-size:12.5px;padding:6px 12px;min-height:0;border-radius:8px}
.cf-send{padding:9px 26px;font-size:14px}
.cf-hint{margin:9px 0 0}
.cf-pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:9px;max-height:44vh;overflow:auto;margin-top:10px}
.cf-pick{position:relative;border:1px solid var(--border);border-radius:9px;padding:5px;cursor:pointer;display:flex;flex-direction:column;gap:4px}
.cf-pick.on{border-color:var(--accent);background:var(--soft)}
.cf-pick input{position:absolute;left:9px;top:9px;width:auto}
.cf-pick img{width:100%;border-radius:6px;display:block}
.cf-pick small{font-size:10.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:900px){.cf-layout{grid-template-columns:1fr}.cf-side{position:static}.cf-stream{max-height:none}}
/* ── 全部收藏 ── */
.fav-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:16px;align-items:start}
.fav-side,.fav-main{border:1px solid var(--border);border-radius:12px;background:#fff;padding:12px}
.fav-side-head{display:flex;gap:8px;margin-bottom:10px}
.fav-side-head button{width:100%;font-size:12.5px;padding:7px}
.fav-folders{display:flex;flex-direction:column;gap:3px}
.fav-folder{display:flex;align-items:stretch;border-radius:8px}
.fav-folder:hover{background:#fafafc}
.fav-folder.active{background:var(--soft)}
.fav-folder-btn{flex:1;display:flex;align-items:center;justify-content:space-between;gap:8px;
  border:none;background:transparent;padding:8px 10px;min-height:0;font-size:13px;cursor:pointer;text-align:left}
.fav-folder-btn em{font-style:normal;font-size:11px;color:var(--muted)}
.fav-mini{border:none;background:transparent;color:var(--muted);font-size:11px;padding:0 7px;min-height:0;opacity:0}
.fav-folder:hover .fav-mini{opacity:1}
.fav-mini:hover{color:var(--accent)}
.fav-bar{margin-bottom:12px;display:flex;flex-direction:column;gap:8px}
.fav-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px}
.fav-card{position:relative;border:1px solid var(--border);border-radius:11px;overflow:hidden;background:#fff;display:flex;flex-direction:column}
.fav-card img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;background:#f4f5f8}
.fav-kind{position:absolute;left:8px;top:8px;font-size:11px;background:rgba(255,255,255,.93);color:#425069;border-radius:999px;padding:2px 8px}
.fav-body{padding:8px 10px;display:flex;flex-direction:column;gap:2px}
.fav-body strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fav-body small{font-size:11px;color:var(--muted)}
.fav-acts{display:flex;gap:5px;padding:0 10px 10px;align-items:center}
.fav-acts button,.fav-link{flex:1;font-size:11.5px;padding:5px 6px;min-height:0;border-radius:7px;text-align:center;text-decoration:none}
.fav-link{border:1px solid var(--border);color:inherit}
@media(max-width:900px){.fav-layout{grid-template-columns:1fr}}
/* ── AI 生成标识（显式） ── */
.ai-badge{position:absolute;right:6px;bottom:6px;z-index:2;font-size:10.5px;letter-spacing:.04em;
  background:rgba(23,25,20,.72);color:#fff;border-radius:999px;padding:1px 8px;pointer-events:none}
.output-grid div,.history-thumb,.cf-cell{position:relative}
/* ── 素材星标 ── */
.asset-star{font-size:12px;padding:3px 9px;min-height:0;border-radius:7px;margin-top:5px;width:100%}
.asset-star.on{border-color:var(--accent);color:var(--accent);background:var(--soft)}
/* ── 智能修图 ── */
.rt-layout{display:grid;grid-template-columns:236px minmax(0,1fr);gap:16px;align-items:start}
.rt-side{border:1px solid var(--border);border-radius:12px;background:#fff;padding:12px;position:sticky;top:16px}
.rt-side-title{font-size:12px;letter-spacing:.08em;color:var(--muted);margin:0 0 9px}
.rt-side-note{margin:12px 0 0;line-height:1.7}
.rt-mode{display:flex;flex-direction:column;gap:2px;align-items:flex-start;text-align:left;width:100%;
  border:1px solid transparent;background:transparent;border-radius:9px;padding:9px 11px;min-height:0;cursor:pointer}
.rt-mode:hover{background:#fafafc}
.rt-mode.active{background:var(--soft);border-color:var(--accent)}
.rt-mode strong{font-size:13.5px;font-weight:500}
.rt-mode small{font-size:11px;color:var(--muted);line-height:1.5}
.rt-flag{font-style:normal;font-size:10.5px;color:var(--accent);background:rgba(0,0,0,.04);
  border-radius:999px;padding:1px 7px;margin-top:3px;display:inline-block}
.rt-main{display:flex;flex-direction:column;gap:14px}
.rt-head{display:flex;align-items:baseline;gap:10px}
.rt-head strong{font-size:15px}
.rt-form{border:1px solid var(--border);border-radius:12px;background:#fff;padding:16px;display:flex;flex-direction:column;gap:12px}
.rt-form h3{margin:0;font-size:14.5px;font-weight:600}
.rt-form>p{margin:0}
.rt-form label{font-size:12.5px;color:var(--muted);display:block;margin-bottom:5px}
.rt-form textarea{font-size:13.5px;resize:vertical}
.rt-pick-wrap{border-top:1px solid var(--border);padding-top:12px}
.rt-pick-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rt-pick-thumb{width:60px;height:76px;object-fit:cover;border-radius:8px;border:1px solid var(--border);background:#f4f5f8}
.rt-pick-name{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}
.rt-pick-row button{width:auto;font-size:12.5px;padding:6px 14px;min-height:0;border-radius:8px}
.rt-params{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rt-params select{width:auto;min-width:82px;font-size:12.5px;padding:6px 8px;min-height:0;margin-top:0}
.rt-go{width:auto;align-self:flex-start;padding:10px 30px;font-size:14px}
.rt-empty{min-height:34vh}
.rt-out:empty{display:none}
.rt-result{border:1px solid var(--border);border-radius:12px;background:#fffdfa;padding:14px}
.rt-result-head{display:flex;align-items:center;gap:9px;margin-bottom:10px;flex-wrap:wrap}
.rt-status{font-size:12px;border-radius:999px;padding:2px 9px;background:#f2f3f7;color:#5b5e6b}
.rt-status.succeeded{background:#eaf7f0;color:#1f6b46}
.rt-status.failed,.rt-status.interrupted{background:#fdeceb;color:#a3281f}
.rt-status.running,.rt-status.queued{background:#fff6e5;color:#8a5a06}
.rt-compare{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px}
.rt-cell{position:relative;display:flex;flex-direction:column;gap:5px}
.rt-cell img{width:100%;border-radius:9px;display:block;background:#f4f5f8;aspect-ratio:3/4;object-fit:cover}
.rt-cap{font-size:11.5px;color:var(--muted);letter-spacing:.04em}
.rt-dialog{max-width:min(620px,92vw)}
@media(max-width:900px){.rt-layout{grid-template-columns:1fr}.rt-side{position:static}}
/* ── 拍摄策划 ── */
.pl-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:16px;align-items:start}
.pl-side{border:1px solid var(--border);border-radius:12px;background:#fff;padding:12px;position:sticky;top:16px}
.pl-side-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.pl-side-title{font-size:12px;letter-spacing:.08em;color:var(--muted)}
.pl-side-head button{width:auto;font-size:12.5px;padding:6px 12px;min-height:0;border-radius:8px}
.pl-side-note{margin:12px 0 0;line-height:1.7}
.pl-list{display:flex;flex-direction:column;gap:3px;max-height:56vh;overflow:auto}
.pl-item{display:flex;align-items:stretch;border-radius:9px}
.pl-item:hover{background:#fafafc}
.pl-item.active{background:var(--soft)}
.pl-item-btn{flex:1;display:flex;flex-direction:column;gap:2px;align-items:flex-start;text-align:left;
  border:none;background:transparent;padding:8px 10px;min-height:0;cursor:pointer}
.pl-item-btn strong{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:160px}
.pl-item-btn small{font-size:11px;color:var(--muted)}
.pl-item-del{border:none;background:transparent;color:var(--muted);font-size:12px;padding:0 9px;min-height:0;opacity:0}
.pl-item:hover .pl-item-del{opacity:1}
.pl-item-del:hover{color:#b3372b}
.pl-main{display:flex;flex-direction:column;gap:14px}
.pl-form{border:1px solid var(--border);border-radius:12px;background:#fff;padding:16px;display:flex;flex-direction:column;gap:12px}
.pl-form h3{margin:0;font-size:15px;font-weight:600}
.pl-form>p{margin:0}
.pl-form label{font-size:12.5px;color:var(--muted);display:block;margin-bottom:5px}
.pl-form textarea,.pl-form input{font-size:13.5px}
.pl-pick-wrap{border-top:1px solid var(--border);padding-top:12px}
.pl-pick-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pl-pick-cell{position:relative}
.pl-pick-cell img{width:64px;height:82px;object-fit:cover;border-radius:8px;border:1px solid var(--border);display:block;background:#f4f5f8}
.pl-pick-rm{position:absolute;right:-6px;top:-6px;width:20px;height:20px;min-height:0;padding:0;border-radius:999px;
  background:rgba(23,25,20,.76);color:#fff;border:none;font-size:12px;line-height:1}
.pl-pick-row>button{width:auto;font-size:12.5px;padding:6px 14px;min-height:0;border-radius:8px}
.pl-styles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:9px}
.pl-style{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;
  border:1px solid var(--border);background:#fff;border-radius:10px;padding:10px 12px;min-height:0;cursor:pointer}
.pl-style:hover{background:#fafafc}
.pl-style.active{border-color:var(--accent);background:var(--soft)}
.pl-style strong{font-size:13.5px;font-weight:600}
.pl-style small{font-size:11.5px;color:var(--muted);line-height:1.55}
.pl-go{width:auto;align-self:flex-start;padding:10px 26px;font-size:14px}
.pl-view:empty{display:none}
.pl-empty{min-height:38vh}
.pl-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.pl-head h3{margin:0;font-size:18px;font-weight:600}
.pl-tag{font-size:11.5px;border-radius:999px;padding:2px 10px;background:var(--soft);color:var(--accent)}
.pl-acts{display:flex;gap:8px;margin-bottom:14px}
.pl-acts a,.pl-acts button{width:auto;font-size:12.5px;padding:6px 14px;min-height:0;border-radius:8px;text-decoration:none;text-align:center}
.pl-view{border:1px solid var(--border);border-radius:12px;background:#fff;padding:18px}
.pl-body h4{margin:18px 0 8px;font-size:13.5px;font-weight:600;letter-spacing:.04em;color:var(--ink)}
.pl-body h4:first-child{margin-top:0}
.pl-body p{margin:0;font-size:13.5px;line-height:1.8}
.pl-scenes{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.pl-scene{border:1px solid var(--border);border-radius:10px;padding:11px 13px;background:#fffdfa}
.pl-scene strong{font-size:13px;display:block;margin-bottom:5px}
.pl-scene p{margin:2px 0;font-size:12.5px;line-height:1.7;color:#4a4d58}
.pl-table{width:100%;border-collapse:collapse;font-size:12.5px}
.pl-table th,.pl-table td{border:1px solid var(--border);padding:7px 10px;text-align:left;vertical-align:top;line-height:1.7}
.pl-table th{background:#faf9f7;font-weight:600;white-space:nowrap}
.pl-table td:first-child{width:32px;text-align:center;color:var(--muted)}
.pl-ul{margin:0;padding-left:20px;font-size:13.5px;line-height:1.85}
.pl-ul li{margin-bottom:3px}
.pl-risk li{color:#8a5a06}
.pl-check li{list-style:none;position:relative;padding-left:4px}
.pl-check{list-style:none;padding-left:0}
.pl-check li::before{content:'☐ ';color:var(--muted)}
.pl-warn{color:#8a5a06}
.pl-foot{margin-top:16px;padding-top:12px;border-top:1px solid var(--border)}
.pl-dialog{max-width:min(620px,92vw)}
@media(max-width:900px){.pl-layout{grid-template-columns:1fr}.pl-side{position:static}}
/* ── 详情页拼图 ── */
.de-layout{display:grid;grid-template-columns:210px minmax(0,1fr) 262px;gap:14px;align-items:start}
.de-side,.de-insp{border:1px solid var(--border);border-radius:12px;background:#fff;padding:12px}
.de-side{position:sticky;top:16px}
.de-side-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 9px}
.de-side-head+.de-side-head{margin-top:16px}
.de-side-title{font-size:12px;letter-spacing:.08em;color:var(--muted)}
.de-side-head button{width:auto;font-size:12.5px;padding:6px 10px;min-height:0;border-radius:8px}
.de-list{display:flex;flex-direction:column;gap:3px;max-height:34vh;overflow:auto}
.de-item{display:flex;align-items:stretch;border-radius:9px}
.de-item:hover{background:#fafafc}
.de-item.active{background:var(--soft)}
.de-item-btn{flex:1;display:flex;flex-direction:column;gap:2px;align-items:flex-start;text-align:left;
  border:none;background:transparent;padding:7px 9px;min-height:0;cursor:pointer}
.de-item-btn strong{font-size:12.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:130px}
.de-item-btn small{font-size:10.5px;color:var(--muted)}
.de-item-del{border:none;background:transparent;color:var(--muted);font-size:12px;padding:0 8px;min-height:0;opacity:0}
.de-item:hover .de-item-del{opacity:1}
.de-item-del:hover{color:#b3372b}
.de-tools{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.de-tools button{width:100%;font-size:12px;padding:7px 4px;min-height:0;border-radius:8px}
.de-side-note{margin:12px 0 0;line-height:1.7}
.de-main{display:flex;flex-direction:column;gap:10px;min-width:0}
.de-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border:1px solid var(--border);border-radius:12px;background:#fff;padding:9px 12px}
.de-bar-name{font-size:13.5px;font-weight:600}
.de-spacer{flex:1}
.de-zoom{min-width:42px;text-align:center;font-variant-numeric:tabular-nums}
.de-mini{width:auto;font-size:11.5px;padding:4px 9px;min-height:0;border-radius:7px}
.de-bar>button{width:auto;font-size:12.5px;padding:7px 14px;min-height:0;border-radius:8px}
.de-save{min-width:80px}
.de-stage{border:1px solid var(--border);border-radius:12px;background:repeating-conic-gradient(#f4f4f6 0 25%,#fafafb 0 50%) 0 0/18px 18px;
  display:flex;align-items:center;justify-content:center;padding:16px;min-height:56vh;overflow:auto}
.de-canvas{display:block;box-shadow:0 2px 18px rgba(28,26,23,.14);touch-action:none;background:#fff}
.de-h4{margin:14px 0 7px;font-size:13px;font-weight:600}
.de-group{border-top:1px solid var(--border);margin-top:14px;padding-top:12px;display:flex;flex-direction:column;gap:9px}
.de-group:first-child{border-top:none;margin-top:0;padding-top:0}
.de-group>h4{margin:0;font-size:13px;font-weight:600}
.de-group label{font-size:12px;color:var(--muted);margin-bottom:-4px}
.de-group input,.de-group select,.de-group textarea{font-size:12.5px;padding:6px 8px;min-height:0}
.de-group textarea{font-size:13px;resize:vertical}
.de-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.de-row input[type=number]{width:72px;min-width:0}
.de-row input[type=color]{width:38px;height:26px;padding:1px;min-height:0;flex:none}
.de-row select{width:auto;min-width:0;flex:1;margin-top:0}
.de-swatches{display:flex;gap:5px}
.de-swatch{width:20px;height:20px;min-height:0;padding:0;border-radius:5px;border:1px solid var(--border);cursor:pointer}
.de-layers{display:flex;flex-direction:column;gap:3px;max-height:30vh;overflow:auto}
.de-layer{display:flex;align-items:stretch;border-radius:8px}
.de-layer:hover{background:#fafafc}
.de-layer.active{background:var(--soft)}
.de-layer-btn{flex:1;display:flex;align-items:center;gap:6px;text-align:left;border:none;background:transparent;
  padding:6px 8px;min-height:0;font-size:12px;cursor:pointer;min-width:0}
.de-layer-btn span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.de-layer-tag{font-size:10.5px;color:var(--accent);background:rgba(0,0,0,.04);border-radius:5px;padding:1px 6px;flex:none}
.de-layer .de-mini{padding:0 6px;opacity:.55}
.de-layer:hover .de-mini,.de-layer.active .de-mini{opacity:1}
.de-dialog{max-width:min(560px,92vw)}
@media(max-width:1100px){.de-layout{grid-template-columns:1fr}.de-side{position:static}}
/* ── 后台：供应商预设菜单 ── */
.preset-box{border:1px dashed var(--border);border-radius:11px;padding:12px;background:#fffdfa;display:flex;flex-direction:column;gap:8px}
.preset-box .two-fields{align-items:end}
.preset-box button{width:auto;align-self:end}
.preset-box p{margin:0}
/* 价格一览里补一条「本档实际用谁」 */
.tier-chip{flex-wrap:wrap}
.tier-chip small{font-size:11px;color:var(--muted);font-style:normal}
.tier-chip-warn{color:#a3281f}
/* 危险操作按钮（删除素材/档案等，不可撤销的动作统一用它，和普通按钮区分开） */
button.danger{border-color:#e0c4bf;color:#a3281f;background:#fffaf9}
button.danger:hover{background:#fdf1ef;border-color:#c98b84}

/* 已被图片缓存清理的产出：给一块说明，而不是一张裂图 */
.output-expired{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  min-height:120px;padding:14px 10px;border:1px dashed var(--border);border-radius:8px;background:#faf9f7;text-align:center}
.output-expired>span{font-size:20px;color:#c2c3cd;line-height:1}
.output-expired small{font-size:11px;color:var(--muted);line-height:1.6}
/* ── 侧边栏底部账号区 ── */
.side-user-name{display:block;font-size:13px;font-weight:600;color:var(--ink);margin-bottom:2px}
.sidebar-bottom .text-button{padding:0;min-height:24px;justify-content:flex-start}
.sidebar-bottom .text-button:hover{color:#a3281f;background:none}
.ft-main{flex:1;min-width:240px}
.ft-main strong{display:block;font-size:13px;margin-bottom:4px}
.ft-main p{margin:0;font-size:12.5px;line-height:1.75;color:#5b5e6b}
.ft-acts{display:flex;align-items:center;gap:6px;flex:none}
.ft-acts .secondary{font-size:12.5px;padding:6px 14px;min-height:0;border-radius:8px}
/* ── 个人资料 ── */
.pf-layout{max-width:820px;display:flex;flex-direction:column;gap:16px}
.pf-head h3{margin:0 0 6px;font-size:18px}
.pf-head p{margin:0}
.pf-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.pf-stat{border:1px solid var(--border);border-radius:10px;padding:12px 14px;background:#fff}
.pf-stat-label{display:block;font-size:11.5px;color:var(--muted);margin-bottom:4px}
.pf-stat strong{font-size:17px;font-weight:600}
.pf-stat small{display:block;font-size:11px;color:var(--muted);margin-top:2px}
.pf-form,.pf-foot{border:1px solid var(--border);border-radius:12px;background:#fff;padding:16px}
.pf-form h4{margin:0 0 12px;font-size:14px}
.pf-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.pf-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.pf-field label{font-size:12px;color:var(--muted);margin:0}
.pf-field input,.pf-field select{font-size:13.5px;margin-top:0}
.pf-field .helper{margin:0}
.pf-form .actions{margin-top:14px}
.pf-foot{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.pf-foot p{margin:0}
.pf-dialog{width:min(680px,94vw);max-height:88vh;border:1px solid var(--border);border-radius:16px;padding:24px}
.pf-dialog::backdrop{background:rgb(28 24 43 / 42%)}
.pf-dialog h3{margin:0 0 8px;font-size:18px}
.pf-dialog .pf-fields{margin:16px 0 4px}
/* ── 新手引导 ── */
.ob-layout{max-width:900px;display:flex;flex-direction:column;gap:18px}
.ob-head h3{margin:10px 0 6px;font-size:22px}
.ob-head p{margin:0}
.ob-step{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:20px;align-items:start;
  border:1px solid var(--border);border-radius:14px;background:#fff;padding:20px}
.ob-no{display:inline-block;font-size:11px;letter-spacing:.12em;color:var(--accent);font-weight:700}
.ob-body h4{margin:6px 0 8px;font-size:16px}
.ob-lead{margin:0 0 10px;font-size:13px;line-height:1.8;color:#4a4d58}
.ob-points{margin:0;padding-left:18px;font-size:12.5px;line-height:1.9;color:#4a4d58}
.ob-points li{margin-bottom:4px}
.ob-shot{margin:0}
.ob-shot img{width:100%;display:block;border:1px solid var(--border);border-radius:10px;background:#faf9f7}
.ob-shot figcaption{margin-top:8px;font-size:11.5px;color:var(--muted);line-height:1.6}
.ob-actions{display:flex;justify-content:flex-start}
@media(max-width:900px){.ob-step{grid-template-columns:1fr}}
/* ── 回收站 ── */
.rc-layout{display:flex;flex-direction:column;gap:14px}
.rc-head h3{margin:0 0 6px;font-size:18px}
.rc-head p{margin:0}
.rc-bar{display:flex;align-items:center;gap:10px}
.rc-spacer{flex:1}
.rc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.rc-card{border:1px solid var(--border);border-radius:12px;background:#fff;overflow:hidden;display:flex;flex-direction:column}
.rc-thumb{aspect-ratio:3/4;background:#faf9f7;display:flex;align-items:center;justify-content:center;overflow:hidden}
.rc-thumb img{width:100%;height:100%;object-fit:contain;display:block}
.rc-body{padding:10px 12px;display:flex;flex-direction:column;gap:4px;flex:1}
.rc-body strong{font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.rc-body small{font-size:11.5px;color:var(--muted);line-height:1.6}
.rc-ref{color:#8a5a06}
.rc-body .actions{margin-top:auto;padding-top:8px;gap:6px}
.rc-body .actions button{font-size:12px;padding:6px 12px;min-height:0;border-radius:8px;flex:1}
/* 素材卡上的删除按钮 */
.asset-del{font-size:11.5px;padding:4px 10px;min-height:0;border-radius:7px;border-color:#e0c4bf;color:#a3281f;background:#fffaf9}
.asset-del:hover{background:#fdf1ef}
/* 历史任务缩略图上的「已标记」角标 */
.history-like{position:absolute;left:6px;top:6px;font-size:12px;color:#b3372b;text-shadow:0 1px 2px #fff}
.history-thumb{position:relative}
/* ── 历史任务缩略图上的「标记好图」开关 ── */
.history-cell{position:relative;flex:0 0 88px;width:88px}
.history-cell .history-thumb{flex:none;width:100%;height:110px}
.history-like-toggle{position:absolute;left:4px;top:4px;z-index:2;width:24px;height:24px;min-height:0;
  padding:0;border-radius:50%;font-size:12px;line-height:1;display:flex;align-items:center;justify-content:center;
  background:rgb(255 255 255 / 88%);border:1px solid var(--border);color:#8b8f9a;cursor:pointer}
.history-like-toggle:hover{background:#fff;color:#b3372b}
.history-like-toggle.on{color:#b3372b;border-color:#e0c4bf;background:#fffaf9}
/* ── 结果弹窗里的「标记为好图」 ── */
.result-like-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;justify-content:center}
.result-like-row .helper{margin:0}
.like-toggle{font-size:13px;padding:7px 16px;border:1px solid var(--border);border-radius:9px;background:#fff}
.like-toggle:hover{border-color:#e0c4bf;color:#b3372b}
.like-toggle.on{color:#b3372b;border-color:#e0c4bf;background:#fffaf9;font-weight:600}
.result-picker button.on{border-color:var(--accent);color:var(--accent);font-weight:600}
/* ── 全部收藏页里的「佳作」区块（点赞结果）── */
.fav-likes{border:1px solid var(--border);border-left:3px solid #d8a9a1;border-radius:12px;background:#fffdfc;padding:14px 16px;margin-bottom:16px}
.fav-likes-head{margin-bottom:10px}
.fav-likes-head strong{display:block;font-size:14px;margin-bottom:4px}
.fav-likes-head p{margin:0;font-size:12.5px;line-height:1.7;color:#5b5e6b}
.fav-likes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.fav-liked img{aspect-ratio:3/4;object-fit:contain;background:#faf9f7}
.fav-liked .fav-kind{color:#b3372b;background:#fdf1ef}

/* ── 插槽空位占位：没选图时也占住同样高度，几个插槽的按钮才能在同一水平线上 ──
   注意两个坑：
   1) 占位块也带 thumb 类，会被后加载的 v3.css 的 `.slot .thumb{height:auto}` 压掉
      （同特异度、它在后面），所以这里必须写到 `.thumb.thumb-empty` 才压得住。
   2) 有图的插槽比空插槽高一个「视角」下拉（88 + 下拉），实测 114 vs 88 →
      选完图按钮就往下跳 26px。所以行高和占位块都按 114 打底，两种状态一样高。 */
.slot .thumbs{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start;min-height:114px}
.slot .thumb.thumb-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  width:74px;height:114px;padding:0;border:1px dashed var(--border);border-radius:6px;
  background:transparent;color:var(--muted);cursor:pointer;transition:border-color .2s,color .2s,background .2s}
.slot .thumb.thumb-empty span{font-size:17px;line-height:1}
.slot .thumb.thumb-empty small{font-size:9px;line-height:1.25;text-align:center}
.slot .thumb.thumb-empty:hover{border-color:var(--accent);color:var(--accent);background:var(--soft)}

/* ── 素材选择弹窗：底部「确认使用」条 ── */
.material-dialog{padding-bottom:0;overflow-y:auto}
.material-dialog .picker-foot{position:sticky;bottom:0;z-index:3;display:flex;align-items:center;gap:12px;
  margin:18px -26px 0;padding:14px 26px;background:var(--surface);
  border-top:1px solid var(--border);border-radius:0 0 16px 16px}
.material-dialog .picker-picked{margin:0;flex:1;min-width:0;font-size:12px;color:var(--muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.material-dialog .picker-picked.on{color:var(--accent);font-weight:600}
.material-dialog .picker-confirm{min-height:48px;padding:0 36px;font-size:15px;border-radius:10px;flex:none}
.material-dialog .picker-confirm:disabled{opacity:.45;cursor:not-allowed}
.material-choice{position:relative}
.material-choice.is-picked{border-color:var(--accent);background:var(--soft);box-shadow:inset 0 0 0 2px var(--accent)}
.material-choice .picker-tick{position:absolute;right:8px;top:8px;font-size:11px;font-weight:600;
  color:#fff;background:var(--accent);border-radius:20px;padding:2px 8px}
@media(max-width:640px){.material-dialog .picker-foot{margin-left:-18px;margin-right:-18px;padding:12px 18px}}

/* ── 提示词模板：把后台的提示词库接到用户端「补充描述」旁边 ── */
.prompt-template-bar{display:flex;align-items:center;gap:8px;margin:14px 0 6px;flex-wrap:wrap}
.prompt-template-bar .prompt-template-label{font-size:12px;font-weight:550;margin:0}
.prompt-template-bar .prompt-template-name{flex:1;min-width:0;font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prompt-template-bar .prompt-template-open{width:auto;min-height:32px;padding:0 14px;font-size:12px;flex:none}

.prompt-library-dialog{width:min(940px,94vw);max-height:88dvh;overflow:auto;background:var(--surface);color:var(--ink);
  border:1px solid var(--border);border-radius:16px;padding:24px}
.prompt-library-dialog::backdrop{background:rgb(28 24 43 / 40%)}
.prompt-library-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:20px;margin-top:16px;align-items:start}
.prompt-library-group{font-size:12px;color:var(--muted);font-weight:600;margin:14px 0 6px}
.prompt-library-list>p{margin:0 0 8px;font-size:11px}
.prompt-template-row{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  min-height:40px;padding:8px 12px;margin-bottom:6px;font-size:13px;text-align:left;background:var(--bg)}
.prompt-template-row small{font-size:10px;color:var(--muted);flex:none}
.prompt-template-row.is-recommended{border-color:var(--accent)}
.prompt-template-row.is-recommended small{color:var(--accent);font-weight:600}
.prompt-template-row.is-picked{background:var(--soft);border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.prompt-library-preview{margin:0;padding:14px;border:1px solid var(--border);border-radius:10px;background:var(--bg);
  font-size:12.5px;line-height:1.9;color:var(--ink);white-space:pre-wrap;word-break:break-word;min-height:120px}
.prompt-library-foot{display:flex;align-items:center;gap:12px;margin-top:18px;padding-top:14px;border-top:1px solid var(--border)}
.prompt-library-foot .prompt-library-hint{flex:1;min-width:0;font-size:11px;color:var(--muted)}
.prompt-library-foot button{width:auto;flex:none;min-height:44px;padding:0 22px;font-size:14px}
@media(max-width:760px){.prompt-library-body{grid-template-columns:1fr}}

/* ── 详情页编辑器：模板区（系统模板 / 我的模板）── */
.de-tpl-list{max-height:30vh}
.de-tpl-group{margin:8px 0 4px;font-size:10.5px;letter-spacing:.08em;color:var(--muted)}
.de-tpl-list .de-tpl-group:first-child{margin-top:0}
.de-tpl-list .de-item-btn small{color:var(--muted);font-size:10.5px;line-height:1.5;white-space:normal}

/* ── 详情页外壳：面包屑 + 一级 tab（快拼/智能）+ 二级 tab（模版/我的创作）──
   结构按对标实测的外壳摆：对标 class="detail-product-tabs"，active 类同名。 */
.de-page{display:flex;flex-direction:column;gap:12px}
.de-head{display:flex;flex-direction:column;gap:9px}
.de-crumb{margin:0;font-size:11.5px;letter-spacing:.02em;color:var(--muted)}
.de-tabs,.de-subtabs{display:flex;align-items:center;gap:2px;border-bottom:1px solid var(--border)}
.de-subtabs{border-bottom:0;gap:14px;margin-top:-3px}
.de-tab{width:auto;min-height:38px;padding:0 16px;font-size:13.5px;background:transparent;border:0;
  border-bottom:2px solid transparent;border-radius:0;color:var(--muted)}
.de-tab:hover{background:transparent;color:var(--ink)}
.de-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}
.de-tab:disabled,.de-tab[disabled]{opacity:1;cursor:default;color:var(--ink);font-weight:600}
.de-subtab{width:auto;min-height:30px;padding:0 2px;font-size:12.5px;background:transparent;border:0;
  border-bottom:2px solid transparent;border-radius:0;color:var(--muted)}
.de-subtab:hover{background:transparent;color:var(--ink)}
.de-subtab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}

/* ── 商品详情页表单（重做版，detail-form.js）── */
.df{display:flex;flex-direction:column;gap:20px}
.df-sec{border-top:1px solid var(--border);padding-top:14px}
.df-sec:first-child{border-top:0;padding-top:0}
.df-sec>h3,.df-sec-head>h3{margin:0;font-size:15px;font-weight:500}
.df-sec-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.df-sec-head>h3{flex:1;min-width:0}
.df-sec>p{margin:6px 0 10px}
.df-badge{font-size:11px;padding:3px 9px;border-radius:20px;border:1px solid var(--border);color:var(--muted);flex:none}
.df-badge.is-ok{color:#1f6b46;border-color:#9fd3ba;background:#eefaf3}
.df-badge.is-part{color:#8a5a06;border-color:#e3c58a;background:#fdf7e8}
.df-badge.is-off{color:var(--muted)}
.df-warn{margin:8px 0 0;padding-left:18px;font-size:11.5px;line-height:1.8;color:#b3372b}
.df-spec{margin-top:12px;display:flex;flex-direction:column;gap:12px}
.df-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.df-row .df-label{width:82px;flex:none;font-size:12px;color:var(--muted);margin:0}
.df-choices{display:flex;flex-wrap:wrap;gap:6px}
.df-choice{width:auto;min-height:32px;padding:0 13px;font-size:12.5px;background:var(--bg);border:1px solid var(--border)}
.df-choice.is-on{background:var(--soft);border-color:var(--accent);color:var(--accent);font-weight:500}
.df-sub-head{display:flex;align-items:center;gap:10px;margin-top:4px}
.df-sub-head h4{margin:0;font-size:13px;font-weight:500}
.df-sum{font-size:11.5px;color:var(--muted)}
.df-sum.is-ok{color:#1f6b46}
.df-sum.is-bad{color:#b3372b;font-weight:500}
.df-chart{display:flex;flex-direction:column;gap:5px;overflow-x:auto}
.df-chart-row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(74px,1fr);gap:5px;align-items:center}
.df-chart-row.df-chart-head span{font-size:11px;color:var(--muted);text-align:center;padding-bottom:2px}
.df-chart-row input{min-height:34px;padding:0 6px;font-size:12px;text-align:center}
.df-fab{display:flex;flex-direction:column;gap:5px}
.df-fab-row{display:grid;grid-template-columns:minmax(90px,1fr) 84px auto auto;gap:6px;align-items:center}
.df-fab-row input{min-height:34px;padding:0 8px;font-size:12.5px}
.df-del{width:auto;min-height:34px;padding:0 10px;font-size:13px;background:transparent;border-color:var(--border);color:var(--muted)}
.df-del:hover{color:#b3372b;border-color:#e5b3ab;background:#fdf1ef}
.df-save{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:6px}
.df-save button{width:auto}
.df-pick{display:flex;flex-direction:column;gap:14px}
.df-stage-head{display:flex;align-items:baseline;gap:9px;margin-bottom:6px}
.df-stage-head strong{font-size:12.5px;font-weight:500}
.df-stage-head small{font-size:11px;color:var(--muted)}
.df-mod-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:8px}
.df-mod{display:flex;gap:9px;align-items:flex-start;width:100%;min-height:56px;padding:9px 11px;text-align:left;
  background:var(--bg);border:1px solid var(--border);border-radius:9px}
.df-mod.is-on{background:var(--soft);border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.df-mod.is-locked{opacity:.5;cursor:not-allowed}
.df-mod-box{width:16px;height:16px;flex:none;margin-top:2px;border:1px solid var(--border);border-radius:4px;
  font-size:11px;line-height:14px;text-align:center;color:#fff;background:#fff}
.df-mod.is-on .df-mod-box{background:var(--accent);border-color:var(--accent)}
.df-mod-txt{min-width:0}
.df-mod-txt strong{display:block;font-size:12.5px;font-weight:500;margin-bottom:3px}
.df-mod-txt small{display:block;font-size:11px;line-height:1.55;color:var(--muted)}
.df-plan{display:flex;flex-direction:column;gap:3px}
.df-plan-stage{font-size:11.5px;color:var(--muted);margin:8px 0 2px;letter-spacing:.04em}
.df-plan-stage:first-child{margin-top:0}
.df-plan-row{display:flex;align-items:baseline;gap:9px;font-size:12.5px;padding:4px 0;border-bottom:1px dashed var(--border)}
.df-plan-no{flex:none;width:18px;height:18px;border-radius:50%;background:var(--soft);color:var(--accent);
  font-size:10.5px;line-height:18px;text-align:center}
.df-plan-row small{color:var(--muted);font-size:11px;margin-left:auto;text-align:right}
@media(max-width:640px){.df-mod-grid{grid-template-columns:1fr}.df-fab-row{grid-template-columns:1fr 70px auto auto}}
/* ── 详情页拼图：模版收藏 + 归属/收藏筛选（对标模版栏有这两组筛选）── */
.de-tpl-filters{display:flex;flex-direction:column;gap:4px;margin:0 0 8px}
.de-tpl-filter-row{display:flex;flex-wrap:wrap;gap:4px}
.de-tpl-filter{width:auto;min-height:26px;padding:0 9px;font-size:11px;border-radius:14px;
  background:transparent;border:1px solid var(--border);color:var(--muted)}
.de-tpl-filter:hover{background:var(--bg);color:var(--ink)}
.de-tpl-filter.is-on{background:var(--soft);border-color:var(--accent);color:var(--accent);font-weight:500}
.de-item-fav{width:auto;min-height:0;padding:0 7px;font-size:14px;line-height:1;
  background:transparent;border:0;color:var(--muted);flex:none}
.de-item-fav:hover{color:#c9922b;background:transparent}
.de-item-fav.is-on{color:#e0a32a}
/* ── 结果弹窗底部的导出动作组 ── */
.result-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0 4px}
.result-foot a,.result-foot button{width:auto}
.result-foot .helper{margin:0;font-size:11px;flex:1;min-width:0}

/* ── 站点页脚（备案公示）── */
.site-footer{padding:18px 24px 26px;text-align:center;font-size:11px;color:var(--muted,#999)}
.site-footer a{color:inherit;text-decoration:none}
.site-footer a:hover{color:var(--accent,#7a5af8)}
.site-footer .sep{margin:0 8px;opacity:.5}

/* ── 提示词面板（对标竞品的可见格式）────────────────────────────────
   折叠在「补充描述」上方，展示【服装】【场景】【模特】三段 + 逆向清单。
   交互与「套用模板」一致：主动点「应用到补充描述」才写回输入框。 */
.prompt-view{margin:12px 0 6px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.prompt-view>summary{display:flex;align-items:center;gap:8px;min-height:var(--ctl-md);padding:0 12px;
  cursor:pointer;font-size:12px;font-weight:600;color:var(--ink);list-style:none}
.prompt-view>summary::-webkit-details-marker{display:none}
.prompt-view>summary:before{content:'▸';color:var(--muted);font-size:11px}
.prompt-view[open]>summary:before{content:'▾'}
/* 与「套用模板」一致：内容的重新整理必须显式点，不做静默刷新（会冲掉用户正在写的字）。
   它长在 <summary> 里，所以要自己拦掉点击冒泡，否则会把面板一起折叠。 */
.prompt-view-refresh{margin-left:auto;min-height:var(--ctl-xs);padding:0 9px;border:1px solid var(--border);
  border-radius:7px;background:var(--bg);color:var(--muted);font-size:11px;font-weight:400;cursor:pointer}
.prompt-view-refresh:hover{color:var(--accent);border-color:var(--accent)}
.prompt-view-body{display:grid;gap:9px;padding:0 12px 12px;border-top:1px solid var(--border);padding-top:11px}
.prompt-view-row{display:grid;grid-template-columns:52px minmax(0,1fr);align-items:start;gap:9px}
.prompt-view-label{padding-top:8px;font-size:12px;font-weight:600;color:var(--accent)}
.prompt-view-input{width:100%;min-height:52px;padding:7px 10px;border:1px solid var(--border);border-radius:8px;
  background:var(--bg);color:var(--ink);font-size:12px;line-height:1.5;resize:vertical}
.prompt-view-input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
.prompt-view-negative{border:1px dashed var(--border);border-radius:8px;background:var(--bg)}
.prompt-view-negative>summary{min-height:var(--ctl-sm);padding:0 10px;cursor:pointer;font-size:11.5px;color:var(--muted);list-style:none}
.prompt-view-negative>summary::-webkit-details-marker{display:none}
.prompt-view-negative>pre{margin:0;padding:0 10px 10px;font-size:11px;line-height:1.6;color:var(--muted);
  white-space:pre-wrap;word-break:break-word;font-family:inherit}
.prompt-view-apply{justify-self:end;min-height:var(--ctl-md);padding:0 16px;border-radius:9px;
  border:1px solid var(--accent);background:var(--accent);color:#fff;font-size:12.5px;font-weight:600;cursor:pointer}
.prompt-view-apply:disabled{opacity:.5;cursor:not-allowed}
.prompt-view-apply:hover:not(:disabled){filter:brightness(1.06)}

.account-bar{display:flex;gap:16px;align-items:center;justify-content:flex-end;padding:8px 24px;font-size:12px;background:#f8f6f2;border-bottom:1px solid #ddd}.account-bar button{padding:4px 10px}
