
:root{--paper:#F7F9F7;--header:#E5EEE5;--ink:#18342E;--muted:#6C7C74;--green:#176D50;--blue:#2865A8;--red:#B33030;--amber:#995C10;--line:#dfe7e2;--white:#fff}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font:14px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}button,select,input{font:inherit;color:inherit}button,select{cursor:pointer}button{touch-action:manipulation}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--blue);outline-offset:3px}button{border:1px solid var(--line);background:white;border-radius:8px;padding:9px 14px;font-weight:600}button:hover{background:#edf3ee}button.active,.primary{background:var(--green);color:white;border-color:var(--green)}svg{vertical-align:middle}.icon{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.brand{display:flex;gap:11px;align-items:center;font-size:23px;letter-spacing:-1px;font-weight:750}.brand em{font-style:normal;color:var(--green)}.mark{background:var(--green);color:white;display:grid;place-items:center;width:36px;height:36px;border-radius:10px}.mark .icon{width:25px;height:25px}header{height:82px;padding:0 36px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:white}.header-right{display:flex;align-items:center;gap:18px}.demo-pill{background:#fbf0dc;border:1px solid #e8d3ac;color:var(--amber);border-radius:20px;padding:4px 10px;font-size:11px;font-weight:700;letter-spacing:.5px}.user{font-size:12px;color:var(--muted)}.banner{text-align:center;background:#eff4ef;border-bottom:1px solid var(--line);padding:7px 15px;color:#4d665a;font-size:12px}.page{max-width:1460px;margin:auto;padding:30px 36px 24px}.eyebrow{text-transform:uppercase;font-size:10px;letter-spacing:1.7px;color:var(--green);font-weight:750}.intro{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:23px}h1{font-size:29px;line-height:1.2;letter-spacing:-1px;margin:6px 0}p{margin:6px 0;color:var(--muted)}.course-select{border:1px solid var(--line);background:white;padding:10px 32px 10px 13px;border-radius:9px;font-weight:600;max-width:100%}.intro-tools{display:flex;gap:9px;align-items:center}.summary{display:grid;grid-template-columns:repeat(2,1fr);gap:15px;margin-bottom:25px}.stat{padding:17px 20px;border:1px solid var(--line);background:white;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.stat-label{font-size:12px;color:var(--muted)}.stat-value{font-size:27px;font-weight:650;letter-spacing:-.7px}.stat-value small{font-size:13px;color:var(--muted);font-weight:400;letter-spacing:0}.stat-icon{width:39px;height:39px;border-radius:11px;display:grid;place-items:center;background:#edf5ef;color:var(--green)}.stat-icon.amber{background:#fbf0dc;color:var(--amber)}.tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);margin-bottom:21px}.tabs button{border:0;background:transparent;padding:0 0 12px;border-radius:0;color:var(--muted);font-size:13px}.tabs button.active{color:var(--green);box-shadow:0 2px var(--green)}.tabs button span{margin-left:6px;border-radius:4px;background:#e5eee5;padding:1px 5px;font-size:10px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:20px;align-items:start}.panel{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 17px;border-bottom:1px solid var(--line)}.toolbar h2{font-size:15px;margin:0;letter-spacing:-.2px}.filters{display:flex;gap:4px;background:var(--paper);border-radius:7px;padding:3px}.filters button{border:0;background:transparent;padding:5px 9px;font-size:11px;white-space:nowrap}.filters button.active{background:white;color:var(--green);box-shadow:0 1px 4px #18342e14}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}th{text-align:left;background:#f2f6f2;color:#60756a;font-size:10px;font-weight:650;letter-spacing:.65px;text-transform:uppercase;padding:11px 12px;white-space:nowrap}td{padding:0 12px;height:43px;border-bottom:1px solid #edf1ee;white-space:nowrap}tr:last-child td{border-bottom:0}tbody tr.selected{background:#eef5ef}tbody tr:hover{background:#f4f8f4}.hole-btn{padding:5px 0;border:0;background:transparent;display:flex;align-items:center;gap:8px;min-width:68px;font-size:12px}.hole-btn:hover{background:transparent}.hole-no{font-weight:700}.pin{color:var(--green)}.pin.out{color:var(--amber)}.pin.out .icon{transform:rotate(45deg);transform-origin:50% 75%}.speed{font-weight:650;font-size:15px}.bearing{color:var(--muted);font-size:11px}.direction{display:inline-block;margin-right:4px;color:var(--green);font-size:15px;transform-origin:center}.badge{font-size:10px;display:inline-flex;align-items:center;gap:5px;padding:3px 7px;border-radius:5px;background:#eef5ef;color:var(--green)}.badge.warn{color:var(--amber);background:#fbf1df}.badge.off{background:#eef0f2;color:#68737a}.badge.low{color:var(--red);background:#fbeeee}.dot{width:5px;height:5px;background:currentColor;border-radius:50%;display:inline-block}.battery{display:flex;align-items:center;gap:6px;color:var(--muted)}.battery.low{color:var(--red)}.age{color:var(--muted);font-size:11px}.age.old{color:var(--amber)}.table-foot{padding:12px 17px;font-size:10px;color:var(--muted);background:#fafcf9;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:8px}.detail-header{padding:21px 22px 17px;background:linear-gradient(120deg,#edf4ec,#f7faf6);border-bottom:1px solid var(--line)}.detail-top{display:flex;align-items:center;justify-content:space-between}h2{margin:4px 0;font-size:22px;letter-spacing:-.5px}.close{display:none}.detail-sub{font-size:11px;color:var(--muted)}.detail-body{padding:20px 22px}.wind-main{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.big-speed{font-size:44px;line-height:1.15;font-weight:600;letter-spacing:-2px}.big-speed small{font-size:13px;letter-spacing:0;color:var(--muted);font-weight:400}.compass{width:76px;height:76px;border:1px solid var(--line);border-radius:50%;position:relative;display:grid;place-items:center;color:var(--green);background:#fafcf9}.compass small{position:absolute;top:2px;font-size:8px;color:var(--muted)}.compass .arrow{font-size:35px;line-height:1}.wind-caption{font-size:11px;color:var(--muted);margin-top:5px}.kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;border-top:1px solid var(--line);padding-top:16px}.kv-grid div{font-size:11px;color:var(--muted)}.kv-grid strong{display:block;font-size:13px;color:var(--ink);font-weight:600;margin-top:3px}.section-title{margin:21px 0 11px;display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:650}.periods{display:flex;gap:2px}.periods button{padding:3px 7px;border:0;font-size:10px;font-weight:500}.periods button.active{background:#e5eee5;color:var(--green)}.chart-tabs{display:flex;gap:14px;margin-bottom:7px}.chart-tabs button{font-size:11px;border:0;padding:0 0 4px;border-radius:0;color:var(--muted);background:white}.chart-tabs button.active{color:var(--green);border-bottom:2px solid var(--green)}.chart{width:100%;height:auto;display:block;overflow:visible}.chart-note{font-size:10px;color:var(--muted);margin-top:6px}.event{font-size:11px;padding:9px 0;display:flex;gap:12px;border-bottom:1px solid #edf1ee}.event time{font-variant-numeric:tabular-nums;color:var(--muted);width:33px}.technical{margin-top:18px;border-top:1px solid var(--line);padding-top:13px}.technical summary{font-size:11px;font-weight:650;cursor:pointer;color:var(--blue)}.technical dl{font-size:11px;display:grid;grid-template-columns:1fr 1fr;gap:6px}.technical dt{color:var(--muted)}.technical dd{margin:0;text-align:right;font-family:ui-monospace,monospace;font-size:10px;overflow-wrap:anywhere}.location-link{display:block;margin-top:13px;font-size:11px;color:var(--blue);text-decoration:underline;text-underline-offset:3px}.empty{padding:40px;text-align:center;color:var(--muted)}.settings{max-width:760px}.settings-section{padding:22px 24px;border-bottom:1px solid var(--line)}.settings-section h2{font-size:16px;margin:0 0 5px}.settings-section p{font-size:12px;margin-bottom:17px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:14px 0}.setting-row label{font-size:12px}.setting-row select{padding:8px 12px;border:1px solid var(--line);border-radius:7px;max-width:220px;background:white}.notice{background:#eef4f8;color:#3d5e7a;padding:12px 15px;border-radius:8px;font-size:12px}.search{padding:7px 10px;border:1px solid var(--line);border-radius:7px;max-width:170px;min-width:0}.diagnostic-filters{display:flex;gap:8px;flex-wrap:wrap}.diagnostic-filters select{padding:7px 9px;border:1px solid var(--line);border-radius:7px;background:white;font-size:11px}.footer{display:flex;justify-content:space-between;margin-top:22px;font-size:10px;color:var(--muted)}.screen-note{font-size:10px;color:var(--muted)}[hidden]{display:none!important}.backdrop{display:none}.mobile-only{display:none}.technical-column{display:table-cell}body.staff .technical-column,body.staff .technical{display:none}body.staff #diag-tab{display:none}@media(min-width:1500px){td{height:45px}}@media(max-width:1190px){.workspace{grid-template-columns:minmax(0,1fr) 330px}.landscape-extra{display:none}.detail-body{padding:18px}.page{padding:25px 24px}.toolbar{padding:14px 12px}td,th{padding-left:10px;padding-right:10px}}@media(orientation:portrait),(max-width:759px){.workspace{display:block}.detail{display:none;position:fixed;inset:0 0 0 auto;width:min(420px,100%);z-index:20;overflow:auto;border-radius:0}.detail.open{display:block}.backdrop.open{display:block;position:fixed;inset:0;background:#142d2566;z-index:19}.close{display:block;border:0;padding:4px 8px;background:transparent;font-size:22px}.landscape-extra{display:table-cell}.page{padding:22px}.user{display:none}}@media(max-width:600px){header{height:65px;padding:0 17px}.brand{font-size:21px}.header-right{gap:9px}.header-right button{font-size:0;padding:8px}.header-right button .icon{font-size:14px}.page{padding:22px 13px 18px}.intro{align-items:start;margin-bottom:17px;gap:8px}.intro-tools{max-width:155px}.course-select{font-size:11px;padding:9px 4px;width:150px}h1{font-size:24px}.intro p{font-size:11px;max-width:180px}.eyebrow{font-size:9px}.summary{gap:7px;margin-bottom:20px}.stat{padding:12px 10px;display:block}.stat-value{font-size:23px;margin-top:4px}.stat-value small{font-size:10px}.stat-label{font-size:10px}.stat-icon{display:none}.tabs{gap:22px;margin-bottom:15px}.tabs button{font-size:12px}.toolbar{gap:6px;padding:12px 10px}.toolbar h2{font-size:13px}.filters button{font-size:10px;padding:5px 6px}.landscape-extra,.technical-column,.portrait-hide{display:none!important}td,th{padding-left:9px;padding-right:9px}td{height:47px}.speed{font-size:14px}.bearing{font-size:10px}.badge{font-size:9px;padding:3px 5px}.hole-btn{min-width:51px;gap:6px}.table-foot{font-size:9px;padding:10px}.banner{font-size:10px}.footer{font-size:9px}.settings-section{padding:18px}.setting-row{gap:10px}.setting-row select{max-width:170px;font-size:12px}.mobile-only{display:initial}.diagnostic-filters{max-width:100%}#diagnostics .toolbar{flex-wrap:wrap}.detail-header{padding-top:21px}.screen-note{display:none}}
.more-filters{font-size:11px;color:var(--muted)}.more-filters summary{cursor:pointer;padding:6px}.more-filters label{margin-top:8px}.more-filters p{font-size:10px;margin:6px}.more-filters[open]{padding:0 5px 5px}#preferences-dialog{border:1px solid var(--line);border-radius:14px;padding:0;width:min(620px,calc(100% - 28px));max-height:90dvh;color:var(--ink);background:white;box-shadow:0 20px 80px #18342e26}#preferences-dialog::backdrop{background:#142d2566}#preferences-dialog .settings{max-width:none;border:0}.preferences-head{padding:19px 24px;display:flex;justify-content:space-between;align-items:center;background:var(--header);border-bottom:1px solid var(--line)}.preferences-head h2{font-size:22px;margin:2px 0}.preferences-head button{font-size:22px;line-height:1;background:transparent;border:0;padding:7px}.message-toolbar{padding:13px 17px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}.message-buttons{display:flex;gap:5px;flex-wrap:wrap}.message-buttons button{font-size:12px;padding:7px 12px}.message-buttons button.active{background:var(--green);color:white}.route-badge{font-size:10px;border:1px solid #ccdbd2;border-radius:5px;padding:2px 6px;white-space:nowrap;color:var(--green);display:inline-block;margin-top:5px}.route-badge.repeated{color:var(--blue);border-color:#cadcec;background:#edf4fa}.diagnostic-filters label{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px}.diagnostic-filters select:disabled{opacity:.5;cursor:default}#message-count{font-size:11px;color:var(--muted)}.message-cell{white-space:normal;min-width:200px;max-width:310px}.technical dd{min-width:0}#sensor-search{max-width:220px}@media(max-width:600px){.message-toolbar{padding:12px 10px}.message-buttons{gap:4px}.message-buttons button{font-size:11px;padding:6px 9px}.header-right button{font-size:11px;padding:7px}.brand{font-size:19px;gap:7px}.demo-pill{font-size:9px;padding:4px 7px}.preferences-head{padding:17px 18px}.diagnostic-filters{gap:8px;align-items:center}.message-toolbar .diagnostic-filters{width:100%}#sensor-search{flex:1;max-width:none;min-width:120px}}
.bearing-calculation{margin-top:13px;padding:12px;border:1px solid var(--line);border-radius:8px;background:#f4f8f4;font-size:11px}.bearing-calculation>strong{font-size:11px}.bearing-calculation p{font-size:10px;line-height:1.5;margin:6px 0}.bearing-equation{font-variant-numeric:tabular-nums;font-size:12px;line-height:1.8;color:var(--ink)}.bearing-equation strong{color:var(--green)}.controller-health{background:white;border:1px solid var(--line);border-radius:10px;margin:-7px 0 22px;font-size:12px}.controller-health>summary{cursor:pointer;padding:13px 17px;display:flex;align-items:center;justify-content:space-between;gap:12px;list-style:none}.controller-health>summary::-webkit-details-marker{display:none}.health-caption{font-size:11px;color:var(--muted);margin-left:10px}.health-action{font-size:11px;color:var(--green);white-space:nowrap}.health-action:after{content:' +';font-size:16px}.controller-health[open] .health-action:after{content:' −'}.controller-body{border-top:1px solid var(--line);padding:12px 17px 18px}.health-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:12px}.health-grid>div{font-size:10px;color:var(--muted)}.health-grid strong{display:block;font-size:12px;color:var(--ink);margin-top:4px}.freshness{display:block;font-size:10px;color:var(--muted);font-weight:400;line-height:1.5;margin-top:3px}.freshness.old,.drain{color:var(--amber)}.old-reading{color:var(--muted)}.state-explanation{padding:9px 11px;background:#f2f6f2;border-radius:7px;font-size:11px;color:#526b5e;margin-bottom:16px}.graph-legend{font-size:9px;color:var(--muted);margin-top:2px}.battery-sort{font-size:11px;display:flex;gap:7px;align-items:center}.battery-sort select{border:1px solid var(--line);border-radius:7px;padding:7px;background:white;font-size:11px}.diagnostic-actions{display:flex;align-items:center;gap:12px}.diagnostic-actions button{font-size:11px;padding:7px 10px}#share-dialog{border:1px solid var(--line);padding:0;border-radius:12px;width:min(580px,calc(100% - 28px));color:var(--ink)}#share-dialog::backdrop{background:#142d2566}#share-url{width:100%;padding:10px;margin:9px 0 13px;border:1px solid var(--line);border-radius:7px;font-size:12px}#share-dialog h2{font-size:18px}#share-status{font-size:11px}#share-dialog label{font-size:11px}@media(max-width:700px){.health-grid{grid-template-columns:1fr 1fr}.health-caption{display:block;margin:3px 0 0}.controller-health>summary{padding:12px}.diagnostic-actions{width:100%;justify-content:space-between}.toolbar:has(.diagnostic-actions){flex-wrap:wrap}.tabs{gap:18px}}

.auth-card{max-width:440px;margin:8vh auto;background:white;border:1px solid var(--line);border-radius:14px;padding:30px}.auth-card label{display:block;margin:15px 0;font-size:12px}.auth-card input,.admin-form input,.admin-form select{display:block;width:100%;padding:10px;border:1px solid var(--line);border-radius:7px;margin:6px 0 12px}.connection-error{color:var(--red)}.admin-form label{display:block;font-size:11px}.admin-form{margin-top:18px}.admin-form output{display:block;white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;margin-top:12px}.live-empty{padding:30px;text-align:center;color:var(--muted)}.event-json{font:10px/1.4 ui-monospace,monospace;white-space:pre-wrap;max-width:400px;overflow-wrap:anywhere}.admin-only[hidden]{display:none!important}

/* Preferences: scoped layout; operational dashboard styles stay unchanged. */
#preferences-dialog{width:min(800px,calc(100% - 32px));max-height:90dvh;overflow:hidden}
#preferences-dialog .settings{display:flex;flex-direction:column;max-height:calc(90dvh - 2px)}
#preferences-dialog .preferences-head{flex:none;background:white;padding:22px 28px 18px}
#preferences-dialog .preferences-head h2{font-size:24px;letter-spacing:-.6px}
#preferences-dialog .preferences-head button{width:36px;height:36px;border-radius:8px;color:var(--muted)}
#preferences-dialog .preferences-head button:hover{background:var(--paper)}
#preferences-dialog .settings-nav{display:flex;gap:6px;padding:0 24px;background:white;border-bottom:1px solid var(--line);flex:none;overflow-x:auto}
#preferences-dialog .settings-nav button{flex:none;border:0;border-radius:0;background:transparent;color:var(--muted);padding:14px 12px;font-size:13px;white-space:nowrap;border-bottom:3px solid transparent}
#preferences-dialog .settings-nav button[aria-pressed="true"]{color:var(--green);border-bottom-color:var(--green)}
#preferences-dialog .settings-content{overflow-y:auto;overscroll-behavior:contain;min-height:330px;background:#fafcfb}
#preferences-dialog [data-settings-pane][hidden]{display:none!important}
#preferences-dialog .settings-section{padding:26px 28px 30px;border:0}
#preferences-dialog .settings-heading{margin-bottom:24px}
#preferences-dialog .settings-heading h2{font-size:19px;margin:0 0 6px}
#preferences-dialog .settings-heading p{margin:0;font-size:13px;line-height:1.6}
#preferences-dialog .setting-row{padding:14px 0;margin:0;border-bottom:1px solid var(--line);gap:20px}
#preferences-dialog .setting-row label{font-size:13px;font-weight:600}
#preferences-dialog .setting-row select{width:250px;max-width:55%;min-height:42px;font-size:13px}
#preferences-dialog #saved-note{margin:18px 0 0;font-size:12px}
#preferences-dialog .admin-form{margin:0}
#preferences-dialog .admin-form label{font-size:12px;font-weight:600;margin:0 0 18px;line-height:1.5}
#preferences-dialog .admin-form input,#preferences-dialog .admin-form select{margin:7px 0 0;padding:11px 12px;min-height:44px;background:white;font-size:13px;font-weight:400;max-width:100%;min-width:0}
#preferences-dialog .admin-form select[multiple]{min-height:112px}
#preferences-dialog .settings-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px}
#preferences-dialog .admin-form .chart-note{font-weight:400;font-size:12px;margin:-8px 0 22px;line-height:1.6}
#preferences-dialog #configuration-status{margin:20px 0 16px;padding:12px 14px;border-left:3px solid var(--green);background:#edf4ef;color:#486356}
#preferences-dialog .admin-form details{border:1px solid var(--line);border-radius:8px;background:white;padding:12px 14px}
#preferences-dialog .admin-form details summary{font-size:12px;font-weight:600;cursor:pointer}
#preferences-dialog .admin-form details label{margin:16px 0 0}
#preferences-dialog .admin-form output{margin-top:12px;font-size:12px}
#preferences-dialog .admin-form output:empty{display:none}
#preferences-dialog .settings-subheading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
#preferences-dialog .settings-subheading h3{font-size:14px;margin:0}
#preferences-dialog .settings-help{font-size:12px;margin:0 0 16px}
#preferences-dialog .settings-divider{border-top:1px solid var(--line);padding-top:24px;margin-top:26px}
#preferences-dialog .controller-request{background:white;border:1px solid var(--line);border-radius:9px;padding:16px;margin-top:10px;overflow-wrap:anywhere}
#preferences-dialog .controller-request strong{font:600 13px ui-monospace,monospace}
#preferences-dialog .controller-request p{font-size:12px;margin:6px 0 12px}
#preferences-dialog .controller-request button{font-size:12px}
#preferences-dialog #pending-controllers>p,#preferences-dialog #registered-controllers>p{background:white;border:1px dashed #cbd8d0;border-radius:8px;padding:20px;font-size:13px;margin:12px 0}
@media(max-width:600px){
 #preferences-dialog{width:calc(100% - 16px);max-height:94dvh}
 #preferences-dialog .settings{max-height:calc(94dvh - 2px)}
 #preferences-dialog .preferences-head{padding:18px 18px 14px}
 #preferences-dialog .settings-nav{padding:0 10px;gap:0}
 #preferences-dialog .settings-nav button{padding:12px 10px;font-size:12px}
 #preferences-dialog .settings-section{padding:22px 18px}
 #preferences-dialog .setting-row{align-items:flex-start;flex-direction:column;gap:8px}
 #preferences-dialog .setting-row select{width:100%;max-width:none;font-size:14px}
 #preferences-dialog .settings-fields{grid-template-columns:1fr 1fr;gap:12px}
 #preferences-dialog .admin-form input,#preferences-dialog .admin-form select{font-size:16px}
}

#preferences-dialog .settings-heading-actions{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
#preferences-dialog .settings-heading-actions button{flex:none;font-size:12px;white-space:nowrap}
#preferences-dialog .add-course-panel{padding:20px;border:1px solid var(--line);border-radius:10px;background:white}
#preferences-dialog .add-course-panel h3{margin:0 0 20px;font-size:16px}
#preferences-dialog .settings-signin{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}
#preferences-dialog .settings-signin p{margin:0;font-size:12px}
#preferences-dialog .settings-signin button{white-space:nowrap}
@media(max-width:400px){#preferences-dialog .settings-heading-actions{flex-wrap:wrap}#preferences-dialog .settings-signin{align-items:flex-start;flex-direction:column}}

#preferences-dialog .settings-hours-title{font-size:13px;margin:0 0 14px}
/* Account and People controls are scoped to Preferences. */
#preferences-dialog .settings-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
#preferences-dialog .account-security{margin-top:26px;padding-top:22px;border-top:1px solid var(--line)}
#preferences-dialog .account-security h3{font-size:14px;margin:0 0 12px}
#preferences-dialog .account-security>p{font-size:13px;line-height:1.6;margin:10px 0 16px}
#preferences-dialog .account-security .admin-form{margin-top:20px;padding:20px;border:1px solid var(--line);border-radius:9px;background:white}
#preferences-dialog .admin-form[hidden],#preferences-dialog .person-editor[hidden]{display:none!important}
#preferences-dialog .course-checks{border:1px solid var(--line);border-radius:8px;padding:14px;margin:0 0 20px;min-width:0}
#preferences-dialog .course-checks[hidden]{display:none}
#preferences-dialog .course-checks legend{font-size:12px;font-weight:600;padding:0 5px}
#preferences-dialog .course-checks .course-check{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:400;margin:0;padding:7px 0}
#preferences-dialog .course-check input{display:inline-block;flex:none;min-height:0;width:17px;height:17px;margin:0;accent-color:var(--green)}
#preferences-dialog .person-row{display:flex;align-items:center;justify-content:space-between;gap:16px;background:white;border:1px solid var(--line);border-radius:9px;padding:16px;margin:10px 0}
#preferences-dialog .person-summary{min-width:0;overflow-wrap:anywhere}
#preferences-dialog .person-summary strong{font-size:14px;font-weight:600}
#preferences-dialog .person-summary p{margin:4px 0 0;font-size:13px}
#preferences-dialog .person-self{font-weight:400;color:var(--muted)}
#preferences-dialog .person-editor h3{font-size:16px;margin:0 0 20px}
#preferences-dialog .person-row button{font-size:12px;white-space:nowrap}
#preferences-dialog #person-password-fields{margin-top:16px}
#preferences-dialog #people-note{font-size:13px}
#preferences-dialog #people-note:empty,#preferences-dialog #account-note:empty{display:none}
#preferences-dialog input[name="declination"]{font-variant-numeric:tabular-nums}
.demo-pill{font-size:12px;letter-spacing:0;text-transform:none;white-space:nowrap}
.demo-pill.website-online{background:#edf5ef;border-color:#cddfd3;color:var(--green)}
.controller-health,.controller-health .chart-note,.controller-health p,.health-caption,.health-action{font-size:13px;line-height:1.6}
.controller-health>summary{padding:14px 18px;align-items:center}
.controller-health>summary>span:first-child{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.health-caption{margin:0;font-weight:400}
.controller-body{padding:16px 18px 18px}
.controller-body>p{margin:0 0 8px}
.controller-body>p:last-child{margin-bottom:0}
.health-grid{row-gap:16px;column-gap:20px;margin:0 0 16px}
.health-grid>div{font-size:12px;line-height:1.6}
.health-grid strong{font-size:13px;line-height:1.6;margin-top:4px;overflow-wrap:anywhere}
.login-alternative{font-size:13px;margin-top:18px}
.login-alternative a{color:var(--green)}
@media(max-width:600px){#preferences-dialog .person-row{align-items:flex-start;flex-direction:column}#preferences-dialog .account-security .admin-form{padding:16px}.controller-health>summary{padding:13px 14px}.controller-body{padding:14px}.controller-health>summary>span:first-child{gap:4px 10px}.health-action{font-size:12px}.demo-pill{font-size:11px}}

.demo-notice{display:flex;justify-content:center;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 20px;background:#fff4dd;border-bottom:1px solid #ead4a8;color:#72511b;font-size:13px;line-height:1.6}.demo-notice[hidden]{display:none}.demo-notice strong{font-size:13px}.demo-notice span{color:#72511b}@media(max-width:600px){.demo-notice{gap:2px;flex-direction:column;align-items:flex-start;padding:10px 17px;font-size:12px}}
@media(max-width:600px){header .brand{font-size:18px;gap:6px}header .mark{width:32px;height:32px}header .header-right{gap:6px}header .header-right button{font-size:10px;padding:8px;white-space:nowrap}header .demo-pill{font-size:10px;padding:3px 6px}}
@media(max-width:600px){header .header-right button .icon{display:none}}

/* Colour and emphasis for the course monitor; data and status rules are unchanged. */
:root{--paper:#f1f6fa;--header:#e5f5ef;--ink:#153c46;--muted:#526d78;--green:#087552;--blue:#2168ad;--red:#b82945;--amber:#9a5908;--line:#d7e4e9}
body{background:linear-gradient(180deg,#e9f3f8 0,#f5f9fb 620px)}
header{background:#133e48;border-bottom:0}
header .brand{color:#fff}header .brand em{color:#70e9c2}header .mark{background:#078260}
header .header-right button{background:#ffffff0f;border-color:#ffffff40;color:#fff}
header .header-right button:hover{background:#ffffff24}
header .demo-pill.website-online{background:#d9fced;border-color:#a6e7cc;color:#086242}
.banner{background:#e4eff8;border-bottom-color:#cfdfec;color:#355d76}
.intro h1{color:#153c46}.eyebrow{color:#087552}
.stat{border-color:#d3e3ea;box-shadow:0 3px 12px #163e4807;background:linear-gradient(150deg,#effbf5,#fff 75%)}
.stat:nth-child(2){background:linear-gradient(150deg,#fff8e6,#fff 75%)}
.stat:nth-child(3){background:linear-gradient(150deg,#edf6ff,#fff 75%)}
.stat-value{color:#087552}.stat:nth-child(2) .stat-value{color:#975b0b}.stat:nth-child(3) .stat-value{color:#2168ad}
.stat-icon{background:#d9f5e8;color:#087552}.stat-icon.amber{background:#ffedbd;color:#975b0b}
.stat:nth-child(3) .stat-icon{background:#dfedfc;color:#2168ad}
.tabs button.active{color:#087552;box-shadow:0 3px #0b9b70}.tabs button span{background:#dfebf8;color:#365e8b}
.panel,.controller-health{border-color:#d5e3e9;box-shadow:0 3px 14px #173a4806}
.toolbar{background:linear-gradient(100deg,#edf5fa,#fff);border-bottom-color:#d8e6ed}
th{background:#e9f1f6;color:#3d5f70}
#holes tr:hover{background:#edf9f3}
#holes tr.selected{background:#dcf6e9;box-shadow:inset 4px 0 #0b9b70}
#holes .speed{color:#087552;font-weight:700}#holes .speed.old-reading{color:#697d85}
.direction{color:#2168ad}.bearing{color:#496575}
.badge{border:1px solid transparent;font-weight:600;padding:3px 7px}
.badge.status-reporting{background:#def6e9;color:#086342;border-color:#bae7d1}
.badge.status-stale{background:#fff0c9;color:#8b5200;border-color:#efcf85}
.badge.status-offline{background:#ffe8ec;color:#a3233e;border-color:#efbdc7}
.badge.status-sleeping{background:#e8efff;color:#435e9c;border-color:#cbd8f3}
.badge.status-hibernating{background:#f1e7ff;color:#6d3d9f;border-color:#ddc8f2}
.badge.status-unknown{background:#eaf1f5;color:#506c7a;border-color:#d4e1e7}
.filters{background:#e5eef3}.filters button.active{color:#086342;box-shadow:0 1px 5px #163e4820}
.detail-header{background:linear-gradient(120deg,#14555a,#133e48);border-bottom-color:#164c52;color:#fff}
.detail-header .eyebrow{color:#8af0cc}.detail-header h2{color:#fff}.detail-header .detail-sub{color:#d0e7e8}
.detail-header .route-badge{background:#ffffff12;border-color:#ffffff40;color:#e3fff3}
.detail-header .route-badge.repeated{background:#e3efff;border-color:#b9d4f4;color:#205c99}
.detail-header .close{color:#fff}.big-speed{color:#087552}
.state-explanation{background:#eaf3f8;border-left:3px solid #6fa5cb;color:#3c5e73}
.airflow-indicator{display:flex;flex-direction:column;align-items:center;gap:6px;flex:none}
.compass{background:#edf6ff;border:2px solid #bed7ee;color:#2168ad}
.compass small{color:#416a8f}.airflow-caption{font-size:11px;font-weight:600;color:#416a8f;line-height:1.3}
.chart path[fill="none"]:not(.hour-guide),#battery-rows svg path:not(.hour-guide){stroke:#0b9167}
.controller-health>summary{background:#edf5fa;border-radius:9px}
.controller-health[open]>summary{border-radius:9px 9px 0 0}
#preferences-dialog .preferences-head{background:linear-gradient(110deg,#e8f8ef,#f1f7fc)}
#preferences-dialog .settings-nav button[aria-pressed="true"]{background:#eaf7f0;border-bottom-color:#0b9b70}
.demo-notice{background:#fff0c9;border-bottom-color:#e9c66c;color:#79500d}.demo-notice span{color:#79500d}
@media(max-width:600px){.badge{padding:3px 5px}.airflow-indicator{gap:5px}}

/* Consistent hierarchy and concise sensor details. */
#detail .section-title{font-size:13px;margin:22px 0 12px}
#detail .chart-tabs button,#detail .periods button{font-size:12px}
#detail .wind-caption,#detail .freshness,#detail .kv-grid>div,#detail .graph-legend,#detail .chart-note,#detail .technical summary{font-size:12px;line-height:1.5}
#detail .graph-legend{color:var(--muted);margin-top:5px}
#detail .kv-grid{border-top:0;padding-top:6px;grid-template-columns:1fr 1fr}
#detail .kv-grid>div:first-child{grid-column:1/-1}
#detail .technical{border-top:0;padding-top:0;margin-top:20px}
#detail .technical p,#detail .technical .event{font-size:12px}

/* Shared table typography and restrained diagnostic disclosures. */
[hidden]{display:none!important}
#live-indicator{font-size:13px;color:#fff}
th{text-transform:none;letter-spacing:0;font-size:12px;font-weight:600}
th small{font:inherit}
.message-cell,.message-cell summary,.message-tags{font-size:12px;line-height:1.5}
.message-cell details{margin-top:6px}
.message-cell summary{cursor:pointer;color:var(--blue);font-weight:500}
.message-tags{color:var(--muted);margin-top:4px}
#diagnostics .chart-note,#diagnostics .table-foot,#diagnostics #message-count,#diagnostics .diagnostic-filters label,#diagnostics .diagnostic-filters select,#diagnostics .more-filters{font-size:12px}

.battery-landscape{display:none}
@media(orientation:landscape){.battery-landscape{display:table-cell}}

.controller-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.controller-card{border:1px solid var(--line);border-radius:9px;padding:18px;background:#fff;min-width:0}
.controller-card h3{margin:0 0 16px;font-size:14px;font-weight:600;display:flex;flex-wrap:wrap;gap:6px 12px}
.controller-card h3 span{font-weight:500;color:var(--muted);overflow-wrap:anywhere}
.controller-card .health-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0}
.controller-card .health-grid>div{font-size:12px}
.controller-card .health-grid strong{font-size:13px;overflow-wrap:anywhere}
.controller-card details{margin-top:18px}
.controller-card details summary,.forwarding-details summary{font-size:12px;color:var(--blue);cursor:pointer}
.controller-card details .health-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:16px}
.forwarding-details{margin-top:18px}.forwarding-details p{font-size:12px}
@media(max-width:900px){.controller-cards{grid-template-columns:1fr}}
@media(max-width:400px){.controller-card .health-grid{grid-template-columns:1fr 1fr}}

/* Common interface hierarchy, including forms, empty states and disclosures. */
.toolbar h2,#preferences-dialog .settings-heading h2{font-size:16px;line-height:1.4;letter-spacing:0}
.banner,.stat-label,.detail-sub,.wind-caption,.freshness,.kv-grid>div,.chart-note,.table-foot,.footer,.location-link,.event,.technical summary,.technical dl,.technical dd,.bearing-calculation p,.graph-legend,.empty,.live-empty,.chart-empty{font-size:12px;line-height:1.5}
.tabs button,.filters button,.message-buttons button,.diagnostic-actions button,.search,.battery-sort,.battery-sort select,.diagnostic-filters input,.diagnostic-filters select{font-size:13px}
.badge,.age,.bearing{font-size:12px}
.event-json{font-size:12px;line-height:1.5}
.chart-empty{padding:40px 12px;text-align:center;color:var(--muted)}
.compact-button{font-size:12px;padding:4px 8px}
#preferences-dialog .settings-signin,#preferences-dialog .account-security,#preferences-dialog .settings-divider{border-top:0;padding-top:0}
#preferences-dialog .settings-section p,#preferences-dialog .admin-form label,#preferences-dialog .admin-form output,#preferences-dialog .admin-form details summary,#preferences-dialog .settings-help,#preferences-dialog .course-checks legend{font-size:13px;line-height:1.5}
#preferences-dialog .settings-actions button,#preferences-dialog .person-row button,#preferences-dialog .settings-heading-actions button,#preferences-dialog .controller-request button{font-size:13px}
#preferences-dialog .controller-request strong{font-family:inherit;font-size:14px}
#preferences-dialog #pending-controllers>p,#preferences-dialog #registered-controllers>p{border-style:solid}
#preferences-dialog #configuration-status{border-left:0;background:transparent;padding:0}
.auth-card{width:calc(100% - 32px)}
.auth-card label,.auth-card p,.auth-card .login-alternative{font-size:13px;line-height:1.5}
.auth-card input{font-size:16px;min-height:44px}
.auth-card button{font-size:14px;min-height:44px}
#share-dialog p,#share-dialog label,#share-dialog input,#share-dialog button{font-size:13px}
@media(max-width:600px){header .header-right button{font-size:12px}.filters button{font-size:12px}.table-foot{flex-wrap:wrap}.stat-label{font-size:12px}.tabs button{font-size:13px}}
/* Keep Preferences navigation and Close visible on short landscape screens. */
#preferences-dialog .settings-content{min-height:0;flex:1 1 auto}
@media(max-width:600px){#preferences-dialog .settings-nav{padding:0 8px}#preferences-dialog .settings-nav button{flex:1;padding:12px 6px;font-size:12px}}
.activity-filters{display:flex;gap:14px;flex-wrap:wrap}.activity-filters label{font-size:12px;display:flex;gap:8px;align-items:center}.activity-filters select,.activity-filters input{padding:8px;border:1px solid var(--line);border-radius:7px;background:white;min-width:0;font-size:13px}.activity-help{font-size:12px;padding:12px 17px;margin:0}.pintop-activity{margin-top:22px}.pintop-activity h3{font-size:13px;margin:0 0 12px}.activity-state{display:grid;grid-template-columns:1fr 1fr;gap:12px}.activity-state span,.activity-state small{display:block;font-size:12px;color:var(--muted)}.activity-state strong{display:block;font-size:13px;margin:4px 0}.activity-unconfirmed{font-size:12px;color:var(--amber)}.pintop-activity button,.view-event{font-size:12px;margin-top:10px;padding:6px 9px}.view-event{display:block;color:var(--blue);background:transparent;border:0;padding:2px 0;margin-top:6px;font-weight:500}.event-message{font-size:14px;margin:0 0 18px}.event-fields{margin:0}.event-fields>div{display:grid;grid-template-columns:minmax(100px,1fr) minmax(0,2fr);gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.event-fields dt{font-size:13px;color:var(--muted);overflow-wrap:anywhere}.event-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere;white-space:pre-wrap}.event-fields .event-fields>div{grid-template-columns:1fr;padding:8px 0;gap:4px}.event-fields .event-fields>div:last-child{border:0}.original-event{margin-top:20px}.original-event summary{cursor:pointer;font-size:13px;color:var(--blue)}.original-event h3{font-size:13px}.original-event .event-json{max-width:none}.tabs{gap:22px}#activity .table-foot{white-space:normal}@media(max-width:600px){.tabs{gap:18px}.tabs button{font-size:12px}.activity-filters{width:100%;gap:10px}.activity-filters label{flex:1}.activity-filters input,.activity-filters select{max-width:160px}#activity .toolbar{flex-wrap:wrap}.event-fields>div{grid-template-columns:minmax(90px,1fr) minmax(0,1.5fr);gap:8px}.activity-state{grid-template-columns:1fr}}
.event-field-group{margin:18px 0}.event-field-group h3{font-size:14px;margin:0 0 6px}.event-fields .event-fields{border-left:2px solid var(--line);padding-left:12px}@media(max-width:600px){#activity td{white-space:normal}.event-fields>div{grid-template-columns:minmax(100px,1fr) minmax(0,1.3fr)}}
/* Activity uses the same header/filter/table hierarchy as Diagnostics. */
#activity-count{font-size:12px;color:var(--muted)}.activity-range-caption{padding:10px 17px;font-size:12px;color:var(--muted);background:#fafcfd}.activity-badge{display:inline-block;border-radius:5px;padding:3px 8px;font-size:12px;font-weight:600}.activity-active,.activity-battery-awake{background:#def6e9;color:#086342}.activity-inactive{background:#e8efff;color:#435e9c}.activity-battery-sleep{background:#f1e7ff;color:#6d3d9f}.staff .activity-device{display:none}.activity-event-buttons button{font-size:12px}.inline-data{position:sticky;left:12px;width:min(820px,calc(100vw - 72px));max-width:100%;padding:18px 20px;margin:8px 0;background:#f5f9fb;border:1px solid var(--line);border-radius:9px;white-space:normal}.message-expansion td,.activity-expansion td{height:auto;padding:4px 12px 12px}.inline-data .event-fields dt,.inline-data .event-fields dd{white-space:normal}.inline-range{margin:16px;border:1px solid var(--line);border-radius:9px;background:#fff;overflow:hidden}.inline-range .preferences-head h2,.expanded-graph-panel .preferences-head h2{font-size:16px;margin:0}.inline-range .preferences-head button,.expanded-graph-panel .preferences-head button{font-size:22px;line-height:1;border:0;background:transparent;padding:4px 8px}.range-dialog-body{padding:16px 20px}.range-dialog-body>p{font-size:12px;margin:0 0 14px}.range-calendars{display:grid;grid-template-columns:1fr 1fr;gap:28px}.range-calendar h3{font-size:14px;margin:0 0 10px}.calendar-month{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.calendar-month strong{font-size:13px}.calendar-month button{font-size:20px;padding:1px 10px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.calendar-grid>span{text-align:center;font-size:11px;color:var(--muted);padding:5px 0}.calendar-day{padding:8px 0;border:0;border-radius:6px;font-size:13px;font-weight:500;background:transparent}.calendar-day.outside-month{color:#91a2a9}.calendar-day.active{color:#fff}.calendar-selected{font-size:12px;color:var(--muted);margin:12px 0}.calendar-time{display:flex;align-items:end;gap:8px;margin-bottom:18px}.calendar-time label{font-size:12px;display:flex;flex-direction:column;gap:5px}.calendar-time select{font-size:13px;padding:8px 12px;border:1px solid var(--line);border-radius:7px;background:white}.calendar-time>span{padding-bottom:8px}#activity-range-error{color:var(--red)}.chart-preview{position:relative;cursor:zoom-in;padding-top:24px}.expand-chart{position:absolute;right:0;top:0;border:0;background:transparent;color:var(--blue);font-size:12px;padding:0;font-weight:500}.battery-graph{border:0;padding:0;background:transparent;cursor:zoom-in}.battery-graph:hover{background:#eaf3f8}.expanded-graph-panel{margin-bottom:22px;scroll-margin-top:12px}.graph-body{padding:18px 22px}.graph-controls{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:18px}.graph-controls .message-buttons button{font-size:12px}.expanded-graph-panel .chart{cursor:default}.expanded-graph-panel .graph-legend{font-size:12px}@media(max-width:700px){.range-calendars{grid-template-columns:1fr;gap:16px}.inline-range{margin:12px}.range-dialog-body{padding:14px}.inline-data{width:calc(100vw - 64px);padding:14px;left:8px}.graph-body{padding:14px}.graph-controls{gap:10px}.graph-controls .message-buttons button{padding:6px 9px}.activity-filters{align-items:center}.activity-filters label{flex:none}.activity-filters button{font-size:12px}.activity-range-caption{font-size:12px}.calendar-day{min-height:36px}}
/* Readable disclosures use spacing rather than ruled form rows. */
.event-fields>div,.event-fields .event-fields>div{border:0;padding:8px 0}.event-fields .event-fields{border:0;padding-left:16px}.inline-data{background:#f6f9fb;border:0}.event-field-group{margin:20px 0}.event-fields>div{gap:18px}.event-fields dd{font-weight:500}#expanded-graph .chart{width:100%;max-width:none;margin-inline:0}#expanded-graph .telemetry-plot{max-width:none}.telemetry-plot{display:block;width:100%;max-width:none;margin-inline:0;height:auto}.events-timeline{padding:18px 17px 12px;background:#fff}.timeline-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.timeline-heading h3{font-size:14px;margin:0}.timeline-switches{display:flex;gap:16px;flex-wrap:wrap}.timeline-switches label{display:flex;align-items:center;gap:7px;font-size:12px;min-height:36px}.timeline-switches input{width:17px;height:17px;accent-color:var(--green)}.battery-key{color:#087552}.solar-key{color:#a56b0c}.timeline-switches .solar-key input{accent-color:#b97912}.events-timeline .chart-note{margin:8px 0 12px}.telemetry-plot [data-time-marker]{cursor:pointer}.telemetry-plot [data-time-marker]:focus{outline:2px solid var(--blue)}#timeline-selection{padding:12px 15px;background:#edf4f8;border-radius:8px;font-size:12px;margin-top:12px}#timeline-selection p{font-size:12px}.events-timeline .graph-legend{font-size:12px}@media(max-width:600px){.events-timeline{padding:16px 10px}.timeline-switches{gap:8px 14px}.event-fields>div{gap:12px}.chart-tabs{flex-wrap:wrap;gap:10px}.graph-controls .message-buttons{gap:5px}}
.timeline-switches label{min-height:44px}#activity .activity-event-buttons button{min-height:40px}
.event-symbol{width:32px;height:32px;flex:none;vertical-align:middle}.timeline-legend{display:flex;flex-wrap:wrap;gap:12px 22px;padding:18px 0 6px}.timeline-legend>span{display:inline-flex;align-items:center;gap:8px;font-size:12px;min-height:44px}.timeline-legend p{width:100%;font-size:12px;margin:0;color:var(--muted)}.activity-badge{display:inline-flex;align-items:center;gap:7px;background:transparent;padding:0}.activity-badge .event-symbol{width:28px;height:28px}.activity-type1{color:#a96519}.telemetry-plot .line-end-battery,.telemetry-plot .line-end-solar{pointer-events:none}@media(max-width:600px){.timeline-legend{gap:8px 14px}.timeline-legend>span{min-width:132px}.timeline-legend .event-symbol{width:32px;height:32px}}
/* Equal-height diagnostic controls; extra filters occupy their own row. */
.diagnostic-filters{align-items:center}.diagnostic-filters>label{align-items:center}.diagnostic-filters select,.diagnostic-filters input.search{height:38px;min-height:38px}.diagnostic-filters input.search{padding:8px 11px}.diagnostic-filters .more-filters{flex:none;margin:0}.diagnostic-filters .more-filters summary{padding:9px 11px;min-height:38px;border:1px solid var(--line);border-radius:7px;font-size:12px;line-height:18px;background:#fff}.diagnostic-filters .more-filters[open]{flex-basis:100%;order:10;padding:0}.diagnostic-filters .more-filters[open] summary{display:list-item;width:max-content}.diagnostic-filters .more-filters[open] label{margin:10px 0 0;justify-content:flex-start;gap:10px}.diagnostic-filters .more-filters select{min-width:160px}.toolbar h2{display:flex;align-items:center;gap:8px}.toolbar h2>.icon{color:var(--green);width:20px;height:20px;flex:none}.tabs button{display:inline-flex;align-items:center;gap:7px;font-weight:650;padding:10px 4px 12px}.tabs button>.icon{width:18px;height:18px;flex:none}.detail-tools{display:flex;align-items:center;gap:8px}.detail-tools #expand-hole-detail{display:inline-flex;align-items:center;gap:6px;color:#fff;background:#ffffff12;border-color:#ffffff50;font-size:12px;min-height:36px;padding:6px 9px}.detail-tools #expand-hole-detail .icon{width:16px;height:16px}.detail-tools .close{position:static;background:transparent;color:#fff;border:1px solid #ffffff50;font-size:24px;line-height:1;min-width:38px;min-height:38px;padding:5px 8px}.detail-tools .close:hover{background:transparent}
.sensor-presentation{position:fixed;inset:0;z-index:1000;background:#f1f6fa;color:var(--ink);overflow:auto;overscroll-behavior:contain}.sensor-presentation:fullscreen{width:100%;height:100%;max-width:none;max-height:none}.presentation-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 32px;background:#133e48;color:white}.presentation-header p{font-size:14px;color:#cce5e7;margin:0 0 4px}.presentation-header h1{font-size:34px;margin:0;letter-spacing:-.6px}.presentation-tools{display:flex;align-items:center;gap:16px}.presentation-tools label{font-size:13px;display:flex;align-items:center;gap:8px}.presentation-tools select{padding:9px 12px;border-radius:8px;border:1px solid #8ca8ad;background:#fff;min-height:42px;font-size:14px}.presentation-tools button{font-size:14px;min-height:42px}.presentation-sample{background:#fff0c9;color:#79500d;padding:10px 32px;font-size:13px;font-weight:600}.presentation-content{max-width:1600px;margin:auto;padding:24px 32px 32px}.presentation-status{display:flex;align-items:center;gap:14px;margin-bottom:20px;font-size:14px}.presentation-status .badge{font-size:13px;padding:5px 10px}.presentation-metrics{display:grid;grid-template-columns:1.6fr 1.1fr 1fr;gap:20px}.presentation-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:24px;text-align:center;min-width:0}.presentation-card h2{display:flex;justify-content:center;align-items:center;gap:9px;font-size:17px;margin:0 0 24px;letter-spacing:0;color:#315b65}.presentation-card h2 .icon{width:23px;height:23px}.presentation-speed{display:flex;align-items:baseline;justify-content:center;gap:12px;flex-wrap:wrap;margin:36px 0 24px}.presentation-speed strong{font-size:clamp(80px,10vw,160px);font-weight:650;line-height:1;letter-spacing:-4px;color:#087552}.presentation-speed span{font-size:26px;color:var(--muted)}.presentation-card p{font-size:14px;margin:14px 0 0}.presentation-card .old{color:var(--amber)}.presentation-bearing{display:flex;flex-direction:column;gap:3px;margin-bottom:20px}.presentation-bearing strong{font-size:44px;line-height:1.1}.presentation-bearing span{font-size:14px;color:var(--muted)}.presentation-compass{width:142px;height:142px;margin:0 auto;position:relative;display:grid;place-items:center;border:2px solid #bdd7ed;border-radius:50%;background:#edf6ff;color:var(--blue)}.presentation-compass>span:not(#presentation-airflow-arrow){position:absolute;font-size:11px;color:#466b87}.presentation-compass .north{top:4px}.presentation-compass .south{bottom:4px}.presentation-compass .east{right:5px}.presentation-compass .west{left:5px}#presentation-airflow-arrow{font-size:80px;line-height:1;transform-origin:center}.presentation-pin-icon{display:block;color:var(--green);margin:35px 0 18px}.presentation-pin-icon .icon{width:82px;height:82px;stroke-width:1.6}.presentation-pin-value{display:block;font-size:40px;line-height:1.2;color:var(--green)}.pin-is-out .presentation-pin-icon,.pin-is-out .presentation-pin-value{color:var(--amber)}.presentation-power{margin-top:20px;padding:20px 24px;text-align:left}.presentation-power h2{justify-content:flex-start;margin:0 0 16px}.presentation-power>div{display:flex;gap:40px;align-items:center;flex-wrap:wrap}.presentation-power span{font-size:13px;color:var(--muted)}.presentation-power strong{font-size:24px;display:block;margin-top:4px;color:var(--ink)}.presentation-power p{margin:0;font-size:13px}.presentation-tools button:focus-visible,.presentation-tools select:focus-visible{outline-color:#8af0cc}@media(max-width:900px){.presentation-metrics{grid-template-columns:1fr 1fr}.presentation-wind{grid-column:1/-1}.presentation-speed{margin:15px 0}.presentation-speed strong{font-size:100px}.presentation-content{padding:20px}.presentation-header{padding:18px 20px}}@media(max-width:600px){.tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.tabs button{flex-direction:column;gap:5px;font-size:12px;padding:9px 2px 11px;white-space:nowrap}.tabs button.active{background:#e5f3ed;border-radius:8px 8px 0 0}.presentation-header{align-items:flex-start;flex-wrap:wrap;gap:16px;padding:18px}.presentation-tools{width:100%;justify-content:space-between;gap:8px}.presentation-tools button{font-size:12px}.presentation-content{padding:16px}.presentation-metrics{gap:12px}.presentation-card{padding:18px 12px}.presentation-card h2{font-size:14px;gap:6px;margin-bottom:18px}.presentation-card h2 .icon{width:18px;height:18px}.presentation-speed strong{font-size:88px}.presentation-speed span{font-size:20px}.presentation-bearing strong{font-size:32px}.presentation-compass{width:104px;height:104px}#presentation-airflow-arrow{font-size:62px}.presentation-pin-icon{margin:32px 0 20px}.presentation-pin-icon .icon{width:62px;height:62px}.presentation-pin-value{font-size:30px}.presentation-card p{font-size:12px}.presentation-status{align-items:flex-start;gap:8px;flex-wrap:wrap}.presentation-power>div{gap:20px}.presentation-sample{padding:9px 18px}.diagnostic-filters input.search{max-width:none;flex:1 1 180px}}
@media(max-width:600px){.presentation-header{padding:12px 16px;gap:10px}.presentation-header h1{font-size:28px}.presentation-header p{font-size:12px}.presentation-tools select,.presentation-tools button{min-height:36px;padding:7px 9px}.presentation-content{padding:12px}.presentation-status{font-size:12px;margin-bottom:12px}.presentation-status .badge{font-size:12px;padding:3px 8px}.presentation-card{padding:14px 10px}.presentation-card h2{margin-bottom:12px}.presentation-card p{margin-top:8px}.presentation-speed{margin:10px 0}.presentation-bearing{margin-bottom:12px}.presentation-compass{width:96px;height:96px}.presentation-pin-icon{margin:20px 0 14px}.presentation-pin-icon .icon{width:58px;height:58px}.presentation-power{margin-top:12px}.presentation-power>div{gap:12px 20px}.presentation-power h2{margin-bottom:12px}.presentation-sample{font-size:12px;padding:7px 16px}}
@media(max-height:600px) and (orientation:landscape){.presentation-header{padding:10px 18px}.presentation-header h1{font-size:24px}.presentation-header p{font-size:12px}.presentation-content{padding:12px}.presentation-metrics{grid-template-columns:1.2fr 1fr 1fr;gap:12px}.presentation-wind{grid-column:auto}.presentation-card{padding:12px}.presentation-card h2{font-size:14px;margin-bottom:12px}.presentation-card p{font-size:12px;margin-top:8px}.presentation-speed{margin:20px 0}.presentation-speed strong{font-size:72px}.presentation-bearing strong{font-size:32px}.presentation-compass{width:80px;height:80px}#presentation-airflow-arrow{font-size:50px}.presentation-pin-icon{margin:14px 0}.presentation-pin-icon .icon{width:48px;height:48px}.presentation-pin-value{font-size:28px}.presentation-status{font-size:12px;margin-bottom:10px}.presentation-sample{padding:6px 18px}}
.presentation-tools select,.presentation-tools button{color:var(--ink)}
@media(max-width:600px){#overview .toolbar{flex-wrap:wrap;gap:10px}#overview .toolbar h2{flex-basis:100%}#overview .toolbar .filters{width:100%;margin:0}#overview .toolbar .filters button{flex:1}#batteries .toolbar{flex-wrap:wrap;gap:12px}}
@media(max-width:600px){#overview table{table-layout:fixed}#overview th:first-child{width:15%}#overview th:nth-child(2){width:33%}#overview th:nth-child(4){width:34%}#overview th:last-child{width:18%}#overview td,#overview th{padding-left:8px;padding-right:8px}#overview .hole-btn{min-width:0;gap:4px}#overview .hole-btn .icon{width:16px;height:16px}#overview .badge{white-space:normal;max-width:100%;line-height:1.2;font-size:12px;padding:3px 5px}#overview .badge .dot{flex:none}#overview .bearing{font-size:11px}#overview .direction{margin-right:2px}}

.timeline-readings{display:flex;flex-wrap:wrap;gap:16px 28px;min-height:64px;align-items:center;padding:12px 0;color:var(--muted);font-size:12px}.timeline-readings>span{display:flex;align-items:center;gap:10px}.timeline-readings strong{display:block;font-size:13px}.timeline-readings small{display:block;margin-top:4px;font-size:12px;color:var(--muted)}.measurement-value{font-variant-numeric:tabular-nums}.telemetry-plot:focus-visible{outline:2px solid var(--blue);outline-offset:3px}

/* Compact portrait views retain primary readings and disclose secondary data inline. */
@media(orientation:portrait),(max-width:759px){.detail-tools #expand-hole-detail{display:none}.detail.open{inset:0;width:100%;max-width:none}.detail-header{padding:14px 16px}.detail-body{padding:16px}.detail .detail-top h2{font-size:23px}.detail .big-speed{font-size:40px}.detail .kv-grid{gap:10px}.detail .section-title{margin-top:16px}.detail .chart-preview{max-width:100%}}
@media(max-width:759px),(orientation:portrait){
 .page{padding:16px 12px}.summary{gap:7px;margin-bottom:14px}.stat{padding:10px;display:block}.stat-icon{display:none}.stat-value{font-size:22px}.stat-label{font-size:11px}.intro{margin-bottom:14px}.intro p{font-size:12px}.tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.tabs button{flex-direction:column;gap:4px;font-size:12px;padding:8px 1px 10px}.table-scroll{overflow:visible;min-width:0}.panel,.workspace,.toolbar,.message-toolbar{min-width:0}.table-foot{flex-wrap:wrap;font-size:11px;gap:6px;padding:10px 12px}.toolbar{padding:12px}.toolbar h2{font-size:14px}.landscape-extra,.technical-column,.portrait-hide{display:none!important}
 #overview table{table-layout:fixed}#overview th:first-child{width:15%}#overview th:nth-child(2){width:33%}#overview th:nth-child(4){width:34%}#overview th:last-child{width:18%}#overview td,#overview th{padding:7px 6px;height:auto;min-height:44px}#overview .hole-btn{min-width:0;gap:4px;min-height:32px}#overview .badge{white-space:normal;line-height:1.2;font-size:11px;padding:3px 5px}#overview .badge .dot{flex:none}#overview .bearing{font-size:11px}#overview .speed{font-size:14px}
 #batteries table,#activity table,#diagnostics table{display:block;width:100%;max-width:100%}#batteries thead,#activity thead,#diagnostics thead{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0)}#battery-rows,#activity-rows,#packet-rows{display:block;width:100%}
 #battery-rows>tr,#activity-rows>tr:not(.activity-expansion),#packet-rows>tr:not(.message-expansion){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:7px 12px;padding:12px;border-bottom:1px solid var(--line);width:100%;align-items:center}#battery-rows>tr:last-child,#activity-rows>tr:last-child,#packet-rows>tr:last-child{border-bottom:0}
 #battery-rows td,#activity-rows td,#packet-rows td{display:block;height:auto;min-width:0;white-space:normal;overflow-wrap:anywhere;border:0;padding:0;font-size:12px}#battery-rows td:before,#activity-rows .measurement-value:before{display:block;font-size:11px;color:var(--muted);font-weight:400;margin-bottom:2px}
 #battery-rows td:first-child{grid-column:1;grid-row:1}#battery-rows td:first-child .hole-btn:before{content:'Hole';font-weight:400;color:var(--muted)}#battery-rows td:nth-child(2){grid-column:2;grid-row:1;justify-self:end}#battery-rows td:nth-child(3){grid-column:1;grid-row:2;font-weight:650}#battery-rows td:nth-child(3):before{content:'Battery · raw'}#battery-rows td:nth-child(7){grid-column:2;grid-row:2;font-weight:650}#battery-rows td:nth-child(7):before{content:'Change · 24h'}#battery-rows td:nth-child(8),#battery-rows .battery-landscape{display:none!important}#battery-rows td:nth-child(9){grid-column:1/-1;grid-row:3;color:var(--muted);font-size:11px}#battery-rows td:nth-child(9):before{display:inline;content:'Last reported ';font-size:11px}#batteries .toolbar{flex-wrap:wrap;gap:10px}#batteries .chart-note{font-size:11px}
 #activity-rows>tr>td:nth-child(2){grid-column:1;grid-row:1;font-weight:650}#activity-rows>tr>td:nth-child(2):before{content:'Hole ';font-weight:400;color:var(--muted)}#activity-rows>tr>td:nth-child(3){grid-column:2;grid-row:1;justify-self:end}#activity-rows>tr>td:first-child{grid-column:1/-1;grid-row:2;font-size:11px;color:var(--muted)}#activity-rows>tr>td:nth-child(4),#activity-rows .activity-device{display:none}#activity-rows .measurement-report>td:nth-child(5){grid-column:1;grid-row:3}#activity-rows .measurement-report>td:nth-child(5):before{content:'Battery · raw'}#activity-rows .measurement-report>td:nth-child(6){grid-column:2;grid-row:3}#activity-rows .measurement-report>td:nth-child(6):before{content:'Solar · raw'}#activity-rows .state-report>.measurement-value{display:none}#activity-rows>tr>td:last-child{grid-column:1/-1;justify-self:end}#activity-rows .activity-badge{font-size:12px;gap:6px}#activity-rows .activity-badge .event-symbol{width:24px;height:24px}
 #packet-rows>tr>td{display:none}#packet-rows>tr>td:first-child{display:block;grid-column:1/-1;grid-row:1;color:var(--muted);font-size:11px}#packet-rows>tr>td:nth-child(3){display:block;grid-column:1;grid-row:2}#packet-rows>tr>td:nth-child(3):before{content:'Hole ';color:var(--muted)}#packet-rows>tr>td:nth-child(4){display:block;grid-column:2;grid-row:2;justify-self:end;font-weight:650}#packet-rows>tr>td.message-cell{display:block;grid-column:1/-1;grid-row:3;max-width:none;min-width:0;white-space:normal}#packet-rows .message-cell .view-event{display:block;width:max-content;margin:8px 0 0 auto}
 #activity-rows>tr.activity-expansion,#packet-rows>tr.message-expansion{display:block;width:100%;padding:0 12px 12px;background:#f6f9fb}#activity-rows>tr.activity-expansion>td,#packet-rows>tr.message-expansion>td{display:block;width:100%}.inline-data{position:static;width:100%;max-width:100%;padding:12px 0;margin:0;border-radius:0}.event-fields>div{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:12px}.event-fields dd,.event-json{min-width:0;max-width:100%;overflow-wrap:anywhere;white-space:pre-wrap}.empty{grid-column:1/-1;padding:20px!important}
 .message-toolbar{padding:12px;gap:10px}.diagnostic-filters{width:100%;gap:8px}.diagnostic-filters>label{flex:1;min-width:0;flex-direction:column;align-items:stretch}.diagnostic-filters select{width:100%;max-width:none}.diagnostic-filters input.search{width:100%;max-width:none;flex-basis:100%}.message-buttons button{padding:7px 9px;font-size:12px}.activity-event-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:6px}.activity-event-buttons button{white-space:normal;line-height:1.3;padding:8px 5px}.activity-filters>button{width:100%}.activity-range-caption{font-size:11px;padding:8px 12px}.events-timeline{padding:12px}.timeline-heading{gap:8px}.timeline-switches{gap:4px 12px}.timeline-switches label{font-size:12px;min-height:32px}.timeline-readings{min-height:0;display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:8px 0 12px}.timeline-readings>span{gap:6px;min-width:0}.timeline-readings .event-symbol{width:24px;height:24px}.timeline-readings strong{font-size:12px}.timeline-readings small{font-size:10px;margin-top:2px}.timeline-legend{gap:6px 12px;padding-top:12px}.timeline-legend>span{min-width:0;width:calc(50% - 6px);font-size:11px;min-height:32px;gap:6px}.timeline-legend .event-symbol{width:24px;height:24px}.timeline-legend p{font-size:11px}#timeline-help{font-size:11px;margin:6px 0}.graph-body{padding:12px}.graph-controls{margin-bottom:12px}.graph-controls .message-buttons button{padding:6px 8px}
 .detail .chart-tabs{gap:10px}.detail .chart-tabs button{font-size:11px}.detail .technical dd{overflow-wrap:anywhere}.person-row{flex-wrap:wrap;gap:10px}.person-summary{min-width:0;overflow-wrap:anywhere}.settings-actions{flex-wrap:wrap}.controller-card{min-width:0}.controller-card dd{overflow-wrap:anywhere}
}

.timeline-readings .reading-name{display:block;font-size:11px;color:var(--muted)}.timeline-readings strong{font-size:15px;line-height:1.4}.timeline-readings>span{align-items:center}

@media(max-width:759px),(orientation:portrait){
 .diagnostic-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));flex:1 1 100%;max-width:none;align-items:end}.diagnostic-filters>label{width:100%;min-width:0;align-items:stretch}.diagnostic-filters>label select{width:100%;min-width:0;max-width:none}.diagnostic-filters .more-filters,.diagnostic-filters input.search,.activity-filters>button{grid-column:1/-1}.diagnostic-filters .more-filters summary{width:max-content;max-width:100%}.diagnostic-filters .more-filters[open] label{display:flex;flex-direction:column;align-items:stretch}.diagnostic-filters .more-filters[open] select{min-width:0;width:100%}.diagnostic-actions{gap:8px}.diagnostic-actions button{white-space:nowrap}.diagnostic-actions #message-count{font-size:11px;line-height:1.4}
 #packet-rows>tr>td.empty{display:block;grid-column:1/-1}#packet-rows>tr.controller-message>td:nth-child(2){display:block;grid-column:1/-1;grid-row:2;font-weight:650}#packet-rows>tr.controller-message>td:nth-child(3),#packet-rows>tr.controller-message>td:nth-child(4){display:none}
}

.intro>div:first-child{min-width:0}.intro h1{overflow-wrap:anywhere}

.hour-guide{stroke:#dce3e8;stroke-opacity:.18;stroke-width:.5}



.state-period,[data-time-marker]{cursor:pointer}.state-period:focus{outline:none}.state-period:focus .period-hit-area{stroke:#2865a8;stroke-width:1.5}.state-period:hover .state-period-line{filter:brightness(.85)}.activity-active,.activity-battery-awake{color:#617582}.activity-badge>span{min-width:0;overflow-wrap:anywhere}
@media(max-width:759px),(orientation:portrait){
 .page,.intro,.summary,.tabs,.panel,.workspace,.detail,.detail-body,.graph-body,.events-timeline,.controller-body,.settings-content{min-width:0;max-width:100%}.summary{grid-template-columns:repeat(2,minmax(0,1fr))}.stat>div{min-width:0}.stat-label{overflow-wrap:anywhere}.intro{display:flex;flex-direction:column;align-items:stretch;gap:6px}.intro-tools{order:-1;width:100%;max-width:none}.course-select{width:100%;max-width:100%;font-size:14px;padding:8px 10px}.intro .eyebrow,#course-heading{display:none}.intro p{max-width:none;overflow-wrap:anywhere;margin:2px 0 6px;font-size:11px}.tabs{margin-bottom:10px}.summary{margin-bottom:12px}.demo-notice{padding:6px 12px}.demo-notice span{display:none}.table-scroll{width:100%;max-width:100%}table{max-width:100%}.detail .chart,.telemetry-plot{width:100%;max-width:100%;overflow:hidden}.timeline-heading,.timeline-switches,.timeline-readings,.graph-controls{min-width:0}.timeline-readings>span>span{min-width:0;overflow-wrap:anywhere}.timeline-switches{gap:2px 10px}.timeline-switches label{font-size:11px}.timeline-readings{padding:6px 0}.timeline-legend{gap:4px 10px;padding:4px 0}.timeline-legend>span{min-height:28px}.activity-event-buttons{grid-template-columns:repeat(2,minmax(0,1fr))}.activity-event-buttons button{min-width:0;padding:7px 4px}.activity-badge .event-symbol{flex:none}.activity-badge{max-width:100%;align-items:center}#activity-rows>tr>td:nth-child(3){max-width:100%;min-width:0}.preferences-head h2{min-width:0;overflow-wrap:anywhere}.preferences-head button{flex:none}.event-fields dt,.event-fields dd{min-width:0;overflow-wrap:anywhere}.controller-card h3,.controller-card p,.health-caption,.notice,.auth-card p{overflow-wrap:anywhere}#preferences-dialog .settings-nav{overflow-x:visible;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:0 10px;gap:2px}#preferences-dialog .settings-nav button{min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:1.25;padding:8px 3px;font-size:11px}.setting-row{flex-direction:column;align-items:stretch;gap:5px}.setting-row select{max-width:100%;width:100%}.settings-actions{max-width:100%;gap:7px}.settings-actions button{max-width:100%;white-space:normal}.person-row>div{min-width:0;max-width:100%}body.staff .tabs{grid-template-columns:repeat(3,minmax(0,1fr))}
}

html{-webkit-text-size-adjust:100%;text-size-adjust:100%}

.event-filter-panel{border:0;padding:0;margin:0}.event-filter-panel>summary{display:none}
@media(max-width:759px),(orientation:portrait){header{height:56px;padding:0 12px}.brand{font-size:20px}.mark{width:32px;height:32px}.page{padding:12px}.stat{padding:8px}.stat-value{font-size:21px}.stat-label{font-size:10px}.course-select{padding:7px 9px;min-height:34px;font-size:13px}.intro{margin-bottom:10px}.tabs button{padding:6px 1px 8px;gap:3px}.controller-health{margin-bottom:12px}.controller-health>summary{padding:10px 12px}.controller-health:not([open]) .health-caption{display:none}.event-filter-panel{width:100%}.event-filter-panel>summary{display:flex;justify-content:space-between;align-items:center;min-height:38px;padding:7px 10px;background:#f5f8fa;border:1px solid var(--line);border-radius:7px;font-size:12px;cursor:pointer;list-style:none}.event-filter-panel>summary::-webkit-details-marker{display:none}.event-filter-panel>summary:after{content:'Change';font-size:12px;color:var(--blue)}.event-filter-panel[open]>summary:after{content:'Close'}.event-filter-panel .activity-event-buttons{margin-top:8px}#activity-custom{display:none}.activity-filters{gap:8px}.activity-filters label{font-size:11px}.activity-range-caption{font-size:11px;line-height:1.4;padding:7px 12px}.message-toolbar{gap:8px;padding:10px 12px}.diagnostic-filters select{min-height:36px;height:36px}.activity-range-caption{overflow-wrap:anywhere}}

@media(max-width:759px),(orientation:portrait){.stat-label{min-height:2.6em;line-height:1.3}.tabs button,.filters button{min-width:0;white-space:normal;overflow-wrap:anywhere}.filters button{line-height:1.3}}

.state-line-key{width:32px;height:16px;flex:none}.state-change-icon{pointer-events:all}.period-hit-area{stroke:none}

.state-change-icon[data-event-state="inactive"] text{font-size:13px;font-weight:750}

.activity-type2{color:#2865a8}

.telemetry-plot:focus:not(:focus-visible),.telemetry-plot [data-time-marker]:focus:not(:focus-visible){outline:none}.state-period:focus:not(:focus-visible) .period-hit-area{stroke:none}.activity-entry{cursor:pointer}.activity-entry:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}.activity-chevron{margin-left:10px;color:var(--blue);font-size:14px}.timeline-switches select{font-size:12px;min-height:34px;border:1px solid var(--line);border-radius:7px;padding:5px 8px;background:white}.timeline-readings .temperature-key{color:#a34839}

.telemetry-plot.pointer-focused{outline:none!important}

.chart path.temperature-series{stroke:#a34839}

.telemetry-plot.pointer-focused [data-time-marker]{outline:none!important}.telemetry-plot.pointer-focused .state-period:focus .period-hit-area{stroke:none}

/* Readings use the same hierarchy in diagnostics and event details. */
.reading-icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;flex:none}.reading-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0 16px}.reading-tile{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;column-gap:7px;padding:11px 12px;background:#edf4f7;border-radius:8px;min-width:0}.reading-tile>.icon,.reading-tile>.reading-icon{grid-row:1/3;color:var(--reading-colour)}.reading-tile>span{font-size:11px;color:#617582}.reading-tile>strong{font-size:18px;line-height:1.3;color:var(--reading-colour);overflow-wrap:anywhere}.report-device{margin:14px 0}.report-device>summary{font-size:12px;font-weight:650;color:var(--blue);cursor:pointer;padding:7px 0}.diagnostic-compact-summary{display:none}.diagnostic-entry{cursor:pointer}.diagnostic-entry:focus-visible,.battery-entry:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}.battery-entry{cursor:pointer}.battery-status-icon{display:inline-flex;color:var(--amber)}.battery-status-icon .reading-icon,.battery-status-icon .icon{width:15px;height:15px}.battery-power-panel{margin-bottom:14px}.battery-power-body{padding:12px 17px 16px}.battery-power-controls{display:flex;gap:12px;flex-wrap:wrap}.battery-power-controls label{display:flex;gap:6px;align-items:center;font-size:12px}.battery-power-controls select{font-size:12px;padding:7px 9px;border:1px solid var(--line);border-radius:7px;min-height:34px;background:white}.battery-power-controls #battery-power-hole{min-width:100px}.battery-power-panel .timeline-readings{min-height:60px;margin-top:6px}.battery-power-panel .toolbar h2{font-size:14px}
.display-mode-control{color:#fff;position:relative;display:inline-flex;align-items:center;gap:7px;border:1px solid #ffffff50;border-radius:8px;padding:6px 8px;font-size:12px;line-height:1.2;min-height:36px;cursor:pointer;white-space:nowrap}.display-mode-control{background:transparent;min-height:44px;touch-action:manipulation}.display-mode-control>span{pointer-events:none}.display-mode-track{position:relative;width:28px;height:16px;flex:none;background:#7d979d;border-radius:10px}.display-mode-track:after{content:'';position:absolute;left:2px;top:2px;width:12px;height:12px;background:white;border-radius:50%;transition:transform .12s}.display-mode-control[aria-checked="true"] .display-mode-track{background:#087552}.display-mode-control[aria-checked="true"] .display-mode-track:after{transform:translateX(12px)}.display-mode-control:focus-visible .display-mode-track{outline:2px solid #8af0cc;outline-offset:3px}.basic-mode .tabs,.basic-mode #controller-health,.basic-mode .intro p,.basic-mode .intro .eyebrow,.basic-mode #course-heading,.basic-mode .footer{display:none}.basic-mode .summary{display:flex;width:fit-content;gap:12px;padding:8px 12px;background:#fff;border:1px solid var(--line);border-radius:9px;margin-bottom:12px}.basic-mode .summary .stat{display:flex;gap:6px;align-items:baseline;padding:0;border:0;background:transparent;min-width:0;flex:1}.basic-mode .summary .stat:last-child,.basic-mode .stat-icon{display:none}.basic-mode .stat-label{font-size:11px;min-height:0;line-height:1.3}.basic-mode .stat-value{font-size:18px;margin:0;white-space:nowrap}.basic-mode .stat-value small{font-size:11px}@media(max-width:1024px),(orientation:portrait){.basic-mode .workspace{display:block}.basic-mode #overview .portrait-hide,.basic-mode #overview .landscape-extra,.basic-mode #overview .technical-column{display:none!important}.basic-mode #overview table{table-layout:fixed}.basic-mode #overview th:first-child{width:15%}.basic-mode #overview th:nth-child(2){width:35%}.basic-mode #overview th:nth-child(4){width:30%}.basic-mode #overview th:last-child{width:20%}.basic-mode .detail{display:none;position:fixed;inset:0 0 0 auto;width:min(480px,100%);z-index:20;overflow:auto;border-radius:0}.basic-mode .detail.open{display:block}.basic-mode .detail-tools #expand-hole-detail{display:none}.basic-mode .close{display:block}.basic-mode .backdrop.open{display:block;position:fixed;inset:0;background:#142d2566;z-index:19}}
.detail.open .detail-header{position:sticky;top:0;z-index:2}
@media(max-width:1024px){
 .header-right{gap:7px}#settings-shortcut{font-size:0;line-height:0;min-width:36px;min-height:36px;padding:8px;display:inline-flex;align-items:center;justify-content:center}.display-mode-control{font-size:11px;padding:6px;gap:5px}.brand{font-size:20px;gap:8px}.mark{width:32px;height:32px}header{height:56px;padding:0 12px}.page{padding:12px}.view-secondary .summary,.view-secondary #controller-health,.view-secondary .intro>div:first-child{display:none}.view-secondary .intro{margin-bottom:10px}.view-secondary .intro-tools{max-width:none;width:100%}.workspace{display:block}.detail{display:none;position:fixed;inset:0;width:100%;max-width:none;z-index:20;overflow:auto;border-radius:0}.detail.open{display:block}.detail-tools #expand-hole-detail{display:none}.detail .close{display:block}.backdrop.open{display:block;position:fixed;inset:0;background:#142d2566;z-index:19}
 .reading-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.reading-tile{padding:9px 10px}.reading-tile:nth-child(5){grid-column:1/-1}.reading-tile>strong{font-size:17px}.inline-data{position:static;width:100%;max-width:100%;padding:12px 0}.event-field-group{margin:12px 0}.event-field-group h3{font-size:13px}.event-fields>div{padding:6px 0}
 /* Five primary columns on phones, eight at wider mobile widths. */
 #batteries table{display:table!important;width:100%;table-layout:fixed}#batteries thead{display:table-header-group;position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}#battery-rows{display:table-row-group!important;width:auto}#battery-rows>tr{display:table-row!important;padding:0;gap:0}#battery-rows td{display:table-cell!important;height:44px;white-space:normal;overflow-wrap:anywhere;border-bottom:1px solid #edf1ee;padding:7px 5px;font-size:12px}#battery-rows td:before,#battery-rows .hole-btn:before{content:none!important}#batteries th{padding:9px 5px;font-size:10px;letter-spacing:0;text-transform:none;white-space:normal}#battery-rows .battery-state,#battery-rows .battery-landscape,#battery-rows .battery-trend,#batteries .battery-state-col,#batteries th.battery-landscape,#batteries .battery-trend-col{display:none!important}#batteries .battery-hole-col{width:14%}#batteries .battery-level-col,#batteries .solar-level-col{width:21%}#batteries .battery-change-col{width:20%}#batteries .battery-last-col{width:24%}#battery-rows .hole-btn{min-width:0;gap:3px;font-size:12px;padding:5px 0}#battery-rows .battery-last{font-size:11px;color:var(--muted)}#battery-rows .battery-level{font-weight:650}#battery-rows .solar-level{color:#a56b0c}.battery-power-body{padding:10px 12px 12px}.battery-power-controls{gap:10px}.battery-power-controls label{flex:1;min-width:0;flex-direction:column;align-items:stretch;font-size:11px}.battery-power-controls select{width:100%}.battery-power-panel .timeline-readings{min-height:0;padding:10px 0}.battery-power-panel .toolbar{padding:10px 12px}.battery-power-panel .toolbar h2{font-size:13px}.battery-power-panel #battery-graph-toggle{font-size:11px;padding:6px 8px;min-height:32px}.battery-power-panel{margin-bottom:10px}
 /* Diagnostics puts readings and identity directly in each compact row. */
 #diagnostics .table-scroll{overflow:visible;width:100%;max-width:100%}#diagnostics table{display:block;width:100%;max-width:100%}#diagnostics thead{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0)}#packet-rows{display:block;width:100%}#packet-rows>tr.diagnostic-entry{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:3px 10px;align-items:center;padding:9px 12px;width:100%;border-bottom:1px solid var(--line)}#packet-rows>tr.diagnostic-entry>td{display:none!important;min-width:0;padding:0;height:auto;border:0;white-space:normal;overflow-wrap:anywhere}#packet-rows>tr.diagnostic-entry>td:first-child{display:block!important;grid-column:1;grid-row:1;font-size:10px;color:var(--muted)}#packet-rows>tr.diagnostic-entry>td:nth-child(3){display:block!important;grid-column:2;grid-row:1;font-size:11px}#packet-rows>tr.diagnostic-entry>td:nth-child(4){display:block!important;grid-column:3;grid-row:1;font-size:11px;font-weight:650}#packet-rows>tr.diagnostic-entry>td.message-cell{display:block!important;grid-column:1/-1;grid-row:2;min-width:0;max-width:none;font-size:11px}#packet-rows>tr.controller-message>td:nth-child(2){display:block!important;grid-column:2/-1;grid-row:1;font-size:11px;font-weight:650}#packet-rows>tr.controller-message>td:nth-child(3),#packet-rows>tr.controller-message>td:nth-child(4){display:none!important}.diagnostic-compact-summary{display:block}.compact-measures{display:flex;flex-wrap:wrap;gap:4px 11px;align-items:center;margin:3px 0}.compact-measures>span{display:inline-flex;align-items:center;gap:4px;font-size:11px;white-space:nowrap}.compact-measures strong{font-size:12px}.compact-measures .icon,.compact-measures .reading-icon{width:15px;height:15px;flex:none}.compact-wind{color:#087552}.compact-solar{color:#a56b0c}.compact-temperature{color:#a34839}.compact-device{font-size:10px;color:#617582;margin:3px 0;overflow-wrap:anywhere}.diagnostic-message{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;font-size:11px;color:var(--muted)}#packet-rows>tr.message-expansion{display:block;padding:0 12px 12px;width:100%}#packet-rows>tr.message-expansion>td{display:block!important;width:100%;padding:0;height:auto;border:0;white-space:normal}.diagnostic-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;min-width:0;gap:7px;align-items:end}.diagnostic-filters>label{flex-direction:column;align-items:stretch;min-width:0}.diagnostic-filters select{width:100%;max-width:none;min-width:0}.diagnostic-filters .more-filters{grid-column:1}.diagnostic-filters input.search{grid-column:2;width:100%;max-width:none;min-width:0}.diagnostic-filters .more-filters[open]{grid-column:1/-1}.diagnostic-filters .more-filters summary{max-width:100%;width:auto}.diagnostic-actions{gap:8px}.message-toolbar{padding:10px 12px;gap:8px}.table-foot{flex-wrap:wrap}.diagnostic-actions button{white-space:nowrap}
}
@media(min-width:760px) and (max-width:1024px){#battery-rows .battery-landscape,#batteries th.battery-landscape{display:table-cell!important}#batteries .battery-hole-col{width:9%}#batteries .battery-level-col,#batteries .solar-level-col{width:13%}#batteries .battery-change-col{width:12%}#batteries .battery-last-col{width:17%}}
@media(max-height:600px) and (orientation:landscape) and (max-width:1024px){header{height:44px}.page{padding:8px 12px}.intro{margin-bottom:7px}.intro-tools{max-width:320px!important}.intro>div:first-child{display:none}.tabs{display:flex;justify-content:space-between;gap:10px;margin-bottom:9px}.tabs button{display:inline-flex;flex-direction:row;gap:6px;padding:6px 2px 8px;font-size:12px}.battery-power-panel{margin-bottom:8px}.basic-mode .summary{margin-bottom:8px;padding:6px 10px}.detail-header{padding:9px 14px}.detail-sub{font-size:11px}.diagnostic-filters{grid-template-columns:minmax(80px,1fr) minmax(120px,1.2fr) auto minmax(160px,2fr)}.diagnostic-filters .more-filters,.diagnostic-filters input.search{grid-column:auto}.diagnostic-filters .more-filters[open]{grid-column:1/-1}.message-toolbar{padding:8px 12px}}

.battery-status-icon.hibernating{color:#8152a8}.battery-status-icon.sleeping{color:#617582}.battery-status-icon.offline{color:#b33030}@media(max-width:1024px){#battery-rows td.battery-change-day{display:table-cell!important}}

@media(max-width:1024px){header .header-right #settings-shortcut .icon{display:inline-block}}
@media(min-width:760px) and (max-width:1024px) and (orientation:landscape){
 #activity table{table-layout:fixed;width:100%}#activity th,#activity td{white-space:normal;overflow-wrap:anywhere;padding:9px 8px;font-size:12px}#activity thead th:nth-child(4),#activity thead th:nth-child(7),#activity thead th:nth-child(8),#activity-rows>.activity-entry>td:nth-child(4),#activity-rows>.activity-entry>.activity-device{display:none}#activity thead th:first-child{width:27%}#activity thead th:nth-child(2){width:8%}#activity thead th:nth-child(3){width:37%}#activity thead th:nth-child(5),#activity thead th:nth-child(6){width:14%}#activity .activity-badge{white-space:normal}#activity .activity-expansion>td{padding:12px}
}
.event-message{overflow-wrap:anywhere;white-space:normal;min-width:0}@media(max-width:1024px){.event-json{white-space:pre-wrap;overflow-wrap:anywhere;max-width:100%}}

/* Desktop Basic keeps the same useful overview layout as desktop Advanced. */
@media(min-width:1025px) and (orientation:landscape){
 #overview .workspace{grid-template-columns:minmax(0,1fr) 370px}
 #overview .landscape-extra{display:table-cell}body.staff #overview .technical-column{display:none}
 .basic-mode #overview .firmware-column{display:none}
 #overview table{table-layout:auto}#overview th,#overview td{padding-left:10px;padding-right:10px}
 #overview .hole-btn{min-width:48px}#overview .speed{font-size:14px}#overview .bearing{display:inline-flex;align-items:center;gap:2px}
 #overview .badge{white-space:normal;line-height:1.3}.detail-tools .close{display:none}
}
@media(min-width:1025px) and (max-width:1250px) and (orientation:landscape){#overview .workspace{grid-template-columns:minmax(0,1fr) 330px;gap:14px}#overview th,#overview td{padding-left:6px;padding-right:6px}#overview .bearing{display:flex}#overview .battery .icon{display:none}#overview .temperature-cell{font-size:11px}}

.basic-mode .summary .stat>div{display:flex;align-items:baseline;gap:8px}
@media(min-width:1025px) and (orientation:landscape){
 .basic-mode .page{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;align-items:start}
 .basic-mode .intro{grid-column:1;display:block;margin:0 0 12px}.basic-mode .intro-tools{justify-content:flex-start}
 .basic-mode .summary{grid-column:2;margin:0;align-self:start}
 .basic-mode #overview,.basic-mode #graph-panel{grid-column:1/-1}
}
.detail .chart-tabs{flex-wrap:wrap;gap:8px 12px}.detail .chart-tabs button{white-space:nowrap}
.hole-location{display:inline-flex;flex:none;color:#2865a8}.hole-location .icon{width:13px;height:13px;stroke-width:2}.sensor-location{margin:18px 0;padding:12px;border:1px solid #dce7ec;border-radius:8px;background:#f5f9fb}.sensor-location h3{display:flex;align-items:center;gap:6px;margin:0 0 9px;font-size:13px}.location-coordinates{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:11px;color:var(--muted)}.location-coordinates strong{display:block;font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums}.sensor-location .location-link{display:inline-flex;align-items:center;gap:5px;padding:7px 9px;margin-top:10px;border:1px solid #c6dae6;border-radius:7px;background:white;text-decoration:none;font-size:12px;font-weight:650}.sensor-location .chart-note{font-size:10px;margin:7px 0 0}.derived-urls{margin:10px 0 16px;padding:10px 12px;background:#f4f8fa;border-radius:8px;font-size:12px}.derived-urls>div{padding:5px 0}.derived-urls dt{font-weight:650;color:var(--ink)}.derived-urls dd{margin:2px 0 0;overflow-wrap:anywhere;color:var(--muted)}.export-panel{padding:16px 18px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#f5f9fb}.export-heading,.export-actions{display:flex;justify-content:space-between;align-items:center;gap:12px}.export-heading h3{font-size:15px;margin:0}.export-heading button{font-size:20px;padding:3px 10px;background:transparent}.export-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:12px 0}.export-options label{font-size:12px;color:var(--muted)}.export-options select{display:block;width:100%;min-width:0;border:1px solid var(--line);border-radius:7px;padding:8px;background:white;font-size:13px}.export-actions{margin-top:12px;font-size:13px}.export-download{display:inline-flex;padding:8px 12px;background:var(--green);color:white;border-radius:7px;text-decoration:none;font-weight:650}.export-download:focus-visible{outline:3px solid var(--blue);outline-offset:3px}#export-error{font-size:12px;color:var(--red)}.export-panel .chart-note{font-size:12px;overflow-wrap:anywhere}#export-calendars{margin-top:12px;max-width:800px}#export-panel .calendar-time select{background:white}
@media(max-width:1024px){.diagnostic-actions{flex-wrap:wrap;justify-content:flex-end}.export-panel{padding:12px}.export-options{gap:8px}.export-options select{font-size:12px}.export-actions{flex-wrap:wrap}#overview th:first-child,.basic-mode #overview th:first-child{width:20%}#overview th:nth-child(2),.basic-mode #overview th:nth-child(2){width:30%}#overview th:nth-child(4),.basic-mode #overview th:nth-child(4){width:32%}#overview th:last-child,.basic-mode #overview th:last-child{width:18%}#overview td:first-child,#overview th:first-child{padding-left:6px;padding-right:4px}#overview .hole-btn{gap:2px}#overview .hole-btn>.pin .icon{width:14px;height:14px}.hole-location .icon{width:12px;height:12px}}
@media(max-width:430px){.export-options{grid-template-columns:1fr 1fr}.export-options>label:last-child{grid-column:auto}}
@media(min-width:1025px) and (max-width:1250px) and (orientation:landscape){#overview th{white-space:normal}#overview .hole-btn{gap:2px}#overview .hole-btn>.pin .icon{width:15px;height:15px}}

.export-title-group{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 14px;min-width:0}.export-heading-note{font-size:11px;font-weight:400;color:var(--muted);overflow-wrap:anywhere}.export-heading>button{flex:none}

/* Diagnostics: message type first, then one aligned row of labelled filters. */
#diagnostics .message-toolbar{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start}
#diagnostics .diagnostic-filters{display:grid;grid-template-columns:minmax(100px,.8fr) minmax(150px,1.3fr) minmax(130px,1fr) minmax(200px,2fr);width:100%;max-width:none;gap:10px;align-items:end}
#diagnostics .diagnostic-filters>label{display:flex;flex-direction:column;align-items:stretch;gap:5px;min-width:0;width:auto;font-size:12px}
#diagnostics .diagnostic-filters select,#diagnostics .diagnostic-filters input.search{display:block;width:100%;min-width:0;max-width:none;height:38px;min-height:38px;margin:0;font-size:13px}
@media(max-width:759px){#diagnostics .diagnostic-filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}}

/* Wide inline reports use the available desktop space; phone layouts stay stacked. */
@media(min-width:1025px) and (orientation:landscape){.message-expansion .inline-data,.activity-expansion .inline-data{position:static;width:100%;max-width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:32px;align-items:start}.inline-data>.event-message,.inline-data>.reading-grid,.inline-data>.original-event{grid-column:1/-1}.inline-data>.reading-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.inline-data>.report-device{margin:12px 0}.inline-data>.report-device>summary{font-size:14px;line-height:1.5;padding:0 0 6px}.inline-data>.event-field-group{margin:12px 0}.inline-data .event-fields>div{grid-template-columns:minmax(120px,1fr) minmax(0,1.6fr)}.inline-data>.original-event{min-width:0}#course-retention{margin-top:24px}}

#course-sensor-ota{margin-top:24px}

#detail .kv-grid.sensor-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 10px;border:0}#detail .sensor-metrics>div:first-child{grid-column:1/-1}#detail .sensor-metric{min-width:0;border:0}#detail .sensor-metric-label,.presentation-power .sensor-metric-label{display:flex;align-items:center;gap:5px}#detail .sensor-metric-label .reading-icon,.presentation-power .sensor-metric-label .reading-icon{width:16px;height:16px;flex:none}#detail .sensor-metric>strong{font-size:18px;line-height:1.4;margin-top:4px;white-space:nowrap}#detail .sensor-metrics-reported{grid-column:1/3;margin:-6px 0 0;font-size:11px;color:var(--muted);border:0}.presentation-power>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:12px 20px}.presentation-power>div>span{min-width:0;border:0}.presentation-power strong{white-space:nowrap}.presentation-power #presentation-battery-age{grid-column:1/3;border:0}.reading-tile{border:0}
@media(max-width:1024px),(orientation:portrait){#detail .sensor-metric>strong{font-size:17px}.reading-grid.has-power-triplet{grid-template-columns:repeat(6,minmax(0,1fr))}.reading-grid.has-power-triplet>.reading-tile:not(.reading-tile-power){grid-column:span 3}.reading-grid.has-power-triplet>.reading-tile-power{grid-column:span 2;grid-template-columns:16px minmax(0,1fr);gap:4px;padding:8px 6px}.reading-grid.has-power-triplet>.reading-tile-power>.reading-icon{grid-row:1;width:16px;height:16px}.reading-grid.has-power-triplet>.reading-tile-power>span{font-size:11px}.reading-grid.has-power-triplet>.reading-tile-power>strong{grid-column:1/-1;font-size:clamp(12px,3.9vw,17px);white-space:nowrap}.presentation-power strong{font-size:20px}.presentation-power>div{gap:10px}.presentation-power .sensor-metric-label{font-size:12px}}

#detail .sensor-pin-status{display:flex;align-items:center;gap:8px}#detail .sensor-pin-status>strong{margin:0}.pintop-activity .activity-state{grid-template-columns:minmax(0,1fr);gap:12px}.activity-state .activity-state-row{display:grid;grid-template-columns:24px minmax(0,1fr);gap:8px;align-items:start;border:0}.activity-state-row>.icon,.activity-state-row>.reading-icon{width:22px;height:22px;color:var(--muted)}.activity-state-row>div{min-width:0}.activity-state .activity-state-heading{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.activity-state-heading>strong{margin:0;white-space:nowrap}.activity-state-row small{margin-top:2px}.activity-unconfirmed{overflow-wrap:anywhere}

.sensor-location .location-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}.sensor-location .location-heading h3{margin:0}.location-heading time{font-size:11px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}

#preferences-title{display:flex;align-items:center;gap:10px}#preferences-title>.icon{width:24px;height:24px;flex:none;color:var(--green)}#preferences-dialog .settings-nav button{display:inline-flex;align-items:center;justify-content:center;gap:7px}#preferences-dialog .settings-nav button>.icon{width:18px;height:18px;flex:none}#preferences-dialog .settings-nav button>span{min-width:0}
@media(max-width:600px){#preferences-dialog .settings-nav button{flex-direction:column;gap:4px}#preferences-dialog .settings-nav button>.icon{width:16px;height:16px}}

/* Account PIN entry and inline setup links. */
.account-pin-input{font-size:24px!important;letter-spacing:.35em;min-height:48px;max-width:100%;box-sizing:border-box}.account-setup-link{padding:16px;border-radius:12px;background:#edf5f7;margin:12px 0}.account-setup-link input{box-sizing:border-box;width:100%;min-width:0;font-size:16px}.account-setup-link h3{margin-top:0}.auth-card input{box-sizing:border-box;max-width:100%;font-size:16px}.auth-card .primary{min-height:44px}.auth-card{box-sizing:border-box;max-width:calc(100vw - 24px)}
@media(max-width:600px){.auth-card{margin:24px auto;padding:20px}.auth-card h1{margin-top:0}.account-setup-link{padding:12px}}

/* Four-dot PIN controls: the full control opens the numeric keyboard. */
.pin-entry{display:flex;position:relative;align-items:center;justify-content:center;width:184px;min-height:56px;max-width:100%;margin:8px 0 18px;padding:10px;border:1px solid #b9cddc;border-radius:12px;background:#fff;cursor:text}.pin-entry:focus-within{border-color:#2865a8;box-shadow:0 0 0 3px #2865a814}.pin-entry input.account-pin-input,#preferences-dialog .pin-entry input.account-pin-input{position:absolute;inset:0;z-index:1;width:100%;height:100%;min-height:56px;margin:0;padding:0;border:0;opacity:0;caret-color:transparent;color:transparent;-webkit-text-fill-color:transparent;-webkit-tap-highlight-color:transparent;cursor:text;font-size:20px!important}.pin-entry input:focus-visible{outline:none}.pin-entry-dots{display:flex;gap:22px;align-items:center;justify-content:center;pointer-events:none}.pin-entry-dot{display:block;width:14px;height:14px;border:0;border-radius:50%;background:#b6cbd5;transition:background .08s,transform .08s}.pin-entry-dot.filled{background:#2865a8;transform:scale(1.08)}.pin-setup-ready .pin-stage-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.pin-setup-status{min-height:24px;margin:8px 0;font-size:14px}.pin-setup-status.is-error{color:var(--red)}.pin-setup-busy .pin-entry{background:#f3f7f5}.pin-setup-busy .pin-entry-dot{animation:pin-saving .9s ease-in-out infinite alternate}.pin-setup-busy .pin-entry-dot:nth-child(2){animation-delay:.1s}.pin-setup-busy .pin-entry-dot:nth-child(3){animation-delay:.2s}.pin-setup-busy .pin-entry-dot:nth-child(4){animation-delay:.3s}@keyframes pin-saving{to{opacity:.45}}@media(prefers-reduced-motion:reduce){.pin-setup-busy .pin-entry-dot{animation:none}}button.primary:hover,button.primary:active,button.primary:disabled{background:var(--green);color:#fff;border-color:var(--green);opacity:1}button.primary:disabled{cursor:wait}

.signin-page{display:flow-root;min-height:100dvh}.signin-page #pin-setup-description{min-height:3em}
#display-mode-label{display:inline-block;width:5.5em;flex:none;text-align:left}

/* Compact controller administration, including long course names. */
#preferences-dialog .controller-request{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 14px;margin-top:8px}
#preferences-dialog .controller-summary{min-width:0}
#preferences-dialog .controller-summary strong{display:block;font-size:13px;line-height:1.4;overflow-wrap:anywhere}
#preferences-dialog .controller-summary p{margin:3px 0 0;font-size:12px;line-height:1.4;overflow-wrap:anywhere}
#preferences-dialog .controller-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-width:0}
#preferences-dialog .controller-buttons{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
#preferences-dialog .controller-actions button{min-height:44px;padding:8px 10px;line-height:1.3;margin:0}
#preferences-dialog .controller-access-state{font-size:12px;color:var(--muted);white-space:nowrap;text-transform:capitalize}
#preferences-dialog .protected-account{font-size:12px;color:var(--muted);line-height:1.4}
@media(max-width:600px){
 #preferences-dialog .controller-request{gap:10px;padding:10px 12px;align-items:start}
 #preferences-dialog .controller-actions{flex-direction:column;align-items:flex-end;gap:3px;max-width:150px}
 #preferences-dialog .controller-buttons{max-width:150px}
 #preferences-dialog .controller-summary{align-self:center}
 #preferences-dialog .controller-actions button{font-size:12px}
}

@media(max-width:600px){
 #preferences-dialog .controller-pending{grid-template-columns:minmax(0,1fr)}
 #preferences-dialog .controller-pending .controller-actions{flex-direction:row;align-items:center;justify-content:space-between;max-width:none}
 #preferences-dialog .controller-pending .controller-buttons{max-width:none}
}

/* First-time PIN setup: two clear steps, one entry at a time. */
.auth-card:has(#pin-setup-form){width:calc(100% - 32px);max-width:400px;padding:28px 28px 24px;margin:clamp(24px,8vh,80px) auto}
.auth-card:has(#pin-setup-form)>.eyebrow{font-size:10px;letter-spacing:1.3px}
.auth-card:has(#pin-setup-form)>h1{font-size:25px;margin:4px 0 28px}
#pin-setup-title{font-size:24px;line-height:1.25;letter-spacing:-.4px;margin:0 0 8px}
.signin-page #pin-setup-description{min-height:0;margin:0 0 18px;font-size:14px;line-height:1.5;color:var(--muted)}
#pin-setup-description strong{font-weight:600;color:var(--ink)}
#pin-step-label{font-size:12px;color:var(--muted);font-weight:500}
#pin-setup-form .pin-entry{margin:8px 0 8px}
#pin-setup-form .pin-entry:focus-within{border-color:#2865a8;box-shadow:0 0 0 3px #2865a814}
#pin-setup-form .pin-setup-status{min-height:24px;margin:8px 0 0;text-align:left;font-size:13px;line-height:1.5}
@media(max-width:600px){.auth-card:has(#pin-setup-form){margin:20px auto;padding:24px}.auth-card:has(#pin-setup-form)>h1{margin-bottom:24px}}
@media(max-height:500px) and (orientation:landscape){.auth-card:has(#pin-setup-form){margin:12px auto;padding:18px 24px}.auth-card:has(#pin-setup-form)>h1{margin-bottom:14px}#pin-setup-form .pin-entry{min-height:56px}}

/* Shared Windtag identity for returning users and first-time PIN setup. */
.signin-page{background:var(--paper)}
.signin-page .auth-card,.signin-page .auth-card:has(#pin-setup-form){width:calc(100% - 32px);max-width:380px;margin:clamp(28px,7vh,64px) auto;padding:0;border:0;border-radius:0;box-shadow:none;background:transparent}
.signin-title{margin:0 0 7px;font-size:24px;line-height:1.3;letter-spacing:-.4px}
.signin-description{margin:0 0 22px;font-size:14px}
.pin-account{display:flex;align-items:baseline;flex-wrap:wrap;gap:5px 10px;margin:0 0 22px;padding:0;background:transparent;border-radius:0;min-width:0}
.pin-account>span{font-size:12px;color:#5d7469}
.pin-account>strong{font-size:14px;line-height:1.4;color:var(--ink);font-weight:650;overflow-wrap:anywhere;min-width:0}
.signin-page #username-signin label{margin-top:16px;font-size:13px;font-weight:500}
.signin-page #username-signin input{border-color:#cbd9d1;min-height:48px;padding:11px 12px;border-radius:9px}
.signin-page #username-signin input:focus-visible{outline:2px solid #176d50;outline-offset:2px}
.signin-page #username-signin .pin-entry{margin-bottom:12px}
.signin-page #username-signin input.account-pin-input{padding:0;border:0;min-height:56px}
.signin-page #username-signin .primary{width:100%;display:flex;align-items:center;justify-content:center;gap:12px;margin-top:20px;min-height:48px;border-radius:9px;font-size:14px}
.signin-button-arrow{width:18px;height:18px}
.signin-page #signin-hint{font-size:12px;line-height:1.5;margin-top:12px;color:#64776e}
.signin-page .auth-card>p[role=alert]:empty{display:none}
@media(max-width:600px){.signin-page .auth-card,.signin-page .auth-card:has(#pin-setup-form){margin:28px auto;padding:0}}
@media(max-height:500px) and (orientation:landscape){.signin-page .auth-card,.signin-page .auth-card:has(#pin-setup-form){margin:20px auto;padding:0}.pin-account{margin-bottom:16px}}

/* A visible receipt separates the chosen PIN from its confirmation. */
.pin-receipt{display:flex;align-items:center;gap:9px;max-width:184px;min-height:44px;margin:4px 0 14px;padding:0;background:transparent;border:0;border-radius:0;color:#176d50}
.pin-receipt>svg{width:21px;height:21px;flex:none}
.pin-receipt>strong{font-size:13px;font-weight:650;line-height:1.3}
.pin-setup-error #pin-confirm-stage .pin-entry,.pin-setup-error #pin-confirm-stage .pin-entry:focus-within{background:#fff2ef;border-color:#b33030;box-shadow:0 0 0 3px #b3303010}
.pin-setup-error #pin-confirm-stage .pin-entry-dot{background:#d4a39b}
.pin-setup-error #pin-confirm-stage .pin-entry-dot.filled{background:#b33030}
.pin-setup-busy .pin-entry-dot.filled{background:#176d50}
@media(max-width:360px){.pin-receipt{gap:8px;padding:0}.pin-receipt>strong{font-size:12px}}

/* Keep PIN entry aligned with the centred sign-in form. */
.signin-page .pin-entry{width:100%}
.signin-page .pin-receipt{max-width:none}
#pin-setup-form .pin-setup-status:empty{display:none}
.signin-page #pin-setup-description{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}

/* One aligned instruction, identity and action per step. */
.signin-page .auth-card,.signin-page .auth-card:has(#pin-setup-form){max-width:360px;margin:clamp(32px,7vh,64px) auto}
.pin-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:44px;margin-bottom:12px}
.pin-title-group{display:flex;align-items:center;gap:3px;min-width:0}
.pin-heading #pin-setup-title{margin:0;font-size:24px;line-height:1.3;letter-spacing:-.4px}
.pin-heading .pin-step-label{flex:none;font-size:12px;font-weight:500;color:var(--muted);white-space:nowrap}
.auth-card .pin-back{display:grid;place-items:center;flex:none;width:44px;min-height:44px;padding:8px;margin-left:-12px;border:0;border-radius:50%;background:transparent;color:var(--ink)}
.auth-card .pin-back:hover{background:#153c460c}
.pin-back svg{width:22px;height:22px}
.signin-page .pin-account{display:flex;align-items:baseline;gap:9px;margin:0 0 24px;padding:0}
.pin-account>span{font-size:13px}
.pin-account>strong{font-size:14px}
#pin-setup-form .pin-receipt{min-height:24px;margin:0 0 12px;gap:8px}
#pin-setup-form .pin-receipt>svg{width:19px;height:19px}
#pin-setup-form .pin-receipt>strong{font-size:13px}
.signin-page .pin-entry{min-height:64px;margin:0;border-color:#afc6cc;background:#fff}
.signin-page .pin-entry:focus-within,#pin-setup-form .pin-entry:focus-within{border-color:#087552;box-shadow:0 0 0 3px #08755212}
.signin-page .pin-entry-dot.filled{background:#087552}
.signin-page .pin-entry input.account-pin-input,.signin-page #username-signin input.account-pin-input{min-height:64px;caret-color:transparent!important;color:transparent;-webkit-text-fill-color:transparent}
.signin-page .pin-entry input::selection{background:transparent;color:transparent}
#pin-setup-form .pin-setup-status{margin:12px 0 0;font-size:13px;line-height:1.5}
.signin-page #signin-hint:empty{display:none}
@media(max-height:500px) and (orientation:landscape){.signin-page .auth-card,.signin-page .auth-card:has(#pin-setup-form){margin:24px auto}}

/* Sensor detail close: plain X with an invisible touch target. */
.detail-tools .close{border:0;border-radius:0;min-width:44px;min-height:44px;padding:0;background:transparent;box-shadow:none;-webkit-tap-highlight-color:transparent}
.detail-tools .close:focus{outline:0;box-shadow:none;text-decoration:none}
.detail-tools .close:focus-visible{outline:0;text-decoration:none}
.detail-tools .close:hover{background:transparent}

/* Events on phones: full-width plot, intact checkbox labels and dense rows. */
@media(max-width:1024px){
 #activity .events-timeline{padding:12px 8px 8px}
 #activity .timeline-heading{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
 #activity .timeline-switches{display:grid;grid-template-columns:repeat(4,max-content);justify-content:space-between;gap:0 6px;width:100%}
 #activity .timeline-switches>label{display:inline-flex;align-items:center;flex-wrap:nowrap;white-space:nowrap;gap:5px;min-height:44px;margin:0;font-size:11px}
 #activity .timeline-switches>label:first-child{grid-column:1/-1;display:flex;gap:10px;min-height:40px}
 #activity .timeline-switches>label:first-child select{flex:1;min-width:0;max-width:none;min-height:36px}
 #activity .timeline-switches input{flex:none;width:16px;height:16px;margin:0}
 #activity .telemetry-plot{margin:0;max-width:none;width:100%}
 #activity .timeline-readings{gap:6px 12px;padding:4px 0 8px}
 #activity .timeline-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 12px;padding:6px 0 2px}
 #activity .timeline-legend>span{width:auto;min-width:0;min-height:24px;gap:6px;font-size:11px}
 #activity .timeline-legend .event-symbol{width:19px;height:19px;flex:none}
 #activity .timeline-legend .state-line-key{width:26px;height:14px}
 #activity-rows>tr.activity-entry{padding:8px 12px;gap:4px 10px}
 #activity-rows .activity-badge{font-size:11px;gap:5px}
 #activity-rows .activity-badge .event-symbol{width:19px;height:19px}
 #activity-rows .measurement-report>.measurement-value{font-size:12px;line-height:1.5}
 #activity-rows .measurement-report>.measurement-value:before{display:inline;font-size:11px;margin:0 5px 0 0}
 #activity-rows .measurement-report>td:nth-child(5):before{content:'Battery'}
 #activity-rows .measurement-report>td:nth-child(6):before{content:'Solar'}
}

.message-loading{display:flex;align-items:center;gap:9px;padding:12px 17px;font-size:13px;color:var(--muted)}
.loading-spinner{display:inline-block;width:17px;height:17px;flex:none;border:2px solid #d5e3e7;border-top-color:var(--green);border-radius:50%;animation:message-spin .8s linear infinite}
@keyframes message-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.loading-spinner{animation:none}}
@media(max-width:1024px){
 #diagnostics .toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 12px;padding:12px}
 #diagnostics .toolbar h2{font-size:14px;min-width:0}
 #diagnostics .diagnostic-actions{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-end;gap:6px;width:auto;min-width:0}
 #diagnostics .diagnostic-actions #message-count{display:none}
 #diagnostics .diagnostic-actions button{white-space:nowrap;font-size:11px;padding:8px;min-height:40px}
 #diagnostics .message-loading{padding:10px 12px}
 #diagnostics .table-foot{flex-wrap:wrap;align-items:center;gap:8px;font-size:10px}
 #diagnostics .table-foot>span{flex:1 0 100%}
}

@media(min-width:601px) and (max-width:1024px){#activity-rows .measurement-report>.measurement-value:before{content:none}}

@media(max-width:1024px){#activity #timeline-help:empty,#activity .timeline-readings:empty{display:none}#activity .timeline-switches:has(#timeline-metric option[value="temperature"]:checked){grid-template-columns:repeat(2,max-content)}}

/* Prioritise power readings when inspecting sensor events. */
.event-readings .reading-tile-power{order:-1}

@media(max-width:1024px){
 #packet-rows .compact-device{display:flex;justify-content:space-between;align-items:baseline;gap:4px 10px;flex-wrap:wrap;margin-top:4px}
 #packet-rows .compact-packet{white-space:nowrap}
 #packet-rows .compact-radio{margin-left:auto;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
 #packet-rows .sensor-message .diagnostic-message{display:none}
}

@media(max-width:360px){#packet-rows .compact-device{font-size:10px}}

.account-setup-link textarea{display:block;box-sizing:border-box;width:100%;min-width:0;max-width:100%;margin:6px 0 12px;padding:10px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);font:inherit;font-size:13px;line-height:1.5;resize:vertical}
@media(max-width:600px){.account-setup-link textarea{font-size:16px}}
