:root{font-family:system-ui,"Microsoft YaHei",sans-serif;color:#263445;background:#f5f7f7}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.55}.app{min-height:100vh}
.top{height:62px;background:#fff;border-bottom:1px solid #dce4e1;display:flex;align-items:center;gap:14px;padding:0 24px;position:sticky;top:0;z-index:3}
.brand{font-size:19px;font-weight:700;color:#145c40}.top .grow{flex:1}.subtle{color:#6f7f7a;font-size:13px}
.shell{display:grid;grid-template-columns:246px minmax(0,1fr);max-width:1520px;margin:auto}
.side{padding:22px 16px;border-right:1px solid #dce4e1;min-height:calc(100vh - 62px)}
.side button{display:block;width:100%;text-align:left;margin:4px 0;padding:11px 12px;background:transparent;border:0;border-radius:8px;color:#30413d}
.side button:hover,.side button.active{background:#e2f2e8;color:#126b44}
.side .number{display:inline-block;min-width:26px;color:#54806d}
.side .status{font-size:11px;float:right;color:#7b8e85}.side .group{font-size:12px;margin:22px 12px 8px;color:#73837d}
main{padding:28px 32px 80px;max-width:1150px;width:100%}h1{font-size:27px;margin:4px 0 8px}h2{font-size:19px;margin:0 0 16px}h3{font-size:16px;margin:0 0 12px}
p{line-height:1.6}.lead{color:#60726b;margin:0 0 25px}.card{background:#fff;border:1px solid #dce4e1;border-radius:12px;padding:23px;margin:0 0 18px}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
label{display:block;font-size:13px;font-weight:600;color:#3a5147;margin:0 0 6px}
input,select,textarea{width:100%;border:1px solid #cbd7d1;border-radius:7px;background:#fff;color:#25372e;padding:10px 11px;min-height:40px}
textarea{min-height:105px;resize:vertical;line-height:1.5}input:focus,select:focus,textarea:focus{outline:2px solid #9fd6b4;border-color:#41a86d}
input[type=checkbox]{width:17px;min-height:17px;vertical-align:middle;margin-right:7px}
input[type=file]{padding:8px}.field{margin:0 0 14px}.check{display:flex;align-items:center;font-weight:500;gap:3px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row.end{justify-content:flex-end}.row.spread{justify-content:space-between}
button.primary,button.secondary,button.danger,button.link{padding:9px 14px;border-radius:7px;border:1px solid transparent;font-size:14px}
button.primary{background:#16834f;color:white}button.secondary{background:#edf5ef;color:#186c45;border-color:#c4dfcf}button.danger{background:#fff6f4;color:#a64231;border-color:#edcec8}button.link{background:transparent;color:#116f46}
.item{border:1px solid #dce4e1;border-radius:9px;padding:17px;margin-top:12px;background:#fff}
.itemhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.itemhead strong{font-size:15px}
.pill{display:inline-block;padding:4px 9px;border-radius:100px;background:#e8f2ec;color:#246f4b;font-size:12px}
.muted{color:#72837c;font-size:13px}.note{padding:12px 15px;border-radius:8px;background:#f0f5f2;color:#3b5a49;margin:14px 0}
.warning{padding:12px 15px;border-radius:8px;background:#fff7e7;color:#865a0e;margin:14px 0}
.error{padding:12px 15px;border-radius:8px;background:#fff0ee;color:#a6312a;margin:14px 0}.success{padding:12px 15px;border-radius:8px;background:#e9f7ed;color:#176b41;margin:14px 0}
.empty{padding:28px;border:1px dashed #cbd7d1;border-radius:9px;color:#75857d;text-align:center;background:#fcfdfc}
.auth{max-width:430px;margin:9vh auto;padding:30px;background:#fff;border:1px solid #dce4e1;border-radius:12px}.auth h1{color:#176943}
.project-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:15px}.project-tile{padding:20px;background:#fff;border:1px solid #dce4e1;border-radius:10px;text-align:left}
.project-tile:hover{border-color:#55a87a}.project-tile strong{display:block;margin-bottom:8px}.project-tile small{color:#74847c}
.thumb{width:100px;height:80px;object-fit:cover;border-radius:6px;border:1px solid #dce4e1;background:#f7faf8}
.thumb-open{display:inline-block;padding:0;border:0;border-radius:7px;background:transparent;line-height:0;cursor:zoom-in}
.thumb-open:hover .thumb,.thumb-open:focus-visible .thumb{outline:3px solid #70bd91;outline-offset:2px}
.image-dialog{width:min(96vw,1300px);max-width:none;max-height:96vh;padding:0;border:1px solid #cbd7d1;border-radius:10px;box-shadow:0 20px 70px #10291d66;background:#fff;color:#263445}
.image-dialog::backdrop{background:#10251dcc}
.image-dialog-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 16px;border-bottom:1px solid #dce4e1}
.image-dialog-bar strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.image-dialog-controls{display:flex;align-items:center;gap:8px;flex:none}
.image-dialog-controls button{width:auto;min-width:38px;padding:6px 10px;border:1px solid #cbd7d1;border-radius:6px;background:#f7faf8;color:#263445}
.image-dialog-controls button:hover,.image-dialog-controls button:focus-visible{background:#e2f2e8;outline:2px solid #70bd91}
.image-dialog-percent{min-width:44px;text-align:center;font-size:13px}
.image-dialog-viewport{height:min(82vh,900px);overflow:auto;display:flex;align-items:flex-start;justify-content:flex-start;padding:12px;background:#f5f7f7}
.image-dialog-viewport img{display:block;flex:none;max-width:none;height:auto;margin:auto;box-shadow:0 2px 16px #10291d33}
.asset-list{display:flex;gap:14px;flex-wrap:wrap}.asset{width:170px}.asset .thumb{width:100%;height:110px}
.stage-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:20px 0}.stage-footer .row{justify-content:flex-end}
.toast{position:fixed;right:20px;bottom:20px;background:#263a31;color:#fff;padding:12px 16px;border-radius:7px;z-index:10;max-width:420px}
.loading{padding:40px;text-align:center}.small{font-size:12px}.preview{border:1px solid #9cccaf;background:#f4faf6;padding:15px;border-radius:9px;margin:16px 0;white-space:pre-wrap}
details{border:1px solid #dce4e1;border-radius:8px;padding:12px 16px;margin:10px 0}summary{cursor:pointer;font-weight:600}
@media(max-width:850px){.shell{display:block}.side{min-height:auto;border-right:0;border-bottom:1px solid #dce4e1;padding:10px 15px;white-space:nowrap;overflow-x:auto}.side button{display:inline-block;width:auto;margin-right:5px}.side .group{display:none}.side .status{display:none}main{padding:20px 16px 70px}.grid,.grid.three{grid-template-columns:1fr}.top{padding:0 14px}.top .subtle{display:none}.image-dialog-bar{align-items:flex-start;flex-direction:column}.image-dialog-controls{flex-wrap:wrap}.image-dialog-viewport{height:75vh}}
