:root{font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;color:#282822;background:#f8f7f2;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}#app{min-height:100vh}.shell{display:grid;grid-template-columns:225px minmax(0,1fr);min-height:100vh}.side{background:#f1efe8;border-right:1px solid #d9d8ce;padding:22px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;gap:10px;align-items:center;padding:0 4px 24px;font-size:20px;font-weight:800}.brand-mark{background:#2f5d8c;color:#fff;border-radius:8px;width:34px;height:34px;display:grid;place-items:center;font-size:18px}.brand small{display:block;font-size:10px;color:#67665e;letter-spacing:.08em;font-weight:600}.role-switch{display:grid;grid-template-columns:repeat(3,1fr);background:#e8e6df;border-radius:10px;padding:4px;gap:2px}.role-switch button{border:0;background:transparent;padding:8px 2px;border-radius:7px;color:#66665d;font-size:12px;font-weight:700}.role-switch button.active{background:#fff;color:#234a73;box-shadow:0 2px 5px #28282213}.nav{overflow:auto;flex:1;margin-top:20px}.nav-label{color:#8f6d30;font-weight:800;letter-spacing:.08em;font-size:11px;margin:17px 10px 5px}.nav button{border:0;background:none;text-align:left;display:block;width:100%;padding:10px 12px;color:#484840;border-radius:7px;font-size:13px}.nav button:hover{background:#e5e4da}.nav button.active{background:#282822;color:#fff;font-weight:700}.side-foot{border-top:1px solid #d9d8ce;padding:14px 8px;color:#75746b;font-size:11px;line-height:1.55}.side-foot button{border:0;background:none;color:#2f5d8c;padding:7px 0;font-weight:700}.main{min-width:0}.top{height:70px;background:#fdfdfa;border-bottom:1px solid #deddd5;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,3vw,42px);position:sticky;top:0;z-index:10}.top strong{font-size:15px}.top-right{display:flex;align-items:center;gap:12px}.chip{border:1px solid #d9d8ce;padding:7px 10px;border-radius:100px;color:#67665e;font-size:11px;background:#f8f7f2}.hamb{display:none;border:0;background:none;font-size:22px;color:#2f5d8c}.content{max-width:1320px;margin:auto;padding:31px clamp(18px,3vw,42px) 70px}.title{font-family:"Noto Serif SC","Songti SC",serif;font-size:28px;margin:0 0 7px}.lead{color:#67665e;font-size:13px;margin:0 0 23px;line-height:1.65}.notice{background:#e9eff7;border:1px solid #cbd8e8;color:#234a73;border-radius:8px;padding:11px 14px;font-size:12px;line-height:1.5;margin-bottom:20px}.grid{display:grid;gap:12px}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:#fdfdfa;border:1px solid #ddded7;border-radius:10px;padding:18px}.card h3{margin:0 0 11px;font-size:16px}.stat label{color:#67665e;font-size:12px}.stat strong{display:block;font-family:Georgia,"Noto Serif SC",serif;font-size:32px;margin-top:10px}.stat small{display:block;color:#88877d;margin-top:4px}.section{display:flex;justify-content:space-between;align-items:end;gap:10px;margin:26px 0 12px}.section h2{font-family:"Noto Serif SC","Songti SC",serif;font-size:18px;margin:0}.section small{color:#88877d}.btn{border:1px solid #c9cbc6;background:#fdfdfa;border-radius:7px;padding:9px 14px;color:#282822;font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:5px;text-decoration:none}.btn:hover{background:#edece4}.btn.primary{background:#2f5d8c;color:#fff;border-color:#2f5d8c}.btn.primary:hover{background:#234a73}.btn.danger{color:#b53124;border-color:#e7c9c3}.btn.small{padding:6px 9px;font-size:11px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.table-wrap{overflow:auto;background:#fff;border:1px solid #ddded7;border-radius:9px}.table{width:100%;border-collapse:collapse;min-width:680px}.table th{text-align:left;background:#edece4;color:#54534b;font-size:11px;padding:12px;border-bottom:1px solid #d8d8d0}.table td{padding:12px;border-bottom:1px solid #eee;font-size:12px}.table tr:last-child td{border-bottom:0}.table tr:hover td{background:#fbfbf7}.pill{display:inline-flex;align-items:center;padding:4px 8px;border-radius:100px;background:#e9eff7;color:#234a73;font-size:10px;font-weight:700;white-space:nowrap}.pill.good{background:#e4f3e9;color:#1e7a46}.pill.warn{background:#f4ecff;color:#6b4c9a}.pill.bad{background:#fbe9e6;color:#a42f23}.room-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:10px}.room{border:1px dashed #d6d7cf;background:#fff;border-radius:10px;padding:14px;text-align:left;min-height:92px}.room:hover{border-color:#2f5d8c}.room strong{display:block;font-size:21px;font-family:Georgia,serif}.room small{display:block;color:#85847c;font-size:11px;margin:4px 0 8px}.room.done{border-style:solid;border-color:#8bc19b}.room.flag{border-style:solid;border-color:#c0392b}.hero{background:#282822;color:#fff;border-radius:13px;padding:25px;display:flex;justify-content:space-between;gap:20px;align-items:center}.hero strong{display:block;font-family:"Noto Serif SC",serif;font-size:23px}.hero p{color:#dddcd4;font-size:12px;line-height:1.6;max-width:650px}.hero .btn{background:#fdfdfa}.form{display:grid;gap:14px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.field{display:grid;gap:6px;font-size:12px;color:#56564f;font-weight:700}.field input,.field select,.field textarea,.search{width:100%;border:1px solid #cfd2ca;border-radius:7px;background:#fff;padding:10px;color:#282822;outline:none}.field input:focus,.field select:focus,.field textarea:focus,.search:focus{border-color:#2f5d8c;box-shadow:0 0 0 3px #2f5d8c17}.field textarea{min-height:96px;resize:vertical}.list{display:grid;gap:9px}.row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #eee}.row:last-child{border-bottom:0}.row strong{font-size:13px}.row small{display:block;color:#85847c;font-size:11px;margin-top:4px}.team{border-left:3px solid #2f5d8c}.team-name{color:#2f5d8c;font-weight:800}.bar{height:8px;background:#e6e4da;border-radius:100px;overflow:hidden}.bar span{display:block;height:100%;background:#2f5d8c;border-radius:100px}.tagline{color:#87867d;font-size:11px;line-height:1.55}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#282822;color:#fff;padding:11px 17px;border-radius:8px;z-index:30;font-size:12px;box-shadow:0 10px 25px #0004}.mobilebar{display:none}.overlay{display:none}.empty{padding:30px;text-align:center;color:#85847c}.inline-note{font-size:11px;color:#86867b;margin:10px 0}.label{color:#8f6d30;font-weight:800;font-size:11px;letter-spacing:.08em}.metric{font-size:24px;font-weight:800;font-family:Georgia,serif}.filter{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.filter select,.filter input{border:1px solid #cfd2ca;padding:8px 10px;border-radius:6px;background:#fff;font-size:12px}.footnote{color:#a2a096;font-size:10px;line-height:1.6;margin-top:35px}
@media(max-width:1000px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.shell{display:block}.side{position:fixed;z-index:20;width:min(285px,85vw);transform:translateX(-110%);transition:transform .2s;box-shadow:14px 0 30px #28282228}.side.open{transform:translateX(0)}.overlay.open{display:block;position:fixed;inset:0;z-index:19;background:#28282266}.hamb{display:block}.top{height:60px;padding:0 16px}.top strong{font-size:13px}.top-right .chip{font-size:10px}.content{padding:20px 15px 88px}.title{font-size:24px}.g2,.g3{grid-template-columns:1fr}.g4{gap:8px}.stat strong{font-size:25px}.card{padding:15px}.hero{display:block;padding:21px}.hero strong{font-size:21px}.hero .btn{margin-top:5px}.form-grid{grid-template-columns:1fr}.mobilebar{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:11;background:#fdfdfa;border-top:1px solid #dddcd5;padding:7px 5px calc(7px + env(safe-area-inset-bottom));justify-content:space-around}.mobilebar button{border:0;background:none;color:#727169;font-size:10px;display:grid;gap:3px;justify-items:center;min-width:50px}.mobilebar button.active{color:#2f5d8c;font-weight:800}.mobilebar button b{font-size:18px}.toast{bottom:80px}.room-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
