:root {
  --jsi-graphite: #111418;
  --jsi-panel: #171b20;
  --jsi-text: #f5f2ea;
  --jsi-muted: #aeb5bb;
  --jsi-brass: #d2a85e;
  --jsi-data: #55c7c1;
  --jsi-warning: #d69b42;
}

body,
button,
input,
select,
textarea { font-family: "IBM Plex Sans", system-ui, sans-serif; }

.modal-card h2,
.planner-head h2,
.copy-info-card h2,
.export-card h2 { font-family: "Source Serif 4", Georgia, serif; }

.brand::after {
  content: "St. Thomas Public Demonstration";
  max-width: 160px;
  margin-left: 12px;
  color: var(--jsi-text);
  font: 600 11px/1.25 "IBM Plex Sans", system-ui, sans-serif;
  letter-spacing: .11em;
  text-transform: uppercase;
}

.topbar { background: rgba(17,20,24,.97); }
.field label,
.toolbox-title { color: var(--jsi-muted); font-size: 10px; }
.field select,
.button,
.quick-tools button,
.quick-tools .files-link,
.controls .site-return { min-height: 44px; font-size: 12px; }

.general-toolbox button:hover,
.general-toolbox button.active,
.mobile-tools-toggle,
.mobile-objects-control a.active {
  border-color: var(--jsi-data) !important;
  background: #17312f !important;
  color: #c9f4f0 !important;
}

.general-toolbox b,
.object-actions button.primary,
.model-tools button.active { color: #9be3de !important; }
.object-entry.active { outline-color: var(--jsi-data); }
.export-note,
.copy-info-note { border-left-color: var(--jsi-warning) !important; }

.copy-mode-badge.team { border-color: var(--jsi-data); }
.copy-mode-badge.team strong { color: #9be3de; }
.team-save,
.save-delivery-note { display: none !important; }

:where(button, a, select, input, textarea):focus-visible {
  outline: 2px solid var(--jsi-data) !important;
  outline-offset: 2px !important;
}

.help-grid a { color: #9be3de; }

.map-measure-dock{position:absolute;z-index:910;left:50%;bottom:48px;width:min(760px,calc(100% - 28px));transform:translateX(-50%);padding:8px;border:1px solid #ffffff2b;background:#0b0e11ed;box-shadow:0 10px 34px #0009}.map-measure-dock>div{display:flex;flex-wrap:wrap;gap:6px}.map-measure-dock button{min-height:44px;border:1px solid #4b545c;background:#171b20;color:var(--jsi-text);padding:0 11px;font-weight:600}.map-measure-dock button[aria-pressed="true"]{border-color:var(--jsi-data);background:#17332c;color:#b9f0dd}.map-measure-dock button:disabled{opacity:.42}.map-measure-dock p{margin:7px 2px 0;color:var(--jsi-muted);font-size:11px}.map-measurement-active #map{cursor:crosshair}.measurement-z{display:block;margin-top:4px;padding-top:4px;border-top:1px solid #d2a85e66;color:#fff;font:600 10px/1.35 "IBM Plex Mono",monospace}.measurement-z small{display:block;margin-top:3px;color:#c6cbd0;font-family:"IBM Plex Sans",system-ui,sans-serif;font-weight:400}

@media (max-width: 720px) {
  .topbar {
    min-height: 68px !important;
    display: grid !important;
    grid-template-columns: auto minmax(0, 1fr) auto !important;
    align-items: center !important;
    gap: 6px !important;
    padding: max(6px, env(safe-area-inset-top)) 8px 6px !important;
  }
  .brand { min-width: 0; }
  .brand::after { display: none; }
  .brand-logo { width: 76px !important; height: 50px !important; object-fit: contain !important; }
  .controls { min-width: 0; margin: 0; gap: 6px; justify-content: flex-end; }
  .controls .use-layer,
  .controls .dataset-field { display: none; }
  .controls .field:not(.use-layer):not(.dataset-field) { min-width: 96px; }
  .controls select { width: 100%; min-width: 0; height: 44px !important; padding: 0 24px 0 10px !important; font-size: 14px !important; }
  .controls #units { width: 96px !important; max-width: none !important; }
  .controls .site-return { flex: 0 0 44px; width: 44px; min-width: 44px; height: 44px; padding: 0; font-size: 0; }
  .controls .site-return::after { content: "⌂"; font-size: 18px; }
  .topbar .jsi-compliance-trigger { position: static !important; width: 44px !important; min-width: 44px !important; height: 44px !important; }
  .mobile-tools-toggle,
  .mobile-menu-toggle { min-width: 56px; min-height: 44px; }
  .quick-tools.mobile-open { grid-template-columns: 1fr 1fr !important; }
  .leaflet-control-layers { transform: translateY(-8px); }
  .map-measure-dock{left:8px;right:8px;bottom:8px;width:auto;transform:none;padding:6px}.map-measure-dock>div{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:4px}.map-measure-dock [data-map-measure]{grid-column:span 4}.map-measure-dock :is(#mapMeasureUndo,#mapMeasureFinish,#mapMeasureCancel,#mapMeasureClear){grid-column:span 3}.map-measure-dock button{width:100%;min-width:0;padding:0 3px;font-size:9px}.map-measure-dock p{font-size:10px;line-height:1.35}
}
