/* gis-pwa.css — PIAI GIS mobile PWA shell (bottom nav + slide-up sheets).
   Shared by the Eliot, Richmond/Hathorn, and Island Falls GIS map viewers.
   Activates only on touch / narrow viewports (<=768px). Desktop is untouched.
   Dark theme to match the GIS maps; amber active accent + slide-up sheet,
   modeled on the Portland Investment Advisors (piallc) mobile app.
   Paired with /gis-pwa.js (which adds body.gpwa-on + body.gpwa-app-<key>). */

:root{
  --gpwa-h: 58px;
  --gpwa-bg: rgba(11,24,38,0.94);
  --gpwa-sheet-bg: #0d2032;
  --gpwa-border: rgba(148,163,184,0.18);
  --gpwa-border-strong: rgba(148,163,184,0.30);
  --gpwa-text: #eef3f9;
  --gpwa-muted: #93a6c0;
  --gpwa-dim: #6f86a4;
  --gpwa-accent: #f5a623;              /* amber active accent (PIA gold family) */
  --gpwa-row-press: rgba(255,255,255,0.05);
  --gpwa-z: 1300;                      /* per-app override below */
}
/* Eliot's tool modals sit at z-index:30, so keep the nav below them (a JS
   observer also slides the nav out of the way when an Eliot modal opens).
   Richmond and Island Falls tool modals are z:2000 (their toasts are z:10000) —
   z:1300 is safely under, so those modals naturally cover the nav. */
body.gpwa-app-eliot{ --gpwa-z: 22; }
body.gpwa-app-richmond{ --gpwa-z: 1300; }
body.gpwa-app-oif{ --gpwa-z: 1300; }

/* ===== mobile / iPhone shell — phones, landscape phones, AND tablets / any
   touch device. The `(pointer: coarse)` term is what now brings tablets
   (e.g. iPad in landscape, >768px wide — touch devices that previously defaulted
   to the desktop layout) into the iPhone UI. Desktop (fine pointer) is left untouched. ===== */
@media (max-width: 768px), (pointer: coarse){

/* --- declutter the crowded top toolbar: hide the tool/utility buttons that
       now live in the bottom nav; keep brand, search, the 9-dot launcher,
       Clear, and the account chip. (.click() still works on hidden buttons.) --- */
body.gpwa-on #toolbar .btn-toggle-nav-feature,
body.gpwa-on .e-toolbar .btn-toggle-nav-feature,
body.gpwa-on #toolbar #btn-groups,
body.gpwa-on #toolbar #btn-table,
body.gpwa-on #toolbar #btn-unmapped,
body.gpwa-on #toolbar #dock-mode-btn,
body.gpwa-on #toolbar #btn-mode,
body.gpwa-on .e-toolbar #btn-mode{ display:none !important; }
body.gpwa-on #toolbar .navbar-sep,
body.gpwa-on .e-toolbar .navbar-sep{ display:none !important; }

/* --- declutter the map: the floating overlay panels now live in the
       Layers / Other sheets (their controls are still in the DOM, just hidden,
       so the sheets can read/drive them). --- */
body.gpwa-on #pia-marker-tools{ display:none !important; }                 /* Anchor / Critical Lots pins */
body.gpwa-on.gpwa-app-richmond #gis-command-panel,
body.gpwa-on.gpwa-app-richmond #gis-command-restore,
body.gpwa-on.gpwa-app-richmond #map-layer-controls,
body.gpwa-on.gpwa-app-oif #map-layer-controls{ display:none !important; }  /* Selection Command Center + layers panel */
body.gpwa-on.gpwa-app-richmond #geolocate-overlay,
body.gpwa-on.gpwa-app-richmond #streetview-overlay{ display:none !important; }  /* locate / street view — moved to the Other sheet */
body.gpwa-on.gpwa-app-eliot #mlc-panel,
body.gpwa-on.gpwa-app-eliot #sel-pill{ display:none !important; }          /* layers panel + selection pill */

/* --- bottom navigation bar --- */
.gpwa-nav{
  position: fixed; left:0; right:0; bottom:0;
  z-index: calc(var(--gpwa-z) + 2);
  display:flex; align-items:stretch;
  height: calc(var(--gpwa-h) + env(safe-area-inset-bottom));
  padding-bottom: env(safe-area-inset-bottom);
  background: var(--gpwa-bg);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  backdrop-filter: blur(18px) saturate(140%);
  border-top: 1px solid var(--gpwa-border);
  box-shadow: 0 -8px 24px rgba(2,8,18,0.45);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  transition: transform .26s ease;
}
body.gpwa-hide-nav .gpwa-nav{ transform: translateY(135%); }

.gpwa-tab{
  flex:1 1 0; min-width:0;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  background:none; border:0; cursor:pointer; position:relative;
  color: var(--gpwa-muted);
  padding:6px 2px 4px; margin:0;
  font: inherit;
  -webkit-tap-highlight-color: transparent;
  transition: color .15s ease;
}
.gpwa-tab svg{ width:23px; height:23px; stroke-width:1.9; display:block; }
.gpwa-tab .gpwa-tab-label{ font-size:10.5px; font-weight:600; letter-spacing:.02em; line-height:1; }
.gpwa-tab:active{ color: var(--gpwa-text); }
.gpwa-tab.is-active{ color: var(--gpwa-accent); }
.gpwa-tab.is-active::before{   /* top accent bar — the PIA app's active indicator */
  content:''; position:absolute; top:0; left:50%; transform:translateX(-50%);
  width:30px; height:3px; border-radius:0 0 3px 3px; background: var(--gpwa-accent);
}

/* --- scrim + slide-up sheet --- */
.gpwa-scrim{
  position:fixed; inset:0; z-index: var(--gpwa-z);
  background: rgba(2,8,18,0.55);
  opacity:0; visibility:hidden; transition: opacity .26s ease, visibility .26s ease;
}
.gpwa-scrim.is-open{ opacity:1; visibility:visible; }

.gpwa-sheet{
  position:fixed; left:0; right:0; bottom:0;
  z-index: calc(var(--gpwa-z) + 1);
  max-height: 78vh;
  display:flex; flex-direction:column;
  background: var(--gpwa-sheet-bg);
  border-top:1px solid var(--gpwa-border-strong);
  border-radius:18px 18px 0 0;
  box-shadow: 0 -24px 50px rgba(2,8,18,0.55);
  transform: translateY(110%);
  transition: transform .3s cubic-bezier(.22,.61,.36,1);
  font-family:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  color: var(--gpwa-text);
}
.gpwa-sheet.is-open{ transform: translateY(0); }
.gpwa-sheet:not(.is-open){ visibility:hidden; pointer-events:none; }
.gpwa-grip{ width:40px; height:4px; border-radius:99px; background: var(--gpwa-border-strong); margin:9px auto 4px; flex:none; cursor:grab; }
.gpwa-sheet-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:6px 18px 12px; border-bottom:1px solid var(--gpwa-border); flex:none;
}
.gpwa-sheet-title{ font-size:18px; font-weight:700; letter-spacing:-.01em; margin:0; }
.gpwa-x{
  width:32px; height:32px; border-radius:50%; border:0; cursor:pointer; flex:none;
  background: rgba(255,255,255,0.06); color: var(--gpwa-muted);
  display:flex; align-items:center; justify-content:center;
}
.gpwa-x svg{ width:18px; height:18px; stroke-width:2.2; }
.gpwa-sheet-body{
  overflow-y:auto; -webkit-overflow-scrolling:touch;
  padding: 4px 0 calc(var(--gpwa-h) + env(safe-area-inset-bottom) + 16px);
}
.gpwa-section{
  font-size:11px; font-weight:700; letter-spacing:.13em; text-transform:uppercase;
  color: var(--gpwa-dim); padding:14px 20px 6px;
}
.gpwa-empty{ padding:18px 20px; color: var(--gpwa-muted); font-size:13.5px; line-height:1.4; }
.gpwa-summary{ padding:12px 20px 2px; color: var(--gpwa-text); font-size:14px; font-weight:600; line-height:1.4; }

/* list rows */
.gpwa-row{
  width:100%; display:flex; align-items:center; gap:12px;
  padding:14px 20px; border:0; background:none; cursor:pointer; text-align:left; margin:0;
  color: var(--gpwa-text); border-top:1px solid var(--gpwa-border); font: inherit;
  -webkit-tap-highlight-color: transparent;
}
.gpwa-row + .gpwa-row{ /* keep top borders between consecutive rows only */ }
.gpwa-section + .gpwa-row{ border-top:0; }
.gpwa-row:active{ background: var(--gpwa-row-press); }
.gpwa-row-main{ flex:1 1 auto; min-width:0; }
.gpwa-row-label{ font-size:15.5px; font-weight:600; line-height:1.25; }
.gpwa-row-sub{ font-size:12.5px; color: var(--gpwa-muted); margin-top:2px; }
.gpwa-row-chev{ flex:none; color: var(--gpwa-dim); display:flex; }
.gpwa-row-chev svg{ width:18px; height:18px; stroke-width:2; }
.gpwa-row.is-current .gpwa-row-label{ color: var(--gpwa-accent); }
.gpwa-check{ flex:none; width:20px; color: var(--gpwa-accent); opacity:0; display:flex; }
.gpwa-check svg{ width:18px; height:18px; stroke-width:2.4; }
.gpwa-row.is-current .gpwa-check{ opacity:1; }

/* toggle switch (layers) */
.gpwa-switch{
  flex:none; width:42px; height:25px; border-radius:99px;
  background: rgba(148,163,184,0.30); position:relative; transition: background .18s ease;
}
.gpwa-switch::after{
  content:''; position:absolute; top:3px; left:3px; width:19px; height:19px; border-radius:50%;
  background:#fff; transition: transform .18s ease; box-shadow:0 1px 3px rgba(0,0,0,.4);
}
.gpwa-row.is-on .gpwa-switch{ background: var(--gpwa-accent); }
.gpwa-row.is-on .gpwa-switch::after{ transform: translateX(17px); }

/* native colour picker swatch (layer colours) */
.gpwa-color-row{ cursor:default; }
.gpwa-color{
  flex:none; width:34px; height:30px; padding:0; margin:0;
  border:1px solid var(--gpwa-border-strong); border-radius:8px;
  background:transparent; cursor:pointer; -webkit-appearance:none; appearance:none;
}
.gpwa-color::-webkit-color-swatch-wrapper{ padding:2px; }
.gpwa-color::-webkit-color-swatch{ border:none; border-radius:6px; }
.gpwa-color::-moz-color-swatch{ border:none; border-radius:6px; }

/* thickness slider row */
.gpwa-range-row{ padding:11px 16px; border-top:1px solid var(--gpwa-border); }
.gpwa-range-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:9px; }
.gpwa-range-val{ font-size:13px; font-weight:700; color: var(--gpwa-accent); font-variant-numeric: tabular-nums; }
.gpwa-range{ width:100%; -webkit-appearance:none; appearance:none; height:4px; border-radius:99px; background: var(--gpwa-border-strong); outline:none; margin:0; }
.gpwa-range::-webkit-slider-thumb{ -webkit-appearance:none; appearance:none; width:20px; height:20px; border-radius:50%; background: var(--gpwa-accent); cursor:pointer; box-shadow:0 1px 3px rgba(0,0,0,.4); }
.gpwa-range::-moz-range-thumb{ width:20px; height:20px; border:none; border-radius:50%; background: var(--gpwa-accent); cursor:pointer; box-shadow:0 1px 3px rgba(0,0,0,.4); }

/* ===== reserve the nav strip per app ===== */
/* Richmond: whole app is inside #app-container (position:fixed; inset:0) — raise its bottom
   so the map, OL controls, search overlay (children of #map) and the data table all ride up. */
body.gpwa-on.gpwa-app-richmond #app-container{
  bottom: calc(var(--gpwa-h) + env(safe-area-inset-bottom)) !important;
}
/* Island Falls: #app-container is position:relative; height:100% — a `bottom:` offset would be
   a no-op, so reserve the strip with bottom padding on the flex column instead. */
body.gpwa-on.gpwa-app-oif #app-container{
  box-sizing: border-box !important;
  padding-bottom: calc(var(--gpwa-h) + env(safe-area-inset-bottom)) !important;
}
/* Richmond + Island Falls: on phones the parcel dock is a position:fixed bottom sheet
   (z:9999, bottom:0). Sit it just above the nav so the tab bar stays visible/tappable. */
body.gpwa-on.gpwa-app-richmond #dock-panel,
body.gpwa-on.gpwa-app-oif #dock-panel{
  bottom: calc(var(--gpwa-h) + env(safe-area-inset-bottom)) !important;
}
/* Island Falls superuser bulk-flag FAB (bottom:16px) — clear the nav strip. */
body.gpwa-on.gpwa-app-oif #if-bulkflag-fab{
  bottom: calc(var(--gpwa-h) + env(safe-area-inset-bottom) + 16px) !important;
}
/* Eliot: #map is position:fixed; bottom:0 — lift it. Its OL controls (.ol-scale-line,
   .ol-attribution), the coords pill (#coords) and the search overlay (#map-search-overlay)
   are all children of #map, so they ride up automatically — do NOT offset them again.
   Only the viewport-fixed table and toast need their own offset. */
body.gpwa-on.gpwa-app-eliot #map{
  bottom: calc(var(--gpwa-h) + env(safe-area-inset-bottom)) !important;
}
body.gpwa-on.gpwa-app-eliot .e-table-wrap{
  bottom: calc(var(--gpwa-h) + env(safe-area-inset-bottom)) !important;
}
body.gpwa-on.gpwa-app-eliot .e-toast-wrap{
  bottom: calc(var(--gpwa-h) + env(safe-area-inset-bottom) + 12px) !important;
}

/* ===== collapsible search: hidden by default, revealed by the search icon ===== */
body.gpwa-on .map-search-overlay{ display:none !important; }
/* the "Feature…" dropdown is redundant with the Zones tab — hide it (still in the DOM for Zones to drive) */
body.gpwa-on .map-search-overlay .map-filter-controls{ display:none !important; }
/* the app's own slide-away handle is replaced by the search icon */
body.gpwa-on #map-search-toggle,
body.gpwa-on .map-search-collapse-handle,
body.gpwa-on .map-search-mobile-hint{ display:none !important; }

body.gpwa-on.gpwa-search-open .map-search-overlay{
  display:flex !important;
  position:fixed !important;
  left:10px !important; right:10px !important;
  bottom: calc(var(--gpwa-h) + env(safe-area-inset-bottom) + 64px) !important;
  width:auto !important; max-width:none !important;
  transform:none !important;
  z-index: calc(var(--gpwa-z) + 3) !important;
}
body.gpwa-on.gpwa-search-open .map-search-overlay .map-search-overlay-content{ width:100% !important; }
body.gpwa-on.gpwa-search-open .map-search-overlay .map-search-container{ min-width:0 !important; width:100% !important; }
body.gpwa-on.gpwa-search-open .map-search-overlay .search-input{ width:100% !important; box-sizing:border-box; }

/* floating search icon (FAB), bottom-left above the nav */
.gpwa-fab{
  position:fixed; left:12px;
  bottom: calc(var(--gpwa-h) + env(safe-area-inset-bottom) + 12px);
  z-index: calc(var(--gpwa-z) + 3);
  width:46px; height:46px; border-radius:50%; margin:0;
  display:flex; align-items:center; justify-content:center;
  background: var(--gpwa-bg);
  -webkit-backdrop-filter: blur(18px) saturate(140%); backdrop-filter: blur(18px) saturate(140%);
  border:1px solid var(--gpwa-border); color: var(--gpwa-text);
  box-shadow: 0 6px 18px rgba(2,8,18,0.45); cursor:pointer;
  transition: color .15s ease, transform .26s ease;
}
.gpwa-fab svg{ width:22px; height:22px; stroke-width:2; }
body.gpwa-search-open .gpwa-fab{ color: var(--gpwa-accent); }
body.gpwa-hide-nav .gpwa-fab{ transform: translateY(135%); }
/* When a slide-up sheet (Tools / Layers / Other) is open, the FAB (z:gpwa-z+3)
   would otherwise float ABOVE the sheet (z:gpwa-z+1) and cover its last row —
   Casey's iPhone screenshot showed the magnifier hiding the "Table" item. The
   scrim and the FAB are both direct children of <body> with the FAB appended
   after the scrim, so a general-sibling rule slides the FAB away whenever a
   sheet is open (search and the sheets are mutually exclusive on mobile). */
.gpwa-scrim.is-open ~ .gpwa-fab{ transform: translateY(135%); pointer-events:none; }

/* ===== mobile-responsive safety-net for modals / popups ===== */
/* React-mounted tool modals (Richmond + Island Falls): let tall centered modals
   scroll from the top, and guard the panel against horizontal overflow. We do NOT
   override their height (Tailwind max-h-[90vh]/h-[95vh] already handles that), and
   we exclude stack-ranking-root which has its own dock mode. */
body.gpwa-on #TIF-root > div, body.gpwa-on #tif-root > div,
body.gpwa-on #tif-compare-root > div,
body.gpwa-on #compare-root > div,
body.gpwa-on #stats-root > div,
body.gpwa-on #groups-root > div,
body.gpwa-on #edit-root > div,
body.gpwa-on #cert-root > div{
  align-items: flex-start !important;
  padding: calc(8px + env(safe-area-inset-top)) 8px calc(env(safe-area-inset-bottom) + 8px) !important;
  overflow-y: auto !important; -webkit-overflow-scrolling: touch;
  box-sizing: border-box;
}
body.gpwa-on #TIF-root > div > div, body.gpwa-on #tif-root > div > div,
body.gpwa-on #tif-compare-root > div > div,
body.gpwa-on #compare-root > div > div,
body.gpwa-on #stats-root > div > div,
body.gpwa-on #groups-root > div > div,
body.gpwa-on #edit-root > div > div,
body.gpwa-on #cert-root > div > div{
  max-width: 96vw !important; margin: 0 auto !important; box-sizing: border-box;
}

/* inline vanilla modal panels (mortgage / growth / groups / upload / images) */
body.gpwa-on .mortgage-calc-content,
body.gpwa-on .growth-calc-content,
body.gpwa-on .upload-modal-content,
body.gpwa-on .groups-modal-content,
body.gpwa-on .images-modal-content{
  max-width: 96vw !important;
  max-height: 88dvh !important;
  overflow-y: auto !important; -webkit-overflow-scrolling: touch;
  box-sizing: border-box !important;
}

/* Eliot modals: full-width + internal scroll at the PWA breakpoint (its own rule is <=720px) */
body.gpwa-on.gpwa-app-eliot .e-modal{
  max-width: 96vw !important;
  max-height: calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom)) !important;
  display: flex; flex-direction: column;
}
body.gpwa-on.gpwa-app-eliot .e-modal-body{ overflow-y: auto; -webkit-overflow-scrolling: touch; }

/* parcel popup: keep its bottom clear of the nav strip so the bar stays usable */
body.gpwa-on .ol-popup{
  max-height: calc(100dvh - 24px - env(safe-area-inset-top) - var(--gpwa-h) - env(safe-area-inset-bottom)) !important;
}

/* Island Falls tax-map sheet chooser is injected with inline desktop geometry.
   Keep its scrolling content and bottom actions above the mobile navigation. */
body.gpwa-on.gpwa-app-oif #if-sheets-panel{
  bottom: calc(var(--gpwa-h) + env(safe-area-inset-bottom) + 8px) !important;
  max-height: calc(100dvh - 60px - var(--gpwa-h) - env(safe-area-inset-bottom) - 16px) !important;
}

/* ===== compact density — PWA shell only (mobile). App-UI density (modals,
        tables, grids, borders) is in the all-widths block at the bottom so it
        applies on desktop too. ===== */
:root{ --gpwa-h: 52px; }                 /* shorter nav bar */

/* the PWA shell itself */
.gpwa-tab{ padding:5px 2px 3px; }
.gpwa-tab svg{ width:22px; height:22px; }
.gpwa-tab .gpwa-tab-label{ font-size:10px; }
.gpwa-grip{ margin:7px auto 3px; }
.gpwa-sheet-head{ padding:4px 16px 8px; }
.gpwa-sheet-title{ font-size:16px; }
.gpwa-section{ padding:9px 16px 3px; font-size:10.5px; }
.gpwa-summary{ padding:8px 16px 2px; font-size:13.5px; }
.gpwa-row{ padding:9px 16px; gap:10px; }
.gpwa-row-label{ font-size:14.5px; }
.gpwa-row-sub{ font-size:11.5px; }

.gpwa-customize-row{
  border:1px solid var(--gpwa-border-strong);
  margin:10px 12px;
  border-radius:12px;
}
.gpwa-customize-item{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto auto;
  align-items:center;
  gap:8px;
}
.gpwa-customize-item.is-hidden .gpwa-row-main{ opacity:.55; }
.gpwa-move-controls{ display:flex; gap:4px; }
.gpwa-move-btn,
.gpwa-visibility-btn{
  min-width:38px;
  min-height:38px;
  border:1px solid var(--gpwa-border);
  border-radius:9px;
  background:transparent;
  color:var(--gpwa-text);
  font-family:inherit;
  font-size:12px;
  font-weight:700;
  line-height:1;
}
.gpwa-move-btn:disabled{ opacity:.3; cursor:not-allowed; }
.gpwa-visibility-btn{ min-width:52px; padding:0 8px; }
.gpwa-visibility-btn[aria-pressed="false"]{
  color:var(--gpwa-accent);
  border-color:rgba(245,166,35,.5);
}
.gpwa-customize-note{
  padding:0 14px 10px;
  color:var(--gpwa-muted);
  font-size:12px;
  line-height:1.45;
}
.gpwa-row.is-disabled{ opacity:.45; }

} /* end @media (max-width:768px) */

/* Desktop only — wide AND fine-pointer (mouse/trackpad): the shell never
   renders. Wide TOUCH tablets are deliberately NOT hidden here (they matched
   the coarse-pointer gate above), so they keep the iPhone shell. */
@media (min-width: 769px) and (pointer: fine){
  .gpwa-nav, .gpwa-sheet, .gpwa-scrim, .gpwa-fab{ display:none !important; }
}

/* ============================================================================
   COMPACT DENSITY — app UI (modals, tables, grids, borders). ALL widths, so it
   applies on desktop too. Scoped to body.gpwa-on (the 3 GIS viewers only).
   ============================================================================ */
/* Eliot modals + stat cards */
body.gpwa-on.gpwa-app-eliot .e-modal-h{ padding:8px 12px !important; }
body.gpwa-on.gpwa-app-eliot .e-modal-body{ padding:8px 12px !important; }
body.gpwa-on.gpwa-app-eliot .e-modal-foot{ padding:6px 12px !important; }
body.gpwa-on.gpwa-app-eliot .e-stat-grid{ gap:6px !important; margin-bottom:8px !important; }
body.gpwa-on.gpwa-app-eliot .e-stat{ padding:5px 8px !important; }

/* Richmond / Island Falls inline modal bodies */
body.gpwa-on .mortgage-calc-body, body.gpwa-on .growth-calc-body,
body.gpwa-on .groups-modal-body, body.gpwa-on .stack-ranking-body,
body.gpwa-on .upload-modal-body, body.gpwa-on .images-modal-body{ padding:10px 12px !important; }

/* any HTML table inside the app: tight cells + hairline rules (AG-Grid/Tabulator use divs, unaffected) */
body.gpwa-on table th, body.gpwa-on table td{ padding:3px 7px !important; }
body.gpwa-on .e-modal table th, body.gpwa-on .e-modal table td{ border-width:1px !important; }

/* AG-Grid data table (Richmond / Island Falls): compact rows + cells */
body.gpwa-on .ag-theme-alpine, body.gpwa-on .ag-theme-alpine-dark{
  --ag-grid-size:3px !important;
  --ag-row-height:30px !important;
  --ag-header-height:32px !important;
  --ag-list-item-height:26px !important;
  --ag-cell-horizontal-padding:7px !important;
  --ag-font-size:12px !important;
}
body.gpwa-on #data-table .ag-cell{ padding:0 7px !important; }

/* Tabulator data table (Eliot): compact rows + cells */
body.gpwa-on .tabulator .tabulator-cell{ padding:3px 6px !important; }
body.gpwa-on .tabulator .tabulator-col .tabulator-col-content{ padding:4px 6px !important; }
body.gpwa-on .tabulator .tabulator-row{ min-height:28px !important; }

/* thin the chunky 2px CHROME borders (selection/marker emphasis borders left alone) */
body.gpwa-on .e-table-wrap{ border-top-width:1px !important; }
body.gpwa-on #data-table-container{ border-top-width:1px !important; }
body.gpwa-on.gpwa-app-richmond #dock-panel,
body.gpwa-on.gpwa-app-oif #dock-panel{ border-top-width:1px !important; }

/* Eliot selection pill restyled to match Richmond's dark-glass selection overlay
   (match the Richmond selection-pill styling for cross-town visual consistency) */
body.gpwa-on.gpwa-app-eliot .e-selset-pill{
  background: linear-gradient(155deg, rgba(15,23,42,0.66) 0%, rgba(15,23,42,0.46) 100%) !important;
  border: 1px solid rgba(148,163,184,0.34) !important;
  border-radius: 14px !important;
  color: rgba(255,255,255,0.92) !important;
  font: 700 11px/1.5 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
  letter-spacing: 0.02em !important;
  text-transform: uppercase !important;
  padding: 10px 14px !important;
  gap: 10px !important;
  box-shadow: 0 12px 28px rgba(2,6,23,0.45), inset 0 1px 0 rgba(255,255,255,0.16) !important;
  -webkit-backdrop-filter: blur(20px) saturate(165%) !important;
  backdrop-filter: blur(20px) saturate(165%) !important;
  /* Richmond's exact position: top-left, just below the toolbar (not centred) */
  top: calc(var(--topbar, 48px) + 10px + env(safe-area-inset-top)) !important;
  left: max(10px, env(safe-area-inset-left)) !important;
  right: auto !important;
  transform: none !important;
  max-width: min(320px, calc(100vw - 20px)) !important;
  line-height: 1.5 !important;
}
body.gpwa-on.gpwa-app-eliot .e-selset-pill #selset-label{ white-space: normal !important; }
body.gpwa-on.gpwa-app-eliot .e-selset-pill .ss-meta{ color:#fff !important; font-weight:950 !important; font-family: inherit !important; }
/* muted AC / VAL labels — like Richmond's .muted */
body.gpwa-on.gpwa-app-eliot .e-selset-pill .ss-mut{ color: rgba(255,255,255,0.62) !important; font-weight:900 !important; margin-left:8px !important; margin-right:2px !important; }
/* Richmond's pill has no Clear button — hide ours (Clear is still in the toolbar) */
body.gpwa-on.gpwa-app-eliot .e-selset-pill .ss-clear{ display:none !important; }
