:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#f3f5f7;--panel:#fff;--ink:#16202a;--muted:#65717d;--line:#dbe1e6;--brand:#174d73;--brand-dark:#103750;--accent:#2a7eaa;--online:#177245;--offline:#b42318;--warning-bg:#fff4e5}*{box-sizing:border-box}body{background:var(--background);color:var(--ink);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}button,.button{background:var(--brand);color:#fff;cursor:pointer;font:inherit;border:0;border-radius:6px;padding:.7rem 1rem;font-weight:650;display:inline-block}button:hover,.button:hover{background:var(--brand-dark)}button:disabled{cursor:not-allowed;opacity:.45}.button.secondary{color:#273541;background:#dfe5ea}.danger-button{background:var(--offline)}input,select,textarea{width:100%;color:var(--ink);font:inherit;background:#fff;border:1px solid #b9c3cc;border-radius:5px;margin-top:.35rem;padding:.65rem}textarea{resize:vertical}label{color:#37424d;font-size:.9rem;font-weight:600;display:block}.topbar{color:#fff;background:#102b3d;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:1.2rem;min-height:64px;padding:0 3vw;display:grid}.topbar-brand,.platform-brand,.context-brand,.organisation-title{align-items:center;gap:.65rem;min-width:0;display:flex}.platform-brand{color:#fff;font-size:1.7rem}.platform-wordmark{white-space:nowrap;align-items:baseline;gap:.35rem;display:inline-flex}.platform-wordmark strong{letter-spacing:.01em;font-weight:750}.platform-wordmark>span{font-size:.82em;font-weight:400}.topbar nav{flex-wrap:wrap;justify-content:center;justify-self:center;gap:1.4rem;display:flex}.topbar-account{justify-self:end;align-items:center;gap:1rem;display:flex}.context-brand{border-left:1px solid #ffffff40;padding-left:1rem;font-size:.82rem}.platform-brand img{object-fit:contain;max-width:140px;max-height:45px}.context-brand img{object-fit:contain;max-width:100px;max-height:32px}.button-link{background:0 0;padding:0}.button-link:hover{background:0 0;text-decoration:underline}.page-shell{max-width:1240px;margin:0 auto;padding:2.5rem 1.25rem 5rem}.page-heading,.section-heading,.card-title-row{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.eyebrow{color:var(--accent);letter-spacing:.1em;text-transform:uppercase;margin-bottom:.35rem;font-size:.75rem;font-weight:800}.muted{color:var(--muted)}.panel,.site-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:1.25rem;box-shadow:0 1px 2px #14212c0d}.site-grid,.channel-grid,.input-grid{grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:1rem;display:grid}.site-card:hover{border-color:#8ba2b4;box-shadow:0 3px 12px #14212c17}.offline-card{border-left:5px solid var(--offline)}.status{color:#fff;text-transform:uppercase;border-radius:999px;padding:.35rem .65rem;font-size:.78rem;font-weight:800;display:inline-block}.status.online{background:var(--online)}.status.offline{background:var(--offline)}.status.neutral{background:#68737d}.summary{flex-wrap:wrap;gap:1rem 2.5rem;margin:0;display:flex}.summary div,.channel-states div{gap:.15rem;display:grid}dt{color:var(--muted);text-transform:uppercase;font-size:.75rem;font-weight:700}dd{margin:0}.output-summary{border-top:1px solid var(--line);color:#475460;margin:1rem 0 0;padding-top:1rem;font-size:.88rem}.alarm-indicator,.error{color:var(--offline);font-weight:700}.alarm-banner,.override-warning{background:var(--warning-bg);border-left:4px solid #d97706;margin:1rem 0;padding:.8rem 1rem}.device-summary{margin-bottom:2rem}.controller-overview{align-items:start;gap:1rem;margin-bottom:1.5rem;display:grid}.controller-overview .device-summary,.controller-overview .connectivity-history{align-self:start;height:auto;margin-bottom:0}.controller-overview .operational-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem .75rem;margin:0;display:grid}.controller-overview .operational-status dd{overflow-wrap:break-word;font-size:.92rem;line-height:1.25}.controller-overview .operational-status dt{font-size:.68rem}.history-summary-row{align-items:center;gap:.75rem;display:flex}.history-toggle{flex:none;margin-left:auto;padding:.28rem .6rem;font-size:.75rem}.history-note{margin:0;font-size:.75rem}.uptime-unknown{stroke:#78716c;stroke-dasharray:4 3;stroke-width:2px}.uptime-running{stroke:#15803d;stroke-width:2px}.uptime-restart{stroke:#b45309;stroke-width:2px}@media (min-width:1100px){.controller-overview{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch}.controller-overview .device-summary{align-self:stretch;min-height:0;padding:0;position:relative}.controller-overview .operational-status{position:absolute;inset:1.25rem;overflow:auto}.controller-overview .connectivity-history{align-self:start;height:auto}}@media (max-width:700px){.controller-overview .operational-status{grid-template-columns:1fr}.operational-status-gap{display:none}.history-summary-row{flex-direction:column;align-items:flex-start}.history-toggle{margin-left:0}}.device-section{margin-bottom:2.5rem}.customer-context{background:var(--site-brand);color:#fff;border-radius:8px;align-items:center;gap:2rem;margin-bottom:1.5rem;padding:1.1rem 1.25rem;display:flex}.customer-context>div{align-items:center;gap:.8rem;display:flex}.customer-context img{object-fit:contain;background:#fff;border-radius:5px;max-width:140px;max-height:52px;padding:.3rem}.customer-context span{opacity:.75;text-transform:uppercase;font-size:.72rem}.customer-context h2{margin:0}.site-primary-brand{flex:1}.site-context-brand{border-left:3px solid var(--site-accent);padding-left:1rem;font-size:.9rem}.site-context-brand>div{align-items:baseline;gap:10px;display:flex}.channel-card h3,.input-card h3{margin:.05rem 0 .15rem}.input-function{color:var(--muted);margin:.3rem 0 0}.channel-card,.input-card{padding:.85rem 1rem}.channel-description{margin-top:.25rem}.input-card .card-title-row{align-items:center}.channel-states{grid-template-columns:1fr 1fr;gap:.8rem;margin:.85rem 0 .15rem;display:grid}.channel-details,.input-details{border-top:1px solid var(--line);margin-top:.65rem}.channel-details summary,.input-details summary,.engineering-section summary{color:var(--brand);cursor:pointer;font-weight:700}.channel-details summary,.input-details summary{justify-content:space-between;align-items:center;padding-top:.55rem;font-size:.86rem;list-style:none;display:flex}.channel-details summary::-webkit-details-marker{display:none}.input-details summary::-webkit-details-marker{display:none}.disclosure-chevron{font-size:1.25rem;line-height:1;transition:transform .12s;transform:rotate(0)}details[open]>summary .disclosure-chevron{transform:rotate(90deg)}.state-on{color:var(--online);font-size:1.2rem}.disabled-card{opacity:.75}.button-group{gap:.5rem;display:flex}.button-group button{color:#273541;background:#dfe5ea;min-width:64px}.button-group button.selected-on{background:var(--online);color:#fff}.button-group button.selected-off{background:var(--offline);color:#fff}.channel-card-header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.channel-card-header>:first-child{flex:1;min-width:0}.channel-control{flex:0 0 168px;width:168px}.channel-control .button-group{justify-content:flex-end}.command-message{color:var(--muted);text-align:right;width:100%;margin-top:.35rem;line-height:1.2;display:block}.command-message.is-empty{display:none}.events-section{margin-top:2.5rem}.parent-back-link{margin:0 0 .85rem}.event-history-link{margin:.9rem 0 0}.event-device-name{overflow-wrap:anywhere;min-width:0}.firmware-assignment{border-top:1px solid var(--line);margin-top:1rem;padding-top:.2rem}.firmware-assignment-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.8rem;margin-top:14px;display:flex}.event-list{padding:0}.event-row,.data-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(150px,.65fr) minmax(0,2fr);align-items:center;gap:1rem;padding:.9rem 1.2rem;display:grid}.event-list>.event-row{grid-template-columns:minmax(11rem,15rem) minmax(0,1.6fr) minmax(9rem,.85fr);align-items:start}.event-summary,.event-actor,.event-when{min-width:0}.event-summary strong,.event-actor strong{display:block}.event-actor{text-align:right}.event-list .event-details{grid-column:1/-1;min-width:0}.data-row{grid-template-columns:repeat(4,minmax(0,1fr))}.event-row:last-child,.data-row:last-child{border-bottom:0}.event-row time,.event-row span,.data-row span{color:var(--muted);font-size:.86rem}.event-row small{color:var(--muted);margin-top:.2rem;font-size:.76rem;display:block}.event-details{margin-top:.45rem}.event-details summary{color:var(--accent);cursor:pointer;font-size:.85rem}.event-details ul{margin:.45rem 0;padding-left:1.2rem}.event-details p{color:var(--muted);margin:.65rem 0 0;font-size:.8rem}.engineering-section{gap:1rem;margin-top:2.5rem;display:grid}.engineering-section h2{margin-bottom:0}.details-summary,.details-content{margin-top:1rem}.subnav{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:1.5rem;margin:-.5rem 0 2rem;padding-bottom:.8rem;display:flex}.subnav a{color:var(--brand);font-weight:700}.form-section{margin-bottom:1.5rem}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.form-actions{align-items:center;gap:.75rem;margin-top:1.5rem;display:flex}.fleet-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-bottom:1rem;display:grid}.summary-card{background:#e8f4f7;border-color:#c8e0e6;justify-content:space-between;display:flex}.summary-card strong{font-size:1.8rem}.summary-card.healthy{background:#eaf6ef;border-color:#c8e5d4}.summary-card.fault{background:#faeceb;border-color:#edcecb}.directory-filters{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:end;gap:1rem;margin-bottom:1.5rem;display:grid}.assignment-panel{border:1px solid var(--line);border-radius:6px;margin:1.5rem 0;padding:1rem}.assignment-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1rem;display:grid}.mqtt-credential-actions{margin-top:14px}.firmware-admin-form{flex-direction:column;gap:14px;display:flex}.firmware-form-actions{display:flex}.firmware-file-field{min-width:0;position:relative}.firmware-file-label{color:#37424d;font-size:.9rem;font-weight:600;display:block}.firmware-dropzone{color:var(--muted);cursor:pointer;text-align:center;border:1px dashed #8ba2b4;border-radius:8px;flex-direction:column;align-items:center;gap:.25rem;margin-top:.35rem;padding:1.1rem 1rem;font-weight:500;display:flex}.firmware-dropzone.is-dragover{border-color:var(--accent);color:var(--ink);background:#edf2f6}.firmware-dropzone strong{color:var(--ink);overflow-wrap:anywhere}.firmware-file-input{opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.firmware-release-list{gap:1rem;display:grid}.firmware-release-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:.85rem;min-width:0;padding:1.25rem;display:flex;box-shadow:0 1px 2px #14212c0d}.firmware-release-heading h3{margin-bottom:.2rem;font-size:1.35rem}.firmware-release-type{overflow-wrap:anywhere;margin:0}.firmware-release-meta{gap:.55rem;margin:0;display:grid}.firmware-release-meta div{grid-template-columns:6.5rem minmax(0,1fr);gap:.15rem .75rem;display:grid}.firmware-release-meta dt{color:var(--muted);font-size:.86rem}.firmware-release-meta dd{overflow-wrap:anywhere;min-width:0;margin:0}.firmware-sha{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.86rem}.firmware-release-actions{flex-wrap:wrap;gap:.8rem;display:flex}.site-brand-row,.heading-actions,.row-actions{align-items:center;gap:.8rem;display:flex}.site-brand-row{justify-content:space-between;margin-bottom:.8rem}.primary-site-brand,.contextual-site-brand{align-items:center;gap:.45rem;font-size:.78rem;display:flex}.contextual-site-brand{color:var(--muted)}.primary-site-brand img,.contextual-site-brand img{object-fit:contain;max-width:80px;max-height:28px}.controller-id-summary{border-top:1px solid var(--line);margin-bottom:0;padding-top:.8rem;font-size:.85rem}.controller-summary-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem;display:grid}.controller-summary-card:hover{border-color:var(--accent)}.compact-channel-list,.compact-gate-list{gap:.5rem;display:grid}.compact-channel-list>div,.compact-gate-list>div{justify-content:space-between;align-items:center;display:flex}.compact-state{color:#fff;text-transform:uppercase;border-radius:999px;padding:.2rem .55rem;font-size:.72rem}.compact-state.on{background:var(--online)}.compact-state.off{background:var(--offline)}.compact-state.disabled{background:#68737d}.state-healthy{color:var(--online);font-weight:700}.state-fault{color:var(--offline);font-weight:700}.state-muted{color:var(--muted);font-weight:700}.notice-banner{border-left:4px solid var(--accent);background:#edf2f6;margin-bottom:1rem;padding:.8rem 1rem}.text-link,.row-actions a{color:var(--brand);font-weight:700}.section-spacer{margin-top:2rem}.device-directory-row{grid-template-columns:1.2fr 1fr 1fr 1fr 1.2fr}.site-directory-row{grid-template-columns:1.2fr 1fr .8fr 1.2fr .7fr}.device-directory-row small,.organisation-directory-row small{color:var(--muted);display:block}.user-directory-row{grid-template-columns:1fr 1.4fr 1fr .7fr .7fr .4fr}.organisation-directory-row{grid-template-columns:1.5fr 1fr auto;align-items:center;gap:1rem;margin-bottom:.75rem;display:grid}.organisation-directory-identity{align-items:center;gap:.8rem;display:flex}.organisation-directory-identity img{object-fit:contain;max-width:100px;max-height:42px}.danger-zone{border-left:5px solid var(--offline);margin-top:2rem}.field-help,.field-error{margin-top:.3rem;font-size:.78rem;display:block}.field-help{color:var(--muted)}.field-error{color:var(--offline)}fieldset.form-section{gap:1rem;min-width:0;margin:0;display:grid}.site-assignments{border:1px solid var(--line);border-radius:5px;margin:0 0 1rem}.site-assignments .checkbox-label{margin:.6rem 0}.organisation-tree{margin-top:1.5rem}.organisation-children{border-left:2px solid var(--line);margin-left:1.5rem;padding-left:1.5rem}.organisation-logo-preview{object-fit:contain;max-width:140px;max-height:52px}.organisation-summary{margin-bottom:1rem}.provisioning-number-panel{max-width:540px}.provisioning-number-panel form{border-top:1px solid var(--line);gap:.8rem;margin-top:1rem;padding-top:1rem;display:grid}.provisioning-number-current{margin-bottom:.4rem}.provisioning-number-panel button{justify-self:start}.provisioning-number-input,.provisioning-number-value{letter-spacing:.08em;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:1.1rem;font-weight:700}.provisioning-number-input{text-transform:uppercase;max-width:10rem}.provisioning-number-value{margin-top:.4rem;display:block}.field-label{color:#37424d;font-size:.9rem;font-weight:600;display:block}.device-admin-form{margin-bottom:2rem}.channel-editor{border:1px solid var(--line);border-radius:6px;gap:.75rem;min-width:0;padding:1rem;display:grid}fieldset legend{color:var(--brand);background:#fff;padding:0 .4rem;font-weight:800}.checkbox-label{align-items:center;gap:.6rem;margin-top:1.3rem;display:flex}.checkbox-label input{width:auto;margin:0}.login-page{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.login-page>div{width:100%;max-width:420px}.authentication-branding{justify-content:center;margin-bottom:1.5rem;display:flex}.authentication-branding img{object-fit:contain;width:auto;max-width:min(220px,70vw);height:auto;max-height:96px;display:block}.authentication-heading{text-align:center}.authentication-heading h1{margin-bottom:0}.login-form{gap:1rem;margin-top:1.5rem;display:grid}.login-link{text-align:center;margin-top:1rem}.login-link a{color:var(--brand);font-weight:700}.empty{color:var(--muted);text-align:center;padding:3rem}@media (max-width:700px){.topbar{flex-wrap:wrap;align-items:flex-start;gap:.75rem 1.2rem;padding-top:.8rem;padding-bottom:.8rem;display:flex}.topbar-brand{flex:1}.topbar-account{margin-left:auto}.topbar nav{order:3;justify-content:flex-start;width:100%}.user-name,.context-brand{display:none}.form-grid,.assignment-grid,.data-row,.event-row,.event-list>.event-row,.fleet-summary,.organisation-directory-row,.firmware-release-meta div{grid-template-columns:1fr}.event-actor{text-align:left}}@media (max-width:480px){.channel-card-header{flex-wrap:wrap}.channel-control{flex-basis:100%;width:100%}.channel-control .button-group button{flex:1}.command-message{text-align:left}.channel-states{grid-template-columns:1fr}}.connectivity-badge{justify-items:end;gap:.35rem;display:grid}.connectivity-sparkline,.connectivity-graph{width:100%;height:auto;overflow:visible}.connectivity-sparkline{width:5.75rem}.connectivity-sparkline polyline,.connectivity-graph polyline{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:square}.connectivity-on{stroke:#15803d}.connectivity-off{stroke:#b91c1c}.connectivity-frame{fill:#fafaf9;stroke:#d6d3d1}.connectivity-axis{fill:#57534e;font-size:11px}.connectivity-graph{aspect-ratio:640/120;max-height:7.5rem;display:block}.connectivity-history{gap:.75rem;display:grid}.connectivity-periods{gap:.5rem;display:flex}.connectivity-stats{flex-wrap:wrap;gap:.75rem 1.25rem;margin:0;display:flex}
