/* Service Assets page — builds on the clm-* map-page styles (customer-location-map.css) */

.sam-status-chips { display:flex; gap:6px; margin-left:14px; }
.sam-chip {
    display:inline-flex; align-items:center; gap:4px;
    padding:3px 10px; border-radius:9999px;
    font-size:12px; font-weight:600;
}
.sam-chip.overdue { background:#FEF2F2; color:var(--st-error); }
.sam-chip.due { background:#FFFBEB; color:#D97706; }
.sam-chip.ok { background:#F0FDF4; color:var(--st-success); }

.sam-select {
    border:1px solid var(--st-border); border-radius:8px;
    background:var(--st-white); color:var(--st-text);
    font-size:12px; font-family:inherit;
    padding:6px 8px; max-width:170px;
}

/* Overlay column: filter bar on top, list below — survives bar wrapping */
.sam-overlay {
    position:absolute; top:14px; left:14px; right:14px; bottom:14px;
    display:flex; flex-direction:column; gap:10px;
    pointer-events:none; z-index:10;
}
.sam-overlay .clm-filterbar {
    position:static; top:auto; left:auto; right:auto;
    pointer-events:auto;
}
.sam-overlay-body {
    flex:1; min-height:0;
    display:flex; align-items:stretch;
    pointer-events:none;
}

/* Left column: Edit ↔ Live/history toggle on top, the sidebar panel below it */
.sam-left-col {
    display:flex; flex-direction:column; gap:8px;
    min-height:0; max-height:100%;
    pointer-events:none;
}
.sam-mode-toggle {
    display:flex; width:330px; gap:2px;
    padding:3px; border-radius:10px;
    background:rgba(255,255,255,0.97); backdrop-filter:blur(8px);
    border:1px solid var(--st-border);
    box-shadow:0 4px 12px rgba(15,23,42,0.06);
    pointer-events:auto;
}
.sam-mode-toggle button {
    flex:1; display:inline-flex; align-items:center; justify-content:center; gap:6px;
    border:none; background:transparent; cursor:pointer;
    padding:6px 14px; border-radius:8px;
    font-family:inherit; font-size:12px; font-weight:600;
    color:var(--st-muted);
}
.sam-mode-toggle button.on { background:#EEF3FE; color:#3B5BDB; }

/* Live/history sidebar: one card per driver for the selected day */
.sam-driver-panel .sam-day-input { max-width:none; }
.sam-driver-card {
    display:flex; align-items:center; gap:10px;
    padding:10px; border-radius:10px; cursor:pointer;
}
.sam-driver-card:hover { background:#F1F5F9; }
.sam-driver-card.active { background:#EEF3FE; }
.sam-driver-avatar {
    width:38px; height:38px; border-radius:50%; flex-shrink:0;
    border:3px solid var(--st-primary); background:#EEF3FE;
    display:flex; align-items:center; justify-content:center;
    font-size:13px; font-weight:700; overflow:hidden;
}
.sam-driver-avatar img { width:100%; height:100%; border-radius:50%; object-fit:cover; }
.sam-driver-avatar.pulsing { animation:samTrailPulse 2s infinite; }
@keyframes samTrailPulse {
    0%, 100% { box-shadow:0 0 0 4px rgba(74,118,249,0.3); }
    50% { box-shadow:0 0 0 9px rgba(74,118,249,0.08); }
}
.sam-driver-main { min-width:0; flex:1; }
.sam-driver-expand {
    flex-shrink:0; display:flex; align-items:center; justify-content:center;
    width:26px; height:26px; border:none; border-radius:6px;
    background:transparent; color:var(--st-subtle); cursor:pointer;
}
.sam-driver-expand:hover { background:#E2E8F0; color:var(--st-muted); }

/* Expanded stop list under a driver card: sam-row look-alikes of the edit list,
   done stops first (numbered like the map's stop markers), then upcoming. */
.sam-driver-stops { padding:0 6px 8px 14px; }
.sam-stop-row { min-height:38px; padding:5px 8px; }
.sam-stop-row .sam-row-meta { font-size:11px; }
.sam-route-num.upcoming { background:#F1F5F9; min-width:20px; }
.sam-stop-section {
    margin-top:6px; padding:3px 8px;
    font-size:10px; font-weight:700; letter-spacing:0.04em; text-transform:uppercase;
    color:var(--st-subtle);
}
.sam-badge.serviced { background:#F0FDF4; color:var(--st-success); }
.sam-badge.skipped { background:#F1F5F9; color:var(--st-muted); }
.sam-driver-name {
    display:flex; align-items:center; gap:6px;
    font-size:13px; font-weight:600; color:var(--st-text);
}
.sam-driver-name span:first-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sam-driver-meta {
    font-size:11px; color:var(--st-muted);
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.sam-driver-stats { font-size:11px; color:var(--st-muted); }
.sam-badge.driving { background:#EEF3FE; color:#3B5BDB; }
.sam-badge.finished { background:#F0FDF4; color:var(--st-success); }

/* Left list panel — sits in the overlay column, below the filter bar */
.sam-list-panel {
    width:330px;
    background:rgba(255,255,255,0.97); backdrop-filter:blur(8px);
    border:1px solid var(--st-border); border-radius:12px;
    box-shadow:0 4px 12px rgba(15,23,42,0.06);
    display:flex; flex-direction:column;
    overflow:hidden;
    pointer-events:auto;
    max-height:100%;
}
/* Sidebar header: search + filters (fixed); the list scrolls below it. */
.sam-list-header {
    flex-shrink:0;
    display:flex; flex-direction:column; gap:8px;
    padding:8px; border-bottom:1px solid #EEF2F7;
}
.sam-list-header .clm-search { min-width:0; width:100%; }
.sam-filter-row { display:flex; gap:6px; }
.sam-filter-row .sam-select { flex:1; min-width:0; max-width:none; }
.sam-type-pills { display:flex; flex-wrap:wrap; gap:6px; }
.sam-list-count { font-size:11px; color:var(--st-muted); text-align:right; }
.sam-list-count b { color:var(--st-text); font-weight:700; }
.sam-list-scroll { flex:1; min-height:0; overflow-y:auto; padding:6px; }

/* Map toolbar: modes (left) + status chips + actions (right). */
.sam-toolbar-actions { margin-left:auto; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }

/* Day-trail overlay: per-driver legend chips + empty-state note in the toolbar. */
.sam-day-legend { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.sam-day-legend-item {
    display:inline-flex; align-items:center; gap:6px;
    padding:3px 10px; border-radius:9999px;
    background:var(--st-bg); border:1px solid var(--st-border);
    font-size:12px; font-weight:600; color:var(--st-text);
}
.sam-day-legend-item .dot { width:9px; height:9px; border-radius:50%; flex-shrink:0; }
.sam-day-legend-count { color:var(--st-muted); font-weight:500; }
.sam-day-note { font-size:12px; color:var(--st-muted); }

/* Push the map zoom +/- controls below the floating toolbar (scoped to this page only). */
.clm-map-area.sam-map-area .mapboxgl-ctrl-top-right { margin-top: 84px; }

/* Address search — plain input (no background) at the toolbar's left edge */
/* Address search in the map toolbar: one grey pill matching .clm-search, with the
   icon inside the box. AddressAutocomplete ships its own 40px outlined chrome
   (app.css), which left the icon sitting outside a box that was taller than the
   toolbar — strip it here so both live in a single 32px control. */
.sam-addr-search {
    display:flex; align-items:center; gap:8px;
    background:#F1F5F9; border-radius:8px;
    padding:6px 10px; min-width:240px;
    color:var(--st-muted);
}
.sam-mode-select { min-width:120px; }
.sam-addr-search .addr-ac-wrap {
    display:flex; align-items:center; flex:1; min-width:0; margin:0; padding-top:0;
}
.sam-addr-search .addr-ac-label { display:none; }
.sam-addr-search .addr-ac-input-container {
    flex:1; min-width:0; height:22px; min-height:0;
    background:transparent; border:none; border-radius:0; box-shadow:none;
}
.sam-addr-search .addr-ac-input-container:hover,
.sam-addr-search .addr-ac-input-container:focus-within {
    border-color:transparent; box-shadow:none;
}
/* The widget lays itself out at its own (taller) default size; pin the host and
   its input to the toolbar's line height. */
.sam-addr-search .addr-ac-input-container gmp-place-autocomplete {
    height:22px; min-height:0; display:flex; align-items:center;
}
.sam-addr-search .addr-ac-input-container gmp-place-autocomplete::part(input) {
    height:22px !important; min-height:0 !important; line-height:22px !important;
    padding:0 !important; font-size:13px !important;
}
.sam-addr-search .addr-ac-input-container > .addr-ac-input { height:20px; padding:0; font-size:13px; }
.sam-addr-search .addr-ac-input {
    border:none; background:transparent; outline:none;
    font-size:13px; color:var(--st-text); width:100%; font-family:inherit;
}
.sam-row {
    display:flex; align-items:center; gap:10px;
    padding:8px 10px; border-radius:8px; cursor:pointer;
    min-height:44px;
}
.sam-row.dragging { opacity:0.4; }

/* Route mode: drag handle + stop number on each row, hint bar in the header. */
.sam-route-handle {
    display:flex; align-items:center; flex-shrink:0;
    color:#94A3B8; cursor:grab; margin-right:-6px;
}
.sam-route-handle:active { cursor:grabbing; }
.sam-route-num {
    flex-shrink:0; min-width:20px; height:20px; padding:0 4px;
    display:flex; align-items:center; justify-content:center;
    background:#EEF3FE; color:#3B5BDB; border-radius:10px;
    font-size:11px; font-weight:700;
}
.sam-route-bar {
    display:flex; align-items:center; gap:8px;
    padding:6px 8px; border-radius:8px; background:#F8FAFC;
}
.sam-route-hint { flex:1; font-size:11px; color:#64748B; }
/* Drop slot indicator inserted by asset-route-dnd.js (JS-created DOM → global stylesheet). */
.sam-route-ghost {
    height:3px; margin:2px 6px; border-radius:2px;
    background:#4A76F9;
}
.sam-row:hover { background:#F1F5F9; }
.sam-row.selected { background:var(--st-primary-light); }
.sam-row.active { background:var(--st-primary-light); outline:1px solid var(--st-primary); }
.sam-row .dot { width:12px; height:12px; border-radius:50%; flex-shrink:0; }
.sam-row-check { width:15px; height:15px; flex-shrink:0; cursor:pointer; accent-color:var(--st-primary); }
.sam-row-main { flex:1; min-width:0; }
.sam-row-name {
    font-size:13px; font-weight:600; color:var(--st-text);
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.sam-row-meta { font-size:11px; color:var(--st-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* Left overview grouped by service type */
.sam-group-head {
    display:flex; align-items:center; gap:8px;
    padding:7px 8px 7px 4px; border-radius:8px; cursor:pointer;
    min-height:40px; user-select:none;
    position:sticky; top:0; z-index:1;
    background:rgba(248,250,252,0.97); backdrop-filter:blur(8px);
}
.sam-group-head:hover { background:#F1F5F9; }
.sam-group-head .dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; }
.sam-group-name {
    flex:1; min-width:0; font-size:12.5px; font-weight:700; color:#334155;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.sam-group-check { width:15px; height:15px; flex-shrink:0; cursor:pointer; accent-color:var(--st-primary); }
.sam-group-count {
    font-size:11px; font-weight:600; color:var(--st-muted);
    background:#EEF2F7; border-radius:9999px; padding:1px 8px;
}
.sam-group-count.selected { color:var(--st-white); background:var(--st-primary); }
.sam-group-eye {
    display:inline-flex; align-items:center; justify-content:center;
    width:26px; height:26px; flex-shrink:0;
    border:none; background:none; border-radius:6px; cursor:pointer; color:var(--st-muted);
}
.sam-group-eye:hover { background:#E2E8F0; color:#334155; }
.sam-group-head.hidden { opacity:0.55; }
.sam-group-head.hidden .sam-group-name { font-weight:600; }
.sam-row-grouped { padding-left:24px; }

.sam-badge {
    font-size:10px; font-weight:700; text-transform:uppercase;
    padding:2px 7px; border-radius:9999px; flex-shrink:0;
}
.sam-badge.overdue { background:#FEF2F2; color:var(--st-error); }
.sam-badge.due { background:#FFFBEB; color:#D97706; }
.sam-badge.inactive { background:#F1F5F9; color:var(--st-muted); }

.sam-empty { padding:24px 12px; text-align:center; color:var(--st-subtle); font-size:13px; }

/* Bulk action bar — floating bottom center */
.sam-bulk-bar {
    position:absolute; bottom:14px; left:50%; transform:translateX(-50%);
    z-index:12;
    display:flex; align-items:center; gap:10px; flex-wrap:wrap;
    background:rgba(255,255,255,0.97); backdrop-filter:blur(8px);
    border:1px solid var(--st-border); border-radius:12px;
    padding:10px 14px; font-size:13px; color:var(--st-text);
    box-shadow:0 8px 20px rgba(15,23,42,0.12);
}
.sam-bulk-group { display:flex; align-items:center; gap:6px; }
.sam-bulk-bar input[type="number"] {
    border:1px solid var(--st-border); border-radius:8px; padding:5px 8px;
    font-size:12px; font-family:inherit;
}

/* Create card — anchored next to the draft pin (positioned by asset-map.js) */
.sam-create-card {
    position:absolute; left:-9999px; top:0; z-index:12;
    width:280px;
    background:var(--st-white); border:1px solid var(--st-border); border-radius:12px;
    box-shadow:0 8px 20px rgba(15,23,42,0.12);
    padding:14px; display:flex; flex-direction:column; gap:6px;
}
.sam-create-card label, .sam-drawer-body label {
    font-size:11px; font-weight:600; color:var(--st-muted); margin-top:6px;
}
.sam-create-card input, .sam-create-card select,
.sam-drawer-body input:not([type="checkbox"]):not([type="color"]),
.sam-drawer-body select, .sam-drawer-body textarea {
    border:1px solid var(--st-border); border-radius:8px; padding:7px 9px;
    font-size:13px; font-family:inherit; color:var(--st-text); width:100%;
    box-sizing:border-box; background:var(--st-white);
}
/* Move mode: instruction, then confirm/cancel, pinned to the top of the map. */
.sam-move-bar {
    position:absolute; top:14px; left:50%; transform:translateX(-50%); z-index:13;
    display:flex; align-items:center; gap:10px;
    max-width:calc(100% - 32px);
    padding:8px 10px 8px 14px;
    background:var(--st-white); border:1px solid var(--st-border); border-radius:12px;
    box-shadow:0 8px 20px rgba(15,23,42,0.12);
}
.sam-move-text { font-size:13px; font-weight:600; color:var(--st-text); }

/* Confirm card, positioned next to the dropped pin by samStartCardFollow. */
.sam-move-card {
    position:absolute; left:-9999px; top:0; z-index:13;
    width:230px;
    padding:12px 14px;
    background:var(--st-white); border:1px solid var(--st-border); border-radius:12px;
    box-shadow:0 8px 20px rgba(15,23,42,0.12);
}
.sam-move-hintline { font-size:11px; color:var(--st-muted); margin-top:2px; }

.sam-card-title { font-size:13px; font-weight:700; color:var(--st-text); margin-bottom:4px; }
.sam-card-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:10px; }

/* Right drawer (detail / areas) — reuses .clm-panel positioning */
.sam-drawer { display:flex; flex-direction:column; }
.sam-drawer-head {
    display:flex; align-items:center; gap:8px;
    padding:14px 16px; border-bottom:1px solid var(--st-border);
    font-size:14px; color:var(--st-text); flex-shrink:0;
}
.sam-drawer-head .dot { width:12px; height:12px; border-radius:50%; }
.sam-drawer-number { color:var(--st-subtle); font-size:12px; }
.sam-drawer-body { padding:14px 16px; overflow-y:auto; display:flex; flex-direction:column; gap:4px; }
.sam-close {
    margin-left:auto; background:none; border:none; cursor:pointer;
    color:var(--st-subtle); font-size:14px; padding:4px 6px; border-radius:6px;
    font-family:inherit; flex-shrink:0;
}
.sam-close:hover { background:#F1F5F9; color:var(--st-text); }

.sam-meta-line { font-size:12px; color:var(--st-muted); margin-top:8px; }
.sam-history { margin-top:14px; border-top:1px solid var(--st-border); padding-top:10px; }
.sam-log-row { display:flex; gap:8px; padding:6px 0; align-items:flex-start; }
.sam-log-body { flex:1; min-width:0; }
.sam-log-main { font-size:12px; font-weight:600; color:var(--st-text); }
.sam-log-meta { font-size:11px; color:var(--st-muted); }
.sam-log-resolve { margin-left:auto; align-self:center; font-size:11px; padding:3px 8px; white-space:nowrap; }
.sam-log-fixed {
    margin-left:auto; align-self:center; white-space:nowrap;
    font-size:10px; font-weight:600; color:var(--st-success);
    background:#F0FDF4; border-radius:9999px; padding:2px 8px;
}

/* Areas / types rows */
.sam-area-item { border-bottom:1px solid #F1F5F9; }
.sam-area-row {
    display:flex; align-items:center; gap:8px;
    padding:8px 0;
}
.sam-area-row .sam-select { max-width:130px; }

/* Per-area seasonal visibility window */
.sam-area-season {
    display:flex; align-items:center; flex-wrap:wrap; gap:8px;
    padding:0 0 8px 34px; /* indent under the colour swatch */
}
.sam-season-toggle {
    display:inline-flex; align-items:center; gap:6px;
    font-size:11px; color:var(--st-muted); cursor:pointer; user-select:none;
}
.sam-season-fields { display:inline-flex; align-items:center; gap:6px; }
.sam-season-fields .sam-season-month { max-width:84px; }
.sam-season-day {
    width:52px; padding:4px 6px; font-size:12px;
    border:1px solid #E2E8F0; border-radius:6px;
}
.sam-season-dash { color:var(--st-subtle); }
.sam-season-badge {
    display:inline-block; margin-left:8px; padding:1px 7px;
    font-size:10px; font-weight:600; color:#B45309;
    background:#FEF3C7; border-radius:9999px; vertical-align:middle;
}
.sam-color {
    width:26px; height:26px; padding:0; border:none;
    border-radius:6px; cursor:pointer; background:none; flex-shrink:0;
}
.sam-muted { opacity:0.5; }

/* Types modal */
.sam-modal-backdrop {
    position:fixed; inset:0; z-index:1300;
    background:rgba(15,23,42,0.35);
    display:flex; align-items:center; justify-content:center;
}
.sam-modal {
    width:480px; max-width:92vw; max-height:80vh;
    background:var(--st-white); border-radius:14px;
    box-shadow:0 20px 50px rgba(15,23,42,0.25);
    display:flex; flex-direction:column; overflow:hidden;
}

.sam-btn-danger { background:var(--st-white); color:var(--st-error); border-color:#FECACA; }
.sam-btn-danger:hover { background:#FEF2F2; border-color:var(--st-error); }

/* Area edit dialog form */
.sam-area-edit { display:flex; flex-direction:column; gap:16px; }
.sam-field { display:flex; flex-direction:column; gap:6px; }
.sam-field-label { font-size:12px; font-weight:600; color:#475569; }
.sam-field-hint { font-size:11px; color:var(--st-subtle); margin-top:6px; }
.sam-text {
    width:100%; padding:8px 10px; font-size:13px;
    border:1px solid #E2E8F0; border-radius:8px; box-sizing:border-box;
}
.sam-text:focus { outline:none; border-color:var(--st-primary); }
textarea.sam-text { resize:vertical; min-height:44px; }
.sam-edit-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:4px; }

/* Getting-started card (empty state) */
.sam-onboard {
    position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
    z-index:11; width:440px; max-width:90%;
    background:rgba(255,255,255,0.98); backdrop-filter:blur(8px);
    border:1px solid var(--st-border); border-radius:16px;
    box-shadow:0 16px 40px rgba(15,23,42,0.14);
    padding:22px 24px;
}
.sam-onboard-title { font-size:17px; font-weight:700; color:var(--st-text); }
.sam-onboard-sub { font-size:13px; color:var(--st-muted); margin:4px 0 16px; }
.sam-onboard-step {
    display:flex; gap:12px; align-items:flex-start;
    padding:10px 0; border-top:1px solid #F1F5F9;
}
.sam-onboard-step.locked { opacity:0.55; }
.sam-onboard-num {
    width:24px; height:24px; flex-shrink:0;
    display:inline-flex; align-items:center; justify-content:center;
    border-radius:50%; background:var(--st-primary-light); color:var(--st-primary);
    font-size:12px; font-weight:700;
}
.sam-onboard-step.done .sam-onboard-num { background:#F0FDF4; color:var(--st-success); }
.sam-onboard-body { display:flex; flex-direction:column; gap:3px; flex:1; }
.sam-onboard-body b { font-size:13.5px; color:var(--st-text); }
.sam-onboard-body span { font-size:12.5px; color:var(--st-muted); }
.sam-onboard-chips { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }

/* Interval input with explanatory suffix ("2 weeks between service") */
.sam-interval-group {
    display:flex; align-items:center; gap:6px;
    font-size:11.5px; color:var(--st-muted); white-space:nowrap; flex-shrink:0;
}
.sam-interval-group input { width:52px; }

/* Manual service registration in the detail drawer */
.sam-manual-service {
    margin-top:12px; padding-top:12px; border-top:1px solid var(--st-border);
    display:flex; flex-direction:column; gap:4px;
}
.sam-btn-serviced { background:var(--st-success); color:var(--st-white); border-color:var(--st-success); justify-content:center; }
.sam-btn-serviced:hover { background:#15803D; border-color:#15803D; }

/* Photo upload — same dashed drop-zone design as the task/files upload dialog */
.sam-dropzone {
    display:block; border:2px dashed #E2E8F0; border-radius:10px;
    padding:18px 16px; text-align:center; cursor:pointer;
    background:#FAFAFA; transition:border-color 0.15s;
}
.sam-dropzone:hover { border-color:var(--st-primary); }
.sam-dropzone-title { font-size:13px; font-weight:600; color:#475569; margin-bottom:2px; }
.sam-dropzone-sub { font-size:11.5px; color:var(--st-subtle); }
.sam-staged-file {
    display:flex; align-items:center; gap:10px;
    padding:8px 10px; background:var(--st-bg);
    border:1px solid var(--st-border); border-radius:8px;
}
.sam-staged-file-main { flex:1; min-width:0; }
.sam-staged-file-name {
    font-size:12px; font-weight:500; color:var(--st-text);
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.sam-staged-file-size { font-size:11px; color:var(--st-subtle); }

/* ── History tab ──────────────────────────────────────────────────────── */
.sah-wrap {
    padding:24px;
}
.sah-card {
    background: var(--st-white);
    border: 1px solid var(--st-border);
    border-radius: 12px;
    padding: 16px 20px 20px;
}
.sah-tablewrap { border:1px solid var(--st-border); border-radius:12px; overflow:hidden; }
.sah-nowrap { white-space:nowrap; }
.sah-toolbar {
    display:flex; align-items:center; justify-content:space-between;
    flex-wrap:wrap; gap:10px; margin-bottom:14px;
}
.sah-weeknav { display:flex; align-items:center; gap:8px; }
.sah-weeklabel { font-size:14px; font-weight:700; color:var(--st-text); min-width:160px; text-align:center; }
.sah-filters { display:flex; gap:8px; flex-wrap:wrap; }

.sah-loading { padding:40px; text-align:center; }
.sah-summary { display:flex; gap:8px; margin-bottom:14px; }
.sah-empty { padding:40px; text-align:center; color:var(--st-subtle); font-size:14px; }

.sah-list { display:flex; flex-direction:column; }
.sah-day {
    font-size:11px; font-weight:700; color:var(--st-subtle);
    text-transform:uppercase; letter-spacing:0.5px;
    padding:14px 2px 6px; border-bottom:1px solid #F1F5F9;
}
.sah-row {
    display:flex; align-items:center; gap:10px;
    padding:10px 8px; border-bottom:1px solid #F1F5F9;
    cursor:pointer; border-radius:8px;
}
.sah-row:hover { background:var(--st-bg); }
.sah-time { font-size:12px; font-weight:600; color:var(--st-muted); width:42px; flex-shrink:0; }
.sah-dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; display:inline-block; vertical-align:middle; margin-right:6px; }
.sah-main { flex:1; min-width:0; }
.sah-name { font-size:13.5px; font-weight:600; color:var(--st-text); }
.sah-num { color:var(--st-subtle); font-weight:500; font-size:12px; }
.sah-where { font-size:12px; color:var(--st-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sah-note { font-size:12px; color:#475569; font-style:italic; margin-top:2px; }
.sah-who { font-size:12px; color:var(--st-subtle); white-space:nowrap; flex-shrink:0; }
.sah-photos { display:flex; gap:4px; flex-wrap:wrap; }
.sah-photo { flex-shrink:0; }
.sah-photo img {
    width:36px; height:36px; border-radius:6px; object-fit:cover;
    border:1px solid var(--st-border); display:block;
}
.sam-log-photos { display:flex; gap:10px; flex-wrap:wrap; }
.sah-truncated {
    margin-top:12px; padding:8px 12px; font-size:12px; color:#92400E;
    background:#FFFBEB; border:1px solid #FCD34D; border-radius:8px; text-align:center;
}

/* Base map style toggle — sits under the zoom control (top-right of the map). */
.sam-styletoggle-group {
    position:absolute; top:98px; right:10px; z-index:2;
    display:flex; flex-direction:column;
    background:#FFFFFF; border-radius:8px; box-shadow:0 1px 4px rgba(15,23,42,0.25); overflow:hidden;
}
.sam-styletoggle {
    width:30px; height:30px; display:flex; align-items:center; justify-content:center;
    border:none; background:#FFFFFF; color:#475569; cursor:pointer; transition:background .15s, color .15s;
}
.sam-styletoggle + .sam-styletoggle { border-top:1px solid #E2E8F0; }
.sam-styletoggle:hover { background:#F1F5F9; }
.sam-styletoggle.on { background:#4A76F9; color:#FFFFFF; }

/* Cluster on/off toggle — its own pill right under the style toggle group (61px tall). */
.sam-clustertoggle-group { top:167px; }
