/* Loaded after page styles so the desktop console keeps its established layout.
   Narrow layouts reflow their content; overflow belongs to a table or chart. */
.rgc-table-scroll{max-width:100%;min-width:0;overflow-x:auto;overscroll-behavior-x:contain}
.state[hidden]{display:none}

/* --------------------------------------------------------------- the shell
   The sidebar reserves 244px (or the 66px rail) with body padding. A page
   whose header is a row of fixed-cost items could then push its right edge
   past the viewport — the clipped-status-dot defect measured at 1440px. The
   shell layer, not each page, makes that impossible: offset containers and
   header rows are allowed to shrink and wrap, so nothing has to work around
   the navigation. */
body.rgc-has-sb{min-width:0;max-width:100%}
/* min-width only on content columns: never override a page's centred max-width. */
body.rgc-has-sb :is(main,.wrap){min-width:0}
body.rgc-has-sb :is(header,.top,.bar1,.bar2,.hd,.tr-top,.head){min-width:0;max-width:100%}
@media screen and (min-width:1024px){
  body.rgc-has-sb :is(header,.top,.bar1,.bar2){flex-wrap:wrap}
  body.rgc-has-sb :is(header,.top,.bar1,.bar2) > *{min-width:0;max-width:100%}
}
/* Filter, tier and tab rows reflow instead of letting one long chip run under
   the next lane's label (the observed gates/TIERS collision). */
body:not([data-page="wall"]) :is(.gates,.tiers,.chips,.filters,.modes,.tabs,.seg){
  flex-wrap:wrap;min-width:0;max-width:100%}
body:not([data-page="wall"]) :is(.gates,.tiers,.chips,.filters,.modes,.tabs,.seg) > *{max-width:100%}

/* Shared operational typography and control geometry at every screen size. */
*,*::before,*::after{box-sizing:border-box}
img:not([src]),img[src=""]{visibility:hidden}
body{font-size:var(--fs-body);line-height:var(--leading-body);font-variant-numeric:tabular-nums lining-nums}
html:has(body:not([data-page="wall"])){height:auto;min-height:100%;overflow:auto}
body:not([data-page="wall"]){height:auto;min-height:100vh;overflow:visible}
::selection{background:var(--selection-bg);color:var(--selection-fg)}
:is(input,textarea){caret-color:var(--gold)}
:is(input,textarea)::placeholder{color:var(--text-2);opacity:1}
:is(button,input,select,textarea){font-family:var(--font)}
body[data-page] :is(input,select,textarea){border-color:var(--border-control)}
body[data-page] :is(input,select,textarea)[aria-invalid="true"]{border-color:var(--critical)}
body[data-page] :is(button,select,input:not([type="hidden"]),summary,[role="button"],[role="switch"]){min-height:var(--control-height);min-width:var(--control-height)}
body[data-page] :is(button,a,summary,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--gold)!important;outline-offset:3px}
body[data-page] :is(.wrap,main,.cols,.two,.grid,.grid2,.grid3,.head,.grow,.ctls,.srch,.row,.stats){min-width:0}
body[data-page] :is(h1,h2,h3,p,.state,.sub){overflow-wrap:anywhere}
body[data-page] :is(.badge,.tagv,.band,.st,.sev-pill){line-height:var(--leading-label)}
body[data-page] :is(.tagv,.kind,.lbl,.label,.card h2,.zhead h2,th){font-size:var(--fs-xs);letter-spacing:var(--track-label)}
body[data-page] :is(td.n,th.n,.plate,.pl,.pl2,.tm,.vv,.win,.count){font-variant-numeric:tabular-nums lining-nums}
body[data-page] :is(button,a){touch-action:manipulation}
body[data-page="register"] .plate-seg::placeholder{color:var(--border-strong)}
body[data-page="register"] .plate-seg{caret-color:var(--surface-media)}
body[data-page="register"] .plate-seg:focus-visible{outline:2px solid var(--surface-media)!important;outline-offset:-4px}
body[data-page] .sw{width:44px;height:44px;min-width:44px;min-height:44px}
body[data-page] .sw i{inset:11px 2px}
body[data-page] .sw b{top:14px;left:5px}
body[data-page] .sw.on b,body[data-page] .sw[aria-checked="true"] b{left:23px}

/* Consistent page headings; the wall has a separate distance-reading scale. */
body:not([data-page="wall"]) :is(.wrap,main.tr){padding-top:var(--sp-7)}
body:is([data-page="ops"],[data-page="onsite"],[data-page="analytics"],[data-page="track"]) :is(.hd,.tr-top,header){
  min-height:88px;padding:var(--sp-5) var(--sp-6);gap:var(--sp-5);flex-wrap:wrap;align-items:center;background:var(--surface-0)}
body:not([data-page="wall"]) :is(.sub,.hd .sub,.tr-top .sub){font:400 var(--fs-body)/var(--leading-body) var(--font);letter-spacing:0;text-transform:none;margin-top:6px;color:var(--text-2)}
body:not([data-page="wall"]) :is(.head,.hd,.tr-top){margin-bottom:var(--sp-6)}
body:not([data-page="wall"]) :is(.kpi span,.kpis span,.stat2 span,.s span,.k span){font-size:var(--fs-xs);line-height:var(--leading-label);letter-spacing:.09em}

/* History: evidence frames are bounded; filters and metadata stay unboxed. */
body[data-page="ops"] .grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:var(--sp-5)}
body[data-page="ops"] .card{border-radius:var(--r-md);box-shadow:none;animation:none}
body[data-page="ops"] .card .body{padding:var(--sp-4)}
body[data-page="ops"] .plate{font-family:var(--mono);font-size:28px;letter-spacing:.04em;overflow-wrap:anywhere}
body[data-page="ops"] .meta{font-size:var(--fs-sm);line-height:1.5}
body[data-page="ops"] .stripe{height:3px}
body[data-page="ops"] .filters{gap:var(--sp-3);padding-block:var(--sp-2) var(--sp-5);margin-bottom:var(--sp-4);border-bottom:1px solid var(--border)}
body[data-page="ops"] .filters .seg span{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px}
body[data-page="ops"] .filters .seg span.on{box-shadow:inset 0 -1px 0 var(--gold)}
body[data-page="ops"] .tab.active{border-color:var(--gold);background:var(--surface-1)}
body[data-page="ops"] .dot.live{box-shadow:var(--e-live);animation:none}

/* On-site records: plate first, dwell and camera provenance beneath. */
body[data-page="onsite"] .hd{align-items:flex-start}
body[data-page="onsite"] .kpis{padding:0;border:0;gap:var(--sp-6);flex-wrap:wrap}
body[data-page="onsite"] .grid3{grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr));gap:var(--sp-4)}
body[data-page="onsite"] .oc{padding:var(--sp-4);border-left-width:1px;border-radius:var(--r-sm);box-shadow:none}
body[data-page="onsite"] .oc:hover{transform:none;background:var(--surface-2)}
body[data-page="onsite"] .oc .pl{font-size:24px;line-height:1.25;letter-spacing:.04em}
body[data-page="onsite"] .oc .pl.none{font:600 var(--fs-sm)/1.5 var(--font);letter-spacing:0;white-space:normal}
body[data-page="onsite"] .oc :is(.mt,.dwell){font-size:var(--fs-sm);line-height:1.5}

/* Analytics: a metric rail, live zone panels, then open plotting areas. */
body[data-page="analytics"] .kpi{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0;border-block:1px solid var(--border);padding-block:var(--sp-5);margin-bottom:var(--sp-7)}
body[data-page="analytics"] .k{background:none;border:0;border-radius:0;padding:var(--sp-3) var(--sp-4);min-width:0}
body[data-page="analytics"] .k b{line-height:1.2;overflow-wrap:anywhere}
body[data-page="analytics"] .card{background:none;border:0;border-top:1px solid var(--border);border-radius:0;padding:var(--sp-5) 0;margin-bottom:var(--sp-6)}
body[data-page="analytics"] .card h2{font-size:var(--fs-xs);margin-bottom:var(--sp-5)}
body[data-page="analytics"] .two{gap:var(--sp-7);grid-template-columns:repeat(2,minmax(0,1fr))}
body[data-page="analytics"] .z{border-radius:var(--r-md);box-shadow:none;padding:var(--sp-5)}
body[data-page="analytics"] .z :is(.cams,.occ span,.st span){font-size:var(--fs-xs);line-height:1.5}
body[data-page="analytics"] .z .cams{white-space:normal}
body[data-page="analytics"] .z .mini i.on{background:var(--info)}
body[data-page="analytics"] .bars .b i{background:var(--info);border-radius:2px 2px 0 0}
body[data-page="analytics"] .bars .b.peak i{background:var(--gold)}
body[data-page="analytics"] .bars .b :is(span,em){font-size:var(--fs-xs);line-height:1.5;font-variant-numeric:tabular-nums}
body[data-page="analytics"] .rows .r{padding-block:var(--sp-3)}

/* Intelligence and alerts: severity earns contrast; routine rows stay quiet. */
body:is([data-page="intel"],[data-page="alerts"]) .card{background:none;border:0;border-block:1px solid var(--border);border-radius:0}
body:is([data-page="intel"],[data-page="alerts"]) .card h2{padding:var(--sp-4) 0;color:var(--text-3)}
body:is([data-page="intel"],[data-page="alerts"]) :is(.f,.a,.r){padding-block:var(--sp-5)}
body:is([data-page="intel"],[data-page="alerts"]) :is(.tagv,.st){padding:4px 8px}
body[data-page="intel"] .risk{border-radius:var(--r-md);padding:var(--sp-6);gap:var(--sp-6);box-shadow:var(--e-1)}
body[data-page="intel"] .risk.critical{background:var(--critical-bg);border-color:var(--critical-bd)}
body[data-page="intel"] .risk.elevated{background:var(--high-bg);border-color:var(--high-bd)}
body[data-page="intel"] .risk .dial{align-items:flex-start}
body[data-page="intel"] .risk .dial b{font-size:40px;line-height:1.1}
body[data-page="intel"] .dial span{font-size:var(--fs-xs);line-height:1.5}
body[data-page="intel"] .chips{padding:var(--sp-4) 0;gap:var(--sp-2)}
body[data-page="intel"] .chip{display:inline-flex;align-items:center;min-height:44px;min-width:44px;border-radius:var(--r-sm)}
body[data-page="intel"] .chip.on{background:var(--surface-2);border-color:var(--gold);color:var(--text-1)}
body[data-page="intel"] .fd{font-size:var(--fs-body);line-height:var(--leading-body);color:var(--text-3)}
body[data-page="intel"] .ev .r{font-size:var(--fs-xs);padding:var(--sp-3);border:0;border-radius:0}
body[data-page="intel"] .ev .r b{font-variant-numeric:tabular-nums}
body[data-page="alerts"] .stats{background:none;border:0;border-block:1px solid var(--border);border-radius:0;padding:var(--sp-5) 0;gap:var(--sp-7)}
body[data-page="alerts"] .a.done{opacity:1}
body[data-page="alerts"] .a.done :is(.at,.am){color:var(--text-2)}
body[data-page="alerts"] .tab.on{background:var(--surface-1);color:var(--text-1);box-shadow:inset 0 -1px 0 var(--gold)}
body[data-page="alerts"] :is(.am,.rn,.anote,.ack){font-size:var(--fs-sm);line-height:1.6}

/* Handover: a single document surface with explicit internal section rules. */
body[data-page="shift"] .sheet{border-radius:var(--r-md);box-shadow:none}
body[data-page="shift"] .sheet-h{padding:var(--sp-6);align-items:flex-start}
body[data-page="shift"] .sheet-h h2{font:650 22px/1.3 var(--font-display);letter-spacing:-.02em}
body[data-page="shift"] .sheet-h :is(.win,.sig){font-size:var(--fs-sm);line-height:1.6}
body[data-page="shift"] .sheet section{padding:var(--sp-6)}
body[data-page="shift"] .label{font-size:var(--fs-xs);margin-bottom:var(--sp-5)}
body[data-page="shift"] table{font-size:var(--fs-sm)}
body[data-page="shift"] :is(th,td){padding:var(--sp-3)}

/* Tracking: the selected identity carries the weight; timeline rows follow. */
body[data-page="track"] .srch{flex-wrap:wrap;min-width:0}
body[data-page="track"] .idcard{border-left-width:1px;border-radius:var(--r-md);flex-wrap:wrap;gap:var(--sp-6);padding:var(--sp-6)}
body[data-page="track"] .idcard .pl{font-size:40px;line-height:1.2;letter-spacing:.04em;border-width:2px;max-width:100%;overflow-wrap:anywhere}
body[data-page="track"] .idcard .nm{font:600 26px/1.3 var(--font-display);letter-spacing:-.015em}
body[data-page="track"] .ev{border:0;border-bottom:1px solid var(--border);background:none;border-radius:0;padding:var(--sp-4) 0;margin:0}
body[data-page="track"] .ev .g{font-size:var(--fs-lg)}
body[data-page="track"] .ev :is(.d,.tm small){font-size:var(--fs-sm);line-height:1.5}
body[data-page="track"] .ev .clip{display:inline-flex;align-items:center;min-height:44px;min-width:44px;border-radius:var(--r-sm);font-size:var(--fs-xs)}
body[data-page="track"] .modes .md{display:inline-flex;align-items:center;min-height:44px;min-width:44px}
body[data-page="track"] .modes .md.on{background:var(--surface-1);color:var(--text-1);box-shadow:inset 0 -1px 0 var(--gold)}
body[data-page="track"] .vcard{border-left-width:1px;border-radius:var(--r-md)}
body[data-page="track"] .vcard:hover{transform:none;background:var(--surface-2)}

@media screen and (max-width:1023px){
  html{height:auto;min-height:100%;overflow:auto;scroll-padding-top:calc(76px + env(safe-area-inset-top,0px))}
  body[data-page]{height:auto;min-height:100vh;min-height:100dvh;overflow:visible}
  body[data-page],body[data-page] *{box-sizing:border-box}
  body[data-page] :is(main,.wrap,.lv-app,.lv-main,.cols,.card,.sheet,.grid,.grid2,.grid3,.head,.grow,.ctls,.srch,.row,.stats){min-width:0;max-width:100%}
  body[data-page] :is(h1,h2,h3,p,.sub,.state,.meta,.meta-line,.nm,.who,.dd,.rd,.fd,.anote,.rn){overflow-wrap:anywhere}
  body[data-page] :is(button,select,input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),summary,[role="button"],[role="switch"]){min-height:44px;min-width:44px;max-width:100%}
  body[data-page] :is(input,select,textarea){font-size:16px;min-width:0}
  body[data-page] :is(button,a,summary,input,select,textarea,[tabindex]){scroll-margin-block:calc(76px + env(safe-area-inset-top,0px)) 24px}
  body[data-page] :is(.head,.hd,.tr-top,.ctls,.ctl2,.srch,.tabs,.modes,.acts,.filters,.inline-confirm-actions){flex-wrap:wrap;gap:var(--sp-2)}
  body[data-page] :is(.hd,.tr-top,.lv-header),body[data-page="ops"] > header{position:relative;top:auto;flex-wrap:wrap}
  body[data-page] :is(.head,.hd,.tr-top) > *{min-width:0;max-width:100%}
  body[data-page] :is(.tabs,.modes){flex-shrink:1}
  body[data-page] :is(.wrap,main.tr){padding:var(--sp-5) var(--sp-4) var(--sp-6)}
  body[data-page] :is(.hd,.tr-top,.lv-header){padding:var(--sp-4)}
  body[data-page] :is(.grid,.grid2,.grid3,.cols,.two,.zgrid,.lv-grid,.detail-grid,.create-form){grid-template-columns:minmax(0,1fr)}
  body[data-page] .create-form .wide{grid-column:auto}
  body[data-page] .create-form .btn{grid-column:auto;margin-top:0}
  body[data-page] .state .retry{min-height:44px}
  body[data-page] .inline-confirm-actions{gap:8px}
  .toast-host{bottom:calc(16px + env(safe-area-inset-bottom,0px));width:min(520px,calc(100% - 32px))}
  .toast{max-width:100%;overflow-wrap:anywhere}

  /* A switch keeps its familiar track inside a full finger-sized button. */
  body[data-page] .sw{width:44px;height:44px;min-width:44px;min-height:44px}
  body[data-page] .sw i{inset:11px 2px}
  body[data-page] .sw b{top:14px;left:5px}
  body[data-page] .sw.on b,body[data-page] .sw[aria-checked="true"] b{left:23px}

  /* On Site inherited both the wall's non-scrolling root and its KPI rail. */
  body[data-page="onsite"] main{padding:var(--sp-4)}
  body[data-page="onsite"] .hd{align-items:flex-start;gap:var(--sp-4)}
  body[data-page="onsite"] .kpis{flex:1 1 100%;margin:0;border:0;padding:0;display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--sp-4)}
  body[data-page="onsite"] .oc{gap:var(--sp-3);border-left-width:1px}
  body[data-page="onsite"] .oc img{width:88px;height:64px}
  body[data-page="onsite"] .oc .pl{font-size:20px;letter-spacing:.04em;white-space:normal;overflow-wrap:anywhere}
  body[data-page="onsite"] .oc .nm{white-space:normal}
  body[data-page="onsite"] .badge{white-space:normal;line-height:1.3;overflow-wrap:anywhere}

  body[data-page="track"] .srch{margin:0;flex:1 1 100%}
  body[data-page="track"] #lookc{flex:1 1 100%;flex-wrap:wrap;min-width:0}
  body[data-page="track"] .srch :is(input,.combo){flex:1 1 180px;width:100%;min-width:0}
  body[data-page="track"] .idcard{flex-wrap:wrap;gap:var(--sp-4);padding:var(--sp-4);border-left-width:1px}
  body[data-page="track"] .idcard > *{min-width:0;max-width:100%}
  body[data-page="track"] .idcard .pl{font-size:clamp(24px,6vw,38px);padding:8px 12px;letter-spacing:.04em;overflow-wrap:anywhere}
  body[data-page="track"] .idcard .nm{font-size:24px}
  body[data-page="track"] .stat2{margin:0;flex-wrap:wrap;gap:var(--sp-5)}
  body[data-page="track"] .ev{flex-wrap:wrap;gap:var(--sp-3);padding:var(--sp-3)}
  body[data-page="track"] .ev .w{flex:1 1 130px;overflow-wrap:anywhere}
  body[data-page="track"] .ev .tm{white-space:normal;text-align:left}
  body[data-page="track"] .ev .clip{display:inline-flex;align-items:center;min-height:44px;margin:0}
  body[data-page="track"] .modes .md{display:flex;align-items:center;min-height:44px}

  body[data-page="ops"] > header{padding:var(--sp-4);gap:var(--sp-2)}
  body[data-page="ops"] main{padding:var(--sp-4)}
  body[data-page="ops"].wall .grid{grid-template-columns:minmax(0,1fr)}
  body[data-page="ops"] .filters .seg{border:0;background:none;overflow:visible;flex-wrap:wrap;gap:8px}
  body[data-page="ops"] .filters .seg span{display:flex;align-items:center;min-height:44px;min-width:44px;border:1px solid var(--border);border-radius:var(--r-sm)}
  body[data-page="ops"] .filters input[type="text"]{min-width:0;width:100%}
  body[data-page="ops"] #histControls{width:100%}
  body[data-page="ops"] #histControls:not([style*="none"]){display:flex!important;flex-wrap:wrap;gap:8px}
  body[data-page="ops"] #histControls input{flex:1 1 220px;max-width:100%;width:100%}
  body[data-page="ops"] .meta{flex-wrap:wrap}
  body[data-page="ops"] .lb{padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px));z-index:100}
  body[data-page="ops"] .lb .cap{max-width:100%;overflow-wrap:anywhere;text-align:center}
  body[data-page="ops"] .lb .thumbs{max-width:100%;overflow-x:auto;flex:none}
  body[data-page="ops"] .lb .thumbs img{flex:none}
  body[data-page="track"] .lb2{z-index:100}

  body[data-page="alerts"] .a{display:grid;grid-template-columns:7px minmax(0,1fr);gap:12px;padding:var(--sp-3)}
  body[data-page="alerts"] .a .sev{grid-column:1;grid-row:1 / span 3}
  body[data-page="alerts"] .a :is(img,.ab,.acts){grid-column:2}
  body[data-page="alerts"] .acts{gap:8px;flex-wrap:wrap}
  body[data-page="alerts"] .row :is(select,input){min-width:0;flex:1 1 180px}
  body[data-page="alerts"] .stats{gap:var(--sp-4);padding:var(--sp-4)}
  body[data-page="alerts"] .r .rb{flex-basis:180px}

  body[data-page="intel"] .chips{gap:8px}
  body[data-page="intel"] .chip{display:inline-flex;align-items:center;min-height:44px}
  body[data-page="intel"] .f{display:grid;grid-template-columns:8px minmax(0,1fr);gap:12px;padding:var(--sp-3)}
  body[data-page="intel"] .f .sev{grid-column:1;grid-row:1 / span 2}
  body[data-page="intel"] .f :is(.fb,.go){grid-column:2}
  body[data-page="intel"] .ev .r{flex-wrap:wrap;gap:8px}
  body[data-page="intel"] .ev .r .g{flex-basis:100%;white-space:normal}
  body[data-page="intel"] #cams table{min-width:0}

  body[data-page="analytics"] :is(main,.zwrap){padding-left:var(--sp-4);padding-right:var(--sp-4)}
  body[data-page="analytics"] .kpi{grid-template-columns:minmax(0,1fr);padding:0;border:0}
  body[data-page="analytics"] .card{padding:var(--sp-4)}
  body[data-page="analytics"] .bars{overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:8px;height:190px;gap:8px}
  body[data-page="analytics"] .bars .b{flex:1 0 24px}
  body[data-page="analytics"] .rows .r{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
  body[data-page="analytics"] .rows .r .nm{grid-column:1 / -1;white-space:normal;overflow-wrap:anywhere}
  body[data-page="analytics"] .rows .r .tr{min-width:0}
  body[data-page="analytics"] .zhead{flex-wrap:wrap}

  body[data-page="shift"] :is(.sheet-h,.sheet section){padding:var(--sp-4);min-width:0}
  body[data-page="shift"] .rgc-table-scroll table{min-width:560px}
  body[data-page="shift"] .sheet-h .sig{text-align:left}
  body[data-page="shift"] .ctls{flex-shrink:1}
  body[data-page="enroll"] :is(.tabs,.reject-actions){flex-wrap:wrap;gap:8px}
  body[data-page="enroll"] .tab.on{box-shadow:inset 0 -1px 0 var(--gold)}
  body[data-page="enroll"] .link-body{flex-basis:auto}

  body[data-page="live"] .lv-main{padding:var(--sp-4)}
  body[data-page="live"] .lv-app{min-height:0}
  body[data-page="live"] .lv-field{flex:1 0 136px;flex-wrap:wrap}
  body[data-page="live"] .lv-select{min-width:78px}
  body[data-page="live"] .lv-overlay{padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px))}
  body[data-page="live"] .lv-overlay-head{flex-wrap:wrap}
  body[data-page="live"] .lv-overlay-stage{min-height:0}

  body[data-page="license"],body[data-page="login"]{padding:calc(20px + env(safe-area-inset-top,0px)) 16px calc(20px + env(safe-area-inset-bottom,0px));align-items:flex-start}
  body[data-page="license"] .card,body[data-page="login"] .card{padding:var(--sp-5);min-width:0}
  body[data-page="license"] .meta{grid-template-columns:minmax(0,1fr)}
  body[data-page="license"] .meta[hidden]{display:none}
  body[data-page="license"] :is(.brand,form){flex-wrap:wrap}
  body[data-page="license"] form input{flex:1 1 100%;width:100%;min-width:0}
  body[data-page="license"] .contact{padding:12px}
  body[data-page="license"] .contact a{overflow-wrap:anywhere}
  body[data-page="license"] .contact a > div{min-width:0}
  body[data-page="register"] .wrap{padding-top:calc(28px + env(safe-area-inset-top,0px));padding-bottom:calc(28px + env(safe-area-inset-bottom,0px))}
  body[data-page="register"] .plate-shell{gap:8px}
  body[data-page="register"] .plate-seg{font-size:26px;flex-basis:0}
  body[data-page="register"] .consent input[type="checkbox"]{min-width:44px;min-height:44px;margin:0}
}

/* The unattended wall remains a TV surface above this breakpoint. On a phone,
   the hero's text participates in layout so long identities cannot overlap. */
@media screen and (max-width:899px){
  body[data-page="wall"] .app{height:auto;min-height:0}
  body[data-page="wall"] .main{display:flex;flex-direction:column;flex:none;min-height:0}
  body[data-page="wall"] :is(.top,.rail){transform:none;transition:none}
  body[data-page="wall"] .bar1{flex-wrap:wrap;padding:var(--sp-3);gap:var(--sp-3)}
  body[data-page="wall"] .kpis{padding:0;border:0;flex:1 1 100%;justify-content:space-between;gap:8px;flex-wrap:wrap}
  body[data-page="wall"] .kpi{flex-direction:column;align-items:flex-start;gap:8px}
  body[data-page="wall"] .when{margin-left:auto}
  body[data-page="wall"] .ctl{flex-wrap:wrap;gap:8px}
  body[data-page="wall"] .bar1 > .spacer{display:none}
  body[data-page="wall"] .menu{top:100%;right:12px;max-width:calc(100vw - 24px);gap:8px}
  body[data-page="wall"] .top{position:relative}
  body[data-page="wall"] .bar2,body[data-page="wall"] .bar2.hide{height:auto;opacity:1;padding:12px;flex-wrap:wrap;overflow:visible;gap:12px}
  body[data-page="wall"] .lane{flex:1 1 100%;flex-wrap:wrap}
  body[data-page="wall"] .lane-lbl{flex-basis:100%}
  body[data-page="wall"] :is(.gates,.tiers){flex-wrap:wrap;gap:8px;overflow:visible;mask-image:none;-webkit-mask-image:none}
  body[data-page="wall"] :is(.gates .g,.tiers .t){display:flex;align-items:center;min-height:44px;max-width:100%;white-space:normal}
  body[data-page="wall"] .hero{min-height:360px;overflow:hidden}
  body[data-page="wall"] .idle{position:relative;min-height:360px;padding:var(--sp-6) var(--sp-4);text-align:center}
  body[data-page="wall"] .idle-title{font-size:26px}
  body[data-page="wall"] .idle-next{max-width:100%}
  body[data-page="wall"] .stage{position:relative;inset:auto;padding-top:220px}
  body[data-page="wall"] .stage .kb{height:280px}
  body[data-page="wall"] .stage .kb img{animation:none;object-position:center}
  body[data-page="wall"] .stage .vignette{background:linear-gradient(180deg,transparent 120px,var(--surface-0) 280px)}
  body[data-page="wall"] .stage-body{position:relative;inset:auto;padding:var(--sp-4);gap:var(--sp-5);align-items:stretch}
  body[data-page="wall"] .stage-body::before{background:linear-gradient(180deg,transparent,var(--surface-0) 90px)}
  body[data-page="wall"] .stage-body :is(.left,.right){min-width:0;max-width:100%}
  body[data-page="wall"] .plate{font-size:clamp(28px,7.2vw,42px);letter-spacing:1px;padding:8px 12px;gap:12px;border-width:3px;max-width:100%;flex-shrink:1}
  body[data-page="wall"] .plate .p-let{padding-left:12px;border-left-width:3px}
  body[data-page="wall"] .plate.generic{white-space:normal;font-size:24px;overflow-wrap:anywhere}
  body[data-page="wall"] .plate-ar{font-size:28px}
  body[data-page="wall"] .who{font-size:30px!important;letter-spacing:0}
  body[data-page="wall"] :is(.idline,.welcome,.veh){font-size:15px;overflow-wrap:anywhere}
  body[data-page="wall"] .dir{font-size:28px}
  body[data-page="wall"] .gate{font-size:20px;overflow-wrap:anywhere}
  body[data-page="wall"] .quick{justify-content:flex-start;flex-wrap:wrap}
  body[data-page="wall"] .newtag{top:16px;left:16px;font-size:12px;padding:8px 12px}
  body[data-page="wall"] .expected-ribbon{top:64px;left:16px;right:16px;flex-wrap:wrap;gap:8px;font-size:12px}
  body[data-page="wall"] .expected-ribbon b{font-size:14px;overflow-wrap:anywhere}
  body[data-page="wall"] .rail{border-left:0;flex:none}
  body[data-page="wall"] :is(.sec[data-state="live"],.sec-list,.tk-list){max-height:none;overflow:visible}
  body[data-page="wall"] .sec-head{flex-wrap:wrap}
  body[data-page="wall"] .tk img,body[data-page="wall"] .al img{width:76px;height:56px}
  body[data-page="wall"] .tk .tkrow{flex-wrap:wrap;gap:8px}
  body[data-page="wall"] .tk .tkp{flex-basis:100%;font-size:20px;letter-spacing:.04em;white-space:normal;overflow-wrap:anywhere}
  body[data-page="wall"] .tk .tkm{flex-wrap:wrap;font-size:13px;gap:8px}
  body[data-page="wall"] .tk .tkm .gt{flex-basis:100%;white-space:normal}
  body[data-page="wall"] .al .alm{flex-wrap:wrap}
  body[data-page="wall"] .alarmbar{flex-wrap:wrap;gap:12px;padding:var(--sp-4)}
  body[data-page="wall"] .alarmbar .abtxt{flex:1 1 100%;min-width:0}
  body[data-page="wall"] .abtitle{font-size:22px;overflow-wrap:anywhere}
  body[data-page="wall"] .panel{z-index:100}
  body[data-page="wall"] .panel-in{width:100%;padding:calc(16px + env(safe-area-inset-top,0px)) 16px calc(16px + env(safe-area-inset-bottom,0px))}
  body[data-page="wall"] :is(.ph,.pf > div,.plist .row){gap:8px;flex-wrap:wrap}
  body[data-page="wall"] .pf :is(input,select){min-width:0;max-width:100%}
  body[data-page="wall"] .plist .row .m{flex-basis:140px;white-space:normal}
}

@media screen and (min-width:900px) and (max-width:1023px){
  body[data-page="wall"] .app{height:calc(100dvh - var(--rgc-header))}
  body[data-page="wall"] .bar1{flex-wrap:wrap;gap:8px}
  body[data-page="wall"] :is(.ctl,.menu,.gates,.tiers){gap:8px}
  body[data-page="wall"] :is(.gates .g,.tiers .t){display:flex;align-items:center;min-height:44px}
  body[data-page="wall"] .bar2{height:auto;min-height:60px;flex-wrap:wrap;padding-block:8px}
  body[data-page="wall"] .bar2.hide{height:0;min-height:0;padding-block:0}
  body[data-page="wall"] .panel{z-index:100}
  body[data-page="wall"] .panel-in{max-width:100%;padding-bottom:calc(18px + env(safe-area-inset-bottom,0px))}
}

@media (pointer:coarse) and (min-width:1024px){
  body[data-page] :is(button,select,input,summary,[role="button"],[role="switch"]){min-height:44px;min-width:44px}
}

@media print{.rgc-table-scroll{overflow:visible;max-width:none}}

/* ===========================================================================
   Phone hierarchy. Fitting a desktop page onto a phone without reordering it
   puts the chrome first: on the wall you scrolled past roughly 500px of gate
   and tier filters before reaching the arrival you opened the page to see.
   Content first; the controls are still one tap away.
   =========================================================================== */
@media screen and (max-width:899px){
  /* Explanatory page copy is written for a first-time desktop reader. On a
     phone it costs a whole screen, so it collapses to two lines with the rest
     available on tap. */
  .sub{max-height:2.9em;overflow:hidden;position:relative;cursor:pointer}
  .sub.open{max-height:none}
  .sub:not(.open)::after{content:"more";position:absolute;right:0;bottom:0;
    padding-left:26px;font:600 11px/1.45 var(--font);color:var(--gold);
    background:linear-gradient(90deg,transparent,var(--surface-0) 40%)}

  /* The wall's filter row sits below the live card rather than above it. */
  body[data-page="wall"] .app{display:flex;flex-direction:column}
  body[data-page="wall"] .main{order:1}
  body[data-page="wall"] .bar2{order:2;border-top:1px solid var(--border)}
  body[data-page="wall"] .bar1{order:0}

  /* The wall's KPI strip is reference, not the headline: one compact row. */
  body[data-page="wall"] .kpis{gap:14px;padding-left:0;border-left:none;
    width:100%;justify-content:space-between}
  body[data-page="wall"] .kpi b{font-size:20px}
  body[data-page="wall"] .when b{font-size:17px}
}

/* Small screens reflow the same evidence rather than panning a desktop canvas. */
@media screen and (max-width:1023px){
  body:not([data-page="wall"]) :is(.wrap,main.tr){padding-top:var(--sp-5)}
  body:is([data-page="ops"],[data-page="onsite"],[data-page="analytics"],[data-page="track"]) :is(.hd,.tr-top,header){padding:var(--sp-4);gap:var(--sp-4)}
  body[data-page="analytics"] .two{grid-template-columns:minmax(0,1fr)}
  body[data-page="analytics"] .kpi{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4);padding-block:var(--sp-4);border-block:1px solid var(--border)}
  body[data-page="analytics"] .k{padding:0}
  body[data-page="analytics"] .bars{display:grid;grid-template-columns:repeat(auto-fit,minmax(32px,1fr));height:auto;gap:var(--sp-4) var(--sp-2);overflow:visible;padding:0}
  body[data-page="analytics"] .bars .b{height:190px;justify-content:flex-end;min-width:0;gap:4px}
  body[data-page="analytics"] .bars .b span{white-space:normal;overflow-wrap:anywhere;text-align:center}
  body[data-page="onsite"] .kpis{flex-basis:100%;text-align:left;justify-content:space-between}
  body[data-page="track"] .idcard{padding:var(--sp-4);gap:var(--sp-4)}
  body[data-page="track"] .idcard .pl{font-size:32px}
  body[data-page="track"] .idcard .nm{font-size:24px}
  body[data-page="intel"] .risk{padding:var(--sp-4);gap:var(--sp-5)}
  body[data-page="intel"] .risk .kpis{gap:var(--sp-5)}
  body[data-page="alerts"] .stats{padding-block:var(--sp-4);gap:var(--sp-5)}
  body[data-page="shift"] .sheet section,body[data-page="shift"] .sheet-h{padding:var(--sp-4)}
  body[data-page="register"] .consent input[type="checkbox"]{flex:none}
  .sub:not([role="button"])::after{content:none}
}

@media screen and (max-width:600px){
  body:is([data-page="intel"],[data-page="shift"]) .rgc-table-scroll{overflow:visible}
  body:is([data-page="intel"],[data-page="shift"]) .rgc-table-scroll table{display:block;min-width:0;width:100%}
  body:is([data-page="intel"],[data-page="shift"]) .rgc-table-scroll tbody{display:block}
  body:is([data-page="intel"],[data-page="shift"]) .rgc-table-scroll tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3);padding:var(--sp-4) 0;border-bottom:1px solid var(--border)}
  body:is([data-page="intel"],[data-page="shift"]) .rgc-table-scroll tr:has(th){position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);padding:0;border:0}
  body:is([data-page="intel"],[data-page="shift"]) .rgc-table-scroll td{display:block;min-width:0;border:0;padding:0;text-align:start;overflow-wrap:anywhere;font-size:var(--fs-sm);line-height:1.5}
  body:is([data-page="intel"],[data-page="shift"]) .rgc-table-scroll td:first-child{grid-column:1 / -1}
  body:is([data-page="intel"],[data-page="shift"]) .rgc-table-scroll td::before{content:attr(data-label);display:block;color:var(--text-2);font:600 var(--fs-xs)/1.5 var(--font);letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px}
}
