*{box-sizing:border-box}body{margin:0;background:#f5f5ee;color:#1c2c24;font:15px/1.55 "Segoe UI","Microsoft Yahei",sans-serif}[hidden]{display:none!important}button,input,select{font:inherit}button{border:1px solid #c4cfc2;background:#fff;color:#254937;padding:8px 16px;cursor:pointer;border-radius:7px;font-weight:600}button:hover{filter:brightness(.94)}button:disabled{opacity:.55;cursor:wait}.solid{background:#315e49;color:white;border-color:#315e49}.kicker,.topmark{font-weight:700;font-size:11px;letter-spacing:.18em;color:#68806c}.error{color:#ac3627;min-height:20px}.login-art{background:radial-gradient(ellipse at 46% 76%,#6e8063 0,transparent 60%),repeating-linear-gradient(115deg,#213b30 0,#213b30 70px,#233e32 71px,#233e32 115px);color:#ecedd6;display:flex;flex-direction:column;justify-content:space-between;padding:8vw 5vw}.login-art strong{font:900 clamp(72px,8vw,150px)/.82 Arial;letter-spacing:-.08em}.login-art strong span{font:24px Arial;vertical-align:top}.login-art p,.login-art .topmark{color:#d5e2cb;letter-spacing:.15em;font-size:12px}.login-art hr{border:none;border-top:1px solid #82987c;margin:28px 0}#loginView{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}#loginForm{width:min(370px,80%);margin:auto}h1{font-size:clamp(26px,3vw,44px);letter-spacing:-.06em;line-height:1.2;margin:12px 0}h2{margin:10px 0 18px;font-size:24px}p,small{color:#647066}#loginForm button{width:100%;margin-top:20px}.login-art p{color:#e3e8d9}label{display:block;font-size:13px;font-weight:600}input,select{min-width:0;border:1px solid #cbd2c7;border-radius:6px;background:white;padding:10px;color:#23372b}label input,label select{display:block;width:100%;margin-top:5px}#work{min-height:100vh;display:grid;grid-template-columns:210px minmax(0,1fr)}aside{background:#192d24;color:white;padding:38px 20px;display:flex;flex-direction:column;gap:50px}.logo{font:900 28px/.95 Arial;letter-spacing:-2px}.logo i{color:#c2d8ac}.logo small{display:block;font:10px Arial;letter-spacing:2px;color:#c5d0bc;margin-top:10px}nav{display:grid;gap:8px}nav button,.logout{background:transparent;border:0;color:#becdc0;text-align:left}nav .on{background:#34533e;color:white}.logout{margin-top:auto}main{padding:32px clamp(18px,4vw,65px)}header,.toolbar,.rowhead,.actions,.group{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}header{padding:12px 0 20px;border-bottom:1px solid #c9d1c4}.staff,.pill{font-size:12px;background:#e1eada;color:#3f674c;padding:4px 10px;border-radius:20px}.pill.off{background:#eee7df;color:#846a52}.toolbar{margin:24px 0}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(290px,100%),1fr));gap:18px}.card,.box{background:#fff;border:1px solid #d4dccf;border-radius:12px;padding:20px}.card h2{font-size:21px}.card footer{display:flex;gap:10px;border-top:1px solid #e3e7df;padding-top:15px}.hint{font-size:13px;color:#677766}.empty{background:#fff;border:1px dashed #bccbbf;border-radius:12px;padding:40px;text-align:center;color:#6c796b}.layout{display:grid;grid-template-columns:minmax(220px, .85fr) minmax(280px,1.3fr);gap:18px}.floor{width:100%;aspect-ratio:1/1;position:relative;border-radius:10px;background:#473d30;overflow:hidden}.floor img{width:100%;height:100%;object-fit:fill}.spot{position:absolute;transform:translate(-50%,-50%);padding:3px 5px;font-size:11px;background:#b9d5b6;color:#173c29;border:1px solid #304936}.spot.off{background:#a79b86}.tablewrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:14px;white-space:nowrap}td,th{padding:10px 7px;text-align:left;border-bottom:1px solid #e0e7dd}th{color:#718073;font-size:12px}.link{border:0;background:none;color:#336f54;padding:4px}.danger{color:#9c4234}.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.full{grid-column:1/-1}dialog{border:1px solid #bec9bb;width:min(490px,92vw);border-radius:16px;color:inherit;padding:24px;max-height:90vh}dialog::backdrop{background:#14261ba3}.actions{justify-content:flex-end}.actions button{min-width:82px}#msg{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#243b2e;color:white;padding:12px 22px;border-radius:8px;z-index:5}@media(max-width:850px){.layout{grid-template-columns:1fr}#work{grid-template-columns:1fr}aside{padding:14px;gap:15px;flex-direction:row;align-items:center;flex-wrap:wrap}nav{display:flex;gap:0}.logout{margin:0 0 0 auto}main{padding:16px}.logo{font-size:19px}.logo small{display:none}}@media(max-width:620px){#loginView{grid-template-columns:1fr;grid-template-rows:32vh auto}.login-art{padding:22px}.login-art strong{font-size:42px}.login-art hr,.login-art div p{display:none}#loginForm{margin:35px auto}.staff{display:none}}nav small{display:block;color:#94aa99;font-size:10px;letter-spacing:.18em;margin:14px 10px 2px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.metric{background:white;border:1px solid #dae1d5;border-radius:12px;padding:18px}.metric:first-child{background:#294938;color:white}.metric:first-child .kicker,.metric:first-child small{color:#c5d8be}.metric .kicker{font-size:9px;margin-bottom:15px}.metric strong{display:block;font:bold 38px/1.4 Arial}.metric small,.minirow small{display:block;font-size:12px}.dashrow{display:grid;grid-template-columns:1.2fr 1fr;gap:16px;margin:18px 0}.trend{display:flex;height:155px;justify-content:space-around;gap:9px}.barcol{display:flex;flex:1;align-items:center;flex-direction:column}.barcol b{font-size:13px}.track{position:relative;width:65%;flex:1;background:linear-gradient(#f7f9f5,#eff3eb);margin:5px 0}.track i{position:absolute;bottom:0;width:100%;background:#77947a;border-radius:3px 3px 0 0}.minirow,.paging{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-top:1px solid #e0e6da}.paging{font-size:13px;color:#697768;margin-top:15px}.minirow strong{font-size:13px}.placement{margin-top:12px}.pickfloor{max-width:260px;aspect-ratio:598/627;cursor:crosshair;margin:8px auto}.cross{position:absolute;transform:translate(-50%,-50%);border-radius:50%;background:white;color:#305f43;font-weight:bold;padding:1px 4px}.floor{aspect-ratio:598/627}.box h2{font-size:19px}header{background:linear-gradient(90deg,transparent,#eaf0e51f)}@media(max-width:980px){.metrics{grid-template-columns:repeat(2,1fr)}}@media(max-width:750px){.dashrow{grid-template-columns:1fr}nav small{display:none}aside{gap:10px}nav{flex-wrap:wrap}nav button{padding:5px 8px;font-size:12px}}.loadview{height:200px;display:flex;align-items:center;justify-content:center;gap:12px;color:#617466}.loadview i{display:inline-block;width:20px;height:20px;border:2px solid #dce5d9;border-top-color:#42634a;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.loadview i{animation:none}}
/* Shared management shell */
:root{--ink:#263044;--muted:#69758b;--line:#dce1ec;--blue:#515cc5;--pale:#edf0ff}
body{background:#f5f6fa;color:var(--ink);font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif}
#work{grid-template-columns:164px minmax(0,1fr)}aside{background:#f6f7fb;border-right:1px solid var(--line);color:var(--ink);padding:22px 12px;gap:25px}
.logo{display:flex;align-items:center;gap:9px;font:750 13px/1.35 Inter,"Segoe UI",sans-serif;letter-spacing:0}.logo b,.staff{display:grid;place-items:center;width:33px;height:33px;border-radius:10px;background:var(--blue);color:#fff;font:800 20px Arial}.logo small{display:block;color:var(--muted);font:11px/1.5 "Microsoft YaHei",sans-serif;letter-spacing:0;margin:0}nav{gap:3px}nav small{font-size:11px;letter-spacing:0;color:var(--muted);margin:18px 10px 5px}nav button,.logout{color:#455069;font-size:13px;font-weight:500;padding:9px 12px}nav .on{color:#414da9;background:#e9ecfc;font-weight:650;box-shadow:inset 3px 0 var(--blue)}
main{padding:0 24px 30px}header{background:white;margin:0 -24px;padding:12px 24px;border-color:var(--line)}header h1{font-size:23px;letter-spacing:-.035em;margin:2px 0}header .kicker{font-size:11px;letter-spacing:0;color:var(--muted)}.head-context{display:flex;align-items:center;gap:10px}.head-context label{font-size:11px;color:var(--muted);font-weight:400}.head-context select{font-size:13px;max-width:220px;padding:5px 9px}.head-context b{font-size:12px}.staff{width:30px;height:30px;background:#edf0fa;color:#4c5981;font:600 12px Inter,sans-serif;border-radius:50%}
.box,.metric,.card,select,input,button,dialog{border-color:var(--line)}.solid,.metric:first-child{background:var(--blue);border-color:var(--blue);color:white}.metric:first-child small{color:#e0e4ff}.metric{padding:20px}.metric strong{font-size:34px}.card,.metric,.box{border-radius:9px;box-shadow:0 2px 5px #26324b05}.card .kicker,.link{color:#515da9}.track i{background:#8995da}.track{background:#f0f2fa}.pill{background:#e8f1ed;color:#386a51}.toolbar{margin:18px 0}.tablewrap th{background:#f6f7fb;color:#536079}.tablewrap th,.tablewrap td{padding:12px 10px;border-color:#e7eaf1}.tablewrap tbody tr:hover{background:#fafbfe}.planField{display:grid;gap:6px}.planField img{display:block;max-width:100%;height:105px;object-fit:contain;border-radius:6px;background:#f4f5fa}.planField details{font-size:12px;color:var(--muted)}.planField details input{width:100%;margin-top:5px}.empty{border-color:#d0d7e5;color:var(--muted)}.login-art{background:linear-gradient(150deg,#18243695,#212139e8),url('/admin/floor.jpg') center/cover}.login-art strong,.login-art p,.login-art .topmark{color:white}
@media(max-width:900px){#work{grid-template-columns:1fr}aside{flex-direction:row;padding:10px 14px;gap:12px}nav{display:flex;flex-wrap:wrap}nav small{display:none}.logout{margin:0 0 0 auto}main{padding:0 14px 20px}header{margin:0 -14px;padding:12px 14px}.head-context b,.head-context .staff{display:none}}
.geoField{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.geoField button{white-space:nowrap}.geoField .hint{flex:1;min-width:170px;line-height:1.55}.geoField select{width:100%}.geoField [hidden]{display:none}
.geoAdvanced summary{color:#536781;font-size:12px;cursor:pointer}.geoAdvanced[open]>.fields{margin-top:10px}
.geoField label:not([hidden]){width:100%;display:flex;align-items:center;gap:8px;font-weight:400}.geoField label input{width:auto}
.staff-scopes{border:1px solid #d8dedb;border-radius:8px;padding:12px}.staff-scopes label{display:flex;align-items:center;gap:8px;padding:6px}.staff-scopes input[type=checkbox]{width:auto;min-height:0}
