/* 工作台与展览街：沿用上帝视角的配色（石材米白、招牌墨绿、黄铜），页面可以滚动 */
body.bench{height:auto;min-height:100%;padding-block:16px 40px;gap:16px}
a{color:var(--green)}
.muted{color:var(--muted);margin:0;font-size:13px;line-height:1.6}
.nav{display:flex;gap:14px;align-items:center;flex-wrap:wrap;font-size:13px}
.who{color:var(--muted)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--fg);padding:6px 12px;text-decoration:none;cursor:pointer}
.btn.primary{background:var(--green);border-color:var(--green);color:var(--on-accent)}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.spacer{flex:1}
.badge{padding:2px 10px;border-radius:999px;background:var(--brass-soft);font-size:12px;white-space:nowrap}
.badge.ok{background:color-mix(in srgb,var(--s-live) 22%,transparent)}
.badge.bad{background:color-mix(in srgb,var(--s-flag) 22%,transparent)}

.gate-card{max-width:460px;margin:40px auto;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:28px;display:grid;gap:12px;text-align:center}
.gate-card p{color:var(--muted);margin:0}

.grid{display:grid;grid-template-columns:minmax(300px,380px) 1fr;gap:16px;align-items:start}
.col{display:grid;gap:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;display:grid;gap:12px;min-width:0}
.card h2{font-size:17px}
.card h3{font-size:15px}
@media (max-width:820px){.grid{grid-template-columns:1fr}.detail{order:-1}}

.tok-state{font-size:13px}
.reveal{border:1px dashed var(--brass);border-radius:10px;padding:10px;display:grid;gap:6px;background:var(--brass-soft)}
.reveal-head{display:flex;justify-content:space-between;align-items:center;font-size:13px}
.reveal code{word-break:break-all;font-size:13px}
.prompt summary{cursor:pointer;font-size:13px;color:var(--green)}
.prompt pre{white-space:pre-wrap;word-break:break-word;font-size:12px;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:10px;margin:8px 0;max-height:260px;overflow:auto}

.form{display:grid;gap:10px}
.field{display:grid;gap:4px;font-size:13px}
.field span{color:var(--muted)}
input[type=text],input:not([type]),textarea,.field input{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:8px;padding:7px 10px;width:100%}
textarea{resize:vertical}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg label{display:flex}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg span{border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:13px;cursor:pointer;background:var(--bg)}
.seg input:checked+span{background:var(--green);border-color:var(--green);color:var(--on-accent)}
.seg input:focus-visible+span{outline:2px solid var(--brass);outline-offset:2px}

.works{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.works button{width:100%;text-align:left;display:grid;grid-template-columns:1fr auto;gap:2px 8px;padding:10px 12px;border-radius:10px;background:var(--bg)}
.works button[aria-current="true"]{border-color:var(--green);box-shadow:inset 3px 0 0 var(--green)}
.works b{font-family:var(--display);font-size:15px}
.works small{grid-column:1/-1;color:var(--muted);font-size:12px}

.empty .rules{margin:0;padding-left:18px;display:grid;gap:8px;line-height:1.6}
.work-head{display:flex;gap:12px;align-items:flex-start}
.work-head h2{font-size:22px}
.view{position:relative;height:min(56vh,460px);border-radius:12px;overflow:hidden;background:linear-gradient(var(--bg),var(--panel));border:1px solid var(--line)}
.view canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}
.view-note{position:absolute;left:12px;bottom:10px;margin:0;font-size:12px;color:var(--muted);pointer-events:none}
.file input{position:absolute;width:1px;height:1px;opacity:0}
.file:focus-within{outline:2px solid var(--brass);outline-offset:2px}

.report{display:grid;gap:6px;font-size:13px}
.report .stats{display:flex;flex-wrap:wrap;gap:6px 16px;color:var(--muted)}
.report .stats b{color:var(--fg);font-family:var(--mono);font-weight:500}
.issue{display:flex;gap:8px;align-items:baseline;padding:8px 10px;border-radius:8px;background:var(--bg);border-left:3px solid var(--s-flag)}
.issue.warn{border-left-color:var(--s-paid)}
.issue code{font-family:var(--mono);font-size:12px;color:var(--muted)}
.pass{padding:8px 10px;border-radius:8px;background:color-mix(in srgb,var(--s-live) 14%,transparent)}
.apply{border-top:1px solid var(--line);padding-top:12px;display:grid;gap:8px}
.apply select{min-width:0;flex:1}

.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);opacity:0;background:var(--fg);color:var(--bg);padding:10px 16px;border-radius:10px;font-size:13px;transition:.2s;pointer-events:none;max-width:calc(100% - 32px)}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* 展览街 */
.expo-stage{position:relative;height:min(62vh,560px);border-radius:14px;overflow:hidden;border:1px solid var(--line);background:#dcecf2}
.expo-stage canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}
.hubs{display:flex;gap:6px;flex-wrap:wrap}
.hubs a{padding:6px 12px;border-radius:999px;border:1px solid var(--line);text-decoration:none;color:var(--fg);background:var(--panel);font-size:13px}
.hubs a[aria-current="page"]{background:var(--green);border-color:var(--green);color:var(--on-accent)}
.slot-tip{position:absolute;left:12px;top:12px;right:12px;max-width:340px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:13px;box-shadow:0 4px 16px rgba(0,0,0,.12)}
.slot-tip b{font-family:var(--display);font-size:16px}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.entry{background:var(--panel);border:1px solid var(--line);border-radius:14px;overflow:hidden;display:grid}
.entry .thumb{height:200px;background:linear-gradient(var(--bg),var(--panel));position:relative}
.entry .thumb .thumb-actions{position:absolute;left:10px;bottom:10px;z-index:1}
.entry .body{padding:12px 14px;display:grid;gap:6px}
.entry h3{font-size:16px}
.entry .meta{font-size:12px;color:var(--muted)}
.votebar{height:6px;border-radius:999px;background:var(--bg);overflow:hidden}
.votebar i{display:block;height:100%;background:var(--green)}
.tabs{display:flex;gap:6px}
.tabs button[aria-pressed="true"]{background:var(--green);color:var(--on-accent);border-color:var(--green)}

/* 清晰度切换、封面图 */
.qbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.qbar .seg span{padding:4px 8px;font-size:12px}
.poster-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:var(--bg)}
.files{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.slotf{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--bg);display:grid;gap:4px;font-size:12px}
.slotf b{font-size:13px}
.slotf .badge{justify-self:start}

/* 实验场 */
.lab-grid{display:grid;grid-template-columns:1fr minmax(300px,360px);gap:16px;align-items:start}
@media (max-width:900px){.lab-grid{grid-template-columns:1fr}}
.lab-stage{height:min(72vh,680px);background:#dcecf2}
.lab-hud{position:absolute;left:12px;top:10px;font:12px/1.5 var(--mono);color:#1f2a24;background:rgba(251,248,241,.85);border-radius:8px;padding:6px 10px;pointer-events:none}
.lab-hud:empty{display:none}
.lab-loading{position:absolute;inset:0;display:grid;place-items:center;margin:0;color:var(--muted);font-size:14px;text-align:center;padding:16px}
.speed select{padding:4px 6px}
.tests{display:grid;gap:8px}
.tests button{text-align:left}
.ctrls{display:grid;gap:8px;max-height:46vh;overflow:auto}
.ctrl{display:grid;grid-template-columns:minmax(70px,1fr) 2fr 52px;gap:8px;align-items:center;font-size:12px}
.ctrl span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ctrl input{width:100%;accent-color:var(--green)}
.ctrl output{font-family:var(--mono);text-align:right}

/* 开发者能力 */
.caps{display:grid;gap:6px}
.cap{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;align-items:start;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--bg);font-size:13px;cursor:pointer}
.cap input{margin-top:3px;accent-color:var(--green)}
.cap small{grid-column:2;color:var(--muted);font-size:12px;line-height:1.5}
.cap .later{font-size:12px;color:var(--brass);margin-left:6px}
.check{display:flex;gap:8px;align-items:center;font-size:13px}
.check input{accent-color:var(--green)}
.rules-box summary{cursor:pointer;font-size:13px;color:var(--green)}
.rules-box ol{margin:8px 0 0;padding-left:20px;display:grid;gap:4px;font-size:12px;color:var(--muted);line-height:1.6}
.capreq{border:1px solid var(--line);border-radius:10px;padding:8px 10px;display:grid;gap:4px;font-size:13px}
.capreq .row{gap:6px}
.chip{display:inline-block;padding:1px 8px;border-radius:999px;background:var(--brass-soft);font-size:12px;margin:0 4px 4px 0}
.chip.on{background:color-mix(in srgb,var(--s-live) 22%,transparent)}
.chip.off{opacity:.55;text-decoration:line-through}
.caps-admin{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}
.caps-admin .note{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:8px;padding:7px 10px}

/* 动作 */
.actbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px}
.actbar button{font-size:12px;padding:4px 10px}
.actbar button[aria-pressed="true"]{border-color:var(--green);box-shadow:inset 0 0 0 1px var(--green)}
.actbar small{color:var(--muted)}
.actbar i{font-style:normal;font-size:12px}
.actbar i.ok{color:var(--s-live)}
.actbar i.bad{color:var(--s-flag)}

.issue{flex-wrap:wrap}
.issue button{font-size:12px;padding:3px 10px;margin-left:auto}
.issue .redline{margin-left:auto;color:var(--s-flag);font-size:12px}

/* 申请后的闭环：上传 → 申请 → 拉票 → 上展 */
.loop{display:grid;gap:10px;padding:14px;border-radius:14px;border:1px solid var(--line);background:var(--bg)}
.loop.voting{border-color:color-mix(in srgb,var(--green) 40%,var(--line))}
.loop.approved{background:linear-gradient(90deg,color-mix(in srgb,#e0c27d 35%,var(--bg)),var(--bg));border-color:#d7bb7a}
.loop p{margin:0;font-size:14px;line-height:1.7}
.loop-steps{display:flex;gap:6px;flex-wrap:wrap;font-size:12px}
.loop-steps span{padding:3px 10px;border-radius:999px;background:var(--panel);border:1px solid var(--line);color:var(--muted)}
.loop-steps .done{color:var(--fg);border-color:color-mix(in srgb,var(--green) 40%,var(--line))}
.loop-steps .now{background:var(--green);color:var(--on-accent);border-color:var(--green);font-weight:700}
.hot-tag{display:inline-block;padding:1px 8px;border-radius:999px;background:#c0503c;color:#fff;font-size:12px;font-weight:700;margin-left:6px}
.title-link{color:inherit;text-decoration:none}
.title-link:hover{text-decoration:underline}

.autobox{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 14px;border-radius:12px;border:1px dashed var(--green);background:color-mix(in srgb,var(--green) 6%,transparent)}
.autobox>div{display:grid;gap:2px;flex:1;min-width:220px;font-size:13px}

.prop-list{margin:8px 0 0;padding-left:20px;display:grid;gap:8px;font-size:13px}
.prop-list button{font-size:12px;padding:2px 8px}
