:root{font:13px/1.45 system-ui,-apple-system,'Segoe UI',sans-serif;--dark:#193e32;--green:#28684d;--line:#dbe8df;--muted:#627e6c;color:#234438;background:#f3f7f2}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{border:0;border-radius:9px;cursor:pointer;padding:10px 13px;font-weight:650}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{width:100%;padding:10px;border:1px solid #cfdfd5;border-radius:9px;background:#fff;min-width:0;color:#233e32}.primary{background:var(--green);color:white}.secondary{background:#e9f2eb;color:#285d41}.ghost{background:none;color:#d5e6dc;text-align:left}.app{display:grid;grid-template-columns:196px minmax(0,1fr);height:100dvh;min-height:580px}.sidebar{background:var(--dark);color:#eaf5ec;padding:16px 10px;display:flex;flex-direction:column;gap:9px;min-width:0}.brand{font-size:21px;letter-spacing:.16em;font-weight:850}.brand small{display:block;font-size:10px;letter-spacing:.17em;font-weight:500;color:#a9cbbb}.role{font-size:12px;color:#dbecdf;padding:10px;border:1px solid #477564;border-radius:10px}nav{display:grid;gap:5px}nav button{background:none;color:#d4e7da;text-align:left;padding:9px 10px}nav button.active,nav button:hover{background:#365f4b;color:#fff}.sidebar #signout{margin-top:auto}.main{overflow-x:hidden;overflow-y:auto;min-width:0;max-width:100%}header{background:#fff;padding:11px 15px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}header h1{margin:0;font-size:20px}header span,.faint{color:var(--muted);font-size:12px}.view{padding:11px;min-width:0;max-width:100%}.view[hidden],#app[hidden],#login[hidden]{display:none!important}.columns{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(290px,1fr);gap:14px}.panel{background:white;border:1px solid var(--line);border-radius:13px;padding:12px;min-width:0;margin-bottom:13px}.panel h2{font-size:17px;margin:0 0 12px}.panel h3{font-size:14px;margin:16px 0 8px}.sub{color:var(--muted);font-size:12px;margin:7px 0 16px}.toolbar,.pair{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.toolbar label{width:160px}.stack{display:grid;gap:12px}label{font-size:12px;font-weight:600;color:#506e5d;display:block}label>input,label>select,label>textarea{display:block;margin-top:4px}.pair>label{flex:1;min-width:120px}.map{position:relative;overflow:hidden;border:1px solid #e1e9e2;background:#fcfffb;border-radius:12px}.map svg{display:block;width:100%;height:auto;max-height:65vh}.list{display:grid;gap:7px}.item{border:1px solid #e1e9e2;border-radius:10px;padding:10px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.item small{display:block;color:#6a7d6e;font-size:11px}.item .actions{display:flex;gap:4px;flex-wrap:wrap}.item button{padding:7px 9px;font-size:12px}.message{color:#b2433b;padding:8px 18px;min-height:27px}.login{height:100dvh;display:grid;place-items:center;padding:20px}.login-card{width:min(400px,100%);background:#fff;padding:30px;border:1px solid var(--line);border-radius:16px;display:grid;gap:13px}.login-card .brand{color:var(--dark)}.login-card h2{margin:5px 0}#hallFrame{width:100%;height:calc(100dvh - 185px);min-height:460px;border:1px solid var(--line);border-radius:12px}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:12px}.metric{background:#eff6ee;border-radius:12px;padding:14px}.metric b{font-size:23px;display:block}.metric small{color:var(--muted)}.pill{border-radius:8px;background:#fff2db;color:#8d5d1c;font-size:11px;padding:4px 7px}.success{color:#267849}.danger{color:#b44d42}@media(max-width:930px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr}.sidebar{padding:9px;display:flex;flex-direction:row;overflow:auto;align-items:center;gap:8px}.brand{font-size:14px;white-space:nowrap}.brand small,.role{display:none}.sidebar #signout{font-size:12px;padding:9px}nav{display:flex;gap:4px}nav button{white-space:nowrap;padding:10px}.columns{grid-template-columns:1fr}.view{padding:9px}header{padding:10px}.panel{padding:12px}}
/* Keep the application within the viewport: only wide data grids scroll locally. */
html,body{width:100%;max-width:100%;overflow-x:hidden}
.app{width:100%;max-width:100%;overflow:hidden}
.app>*{min-width:0;max-width:100%}
.main>*,.columns>*,.panel>*,.side-col{min-width:0;max-width:100%}
header{gap:8px;min-width:0}
header h1{min-width:0;flex-shrink:0}
header span{overflow-wrap:anywhere;text-align:right}
@media(max-width:930px){
 .app{min-width:0;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}
 .sidebar{width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;min-width:0}
 .sidebar nav{flex:0 0 auto}
 .sidebar .brand,.sidebar #signout{flex-shrink:0}
 .main{width:100%;max-width:100%}
}
@media(max-width:480px){header h1{font-size:16px}.sidebar{gap:5px}nav button{padding:7px 9px;font-size:12px}.view{padding:7px}}
