:root{--ink:#183d34;--text:#253b34;--muted:#65756d;--paper:#f7f6f0;--surface:#fff;--line:#dce3db;--gold:#d1ac4a;--soft:#eef3ed;--red:#9e302d;--radius:10px;--space:8px;color-scheme:light;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.5;color:var(--text);background:var(--paper)}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;border:1px solid transparent;border-radius:7px;padding:10px 16px;font-weight:600;min-height:44px;background:var(--soft);color:var(--ink)}button:hover{background:#e0e9df}button:disabled{cursor:wait;opacity:.5}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #b48b21;outline-offset:3px}input,select{min-height:46px;width:100%;padding:10px 12px;border:1px solid #aabbb0;border-radius:7px;color:var(--text);background:#fff}input[readonly]{background:var(--paper)}label{display:block;font-weight:600;margin:16px 0 6px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(26px,3vw,36px);line-height:1.18;letter-spacing:-.8px;margin-bottom:10px;text-wrap:balance}h2{font-size:23px;letter-spacing:-.4px;margin-bottom:0}h3{font-size:18px;margin:0}.eyebrow{font-size:11px;font-weight:750;letter-spacing:1.7px;margin-bottom:8px;color:var(--muted)}.muted{color:var(--muted);font-size:14px}.mono{font-family:Consolas,ui-monospace,monospace;font-variant-numeric:tabular-nums}.primary{background:var(--ink);color:#fff}.primary:hover{background:#0c2b23}.quiet{border-color:var(--line);background:transparent}.danger{background:#f9eeea;color:var(--red);border-color:#e7c6be}.danger:hover{background:#f4dfd8}.danger-text{color:var(--red)}.icon-button{font-size:24px;padding:0 10px;min-width:44px}.form-error{color:var(--red);min-height:22px;margin:12px 0}.mark{display:inline-grid;place-items:center;width:44px;height:44px;background:var(--gold);color:#192f27;font-size:17px;font-weight:800;letter-spacing:-1px;flex-shrink:0}.skip{position:fixed;top:-100px;left:16px;padding:10px;background:white;z-index:100}.skip:focus{top:12px}[hidden]{display:none!important}
.application{display:grid;grid-template-columns:258px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--ink);color:#fff;padding:32px 20px;display:flex;flex-direction:column;gap:32px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:12px;color:white;text-decoration:none;font-size:19px;font-weight:650}.brand small{display:block;font-size:9px;color:#bdcfc4;letter-spacing:1.7px;margin-top:2px}.sidebar-title{display:flex;align-items:center;justify-content:space-between;text-transform:uppercase;letter-spacing:1.5px;font-size:11px;color:#bbd0c3}.sidebar-title button{background:#275145;color:#fff}.sidebar nav{display:grid;align-content:start;gap:8px;overflow:auto;margin-top:-20px}.device-link{display:block;border-left:3px solid transparent;border-radius:0 6px 6px 0;padding:14px 12px;text-decoration:none;color:#e2ece5;overflow-wrap:anywhere}.device-link:hover{background:#234b3f}.device-link[aria-current=page]{background:#2b5344;border-left-color:var(--gold)}.device-link small{display:flex;justify-content:space-between;gap:8px;color:#bdcfc4;font-size:11px;margin-top:6px}.sidebar-bottom{margin-top:auto;border-top:1px solid #456052;padding-top:20px;font-size:12px;overflow-wrap:anywhere}.sidebar-bottom button{color:#dce6df;display:block;padding-left:0;font-size:12px;border:0}.sidebar-bottom button:hover{background:transparent;color:white}main{padding:40px clamp(22px,4vw,64px) 60px;max-width:1600px;width:100%;min-width:0}.page-header,.section-heading{display:flex;justify-content:space-between;align-items:center;gap:24px}.page-header h1{overflow-wrap:anywhere}.connection{display:grid;justify-items:end;gap:6px;flex-shrink:0}.badge{border-radius:4px;background:#e6e8e2;color:#47584f;font-size:12px;font-weight:750;padding:5px 10px}.badge.online{background:#e0eee2;color:#1e5d35}.badge.revoked{background:#f5e1dc;color:var(--red)}.device-tools{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0 28px}.device-tools button{font-size:13px;min-height:38px;padding:7px 12px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0 0 36px;padding:24px 0;border-block:1px solid var(--line);gap:20px}.metrics dt{font-size:12px;color:var(--muted);margin-bottom:5px}.metrics dd{font-size:20px;font-weight:650;margin:0;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.notice{padding:14px 16px;border-left:3px solid var(--gold);background:#f0eee2;font-size:14px;margin:20px 0}.section-heading{margin-bottom:16px}.point-picker{display:flex;align-items:center;gap:10px;max-width:50%}.point-picker label{margin:0;font-size:13px}.point-picker select{min-width:170px;max-width:300px}.control-section{background:var(--surface);padding:28px;border:1px solid var(--line);border-radius:var(--radius)}.control-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 0 22px}.control-bar label{font-size:13px;margin:0}.control-bar input{width:85px}.control-bar button{margin-left:auto;font-size:12px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);font-weight:650;padding:12px 0;background:var(--paper)}td{padding:16px 0;border-bottom:1px solid var(--line)}td:first-child,th:first-child{padding-left:12px}td:last-child,th:last-child{padding-right:12px}.align-right{text-align:right}td strong{display:block;font-weight:650}td small{color:var(--muted);font-size:11px}.state{font-size:12px;font-weight:650}.state.on{color:#28703e}.action-cell{display:flex;justify-content:flex-end;gap:8px}.action-cell button{font-size:12px;min-width:82px}.routine-heading{display:flex;justify-content:space-between;align-items:center;margin:28px 0 8px}.routine-heading button{font-size:12px}.routines{display:grid;gap:8px}.routine{display:flex;justify-content:space-between;align-items:center;padding:12px;background:var(--paper);border-radius:6px;gap:16px}.routine span{min-width:0;overflow-wrap:anywhere}.routine button{font-size:12px;flex-shrink:0}.history-section{margin-top:36px}.commands{list-style:none;padding:0;margin:20px 0}.commands li{display:grid;grid-template-columns:100px 1fr auto;gap:16px;padding:16px 0;border-top:1px solid var(--line);align-items:start;font-size:13px}.commands time{color:var(--muted);font-variant-numeric:tabular-nums}.commands small{display:block;color:var(--muted);margin-top:4px;overflow-wrap:anywhere}.commands .badge{font-size:10px;white-space:nowrap}.feedback{font-size:14px;color:var(--red);margin-top:20px}.feedback:empty{display:none}.empty{padding:60px 0;max-width:620px}.empty p{max-width:56ch}.empty ol{padding-left:22px;margin:30px 0;color:var(--muted)}.empty li{margin:12px 0}
.login-shell{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}.login-brand{background:var(--ink);color:#fff;padding:clamp(40px,7vw,100px);display:flex;flex-direction:column;justify-content:center}.login-brand .mark{margin-bottom:56px}.login-brand .eyebrow{color:#cbbb80}.login-brand h1{font-size:clamp(36px,4vw,58px);line-height:1.12;max-width:12ch}.login-brand p:not(.eyebrow){color:#c6d4c9;max-width:38ch;margin-top:16px}.brand-rule{height:3px;width:50px;background:var(--gold);margin:32px 0}.login-brand small{color:#bbcebf}.login-form{width:min(100%,420px);margin:auto;padding:40px}.login-form h2{font-size:30px;margin-bottom:28px}.login-form .primary{width:100%}.login-form .muted{margin-top:22px;font-size:12px}dialog{border:1px solid var(--line);border-radius:var(--radius);padding:28px;width:min(560px,calc(100% - 24px));color:var(--text);max-height:calc(100dvh - 36px);overflow:auto;overscroll-behavior:contain}dialog::backdrop{background:#10271f99}.dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px}.dialog-heading h2{margin:0}.copy-field{display:flex;gap:8px}.copy-field button{flex-shrink:0}dialog .primary{margin-top:12px;width:100%}dialog p{font-size:14px}dialog .notice{font-size:12px}.mono[readonly]{font-size:14px;min-width:0}
@media(max-width:900px){.application{grid-template-columns:210px minmax(0,1fr)}.sidebar{padding:24px 14px}.brand{font-size:16px;gap:8px}main{padding:30px 22px}.control-section{padding:20px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.control-bar button{margin-left:0}.page-header{align-items:flex-start}.connection{max-width:140px;text-align:right}.commands li{grid-template-columns:70px 1fr}.commands li>.badge{grid-column:2;justify-self:start}}
@media(max-width:620px){.application{display:block}.sidebar{position:static;height:auto;padding:18px 16px;gap:18px}.brand .mark{width:36px;height:36px}.sidebar-title{margin-top:4px}.sidebar nav{display:flex;overflow:auto;gap:8px;margin:0;padding-bottom:4px}.device-link{flex:0 0 180px;border-left:0;border-bottom:3px solid transparent;border-radius:6px}.device-link[aria-current=page]{border-left:0;border-bottom-color:var(--gold)}.sidebar-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:12px}.sidebar-bottom button{padding:0;min-height:32px;white-space:nowrap}main{padding:24px 16px 40px;padding-bottom:max(40px,env(safe-area-inset-bottom))}.page-header{display:block}.connection{max-width:none;justify-items:start;text-align:left;grid-template-columns:auto 1fr;align-items:center;margin:16px 0}.metrics{padding:20px 0;margin-bottom:24px}.metrics dd{font-size:17px}.section-heading{flex-wrap:wrap;gap:16px}.point-picker{max-width:100%;width:100%}.point-picker select{max-width:none;width:100%}.control-section{padding:16px}.control-bar{gap:10px}.control-bar label{flex:1 0 70%}.control-bar button{width:100%}.equipment{min-width:430px}.login-shell{display:block}.login-brand{padding:30px}.login-brand .mark{margin-bottom:22px}.login-brand h1{font-size:32px}.login-brand p:not(.eyebrow),.brand-rule,.login-brand small{display:none}.login-form{padding:28px 24px}.commands li{gap:8px}.empty{padding:20px 0}dialog{padding:22px}}
@media(prefers-reduced-motion:no-preference){button,a{transition:background-color .15s ease,color .15s ease}dialog[open]{animation:appear .15s ease-out}@keyframes appear{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}}
.feedback.info{color:var(--ink)}
@media(max-width:620px){.device-tools button,.sidebar-bottom button{min-height:44px}.equipment{min-width:0}.equipment thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.equipment tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:18px 0;border-bottom:1px solid var(--line)}.equipment td{padding:0!important;border:0;min-width:0}.equipment td:first-child{overflow-wrap:anywhere}.equipment td:nth-child(2){align-self:center;max-width:120px}.equipment td:last-child{grid-column:1/-1}.equipment .action-cell{justify-content:stretch;margin-top:4px}.equipment .action-cell button{flex:1}}
