:root{--navy:#102f3b;--ink:#173a47;--muted:#70818a;--sea:#178b80;--line:#e1e9e9;--paper:#f4f7f6;--orange:#c66a36;--red:#b64747}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{border:1px solid #ccd9da;border-radius:8px;background:white;color:var(--ink);padding:10px 15px;cursor:pointer;font-weight:600}button:hover{background:#edf5f2}button:disabled{cursor:default;opacity:.5}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #2fa99b;outline-offset:3px}a{color:var(--sea);text-decoration:none}a:hover{text-decoration:underline}.primary{background:var(--sea);color:white;border-color:var(--sea)}.primary:hover{background:#11766d}.hidden{display:none!important}.sidebar{position:fixed;inset:0 auto 0 0;width:226px;background:var(--navy);color:white;padding:35px 23px;display:flex;flex-direction:column}.brand{display:grid;grid-template-columns:42px auto;align-items:center;color:white;font-size:30px;font-weight:700;letter-spacing:-1px;line-height:1.1}.brand img{grid-row:span 2}.brand span{font-size:9px;letter-spacing:2px;color:#91b0b8;line-height:2}.brand:hover{text-decoration:none}.boat-label{font-size:10px;letter-spacing:1.8px;color:#86a9b1;margin-top:58px}.boat-name{margin-top:8px;font-size:17px;font-weight:600;overflow-wrap:anywhere}nav{display:grid;gap:8px;margin-top:32px}nav a{display:flex;align-items:center;gap:14px;padding:12px 14px;color:#a9c1c7;border-radius:8px;font-size:18px}nav a span{font-size:14px}nav a.active{background:#244b56;color:white}nav a:hover{background:#204652;text-decoration:none}.badge{margin-left:auto;font-size:11px!important;background:#38616b;padding:1px 7px;border-radius:20px}.sidebar-foot{margin-top:auto;font-size:11px;color:#a7bec3;padding-top:28px}.sidebar-foot small{display:block;margin:10px 0;color:#7099a3}.dot{display:inline-block;width:7px;height:7px;background:#51c1a4;border-radius:50%;margin-right:6px}.text-button{border:0;background:none;color:#94b3bb;padding:8px 0;font-size:12px}main{margin-left:226px;padding:30px 38px;max-width:1600px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px;color:var(--sea)}header{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:15px 0 30px}h1{font-size:31px;letter-spacing:-1px;font-weight:650;line-height:1.25;margin:8px 0}h2{font-size:16px;margin:0 0 4px;font-weight:650}p{margin:3px 0 16px}header .header-status{display:flex;flex-direction:column;align-items:flex-end;gap:6px;font-size:11px;color:var(--muted)}.chip{display:inline-flex;align-items:center;gap:6px;background:#e0f0e9;color:#357960;border-radius:20px;padding:5px 11px;font-size:11px;font-weight:600}.chip.warn{background:#fae9d7;color:#9b5e24}.chip.bad{background:#f9e4e3;color:#a84444}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px}.stat,.panel{background:white;border:1px solid var(--line);border-radius:12px;box-shadow:0 3px 7px #133a4510}.stat{padding:21px 21px 18px;min-height:178px;display:flex;flex-direction:column}.stat-top{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:9px;font-weight:700;letter-spacing:1px}.metric-icon{font-size:24px;color:#79a99f;line-height:1}.metric{font-size:43px;letter-spacing:-1.5px;line-height:1.3;font-weight:600;margin-top:13px}.metric small{font-size:19px;color:#8c9a9f;margin-left:5px;font-weight:400}.meter{height:4px;background:#eaf1ee;border-radius:8px;margin:7px 0 10px}.meter span{display:block;background:#2c9e89;height:4px;border-radius:8px;width:0}.stat-bottom{display:flex;justify-content:space-between;gap:7px;color:var(--muted);font-size:10px;margin-top:auto;padding-top:13px}.pump-metric{font-size:27px;font-weight:600;letter-spacing:-.6px;margin-top:26px;color:var(--sea)}.pump-metric.running{color:var(--orange)}.overview-grid{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(270px,1fr);gap:22px;margin-top:24px}.panel{padding:24px}.panel-heading{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.panel-heading p,.panel>p{font-size:11px;color:var(--muted)}.panel-heading a{font-size:11px}.legend{font-size:10px;color:var(--muted);white-space:nowrap}.legend i{display:inline-block;width:7px;height:7px;background:var(--sea);border-radius:50%;margin-right:6px}.chart{height:220px;margin-top:9px}.chart svg{width:100%;height:100%;overflow:visible}.chart-footer{display:flex;justify-content:space-between;gap:12px;font-size:9px;color:#8b9b9e;border-top:1px solid #eef2f1;padding-top:13px}.chart-footer b{font-weight:500}.solar-row{padding:17px 0;border-bottom:1px solid #eef1f1;display:grid;grid-template-columns:1fr auto;gap:2px}.solar-row strong{font-size:12px}.solar-row .solar-w{font-size:22px;grid-row:span 2;align-self:center;letter-spacing:-.5px}.solar-row small{font-size:10px;color:var(--muted)}.solar-row .solar-w small{font-size:12px}.config-note{font-size:10px;color:var(--muted);padding-top:15px}.activity-row{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid #eef1f1;font-size:12px}.activity-row:last-child{border-bottom:0}.activity-symbol{width:30px;height:30px;flex:none;display:grid;place-items:center;border-radius:50%;background:#eaf3f0;color:var(--sea)}.activity-row small{display:block;color:var(--muted);font-size:10px}.empty{padding:30px 0;color:var(--muted);font-size:12px}.position-symbol{height:110px;display:grid;place-items:center;background:radial-gradient(circle,#deeeea 0, #deeeea 2px,transparent 3px);background-size:16px 16px;margin:4px 0 13px;border-radius:8px}.position-symbol span{font-size:47px;color:var(--sea);background:#f9fcfa;border:1px solid #cddfd8;border-radius:50%;width:65px;height:65px;text-align:center;line-height:59px}#position-coordinates{font-size:17px;font-variant-numeric:tabular-nums;font-weight:600}.position-panel a{font-size:11px}.demo-banner{background:#fff1dc;border:1px solid #e6cda5;border-radius:7px;padding:9px 12px;color:#98632b;font-size:11px}.demo-banner strong{letter-spacing:1px;font-size:9px;margin-right:10px}.demo-controls{margin-top:24px;background:#fdfbf6}.demo-controls p{font-size:11px;color:var(--muted)}.button-row{display:flex;flex-wrap:wrap;gap:9px;margin-top:16px}.button-row button{font-size:12px}.section-intro{max-width:800px;margin-bottom:25px}.section-intro h2{font-size:22px}.section-intro p,.muted{font-size:12px;color:var(--muted)}.device-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.device-editor{padding:22px}.device-editor h2{margin-bottom:13px}.device-editor .remove{color:var(--red);font-size:11px;padding:5px 8px;margin-top:12px}label{display:block;font-size:11px;font-weight:600;margin-top:15px}input:not([type=checkbox]),select{width:100%;padding:10px 11px;background:#fbfcfc;border:1px solid #cedcdb;border-radius:6px;color:var(--ink);margin-top:6px;font-size:13px}input[type=checkbox]{width:16px;height:16px;accent-color:var(--sea)}label.check{display:flex;align-items:center;gap:9px;font-size:12px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.settings-grid .panel>p{margin-top:14px}.rule-panel{margin:22px 0}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:12px;margin-top:20px;text-align:left}th{color:var(--muted);font-weight:500;font-size:10px}th,td{padding:13px 10px;border-bottom:1px solid var(--line)}td:first-child{width:70px}td input[type=number]{width:100px}td small{display:block;color:var(--muted);font-size:10px}.spaced-heading{margin:28px 0 12px}.alert-item{padding:17px 0;border-bottom:1px solid var(--line);display:flex;gap:13px;align-items:flex-start}.alert-item:last-child{border:0}.alert-item .chip{flex-shrink:0}.alert-item strong{display:block;font-size:13px}.alert-item p{color:var(--muted);font-size:11px;margin-bottom:0}.toast{position:fixed;right:25px;bottom:25px;z-index:10;background:var(--navy);color:white;padding:14px 20px;border-radius:8px;box-shadow:0 5px 20px #0003;max-width:440px;font-size:13px}.toast.error{background:#893f39}.error-banner{padding:12px;background:#fbe9e5;border-radius:8px;color:var(--red);margin-bottom:20px}.login{min-height:100vh;display:grid;place-items:center;padding:20px}.login form{max-width:410px;width:100%;padding:36px}.login h1{font-size:28px;margin-top:22px}.login p{color:var(--muted);font-size:13px}.login button{width:100%;margin-top:22px}footer{font-size:10px;color:#8b9e9f;margin-top:30px;padding-top:20px;border-top:1px solid var(--line)}footer span{float:right}@media(min-width:1450px){main{padding:40px 55px}.metric{font-size:48px}.chart{height:250px}}@media(max-width:1120px){main{padding:22px}.sidebar{width:195px;padding:30px 17px}main{margin-left:195px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.device-grid{grid-template-columns:1fr}.overview-grid{grid-template-columns:minmax(0,1.5fr) minmax(240px,1fr)}h1{font-size:28px}.legend{display:none}}@media(max-width:760px){.sidebar{position:static;width:auto;height:auto;display:block;padding:16px 18px}.brand{width:150px;font-size:25px}.brand img{width:30px;height:30px}.brand span{font-size:8px}.boat-label,.boat-name,.sidebar-foot{display:none}nav{display:flex;margin-top:18px;gap:5px;justify-content:space-between}nav a{padding:8px 9px;gap:6px;font-size:15px}nav a span{font-size:11px}.badge{display:none}main{margin:0;padding:19px 16px}header{margin:20px 0;gap:10px}h1{font-size:24px}.eyebrow{font-size:8px;letter-spacing:1.4px}.header-status{max-width:110px;text-align:right}header .header-status{font-size:9px}.stats-grid{gap:10px}.stat{padding:16px;min-height:159px}.stat-top{font-size:8px}.metric{font-size:35px}.stat-bottom{font-size:9px;flex-wrap:wrap}.pump-metric{font-size:23px}.overview-grid,.settings-grid{grid-template-columns:1fr;gap:17px;margin-top:17px}.panel{padding:20px}.chart{height:200px}.demo-banner{font-size:10px}.chart-footer{font-size:8px}.chart-footer span:last-child{max-width:130px;text-align:right}.toast{bottom:15px;left:15px;right:15px}footer{font-size:9px}.alert-item{flex-direction:column;gap:6px}.device-editor{padding:20px}}
