:root{color:#17211b;background:#f4f7f2;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;letter-spacing:0}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}.login-page{display:grid;min-height:100vh;place-items:center;padding:24px;background:linear-gradient(#0b18119e,#0b181170),url(https://images.unsplash.com/photo-1500937386664-56d1dfef3854?auto=format&fit=crop&w=1600&q=80) center/cover}.login-panel{display:grid;width:min(960px,100%);grid-template-columns:1fr 360px;gap:40px;align-items:end;color:#fff}.login-panel h1{margin:0;font-size:clamp(46px,9vw,88px);line-height:.95}.login-form{display:grid;gap:16px;padding:22px;color:#17211b;background:#fff;border:1px solid #dce5da;border-radius:8px;box-shadow:0 20px 50px #0000002e}label{display:grid;gap:7px;color:#405147;font-size:.9rem;font-weight:700}input,select{width:100%;min-height:44px;padding:10px 12px;color:#17211b;background:#f9fbf8;border:1px solid #cbd8c7;border-radius:6px;outline:none}input:focus,select:focus{border-color:#2f7c45;box-shadow:0 0 0 3px #2f7c4524}button{display:inline-flex;min-height:42px;align-items:center;justify-content:center;gap:8px;padding:10px 14px;color:#fff;background:#226d3b;border:0;border-radius:6px;font-weight:800}button:disabled{cursor:not-allowed;opacity:.55}.app-shell{display:grid;min-height:100vh;grid-template-columns:260px 1fr}.sidebar{display:flex;min-height:100vh;flex-direction:column;gap:22px;padding:18px;color:#eef7ee;background:#17211b}.brand{display:flex;align-items:center;gap:12px;padding:8px 4px 14px;border-bottom:1px solid rgba(255,255,255,.12)}.brand small,.muted{color:#6d7d72}.brand small{display:block;color:#b5c7b6}nav{display:grid;gap:8px}nav button,.logout{justify-content:flex-start;color:#dcebdc;background:transparent}nav button.active,nav button:hover,.logout:hover{background:#ffffff1a}.logout{margin-top:auto}.content{display:grid;align-content:start;gap:22px;padding:24px}.topbar,.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.topbar h1,.section h2{margin:0}.eyebrow{margin:0 0 6px;color:#4f775b;font-size:.78rem;font-weight:900;text-transform:uppercase}.source,.status{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border-radius:999px;font-size:.8rem;font-weight:900}.source{color:#1d5f35;background:#dff0df}.metrics{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:12px}.metric,.section,.map-panel{background:#fff;border:1px solid #dde6db;border-radius:8px}.metric{display:grid;gap:7px;min-height:122px;padding:16px}.metric span{color:#5c6d62;font-size:.86rem;font-weight:800}.metric strong{font-size:1.7rem}.metric.green svg{color:#228240}.metric.amber svg{color:#ad7417}.section{display:grid;gap:16px;padding:18px}.table-wrap{overflow-x:auto}table{width:100%;min-width:760px;border-collapse:collapse}th,td{padding:13px 10px;text-align:left;border-bottom:1px solid #e8eee6}th{color:#607066;font-size:.78rem;text-transform:uppercase}td small{display:block;margin-top:3px;color:#738279}tbody tr{cursor:pointer}tbody tr:hover,.selected-row{background:#f2f8f1}.status.working,.status.online{color:#176533;background:#daf0dd}.status.stopped{color:#8a5908;background:#fff1cf}.status.offline{color:#6d3030;background:#f4dddd}.map-panel{display:grid;min-height:620px;grid-template-columns:1fr 320px;overflow:hidden}.map-grid{position:relative;min-height:620px;background:linear-gradient(90deg,rgba(23,33,27,.06) 1px,transparent 1px),linear-gradient(rgba(23,33,27,.06) 1px,transparent 1px),#dfead8;background-size:56px 56px}.map-grid:before{position:absolute;top:8%;right:8%;bottom:8%;left:8%;content:"";border:2px solid rgba(47,124,69,.22);border-radius:8px}.marker{position:absolute;z-index:1;width:48px;height:48px;padding:0;color:#fff;background:#226d3b;border:3px solid #ffffff;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 8px 20px #1428193d}.marker.active{background:#c46f18}.map-list{display:grid;align-content:start;gap:10px;padding:16px;border-left:1px solid #dde6db}.map-list button{display:grid;justify-items:start;min-height:68px;color:#17211b;background:#f8fbf6;border:1px solid #dde6db}.map-list button.active{border-color:#226d3b;box-shadow:inset 4px 0 #226d3b}.sensor-form{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr)) auto;gap:14px;align-items:end}.device-picker{max-width:420px}.calibration-panel{display:grid;gap:14px;padding-top:16px;border-top:1px solid #e2eadf}.calibration-panel h3{margin:0}.filter-panel{display:grid;gap:12px;padding:14px;background:#f8fbf6;border:1px solid #dde6db;border-radius:8px}.filter-panel h3{margin:0}.filter-grid{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:12px}label small{color:#77877b;font-weight:700}.segmented{display:inline-grid;grid-template-columns:repeat(2,48px);gap:4px;padding:4px;background:#eef4ec;border:1px solid #d8e4d5;border-radius:8px}.segmented button{min-height:34px;padding:6px;color:#31513c;background:transparent}.segmented button.active{color:#fff;background:#226d3b}.calibration-grid{display:grid;gap:10px}.calibration-row{display:grid;grid-template-columns:minmax(140px,1fr) minmax(140px,1fr) 44px;gap:10px;align-items:end}.icon-button{width:44px;min-height:44px;padding:0}.icon-button.danger{color:#7b2f2f;background:#f5e2e2}.secondary{width:fit-content;color:#1f5f35;background:#e4f1e4}.empty,.error{color:#8d2f2f}.empty{padding:24px}@media(max-width:1100px){.metrics{grid-template-columns:repeat(3,minmax(150px,1fr))}.sensor-form{grid-template-columns:repeat(2,minmax(180px,1fr))}.sensor-form button{width:fit-content}}@media(max-width:780px){.login-panel,.app-shell,.map-panel{grid-template-columns:1fr}.login-panel{align-items:stretch}.sidebar{min-height:auto}nav{grid-template-columns:repeat(4,minmax(0,1fr))}nav button,.logout{justify-content:center;padding-inline:8px}.logout{margin-top:0}.content{padding:16px}.metrics{grid-template-columns:repeat(2,minmax(130px,1fr))}.map-list{border-left:0;border-top:1px solid #dde6db}}@media(max-width:520px){.login-page{padding:14px}.login-panel h1{font-size:48px}.topbar,.section-head{align-items:flex-start;flex-direction:column}nav{grid-template-columns:repeat(2,minmax(0,1fr))}.metrics,.sensor-form{grid-template-columns:1fr}.calibration-row{grid-template-columns:1fr 1fr 44px}.filter-grid{grid-template-columns:1fr}.map-grid{min-height:420px}}@media(max-width:420px){.calibration-row{grid-template-columns:1fr}.icon-button{width:100%}}
