:root{--brand:#193c7f;--accent:#128fcb;--pale:#edf5ff;--ink:#183251;--muted:#5a6b80;--border:#e0e8f3}*{box-sizing:border-box}body{margin:0;background:#f4f7fc;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Microsoft YaHei",sans-serif;font-size:14px}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:0;border-radius:9px;padding:12px 18px;font-weight:600}button:disabled{opacity:.45;cursor:not-allowed}a{color:var(--brand);text-decoration:none}input,select,textarea{width:100%;border:1px solid var(--border);border-radius:9px;padding:12px 13px;background:white;color:var(--ink);outline:none}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #159ed512}label{display:block;font-size:13px;font-weight:600;margin:18px 0}label input,label select,label textarea{margin-top:9px}h1,h2,h3{letter-spacing:-.5px}h1{font-size:30px;margin:12px 0 0}h2{font-size:26px;margin:10px 0 20px}h3{font-size:16px}.eyebrow{font-size:11px;letter-spacing:2px;line-height:1.8;color:#566c8f;font-weight:650}.muted{color:var(--muted);line-height:1.7}.small{font-size:12px}.primary{background:var(--brand);color:white}.secondary{background:var(--pale);color:var(--brand)}.text-button{background:none;color:var(--brand);padding:8px}.login-layout{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:80px;max-width:1150px;margin:auto;padding:70px 40px}.login-story img{width:260px;max-width:100%;margin-bottom:65px}.login-story h1{font-size:48px;line-height:1.45;margin:18px 0 20px}.login-story p{color:#5a6b80;font-size:17px}.story-grid{margin-top:60px;display:flex;gap:30px;color:#5f7192;font-size:12px}.login-card{padding:45px;background:white;border:1px solid var(--border);border-radius:20px;box-shadow:0 24px 70px #274c8c0c}.login-card .primary{width:100%;margin:12px 0}#login-error,#editor-error{color:#b13a45;font-size:13px;line-height:1.6}#workspace{min-height:100vh}aside{position:fixed;width:240px;height:100vh;background:white;border-right:1px solid var(--border);padding:36px 24px}.brand{width:190px;height:auto}.brand+.eyebrow{margin:25px 0 42px}nav{display:grid;gap:12px}nav button,nav a{text-align:left;padding:15px 14px;border-radius:10px;background:none;color:#5d6d82}nav .active{background:var(--pale);color:var(--brand)}.aside-bottom{position:absolute;bottom:28px;color:#8490a0;font-size:12px;line-height:2.6}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#44a898;margin-right:6px}main{margin-left:240px;max-width:1550px;padding:38px 44px}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:35px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.stats article{padding:26px 30px;background:white;border:1px solid var(--border);border-radius:14px}.stats strong{display:block;font-size:38px;margin-top:12px;color:var(--brand);font-weight:650}.toolbar{display:flex;gap:14px;align-items:center;margin:28px 0}.toolbar input{max-width:430px}.toolbar select{max-width:160px}.table-wrap{background:white;border:1px solid var(--border);border-radius:14px;overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left}th{font-size:12px;color:#8290a3;background:#f9fbff;padding:19px 20px;font-weight:500}td{padding:22px 20px;border-top:1px solid #edf1f7;vertical-align:middle}td:first-child{min-width:230px}td:last-child{white-space:nowrap}.badge{display:inline-block;font-size:11px;background:#eaf2ff;color:#3867a6;border-radius:6px;padding:5px 8px;margin:2px}.badge.live{background:#e8f5ef;color:#367c60}.badge.draft{background:#f4f0e6;color:#9f8455}.title-cell{font-weight:600;margin-bottom:6px}.empty{padding:75px 30px;text-align:center;color:#7e8fa6;line-height:1.8}.empty p{font-size:13px}.info{background:#ecf4ff;border:1px solid #dceafa;border-radius:10px;color:#527094;padding:16px;line-height:1.8;font-size:12px}dialog{width:min(840px,94vw);border:0;border-radius:18px;padding:30px 36px;max-height:92vh;box-shadow:0 30px 120px #0b26594d}dialog::backdrop{background:#17335b66}.dialog-head,.section-head{display:flex;align-items:center;justify-content:space-between}.dialog-head h2{margin:6px 0 10px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0 16px}.uploads{display:grid;grid-template-columns:1fr 1fr;gap:12px}.upload{border:1px dashed #c8d8ee;border-radius:10px;padding:14px;margin:0}.upload input{font-size:11px;border:0;padding:4px 0}.file-state{font-size:11px;font-weight:400;word-break:break-all;color:#8592a5;line-height:1.6;margin-top:7px}.dialog-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:25px}.banner-card{padding:25px;background:white;border:1px solid var(--border);border-radius:15px;margin:20px 0}.banner-card .form-grid{grid-template-columns:1fr 1fr}.banner-head{display:flex;justify-content:space-between;align-items:center}.banner-head label{display:flex;align-items:center;gap:8px;margin:0}.banner-head input{width:auto;margin:0}.banner-preview{border-radius:12px;padding:25px;color:white;background:linear-gradient(115deg,#193c7f,#127fbb);margin-top:18px}.banner-preview h3{font-size:24px;margin:12px 0}.banner-preview p{opacity:.8}.banner-preview.sky{background:linear-gradient(115deg,#167ab2,#46aadc)}.banner-preview.navy{background:linear-gradient(115deg,#193c7f,#31568f)}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#183251;color:white;padding:14px 24px;border-radius:10px;z-index:20;box-shadow:0 10px 30px #173c7133}progress{width:100%;accent-color:var(--brand)}[hidden]{display:none!important}@media(max-width:900px){aside{width:185px;padding:25px 16px}.brand{width:150px}main{margin-left:185px;padding:28px 22px}.login-layout{gap:30px}.login-story h1{font-size:36px}.stats article{padding:20px}.form-grid{grid-template-columns:1fr 1fr}}@media(max-width:650px){aside{position:static;width:100%;height:auto;border-bottom:1px solid var(--border)}aside .eyebrow,.aside-bottom{display:none}nav{display:flex;flex-wrap:wrap;margin-top:18px}nav a,nav button{font-size:12px;padding:10px}.brand{width:160px}main{margin-left:0;padding:22px 16px}header h1{font-size:24px}.stats{gap:8px}.stats article{padding:14px}.stats strong{font-size:28px}.login-layout{display:block;padding:30px 20px}.login-story img{margin-bottom:20px}.login-story h1,.story-grid{display:none}.login-story p{font-size:14px}.login-card{padding:25px}.uploads,.banner-card .form-grid{grid-template-columns:1fr}dialog{padding:22px}.form-grid{gap:0 10px}.section-head{display:block}}
button,input,select,textarea{border-radius:12px}.primary,.secondary{border-radius:24px}.stats article,.table-wrap,.banner-card{border-radius:20px}.upload{border-radius:16px}.banner-preview{border-radius:20px}.login-card{border-radius:28px}dialog{border-radius:26px}.info{border-radius:16px}
.poster-preview{display:block;width:100%;max-height:240px;object-fit:contain;background:#edf4ff;border-radius:18px}.preview-pages{display:flex;gap:12px;overflow:auto;margin:16px 0}.preview-pages img{max-width:220px;max-height:300px;object-fit:contain;border:1px solid #dae5f3;border-radius:12px}[hidden]{display:none!important}input[type=checkbox]{width:auto}
.toolbar{flex-wrap:wrap}.toolbar input[type=text],.toolbar input:not([type]),.toolbar input[name=q]{max-width:280px}.toolbar select{max-width:180px}.pager{margin-top:20px}.pager .text-button[disabled]{opacity:.35;cursor:not-allowed}tr.group-row td{background:#f7faff;color:var(--brand);font-weight:650;padding:12px 20px;font-size:13px}.toolbar+.table-wrap{margin-top:4px}

.detail-json{display:inline-block;max-width:460px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;cursor:help}.toolbar input[type=date]{max-width:150px}
.code-cell{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.5px}
.stats{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.stats article span{font-size:12px}
.bars{display:flex;gap:10px;align-items:flex-end;height:170px;padding:16px;background:#fff;border:1px solid var(--border);border-radius:20px;margin:12px 0 26px}
.bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;height:100%}
.bar span{width:100%;max-width:46px;background:linear-gradient(180deg,#9dc7f5,#dcebff);border-radius:8px 8px 0 0;min-height:2px}
.bar b{font-size:12px;color:var(--brand)}
.bar i{font-size:11px;color:var(--muted);font-style:normal}
label.check{display:flex;align-items:center;gap:10px;font-weight:600}
label.check input{width:auto;margin:0}
.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
td.pick{width:44px}
@media (max-width:1000px){
 aside{position:static;width:auto;height:auto;border-right:0;border-bottom:1px solid var(--border);padding:20px}
 .brand{width:150px}
 .brand+.eyebrow{margin:14px 0 18px}
 nav{display:flex;flex-wrap:wrap;gap:8px}
 nav button,nav a{padding:10px 12px}
 .aside-bottom{position:static;margin-top:16px}
 main{margin-left:0;padding:22px}
 header{flex-direction:column;align-items:flex-start;gap:12px}
 .form-grid,.uploads{grid-template-columns:1fr}
 th,td{padding:14px 12px}
 .login-layout{grid-template-columns:1fr;gap:32px;padding:36px 22px}
 .login-story img{margin-bottom:24px}
 .login-story h1{font-size:32px}
}
.bar span.bar-h1{height:5%}.bar span.bar-h2{height:10%}.bar span.bar-h3{height:15%}.bar span.bar-h4{height:20%}.bar span.bar-h5{height:25%}.bar span.bar-h6{height:30%}.bar span.bar-h7{height:35%}.bar span.bar-h8{height:40%}.bar span.bar-h9{height:45%}.bar span.bar-h10{height:50%}.bar span.bar-h11{height:55%}.bar span.bar-h12{height:60%}.bar span.bar-h13{height:65%}.bar span.bar-h14{height:70%}.bar span.bar-h15{height:75%}.bar span.bar-h16{height:80%}.bar span.bar-h17{height:85%}.bar span.bar-h18{height:90%}.bar span.bar-h19{height:95%}.bar span.bar-h20{height:100%}
.tax-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0 6px}
.tax-tab{background:var(--pale);color:var(--brand);padding:10px 16px;border-radius:12px;font-weight:600;font-size:13px;position:relative}
.tax-tab.active{background:var(--brand);color:#fff}
.tax-tab .count{margin-left:7px;font-size:11px;opacity:.65;font-weight:500}
.tax-tab.active .count{opacity:.85}

/* 长表单弹窗：头部与底部操作区固定，仅中间字段区滚动。 */
#dialog[open]{display:flex;flex-direction:column;overflow:hidden}
.dialog-head{flex:0 0 auto}
#edit-form{display:flex;flex-direction:column;min-height:0;flex:1}
#dialog-fields{flex:1;min-height:0;overflow-y:auto;padding-right:4px}
#editor-error{flex:0 0 auto;margin:8px 0 0}
.dialog-actions{flex:0 0 auto;background:#fff;border-top:1px solid var(--border);margin-top:14px;padding-top:14px}
