/* Anubis map workbench (Geo Workbench v2, dark-first). Bootstrap 5.3 structure on the anubis-bootstrap.css token bridge.
   This file fixes the geometry the v2 mockups set: classification band 18, context bar 40, rail 44, panel 300, docked
   inspector 340, time bar 44, results 200, status bar 24; the layer glyphs; and the narrow task flow below 960 px.
   Tokens come from css/anubis-bootstrap.css, which is the application's single token source. */
.geo-workspace { display:flex; flex-direction:column; height:calc(100dvh - var(--anubis-chrome-height, 58px) - var(--anubis-band-height, 18px)); min-height:560px; background:var(--color-canvas); color:var(--color-text); font-size:.8125rem; line-height:1.45; }
.geo-workspace .bg-surface { background:var(--color-surface) !important; }
.geo-workspace .label, .anubis-shell .label { font-size:11px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--color-text-faint); }
.geo-workspace .text-faint { color:var(--color-text-faint) !important; }
.geo-context { flex:none; height:40px; font-size:12px; }
.geo-context .form-select-sm { height:28px; min-height:28px; padding-top:.15rem; padding-bottom:.15rem; }
.geo-body { display:flex; flex:1 1 auto; min-height:0; }
.geo-rail { flex:none; width:44px; }
.geo-panel { flex:none; width:360px; overflow-x:hidden; overflow-y:auto; scrollbar-width:thin; }
.geo-panel > * { min-width:0; }
.geo-panel input[type=file] { width:100%; min-width:0; font-size:11.5px; }
.geo-panel .anubis-token-input { min-width:0; }
.geo-panel .anubis-button--small { white-space:normal; }
/* The docked inspector appears with a selection; until then the map keeps its width. */
.geo-workspace:not(.has-selection) .geo-inspector { display:none; }
.geo-panel .panel-head { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.geo-panel .panel-head h1 { font-size:14px; font-weight:600; margin:0; font-family:var(--font-display); letter-spacing:-.01em; }
.geo-panel .q { font-size:11.5px; color:var(--color-text-muted); margin:-8px 0 0; }
.geo-panel fieldset legend { float:none; width:auto; margin-bottom:.25rem; }
.geo-panel .form-check { font-size:12px; }
/* The map column is a main element, which Blazor.Bootstrap sizes to 100vh; the flex row owns its height. */
.geo-map-column { flex:1 1 0; display:flex; flex-direction:column; min-width:0; min-height:0; height:auto; max-height:100%; overflow:hidden; }
.geo-panel, .geo-inspector { min-height:0; }
.geo-stage { position:relative; flex:1 1 0; min-height:0; overflow:hidden; background:var(--map-basemap-water); }
.geo-stage .kepler-map-host { position:absolute; inset:0; width:100%; height:100%; }
/* "Pick on map" is armed: the next click on the map asks for the address at that point. */
.geo-stage .kepler-map-host.is-picking, .geo-stage .kepler-map-host.is-picking canvas { cursor:crosshair !important; }
/* The workbench owns panels, legend and inspector; the Kepler client's own side panel and its toggle stay hidden here. */
.geo-stage .side-panel--container, .geo-stage .side-bar, .geo-stage .side-bar__close { display:none !important; }
.geo-legend { position:absolute; right:8px; bottom:26px; z-index:5; min-width:250px; max-width:320px; max-height:40%; overflow:auto; margin:0; padding:8px 10px; font-size:11.5px; }
.geo-legend .anubis-checkbox label { flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.geo-draw { position:absolute; top:8px; left:8px; z-index:5; display:flex; flex-direction:column; gap:8px; align-items:flex-start; }
.geo-draw .mapctl { display:inline-flex; background:var(--color-surface-raised); border:1px solid var(--color-border-decorative); border-radius:var(--radius-control); overflow:hidden; }
.geo-draw .mapctl .anubis-button { border:0; border-radius:0; min-height:28px; width:30px; padding:0; }
.geo-draw .mapctl .anubis-button + .anubis-button { border-left:1px solid var(--color-border-decorative); }
.geo-draw .mapctl .anubis-button.is-active { background:var(--color-primary-dim); }
.geo-draw .anubis-section, .geo-draw .geo-draw__error { max-width:300px; }
.geo-scale { position:absolute; left:8px; bottom:26px; z-index:4; display:flex; flex-wrap:wrap; align-items:center; gap:12px; font-size:10.5px; color:var(--color-text-muted); }
.geo-scale .scalebar { display:inline-block; width:64px; height:4px; border:1px solid var(--color-text-muted); border-top:0; vertical-align:middle; margin-right:6px; }
.geo-inspector { flex:none; width:340px; display:flex; flex-direction:column; min-height:0; }
.geo-inspector .body { flex:1 1 auto; overflow-y:auto; scrollbar-width:thin; }
.geo-inspector .objtitle { font-family:var(--font-display); font-size:15px; font-weight:600; letter-spacing:-.01em; }
.geo-inspector dl.props { display:grid; grid-template-columns:110px 1fr; gap:4px 10px; margin:0; font-size:11.5px; }
.geo-inspector dl.props dt { color:var(--color-text-faint); font-weight:500; }
.geo-inspector dl.props dd { margin:0; overflow-wrap:anywhere; }
.geo-inspector .linked { display:grid; gap:4px; }
.geo-inspector .linked > div { display:flex; align-items:center; gap:8px; padding:5px 8px; border:1px solid var(--color-border-decorative); border-radius:var(--radius-control); font-size:11.5px; }
.geo-timebar { flex:none; height:44px; font-size:11.5px; white-space:nowrap; overflow:hidden; }
.geo-timebar .form-range { min-width:80px; }
.geo-timebar .form-range { height:14px; padding:0; }
.geo-timebar .form-range::-webkit-slider-runnable-track { height:2px; background:var(--color-border-decorative); }
.geo-timebar .form-range::-moz-range-track { height:2px; background:var(--color-border-decorative); }
.geo-timebar .form-range::-webkit-slider-thumb { width:12px; height:12px; margin-top:-5px; box-shadow:0 0 0 3px var(--color-primary-dim); }
.geo-timebar .form-range::-moz-range-thumb { width:12px; height:12px; box-shadow:0 0 0 3px var(--color-primary-dim); }
.geo-timebar .hist { display:flex; align-items:flex-end; gap:2px; height:26px; }
.geo-timebar .hist b { display:block; width:8px; min-height:1px; background:var(--color-border); opacity:.7; }
.geo-timebar .hist b.c { background:var(--color-primary); opacity:1; }
.geo-table { flex:none; height:200px; display:flex; flex-direction:column; }
.geo-table .table-scroll { flex:1 1 auto; overflow:auto; }
.geo-table thead th { position:sticky; top:0; z-index:1; }
.geo-table .anubis-tabs, .geo-inspector .anubis-tabs, .geo-narrow-tabs { position:static; margin:0; border-bottom:0; background:transparent; scrollbar-width:none; }
.geo-table > .d-flex { min-height:32px; }
.geo-table .anubis-table tr.is-selected td { background:var(--color-primary-dim); }
.geo-table .anubis-table tr.is-selected td:first-child { box-shadow:inset 2px 0 0 var(--color-primary); }
.geo-narrow-tabs { border-bottom:1px solid var(--color-border-decorative); padding-inline:12px; }
.geo-inspector .anubis-tabs { border-bottom:1px solid var(--color-border-decorative); }
.geo-status { flex:none; }
.glyph { width:10px; height:10px; flex:none; display:inline-block; vertical-align:-1px; background:currentColor; }
.glyph-square { border-radius:1px; }
.glyph-circle { border-radius:50%; }
.glyph-triangle { background:none; width:0; height:0; border-left:5px solid transparent; border-right:5px solid transparent; border-bottom:10px solid currentColor; }
.glyph-diamond { transform:rotate(45deg) scale(.8); border-radius:1px; }
.glyph-diamond-outline { transform:rotate(45deg) scale(.8); background:none; border:1.5px solid currentColor; }
.glyph-dashed { height:0; border-top:2px dashed currentColor; width:12px; }
.geo-modal { position:absolute; inset:0; z-index:7; display:flex; align-items:center; justify-content:center; padding:16px; }
.geo-modal .modal-backdrop { position:absolute; inset:0; z-index:0; }
.geo-modal .modal-dialog { position:relative; z-index:1; width:min(520px, 100%); margin:0; }
/* The dialogs sit in this overlay, not in Bootstrap's .modal wrapper that carries the modal colour variables, so the card is styled here. */
.geo-modal .modal-content { display:flex; flex-direction:column; background:var(--color-surface-raised); color:var(--color-text); border:1px solid var(--color-border); border-radius:var(--radius-card); box-shadow:0 12px 32px rgba(0,0,0,.35); }
.geo-modal .modal-header, .geo-modal .modal-body, .geo-modal .modal-footer { padding:16px; }
.geo-modal .modal-header { padding-bottom:8px; }
.geo-modal .modal-footer { padding-top:0; display:flex; gap:8px; }
.geo-modal .modal-title { margin:0; color:var(--color-text); font-size:16px; }
.geo-modal .modal-backdrop { --bs-backdrop-bg:#000; --bs-backdrop-opacity:.6; }
.geo-narrow-tabs, .geo-narrow-rail { display:none; }
@media (max-width:1279px) {
  .geo-panel { width:320px; }
  .geo-inspector { width:280px; }
  .geo-timebar .hist, .geo-context .anb-prov { display:none !important; }
  .geo-legend { min-width:200px; }
}
@media (max-width:959px) {
  .geo-workspace { height:auto; min-height:calc(100dvh - var(--anubis-chrome-height, 58px) - var(--anubis-band-height, 18px)); }
  .geo-context .d-md-inline, .geo-context .vr { display:none !important; }
  .geo-body { flex-direction:column; }
  .geo-rail { display:none !important; }
  .geo-narrow-tabs { display:flex; }
  .geo-narrow-rail { display:flex; justify-content:space-around; }
  .geo-panel, .geo-map-column, .geo-inspector { width:100%; flex:1 1 auto; display:none; }
  [data-narrow-view="form"] .geo-panel { display:block; }
  [data-narrow-view="map"] .geo-map-column { display:flex; }
  [data-narrow-view="map"] .geo-stage { min-height:60dvh; }
  [data-narrow-view="map"] .geo-table { display:none; }
  [data-narrow-view="list"] .geo-map-column { display:flex; }
  [data-narrow-view="list"] .geo-stage, [data-narrow-view="list"] .geo-timebar { display:none; }
  [data-narrow-view="list"] .geo-table { height:auto; flex:1 1 auto; }
  .geo-workspace.has-selection .geo-inspector { display:flex; position:fixed; inset:0; z-index:1050; width:auto; }
  .geo-legend { min-width:0; max-width:calc(100% - 16px); }
}
@media (prefers-reduced-motion:reduce) { .geo-workspace * { transition:none !important; } }
@media (forced-colors:active) { .glyph { forced-color-adjust:none; } .geo-rail .btn.active::before { background:Highlight; } }

/* The tool panel is a grid of fieldsets; without these a long hint or file name makes the grid wider than the panel and clips it. */
.geo-panel .d-grid { grid-template-columns:minmax(0,1fr); }
.geo-panel fieldset { min-width:0; }
.geo-panel .anubis-field, .geo-panel .anubis-field-hint, .geo-panel .anubis-meta { min-width:0; overflow-wrap:anywhere; }
.geo-panel input, .geo-panel select { max-width:100%; }

/* ── Layers panel: a docked column beside the tool panel; every layer is one row (name, count, secondary line, controls). ─────────────── */
.geo-rail__divider { width:22px; height:1px; margin:4px 0; background:var(--color-border-decorative); }
.anubis-rail-badge { position:absolute; top:-3px; inset-inline-end:-4px; min-width:15px; height:15px; padding:0 3px; border-radius:8px; background:var(--color-primary); color:var(--color-primary-on); font-family:var(--font-data); font-size:9.5px; font-weight:700; line-height:15px; text-align:center; }
.geo-layers { flex:none; width:280px; display:flex; flex-direction:column; min-height:0; min-width:0; }
.geo-layers__head { display:flex; align-items:center; gap:8px; padding:8px 10px 4px; }
.geo-layers__head h2 { margin:0; font-family:var(--font-display); font-size:14px; font-weight:600; letter-spacing:-.01em; }
.geo-layers__total { font-size:11.5px; color:var(--color-text-muted); }
.geo-layers__head .anubis-info { margin-inline-start:0; }
.geo-layers__bar { display:flex; gap:6px; padding:4px 10px 8px; border-bottom:1px solid var(--color-border-decorative); }
.geo-layers__list { flex:1 1 auto; min-height:0; margin:0; padding:0; list-style:none; overflow-y:auto; overflow-x:hidden; scrollbar-width:thin; }
.geo-layer { padding:8px 10px; border-bottom:1px solid var(--color-border-decorative); min-width:0; }
.geo-layer__line { display:flex; align-items:center; gap:8px; min-height:24px; }
.geo-layer__toggle { width:14px; height:14px; flex:none; accent-color:var(--color-primary); }
.geo-layer__name { flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12.5px; font-weight:500; cursor:pointer; }
.geo-layer__count { flex:none; font-size:11.5px; }
.geo-layer__meta { margin:1px 0 0 22px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.geo-layer__tags { margin:3px 0 0 22px; }
.geo-layer__controls { display:flex; flex-direction:column; gap:4px; margin:4px 0 0 22px; }
.geo-layer__opacity { display:flex; align-items:center; gap:8px; }
.geo-layer__opacity input[type=range] { flex:1 1 auto; min-width:0; height:16px; accent-color:var(--color-primary); }
.geo-layer__opacity output { flex:none; width:38px; text-align:end; font-size:11px; color:var(--color-text-muted); }
.geo-layer__buttons { display:flex; flex-wrap:wrap; gap:2px; margin:4px 0 0 22px; }
.geo-layer__controls .geo-layer__buttons { margin:0; }
.geo-layer__buttons .anubis-button--small { min-height:24px; padding-inline:6px; }
.geo-layer__move { min-width:24px; }
.geo-layer.is-off .geo-layer__name, .geo-layer.is-off .geo-layer__count, .geo-layer.is-off .glyph { opacity:.7; }
.geo-layer.is-off .geo-layer__name { text-decoration:none; font-style:italic; }
.geo-layer__toggle:focus-visible, .geo-layer__opacity input:focus-visible { outline:var(--anubis-focus-width, 2px) solid var(--color-focus); outline-offset:2px; }
@media (max-width:1279px) { .geo-layers { width:250px; } }
@media (max-width:959px) {
  .geo-layers { display:none; width:100%; max-height:45dvh; border-bottom:1px solid var(--color-border-decorative); }
  [data-narrow-view="map"] .geo-layers { display:flex; }
}
