/* Portal-admin dashboard — dark theme lifted from the timeline POC design tokens.
   Scoped under .padmin so it never touches the Bootstrap operator pages.

   Fonts match Timeline (Geist Sans + Geist Mono), self-hosted from the geist npm
   package (SIL Open Font License — see wwwroot/fonts/geist/LICENSE.txt). */
@font-face {
    font-family: "Geist";
    src: url("../fonts/geist/Geist-Variable.woff2") format("woff2-variations"),
         url("../fonts/geist/Geist-Variable.woff2") format("woff2");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}
@font-face {
    font-family: "Geist Mono";
    src: url("../fonts/geist/GeistMono-Variable.woff2") format("woff2-variations"),
         url("../fonts/geist/GeistMono-Variable.woff2") format("woff2");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

.padmin {
    --bg: #0b0b0d;
    --panel: #15161a;
    --panel-2: #1d1f24;
    --border: #2a2c33;
    --text: #e7e9ee;
    --text-dim: #9aa0aa;
    --text-muted: #6b7280;
    --brand: #f97269;
    --accent: var(--brand);
    --good: #10b981;
    --visit-published: #10b981;
    --visit-manual: #3b82f6;
    --visit-derived: #64748b;
    --bad: #ef4444;
    --warn: #f59e0b;
    --font-sans: "Geist", system-ui, sans-serif;
    --font-mono: "Geist Mono", ui-monospace, monospace;

    position: fixed;
    inset: 0;
    display: flex;
    flex-direction: column;
    background: var(--bg);
    color: var(--text);
    font-family: var(--font-sans);
    font-feature-settings: "ss01", "cv11";
    font-size: 14px;
    line-height: 1.45;
}

.padmin a { color: inherit; text-decoration: none; }
.padmin *, .padmin *::before, .padmin *::after { box-sizing: border-box; }

/* ---- top bar ---- */
.padmin-topbar {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 12px;
    height: 68px;
    padding: 0 16px;
    border-bottom: 1px solid var(--border);
    background: #090909;
}
.padmin-topbar .brand { display: flex; align-items: center; }
.padmin-topbar .brand img { height: 18px; width: 139px; border-radius: 0; display: block; }
.padmin-topbar .crumb { display: inline-flex; align-items: center; color: var(--text); font-size: 14px; font-weight: 500; letter-spacing: -0.01em; }
.padmin-topbar .crumb .sep { display: inline-block; width: 1px; height: 20px; background: var(--border); margin: 0 12px 0 0; }
.padmin-topbar .spacer { flex: 1; }
.padmin-topbar .backlink { color: var(--text-dim); font-size: 12px; }
.padmin-topbar .backlink:hover { color: var(--text); }

/* Account menu — Timeline header UserMenu (same pattern as portal-onboarding .acct) */
.padmin-acct {
    position: relative;
    z-index: 220;
    flex: none;
    width: max-content;
}
.padmin-acct-shell {
    box-sizing: border-box;
    border-radius: 6px;
    border: 1px solid transparent;
    transition: border-color .12s, background .12s;
}
.padmin-acct:not(.open) .padmin-acct-shell:hover {
    border-color: rgba(42, 44, 51, .4);
    background: #090909;
}
.padmin-acct.open .padmin-acct-shell {
    background: #090909;
    border-color: rgba(42, 44, 51, .4);
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}
.padmin-acct-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 34px;
    padding: 0 10px;
    background: transparent;
    border: 0;
    color: rgba(154, 160, 170, .75);
    font: inherit;
    font-size: 12px;
    white-space: nowrap;
    cursor: pointer;
    touch-action: manipulation;
    outline: none;
}
.padmin-acct-btn:hover { color: var(--text-dim); }
.padmin-acct-email {
    font-family: var(--font-mono);
    font-size: 11px;
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
}
.padmin-acct-chevron {
    width: 14px;
    height: 14px;
    flex: none;
    color: rgba(107, 114, 128, .55);
    transition: transform .14s ease;
}
.padmin-acct.open .padmin-acct-chevron { transform: rotate(180deg); }
.padmin-acct-menu {
    position: absolute;
    inset-inline: 0;
    top: 100%;
    z-index: 1;
    box-sizing: border-box;
    display: grid;
    overflow: hidden;
    background: #090909;
    border: 1px solid transparent;
    border-top: 0;
    border-radius: 0 0 6px 6px;
    transition: grid-template-rows .14s cubic-bezier(.33, 1, .68, 1);
    pointer-events: none;
    grid-template-rows: 0fr;
}
.padmin-acct.open .padmin-acct-menu {
    pointer-events: auto;
    grid-template-rows: 1fr;
    border-color: rgba(42, 44, 51, .4);
}
.padmin-acct-menu-inner {
    min-height: 0;
    overflow: hidden;
    padding: 2px 0;
}
.padmin-acct-email-mobile {
    display: none;
    border-bottom: 1px solid rgba(42, 44, 51, .6);
    padding: 8px 10px;
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--text-muted);
    margin: 0;
}
.padmin-acct-item {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 6px 10px;
    border: 0;
    background: transparent;
    color: rgba(154, 160, 170, .8);
    font: inherit;
    font-size: 12px;
    text-align: left;
    cursor: pointer;
    text-decoration: none;
    box-sizing: border-box;
}
.padmin-acct-item:hover {
    background: var(--panel);
    color: var(--text-dim);
}
.padmin-acct-item svg {
    width: 14px;
    height: 14px;
    flex: none;
    color: rgba(107, 114, 128, .55);
}
@media (max-width: 640px) {
    .padmin-acct-email { display: none; }
    .padmin-acct-email-mobile { display: block; }
    .padmin-acct-btn { min-width: 44px; height: 44px; padding: 0 8px; }
}

/* ---- body: sidebar + main ---- */
.padmin-body { flex: 1 1 auto; display: flex; min-height: 0; }

.padmin-sidebar {
    flex: 0 0 14rem;
    border-right: 1px solid var(--border);
    background: var(--panel);
    padding: 12px 8px;
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
    transition: flex-basis .2s ease-out, width .2s ease-out;
}
.padmin-sidebar > .padmin-nav { flex: 1 1 auto; min-height: 0; overflow-y: auto; }

/* ---- sidebar collapse (Timeline parity): icon-only rail + bottom toggle ---- */
.padmin-sidebar-foot { flex: 0 0 auto; padding: 8px 2px 0; }
.padmin-sidebar-toggle {
    display: flex; align-items: center; justify-content: center;
    width: 28px; height: 28px;
    border: 0; border-radius: 6px;
    background: transparent; color: var(--text-dim); cursor: pointer;
    transition: background-color .12s ease, color .12s ease;
}
.padmin-sidebar-toggle:hover { background: color-mix(in srgb, var(--panel-2) 60%, transparent); color: var(--text); }
.padmin-sidebar-toggle svg { width: 14px; height: 14px; display: block; }
.padmin-sidebar-toggle .ico-expand { display: none; }

.padmin-sidebar.padmin-sidebar-collapsed { flex-basis: 3.5rem; padding-left: 6px; padding-right: 6px; }
.padmin-sidebar-collapsed .grouplabel,
.padmin-sidebar-collapsed .padmin-nav a .lbl,
.padmin-sidebar-collapsed .padmin-nav a .soon { display: none; }
.padmin-sidebar-collapsed .padmin-nav a { justify-content: center; gap: 0; padding: 8px; }
.padmin-sidebar-collapsed .padmin-sidebar-foot { display: flex; justify-content: center; }
.padmin-sidebar-collapsed .padmin-sidebar-toggle .ico-collapse { display: none; }
.padmin-sidebar-collapsed .padmin-sidebar-toggle .ico-expand { display: block; }

/* Applied for the first paint so the persisted state doesn't animate on load. */
.padmin-sidebar-noanim,
.padmin-crm-hub #crm-app-ops.crm-app-ops:has(.padmin-sidebar-noanim) { transition: none !important; }
.padmin-sidebar .grouplabel {
    font-size: 10px; font-weight: 600; text-transform: uppercase;
    letter-spacing: .05em; color: var(--text-muted);
    padding: 0 8px; margin-bottom: 6px;
}
.padmin-nav { display: flex; flex-direction: column; gap: 2px; }
.padmin-nav a {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 10px; border-radius: 6px;
    color: var(--text-dim); font-weight: 400; font-size: 14px; line-height: 20px;
}
.padmin-nav a:hover { background: color-mix(in srgb, var(--panel-2) 60%, transparent); color: var(--text); }
.padmin-nav a.active { background: var(--panel-2); color: var(--text); }
.padmin-nav a.disabled { color: var(--text-muted); pointer-events: none; opacity: .55; }
.padmin-nav a .soon {
    margin-left: auto; font-size: 9px; text-transform: uppercase; letter-spacing: .06em;
    color: var(--text-muted); border: 1px solid var(--border); border-radius: 4px; padding: 1px 4px;
}
.padmin-nav .ico { width: 16px; height: 16px; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; opacity: .85; }
.padmin-nav .ico svg { width: 16px; height: 16px; display: block; }
.padmin-nav .padmin-divider { height: 1px; background: var(--border); margin: 10px 8px; }
.padmin-nav .grouplabel { margin-top: 2px; }

.padmin-main { flex: 1 1 auto; min-width: 0; overflow-y: auto; }

/* Map tab: lock the main column to a non-scrolling flex stack so the split
   always fits below the building pills (does not rely on :has() alone). */
.padmin-map-tab .padmin-main,
.padmin-main.padmin-main-map,
.padmin-main:has(.map-page),
.padmin-ingest-tab .padmin-main,
.padmin-main.padmin-main-ingest,
.padmin-main:has(.ingest-page),
.padmin-review-tab .padmin-main,
.padmin-main.padmin-main-review,
.padmin-main:has(.review-page) {
    display: flex; flex-direction: column;
    flex: 1 1 auto; min-height: 0; overflow: hidden;
}
.padmin-map-tab .padmin-main > .padmin-buildingnav,
.padmin-main.padmin-main-map > .padmin-buildingnav,
.padmin-main:has(.map-page) > .padmin-buildingnav,
.padmin-ingest-tab .padmin-main > .padmin-buildingnav,
.padmin-main.padmin-main-ingest > .padmin-buildingnav,
.padmin-main:has(.ingest-page) > .padmin-buildingnav,
.padmin-review-tab .padmin-main > .padmin-buildingnav,
.padmin-main.padmin-main-review > .padmin-buildingnav,
.padmin-main:has(.review-page) > .padmin-buildingnav { flex: 0 0 auto; }
.padmin-map-tab .padmin-main .padmin-content.map-page,
.padmin-main.padmin-main-map .padmin-content.map-page,
.padmin-main:has(.map-page) .padmin-content.map-page {
    flex: 1 1 auto; min-height: 0; overflow: hidden;
}
.padmin-ingest-tab .padmin-main .padmin-content.ingest-page,
.padmin-main.padmin-main-ingest .padmin-content.ingest-page,
.padmin-main:has(.ingest-page) .padmin-content.ingest-page {
    flex: 1 1 auto; min-height: 0; overflow: hidden;
    display: flex; flex-direction: column; gap: 0;
    padding: 0; max-width: none;
}
.padmin-review-tab .padmin-main .padmin-content.review-page,
.padmin-main.padmin-main-review .padmin-content.review-page,
.padmin-main:has(.review-page) .padmin-content.review-page {
    flex: 1 1 auto; min-height: 0; overflow: hidden;
    display: flex; flex-direction: column;
    /* The SPA renders its own full-width subheader (filters + date) directly
       under the building nav; edge-to-edge, so no content padding here. */
    padding: 0; max-width: none;
}
.padmin-review-tab .padmin-main .padmin-content.review-page > :not(#data-review-root),
.padmin-main.padmin-main-review .padmin-content.review-page > :not(#data-review-root),
.padmin-main:has(.review-page) .padmin-content.review-page > :not(#data-review-root) {
    flex: 0 0 auto;
    margin: 16px 24px;
}
.padmin-review-tab .padmin-main .padmin-content.review-page > #data-review-root,
.padmin-main.padmin-main-review .padmin-content.review-page > #data-review-root,
.padmin-main:has(.review-page) .padmin-content.review-page > #data-review-root {
    flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; overflow: hidden;
}

/* ---- building pill selector (top of building-scoped tabs) ---- */
.padmin-buildingnav {
    display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px;
    padding: 12px 24px; border-bottom: 1px solid var(--border);
}
.padmin-buildingnav-pills {
    display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
    min-width: 0;
}
.padmin-buildingnav-actions {
    display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
    margin-left: auto;
}
.padmin-buildingnav .lbl { color: var(--text-muted); font-size: 12px; margin-right: 4px; }

/* Data ingest: primary action + Timeline SiteDatePicker */
.padmin-ingest-day {
    display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px;
}
.padmin-ingest-day-date { display: inline-flex; align-items: center; margin: 0; }
/* Match SiteDatePicker / Timeline h-[30px] action buttons */
.padmin-ingest-day > .btn {
    box-sizing: border-box;
    height: 30px;
    padding: 0 12px;
    font-size: 12px;
    line-height: 1;
}
.sr-only {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

.site-date-picker { position: relative; }
/* Timeline: relative z-[101] flex h-[30px] … rounded-md border … font-mono text-xs */
.site-date-picker-btn {
    position: relative;
    z-index: 101;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 30px;
    padding: 0 10px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
    color: var(--text);
    font-family: var(--font-mono);
    font-size: 12px;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    cursor: pointer;
    transition: border-color .15s, background-color .15s;
}
.site-date-picker-btn:hover { border-color: color-mix(in srgb, var(--accent) 40%, var(--border)); }
.site-date-picker-btn:focus { outline: none; border-color: var(--accent); }
.site-date-picker-btn[aria-expanded="true"] {
    outline: none;
    border-color: color-mix(in srgb, var(--accent) 60%, var(--border));
}
.site-date-picker-btn:disabled {
    opacity: .55;
    cursor: not-allowed;
}
.site-date-picker-btn svg { flex: 0 0 auto; width: 14px; height: 14px; color: var(--text-dim); }
/* Desktop: full date with year. Phone: short label via max-width 767 below. */
.site-date-picker-label-short { display: none; }
.site-date-picker-label-full { display: inline; }
.site-date-picker-backdrop {
    position: fixed;
    inset: 0;
    z-index: 90;
    border: 0;
    padding: 0;
    margin: 0;
    background: transparent;
    cursor: default;
}
/* Timeline: overflow-hidden rounded-md border border-border bg-panel shadow-xl */
.site-date-picker-panel {
    position: fixed;
    z-index: 100;
    width: 280px;
    max-width: calc(100vw - 16px);
    overflow: hidden;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
    color: var(--text);
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.45;
    box-shadow:
        0 20px 25px -5px rgba(0, 0, 0, 0.45),
        0 8px 10px -6px rgba(0, 0, 0, 0.35);
}
.site-date-picker-panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 10px 12px; /* py-2.5 px-3 */
    border-bottom: 1px solid var(--border);
}
.site-date-picker-month {
    font-size: 14px; /* text-sm */
    font-weight: 500;
    line-height: 1.25;
    color: var(--text);
}
.site-date-picker-nav { display: flex; align-items: center; gap: 2px; }
.site-date-picker-nav-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px; /* h-7 w-7 */
    height: 28px;
    padding: 0;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--text-dim);
    cursor: pointer;
    transition: background-color .12s, color .12s;
}
.site-date-picker-nav-btn:hover { background: var(--panel-2); color: var(--text); }
/* Timeline next chevron stays accent on hover (no hover:text-text) */
.site-date-picker-nav-btn.next { color: var(--accent); }
.site-date-picker-nav-btn.next:hover { background: var(--panel-2); color: var(--accent); }
.site-date-picker-nav-btn svg { display: block; }
.site-date-picker-body { padding: 12px; } /* px-3 py-3 */
.site-date-picker-weekdays,
.site-date-picker-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 4px; /* gap-1 */
}
.site-date-picker-weekdays {
    text-align: center;
    font-family: var(--font-mono);
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.05em; /* tracking-wider */
    color: var(--text-muted);
}
.site-date-picker-weekdays span { display: block; padding: 4px 0; } /* py-1 */
.site-date-picker-grid { margin-top: 4px; } /* mt-1 */
.site-date-picker-cell {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 32px; /* h-8 */
    padding: 0;
    margin: 0;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--text);
    font-family: var(--font-mono);
    font-size: 12px; /* text-xs */
    line-height: 1;
    font-variant-numeric: tabular-nums;
    cursor: pointer;
    transition: background-color .12s, color .12s;
}
.site-date-picker-cell:hover { background: var(--panel-2); }
.site-date-picker-cell.selected {
    background: var(--accent);
    color: var(--bg); /* text-bg */
}
.site-date-picker-cell.selected:hover {
    background: var(--accent);
    color: var(--bg);
}
.site-date-picker-cell .today-dot {
    position: absolute;
    bottom: 4px; /* bottom-1 */
    left: 50%;
    width: 4px; /* h-1 w-1 */
    height: 4px;
    border-radius: 50%;
    background: var(--accent);
    transform: translateX(-50%);
    pointer-events: none;
}
.site-date-picker-blank { min-height: 32px; }


/* ---- Data ingest: Timeline-style calendar | edit split ----
   Timeline data-ingest: md:divide-x; schedule fillHeight uses border-0;
   footer is border-t only; no gap under building nav; no bottom rule under split. */
.ingest-split {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    flex: 1 1 auto;
    min-height: 0;
    background: var(--panel);
    border: 0;
}
@media (min-width: 900px) {
    .ingest-split {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    }
}
.ingest-split-cal,
.ingest-split-edit {
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
    background: var(--panel);
    border: 0;
}
@media (min-width: 900px) {
    /* Timeline md:divide-x md:divide-border */
    .ingest-split-edit {
        border-left: 1px solid var(--border);
    }
}
.ingest-cal-wrap {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding: 0;
    border: 0;
    border-radius: 0;
    overflow: hidden;
    background: var(--panel);
}
.ingest-cal {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    /* border/radius cleared again after .cal — see .cal.ingest-cal below */
    border: 0;
    border-radius: 0;
    overflow: hidden;
}
.ingest-cal .cal-scroll {
    flex: 1 1 auto;
    max-height: none;
    min-height: 0;
}
.ingest-edit-idle {
    flex: 1 1 auto;
    min-height: 0;
    background: var(--panel);
}
.ingest-visits-panel {
    margin: 0 20px 20px;
    flex: 0 0 auto;
}
.ingest-page > .panel:first-child {
    margin: 20px;
}
.ingest-setup-banner {
    flex: 0 0 auto;
    margin: 12px 16px 0 !important;
    border-color: color-mix(in srgb, var(--warn) 45%, var(--border));
}
.ingest-setup-banner strong { color: var(--warn); }

/* Schedule day footer — Timeline SCHEDULE_FOOTER_SHELL_CLASS: border-t only */
.ingest-schedule-footer {
    flex: 0 0 auto;
    height: 180px;
    min-height: 180px;
    max-height: 180px;
    border: 0;
    border-top: 1px solid var(--border);
    background: color-mix(in srgb, var(--panel-2) 30%, transparent);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
@media (max-width: 1100px) {
    .ingest-schedule-footer {
        height: 120px;
        min-height: 120px;
        max-height: 120px;
    }
}
.ingest-schedule-footer-scroll {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    padding-bottom: 16px;
    /* Timeline global / .scrollbar-fine (footer uses that baseline, not schedule 7px) */
    scrollbar-width: thin;
    scrollbar-color: var(--border) transparent;
}
.ingest-schedule-footer-scroll::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}
.ingest-schedule-footer-scroll::-webkit-scrollbar-track {
    background: transparent;
}
.ingest-schedule-footer-scroll::-webkit-scrollbar-thumb {
    background: color-mix(in srgb, var(--border) 90%, transparent);
    border: 2px solid transparent;
    background-clip: padding-box;
    border-radius: 999px;
    transition: background-color 0.2s ease;
}
.ingest-schedule-footer-scroll::-webkit-scrollbar-thumb:hover {
    background: color-mix(in srgb, var(--text-muted) 80%, transparent);
    background-clip: padding-box;
    border: 2px solid transparent;
}
.ingest-schedule-footer-scroll::-webkit-scrollbar-corner {
    background: transparent;
}
.ingest-footer-body {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 12px 20px 0 20px; /* Timeline MAP_PANEL_FOOTER: py-3 pl-5 */
}
.ingest-schedule-footer .footer-day-header {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin: 0;
    padding: 0 0 12px;
    border-bottom: 1px solid color-mix(in srgb, var(--border) 50%, transparent);
}
.ingest-schedule-footer .footer-day-title-row {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}
.ingest-schedule-footer .footer-day-title {
    margin: 0;
    min-width: 0;
    font-size: 15px;
    font-weight: 600;
    letter-spacing: -0.01em;
    line-height: 1.25;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.ingest-schedule-footer .footer-empty {
    margin: 0;
    font-size: 12px;
    line-height: 1.5;
    color: var(--text-muted);
}
.ingest-schedule-footer .footer-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 0;
}
.ingest-schedule-footer .footer-chip {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    min-width: 0;
    border: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
    background: color-mix(in srgb, var(--panel) 70%, transparent);
    border-radius: 6px;
    padding: 6px 10px;
}
.ingest-schedule-footer .footer-chip-value {
    font-family: var(--font-mono);
    font-size: 13px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.01em;
    color: var(--text);
    line-height: 1;
}
/* Timeline DayActivityFixtureSummaryValue: cleaned / total */
.ingest-schedule-footer .footer-chip-fixture-frac {
    font-weight: 600;
}
.ingest-schedule-footer .footer-fixture-cleaned { color: var(--text); }
.ingest-schedule-footer .footer-fixture-slash {
    padding: 0 1px;
    font-weight: 400;
    color: color-mix(in srgb, var(--text-muted) 50%, transparent);
}
.ingest-schedule-footer .footer-fixture-total {
    font-weight: 500;
    color: var(--text-dim);
}
.ingest-schedule-footer .footer-chip-label {
    font-size: 11px;
    line-height: 1;
    color: var(--text-dim);
    white-space: nowrap;
}
.ingest-schedule-footer .footer-table {
    padding-top: 4px;
}
.ingest-schedule-footer .footer-row {
    display: grid;
    /* Fixed Duration track so every row shares one right edge (rows are
       independent grids — minmax/auto per-row sizing cannot align columns). */
    grid-template-columns: minmax(0, 8.5rem) minmax(0, 1fr) auto 7.5rem;
    column-gap: 16px;
    align-items: center;
    font-size: 12px;
}
.ingest-schedule-footer .footer-row-head {
    padding: 0 0 4px;
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted);
}
.ingest-schedule-footer .footer-row-head > span:nth-child(3),
.ingest-schedule-footer .footer-row-head > span:nth-child(4) {
    text-align: right;
}
/* Headers share data column classes — keep muted label chrome on desktop.
   Time, Bathroom, Duration keep the same horizontal padding as data so they line up.
   Fixtures header zeros padding; phone zeros padding separately. */
.ingest-schedule-footer .footer-row-head .footer-fixtures {
    padding: 0;
    font-family: inherit;
    font-variant-numeric: normal;
    font-weight: 500;
    color: inherit;
}
.ingest-schedule-footer .footer-row-head .footer-time,
.ingest-schedule-footer .footer-row-head .footer-bathroom-cell,
.ingest-schedule-footer .footer-row-head .footer-duration {
    font-family: inherit;
    font-variant-numeric: normal;
    font-weight: 500;
    color: inherit;
}
/* Right-aligned headers: kill trailing letter-spacing so the label’s right
   edge matches the data (letter-spacing adds space after the last glyph). */
.ingest-schedule-footer .footer-row-head .footer-fixtures,
.ingest-schedule-footer .footer-row-head .footer-duration {
    text-align: right;
    letter-spacing: 0;
}
.ingest-schedule-footer .footer-row-data {
    border-top: 1px solid color-mix(in srgb, var(--border) 50%, transparent);
    padding: 8px 0;
    color: var(--text);
    text-decoration: none;
    transition: background-color .15s;
}
.ingest-schedule-footer .footer-row-data:hover {
    background: color-mix(in srgb, var(--panel-2) 60%, transparent);
}
.ingest-schedule-footer .footer-row-clickable { cursor: pointer; }
.ingest-schedule-footer .footer-time {
    padding: 0 12px 0 8px;
    text-align: left;
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    color: var(--text-dim);
    white-space: nowrap;
}
.ingest-schedule-footer .footer-time-compact { display: none; }
.ingest-schedule-footer .footer-bathroom-cell {
    min-width: 0;
    padding: 0 12px;
    text-align: left;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.ingest-schedule-footer .footer-fixtures {
    padding: 0 12px;
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: var(--text-dim);
    white-space: nowrap;
}
.ingest-schedule-footer .footer-duration {
    box-sizing: border-box;
    justify-self: stretch;
    width: 100%;
    min-width: 0;
    padding: 0;
    text-align: right;
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    color: var(--text-dim);
    white-space: nowrap;
}
/* Timeline ingest comments use border-t-0 inside the footer */
.ingest-footer-comment {
    margin-top: 4px;
    padding: 12px 0 16px;
    border-top: none;
}
.ingest-footer-add-comment {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    padding: 6px 10px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel-2);
    color: var(--text-dim);
    font-size: 12px;
    line-height: 1.25;
    text-align: left;
    cursor: pointer;
    opacity: 1;
    transition: border-color .15s, color .15s;
}
.ingest-footer-add-comment:hover {
    border-color: color-mix(in srgb, var(--accent) 50%, var(--border));
    color: var(--text);
}
.ingest-footer-comment-heading {
    margin: 0;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--text-muted);
}
.ingest-footer-comment-display {
    display: block;
    width: 100%;
    margin: 0;
    padding: 4px 0;
    border: 0;
    background: transparent;
    color: inherit;
    text-align: left;
    cursor: pointer;
    border-radius: 6px;
    transition: background-color .15s;
}
.ingest-footer-comment-display:hover {
    background: color-mix(in srgb, var(--panel-2) 50%, transparent);
}
.ingest-footer-comment-body {
    margin-top: 6px;
    font-size: 12px;
    line-height: 1.55;
    color: var(--text-dim);
    white-space: pre-wrap;
    word-break: break-word;
}
.ingest-footer-comment-editor {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.ingest-footer-comment-textarea {
    box-sizing: border-box;
    width: 100%;
    min-height: 7.5rem;
    margin: 0;
    padding: 8px 10px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
    color: var(--text);
    font-family: var(--font-sans);
    font-size: 12px;
    line-height: 1.55;
    resize: vertical;
}
.ingest-footer-comment-textarea:focus {
    outline: none;
    border-color: color-mix(in srgb, var(--accent) 55%, var(--border));
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 25%, transparent);
}
.ingest-footer-comment-textarea::placeholder {
    color: color-mix(in srgb, var(--text-muted) 70%, transparent);
}
@media (max-width: 1100px) {
    .ingest-footer-body { padding: 8px 12px 0; gap: 6px; }
    .ingest-schedule-footer .footer-day-header { gap: 8px; padding-bottom: 8px; }
    .ingest-schedule-footer .footer-chip { gap: 4px; padding: 4px 6px; }
    .ingest-schedule-footer .footer-chip-value { font-size: 12px; }
    .ingest-schedule-footer .footer-chip-label { font-size: 10px; }
    .ingest-schedule-footer .footer-row {
        grid-template-columns: minmax(0, 5.25rem) minmax(0, 1fr) auto 6.5rem;
        column-gap: 4px;
        font-size: 11px;
        letter-spacing: -0.01em;
    }
    .ingest-schedule-footer .footer-time,
    .ingest-schedule-footer .footer-bathroom-cell,
    .ingest-schedule-footer .footer-fixtures,
    .ingest-schedule-footer .footer-duration { padding-left: 0; padding-right: 0; }
    .ingest-schedule-footer .footer-time-full { display: none; }
    .ingest-schedule-footer .footer-time-compact { display: inline; }
    .ingest-schedule-footer .footer-row-data { padding: 10px 0; min-height: 44px; }
}
.ingest-cal .cal-head {
    min-height: 57px; /* Timeline MAP_PANEL_TOP_H_PX */
    height: 57px;
    align-items: stretch;
    flex: none;
    box-sizing: border-box;
    /* Day cells draw border-b — don't stack .cal-head's rule */
    border-bottom: none;
}
/* Kill legacy .cal-head .dh chrome so Timeline typography wins */
.ingest-cal .cal-head .dh {
    font-weight: 400;
    font-size: inherit;
    padding: 0;
    color: inherit;
    border-left: 0;
    text-align: center;
}
.ingest-cal .cal-head .dh.today {
    color: inherit;
}
/* ScheduleGrid prev/next chevrons */
.ingest-cal .cal-nav-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--text-dim);
    cursor: pointer;
    transition: background-color .15s, color .15s;
}
.ingest-cal .cal-nav-btn:hover { background: var(--panel-2); color: var(--text); }
.ingest-cal .cal-nav-btn:active {
    background: color-mix(in srgb, var(--panel-2) 80%, transparent);
    color: var(--text);
}
.ingest-cal .cal-nav-btn svg {
    width: 14px; /* h-3.5 */
    height: 14px;
    display: block;
}
/* Left gutter: border-r border-b bg-panel-2/40 */
.ingest-cal .cal-nav-prev {
    height: 100%;
    width: 100%;
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    background: color-mix(in srgb, var(--panel-2) 40%, transparent);
}
/*
 * Next chevron — inside last day cell (Timeline customer homepage), not in the
 * selection ring. w-11 / md:w-9.
 */
.ingest-cal .cal-nav-next {
    flex: 0 0 auto;
    align-self: stretch;
    width: 44px;
    height: auto;
    border: 0;
    background: transparent;
}
@media (min-width: 768px) {
    .ingest-cal .cal-nav-next { width: 36px; }
}
/*
 * Day header cells — Timeline schedule-grid:
 * flex h-full flex-col items-center justify-center gap-0.5 border-r border-b
 */
.ingest-cal .cal-head .dh-btn-wrap {
    appearance: none;
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.125rem; /* gap-0.5 */
    width: 100%;
    height: 100%;
    min-height: 0;
    padding: 0;
    margin: 0;
    border: 0;
    border-left: 0;
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    background: var(--panel);
    color: inherit;
    font-family: var(--font-sans);
    font-weight: 400;
    font-size: inherit;
    /* Tailwind/html default — Timeline day headers inherit this */
    line-height: 1.5;
    cursor: pointer;
    text-align: center;
    transition: color .15s, background-color .15s, box-shadow .15s;
}
.ingest-cal .cal-head .dh-btn-wrap:hover {
    background: color-mix(in srgb, var(--panel-2) 60%, transparent);
}
/* Last day = date label + next arrow; outer borders on the shell only */
.ingest-cal .cal-head .dh-last {
    display: flex;
    flex-direction: row;
    align-items: stretch;
    padding: 0;
    margin: 0;
    gap: 0;
    border: 0;
    border-left: 0;
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    background: var(--panel);
    min-height: 0;
    min-width: 0;
    font-family: var(--font-sans);
    font-weight: 400;
    font-size: inherit;
    line-height: 1.5;
    text-align: left;
}
.ingest-cal .cal-head .dh-last .dh-btn {
    appearance: none;
    position: relative;
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.125rem;
    border: 0;
    /* Separator between date and chevron — border-border/30 */
    border-right: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
    padding: 0;
    margin: 0;
    background: transparent;
    color: inherit;
    font-family: var(--font-sans);
    font-weight: 400;
    font-size: inherit;
    line-height: 1.5;
    cursor: pointer;
    text-align: center;
    transition: color .15s, background-color .15s, box-shadow .15s;
}
.ingest-cal .cal-head .dh-last .dh-btn:hover {
    background: color-mix(in srgb, var(--panel-2) 50%, transparent);
}
/*
 * Weekday: text-[11px] uppercase tracking-wider — no leading-* in Timeline,
 * so line-height stays parent 1.5 → ~16.5px box (not leading-none).
 */
.ingest-cal .cal-head .dh-wd {
    display: block;
    margin: 0;
    padding: 0;
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 400;
    line-height: 1.5;
    text-transform: uppercase;
    letter-spacing: 0.05em; /* tracking-wider */
    color: var(--text-dim);
}
/* Day number: font-mono text-base → 1rem / line-height 1.5rem */
.ingest-cal .cal-head .dh-date {
    display: block;
    margin: 0;
    padding: 0;
    font-family: var(--font-mono);
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.5rem;
    font-variant-numeric: tabular-nums;
    color: var(--text);
}
/* Other days muted — text-text-muted/40 */
.ingest-cal .cal-head .dh-btn-wrap.muted,
.ingest-cal .cal-head .dh-last.muted {
    background: var(--panel);
    box-shadow: none;
}
.ingest-cal .cal-head .dh-btn-wrap.muted .dh-wd,
.ingest-cal .cal-head .dh-btn-wrap.muted .dh-date,
.ingest-cal .cal-head .dh-last.muted .dh-wd,
.ingest-cal .cal-head .dh-last.muted .dh-date,
.ingest-cal .cal-head .dh-btn.muted .dh-wd,
.ingest-cal .cal-head .dh-btn.muted .dh-date {
    color: color-mix(in srgb, var(--text-muted) 40%, transparent);
    font-weight: 400;
}
.ingest-cal .cal-head .dh-btn-wrap.muted:hover {
    background: color-mix(in srgb, var(--panel-2) 60%, transparent);
}
.ingest-cal .cal-head .dh-last.muted .dh-btn:hover {
    background: color-mix(in srgb, var(--panel-2) 50%, transparent);
}
/*
 * Focus / selected — ring on the date label only (not the next chevron).
 * Timeline customer homepage: ring on the day button inside the last-day shell.
 */
.ingest-cal .cal-head .dh-btn-wrap.active {
    background: var(--panel-2);
    box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--accent) 70%, transparent);
}
.ingest-cal .cal-head .dh-last.active {
    background: var(--panel-2);
    /* Shell background only — no ring around the arrow */
    box-shadow: none;
}
.ingest-cal .cal-head .dh-last .dh-btn.active {
    background: color-mix(in srgb, var(--accent) 6%, transparent);
    box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--accent) 70%, transparent);
}
.ingest-cal .cal-head .dh-btn-wrap.active .dh-wd,
.ingest-cal .cal-head .dh-last .dh-btn.active .dh-wd {
    color: var(--text);
    font-weight: 600;
}
/* Selected day number is white by default; coral only when the selected day is today */
.ingest-cal .cal-head .dh-btn-wrap.active .dh-date,
.ingest-cal .cal-head .dh-last .dh-btn.active .dh-date {
    color: var(--text);
    font-weight: 700;
}
.ingest-cal .cal-head .dh-btn-wrap.active.today .dh-date,
.ingest-cal .cal-head .dh-last.today .dh-btn.active .dh-date,
.ingest-cal .cal-head .dh-last .dh-btn.active.today .dh-date {
    color: var(--accent);
}
/* Muted today must stay dim — not coral */
.ingest-cal .cal-head .dh-btn-wrap.muted.today .dh-date,
.ingest-cal .cal-head .dh-last.muted.today .dh-date,
.ingest-cal .cal-head .dh-last.muted.today .dh-btn .dh-date {
    color: color-mix(in srgb, var(--text-muted) 40%, transparent);
    font-weight: 400;
}
.ingest-cal .cal-head .dh-btn-wrap.active:hover {
    background: color-mix(in srgb, var(--panel-2) 80%, transparent);
}
.ingest-cal .cal-head .dh-last.active .dh-btn:hover {
    background: color-mix(in srgb, var(--accent) 6%, color-mix(in srgb, var(--panel-2) 50%, transparent));
}
.ingest-cal .cal-col.selected {
    background: transparent;
}
/* Grey out non-focus day columns (bands + visits) like Timeline preview mute */
.ingest-cal .cal-col.muted {
    opacity: 0.32;
}
.ingest-cal .cal-visit.selected,
.ingest-cal .cal-visit-selected {
    z-index: 10;
}

/* Right-hand visit editor (Timeline-style side panel) */
#ingest-edit-host {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}
.ingest-edit-loading {
    padding: 20px;
    font-size: 13px;
}
.ingest-edit-panel {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    border: 0;
    border-radius: 0;
    background: var(--panel);
}
#ingest-edit-host {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    border: 0;
    border-radius: 0;
    background: var(--panel);
}
/* Match .ingest-cal .cal-head (57px) so the bottom rules line up across the split. */
.ingest-edit-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex: 0 0 auto;
    box-sizing: border-box;
    height: 57px;
    min-height: 57px;
    max-height: 57px;
    padding: 0 16px;
    border-bottom: 1px solid var(--border);
}
.ingest-edit-header-primary,
.ingest-edit-header-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
.ingest-edit-header-primary { margin-right: auto; }
.ingest-edit-fields {
    display: flex;
    flex-direction: column;
    gap: 24px; /* gap-6 between groups — Timeline VisitFields */
    width: 100%;
    max-width: 21rem;
    overflow: visible;
}
.ingest-edit-group {
    display: flex;
    flex-direction: column;
    gap: 8px; /* gap-2 within a group */
    width: 100%;
    min-width: 0;
}
.ingest-edit-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    /* Extra right padding so absolute duration label isn't clipped */
    padding: 16px 4.5rem 16px 16px;
}
.ingest-edit-field {
    display: grid;
    grid-template-columns: 4.75rem minmax(0, 1fr);
    align-items: center;
    column-gap: 10px; /* gap-x-2.5 */
    min-width: 0;
}
.ingest-edit-label {
    width: 4.75rem;
    justify-self: stretch;
    text-align: right;
    font-size: 10px;
    font-weight: 500;
    line-height: 1.15;
    text-transform: uppercase;
    letter-spacing: 0.05em; /* tracking-wider */
    color: var(--text-muted);
}
.ingest-edit-label .dim {
    display: block;
    margin-top: 2px;
    font-size: 10px;
    font-weight: 400;
    text-transform: none;
    letter-spacing: normal;
    color: var(--text-muted);
}
/* Timeline PANEL_FIELD_SHELL_CLASS — min-h 34px, panel-2, text-xs */
.ingest-edit-field .input,
.ingest-edit-field .select,
.ingest-edit-field textarea.input {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    min-height: 34px;
    height: 34px;
    margin: 0;
    padding: 0 8px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel-2);
    color: var(--text);
    font-family: var(--font-sans);
    font-size: 12px; /* text-xs */
    line-height: 32px;
    color-scheme: dark;
    transition: border-color .15s, box-shadow .15s;
}
.ingest-edit-field .input.mono,
.ingest-edit-field input.mono {
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
}
.ingest-edit-field .select {
    appearance: none;
    -webkit-appearance: none;
    padding-right: 28px;
    background-image:
        linear-gradient(90deg, transparent, transparent),
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat, no-repeat;
    background-position: right 0 top 0, right 8px center;
    background-size: auto, 14px 14px;
    cursor: pointer;
}
.ingest-edit-field .input:focus,
.ingest-edit-field .select:focus,
.ingest-edit-field textarea.input:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 25%, transparent);
}
.ingest-edit-field textarea.input {
    height: auto;
    min-height: 68px;
    padding: 8px;
    line-height: 1.4;
    resize: vertical;
}
.ingest-edit-field:has(textarea) {
    align-items: start;
}
.ingest-edit-field:has(textarea) .ingest-edit-label {
    padding-top: 10px;
}
.ingest-edit-time-field {
    overflow: visible;
    align-items: start;
}
.ingest-edit-time-field .ingest-edit-label {
    padding-top: 10px;
    white-space: normal;
}
.ingest-edit-time-field .ingest-edit-label .dim {
    text-transform: none;
    letter-spacing: normal;
}
.ingest-time-wrap {
    position: relative;
    width: 100%;
    min-width: 0;
    overflow: visible;
}
.ingest-time-row {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    column-gap: 6px; /* gap-x-1.5 */
    width: 100%;
    min-width: 0;
}
.ingest-time-dash {
    font-size: 12px;
    color: var(--text-muted);
    line-height: 1;
}
/* Timeline PanelTimeField shell + mono time input (no date picker) */
.ingest-time-shell {
    display: flex;
    align-items: stretch;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    min-height: 34px;
    height: 34px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel-2);
    overflow: visible;
    transition: border-color .15s, box-shadow .15s;
}
.ingest-time-shell:focus-within {
    border-color: var(--accent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 25%, transparent);
}
.ingest-time-shell .ingest-time-input {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    height: 100%;
    margin: 0;
    padding: 0 8px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--text);
    font-family: var(--font-mono);
    font-size: 12px;
    line-height: 34px;
    font-variant-numeric: tabular-nums;
    color-scheme: dark;
    appearance: none;
    -webkit-appearance: none;
}
.ingest-time-shell .ingest-time-input:focus {
    outline: none;
}
.ingest-time-shell .ingest-time-input::-webkit-calendar-picker-indicator {
    display: none;
    -webkit-appearance: none;
}
.ingest-time-duration {
    position: absolute;
    left: 100%;
    top: 50%;
    margin-left: 8px; /* ml-2 */
    transform: translateY(-50%);
    white-space: nowrap;
    font-size: 10px;
    font-weight: 500;
    line-height: 1.15;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted);
    pointer-events: none;
}
.ingest-edit-hint {
    margin: 14px 0 0;
    max-width: 21rem;
    font-size: 12px;
    color: var(--text-muted);
}
.ingest-edit-advanced {
    margin-top: 8px;
    border-top: 1px solid var(--border);
    padding-top: 10px;
    max-width: 21rem;
}
.ingest-edit-advanced-summary {
    cursor: pointer;
    list-style: none;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-muted);
    user-select: none;
}
.ingest-edit-advanced-summary::-webkit-details-marker { display: none; }
.ingest-edit-advanced-summary::before {
    content: "▸";
    display: inline-block;
    margin-right: 6px;
    transition: transform .12s;
}
.ingest-edit-advanced[open] > .ingest-edit-advanced-summary::before {
    transform: rotate(90deg);
}
.ingest-edit-advanced-fields {
    margin-top: 10px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
@media (max-width: 700px) {
    .ingest-time-duration {
        position: static;
        display: block;
        margin: 6px 0 0;
        transform: none;
    }
    .ingest-edit-field {
        grid-template-columns: 1fr;
        gap: 4px;
    }
    .ingest-edit-label {
        text-align: left;
        width: auto;
    }
    .ingest-edit-field:has(textarea) .ingest-edit-label {
        padding-top: 0;
    }
}
/* Exact match for the Timeline app's building selector (BuildingSiteNav desktop
   button): "rounded-md border px-3 py-1.5 text-xs transition-colors", with an
   active ring in --border over --panel-2, and a transparent-bordered dim inactive
   state that fills to panel-2/60 on hover. Tailwind → px equivalents:
   rounded-md=6px, gap-2=8px, px-3=12px, py-1.5=6px, text-xs=12px/16px. */
.pill {
    display: inline-flex; align-items: center; gap: 8px;
    border: 1px solid transparent; border-radius: 6px;
    padding: 6px 12px; font-size: 12px; line-height: 16px;
    color: var(--text-dim); cursor: pointer;
    transition: color .15s, background-color .15s, border-color .15s;
}
.pill:hover { background: color-mix(in srgb, var(--panel-2) 60%, transparent); color: var(--text); }
.pill.active { border-color: var(--border); background: var(--panel-2); color: var(--text); }

/* ---- content shell ---- */
.padmin-content { padding: 24px 20px; max-width: 920px; }
.padmin-content.wide { max-width: none; }
.padmin-content h1 { font-size: 18px; font-weight: 600; margin: 0 0 4px; }
.padmin-content .subtitle { color: var(--text-dim); font-size: 13px; margin: 0 0 20px; }

/* ---- Branded portal login (mirrors timeline.getsomatic.com/login) ---- */
/* Keep .padmin's position:fixed — do not set position here or the card won't
   vertically center in the viewport. */
html:has(.portal-login),
html:has(.portal-login) body {
    margin: 0;
    min-height: 100%;
    background: #0b0b0d;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
.portal-login {
    overflow: auto;
    align-items: stretch;
    justify-content: flex-start;
    min-height: 100%;
}
.portal-login-glow {
    pointer-events: none;
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 80% 55% at 50% -10%, rgba(249, 114, 105, 0.14), transparent 65%),
        radial-gradient(ellipse 60% 45% at 100% 100%, rgba(249, 114, 105, 0.06), transparent 55%);
}
.portal-login-shell {
    position: relative;
    z-index: 1;
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100%;
    padding: 48px 20px;
}
.portal-login-card {
    width: 100%;
    max-width: 440px;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--border) 80%, transparent);
    border-radius: 16px;
    background: color-mix(in srgb, var(--panel) 95%, transparent);
    box-shadow: 0 28px 90px -24px rgba(0, 0, 0, 0.72);
    backdrop-filter: blur(4px);
}
.portal-login-brand-panel {
    display: none;
    position: relative;
    flex-direction: column;
    padding: 40px 32px;
    border-right: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
    background: linear-gradient(
        135deg,
        color-mix(in srgb, var(--panel-2) 90%, transparent),
        color-mix(in srgb, var(--panel-2) 50%, transparent) 45%,
        color-mix(in srgb, var(--panel) 40%, transparent)
    );
}
.portal-login-brand-accent {
    position: absolute;
    inset: 0 auto 0 0;
    width: 1px;
    background: linear-gradient(to bottom, transparent, color-mix(in srgb, var(--accent) 35%, transparent), transparent);
}
.portal-login-brand-copy {
    margin: 24px 0 0;
    max-width: 16rem;
    color: var(--text-dim);
    font-size: 14px;
    line-height: 1.55;
}
.portal-login-main {
    padding: 32px 28px 40px;
}
.portal-login-logo {
    display: block;
    width: 168px;
    height: 22px;
    max-width: 100%;
    flex-shrink: 0;
}
.portal-login-logo--mobile { margin: 0 0 32px; }
.portal-login-intro { margin: 0 0 28px; }
.portal-login h1 {
    margin: 0;
    font-size: 20px;
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--text);
}
.portal-login-subtitle {
    margin: 8px 0 0;
    color: var(--text-dim);
    font-size: 14px;
    line-height: 1.55;
}
.portal-login-form {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.portal-login-form label {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.portal-login-form label span {
    font-size: 12px;
    font-weight: 500;
    color: var(--text-dim);
}
.portal-login-form input[type="email"] {
    width: 100%;
    font: inherit;
    font-size: 14px;
    font-weight: 400;
    color: var(--text);
    background: color-mix(in srgb, var(--panel-2) 80%, transparent);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 10px 14px;
    outline: none;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.portal-login-form input[type="email"]::placeholder {
    color: color-mix(in srgb, var(--text-muted) 60%, transparent);
}
.portal-login-form input[type="email"]:focus {
    border-color: color-mix(in srgb, var(--accent) 55%, transparent);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 15%, transparent);
}
.portal-login-btn {
    display: flex;
    width: 100%;
    align-items: center;
    justify-content: center;
    gap: 10px;
    box-sizing: border-box;
    border-radius: 8px;
    padding: 10px 16px;
    font: inherit;
    font-size: 14px;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease, opacity 0.15s ease;
}
.portal-login-btn--primary {
    border: 1px solid color-mix(in srgb, var(--accent) 45%, transparent);
    background: var(--accent);
    color: var(--bg);
    font-weight: 600;
}
.portal-login-btn--primary:hover {
    background: color-mix(in srgb, var(--accent) 92%, transparent);
}
.portal-login-btn--primary:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}
.portal-login-btn--secondary {
    border: 1px solid var(--border);
    background: color-mix(in srgb, var(--panel-2) 70%, transparent);
    color: var(--text);
    font-weight: 500;
}
.portal-login-btn--secondary:hover {
    border-color: color-mix(in srgb, var(--text-dim) 40%, transparent);
    background: var(--panel-2);
}
.portal-login-google-icon {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}
.portal-login-or {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 24px 0;
    color: var(--text-muted);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
}
.portal-login-or::before,
.portal-login-or::after {
    content: "";
    flex: 1;
    height: 1px;
    background: color-mix(in srgb, var(--border) 80%, transparent);
}
.portal-login-lang {
    position: fixed;
    z-index: 20;
    left: 12px;
    bottom: max(1rem, env(safe-area-inset-bottom));
}
@media (min-width: 640px) {
    .portal-login-lang { left: 20px; }
}
.portal-login-lang-shell {
    position: relative;
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    padding: 8px 12px;
    border: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
    border-radius: 8px;
    background: color-mix(in srgb, var(--panel) 90%, transparent);
    box-shadow: 0 12px 40px -18px rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(12px);
    cursor: pointer;
}
.portal-login-lang-shell select {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}
.portal-login-lang-icon {
    width: 14px;
    height: 14px;
    flex-shrink: 0;
    opacity: 0.7;
    filter: brightness(0) invert(1);
    pointer-events: none;
}
.portal-login-lang-label {
    font-size: 12px;
    font-weight: 500;
    color: var(--text-muted);
    pointer-events: none;
}
.portal-login-lang-caret {
    width: 12px;
    height: 12px;
    flex-shrink: 0;
    color: color-mix(in srgb, var(--text-muted) 70%, transparent);
    pointer-events: none;
}
.portal-login-err {
    margin: 0;
    border: 1px solid color-mix(in srgb, var(--bad, #ef4444) 25%, transparent);
    border-radius: 6px;
    background: color-mix(in srgb, var(--bad, #ef4444) 10%, transparent);
    color: var(--bad, #ef4444);
    font-size: 12px;
    line-height: 1.45;
    padding: 8px 12px;
}
.portal-login-sent {
    text-align: center;
}
.portal-login-sent-icon {
    display: flex;
    width: 56px;
    height: 56px;
    margin: 0 auto;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    border: 1px solid color-mix(in srgb, var(--accent) 25%, transparent);
    background: color-mix(in srgb, var(--accent) 10%, transparent);
    color: var(--accent);
}
.portal-login-sent-icon svg {
    width: 28px;
    height: 28px;
}
.portal-login-sent h1 { margin-top: 20px; }
.portal-login-sent-body {
    margin: 12px 0 0;
    color: var(--text-dim);
    font-size: 14px;
    line-height: 1.55;
}
.portal-login-sent-body .mono {
    font-family: var(--font-mono);
    color: var(--text);
}
.portal-login-sent-hint {
    margin: 8px 0 0;
    color: var(--text-muted);
    font-size: 12px;
    line-height: 1.55;
}
.portal-login-sent-reset {
    display: inline-block;
    margin-top: 24px;
    color: var(--text-muted);
    font-size: 14px;
    text-decoration: none;
    text-underline-offset: 4px;
    transition: color 0.15s ease;
}
.portal-login-sent-reset:hover {
    color: var(--text);
    text-decoration: underline;
}

@media (min-width: 768px) {
    .portal-login-shell { padding: 64px 32px; }
    .portal-login-card {
        max-width: 48rem;
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
    }
    .portal-login-card--sent {
        max-width: 440px;
        display: block;
    }
    .portal-login-card--sent .portal-login-brand-panel { display: none; }
    .portal-login-brand-panel { display: flex; }
    .portal-login-logo--mobile { display: none; }
    .portal-login-subtitle--mobile { display: none; }
    .portal-login-main { padding: 40px 36px; }
    .portal-login h1 { font-size: 1.35rem; }
}

/* ---- CRM leads convert ---- */
.lead-msg {
    max-width: 28rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lead-actions {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    white-space: nowrap;
}
.lead-actions .inline-form { display: inline; margin: 0; }
.convert-details { position: relative; }
.convert-details > summary { list-style: none; cursor: pointer; }
.convert-details > summary::-webkit-details-marker { display: none; }
.convert-form {
    position: absolute;
    right: 0;
    top: calc(100% + 6px);
    z-index: 5;
    width: 280px;
    padding: 12px;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: var(--panel-2);
    display: flex;
    flex-direction: column;
    gap: 10px;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.45);
}
.convert-form label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--text-muted);
}
.convert-form label.check {
    flex-direction: row;
    align-items: center;
    gap: 8px;
    text-transform: none;
    letter-spacing: 0;
    font-size: 12px;
    font-weight: 500;
    color: var(--text-dim);
}
.convert-form input[type="text"],
.convert-form input[type="email"] {
    font: inherit;
    font-size: 13px;
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    color: var(--text);
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 7px 9px;
}
.convert-form-actions { display: flex; justify-content: flex-end; }

/* ---- panels / sections ---- */
.panel {
    border: 1px solid var(--border); border-radius: 10px;
    background: var(--panel); padding: 18px 20px; margin-bottom: 18px;
}
.panel-title {
    display: flex; align-items: center; gap: 8px;
    font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .07em;
    color: var(--text-muted); margin: 0 0 14px;
}
.section-hint { color: var(--text-dim); font-size: 12px; margin: -8px 0 14px; }

/* ---- borderless sections (timeline-style) ---- */
.padmin-content .section { margin-bottom: 4px; }
.padmin-content .section-title { display: flex; align-items: center; gap: 8px; }
.padmin-content .section-title h2 { font-size: 14px; font-weight: 600; color: var(--text); margin: 0; }
.padmin-content .company-name { display: flex; align-items: center; gap: 8px; min-height: 36px; margin-top: 12px; font-size: 14px; color: var(--text); }
.padmin-content .company-label { font-size: 15px; font-weight: 600; }
.padmin-content .display-name-form { display: flex; align-items: center; gap: 8px; }
/* hidden must beat the flex display above (UA [hidden] loses to author rules). */
.padmin-content .display-name-form[hidden] { display: none !important; }
.padmin-content .display-name-form .user-add-input { min-width: 240px; }
.padmin-content .section-divider { height: 1px; background: var(--border); margin: 20px 0; }

/* Company App: one pencil edits name + Live/Hidden together */
.padmin-content .company-name-section { margin-bottom: 0; max-width: 576px; }
.padmin-content .company-name-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 2px 14px;
    min-height: 36px;
    margin-top: 12px;
}
.padmin-content .company-name-text {
    min-width: 0;
    max-width: 280px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 14px;
    color: var(--text);
}
.padmin-content .company-state-label {
    font-size: 12px;
    font-weight: 450;
    color: var(--text-dim);
    letter-spacing: 0.01em;
}
.padmin-content .company-edit-pencil.icon-btn {
    opacity: 0.55;
    color: var(--text-dim);
}
.padmin-content .company-edit-pencil.icon-btn:hover {
    opacity: 0.9;
    color: var(--text);
}
.padmin-content .company-name-done {
    flex: 0 0 auto;
    padding: 0;
    border: none;
    background: transparent;
    font-size: 12px;
    font-weight: 500;
    color: var(--text-dim);
    cursor: pointer;
    transition: color .12s;
}
.padmin-content .company-name-done:hover { color: var(--text); }
.padmin-content .company-edit-form {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px 12px;
    margin: 12px 0 0;
}
.padmin-content .company-name-input {
    height: 36px;
    width: 240px;
    max-width: min(240px, 100%);
    min-width: 0;
    box-sizing: border-box;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
    color: var(--text);
    padding: 0 10px;
    font-size: 14px;
}
.padmin-content .company-name-input:focus { outline: none; border-color: var(--accent); }
.padmin-content .company-name-input:read-only { opacity: .6; }
.padmin-content .company-state-select {
    width: auto;
    min-width: 88px;
    height: 28px;
    padding: 0 8px;
    font-size: 12px;
    color: var(--text-dim);
    border-color: var(--border);
    background: var(--panel);
    flex: 0 0 auto;
}
.padmin-content [data-company-edit] [hidden] { display: none !important; }

/* company page: content stays readable width, divider lines run edge-to-edge */
.padmin-content.company-page { max-width: none; }
.padmin-content.company-page > *:not(.section-divider) { max-width: 920px; }
.padmin-content.company-page > .section-divider { margin-left: -20px; margin-right: -20px; }
.padmin-content.company-page .section-hint { margin-top: 8px; }
/* Hub Company App body also uses .company-page */
.crm-company-app-body.company-page > .section-divider {
    margin-left: -20px;
    margin-right: -20px;
}
.crm-company-app-body.company-page > .section.company-name-section,
.crm-company-app-body.company-page > .section.users-domains,
.crm-company-app-body.company-page > .section:not(.users-domains):not(.company-name-section) {
    max-width: 920px;
}
.crm-company-app-body.company-page > .section.users-domains { max-width: 1200px; }
.padmin-content .field-hint { margin: 8px 0 0; font-size: 12px; color: var(--text-dim); }

/* users + domains: side-by-side when wide, stacked when narrow (timeline grid) */
.padmin-content .users-domains { padding-bottom: 20px; }
.padmin-content.company-page > .users-domains { max-width: 1200px; }
.padmin-content .users-domains-grid { display: grid; grid-template-columns: 1fr; align-items: start; gap: 40px; width: 100%; }
.padmin-content .users-col, .padmin-content .domains-col { min-width: 0; max-width: 720px; }
@media (min-width: 1024px) {
    .padmin-content .users-domains-grid { grid-template-columns: 1fr 1fr; column-gap: 80px; }
    .padmin-content .domains-col { justify-self: end; width: 100%; padding-right: 16px; }
}
@media (min-width: 1280px) {
    .padmin-content .users-domains-grid { column-gap: 112px; }
    .padmin-content .domains-col { padding-right: 40px; }
}

/* ---- users list (timeline-style) ---- */
.padmin-content .users-list { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; max-width: 720px; }
.padmin-content .domains-list { margin-top: 10px; display: flex; flex-direction: column; gap: 8px; max-width: 576px; }
.padmin-content .add-collapse { width: 100%; }
/* collapsed "Add User" / "Add Domain" trigger — fixed width so both match */
.padmin-content .add-item-trigger { display: flex; width: 320px; max-width: 100%; align-items: center; gap: 8px; min-height: 36px; border: 1px dashed var(--border); border-radius: 6px; padding: 6px 10px; background: transparent; text-align: left; font-size: 14px; color: var(--text-dim); cursor: pointer; transition: border-color .12s, background-color .12s, color .12s; }
.padmin-content .add-item-trigger:hover { border-color: color-mix(in srgb, var(--accent) 40%, transparent); background: color-mix(in srgb, var(--accent) 5%, transparent); color: var(--text); }
.padmin-content .add-item-icon { display: inline-flex; width: 24px; height: 24px; flex: 0 0 auto; align-items: center; justify-content: center; border-radius: 9999px; border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent); background: color-mix(in srgb, var(--accent) 10%, transparent); color: var(--accent); }
.padmin-content .add-item-icon svg { display: block; }
/* expanded add-user form */
.padmin-content .add-user-form { display: flex; align-items: center; gap: 8px; width: 100%; max-width: 384px; min-height: 36px; margin: 0; }
.padmin-content .add-building-form {
    display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
    width: 100%; max-width: 720px; min-height: 36px; margin: 0;
}
.padmin-content .add-building-form .user-add-input { flex: 1 1 160px; min-width: 140px; }
.padmin-content .add-building-form .select { height: 36px; min-width: 140px; flex: 0 1 auto; }
.padmin-content .add-cancel { flex: 0 0 auto; padding: 0 4px; background: transparent; border: none; font-size: 12px; font-weight: 500; color: var(--text-dim); cursor: pointer; }
.padmin-content .add-cancel:hover { color: var(--text); }
.padmin-content [data-add-collapse] [hidden] { display: none; }
.padmin-content .user-add-input { height: 36px; min-width: 0; flex: 1 1 auto; border: 1px solid var(--border); border-radius: 6px; background: var(--panel-2); color: var(--text); padding: 0 10px; font-size: 14px; }
.padmin-content .user-add-input:focus { outline: none; border-color: var(--accent); }
.padmin-content .btn-pill-accent { display: inline-flex; height: 36px; flex: 0 0 auto; align-items: center; border-radius: 9999px; border: 1px solid color-mix(in srgb, var(--accent) 50%, transparent); background: var(--accent); color: var(--bg); padding: 0 14px; font-size: 12px; font-weight: 600; cursor: pointer; }
.padmin-content .btn-pill-accent:hover { opacity: .9; }
.padmin-content .btn-pill-accent:disabled { opacity: .5; cursor: not-allowed; }
.padmin-content .user-row { display: flex; align-items: center; gap: 6px; min-height: 36px; flex-wrap: wrap; }
.padmin-content .user-email { flex: 0 1 auto; min-width: 0; max-width: 220px; font-size: 14px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.padmin-content .user-buildings { position: relative; flex: 0 0 auto; }
.padmin-content .user-buildings-btn {
    display: inline-flex; align-items: center; gap: 4px; max-width: 160px; min-height: 28px;
    border: 1px solid var(--border); border-radius: 6px; background: var(--panel-2);
    padding: 2px 8px; font-size: 12px; color: var(--text); cursor: pointer;
}
.padmin-content .user-buildings-btn:hover { border-color: color-mix(in srgb, var(--accent) 40%, transparent); }
.padmin-content .user-buildings-btn[aria-expanded="true"] {
    border-color: var(--accent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 20%, transparent);
}
.padmin-content .user-buildings-btn span[data-ub-label] {
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 120px;
}
.padmin-content .user-buildings-btn svg { width: 12px; height: 12px; flex: 0 0 auto; color: var(--text-muted); }
.padmin-content .user-buildings-menu {
    position: absolute; z-index: 40; top: calc(100% + 4px); left: 0; min-width: 200px; max-width: 280px;
    max-height: 240px; overflow: auto; padding: 6px; border: 1px solid var(--border);
    border-radius: 8px; background: var(--panel); box-shadow: 0 8px 24px color-mix(in srgb, #000 18%, transparent);
}
.padmin-content .user-buildings-option {
    display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 4px;
    font-size: 13px; color: var(--text); cursor: pointer;
}
.padmin-content .user-buildings-option:hover { background: color-mix(in srgb, var(--accent) 10%, transparent); }
.padmin-content .user-buildings-option input { flex: 0 0 auto; margin: 0; accent-color: var(--accent); }
.padmin-content .user-buildings-option span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.padmin-content .user-buildings-empty { padding: 8px; font-size: 12px; color: var(--text-muted); }
.padmin-content .icon-btn-danger { display: inline-flex; width: 24px; height: 24px; flex: 0 0 auto; align-items: center; justify-content: center; border: none; background: transparent; border-radius: 4px; color: color-mix(in srgb, var(--text-muted) 70%, transparent); cursor: pointer; }
.padmin-content .icon-btn-danger:hover { background: color-mix(in srgb, var(--bad) 10%, transparent); color: var(--bad); }
.padmin-content .icon-btn-danger svg { width: 14px; height: 14px; display: block; }
.padmin-content .user-empty { color: var(--text-muted); font-size: 13px; padding: 6px 0; }

/* Buildings table: hug content (do not stretch with .ptable width:100%).
   Building | Timezone | Visibility | edit — eye centered under Visibility. */
.padmin-content table.buildings-table.ptable {
    width: max-content !important;
    max-width: 100%;
    table-layout: auto;
    border-collapse: collapse;
}
.padmin-content .buildings-table th,
.padmin-content .buildings-table td {
    padding: 8px 0;
    vertical-align: middle;
    white-space: nowrap;
    letter-spacing: normal;
    text-align: left;
}
.padmin-content .buildings-table thead th {
    letter-spacing: .04em;
}
/* Shrink-wrap data columns so unused header width does not open gaps */
.padmin-content .buildings-table .buildings-name-col,
.padmin-content .buildings-table .buildings-name,
.padmin-content .buildings-table .buildings-tz-col,
.padmin-content .buildings-table .buildings-tz,
.padmin-content .buildings-table .buildings-vis-col,
.padmin-content .buildings-table .buildings-vis {
    width: 1%;
}
/* Building column: display-name label in view mode; text input when the row pencil opens */
.padmin-content .buildings-table .building-label { font-size: 13px; font-weight: 600; }
.padmin-content .buildings-table .buildings-name-input { min-width: 200px; }
/* Gaps: Building↔Timezone and Timezone↔Visibility */
.padmin-content .buildings-table .buildings-name-col,
.padmin-content .buildings-table .buildings-name {
    padding-right: 40px;
}
.padmin-content .buildings-table .buildings-tz-col,
.padmin-content .buildings-table .buildings-tz {
    padding-right: 16px;
}
.padmin-content .buildings-table .buildings-vis-col,
.padmin-content .buildings-table .buildings-vis {
    padding-left: 40px;
    padding-right: 10px;
    text-align: center;
}
/* Pencil sits 7px after the Visibility column */
.padmin-content .buildings-table .buildings-actions-col,
.padmin-content .buildings-table .buildings-actions {
    padding-left: 7px;
    padding-right: 0;
    width: 1%;
}
/* Hidden editors must not reserve width in view mode */
.padmin-content .buildings-table [data-edit-name][hidden],
.padmin-content .buildings-table [data-edit-tz][hidden],
.padmin-content .buildings-table [data-edit-vis][hidden],
.padmin-content .buildings-table [data-edit-actions][hidden] {
    display: none !important;
}
.padmin-content .buildings-table .building-name-text {
    display: inline-block;
    font-size: 13px;
    color: var(--text);
    line-height: 24px;
}
.padmin-content .buildings-table .buildings-name-input {
    width: 180px;
    max-width: 100%;
    height: 28px;
    padding: 2px 8px;
    font-size: 13px;
}
.padmin-content .buildings-table .sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
.padmin-content .buildings-table .tz-text {
    display: inline-block;
    font-size: 13px;
    color: var(--text);
    line-height: 24px;
}
.padmin-content .buildings-table .tz-text.tz-none { color: var(--text-muted); }
.padmin-content .buildings-table .vis-icon {
    display: inline-flex;
    width: 24px;
    height: 24px;
    align-items: center;
    justify-content: center;
    color: var(--text-muted);
}
.padmin-content .buildings-table .vis-icon svg { display: block; }
.padmin-content .buildings-table .vis-icon-visible { color: var(--text); }
.padmin-content .buildings-table .vis-icon-hidden { color: color-mix(in srgb, var(--text-muted) 85%, transparent); }
.padmin-content .buildings-table .building-state-badge {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 0 8px;
    border-radius: 9999px;
    font-size: 12px;
    font-weight: 600;
    border: 1px solid var(--border);
    color: var(--text-dim);
    background: var(--panel-2);
}
.padmin-content .buildings-table .building-state-onboarding {
    border-color: color-mix(in srgb, var(--accent) 40%, transparent);
    color: var(--accent);
    background: color-mix(in srgb, var(--accent) 10%, transparent);
}
.padmin-content .buildings-table .building-state-live {
    border-color: color-mix(in srgb, #2f9e44 35%, transparent);
    color: #2f9e44;
    background: color-mix(in srgb, #2f9e44 10%, transparent);
}
.padmin-content .buildings-table .building-state-hidden {
    color: var(--text-muted);
}
.padmin-content .buildings-table .buildings-tz-select { width: 180px; }
.padmin-content .buildings-table .buildings-vis-select { width: 120px; }
.padmin-content .building-edit-form {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0;
}
.padmin-content .icon-btn { display: inline-flex; width: 24px; height: 24px; flex: 0 0 auto; align-items: center; justify-content: center; border: none; background: transparent; border-radius: 4px; color: color-mix(in srgb, var(--text-muted) 70%, transparent); cursor: pointer; }
/* hidden must beat the inline-flex display above (UA [hidden] loses to author rules). */
.padmin-content .icon-btn[hidden] { display: none !important; }
.padmin-content .icon-btn:hover { background: var(--panel-2); color: var(--text); }
.padmin-content .icon-btn svg { width: 14px; height: 14px; display: block; }
.padmin-content [data-building-edit] [hidden] { display: none !important; }
/* Building save button uses the coral accent while the row is in edit mode */
.padmin-content .btn[data-building-save] { background: var(--accent); border-color: color-mix(in srgb, var(--accent) 50%, transparent); color: var(--bg); font-weight: 600; }
.padmin-content .btn[data-building-save]:hover { background: var(--accent); opacity: .9; }

/* ---- tables ---- */
.ptable { width: 100%; border-collapse: collapse; font-size: 13px; }
.ptable th {
    text-align: left; font-weight: 600; color: var(--text-muted);
    font-size: 11px; text-transform: uppercase; letter-spacing: .05em;
    padding: 6px 10px; border-bottom: 1px solid var(--border);
}
.ptable td { padding: 8px 10px; border-bottom: 1px solid color-mix(in srgb, var(--border) 60%, transparent); vertical-align: middle; }
.ptable tr:last-child td { border-bottom: none; }
.ptable .empty { color: var(--text-muted); padding: 14px 10px; }
/* Buildings table must win over .ptable's 10px horizontal cell padding */
.padmin-content .buildings-table.ptable th,
.padmin-content .buildings-table.ptable td {
    padding-left: 0;
    padding-right: 0;
}
.padmin-content .buildings-table.ptable .buildings-name-col,
.padmin-content .buildings-table.ptable .buildings-name {
    padding-right: 40px;
}
.padmin-content .buildings-table.ptable .buildings-tz-col,
.padmin-content .buildings-table.ptable .buildings-tz {
    padding-right: 16px;
}
.padmin-content .buildings-table.ptable .buildings-vis-col,
.padmin-content .buildings-table.ptable .buildings-vis {
    padding-left: 40px;
    padding-right: 10px;
    text-align: center;
}
.padmin-content .buildings-table.ptable .buildings-actions-col,
.padmin-content .buildings-table.ptable .buildings-actions {
    padding-left: 7px;
}

/* ---- forms ---- */
.field-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.input, .select {
    background: var(--panel-2); border: 1px solid var(--border); border-radius: 6px;
    color: var(--text); padding: 6px 10px; font-size: 13px; min-width: 0;
}
.input:focus, .select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 25%, transparent); }
.input::placeholder { color: var(--text-muted); }
.input.mono { font-family: var(--font-mono); }

/* ---- buttons ---- */
.btn {
    display: inline-flex; align-items: center; gap: 6px;
    border: 1px solid var(--border); border-radius: 6px; background: var(--panel-2);
    color: var(--text); padding: 6px 12px; font-size: 13px; font-weight: 500; cursor: pointer;
}
.btn:hover { background: color-mix(in srgb, var(--panel-2) 70%, var(--text) 6%); }
.btn-accent { border-color: color-mix(in srgb, var(--accent) 50%, transparent); background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); }
.btn-accent:hover:not(:disabled) { background: color-mix(in srgb, var(--accent) 22%, transparent); }
.btn-accent:disabled {
    border-color: var(--border);
    background: var(--panel-2);
    color: var(--text-muted);
    opacity: .55;
    cursor: not-allowed;
}
.btn-ghost { background: transparent; border-color: transparent; color: var(--text-dim); padding: 4px 8px; }
.btn-ghost:hover { background: var(--panel-2); color: var(--text); }
.btn-danger { color: var(--bad); border-color: color-mix(in srgb, var(--bad) 40%, transparent); background: transparent; }
.btn-danger:hover { background: color-mix(in srgb, var(--bad) 12%, transparent); }
.btn-sm { padding: 3px 8px; font-size: 12px; }
.btn:disabled { opacity: .5; cursor: not-allowed; }

/* Unsaved visit-editor changes (Timeline IngestUnsavedChangesModal).
   Fallbacks keep the dialog readable even if vars aren't in scope. */
.ingest-unsaved-overlay {
    position: fixed;
    inset: 0;
    z-index: 210; /* Above phone ingest edit sheet (200) */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    background: rgba(0, 0, 0, .6);
}
.ingest-unsaved-dialog {
    width: 100%;
    max-width: 28rem;
    border: 1px solid var(--border, #2a2c33);
    border-radius: 8px;
    background: var(--panel, #15161a);
    color: var(--text, #e7e9ee);
    padding: 20px;
    box-shadow: 0 20px 40px rgba(0, 0, 0, .45);
}
.ingest-unsaved-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}
.ingest-unsaved-title {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
    color: var(--text, #e7e9ee);
}
.ingest-unsaved-x {
    flex: none;
    width: 28px;
    height: 28px;
    border: 1px solid transparent;
    border-radius: 6px;
    background: transparent;
    color: var(--text-dim, #9aa0aa);
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
}
.ingest-unsaved-x:hover {
    border-color: var(--border, #2a2c33);
    background: var(--panel-2, #1d1f24);
    color: var(--text, #e7e9ee);
}
.ingest-unsaved-body {
    margin: 8px 0 0;
    font-size: 14px;
    line-height: 1.45;
    color: var(--text-dim, #9aa0aa);
}
.ingest-unsaved-body strong {
    color: var(--text, #e7e9ee);
    font-weight: 600;
}
.ingest-unsaved-day-list {
    margin: 10px 0 0;
    padding: 0 0 0 1.25rem;
    color: var(--text, #e7e9ee);
    font-size: 13px;
    line-height: 1.55;
}
.ingest-unsaved-day-list li {
    margin: 2px 0;
}
.ingest-unsaved-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 20px;
}
.ingest-unsaved-actions .btn {
    font-family: var(--font-sans, system-ui, sans-serif);
}

/* Company-wide onboarding: dominant picker — matches choose-building / mockup modal.
   Overlay appends to body (outside .padmin), so colors use choose-building fallbacks. */
.crm-dominant-overlay {
    position: fixed;
    inset: 0;
    z-index: 220;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: rgba(0, 0, 0, 0.55);
    font-family: system-ui, -apple-system, sans-serif;
    -webkit-font-smoothing: antialiased;
    line-height: 1.5;
}
.crm-dominant-dialog {
    width: min(440px, 100%);
    max-height: calc(100vh - 48px);
    overflow: auto;
    border: 1px solid #26282f;
    border-radius: 16px;
    background: #1a1c21;
    color: #edeff3;
    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.55);
    padding: 28px 28px 24px;
}
.crm-dominant-welcome {
    margin: 0 0 14px;
    padding-bottom: 14px;
    border-bottom: 1px solid #1f2127;
}
.crm-dominant-welcome h2 {
    margin: 0 0 4px;
    font-size: 22px;
    font-weight: 600;
    letter-spacing: -0.03em;
    line-height: 1.25;
    color: #edeff3;
}
.crm-dominant-welcome p {
    margin: 0;
    font-size: 13px;
    line-height: 1.45;
    color: #9aa0aa;
}
.crm-dominant-eyebrow {
    margin: 0 0 10px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #676d77;
}
.crm-dominant-question {
    margin: 0 0 16px;
    font-size: 17px;
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 1.3;
    color: #edeff3;
}
.crm-dominant-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin: 0 0 20px;
    max-height: min(42vh, 320px);
    overflow: auto;
}
.crm-dominant-option {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    width: 100%;
    margin: 0;
    padding: 14px;
    border: 1px solid #26282f;
    border-radius: 12px;
    background: #141519;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
}
.crm-dominant-option:hover {
    border-color: #3a3d46;
}
.crm-dominant-option.is-selected,
.crm-dominant-option[aria-checked="true"] {
    border-color: #f97269;
    background: rgba(249, 114, 105, 0.08);
}
.crm-dominant-option:focus-visible {
    outline: 2px solid #f97269;
    outline-offset: 2px;
}
.crm-dominant-radio {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin-top: 2px;
    border-radius: 999px;
    border: 1.5px solid #676d77;
    display: grid;
    place-items: center;
}
.crm-dominant-option.is-selected .crm-dominant-radio,
.crm-dominant-option[aria-checked="true"] .crm-dominant-radio {
    border-color: #f97269;
}
.crm-dominant-option.is-selected .crm-dominant-radio::after,
.crm-dominant-option[aria-checked="true"] .crm-dominant-radio::after {
    content: "";
    width: 8px;
    height: 8px;
    border-radius: 999px;
    background: #f97269;
}
.crm-dominant-option-name {
    flex: 1;
    min-width: 0;
    margin: 0;
    font-size: 15px;
    font-weight: 600;
    letter-spacing: -0.01em;
    line-height: 1.35;
    color: #edeff3;
}
.crm-dominant-actions {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 10px;
    margin-top: 0;
}
.crm-dominant-btn-primary {
    appearance: none;
    border: 0;
    border-radius: 10px;
    background: #f97269;
    color: #1a0f0e;
    font: inherit;
    font-size: 13px;
    font-weight: 600;
    padding: 10px 16px;
    cursor: pointer;
}
.crm-dominant-btn-primary:hover {
    filter: brightness(1.05);
}
.crm-dominant-btn-ghost {
    appearance: none;
    border: 1px solid #26282f;
    border-radius: 10px;
    background: transparent;
    color: #9aa0aa;
    font: inherit;
    font-size: 13px;
    font-weight: 500;
    padding: 10px 14px;
    cursor: pointer;
}
.crm-dominant-btn-ghost:hover {
    color: #edeff3;
    border-color: #3a3d46;
    background: rgba(255, 255, 255, 0.03);
}

/* ---- misc ---- */
.badge {
    display: inline-flex; align-items: center; border-radius: 999px;
    padding: 2px 9px; font-size: 11px; font-weight: 600; border: 1px solid var(--border); color: var(--text-dim);
}
.badge.good { color: var(--good); border-color: color-mix(in srgb, var(--good) 40%, transparent); }
.badge.warn { color: var(--warn); border-color: color-mix(in srgb, var(--warn) 40%, transparent); }
.badge.bad  { color: var(--bad);  border-color: color-mix(in srgb, var(--bad) 40%, transparent); }
.muted { color: var(--text-muted); }
.dim { color: var(--text-dim); }
.mono { font-family: var(--font-mono); }
.dot { display: inline-block; width: 9px; height: 9px; border-radius: 999px; }
.inline-form { display: inline; }

.alert { border-radius: 8px; padding: 10px 14px; margin-bottom: 16px; font-size: 13px; }
.alert-ok  { border: 1px solid color-mix(in srgb, var(--good) 40%, transparent); background: color-mix(in srgb, var(--good) 10%, transparent); color: color-mix(in srgb, var(--good) 80%, var(--text)); }
.alert-bad { border: 1px solid color-mix(in srgb, var(--bad) 40%, transparent);  background: color-mix(in srgb, var(--bad) 10%, transparent);  color: color-mix(in srgb, var(--bad) 80%, var(--text)); }
.alert .linkbox { margin-top: 8px; }
.alert .linkbox input { width: 100%; }

/* ---- ephemeral toasts — minimal top-center chip ---- */
.padmin-toast-host {
    position: fixed;
    left: 50%;
    top: max(16px, env(safe-area-inset-top, 0px));
    transform: translateX(-50%);
    z-index: 90;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    width: min(360px, calc(100vw - 32px));
    pointer-events: none;
}
.padmin-toast {
    pointer-events: auto;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    max-width: 100%;
    padding: 8px 14px;
    border: 1px solid color-mix(in srgb, var(--border) 85%, transparent);
    border-radius: 10px;
    background: color-mix(in srgb, var(--panel-2) 92%, transparent);
    box-shadow: 0 10px 30px color-mix(in srgb, #000 35%, transparent);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    color: var(--text);
    cursor: pointer;
    opacity: 0;
    transform: translateY(-8px);
    transition:
        opacity .18s ease,
        transform .22s cubic-bezier(0.16, 1, 0.3, 1);
}
.padmin-toast.padmin-toast-in {
    opacity: 1;
    transform: translateY(0);
}
.padmin-toast.padmin-toast-leave {
    opacity: 0;
    transform: translateY(-6px);
    transition-duration: .14s;
}
.padmin-toast-mark {
    flex: 0 0 auto;
    display: block;
    color: var(--good);
}
.padmin-toast-bad .padmin-toast-mark {
    color: var(--bad);
}
.padmin-toast-text {
    margin: 0;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--text-dim);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.padmin-toast-ok .padmin-toast-text { color: var(--text); }
.padmin-toast-bad .padmin-toast-text { color: var(--text); }
@media (prefers-reduced-motion: reduce) {
    .padmin-toast,
    .padmin-toast.padmin-toast-in,
    .padmin-toast.padmin-toast-leave {
        transition: none;
        transform: none;
    }
}

/* ---- bathroom editor grid (Map tab) ----
   Spacing rhythm: 4px base, 8px field gaps, 16px column inset (SLDS-style). */
.bath-table {
    display: flex; flex-direction: column; gap: 8px;
}
.bath-grid {
    display: block;
    padding: 0; border: 0; margin: 0;
}
.bath-grid > input[type="hidden"] { display: none; }
/* The visible fields live in .bath-grid-row (a 5-col grid) so the hidden
   buildingId/bathroomId inputs at the end of the form never occupy tracks. */
.bath-grid-row {
    display: grid;
    grid-template-columns: minmax(112px, 1fr) 54px 54px 80px 28px;
    column-gap: 8px;
    align-items: center;
}
.bath-grid-row > .input, .bath-grid-row > .select, .bath-grid-row > .bath-fixture { width: 100%; }
.bath-grid-row > .input[name="name"] {
    grid-column: 1;
    padding: 6px 10px;
    font-size: 12px; line-height: 1.25;
}
.bath-grid-row > .bath-fixture:nth-child(2) { grid-column: 2; }
.bath-grid-row > .bath-fixture:nth-child(3) { grid-column: 3; }
.bath-grid-row > .bath-status { grid-column: 4; }
.bath-grid-row > .btn-trash {
    grid-column: 5;
    justify-self: end;
}

/* Header row — same 5-col template as .bath-grid-row so labels align with the
   data columns. .bath-grid.bath-head beats the .bath-grid display:block rule
   regardless of source order. */
.bath-grid.bath-head {
    display: grid;
    grid-template-columns: minmax(112px, 1fr) 54px 54px 80px 28px;
    column-gap: 8px;
    align-items: center;
    font-size: 10px; font-weight: 600; text-transform: uppercase;
    letter-spacing: 0.05em; color: var(--text-muted);
}

.bath-head > span { padding: 0; }

/* Status dropdown — exact match for the Timeline app's StatusSelect:
   rounded-md border, panel-2 bg, 11px medium capitalized text, and a value-driven
   text color (active=green-300, paused=amber-300, inactive=text-muted). Options
   render on the darker --panel like Timeline's `bg-panel text-text`. */
.bath-status {
    width: 100%; min-width: 0;
    border: 1px solid var(--border); border-radius: 6px;
    background: var(--panel-2);
    padding: 4px 6px; font-size: 11px; font-weight: 500;
    text-transform: capitalize; color: var(--text);
}
.bath-status:focus { outline: none; }
.bath-status.is-active { color: #86efac; }
.bath-status.is-paused { color: #fcd34d; }
.bath-status.is-inactive { color: var(--text-muted); }
.bath-status option { background: var(--panel); color: var(--text); text-transform: capitalize; }

/* Fixture count field — exact match for Timeline FixtureCountField (bathrooms-editor.tsx):
   mono numeric input + chevron picker in a bordered panel-2 shell with accent
   focus ring; dropdown uses panel bg, shadow-lg, and accent/15 selected row. */
.bath-fixture { position: relative; min-width: 0; }
.bath-fixture.is-disabled { cursor: not-allowed; opacity: .6; }
.bath-fixture-inner {
    display: flex; align-items: stretch; overflow: hidden;
    border: 1px solid var(--border); border-radius: 6px; background: var(--panel-2);
    transition: border-color .15s, box-shadow .15s;
}
.bath-fixture:focus-within .bath-fixture-inner {
    border-color: var(--accent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 25%, transparent);
}
.bath-fixture-input {
    flex: 1; min-width: 0; border: 0; background: transparent;
    padding: 4px 2px 4px 6px; /* py-1 pl-1.5 pr-0.5 */
    font-family: var(--font-mono);
    font-size: 11px; line-height: 16px; font-variant-numeric: tabular-nums;
    color: var(--text);
}
.bath-fixture-value {
    display: flex;
    align-items: center;
    gap: 0;
    flex: 1 1 auto;
    min-width: 0;
    padding-left: 8px;
    padding-right: 2px;
}
.bath-fixture-value .bath-fixture-input {
    flex: 0 1 auto;
    width: auto;
    min-width: 1ch;
    padding-left: 0;
    padding-right: 0;
    font-size: 12px;
    line-height: 34px;
}
.bath-fixture-total {
    flex: 0 0 auto;
    font-family: var(--font-mono);
    font-size: 12px;
    line-height: 34px;
    font-variant-numeric: tabular-nums;
    color: var(--text-muted);
}
/* Ingest visit editor — match Timeline FixtureCountField (fixture-count-field.tsx)
   used in bubble editing: 34px panel shell, mono cleaned[/total], w-7 chevron,
   and same half-width slot as a start-time control via .ingest-time-row. */
.ingest-fixture {
    position: relative;
    min-width: 0;
    width: 100%;
    height: 34px;
}
.ingest-fixture .bath-fixture-inner {
    display: flex;
    align-items: stretch;
    overflow: hidden;
    box-sizing: border-box;
    width: 100%;
    min-height: 34px;
    height: 100%;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel-2);
    transition: border-color .15s, box-shadow .15s;
}
.ingest-fixture:focus-within .bath-fixture-inner {
    border-color: var(--accent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 25%, transparent);
}
.ingest-fixture .bath-fixture-value {
    display: flex;
    flex: 1 1 auto;
    min-width: 0;
    align-items: center;
    gap: 0;
    padding: 0 2px 0 8px; /* pl-2 pr-0.5 */
}
.ingest-fixture .bath-fixture-input {
    flex: none;
    box-sizing: content-box;
    width: auto;
    min-width: 1ch;
    height: 34px;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    font-family: var(--font-mono);
    font-size: 12px; /* text-xs */
    line-height: 34px;
    font-variant-numeric: tabular-nums;
    color: var(--text);
    color-scheme: dark;
}
.ingest-fixture .bath-fixture-input::placeholder {
    color: color-mix(in srgb, var(--text-muted) 70%, transparent);
}
.ingest-fixture .bath-fixture-input:focus { outline: none; }
.ingest-fixture .bath-fixture-total {
    flex: none;
    font-family: var(--font-mono);
    font-size: 12px;
    line-height: 34px;
    font-variant-numeric: tabular-nums;
    color: var(--text-muted);
}
.ingest-fixture .bath-fixture-toggle {
    display: flex;
    flex: 0 0 28px; /* w-7 */
    width: 28px;
    align-items: center;
    justify-content: center;
    border: 0;
    border-left: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
    background: transparent;
    padding: 0;
    color: var(--text-muted);
    cursor: pointer;
    transition: background-color .15s, color .15s;
}
.ingest-fixture .bath-fixture-toggle:hover {
    background: var(--panel);
    color: var(--text);
}
.ingest-fixture .bath-fixture-chevron {
    display: block;
    width: 14px; /* h-3.5 w-3.5 */
    height: 14px;
    transition: transform .15s;
}
.ingest-fixture.is-open .bath-fixture-chevron { transform: rotate(180deg); }
.ingest-fixture .bath-fixture-menu {
    position: absolute;
    left: 0;
    right: 0;
    z-index: 20;
    margin: 4px 0 0;
    max-height: 176px; /* max-h-44 */
    overflow-y: auto;
    list-style: none;
    padding: 4px 0; /* py-1 */
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
    box-shadow: 0 10px 15px -3px rgb(0 0 0 / 35%), 0 4px 6px -4px rgb(0 0 0 / 25%);
}
.ingest-fixture .bath-fixture-option {
    display: flex;
    align-items: center;
    width: 100%;
    border: 0;
    background: transparent;
    padding: 6px 10px; /* px-2.5 py-1.5 */
    text-align: left;
    font-family: var(--font-mono);
    font-size: 12px;
    font-variant-numeric: tabular-nums;
    color: var(--text-dim);
    cursor: pointer;
    transition: background-color .15s, color .15s;
}
.ingest-fixture .bath-fixture-option:hover {
    background: var(--panel-2);
    color: var(--text);
}
.ingest-fixture .bath-fixture-option.is-selected {
    background: color-mix(in srgb, var(--accent) 15%, transparent);
    color: var(--text);
}
.bath-fixture-input::placeholder { color: color-mix(in srgb, var(--text-muted) 70%, transparent); }
.bath-fixture-input:focus { outline: none; }
.bath-fixture-input:disabled { cursor: not-allowed; }
.bath-fixture-toggle {
    display: flex; flex: 0 0 24px; width: 24px; align-items: center; justify-content: center;
    border: 0; border-left: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
    background: transparent; padding: 0; color: var(--text-muted); cursor: pointer;
    transition: background-color .15s, color .15s;
}
.bath-fixture-toggle:hover { background: var(--panel); color: var(--text); }
.bath-fixture-toggle:disabled { cursor: not-allowed; }
.bath-fixture-chevron { display: block; width: 14px; height: 14px; transition: transform .15s; }
.bath-fixture.is-open .bath-fixture-chevron { transform: rotate(180deg); }
.bath-fixture-menu {
    position: absolute; left: 0; right: 0; z-index: 20; margin: 4px 0 0;
    max-height: 176px; overflow-y: auto;
    list-style: none; margin-block: 4px 0; padding: 4px 0;
    border: 1px solid var(--border); border-radius: 6px;
    background: var(--panel);
    box-shadow: 0 10px 15px -3px rgb(0 0 0 / 35%), 0 4px 6px -4px rgb(0 0 0 / 25%);
    scrollbar-width: thin; scrollbar-color: var(--border) transparent;
}
.bath-fixture-menu::-webkit-scrollbar { width: 10px; height: 10px; }
.bath-fixture-menu::-webkit-scrollbar-track { background: transparent; }
.bath-fixture-menu::-webkit-scrollbar-thumb {
    background: color-mix(in srgb, var(--border) 90%, transparent);
    border: 2px solid transparent; background-clip: padding-box; border-radius: 999px;
}
.bath-fixture-menu[hidden] { display: none; }
.bath-fixture-option {
    display: flex; align-items: center; width: 100%; border: 0; background: transparent;
    padding: 6px 10px; text-align: left; /* px-2.5 py-1.5 */
    font-family: var(--font-mono);
    font-size: 12px; font-variant-numeric: tabular-nums;
    color: var(--text-dim); cursor: pointer;
    transition: background-color .15s, color .15s;
}
.bath-fixture-option:hover { background: var(--panel-2); color: var(--text); }
.bath-fixture-option.is-selected { background: color-mix(in srgb, var(--accent) 15%, transparent); color: var(--text); }

/* ---- Add-bathroom toolbar + inline form (Timeline styling) ----
   Subheader row above the table — height matches map-subheader on the right so
   the border-bottom lines meet across the split. */
.map-subheader {
    flex: 0 0 auto;
    box-sizing: border-box;
    height: var(--map-subheader-h);
    min-height: var(--map-subheader-h);
    max-height: var(--map-subheader-h);
    display: flex; align-items: center;
    padding: 0 16px;
    border-bottom: 1px solid var(--border);
}
.map-subheader-side {
    flex-wrap: wrap;
    justify-content: flex-end;
    align-items: center;
    width: 100%;
    gap: 0;
    background: transparent;
    /* Four action buttons may wrap — grow past the shared 40px row instead of clipping. */
    height: auto;
    min-height: var(--map-subheader-h);
    max-height: none;
    padding-top: 6px;
    padding-bottom: 6px;
}
/* Action group in the bathroom subheader — right-aligned with comfortable button spacing. */
.bath-toolbar-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 6px 8px;
    width: 100%;
}
.padmin a.bath-add-btn,
button.bath-add-btn {
    display: inline-flex; align-items: center; gap: 6px;
    border: 1px solid var(--border); border-radius: 6px; background: var(--panel-2);
    padding: 6px 12px; font: inherit; font-size: 12px; line-height: 16px;
    color: var(--text-dim); cursor: pointer;
    text-decoration: none; transition: border-color .15s, color .15s;
    white-space: nowrap;
}
.padmin a.bath-add-btn:hover,
button.bath-add-btn:hover {
    border-color: color-mix(in srgb, var(--accent) 50%, transparent);
    color: var(--text);
}
button.bath-add-btn.is-pressed,
button.bath-add-btn[aria-pressed="true"] {
    border-color: color-mix(in srgb, var(--accent) 55%, transparent);
    color: var(--text);
    background: color-mix(in srgb, var(--accent) 12%, var(--panel-2));
}
.bath-add-btn .ico { font-size: 13px; line-height: 1; color: inherit; }
.bath-autofill-status {
    margin: 8px 0 0;
    font-size: 12px;
    line-height: 1.35;
}
.bath-autofill-status.is-error {
    color: #c44;
}

/* Discover bathrooms — modal on Map (replaces full-page DiscoverBathrooms). */
.bath-discover-overlay {
    position: fixed;
    inset: 0;
    z-index: 240;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: rgba(0, 0, 0, 0.55);
}
.bath-discover-overlay[hidden] { display: none !important; }
.bath-discover-dialog {
    position: relative;
    width: min(520px, 100%);
    max-height: calc(100vh - 48px);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--border, #26282f);
    border-radius: 16px;
    background: var(--panel, #1a1c21);
    color: var(--text, #edeff3);
    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.55);
    padding: 28px 28px 24px;
}
.bath-discover-close {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 36px;
    height: 36px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: var(--text-dim, #9aa0aa);
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
}
.bath-discover-close:hover {
    color: var(--text, #edeff3);
    background: rgba(255, 255, 255, 0.05);
}
.bath-discover-dialog h2 {
    margin: 0 36px 8px 0;
    font-size: 20px;
    font-weight: 600;
    letter-spacing: -0.03em;
    line-height: 1.25;
}
.bath-discover-sub {
    margin: 0 0 16px;
    font-size: 13px;
    line-height: 1.45;
    color: var(--text-dim, #9aa0aa);
}
.bath-discover-form {
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex: 1 1 auto;
}
.bath-discover-table-wrap {
    flex: 1 1 auto;
    min-height: 0;
    max-height: min(48vh, 360px);
    overflow: auto;
    margin: 0 0 20px;
    border: 1px solid var(--border, #26282f);
    border-radius: 10px;
}
.bath-discover-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}
.bath-discover-table th,
.bath-discover-table td {
    padding: 10px 12px;
    text-align: left;
    border-bottom: 1px solid color-mix(in srgb, var(--border, #26282f) 80%, transparent);
    vertical-align: middle;
}
.bath-discover-table thead th {
    position: sticky;
    top: 0;
    background: var(--panel-2, #1d1f24);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--text-muted, #6b7280);
}
.bath-discover-table tbody tr:last-child td { border-bottom: 0; }
.bath-discover-check { width: 1%; vertical-align: middle; }
.bath-discover-check-input {
    width: 15px;
    height: 15px;
    margin: 0;
    accent-color: var(--padmin-accent, #1a5f4a);
    cursor: pointer;
}
.bath-discover-table tr.is-select-focus .bath-discover-check {
    outline: 1px solid color-mix(in srgb, var(--padmin-accent, #1a5f4a) 55%, transparent);
    outline-offset: 1px;
}
.bath-discover-count { width: 72px; }
.bath-discover-status { width: 72px; }
.bath-discover-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 10px;
    margin-top: auto;
}
.bath-discover-btn-primary,
.bath-discover-btn-cancel {
    appearance: none;
    flex: 1 1 140px;
    min-height: 44px;
    padding: 12px 18px;
    border-radius: 10px;
    font: inherit;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
}
.bath-discover-btn-primary {
    border: 0;
    background: var(--brand, #f97269);
    color: #1a0f0e;
}
.bath-discover-btn-primary:hover { filter: brightness(1.05); }
.bath-discover-btn-cancel {
    border: 1px solid var(--border, #26282f);
    background: transparent;
    color: var(--text-dim, #9aa0aa);
}
.bath-discover-btn-cancel:hover {
    color: var(--text, #edeff3);
    border-color: #3a3d46;
    background: rgba(255, 255, 255, 0.03);
}

.bath-add-form { margin-top: 12px; }
.bath-add-form[hidden] { display: none; }
.bath-add-inner {
    border: 1px dashed var(--border); border-radius: 6px;
    background: color-mix(in srgb, var(--panel-2) 40%, transparent); padding: 12px;
}
.bath-add-grid {
    /* Timeline ADD_BATHROOM_DESKTOP_GRID: 54px fixture columns, 80px status. */
    display: grid; grid-template-columns: minmax(0, 1fr) 54px 54px 80px auto auto;
    gap: 6px; align-items: end;
}
.bath-add-grid .fld { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.bath-add-grid .fld > .input, .bath-add-grid .fld > .select, .bath-add-grid .fld > .bath-fixture { width: 100%; }
.bath-fld-label {
    font-size: 10px; font-weight: 600; text-transform: uppercase;
    letter-spacing: .05em; color: var(--text-muted);
}
.btn-create {
    display: inline-flex; align-items: center; gap: 4px;
    border: 1px solid color-mix(in srgb, var(--accent) 50%, transparent);
    background: color-mix(in srgb, var(--accent) 10%, transparent);
    border-radius: 6px; padding: 6px 10px; font-size: 11px; font-weight: 500;
    color: var(--text); cursor: pointer; transition: background-color .15s;
}
.btn-create:hover { background: color-mix(in srgb, var(--accent) 20%, transparent); }
.btn-create .ico { font-size: 12px; line-height: 1; }
.btn-x {
    display: inline-flex; align-items: center; justify-content: center;
    height: 30px; width: 30px; border: 1px solid var(--border); border-radius: 6px;
    background: var(--panel-2); color: var(--text-muted); cursor: pointer;
    font-size: 12px; transition: border-color .15s, color .15s;
}
.btn-x:hover { border-color: color-mix(in srgb, var(--bad) 40%, transparent); color: var(--bad); }

/* Icon-only trash delete button in the bathroom table — borderless icon control. */
.btn-trash {
    display: inline-flex; align-items: center; justify-content: center;
    height: 28px; width: 28px; padding: 0;
    border: 0; border-radius: 6px;
    background: transparent; color: var(--text-muted); cursor: pointer;
    transition: color .15s, background-color .15s;
}
.btn-trash:hover { background: color-mix(in srgb, var(--bad) 10%, transparent); color: var(--bad); }
.btn-trash svg { display: block; }

/* ---- Map tab split: bathroom table beside the map (Timeline layout) ----
   Mirrors the Timeline app's Data → Map screen: a flat layout with thin dividing
   lines and no rounded panel boxes. The table sits in a fixed-width column on the
   left, separated from the map by a hairline; they stack on narrow screens. */

/* Full-bleed page: drop the content wrapper's padding so the split's vertical
   divider runs unbroken from just under the subheader. Each column supplies its
   own padding instead. */
.padmin-content.map-page {
    padding: 0; max-width: none;
    flex: 1 1 auto; min-height: 0;
    display: flex; flex-direction: column;
    overflow: hidden;
    /* Shared letterbox grey around the customer-sized map stage. */
    --map-letterbox: color-mix(in srgb, var(--panel-2) 50%, transparent);
    --map-subheader-h: 40px;
}

/* Two-pane split — bathroom table beside the map (Timeline layout).
   Default: stacked (table on top, map band below). Row at ≥900px viewport. */
.map-split {
    flex: 1 1 auto; min-height: 0;
    display: flex; flex-direction: column;
    overflow: hidden;
}

.map-split-side {
    flex: 0 0 auto;
    flex-shrink: 0;
    display: flex; flex-direction: column;
    min-height: 0; min-width: 0;
    max-height: 42vh;
    overflow: hidden;
    border-bottom: 1px solid var(--border);
    --map-side-pad-left: 20px;
    --map-side-pad-right: 16px;
}
.map-split-side .map-subheader {
    flex: 0 0 auto;
    padding: 6px var(--map-side-pad-right) 6px var(--map-side-pad-left);
    height: auto;
    min-height: var(--map-subheader-h);
    max-height: none;
}
.map-split-side .map-side-body {
    flex: 1 1 auto; min-height: 0;
    overflow-y: auto;
    padding: 16px var(--map-side-pad-right) 16px var(--map-side-pad-left);
}

.map-split-main {
    flex: 1 1 auto;
    min-height: 0;
    min-width: 0;
    padding: 0;
    display: flex; flex-direction: column;
    overflow: hidden;
    background: var(--map-letterbox);
}
.map-subheader-map {
    flex: 0 0 var(--map-subheader-h);
    height: var(--map-subheader-h);
    min-height: var(--map-subheader-h);
    max-height: var(--map-subheader-h);
    background: var(--map-letterbox);
    position: relative;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
    padding: 0 10px;
}
.map-view-status {
    position: absolute;
    left: 10px;
    right: 200px;
    margin: 0;
    font-size: 11px;
    color: var(--accent);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.map-view-status.is-bad { color: var(--bad); }
.map-view-status.is-pending { color: var(--text-dim); }
.map-view-save {
    flex: 0 0 auto;
}
.map-view-reset {
    flex: 0 0 auto;
    margin-right: 0;
}
.map-view-btn {
    border: 1px solid var(--border);
    background: var(--panel);
    color: var(--text-dim);
    border-radius: 6px;
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 500;
    cursor: pointer;
}
.map-view-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
.map-view-btn.is-active:not(:disabled) {
    border-color: color-mix(in srgb, var(--accent) 50%, var(--border));
    background: color-mix(in srgb, var(--accent) 10%, var(--panel));
    color: var(--accent);
}

/* Map viewport — Timeline MapStageScaler: fixed customer-dashboard panel size,
   centered with letterbox/pillarbox. Scrolls if the ops pane is tighter — never
   shrinks the stage (that was making the map short). Size set by admin-map.js.
   Inner matches MapPanelShell: WebGL viewport + fixed bottom stats band. */
.map-stage-outer {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: auto;
    background: var(--map-letterbox);
}
.map-stage-inner {
    position: relative;
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--panel, #15161a);
}
.map-stage-viewport {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    background: #0a0a0a;
}
/* Timeline MAP_PANEL_BOTTOM_H_PX — customer dashboard stats band height. */
.map-stage-footer {
    flex: 0 0 180px;
    height: 180px;
    min-height: 180px;
    max-height: 180px;
    box-sizing: border-box;
    border-top: 1px solid var(--border);
    background: color-mix(in srgb, var(--panel-2) 30%, transparent);
    padding: 12px 16px;
    overflow: hidden;
}
.map-stage-footer.is-mobile {
    flex-basis: 120px;
    height: 120px;
    min-height: 120px;
    max-height: 120px;
    padding: 8px 12px;
}
.map-stage-footer-hint {
    margin: 0;
    font-size: 11px;
    line-height: 1.45;
    color: var(--text-dim);
}

/* Map viewport + iframe — flex column with absolute iframe (iframes ignore flex-grow). */
.map-viewport {
    flex: 1 1 auto; min-height: 0;
    position: relative;
    background: var(--panel);
    overflow: hidden;
}
.map-frame {
    position: absolute; inset: 0;
    display: block; width: 100%; height: 100%;
    border: 0; background: #0a0a0a;
}

/* Side-by-side on wide screens — bathroom column wide enough for toolbar buttons. */
@media (min-width: 900px) {
    .map-split { flex-direction: row; align-items: stretch; }
    .map-split-side {
        flex: 0 1 580px;
        width: 580px;
        max-width: min(580px, 50%);
        min-width: 360px;
        max-height: none;
        border-bottom: 0;
        border-right: 1px solid var(--border);
    }
    .map-split-main {
        flex: 1 1 auto;
        min-width: 0;
        min-height: 0;
    }
}

.map-split .panel {
    border: 0; border-radius: 0; background: transparent;
    margin: 0;
}
.map-split .map-side-body.panel {
    padding: 16px var(--map-side-pad-right) 16px var(--map-side-pad-left);
}
/* Section header: small uppercase label with a hairline underline, like the
   Timeline editor's header row. */
.map-split .panel-title {
    margin: 0 0 12px; padding-bottom: 8px;
    border-bottom: 1px solid var(--border);
}
/* Space stacked sections in the left column (the header underline reads as the
   section divider, so no extra top border is needed). */
.map-split-side .panel + .panel { margin-top: 22px; }

/* ---- week calendar (Data ingest) — Timeline schedule-grid ---- */
.cal-wrap { --hour: 40px; }
.cal-toolbar { display: flex; align-items: center; gap: 14px; margin-bottom: 10px; flex-wrap: wrap; }
.cal { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; background: var(--panel); }
/* Ingest fillHeight chrome — must follow .cal or the rounded card border wins */
.cal.ingest-cal {
    border: 0;
    border-radius: 0;
    overflow: hidden;
    background: var(--panel);
}
.ingest-cal .cal-head {
    /* Day header cells already draw border-b (Timeline); don't stack .cal-head's rule */
    border-bottom: none;
}
.cal-head {
    display: grid;
    grid-template-columns: 60px repeat(7, 1fr);
    border-bottom: 1px solid var(--border);
}
.cal-head .dh { text-align: center; font-weight: 600; font-size: 12px; padding: 8px 0; color: var(--text); border-left: 1px solid var(--border); }
.cal-head .dh.today { color: var(--accent); }
.cal-scroll {
    max-height: 72vh;
    overflow: auto;
    overflow-x: hidden;
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, var(--border) 45%, var(--panel)) transparent;
}
.cal-scroll::-webkit-scrollbar { width: 7px; }
.cal-scroll::-webkit-scrollbar-track { background: transparent; }
.cal-scroll::-webkit-scrollbar-thumb {
    background: color-mix(in srgb, var(--border) 50%, var(--panel));
    border: 1px solid transparent;
    background-clip: padding-box;
    border-radius: 999px;
}
.cal-scroll::-webkit-scrollbar-thumb:hover {
    background: color-mix(in srgb, var(--text-muted) 35%, var(--panel));
    background-clip: padding-box;
}
.cal-body {
    display: grid;
    grid-template-columns: 60px repeat(7, 1fr);
    position: relative;
}
.cal-gutter {
    position: relative;
    background: color-mix(in srgb, var(--panel-2) 40%, transparent);
    border-right: 1px solid var(--border);
}
.cal-gutter .hl {
    position: absolute;
    left: 0;
    right: 0;
    padding: 0 8px;
    transform: translateY(-50%);
    font-family: var(--font-mono);
    font-size: 10px;
    font-variant-numeric: tabular-nums;
    color: var(--text-muted);
    white-space: nowrap;
    text-align: left;
}
.cal-gutter .hl.major {
    color: var(--text-dim);
    font-weight: 500;
}
.cal-col {
    position: relative;
    border-right: 1px solid var(--border);
    background: var(--panel);
    touch-action: none;
}
/* Timeline: inset last column so swim lanes align under header (above scrollbar). */
.cal-col-last { padding-right: 7px; box-sizing: border-box; }
.cal-col .hourline {
    position: absolute;
    left: 0;
    right: 0;
    border-top: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
    pointer-events: none;
}
.cal-col .hourline.major {
    border-top-color: color-mix(in srgb, var(--border) 70%, transparent);
}

/* expected-hours bands (read-only, behind visits) */
.cal-band { position: absolute; left: 0; right: 0; background: color-mix(in srgb, var(--good) 6%, transparent); pointer-events: none; }

/* Timeline-style visit bubbles / short lines (Data ingest) */
.cal-visit {
    position: absolute;
    box-sizing: border-box;
    overflow: hidden;
    padding: 0;
    border: 0;
    margin: 0;
    background: transparent;
    font: inherit;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
    color: var(--visit-color, var(--good));
}
.cal-visit-selected { z-index: 10; }
.cal-visit-fill {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border-radius: 6px;
    transition: box-shadow .15s, background .15s;
}
.cal-visit-fill-compact { justify-content: center; }
.cal-visit-fill-compact-pad { padding: 0 6px; }
.cal-visit-fill-selected {
    box-shadow:
        inset 0 0 0 2px var(--visit-ring-color, var(--good)),
        0 4px 14px rgba(0, 0, 0, .45);
}
.cal-visit-line {
    position: absolute;
    pointer-events: none;
    border-radius: 2px;
    transition: box-shadow .15s;
}
.cal-visit-line-thin { z-index: 6; }
.cal-visit-line-selected {
    z-index: 10;
    box-shadow: inset 0 0 0 2px var(--visit-ring-color, var(--good));
}
.cal-visit-line-hit {
    position: absolute;
    z-index: 5;
    padding: 0;
    border: 0;
    margin: 0;
    background: transparent;
    cursor: pointer;
}
.cal-visit-line-hit-selected { z-index: 10; }

.cal-visit-fill.tier-sm { padding: 4px 6px 2px; }
.cal-visit-fill.tier-md { padding: 4px 8px; }
.cal-visit-fill.tier-lg { padding: 8px 8px 4px; }
.cal-visit-fill.row-sm { gap: 2px; }
.cal-visit-fill.row-md { gap: 4px; }
.cal-visit-fill.row-lg { gap: 6px; }
.cal-visit .vlbl-top {
    display: flex;
    align-items: flex-start;
    min-width: 0;
    width: 100%;
}
.cal-visit .vlbl-top.row-sm { gap: 2px; }
.cal-visit .vlbl-top.row-md { gap: 4px; }
.cal-visit .vlbl-top.row-lg { gap: 6px; }
.cal-visit .vlbl-top-compact { align-items: center; }
.cal-visit .vname {
    flex: 1;
    min-width: 0;
    font-weight: 700;
    letter-spacing: -0.025em;
    line-height: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* Desktop: full bathroom name. Phone: short (M1 / W2) via max-width 767. */
.cal-visit .vname-short { display: none; }
.cal-visit .vname-full { display: inline; }
.cal-visit .code-sm { font-size: 9px; }
.cal-visit .code-md { font-size: 10px; }
.cal-visit .code-lg { font-size: 11px; }
.cal-visit .vtime {
    flex: none;
    font-family: var(--font-mono);
    font-weight: 300;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    opacity: .7;
    white-space: nowrap;
}
.cal-visit .time-sm { font-size: 8px; }
.cal-visit .time-md { font-size: 9px; }
.cal-visit .time-lg { font-size: 10px; }
.cal-visit .vicon { flex: none; line-height: 1; margin-left: auto; }
.cal-visit .vicon-ok { font-size: 11px; font-weight: 700; }
.cal-visit .icon-sm { width: 10px; height: 10px; font-size: 10px; }
.cal-visit .icon-md { width: 12px; height: 12px; font-size: 11px; }
.cal-visit .icon-lg { width: 12px; height: 12px; font-size: 11px; }
.cal-visit .vicon-partial {
    display: inline-block;
    border: 1.5px dashed currentColor;
    border-radius: 50%;
    vertical-align: 1px;
}
.cal-visit .vicon-partial.icon-sm { width: 10px; height: 10px; }
.cal-visit .vicon-partial.icon-md,
.cal-visit .vicon-partial.icon-lg { width: 12px; height: 12px; }
.cal-visit .vicon-anomaly {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1.5px solid currentColor;
    border-radius: 50%;
    font-weight: 700;
    font-style: italic;
}
.cal-visit .vicon-anomaly.icon-sm { width: 10px; height: 10px; font-size: 7px; }
.cal-visit .vicon-anomaly.icon-md,
.cal-visit .vicon-anomaly.icon-lg { width: 12px; height: 12px; font-size: 8px; }

/* Timeline ScheduleVisitLinePopover — short-visit hover/click popup.
   Shell is fixed 152px (Timeline POPOVER_WIDTH_PX).
   Timeline uses w-6 for bathroom *codes*; Azure shows names, so label
   column matches the SPA Timeline port (5.5rem) inside the same shell. */
.visit-line-popover {
    pointer-events: auto;
    position: fixed;
    z-index: 70;
    box-sizing: border-box;
    width: 152px;
    min-width: 152px;
    max-width: 152px;
    overflow: hidden;
    border-radius: 9px;
    padding: 5px;
    background: #19191b;
    border: 1px solid #2f2f32;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.55);
}
.visit-line-popover-row {
    display: flex;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
    cursor: pointer;
    align-items: center;
    gap: 8px; /* gap-2 */
    border: 0;
    margin: 0;
    padding: 6px; /* px-1.5 py-1.5 */
    border-radius: 6px;
    background: transparent;
    text-align: left;
    transition: background 0.12s;
}
.visit-line-popover-row:hover { background: #23232a; }
.visit-line-popover-label {
    flex: 0 0 5.5rem;
    width: 5.5rem;
    max-width: 5.5rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
    color: #7fdfa4;
}
/* Timeline: min-w-0 flex-1 truncate text-right font-mono text-[10px] */
.visit-line-popover-time {
    min-width: 0;
    flex: 1 1 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: right;
    font-family: var(--font-mono);
    font-size: 10px;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    color: #8a8a8e;
}

/* ---- Time Zone floater (Timeline IngestTimezoneFloater parity) ---- */
.tz-floater-btn {
    position: fixed;
    right: 16px;
    bottom: 16px;
    z-index: 40;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 36px;
    padding: 0 12px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel-2);
    color: var(--text);
    font-size: 12px;
    font-weight: 500;
    line-height: 1;
    cursor: pointer;
    box-shadow:
        0 10px 15px -3px rgba(0, 0, 0, 0.4),
        0 4px 6px -4px rgba(0, 0, 0, 0.3);
    transition: opacity .2s, background-color .15s;
}
.tz-floater-btn:hover { background: var(--panel); }
.tz-floater-btn.is-open {
    opacity: 0;
    pointer-events: none;
}
.tz-floater-ico { color: var(--text-muted); flex: 0 0 auto; }

.tz-floater-panel {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 50;
    border-top: 1px solid var(--border);
    background: color-mix(in srgb, var(--panel-2) 95%, transparent);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    box-shadow: 0 -20px 40px rgba(0, 0, 0, 0.45);
    transform: translateY(100%);
    transition: transform .3s ease-out;
    pointer-events: none;
}
.tz-floater-panel.is-open {
    transform: translateY(0);
    pointer-events: auto;
}
@media (prefers-reduced-motion: reduce) {
    .tz-floater-panel { transition: none; }
}
.tz-floater-panel-head {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding: 8px 16px 0;
}
@media (min-width: 768px) {
    .tz-floater-panel-head { padding-left: 24px; padding-right: 24px; }
}
.tz-floater-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
    color: var(--text-muted);
    cursor: pointer;
    transition: background-color .12s, color .12s;
}
.tz-floater-close:hover { background: var(--panel-2); color: var(--text); }

.tz-floater-scrubber {
    padding: 0 16px 16px;
}
@media (min-width: 768px) {
    .tz-floater-scrubber { padding-left: 24px; padding-right: 24px; }
}

.tz-scrubber-grid {
    display: grid;
    grid-template-columns: minmax(6.25rem, 7.25rem) minmax(5.75rem, 6rem) minmax(0, 1fr);
    column-gap: 8px;
    row-gap: 8px;
    min-width: 0;
    overflow: visible;
    user-select: none;
}

.tz-row-label {
    grid-column: 1;
    min-width: 0;
    position: relative;
}
.tz-row-control {
    position: absolute;
    top: 50%;
    left: -8px;
    z-index: 10;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    padding: 0;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: color-mix(in srgb, var(--text-muted) 35%, transparent);
    cursor: pointer;
    transform: translate(-50%, -50%);
    transition: color .12s;
}
@media (min-width: 768px) {
    .tz-row-control { left: -12px; }
}
.tz-row-control:hover { color: color-mix(in srgb, var(--text-muted) 70%, transparent); }

.tz-row-btn,
.tz-clock-btn {
    display: flex;
    flex-direction: column;
    justify-content: center;
    height: 40px;
    padding: 0 6px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    cursor: pointer;
    transition: background-color .12s, color .12s, box-shadow .12s;
    overflow: hidden;
}
.tz-row-btn { width: 100%; align-items: flex-start; text-align: left; }
.tz-clock-btn {
    grid-column: 2;
    align-items: flex-end;
    text-align: right;
}
.tz-row-btn.is-active,
.tz-clock-btn.is-active {
    background: color-mix(in srgb, var(--accent) 10%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent);
}
.tz-clock-btn:not(.is-active):hover {
    background: color-mix(in srgb, var(--panel-2) 50%, transparent);
}
.tz-row-btn.is-active .tz-row-title,
.tz-clock-btn.is-active .tz-clock-time { color: var(--accent); }
.tz-row-btn.is-active .tz-row-sub,
.tz-clock-btn.is-active .tz-clock-day {
    color: color-mix(in srgb, var(--accent) 75%, transparent);
}

.tz-row-title {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 14px;
    font-weight: 500;
    line-height: 1;
    color: var(--text);
}
.tz-row-title.mono {
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
}
.tz-row-sub,
.tz-clock-day {
    margin-top: 2px;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 9px;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    color: var(--text-muted);
}
.tz-clock-time {
    white-space: nowrap;
    font-family: var(--font-mono);
    font-size: 14px;
    font-weight: 500;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    color: var(--text);
}

.tz-track-wrap {
    grid-column: 3;
    min-width: 0;
    align-self: center;
}
.tz-track {
    position: relative;
    display: flex;
    width: 100%;
    min-width: 0;
    height: 40px;
    overflow: hidden;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
    cursor: pointer;
    touch-action: none;
    user-select: none;
}
.tz-track.is-panning { cursor: grabbing; }

.tz-hour-cell {
    position: relative;
    display: flex;
    flex: 1 1 0;
    min-width: 0;
    align-items: center;
    justify-content: center;
    border-right: 1px solid color-mix(in srgb, var(--border) 40%, transparent);
    background: var(--panel);
    color: var(--text-muted);
}
.tz-hour-cell:last-child { border-right: 0; }
.tz-hour-cell.boundary {
    border-right-color: color-mix(in srgb, var(--text-muted) 35%, transparent);
}
.tz-hour-fill {
    pointer-events: none;
    position: absolute;
    inset-block: 0;
}
.tz-hour-fill-scheduled {
    background: color-mix(in srgb, var(--good) 6%, transparent);
}
.tz-hour-label {
    pointer-events: none;
    position: relative;
    z-index: 1;
    padding: 0 2px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 9px;
    font-weight: 500;
    font-variant-numeric: tabular-nums;
    color: var(--text-dim);
}
.tz-day-tag {
    pointer-events: none;
    position: absolute;
    bottom: 1px;
    font-size: 6px;
    font-weight: 400;
    line-height: 1;
    color: color-mix(in srgb, var(--text-muted) 65%, transparent);
}
.tz-day-tag.end { right: 1px; }
.tz-day-tag.start { left: 1px; }

.tz-scrub-time {
    pointer-events: none;
    position: absolute;
    bottom: 1px;
    z-index: 10;
    white-space: nowrap;
    font-size: 6px;
    font-weight: 400;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    color: color-mix(in srgb, var(--text-muted) 65%, transparent);
}
.tz-scrub-time.right { transform: translateX(1px); }
.tz-scrub-time.left { transform: translateX(-100%); padding-right: 1px; }

.tz-scrub-line-layer {
    pointer-events: none;
    position: relative;
    grid-column: 3;
    min-width: 0;
}
.tz-scrub-line {
    position: absolute;
    inset-block: 0;
    z-index: 10;
    width: 1px;
    background: rgba(255, 255, 255, 0.3);
    transform: translateX(-50%);
}

/* ---- CRM company hub chrome (Stage 0a; from mockup) ---- */
.padmin-crm-hub > .padmin-topbar { position: relative; }
.padmin-crm-hub > .padmin-topbar .brand { margin-right: 50px; }
.crm-global-search {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    flex: 0 1 auto;
    width: min(420px, calc(100vw - 280px));
    max-width: 420px;
    margin: 0;
    min-width: 160px;
    z-index: 50;
}
.crm-global-search .input {
    width: 100%;
    height: 34px;
    border: 1px solid color-mix(in srgb, var(--border) 45%, transparent);
    border-radius: 6px;
    background: color-mix(in srgb, var(--panel-2) 35%, transparent);
    color: var(--text-dim);
    padding: 0 12px 0 34px;
    font: inherit;
    font-size: 13px;
    box-sizing: border-box;
    transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease, color 0.15s ease;
}
.crm-global-search .input:hover {
    border-color: color-mix(in srgb, var(--border) 70%, transparent);
    background: color-mix(in srgb, var(--panel-2) 50%, transparent);
}
.crm-global-search .input:focus {
    outline: none;
    color: var(--text);
    border-color: color-mix(in srgb, var(--accent, #6ea8fe) 35%, var(--border));
    background: color-mix(in srgb, var(--panel-2) 55%, transparent);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent, #6ea8fe) 10%, transparent);
}
.crm-global-search .input:disabled { opacity: 0.7; cursor: not-allowed; }
.crm-global-search .input::placeholder {
    color: color-mix(in srgb, var(--text-muted) 55%, transparent);
}
.crm-global-search .search-ico {
    position: absolute;
    left: 10px;
    top: 50%;
    transform: translateY(-50%);
    width: 14px;
    height: 14px;
    color: color-mix(in srgb, var(--text-muted) 65%, transparent);
    pointer-events: none;
}
.crm-global-search:focus-within .search-ico {
    color: var(--text-muted);
}
.crm-search-results {
    position: absolute;
    left: 0;
    right: 0;
    top: calc(100% + 6px);
    z-index: 60;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--panel, #15161a);
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.4);
    max-height: min(70vh, 420px);
    overflow: auto;
    padding: 6px 0;
}
.crm-search-results[hidden] { display: none; }
.crm-search-group {
    padding: 8px 12px 4px;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-muted);
}
.crm-search-empty {
    padding: 14px 12px;
    font-size: 13px;
    color: var(--text-muted);
    text-align: center;
}
.crm-search-hit {
    display: block;
    width: 100%;
    text-align: left;
    border: 0;
    background: transparent;
    color: var(--text);
    font: inherit;
    font-size: 13px;
    padding: 8px 12px;
    cursor: pointer;
}
.crm-search-hit:hover,
.crm-search-hit.is-active {
    background: var(--panel-2);
}
.crm-search-hit .sr-title {
    display: block;
    font-weight: 500;
    padding-right: 64px;
}
.crm-search-hit .sr-meta {
    display: block;
    font-size: 12px;
    color: var(--text-dim, var(--text-muted));
    margin-top: 2px;
    padding-right: 64px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.crm-search-hit .sr-kind {
    float: right;
    font-size: 11px;
    color: var(--text-muted);
    margin-left: 8px;
    margin-top: 1px;
}
.lead-card.is-search-hit {
    outline: 1px solid color-mix(in srgb, var(--accent, #6ea8fe) 70%, transparent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #6ea8fe) 22%, transparent);
    transition: outline-color 0.4s ease, box-shadow 0.4s ease;
}

.crm-seg {
    display: flex;
    gap: 0;
    border-bottom: 1px solid var(--border);
    margin: 0 0 18px;
    align-items: center;
}
.crm-seg button {
    appearance: none;
    border: 0;
    background: transparent;
    color: var(--text-dim);
    font: inherit;
    font-size: 13px;
    font-weight: 500;
    padding: 10px 14px;
    margin-bottom: -1px;
    border-bottom: 2px solid transparent;
    cursor: pointer;
}
.crm-seg button:hover { color: var(--text); }
.crm-seg button.on {
    color: var(--text);
    border-bottom-color: var(--accent);
}

/* No horizontal padding on hub content: tabrow hairline must be full-bleed to the
   content chrome edges (same idea as home `.crm-subheader`). Panes / tabrow keep
   their own 20px gutters. */
.padmin-crm-hub > .padmin-main > .padmin-content.wide.crm-hub {
    padding: 0;
}

/* One chrome row: entity tabs (left) | Details | Onboarding | App (center) | ⋮ (right).
   Modest space below the hairline so pane content isn't flush — not a second
   border / hollow "blank subheader" band. */
.padmin-crm-hub .crm-hub-tabrow {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: stretch;
    column-gap: 12px;
    /* 100vw (not 100%): span the stable scrollbar gutter on .padmin-main so the
       bottom hairline meets the topbar / viewport edge when the scrollbar is absent. */
    width: 100vw;
    max-width: 100vw;
    margin: 0 0 36px;
    padding: 0 20px;
    box-sizing: border-box;
    border-bottom: 1px solid var(--border);
    background: var(--bg);
    min-height: 42px;
}
.padmin-crm-hub #crm-co-tabs.crm-co-tabs.crm-seg {
    max-width: none;
    width: auto;
    min-width: 0;
    margin: 0;
    padding: 10px 0 0;
    box-sizing: border-box;
    border-bottom: 0;
    align-items: flex-end;
    /* overflow-x:auto alone computes overflow-y:auto (CSS overflow pairing) and
       shows a vertical scrollbar when button padding/border/margin is 1px taller. */
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: thin;
}
.padmin-crm-hub #crm-co-tabs.crm-co-tabs.crm-seg > button {
    /* Negative margin was for overlapping a shared border; here it only inflates scrollHeight. */
    margin-bottom: 0;
}
.crm-co-tab-company {
    display: inline-flex !important;
    align-items: center;
    gap: 8px;
}
.crm-co-tab-mark {
    position: relative;
    display: inline-grid;
    place-items: center;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    border: 1px solid var(--border);
    background: var(--panel-2);
    color: var(--text-muted);
    font-size: 8px;
    font-weight: 600;
    line-height: 1;
    overflow: hidden;
    flex-shrink: 0;
}
.crm-co-tab-mark img.crm-co-logo-img,
.crm-co-tab-mark img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.crm-co-tab-mark.has-image .crm-co-logo-initials { display: none; }
.crm-co-tab-label {
    max-width: 160px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.crm-co-back {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    align-self: center;
    width: 28px;
    height: 28px;
    margin: 0 2px 0 0;
    padding: 0;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--text-dim);
    text-decoration: none;
    cursor: pointer;
}
.crm-co-back:hover {
    color: var(--text);
    background: color-mix(in srgb, var(--panel-2) 80%, transparent);
}
.crm-co-back:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 1px;
}
.crm-co-back svg { width: 16px; height: 16px; flex: none; }

/* Centered mode group: full-height 1px separators via stretch (not min-height:100%). */
.padmin-crm-hub .crm-mode-center {
    display: flex;
    justify-content: center;
    align-items: stretch;
    justify-self: center;
    align-self: stretch;
    margin: 0;
    padding: 0;
    min-width: 0;
    height: auto;
    box-sizing: border-box;
}
.crm-building-mode {
    display: flex;
    justify-content: center;
    align-items: stretch;
    align-self: stretch;
    width: auto;
    height: auto;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    box-sizing: border-box;
}
.crm-building-mode[hidden] { display: none !important; }
.crm-building-mode-seg {
    display: inline-flex;
    align-items: stretch;
    align-self: stretch;
    gap: 0;
    height: auto;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-sizing: border-box;
}
.crm-building-mode-seg > [role="tab"] {
    appearance: none;
    display: inline-flex;
    align-items: center;
    align-self: stretch;
    margin: 0;
    padding: 0 14px;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--text-dim);
    font: inherit;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.2;
    cursor: pointer;
    /* Inset underline (not border-bottom) so full-height L/R separators stay flush
       and tabrow scrollHeight is unchanged — matches .crm-seg accent rail. */
    box-shadow: inset 0 -2px 0 transparent;
    box-sizing: border-box;
}
/* Full-height dividers: borders span the stretched tab (= tabrow chrome height).
   Outer edges bookend Details…App; sibling rule covers between-mode separators. */
.crm-building-mode-seg > [role="tab"]:first-child {
    border-left: 1px solid var(--border);
}
.crm-building-mode-seg > [role="tab"]:last-child {
    border-right: 1px solid var(--border);
}
.crm-building-mode-seg > [role="tab"]:not([hidden]) ~ [role="tab"]:not([hidden]) {
    border-left: 1px solid var(--border);
}
.crm-building-mode-seg > [role="tab"]:hover { color: var(--text); }
.crm-building-mode-seg > [role="tab"].on {
    color: var(--text);
    background: transparent;
    font-weight: 600;
    box-shadow: inset 0 -2px 0 var(--accent);
}
.crm-building-mode-seg > [role="tab"]:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 1px;
}
.crm-building-mode-seg > [role="tab"][hidden] { display: none !important; }

.crm-co-more-wrap {
    position: relative;
    display: flex;
    align-items: center;
    justify-self: end;
    align-self: center;
    flex: none;
    margin: 0;
    padding: 0;
    border-left: 0;
    z-index: 2;
}
.crm-co-more-wrap[hidden] { display: none !important; }
.crm-co-more {
    display: grid;
    place-items: center;
    appearance: none;
    width: auto;
    min-width: 28px;
    height: 28px;
    margin: 0;
    padding: 4px 8px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--text-muted);
    font: inherit;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.2;
    cursor: pointer;
}
.crm-co-more:hover,
.crm-co-more[aria-expanded="true"] {
    color: var(--text);
    background: color-mix(in srgb, var(--panel) 70%, transparent);
}
.crm-co-more:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 1px;
}
.crm-co-more-menu {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 50;
    min-width: 160px;
    padding: 4px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--panel);
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.45);
}
.crm-co-more-menu[hidden] { display: none !important; }
.crm-co-more-menu button {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    margin: 0;
    padding: 8px 10px;
    border: 0;
    border-radius: 5px;
    background: transparent;
    color: var(--text);
    font: inherit;
    font-size: 12.5px;
    font-weight: 500;
    text-align: left;
    cursor: pointer;
}
.crm-co-more-menu button:hover {
    background: color-mix(in srgb, var(--accent) 14%, transparent);
}
.crm-co-more-menu button[hidden] { display: none !important; }
.crm-co-more-check {
    display: grid;
    place-items: center;
    width: 14px;
    height: 14px;
    flex: none;
    border: 1px solid var(--border);
    border-radius: 3px;
    background: var(--panel-2);
    color: transparent;
    font-size: 10px;
    line-height: 1;
}
.crm-co-more-check::before { content: "✓"; }
[aria-checked="true"] .crm-co-more-check {
    border-color: color-mix(in srgb, var(--accent) 55%, var(--border));
    background: color-mix(in srgb, var(--accent) 22%, transparent);
    color: var(--accent);
}
.crm-co-more-label { flex: 1; min-width: 0; }

.crm-co-pane { display: none; }
.crm-co-pane.on { display: block; padding-bottom: 64px; }
.crm-co-pane#co-company.on {
    max-width: 720px;
    width: calc(100% - 40px);
    margin-left: auto;
    margin-right: auto;
}
.crm-co-pane#co-company-app.on {
    max-width: none;
    width: 100%;
    margin-left: 0;
    margin-right: 0;
    padding-bottom: 48px;
    box-sizing: border-box;
}
/* Match Details (#co-building): full-bleed so Info section rail sits flush-left */
.crm-co-pane#co-onboarding.on {
    max-width: none;
    width: 100%;
    margin-left: 0;
    margin-right: 0;
    padding: 0 20px 64px;
    box-sizing: border-box;
}
.crm-co-pane#co-app.on {
    max-width: none;
    width: 100%;
    margin-left: 0;
    margin-right: 0;
    padding-bottom: 0;
    box-sizing: border-box;
}
.crm-company-app-body {
    padding: 20px 20px 0;
    max-width: 920px;
}
.crm-hub-details-card {
    border: 1px solid var(--border);
    border-radius: 10px;
    background: var(--panel);
    padding: 18px 20px;
}
.crm-hub-details-card h3 {
    margin: 0 0 14px;
    font-size: 14px;
    font-weight: 600;
}
.crm-hub-field-row {
    display: grid;
    grid-template-columns: 140px 1fr;
    gap: 12px;
    align-items: baseline;
    padding: 8px 0;
    border-top: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
}
.crm-hub-field-row:first-of-type { border-top: 0; }
.crm-hub-field-label { color: var(--text-muted); font-size: 12px; }
.crm-hub-field-value { color: var(--text); font-size: 13px; }
.crm-hub-stub {
    max-width: 640px;
    margin: 0 auto;
    padding: 8px 0 24px;
}
.crm-hub-stub h3 { margin: 0 0 8px; font-size: 16px; font-weight: 600; }

.padmin-crm-hub > .padmin-main {
    overflow-y: auto !important;
    overflow-x: hidden;
    scrollbar-gutter: stable;
}
.padmin-crm-hub > .padmin-main:has(#co-app.on) {
    display: flex;
    flex-direction: column;
    overflow: hidden !important;
    /* No reserved gutter — ops iframe should be full-bleed in the pane. */
    scrollbar-gutter: auto;
}
.padmin-crm-hub > .padmin-main:has(#co-app.on) > .padmin-content.wide.crm-hub {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding: 0;
}
/* Tab row stays intrinsic; App ops pane consumes the rest (flush — no 36px band). */
.padmin-crm-hub > .padmin-main:has(#co-app.on) > .padmin-content.wide.crm-hub > .crm-hub-tabrow {
    flex: 0 0 auto;
    margin-bottom: 0;
}
.padmin-crm-hub #co-app.on {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.padmin-crm-hub #crm-app-ops.crm-app-ops {
    display: grid;
    grid-template-columns: 200px minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr);
    align-items: stretch;
    flex: 1 1 auto;
    min-height: 0;
    margin: 0;
    overflow: hidden;
    background: transparent;
    transition: grid-template-columns .2s ease-out;
}
/* The ops sidebar width comes from the grid track, so collapse the track. */
.padmin-crm-hub #crm-app-ops.crm-app-ops:has(.padmin-sidebar-collapsed) {
    grid-template-columns: 3.5rem minmax(0, 1fr);
}
.padmin-crm-hub #crm-app-ops .padmin-sidebar {
    flex: unset;
    width: auto;
    position: relative;
    top: auto;
    align-self: stretch;
    max-height: none;
    overflow: hidden;
    border-right: 1px solid var(--border);
    background: var(--panel);
    padding: 14px 10px 14px;
    box-sizing: border-box;
}
.padmin-crm-hub #crm-app-ops .padmin-sidebar.padmin-sidebar-collapsed { padding-left: 6px; padding-right: 6px; }
.padmin-crm-hub #crm-app-ops .crm-app-ops-main {
    flex: unset;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
    display: block;
    position: relative;
    /* Match ingest/map panel chrome — --bg letterboxes as a black frame. */
    background: var(--panel);
}
/* Iframes ignore flex-grow in several browsers — pin to the ops pane box. */
.padmin-crm-hub #crm-app-ops .crm-app-ops-frame {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: 0;
    border: 0;
    display: block;
    background: var(--panel);
}
.padmin-crm-hub #crm-app-ops .crm-app-ops-body {
    margin: 0;
    padding: 20px 24px 40px;
    background: transparent;
}
.padmin-crm-hub #crm-app-ops .padmin-sidebar .grouplabel:first-child {
    margin-top: 0;
}

/* Ops embed layout (?embed=1): fill the Building App iframe, no outer chrome. */
html:has(body.padmin-ops-embed),
html:has(body.padmin-ops-embed) body.padmin-ops-embed,
body.padmin-ops-embed {
    margin: 0 !important;
    padding: 0 !important;
    width: 100%;
    height: 100%;
    min-height: 100%;
    overflow: hidden;
    background: var(--panel);
}
body.padmin-ops-embed .padmin-ops-embed-shell {
    /* .padmin already uses position:fixed; inset:0 — keep a flex column fill. */
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    min-height: 100%;
    /* Override .padmin { background: var(--bg) } — black letterbox frame. */
    background: var(--panel) !important;
}
body.padmin-ops-embed .padmin-ops-embed-shell > .padmin-main {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: auto;
    padding: 0 !important;
    margin: 0 !important;
    background: var(--panel);
}
body.padmin-ops-embed .padmin-ops-embed-toolbar {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    padding: 10px 16px;
    border-bottom: 1px solid var(--border);
    background: var(--panel);
}
body.padmin-ops-embed .padmin-ops-embed-toolbar .padmin-buildingnav-actions {
    margin-left: 0;
}
body.padmin-ops-embed.padmin-map-tab .padmin-ops-embed-shell > .padmin-main,
body.padmin-ops-embed.padmin-ingest-tab .padmin-ops-embed-shell > .padmin-main,
body.padmin-ops-embed.padmin-review-tab .padmin-ops-embed-shell > .padmin-main {
    overflow: hidden;
}
body.padmin-ops-embed.padmin-review-tab .padmin-main > .padmin-content.review-page,
body.padmin-ops-embed .padmin-main > .padmin-content.review-page {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    max-width: none !important;
    margin: 0 !important;
    padding: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    /* Timeline's data page sits on --bg, not --panel — keep the embed
       identical so the table area doesn't read lighter than Timeline. */
    background: var(--bg);
}
body.padmin-ops-embed.padmin-review-tab .padmin-main > .padmin-content.review-page > #data-review-root,
body.padmin-ops-embed .padmin-main > .padmin-content.review-page > #data-review-root {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
/*
 * Data ingest embed: fill the pane (no --bg letterbox). Use flex, not absolute
 * inset, so setup banners above the calendar stay visible.
 */
body.padmin-ops-embed.padmin-ingest-tab .padmin-main > .padmin-content.ingest-page,
body.padmin-ops-embed .padmin-main > .padmin-content.ingest-page {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    background: var(--panel);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
body.padmin-ops-embed.padmin-ingest-tab .ingest-split,
body.padmin-ops-embed .ingest-split {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    margin: 0;
    border: 0;
    border-radius: 0;
    background: var(--panel);
}
body.padmin-ops-embed .ingest-setup-banner {
    flex: 0 0 auto;
    margin: 10px 12px 0 !important;
}
/*
 * Hub ops iframe is often <900px wide (App sidebar + hub chrome). The default
 * map-split stacks below 900px and caps the bathroom column at 42vh — that
 * leaves a short map band and looks "cut off" vs Timeline's full-page Map
 * (always side-by-side). Force Timeline-style row layout inside the embed.
 */
body.padmin-ops-embed.padmin-map-tab .map-split {
    flex-direction: row;
    align-items: stretch;
}
body.padmin-ops-embed.padmin-map-tab .map-split-side {
    flex: 0 1 560px;
    width: min(560px, 52%);
    max-width: min(560px, 54%);
    min-width: 340px;
    max-height: none;
    border-bottom: 0;
    border-right: 1px solid var(--border);
}
body.padmin-ops-embed.padmin-map-tab .map-split-main {
    flex: 1 1 auto;
    min-width: 0;
    min-height: 0;
}
/* Map stage fill is the default (.map-stage-inner absolute inset 0).
   Keep embed-specific split overrides below. */
body.padmin-ops-embed #schedule-admin-root {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
}
body.padmin-ops-embed .padmin-main > .padmin-content.wide:not(.map-page):not(.ingest-page) {
    flex: 1 1 auto;
    min-height: 0;
}

/* ---- Company hub mode bodies (Stage 0c) ---- */
.padmin-crm-hub {
    --border-soft: var(--border);
    --space-5: 16px;
    --space-6: 20px;
    --radius: 12px;
}

.crm-co-pane#co-building.on {
    max-width: none;
    width: 100%;
    margin-left: 0;
    margin-right: 0;
    padding: 0 20px 64px;
    box-sizing: border-box;
}

.crm-co-pane .crm-block { min-width: 0; }
.crm-co-pane .card {
    background: var(--panel);
    border: 1px solid var(--border-soft);
    border-radius: var(--radius);
    padding: var(--space-6);
    margin-bottom: 16px;
}
.crm-co-pane .card h3 {
    font-size: 1.15rem;
    font-weight: 600;
    margin: 0 0 var(--space-5);
    letter-spacing: -0.025em;
    line-height: 1.25;
    color: var(--text);
}
.crm-co-pane .intake-wifi-card .intake-form,
.crm-co-pane .intake-side-card .intake-form { margin-top: 0; }
.crm-co-pane .intake-form {
    margin-top: 0;
    border: 1px solid var(--border-soft);
    border-radius: 10px;
    overflow: hidden;
    background: var(--panel-2);
}
.crm-co-pane .intake-form .intake-divider {
    padding: 10px 16px 8px;
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-muted);
    background: color-mix(in srgb, var(--panel) 50%, var(--panel-2));
    border-bottom: 1px solid var(--border-soft);
}
.crm-co-pane .intake-form .intake-divider.intake-divider-named {
    text-transform: none;
    font-size: 13px;
    font-weight: 600;
    color: var(--text);
    letter-spacing: -0.01em;
    padding: 12px 16px 8px;
}
.crm-co-pane .intake-form .intake-divider + .intake-divider,
.crm-co-pane .intake-form .intake-row + .intake-divider {
    border-top: 1px solid var(--border-soft);
}
.crm-co-pane .intake-form .intake-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 6px;
    padding: 14px 16px;
    border-bottom: 1px solid var(--border-soft);
    align-items: start;
}
.crm-co-pane .intake-form .intake-row:last-child { border-bottom: 0; }
@media (min-width: 560px) {
    .crm-co-pane .intake-form .intake-row {
        grid-template-columns: minmax(168px, 34%) 1fr;
        gap: 12px 28px;
        align-items: center;
    }
    .crm-co-pane .intake-form .intake-row.intake-row-top { align-items: start; }
}
.crm-co-pane .intake-form .intake-label {
    font-size: 12.5px;
    color: var(--text-dim);
    font-weight: 500;
    line-height: 1.4;
}
/* Company-wide onboarding: tiny sync marker on shared intake fields (title="sync") */
.crm-co-pane .intake-form .intake-sync-badge {
    display: none;
    align-items: center;
    justify-content: center;
    margin-left: 5px;
    vertical-align: middle;
    width: 14px;
    height: 14px;
    border-radius: 3px;
    border: 1px solid var(--border);
    color: var(--text-muted);
    background: rgba(255, 255, 255, 0.03);
    opacity: 0.72;
    cursor: help;
    flex-shrink: 0;
}
#crm-company[data-company-wide-onboarding="true"] .crm-co-pane .intake-form .intake-sync-badge {
    display: inline-flex;
}
.crm-co-pane .intake-form .intake-sync-badge:hover {
    opacity: 1;
    color: var(--text-dim);
    border-color: #3a3d46;
}
.crm-co-pane .intake-form .intake-sync-badge svg {
    display: block;
}
.crm-co-pane .intake-form label.delivery-contact-same .intake-sync-badge {
    margin-left: 6px;
}
.crm-co-pane .intake-form .field-hint {
    display: block;
    margin-top: 4px;
    font-size: 11.5px;
    line-height: 1.45;
    color: var(--text-muted);
    font-weight: 400;
}
.crm-co-pane .intake-form .intake-control { min-width: 0; }
.crm-co-pane .intake-editable {
    font-size: 13.5px;
    color: var(--text);
    line-height: 1.45;
    min-height: 1.45em;
}
.crm-co-pane .intake-editable.is-locked { color: var(--text); }
.crm-co-pane .intake-editable-value.muted,
.crm-co-pane .intake-editable .muted { color: var(--text-muted); }

/* Building Details — pencil edit (aligned with onboarding / mockup) */
.crm-co-pane .intake-editable.is-locked {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    width: 100%;
    max-width: 100%;
}
.crm-co-pane .intake-editable-value {
    flex: 1;
    min-width: 0;
    word-break: break-word;
}
.crm-co-pane .intake-field-link {
    color: var(--brand);
    text-decoration: underline;
    text-underline-offset: 2px;
    word-break: break-all;
    cursor: pointer;
}
.crm-co-pane .intake-field-link:hover {
    color: color-mix(in srgb, var(--brand) 82%, white);
}
/* One-click copy feedback — keep default/text cursor (no pointer). */
.crm-co-pane #crm-site-details .intake-editable.is-copied .intake-editable-value,
.crm-co-pane #crm-site-details .intake-editable.is-copied [data-intake-input] {
    background: color-mix(in srgb, var(--accent) 14%, transparent);
    border-radius: 6px;
    transition: background-color .12s ease;
}
.crm-co-pane .intake-editable-value.secret {
    letter-spacing: 0.12em;
    color: var(--text-muted);
}
.crm-co-pane .intake-editable-edit {
    flex: none;
    width: 32px;
    height: 32px;
    margin: 0;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
    display: grid;
    place-items: center;
    padding: 0;
    transition: color .12s, background .12s;
}
.crm-co-pane .intake-editable-edit:hover {
    color: var(--text-dim);
    background: var(--panel-2);
}
.crm-co-pane .intake-editable-edit:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 1px;
}
.crm-co-pane .intake-editable-edit svg { width: 15px; height: 15px; }
.crm-co-pane .intake-editable:not(.is-locked) input,
.crm-co-pane .intake-editable:not(.is-locked) textarea,
.crm-co-pane .intake-editable:not(.is-locked) select {
    width: 100%;
    box-sizing: border-box;
    font: inherit;
    font-size: 13.5px;
    color: var(--text);
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 7px 10px;
}
.crm-co-pane .intake-editable:not(.is-locked) textarea {
    resize: vertical;
    /* One text line + vertical padding — empty fields stay single-line tall. */
    min-height: calc(1.55em + 14px);
    line-height: 1.55;
    overflow-x: hidden;
}
.crm-co-pane .delivery-address-block { display: grid; gap: 10px; }
.crm-co-pane .delivery-contact-same,
.crm-co-pane .intake-check {
    display: inline-flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 13px;
    color: var(--text-dim);
    cursor: pointer;
}
.crm-co-pane .delivery-hours-block { display: grid; gap: 10px; }
.crm-co-pane .delivery-hours-times {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 12px;
    row-gap: 4px;
    align-items: center;
}
.crm-co-pane .delivery-hours-times-label {
    font-size: 12px;
    font-weight: 500;
    color: var(--text-muted);
    line-height: 1.4;
}
.crm-co-pane .delivery-hours-times-label--start { grid-column: 1; grid-row: 1; }
.crm-co-pane .delivery-hours-times-label--end { grid-column: 2; grid-row: 1; }
.crm-co-pane .delivery-hours-times .intake-editable.delivery-hours-times-start { grid-column: 1; grid-row: 2; min-width: 0; }
.crm-co-pane .delivery-hours-times .intake-editable.delivery-hours-times-end { grid-column: 2; grid-row: 2; min-width: 0; }
.crm-co-pane .delivery-hours-times .intake-editable.is-locked {
    display: inline-flex;
    width: auto;
    max-width: 100%;
}

/* Building Details + Onboarding Info — left section rail */
.crm-co-pane .crm-overview-page {
    position: relative;
    width: 100%;
    padding-left: 148px;
    box-sizing: border-box;
}
.crm-co-pane .crm-section-rail {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 136px;
}
.crm-co-pane .crm-section-rail nav {
    position: sticky;
    top: 16px;
    z-index: 10;
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 2px 0 24px;
}
.crm-co-pane .crm-section-rail a {
    font-size: 12px;
    color: var(--text-muted);
    padding: 7px 10px;
    border-radius: 8px;
    border-left: 2px solid transparent;
    line-height: 1.35;
    white-space: nowrap;
    text-decoration: none;
    transition: color 0.12s, background 0.12s, border-color 0.12s;
}
.crm-co-pane .crm-section-rail a:hover {
    color: var(--text-dim);
    background: var(--panel);
}
.crm-co-pane .crm-section-rail a.active {
    color: var(--text);
    border-left-color: var(--accent, #f97269);
    background: var(--panel-2);
    font-weight: 500;
}
.crm-co-pane .crm-overview-content {
    min-width: 0;
    max-width: 720px;
    margin-left: auto;
    margin-right: auto;
}
.crm-co-pane#co-building .crm-overview-content [id^="ov-"],
.crm-co-pane#co-onboarding .crm-overview-content [id^="admin-ob-"] {
    scroll-margin-top: 24px;
}
.crm-ov-anchor { height: 0; margin: 0; padding: 0; overflow: hidden; }
.crm-co-pane#co-building .intake-stack { display: flex; flex-direction: column; gap: 0; }
/*
 * Onboarding Info: do NOT inherit Details' padding-left:148px centering context.
 * Rail stays absolute flush-left; hero/cards share the page-centered 960px band
 * with .admin-ob-gate / .admin-ob-steps (matches prototype .welcome-content).
 * Details (#co-building) stays 720.
 */
.crm-co-pane#co-onboarding .admin-ob-welcome.crm-overview-page {
    padding-left: 0;
}
.crm-co-pane#co-onboarding .crm-overview-content {
    display: flex;
    flex-direction: column;
    gap: 16px;
    width: 100%;
    max-width: 960px;
    margin-left: auto;
    margin-right: auto;
}
@media (max-width: 760px) {
    .crm-co-pane .crm-overview-page {
        padding-left: 0;
        display: grid;
        grid-template-columns: 104px minmax(0, 1fr);
        gap: 12px;
        align-items: start;
    }
    .crm-co-pane .crm-section-rail {
        position: static;
        width: auto;
    }
    .crm-co-pane .crm-section-rail nav { top: 12px; }
    .crm-co-pane .crm-section-rail a {
        font-size: 11.5px;
        padding: 6px 8px;
        white-space: normal;
    }
    .crm-co-pane .crm-overview-content {
        max-width: none;
        margin-left: 0;
        margin-right: 0;
    }
}

/* Building Onboarding shell */
/* Gate + stage tabs: same page-centered 960px band as Info .crm-overview-content */
.crm-co-pane#co-onboarding .admin-ob-gate,
.crm-co-pane#co-onboarding .admin-ob-steps {
    width: 100%;
    max-width: 960px;
    margin-left: auto;
    margin-right: auto;
    box-sizing: border-box;
}
.crm-co-pane#co-onboarding .admin-ob-gate {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 20px;
    margin-bottom: 16px;
    padding: 12px 14px 14px;
    border: 1px solid var(--border-soft);
    border-radius: 10px;
    background: color-mix(in srgb, var(--panel-2) 88%, transparent);
}
.crm-co-pane#co-onboarding .admin-ob-copy-form { margin: 0 0 0 auto; }
.crm-co-pane#co-onboarding .admin-ob-gate-form { margin: 0; }
.crm-co-pane#co-onboarding .admin-ob-gate-badge {
    display: inline-flex; align-items: center; min-height: 28px;
    padding: 0 10px; border-radius: 6px; font-size: 13px; font-weight: 500;
    color: var(--text-dim); background: var(--panel-2); border: 1px solid var(--border);
}
.crm-co-pane#co-onboarding .admin-ob-gate-badge[data-onboarding-visible="true"] {
    color: var(--accent);
    border-color: color-mix(in srgb, var(--accent) 35%, transparent);
    background: color-mix(in srgb, var(--accent) 8%, transparent);
}
.crm-co-pane#co-onboarding .admin-ob-gate-toggle {
    display: flex;
    align-items: center;
    gap: 12px;
    cursor: pointer;
    margin: 0;
}
.crm-co-pane#co-onboarding .admin-ob-gate-toggle input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}
.crm-co-pane#co-onboarding .admin-ob-gate-switch {
    flex: 0 0 auto;
    width: 36px;
    height: 20px;
    border-radius: 999px;
    background: var(--panel);
    border: 1px solid var(--border);
    position: relative;
    transition: background 0.15s, border-color 0.15s;
}
.crm-co-pane#co-onboarding .admin-ob-gate-switch::after {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--text-muted);
    transition: transform 0.15s, background 0.15s;
}
.crm-co-pane#co-onboarding .admin-ob-gate-toggle input:checked + .admin-ob-gate-switch {
    background: color-mix(in srgb, var(--good) 28%, var(--panel));
    border-color: color-mix(in srgb, var(--good) 55%, var(--border));
}
.crm-co-pane#co-onboarding .admin-ob-gate-toggle input:checked + .admin-ob-gate-switch::after {
    transform: translateX(16px);
    background: var(--good);
}
.crm-co-pane#co-onboarding .admin-ob-gate-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}
/*
 * Company-wide lock on building onboarding: confine the dimmer to #co-onboarding
 * (below company/building tabs + Details/Onboarding/App), not the viewport.
 * Mirror #co-app: pin chrome, let the pane fill remaining height so absolute
 * inset:0 + flex center stays in the visible onboarding region.
 */
.padmin-crm-hub > .padmin-main:has(#co-onboarding.on > .admin-ob-company-wide-lock:not([hidden])) {
    display: flex;
    flex-direction: column;
    overflow: hidden !important;
}
.padmin-crm-hub > .padmin-main:has(#co-onboarding.on > .admin-ob-company-wide-lock:not([hidden])) > .padmin-content.wide.crm-hub {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding-bottom: 0;
}
.padmin-crm-hub > .padmin-main:has(#co-onboarding.on > .admin-ob-company-wide-lock:not([hidden])) > .padmin-content.wide.crm-hub > .crm-hub-tabrow {
    flex: 0 0 auto;
    /* Tab row (⋮ + dropdown) must stack above #co-onboarding's lock dimmer.
       Sibling paint order alone is not enough: the open menu hangs into the pane. */
    position: relative;
    z-index: 30;
}
.crm-co-pane#co-onboarding.on:has(> .admin-ob-company-wide-lock:not([hidden])) {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    padding-bottom: 0;
}
.admin-ob-company-wide-lock {
  position: absolute;
  inset: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 32px;
  background: rgba(8, 8, 10, 0.72);
  backdrop-filter: blur(2px);
}
.admin-ob-company-wide-lock[hidden] { display: none !important; }
.admin-ob-company-wide-lock-card {
  max-width: 360px;
  padding: 22px 24px;
  border: 1px solid var(--border, #26282f);
  border-radius: 12px;
  background: var(--panel-2, #1a1c21);
  text-align: center;
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.45);
}
.admin-ob-company-wide-lock-card h3 {
  margin: 0 0 8px;
  font-size: 16px;
  font-weight: 600;
}
.admin-ob-company-wide-lock-card p {
  margin: 0 0 16px;
  font-size: 13px;
  color: var(--text-dim, #9aa0aa);
}
.crm-co-pane#co-onboarding { position: relative; }
.crm-co-pane#co-onboarding .admin-ob-shell.is-locked {
  pointer-events: none;
  filter: brightness(0.55);
  user-select: none;
}
/* No outer box — Details has no shell border; keep steps/body unboxed so Info rail is flush */
.crm-co-pane#co-onboarding .admin-ob-shell {
    border: 0;
    border-radius: 0;
    background: transparent;
    overflow: visible;
}
/* Info rail: flush-left of pane (outside the centered 960px band) */
.crm-co-pane#co-onboarding .admin-ob-welcome > .crm-section-rail {
    z-index: 5;
}
.crm-co-pane#co-onboarding .admin-ob-steps {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 4px 8px;
    padding: 10px 0 12px;
    border-bottom: 1px solid var(--border-soft, #1f2127);
    background: transparent;
}
.crm-co-pane#co-onboarding .admin-ob-steps-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
    flex: 1 1 auto;
    min-width: 0;
    overflow-x: auto;
}
.crm-co-pane#co-onboarding .admin-ob-steps-edit {
    flex: none;
    margin-left: 8px;
    width: 32px;
    height: 32px;
    border: 1px solid #26282f;
    border-radius: 8px;
    background: #1a1c21;
    color: #9aa0aa;
    cursor: pointer;
    display: grid;
    place-items: center;
    padding: 0;
}
.crm-co-pane#co-onboarding .admin-ob-steps-edit:hover { color: #edeff3; border-color: #3a3d46; }
.crm-co-pane#co-onboarding .admin-ob-steps-edit[aria-pressed="true"] {
    color: #f97269;
    border-color: color-mix(in srgb, #f97269 45%, #26282f);
    background: color-mix(in srgb, #1a1c21 88%, #f97269 12%);
}
.crm-co-pane#co-onboarding .admin-ob-steps-edit svg { width: 14px; height: 14px; }
.crm-co-pane#co-onboarding .admin-ob-steps.is-editing-completion .admin-ob-steps-nav button {
    box-shadow: inset 0 0 0 1px color-mix(in srgb, #f97269 35%, transparent);
}
.crm-co-pane#co-onboarding .admin-ob-steps button[data-ob-step] {
    display: flex;
    align-items: center;
    gap: 6px;
    border: 0;
    background: none;
    color: var(--text-muted);
    font: inherit;
    font-size: 12px;
    padding: 7px 10px;
    border-radius: 9px;
    cursor: pointer;
    white-space: nowrap;
}
.crm-co-pane#co-onboarding .admin-ob-steps button[data-ob-step]:hover { color: var(--text-dim); }
.crm-co-pane#co-onboarding .admin-ob-steps button[data-ob-step].on {
    color: var(--text);
    background: var(--panel-2);
    font-weight: 600;
}
.crm-co-pane#co-onboarding .admin-ob-steps button[data-ob-step].is-hidden-customer { opacity: 0.45; }
.crm-co-pane#co-onboarding .admin-ob-steps button[data-ob-step].is-hidden-customer .admin-ob-step-label {
    text-decoration: line-through;
}
.crm-co-pane#co-onboarding .admin-ob-steps .sn {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 1.5px solid var(--border);
    display: grid;
    place-items: center;
    font-size: 10px;
    color: var(--text-muted);
}
.crm-co-pane#co-onboarding .admin-ob-steps button[data-ob-step].on .sn {
    border-color: var(--brand, #f97269);
    color: var(--brand, #f97269);
}
.crm-co-pane#co-onboarding .admin-ob-steps button[data-ob-step].done .sn {
    background: var(--good);
    border-color: var(--good);
    color: #06281d;
}
.crm-co-pane#co-onboarding .admin-ob-step-vis {
    display: none;
    width: 22px;
    height: 22px;
    margin-left: 2px;
    border: 1px solid transparent;
    border-radius: 6px;
    background: transparent;
    color: #9aa0aa;
    place-items: center;
    padding: 0;
    flex: none;
    cursor: pointer;
}
.crm-co-pane#co-onboarding .admin-ob-step-vis svg { width: 13px; height: 13px; }
.crm-co-pane#co-onboarding .admin-ob-steps.is-editing-completion .admin-ob-step-vis { display: grid; }
.crm-co-pane#co-onboarding .admin-ob-step-vis:hover {
    color: #edeff3;
    border-color: #3a3d46;
    background: #1a1c21;
}
.crm-co-pane#co-onboarding .admin-ob-step-vis[aria-pressed="true"] {
    color: #f97269;
    border-color: color-mix(in srgb, #f97269 40%, #26282f);
}
/* No horizontal padding: Info .crm-section-rail must align with Details (#crm-building-rail) */
.crm-co-pane#co-onboarding .admin-ob-body { padding: 16px 0 28px; }
.crm-co-pane#co-onboarding .admin-ob-step-pane[hidden] { display: none !important; }
.crm-co-pane#co-onboarding .admin-ob-step-pane.on { display: block; }
/* Non-Info steps: same centered 960px column as Info content / gate / steps */
.crm-co-pane#co-onboarding .admin-ob-step-pane:not([data-ob-pane="welcome"]) {
    width: 100%;
    max-width: 960px;
    margin-left: auto;
    margin-right: auto;
}
/* Info welcome uses .crm-overview-page absolute-rail layout (same as Details).
   Do not flex-stack here — that put the rail above/out of line with the hero. */
.crm-co-pane#co-onboarding .admin-ob-hero {
    position: relative;
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid #1f2127;
    background: #141519;
    aspect-ratio: 2.4 / 1;
    min-height: 168px;
    max-height: 272px;
}
.crm-co-pane#co-onboarding .admin-ob-hero > img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 52%;
    display: block;
}
.crm-co-pane#co-onboarding .admin-ob-hero-foot {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 20px;
}
.crm-co-pane#co-onboarding .admin-ob-hero-foot::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    top: -12px;
    z-index: -1;
    pointer-events: none;
    background: linear-gradient(180deg, rgba(9, 9, 9, 0) 0%, rgba(9, 9, 9, 0.58) 52%, rgba(9, 9, 9, 0.84) 100%);
}
.crm-co-pane#co-onboarding .admin-ob-hero-badges {
    display: flex;
    align-items: center;
    flex: none;
}
.crm-co-pane#co-onboarding .admin-ob-hero-badge {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    border: 2.5px solid #090909;
    display: grid;
    place-items: center;
    flex: none;
    overflow: hidden;
    position: relative;
    padding: 0;
    font: inherit;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4);
}
.crm-co-pane#co-onboarding .admin-ob-hero-badge + .admin-ob-hero-badge { margin-left: -14px; }
.crm-co-pane#co-onboarding .admin-ob-hero-badge.somatic {
    background: #15161a;
    padding: 9px;
}
.crm-co-pane#co-onboarding .admin-ob-hero-badge.somatic img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}
.crm-co-pane#co-onboarding .admin-ob-hero-badge.customer {
    background: #1e3a5f;
    color: #c8d4e4;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
}
.crm-co-pane#co-onboarding .admin-ob-hero-badge.customer img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.crm-co-pane#co-onboarding .admin-ob-hero-badge.customer.has-image .admin-ob-logo-initials { display: none; }
.crm-co-pane#co-onboarding .admin-ob-logo-overlay {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    background: rgba(0, 0, 0, 0.45);
    color: #fff;
    opacity: 0;
    transition: opacity 0.15s ease;
    pointer-events: none;
}
.crm-co-pane#co-onboarding .admin-ob-logo-overlay svg { width: 18px; height: 18px; }
.crm-co-pane#co-onboarding .admin-ob-hero-badge.customer:hover .admin-ob-logo-overlay,
.crm-co-pane#co-onboarding .admin-ob-hero-badge.customer:focus-visible .admin-ob-logo-overlay { opacity: 1; }
.crm-co-pane#co-onboarding .admin-ob-hero-badge.customer:focus-visible {
    outline: 2px solid rgba(249, 114, 105, 0.55);
    outline-offset: 2px;
}
.crm-co-pane#co-onboarding .admin-ob-logo-initials {
    font-size: 14px;
    font-weight: 600;
    color: #c8d4e4;
}
.crm-co-pane#co-onboarding .admin-ob-display-name {
    margin: 0;
    font-size: clamp(1.2rem, 2.2vw, 1.65rem);
    font-weight: 600;
    letter-spacing: -0.03em;
    line-height: 1.2;
    color: #fff;
    text-shadow: 0 1px 12px rgba(0, 0, 0, 0.35);
    max-width: 28rem;
    min-width: 0;
}
.crm-co-pane#co-onboarding .admin-ob-display-name:focus {
    outline: 2px solid rgba(249, 114, 105, 0.55);
    outline-offset: 2px;
    border-radius: 4px;
}
@media (max-width: 720px) {
    .crm-co-pane#co-onboarding .admin-ob-hero { aspect-ratio: 16 / 10; min-height: 148px; }
}
.crm-co-pane#co-onboarding .admin-ob-welcome-body {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.crm-co-pane#co-onboarding .admin-ob-welcome .admin-ob-card { margin-bottom: 0; }
.crm-co-pane#co-onboarding .admin-ob-card {
    position: relative;
    border: 1px solid #1f2127;
    border-radius: 12px;
    padding: 20px;
    background: #141519;
    margin-bottom: 16px;
}
.crm-co-pane#co-onboarding .admin-ob-card.is-hidden-customer {
    opacity: 0.5;
    outline: 1px dashed color-mix(in srgb, #676d77 55%, transparent);
}
.crm-co-pane#co-onboarding .admin-ob-card-tools {
    position: absolute;
    top: 10px;
    right: 10px;
    display: flex;
    gap: 4px;
    z-index: 5;
    pointer-events: auto;
}
.crm-co-pane#co-onboarding .admin-ob-tool {
    width: 30px;
    height: 30px;
    border: 1px solid #26282f;
    border-radius: 8px;
    background: #1a1c21;
    color: #9aa0aa;
    cursor: pointer;
    display: grid;
    place-items: center;
    padding: 0;
}
.crm-co-pane#co-onboarding .admin-ob-tool:hover { color: #edeff3; border-color: #3a3d46; }
.crm-co-pane#co-onboarding .admin-ob-tool[aria-pressed="true"] {
    color: #f97269;
    border-color: color-mix(in srgb, #f97269 40%, #26282f);
}
.crm-co-pane#co-onboarding .admin-ob-tool svg { width: 14px; height: 14px; }
.crm-co-pane#co-onboarding .admin-ob-card h3 {
    margin: 0 0 14px;
    font-size: 1.35rem;
    font-weight: 600;
    letter-spacing: -0.025em;
    color: #edeff3;
}
.crm-co-pane#co-onboarding .admin-ob-welcome .admin-ob-card > h3,
.crm-co-pane#co-onboarding .admin-ob-welcome .admin-ob-card .admin-ob-pdf-split h3 {
    margin: 0 48px 16px 0;
}
.crm-co-pane#co-onboarding .admin-ob-editable,
.crm-co-pane#co-onboarding .admin-ob-card h3[contenteditable="true"],
.crm-co-pane#co-onboarding .admin-ob-display-name[contenteditable="true"] {
    cursor: text;
}
.crm-co-pane#co-onboarding .admin-ob-editable:hover,
.crm-co-pane#co-onboarding .admin-ob-card h3[contenteditable="true"]:hover,
.crm-co-pane#co-onboarding .admin-ob-display-name[contenteditable="true"]:hover {
    outline: 1px dashed color-mix(in srgb, #676d77 55%, transparent);
    outline-offset: 2px;
    border-radius: 4px;
}
.crm-co-pane#co-onboarding .admin-ob-card h3[contenteditable="true"]:focus,
.crm-co-pane#co-onboarding .admin-ob-editable:focus,
.crm-co-pane#co-onboarding .admin-ob-display-name[contenteditable="true"]:focus {
    outline: 2px solid rgba(249, 114, 105, 0.45);
    outline-offset: 2px;
    border-radius: 4px;
}
.crm-co-pane#co-onboarding .admin-ob-welcome .admin-ob-card p,
.crm-co-pane#co-onboarding .admin-ob-welcome .admin-ob-card li {
    font-size: 13.5px;
    color: #9aa0aa;
    line-height: 1.65;
}
.crm-co-pane#co-onboarding .admin-ob-welcome .admin-ob-card p { margin: 0 0 12px; }
.crm-co-pane#co-onboarding .admin-ob-welcome .admin-ob-card p:last-child { margin-bottom: 0; }
.crm-co-pane#co-onboarding .admin-ob-card p,
.crm-co-pane#co-onboarding .admin-ob-card li {
    margin: 0 0 8px;
    font-size: 13.5px;
    line-height: 1.55;
    color: var(--text-dim);
}
.crm-co-pane#co-onboarding .admin-ob-card ul { margin: 0; padding-left: 1.2em; }
.crm-co-pane#co-onboarding .admin-ob-card-subhead {
    margin: -8px 0 14px;
    font-size: 14px;
    font-weight: 600;
    color: #edeff3;
}
.crm-co-pane#co-onboarding .admin-ob-page-head {
    margin-bottom: 14px;
}
.crm-co-pane#co-onboarding .admin-ob-page-head h1 {
    margin: 0 0 6px;
    font-size: 22px;
}
.crm-co-pane#co-onboarding .admin-ob-doc-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}
.crm-co-pane#co-onboarding .admin-ob-page-head .sub {
    margin: 0;
    font-size: 14px;
    line-height: 1.55;
    color: var(--text-dim);
    max-width: 42rem;
}
.crm-co-pane#co-onboarding .admin-ob-scan-lede {
    margin: 10px 0 0;
    font-size: 13.5px;
    line-height: 1.55;
    color: var(--text-dim);
    max-width: 34rem;
}
.crm-co-pane#co-onboarding .admin-ob-lede {
    margin: 0 0 10px;
    font-size: 13.5px;
    line-height: 1.55;
    color: var(--text-dim);
}
.crm-co-pane#co-onboarding .admin-ob-welcome-intro {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 28px;
    align-items: start;
}
@media (max-width: 720px) {
    .crm-co-pane#co-onboarding .admin-ob-welcome-intro { grid-template-columns: 1fr; gap: 20px; }
}
.crm-co-pane#co-onboarding .admin-ob-yt-wrap {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    border-radius: 10px;
    overflow: hidden;
    background: #000;
    border: 1px solid #1f2127;
}
.crm-co-pane#co-onboarding .admin-ob-yt-wrap .admin-ob-yt {
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}
.crm-co-pane#co-onboarding .admin-ob-nextsteps h2 {
    margin: 0 0 16px;
    font-size: clamp(1.35rem, 2.2vw, 1.65rem);
    font-weight: 600;
    letter-spacing: -0.03em;
    color: #edeff3;
}
.crm-co-pane#co-onboarding .admin-ob-nextsteps p {
    margin: 0 0 10px !important;
    font-size: 15px !important;
    line-height: 1.6;
    color: var(--text-dim);
}
.crm-co-pane#co-onboarding .admin-ob-nextsteps .step-num { font-weight: 600; }
.crm-co-pane#co-onboarding .admin-ob-overview-body {
    margin-top: 20px;
    display: grid;
    gap: 6px;
}
.crm-co-pane#co-onboarding .admin-ob-overview-contact {
    margin-top: 4px;
    font-size: 14px;
    line-height: 1.65;
    color: #9aa0aa;
}
.crm-co-pane#co-onboarding .admin-ob-overview-contact a {
    color: #f97269;
    text-decoration: none;
}
.crm-co-pane#co-onboarding .admin-ob-overview-contact a:hover { text-decoration: underline; }
.crm-co-pane#co-onboarding .admin-ob-price {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin: 20px 0 0;
    padding-top: 20px;
    text-align: center;
}
@media (max-width: 560px) {
    .crm-co-pane#co-onboarding .admin-ob-price { grid-template-columns: 1fr; }
}
.crm-co-pane#co-onboarding .admin-ob-price .t {
    font-size: 14px;
    font-weight: 600;
    color: #edeff3;
    margin: 0 0 8px;
}
.crm-co-pane#co-onboarding .admin-ob-price .a {
    font-size: 20px;
    color: #9aa0aa;
    margin: 0 0 6px;
}
.crm-co-pane#co-onboarding .admin-ob-price .a strong { color: #edeff3; font-weight: 600; }
.crm-co-pane#co-onboarding .admin-ob-price .h {
    font-size: 13px;
    color: #9aa0aa;
    margin: 0;
}
.crm-co-pane#co-onboarding .admin-ob-net-specs {
    display: grid;
    gap: 14px;
    max-width: 14rem;
}
.crm-co-pane#co-onboarding .admin-ob-net-specs h4 {
    margin: 0 0 6px;
    font-size: 14px;
    font-weight: 600;
    color: #edeff3;
}
.crm-co-pane#co-onboarding .admin-ob-net-specs ol {
    margin: 0;
    padding-left: 1.35rem;
    font-size: 14px;
    line-height: 1.7;
    color: #9aa0aa;
}
.crm-co-pane#co-onboarding .admin-ob-net-note {
    margin: 18px 0 0;
    font-size: 14px;
    font-weight: 600;
    color: #fff;
}
.crm-co-pane#co-onboarding .admin-ob-pdf-split {
    display: grid;
    grid-template-columns: 1fr minmax(160px, 0.75fr);
    gap: 20px;
    align-items: start;
}
@media (max-width: 720px) {
    .crm-co-pane#co-onboarding .admin-ob-pdf-split { grid-template-columns: 1fr; }
}
.crm-co-pane#co-onboarding .admin-ob-pdf-preview {
    display: block;
    border: 1px solid #1f2127;
    border-radius: 10px;
    overflow: hidden;
    background: #1a1c21;
    text-decoration: none;
    color: var(--text-muted);
    font-size: 12px;
    text-align: center;
}
.crm-co-pane#co-onboarding .admin-ob-pdf-preview img {
    width: 100%;
    display: block;
    aspect-ratio: 10 / 13;
    object-fit: cover;
    object-position: top center;
}
.crm-co-pane#co-onboarding .admin-ob-pdf-preview span {
    display: block;
    padding: 8px;
}
.crm-co-pane#co-onboarding .admin-ob-qa {
    margin: 0 0 14px;
    padding-bottom: 14px;
    border-bottom: 1px solid #1f2127;
}
.crm-co-pane#co-onboarding .admin-ob-qa:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom: 0; }
.crm-co-pane#co-onboarding .admin-ob-qa .q {
    color: #edeff3;
    font-weight: 600;
    font-size: 13.5px;
    margin: 0 0 4px;
}
.crm-co-pane#co-onboarding .admin-ob-qa .a {
    color: #9aa0aa;
    font-size: 13px;
    margin: 0;
    line-height: 1.6;
}
.crm-co-pane#co-onboarding .admin-ob-plan-tab {
    display: inline-block;
    margin: 0 0 14px;
    padding: 0 0 8px;
    font-size: 12px;
    font-weight: 500;
    color: #9aa0aa;
    border-bottom: 2px solid #f97269;
}
.crm-co-pane#co-onboarding .admin-ob-invoice {
    border: 1px solid #1f2127;
    border-radius: 10px;
    padding: 16px;
    background: #1a1c21;
}
.crm-co-pane#co-onboarding .admin-ob-invoice h4 {
    margin: 0 0 12px;
    font-size: 14px;
    font-weight: 600;
    color: #edeff3;
}
.crm-co-pane#co-onboarding .admin-ob-invoice table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12.5px;
}
.crm-co-pane#co-onboarding .admin-ob-invoice th,
.crm-co-pane#co-onboarding .admin-ob-invoice td {
    border-bottom: 1px solid #1f2127;
    padding: 10px 8px;
    text-align: left;
    color: #9aa0aa;
    vertical-align: top;
}
.crm-co-pane#co-onboarding .admin-ob-invoice th {
    color: #676d77;
    font-weight: 500;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.crm-co-pane#co-onboarding .admin-ob-invoice .num { text-align: center; }
.crm-co-pane#co-onboarding .admin-ob-invoice .right { text-align: right; }
.crm-co-pane#co-onboarding .admin-ob-inv-total {
    border-bottom: 0 !important;
    font-weight: 600;
    color: #edeff3 !important;
}
.crm-co-pane#co-onboarding .admin-ob-rsa-benefits {
    margin: 14px 0 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 10px;
    font-size: 14px;
    line-height: 1.55;
    color: var(--text-dim);
    max-width: 42rem;
}
.crm-co-pane#co-onboarding .admin-ob-rsa-benefits li {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}
.crm-co-pane#co-onboarding .admin-ob-rsa-benefits .chk,
.crm-co-pane#co-onboarding .admin-ob-statusrow .chk {
    flex: none;
    color: var(--brand);
    font-weight: 600;
}
.crm-co-pane#co-onboarding .admin-ob-statusrow {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin: 12px 0 16px;
    padding-top: 12px;
    border-top: 1px solid var(--border-soft);
    font-size: 13.5px;
    color: var(--text-dim);
}
.crm-co-pane#co-onboarding .admin-ob-card.is-done {
    border-color: color-mix(in srgb, var(--good) 35%, var(--border));
}
.crm-co-pane#co-onboarding .admin-ob-doc-dl {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--panel);
    color: var(--text);
    text-decoration: none;
    font-size: 12.5px;
    font-weight: 500;
}
.crm-co-pane#co-onboarding .admin-ob-doc-dl:hover {
    border-color: var(--brand);
}
.crm-co-pane#co-onboarding .admin-ob-doc-dl .badge,
.crm-co-pane#co-onboarding .admin-ob-pdf-dl .badge {
    display: inline-grid;
    place-items: center;
    min-width: 36px;
    height: 22px;
    padding: 0 6px;
    border-radius: 6px;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.04em;
    background: color-mix(in srgb, var(--brand) 14%, transparent);
    color: #f9928a;
    border: 1px solid color-mix(in srgb, var(--brand) 30%, transparent);
}
.crm-co-pane#co-onboarding .admin-ob-doc-dl.is-docx .badge {
    background: color-mix(in srgb, #3b82f6 12%, transparent);
    color: #7cb3ff;
    border-color: color-mix(in srgb, #3b82f6 28%, transparent);
}
.crm-co-pane#co-onboarding .admin-ob-sign-pane {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid var(--border-soft);
}
.crm-co-pane#co-onboarding .admin-ob-sign-stub {
    border: 1px dashed var(--border);
    border-radius: 10px;
    padding: 18px 16px;
    background: color-mix(in srgb, var(--panel) 80%, transparent);
    text-align: center;
}
.crm-co-pane#co-onboarding .admin-ob-sign-stub p { margin: 0 0 6px; }
.crm-co-pane#co-onboarding .admin-ob-permission {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}
.crm-co-pane#co-onboarding .admin-ob-pdf-dl {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 8px;
    border-radius: 7px;
    border: 1px solid var(--border);
    background: var(--panel);
    color: var(--text-dim);
    text-decoration: none;
    font-size: 12px;
}
.crm-co-pane#co-onboarding .admin-ob-pdf-dl:hover {
    border-color: var(--brand);
    color: var(--text);
}
.crm-co-pane#co-onboarding .admin-ob-booking-note {
    margin: 0 0 12px;
    font-size: 12.5px;
    color: var(--text-muted);
}
.crm-co-pane#co-onboarding .admin-ob-booking-chrome {
    border: 1px solid var(--border-soft);
    border-radius: 10px;
    padding: 14px;
    background: var(--panel);
    margin-bottom: 12px;
}
.crm-co-pane#co-onboarding .admin-ob-booking-cal-head {
    display: flex;
    justify-content: space-between;
    margin-bottom: 10px;
    font-size: 13px;
    font-weight: 600;
    color: var(--text);
}
.crm-co-pane#co-onboarding .admin-ob-booking-slots {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
}
.crm-co-pane#co-onboarding .admin-ob-booking-slots span {
    display: grid;
    place-items: center;
    padding: 10px 6px;
    border-radius: 8px;
    border: 1px solid var(--border-soft);
    background: var(--panel-2);
    color: var(--text-muted);
    font-size: 12px;
}
.crm-co-pane#co-onboarding .admin-ob-booking-fallback {
    margin: 0;
    font-size: 13px;
    color: var(--text-dim);
}
.crm-co-pane#co-onboarding .admin-ob-booking-fallback a {
    color: var(--brand);
    text-decoration: none;
}
.crm-co-pane#co-onboarding .admin-ob-booking-fallback a:hover { text-decoration: underline; }
.crm-co-pane#co-onboarding .admin-ob-shipped-facts {
    margin: 0;
    display: grid;
    gap: 0;
}
.crm-co-pane#co-onboarding .admin-ob-shipped-fact {
    display: grid;
    grid-template-columns: 7.5rem minmax(0, 1fr);
    gap: 8px 16px;
    align-items: baseline;
    padding: 12px 0;
    border-bottom: 1px solid var(--border-soft);
}
.crm-co-pane#co-onboarding .admin-ob-shipped-fact:first-child { padding-top: 0; }
.crm-co-pane#co-onboarding .admin-ob-shipped-fact:last-child {
    border-bottom: 0;
    padding-bottom: 0;
}
.crm-co-pane#co-onboarding .admin-ob-shipped-fact dt {
    margin: 0;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-muted);
}
.crm-co-pane#co-onboarding .admin-ob-shipped-fact dd {
    margin: 0;
    font-size: 13.5px;
    color: var(--text-dim);
}
.crm-co-pane#co-onboarding .admin-ob-shipped-fact a {
    color: var(--brand);
    text-decoration: none;
}
.crm-co-pane#co-onboarding .admin-ob-shipped-addr { white-space: pre-wrap; }
@media (max-width: 420px) {
    .crm-co-pane#co-onboarding .admin-ob-shipped-fact { grid-template-columns: 1fr; gap: 4px; }
}

/* ---- CRM home (Stage 0b) ---- */
.padmin-crm-home > .padmin-topbar { position: relative; }
.padmin-crm-home > .padmin-topbar .brand { margin-right: 50px; }
.padmin-crm-home > .padmin-topbar .crm-global-search .input:disabled { opacity: 1; cursor: text; }

.padmin-crm-home > .crm-subheader {
    flex: 0 0 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 16px;
    min-height: 44px;
    padding: 8px 20px;
    border-bottom: 1px solid var(--border);
    background: var(--bg);
}
.padmin-crm-home .crm-subheader-spacer {
    flex: 1 1 auto;
    min-width: 8px;
}
.padmin-crm-home .crm-action-wrap {
    position: relative;
    flex: 0 0 auto;
    margin: 0;
    z-index: 5;
}
.padmin-crm-home .crm-action-btn {
    appearance: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel-2);
    color: var(--text-dim);
    font: inherit;
    font-size: 12px;
    font-weight: 500;
    line-height: 16px;
    cursor: pointer;
    white-space: nowrap;
    transition: border-color 0.15s, color 0.15s;
}
.padmin-crm-home .crm-action-btn:hover:not(:disabled),
.padmin-crm-home .crm-action-wrap.is-open .crm-action-btn:not(:disabled) {
    border-color: color-mix(in srgb, var(--accent) 50%, transparent);
    color: var(--text);
}
.padmin-crm-home .crm-action-btn:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}
.padmin-crm-home .crm-action-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
.padmin-crm-home .crm-action-btn .crm-section-caret {
    color: var(--text-muted);
}
.padmin-crm-home .crm-action-btn:hover:not(:disabled) .crm-section-caret,
.padmin-crm-home .crm-action-wrap.is-open .crm-action-btn:not(:disabled) .crm-section-caret {
    color: var(--text-dim);
}
.padmin-crm-home .crm-action-wrap.is-open .crm-action-btn .crm-section-caret {
    transform: rotate(180deg);
}
.padmin-crm-home .crm-action-menu {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 40;
    min-width: max(100%, 160px);
    padding: 4px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
    display: none;
}
.padmin-crm-home .crm-action-wrap.is-open .crm-action-menu {
    display: block;
}
.padmin-crm-home .crm-action-menu[hidden] {
    display: none !important;
}
.padmin-crm-home .crm-action-menu button {
    display: block;
    width: 100%;
    margin: 0;
    padding: 7px 12px;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: var(--text-dim);
    font: inherit;
    font-size: 13px;
    font-weight: 500;
    text-align: left;
    white-space: nowrap;
    cursor: pointer;
}
.padmin-crm-home .crm-action-menu button:hover,
.padmin-crm-home .crm-action-menu button:focus-visible {
    background: color-mix(in srgb, var(--panel-2) 80%, transparent);
    color: var(--text);
    outline: none;
}
.padmin-crm-home .crm-action-menu button:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
.padmin-crm-home .crm-section-switcher {
    position: relative;
    flex: 0 0 auto;
    margin: 0;
    z-index: 5;
}
.padmin-crm-home .crm-section-btn {
    appearance: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--text-dim);
    font: inherit;
    font-size: 14px;
    font-weight: 500;
    letter-spacing: -0.01em;
    cursor: pointer;
    line-height: 1.2;
}
.padmin-crm-home .crm-section-btn:hover,
.padmin-crm-home .crm-section-switcher.is-open .crm-section-btn {
    background: transparent;
    color: var(--text);
}
.padmin-crm-home .crm-section-btn:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 3px;
}
.padmin-crm-home .crm-section-caret {
    display: block;
    width: 7px;
    height: 4px;
    color: var(--text-muted);
    flex-shrink: 0;
    transition: transform 0.12s ease, color 0.12s ease;
}
.padmin-crm-home .crm-section-btn:hover .crm-section-caret,
.padmin-crm-home .crm-section-switcher.is-open .crm-section-caret {
    color: var(--text-dim);
}
.padmin-crm-home .crm-section-switcher.is-open .crm-section-caret {
    transform: rotate(180deg);
}
.padmin-crm-home .crm-section-menu {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 40;
    min-width: max(100%, 140px);
    padding: 4px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
    display: none;
}
.padmin-crm-home .crm-section-switcher.is-open .crm-section-menu {
    display: block;
}
.padmin-crm-home .crm-section-menu a,
.padmin-crm-home .crm-section-menu button {
    display: block;
    width: 100%;
    margin: 0;
    padding: 7px 12px;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: var(--text-dim);
    font: inherit;
    font-size: 13px;
    font-weight: 500;
    text-align: left;
    white-space: nowrap;
    cursor: pointer;
    text-decoration: none;
}
.padmin-crm-home .crm-section-menu a:hover,
.padmin-crm-home .crm-section-menu button:hover,
.padmin-crm-home .crm-section-menu a:focus-visible,
.padmin-crm-home .crm-section-menu button:focus-visible {
    background: color-mix(in srgb, var(--panel-2) 80%, transparent);
    color: var(--text);
    outline: none;
}
.padmin-crm-home .crm-section-menu a.on,
.padmin-crm-home .crm-section-menu button.on {
    color: var(--text);
    background: color-mix(in srgb, var(--panel-2) 80%, transparent);
}

.padmin-crm-home > .padmin-main > .padmin-content.wide.crm-home-content {
    padding: 16px 20px 40px;
}
.padmin-crm-home > .padmin-main > .padmin-content.wide.crm-home-content > .panel {
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    padding: 0;
    margin: 0;
}

/* ---- Leads kanban (Stage 0g) ---- */
.padmin-crm-home > .padmin-main > .padmin-content.wide.crm-home-content > .lead-board-wrap {
    margin: -16px -20px 0;
    padding: 0;
}
.lead-board-empty {
    padding: 24px 20px;
    text-align: center;
}
.lead-board {
    display: grid;
    grid-template-columns: repeat(4, minmax(180px, 1fr));
    align-items: stretch;
    min-height: calc(100vh - 200px);
    margin-bottom: 48px;
    border: 0;
    border-radius: 0;
    background: transparent;
    overflow: hidden;
}
@media (max-width: 960px) {
    .lead-board { grid-template-columns: repeat(2, minmax(180px, 1fr)); }
}
.lead-lane {
    min-height: 360px;
    display: flex;
    flex-direction: column;
    background: transparent;
    border: 0;
    border-right: 1px solid var(--border);
    border-radius: 0;
}
.lead-lane:last-child { border-right: 0; }
@media (max-width: 960px) {
    .lead-lane:nth-child(2n) { border-right: 0; }
    .lead-lane:nth-child(-n+2) { border-bottom: 1px solid var(--border); }
}
.lead-lane.drag-over {
    background: color-mix(in srgb, var(--accent) 7%, transparent);
}
.lead-lane-head {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 10px 10px 10px 14px;
    border-bottom: 1px solid var(--border);
}
.lead-lane-title {
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--text-muted);
    margin: 0;
    flex: 1;
    min-width: 0;
    font-variant-numeric: tabular-nums;
}
.lead-lane-title .n {
    font-weight: 500;
    color: var(--text-dim);
}
.lead-lane-body {
    flex: 1;
    padding: 10px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 120px;
}
.lead-card {
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel-2);
    padding: 10px 12px;
    cursor: grab;
    display: flex;
    flex-direction: column;
    gap: 6px;
    transition: border-color .12s, background .12s;
    user-select: none;
    position: relative;
}
.lead-card:active { cursor: grabbing; }
.lead-card.dragging {
    opacity: 0.45;
    border-color: var(--accent);
}
.lead-card:hover {
    border-color: color-mix(in srgb, var(--text-dim) 40%, var(--border));
    background: color-mix(in srgb, var(--panel-2) 70%, var(--bg));
}
.lead-card-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
}
.lead-card-main { flex: 1; min-width: 0; }
.lead-card-company {
    font-size: 13px;
    font-weight: 500;
    color: var(--text);
    line-height: 1.3;
}
.lead-card-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0 8px;
    margin-top: 2px;
    font-size: 11px;
    line-height: 1.35;
}
.lead-card-email {
    color: var(--text-dim);
    font-family: var(--font-mono, ui-monospace, monospace);
    word-break: break-all;
}
.lead-card-date {
    color: var(--text-muted);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.lead-card-msg {
    font-size: 12px;
    color: var(--text-dim);
    line-height: 1.4;
}
.lead-card-msg-text {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    word-break: break-word;
}
.lead-card-msg.is-open .lead-card-msg-text {
    display: block;
    -webkit-line-clamp: unset;
    overflow: visible;
}
.lead-card-msg-toggle {
    display: none;
    margin-top: 4px;
    padding: 0;
    border: 0;
    background: none;
    font: inherit;
    font-size: 11px;
    font-weight: 500;
    color: var(--accent);
    cursor: pointer;
}
.lead-card-msg-toggle:hover { text-decoration: underline; }
.lead-card-msg.is-long .lead-card-msg-toggle { display: inline; }
.lead-card-actions { flex: 0 0 auto; }
.lead-card-actions .btn { pointer-events: auto; }
.lead-lane[data-lane="uncategorized"] .lead-lane-title { color: var(--accent); }
.lead-lane[data-lane="interesting"] .lead-lane-title { color: var(--good, #3d9a6a); }
.lead-lane[data-lane="maybe"] .lead-lane-title { color: var(--warn, #c9a227); }

.co-mark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    border: 1px solid var(--border);
    background: var(--bg);
    font-size: 9px;
    font-weight: 600;
    color: var(--text-muted);
    flex-shrink: 0;
    overflow: hidden;
}
.co-mark img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.co-mark.has-image {
    font-size: 0;
    color: transparent;
}
.co-mark-row {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
a.co-name-link {
    color: inherit;
    text-decoration: none;
    cursor: pointer;
}
a.co-name-link:hover { color: var(--accent); }

.status-pill {
    display: inline-block;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--text);
    font: inherit;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
    white-space: nowrap;
}
/* State classes kept for markup/JS; no special coloring — reads like other grid cells. */
.status-pill.live,
.status-pill.alive,
.status-pill.onboarding,
.status-pill.hidden,
.status-pill.dead {
    color: inherit;
    border-color: transparent;
    background: transparent;
}

.status-picker {
    position: relative;
    display: inline-block;
}
.status-picker-btn {
    cursor: pointer;
    font: inherit;
    line-height: inherit;
    appearance: none;
    -webkit-appearance: none;
}
.status-picker-btn:hover { color: var(--text); opacity: 0.85; }
.status-picker-btn:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}
.status-picker.is-open .status-picker-btn { opacity: 0.9; }
.status-picker-menu {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 40;
    min-width: 100%;
    padding: 4px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
    display: none;
}
.status-picker.is-open .status-picker-menu { display: block; }
.status-picker-menu form { margin: 0; }
.status-picker-menu button {
    display: block;
    width: 100%;
    margin: 0;
    padding: 6px 10px;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: var(--text);
    font: inherit;
    font-size: 12px;
    font-weight: 500;
    text-align: left;
    white-space: nowrap;
    cursor: pointer;
}
.status-picker-menu button:hover,
.status-picker-menu button:focus-visible {
    background: color-mix(in srgb, var(--accent) 14%, transparent);
    outline: none;
}
.status-picker-menu button.on {
    color: var(--text);
    background: color-mix(in srgb, var(--panel-2) 70%, transparent);
}

/* ---- CRM home grid: filter / sort / columns ---- */
.padmin-crm-home .crm-grid-footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 8px 12px;
    margin-top: 10px;
    min-height: 20px;
}
.padmin-crm-home .crm-grid-count {
    font-size: 12px;
    color: var(--text-muted);
    font-variant-numeric: tabular-nums;
}
.padmin-crm-home .crm-grid-filter-summary {
    margin-right: auto;
    font-size: 12px;
    color: var(--text-dim);
}
.padmin-crm-home .crm-grid-select-col {
    width: 36px;
    min-width: 36px;
    max-width: 36px;
    padding-left: 8px !important;
    padding-right: 4px !important;
    text-align: center;
    vertical-align: middle;
}
/* Custom checkboxes: quiet unchecked state on dark padmin surfaces
   (native accent-color boxes read as loud white). */
.padmin-crm-home .crm-grid-row-check {
    appearance: none;
    -webkit-appearance: none;
    width: 14px;
    height: 14px;
    margin: 0;
    padding: 0;
    flex-shrink: 0;
    vertical-align: middle;
    border: 1px solid color-mix(in srgb, var(--border) 75%, transparent);
    border-radius: 3px;
    background: color-mix(in srgb, var(--panel) 55%, transparent);
    background-repeat: no-repeat;
    background-position: center;
    background-size: 10px 10px;
    box-shadow: none;
    cursor: pointer;
    transition: border-color .12s, background-color .12s;
}
.padmin-crm-home .crm-grid-row-check:hover {
    border-color: color-mix(in srgb, var(--text-muted) 50%, var(--border));
    background-color: color-mix(in srgb, var(--panel-2) 70%, transparent);
}
.padmin-crm-home .crm-grid-row-check:checked {
    border-color: color-mix(in srgb, var(--accent) 65%, var(--border));
    background-color: var(--accent);
    /* Checkmark uses --bg so it matches accent pill buttons (color: var(--bg)). */
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%230b0b0d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6.2l2.4 2.4 4.6-4.8'/%3E%3C/svg%3E");
}
.padmin-crm-home .crm-grid-row-check:indeterminate {
    border-color: color-mix(in srgb, var(--accent) 50%, var(--border));
    background-color: color-mix(in srgb, var(--accent) 22%, var(--panel-2));
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23f97269' stroke-width='2' stroke-linecap='round' d='M3 6h6'/%3E%3C/svg%3E");
}
.padmin-crm-home .crm-grid-table tr.is-select-focus {
    background: color-mix(in srgb, var(--accent) 8%, transparent);
}
.padmin-crm-home .crm-grid-row-check:focus {
    outline: none;
}
.padmin-crm-home .crm-grid-row-check:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 3px;
}
.padmin-crm-home .crm-grid-cols-col {
    width: 40px;
    min-width: 40px;
    max-width: 40px;
    padding-left: 4px !important;
    padding-right: 8px !important;
    text-align: right;
    vertical-align: middle;
    overflow: visible;
}
.padmin-crm-home .crm-grid-col-picker { position: relative; display: inline-flex; }
.padmin-crm-home .crm-grid-col-picker.is-open { z-index: 50; }
.padmin-crm-home .crm-grid-cols-btn {
    appearance: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    margin: 0;
    padding: 0;
    border: 1px solid transparent;
    border-radius: 6px;
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
}
.padmin-crm-home .crm-grid-cols-btn:hover,
.padmin-crm-home .crm-grid-col-picker.is-open .crm-grid-cols-btn {
    color: var(--text);
    border-color: var(--border);
    background: color-mix(in srgb, var(--panel-2) 70%, transparent);
}
.padmin-crm-home .crm-grid-cols-btn:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}
.padmin-crm-home .crm-grid-col-menu {
    /* Anchored under the pencil — not viewport top-left (fixed 0,0 flash). */
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    left: auto;
    z-index: 40;
    min-width: 240px;
    max-height: min(360px, 70vh);
    overflow: auto;
    padding: 8px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
}
.padmin-crm-home .crm-grid-col-menu-head {
    display: flex;
    align-items: center;
    padding: 2px 6px 8px;
}
.padmin-crm-home .crm-grid-col-menu-title {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin: 0;
    padding: 0;
}
.padmin-crm-home .crm-grid-test-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    cursor: pointer;
    user-select: none;
    flex: none;
}
.padmin-crm-home .crm-grid-test-toggle-label {
    font-size: 12px;
    font-weight: 500;
    color: var(--text-dim);
    letter-spacing: -0.01em;
    white-space: nowrap;
}
.padmin-crm-home .crm-grid-test-toggle input {
    appearance: none;
    -webkit-appearance: none;
    width: 32px;
    height: 18px;
    margin: 0;
    border-radius: 999px;
    border: 1px solid var(--border);
    background: var(--panel-2);
    position: relative;
    cursor: pointer;
    transition: background-color .15s, border-color .15s;
    flex: none;
}
.padmin-crm-home .crm-grid-test-toggle input::after {
    content: "";
    position: absolute;
    top: 1px;
    left: 1px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--text-muted);
    transition: transform .15s, background-color .15s;
}
.padmin-crm-home .crm-grid-test-toggle input:checked {
    background: color-mix(in srgb, var(--good) 28%, transparent);
    border-color: color-mix(in srgb, var(--good) 45%, transparent);
}
.padmin-crm-home .crm-grid-test-toggle input:checked::after {
    transform: translateX(14px);
    background: var(--good);
}
.padmin-crm-home .crm-grid-test-toggle input:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}
.padmin-crm-home .crm-grid-col-search {
    padding: 0 2px 8px;
}
.padmin-crm-home .crm-grid-col-search-input {
    width: 100%;
    height: 30px;
    padding: 0 8px;
    font-size: 12px;
}
.padmin-crm-home .crm-grid-col-search-empty {
    font-size: 12px;
    padding: 6px 6px 10px;
}
.padmin-crm-home .crm-grid-col-menu-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding-top: 8px;
    margin-top: 6px;
    border-top: 1px solid var(--border);
}
.padmin-crm-home .crm-grid-col-menu-foot > :only-child {
    margin-left: auto;
}
.padmin-crm-home .crm-grid-col-list { list-style: none; margin: 0; padding: 0; }
.padmin-crm-home .crm-grid-col-item {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 4px;
    border-radius: 4px;
    cursor: grab;
}
.padmin-crm-home .crm-grid-col-item:hover,
.padmin-crm-home .crm-grid-col-item.drag-over {
    background: color-mix(in srgb, var(--panel-2) 80%, transparent);
}
.padmin-crm-home .crm-grid-col-item.is-dragging { opacity: 0.55; }
.padmin-crm-home .crm-grid-col-drag {
    color: var(--text-muted);
    font-size: 11px;
    letter-spacing: -2px;
    user-select: none;
    flex: 0 0 auto;
}
.padmin-crm-home .crm-grid-col-check {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    flex: 1 1 auto;
    min-width: 0;
    font-size: 12px;
    color: var(--text);
    cursor: pointer;
}
.padmin-crm-home .crm-grid-col-check input { margin: 0; accent-color: var(--accent); }
.padmin-crm-home .crm-grid-table {
    table-layout: fixed;
}
.padmin-crm-home .crm-grid-table thead th {
    text-transform: none;
    letter-spacing: normal;
    font-weight: 400;
    padding-top: 8px;
    padding-bottom: 10px;
}
.padmin-crm-home .crm-grid-table thead th[data-col] {
    position: relative;
    user-select: none;
    white-space: nowrap;
    vertical-align: middle;
    overflow: visible;
    z-index: 1;
    min-width: 120px;
}
.padmin-crm-home .crm-grid-table thead th[data-col]:hover,
.padmin-crm-home .crm-grid-table thead th[data-col]:focus-within,
.padmin-crm-home .crm-grid-table thead th[data-col].is-filtered {
    z-index: 8;
}
.padmin-crm-home .crm-grid-table thead th.is-dragging { opacity: 0.55; }
.padmin-crm-home .crm-grid-table thead th.drag-over {
    box-shadow: inset 0 -2px 0 var(--accent);
}
.padmin-crm-home .crm-grid-table.is-col-resizing {
    cursor: col-resize;
    user-select: none;
}
.padmin-crm-home .crm-grid-table.is-col-resizing * {
    cursor: col-resize !important;
}

/* Default header: column name + sort. */
.padmin-crm-home .crm-grid-sort {
    appearance: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--text-muted);
    font: inherit;
    font-weight: 500;
    font-size: 12px;
    cursor: pointer;
    text-align: left;
    min-width: 0;
    max-width: 100%;
}
.padmin-crm-home .crm-grid-sort:hover { color: var(--text-dim); }
.padmin-crm-home .crm-grid-sort:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}
.padmin-crm-home .crm-grid-sort.is-sorted { color: var(--text); }
.padmin-crm-home .crm-grid-sort-ind {
    display: inline-block;
    min-width: 0.75em;
    font-size: 9px;
    color: inherit;
    line-height: 1;
    flex: 0 0 auto;
    opacity: 0.7;
}
.padmin-crm-home .crm-grid-sort.is-sorted .crm-grid-sort-ind { opacity: 1; }
.padmin-crm-home .crm-grid-th-label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}
.padmin-crm-home .crm-grid-th-label[hidden] { display: none !important; }
.padmin-crm-home .crm-grid-sort--compact {
    flex: 0 0 auto;
    padding: 0 2px;
    opacity: 0.55;
}
.padmin-crm-home .crm-grid-sort--compact:hover { opacity: 1; }

/* Header: title (sort) + filter icon always visible; panel overlays on icon click only. */
.padmin-crm-home .crm-grid-th {
    position: relative;
    display: block;
    min-width: 0;
    max-width: 100%;
    min-height: 34px; /* reserved for title OR op+field overlay — no thead jump */
    box-sizing: border-box;
    overflow: visible;
    padding-right: 6px;
}
.padmin-crm-home .crm-grid-th-title {
    display: flex;
    align-items: center;
    gap: 2px;
    min-width: 0;
    max-width: 100%;
    min-height: 34px;
}
.padmin-crm-home .crm-grid-th-title .crm-grid-sort {
    flex: 1 1 auto;
    min-width: 0;
}
.padmin-crm-home .crm-grid-filter-btn {
    appearance: none;
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
    opacity: 0.55;
    position: relative;
    z-index: 3;
}
.padmin-crm-home .crm-grid-filter-btn:hover,
.padmin-crm-home .crm-grid-filter-btn:focus-visible,
.padmin-crm-home .crm-grid-filter-btn.is-on {
    opacity: 1;
    color: var(--text-dim);
}
.padmin-crm-home .crm-grid-filter-btn:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 1px;
}
.padmin-crm-home .crm-grid-filter-btn.is-on {
    color: var(--accent);
}
.padmin-crm-home .crm-grid-filter-icon {
    display: block;
}
.padmin-crm-home .crm-grid-th-filter-panel {
    display: none;
    position: absolute;
    top: 0;
    left: 0;
    right: 20px; /* leave room for the always-clickable filter icon */
    bottom: 0;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    gap: 2px;
    min-width: 0;
    max-width: calc(100% - 20px);
    padding: 0;
    box-sizing: border-box;
    background: var(--panel);
    z-index: 2;
}
.padmin-crm-home .crm-grid-th-filter-panel[hidden] {
    display: none !important;
}
/* Icon click / active filter: hide sort title only (not the filter icon); no layout shift. */
.padmin-crm-home .crm-grid-table thead th.crm-grid-th-has-filter.is-filter-open .crm-grid-th-title .crm-grid-sort,
.padmin-crm-home .crm-grid-table thead th.crm-grid-th-has-filter.is-filtered .crm-grid-th-title .crm-grid-sort,
.padmin-crm-home .crm-grid-table thead th.crm-grid-th-has-filter.is-filter-open .crm-grid-th-title > .crm-grid-th-label,
.padmin-crm-home .crm-grid-table thead th.crm-grid-th-has-filter.is-filtered .crm-grid-th-title > .crm-grid-th-label {
    visibility: hidden;
}
.padmin-crm-home .crm-grid-table thead th.crm-grid-th-has-filter.is-filter-open .crm-grid-th-filter-panel,
.padmin-crm-home .crm-grid-table thead th.crm-grid-th-has-filter.is-filtered .crm-grid-th-filter-panel {
    display: flex;
}
/* Active filter: quiet accent under the header cell. */
.padmin-crm-home .crm-grid-table thead th.is-filtered {
    box-shadow: inset 0 -2px 0 color-mix(in srgb, var(--accent) 55%, transparent);
}
.padmin-crm-home .crm-grid-op-row {
    display: flex;
    align-items: center;
    gap: 4px;
    flex: 0 0 auto;
    min-width: 0;
    max-width: 100%;
}
.padmin-crm-home .crm-grid-op-wrap {
    position: relative;
    flex: 1 1 auto;
    min-width: 0;
}
.padmin-crm-home .crm-grid-op-btn {
    appearance: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    max-width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--text-muted);
    font-size: 11px;
    font-weight: 500;
    line-height: 1.2;
    cursor: pointer;
    text-align: left;
}
.padmin-crm-home .crm-grid-op-btn:hover { color: var(--text-dim); }
.padmin-crm-home .crm-grid-op-btn:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}
.padmin-crm-home .crm-grid-table thead th.is-filtered .crm-grid-op-btn {
    color: var(--text-dim);
}
.padmin-crm-home .crm-grid-op-label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.padmin-crm-home .crm-grid-op-caret {
    flex: 0 0 auto;
    opacity: 0.75;
}
.padmin-crm-home .crm-grid-op-menu {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 20;
    min-width: 11rem;
    max-width: 16rem;
    padding: 4px;
    margin: 0;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
}
.padmin-crm-home .crm-grid-op-option {
    appearance: none;
    display: block;
    width: 100%;
    margin: 0;
    padding: 6px 8px;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: var(--text-dim);
    font-size: 12px;
    text-align: left;
    cursor: pointer;
}
.padmin-crm-home .crm-grid-op-option:hover {
    background: color-mix(in srgb, var(--panel-2) 85%, transparent);
    color: var(--text);
}
.padmin-crm-home .crm-grid-op-option.is-on {
    color: var(--text);
    background: color-mix(in srgb, var(--panel-2) 70%, transparent);
}
.padmin-crm-home .crm-grid-th-field {
    flex: 1 1 auto;
    min-width: 0;
    max-width: 11rem; /* ~176px — don't stretch across wide columns */
    display: flex;
    align-items: center;
}
.padmin-crm-home .crm-grid-filter-row th {
    padding-top: 4px;
    padding-bottom: 8px;
    font-weight: 400;
    border-bottom: 1px solid var(--border);
}
.padmin-crm-home .crm-grid-filter {
    display: block;
    width: 100%;
    min-width: 0;
    max-width: 11rem; /* ~176px — don't stretch across wide columns */
    height: 18px;
    min-height: 0;
    padding: 0 6px;
    font-size: 11px;
    font-weight: 400;
    line-height: 1.2;
    box-sizing: border-box;
    background: var(--panel-2);
    border: 1px solid var(--border);
    border-radius: 4px;
    color: var(--text);
    box-shadow: none;
}
.padmin-crm-home .crm-grid-filter:focus {
    outline: none;
    border-color: color-mix(in srgb, var(--accent) 45%, var(--border));
}
.padmin-crm-home .crm-grid-filter.is-op-novalue {
    opacity: 0.45;
    pointer-events: none;
}
.padmin-crm-home select.crm-grid-filter {
    max-width: 11rem;
    padding-right: 22px;
}
.padmin-crm-home .crm-grid-col-resize {
    position: absolute;
    top: 0;
    right: -3px;
    bottom: 0;
    width: 7px;
    cursor: col-resize;
    z-index: 9;
}
.padmin-crm-home .crm-grid-col-resize::after {
    content: "";
    position: absolute;
    top: 8px;
    bottom: 8px;
    left: 3px;
    width: 1px;
    background: transparent;
    transition: background 120ms ease;
}
.padmin-crm-home .crm-grid-table thead th[data-col]:hover .crm-grid-col-resize::after,
.padmin-crm-home .crm-grid-table.is-col-resizing .crm-grid-col-resize::after {
    background: color-mix(in srgb, var(--border) 80%, var(--text-muted));
}
.padmin-crm-home .crm-grid-table [data-col][hidden] {
    display: none !important;
}

/* ---------------------------------------------------------------------------
   Phone admin shell + Data ingest (Timeline max-md = 768px).
   Desktop / tablet (≥768) must stay unchanged — hide mobile nav by default.
   --------------------------------------------------------------------------- */
.padmin-mobile-nav,
.padmin-buildingnav-select {
    display: none !important;
}

@media (min-width: 768px) {
    /* Belt-and-suspenders: never show phone chrome on desktop/tablet. */
    .padmin-mobile-nav,
    .padmin-buildingnav-select {
        display: none !important;
    }
}

@media (max-width: 767px) {
    /*
     * iOS keyboard often exposes html/body behind the visual viewport.
     * Match admin dark bg so the strip above the keyboard isn't white.
     * Desktop (≥768) keeps the default document background.
     */
    html, body {
        background: #0b0b0d;
        color-scheme: dark;
    }

    /* Compact topbar */
    .padmin-topbar {
        height: 56px;
        gap: 8px;
        padding: 0 12px;
        padding-top: env(safe-area-inset-top, 0);
    }
    .padmin-topbar .brand img { height: 16px; width: 124px; }
    .padmin-topbar .crumb {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        font-size: 13px;
    }
    /* Phone: "All companies" on the topbar, right of logo / company name. */
    .padmin-topbar .backlink {
        display: inline;
        flex: none;
        margin-left: auto;
        white-space: nowrap;
        font-size: 11px;
    }

    /* Timeline AdminMobileNav — horizontal chips only; left sidebar hidden.
       !important beats the UA [hidden] stylesheet + desktop hide rules. */
    .padmin-sidebar { display: none; }
    .padmin-mobile-nav,
    .padmin-mobile-nav[hidden] {
        display: flex !important;
        flex-direction: column;
        flex: none;
        border-bottom: 1px solid var(--border);
        background: var(--panel);
    }
    .padmin-mobile-nav-chips {
        display: flex;
        align-items: center;
        gap: 4px;
        overflow-x: auto;
        padding: 8px 12px;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    .padmin-mobile-nav-chips::-webkit-scrollbar { display: none; }
    .padmin-mobile-nav-sep {
        display: inline-block;
        width: 1px;
        height: 16px;
        margin: 0 2px;
        flex: none;
        align-self: center;
        background: var(--border);
    }
    .padmin-mobile-chip {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        flex: none;
        padding: 6px 10px;
        border-radius: 6px;
        color: var(--text-dim);
        font-size: 12px;
        line-height: 16px;
        text-decoration: none;
        white-space: nowrap;
    }
    .padmin-mobile-chip:hover {
        background: color-mix(in srgb, var(--panel-2) 60%, transparent);
        color: var(--text);
    }
    .padmin-mobile-chip.active {
        background: var(--panel-2);
        color: var(--text);
    }
    .padmin-mobile-chip .ico {
        display: inline-flex;
        width: 14px;
        height: 14px;
        flex: none;
        opacity: 0.9;
    }
    .padmin-mobile-chip .ico svg { width: 14px; height: 14px; display: block; }

    .padmin-body { flex-direction: column; }

    /* Building pills → dropdown on phone */
    .padmin-buildingnav-pills { display: none; }
    .padmin-buildingnav-select {
        display: block !important;
        min-width: 0;
    }
    .padmin-buildingnav-select select {
        display: block;
        width: 100%;
        box-sizing: border-box;
        border: 1px solid var(--border);
        border-radius: 6px;
        background-color: var(--panel-2);
        background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: right 8px center;
        background-size: 14px;
        color: var(--text);
        appearance: none;
        -webkit-appearance: none;
    }

    /*
     * Data ingest phone subheader: building | Reset | Publish | date
     * stretched evenly across the full row (no clustered left group).
     * Desktop buildingnav (pills + actions) untouched (≥768).
     */
    .padmin-ingest-tab .padmin-buildingnav,
    body:has(.ingest-page) .padmin-buildingnav {
        flex-direction: row;
        flex-wrap: nowrap;
        align-items: center;
        justify-content: stretch;
        gap: 6px;
        width: 100%;
        box-sizing: border-box;
        padding: 8px 10px;
        overflow-x: hidden;
    }

    .padmin-ingest-tab .padmin-buildingnav-select,
    body:has(.ingest-page) .padmin-buildingnav-select {
        flex: 1 1 0;
        width: auto;
        max-width: none;
        min-width: 0;
    }
    .padmin-ingest-tab .padmin-buildingnav-select select,
    body:has(.ingest-page) .padmin-buildingnav-select select {
        height: 30px;
        padding: 0 22px 0 6px;
        font-size: 11px;
        font-weight: 500;
        line-height: 1;
        text-overflow: ellipsis;
    }
    .padmin-ingest-tab .padmin-buildingnav-actions,
    body:has(.ingest-page) .padmin-buildingnav-actions {
        display: flex;
        flex: 3 1 0;
        align-items: stretch;
        margin-left: 0;
        width: auto;
        min-width: 0;
    }
    .padmin-ingest-tab .padmin-ingest-day,
    body:has(.ingest-page) .padmin-ingest-day {
        display: flex;
        flex-wrap: nowrap;
        align-items: stretch;
        width: 100%;
        min-width: 0;
        gap: 6px;
    }
    .padmin-ingest-tab .padmin-ingest-day > .btn,
    body:has(.ingest-page) .padmin-ingest-day > .btn {
        flex: 1 1 0;
        min-width: 0;
        height: 30px;
        padding: 0 4px;
        font-size: 11px;
        justify-content: center;
        text-align: center;
    }
    .padmin-ingest-tab .padmin-ingest-day > .site-date-picker,
    body:has(.ingest-page) .padmin-ingest-day > .site-date-picker {
        flex: 1 1 0;
        min-width: 0;
    }
    .padmin-ingest-tab .site-date-picker-btn,
    body:has(.ingest-page) .site-date-picker-btn {
        width: 100%;
        box-sizing: border-box;
        height: 30px;
        padding: 0 4px;
        font-size: 11px;
        gap: 4px;
        justify-content: center;
    }
    .padmin-ingest-tab .site-date-picker-label,
    body:has(.ingest-page) .site-date-picker-label {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    .padmin-ingest-tab .site-date-picker-btn svg,
    body:has(.ingest-page) .site-date-picker-btn svg {
        width: 12px;
        height: 12px;
        flex: none;
    }
    /* Hide year on phone date button (desktop keeps .site-date-picker-label-full). */
    .site-date-picker-label-full { display: none; }
    .site-date-picker-label-short { display: inline; }
    /* Calendar bubbles: Mens1→M1, Womens2→W2 (or first letter if no trailing digit). */
    .cal-visit .vname-full { display: none; }
    .cal-visit .vname-short { display: inline; }

    /* Non-ingest phone tabs: building dropdown full width (map/schedule/etc.) */
    .padmin-buildingnav:not(:has(.padmin-ingest-day)) {
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
        padding: 10px 12px;
    }
    .padmin-buildingnav:not(:has(.padmin-ingest-day)) .padmin-buildingnav-select {
        width: 100%;
        max-width: none;
    }
    .padmin-buildingnav:not(:has(.padmin-ingest-day)) .padmin-buildingnav-select select {
        height: 40px;
        padding: 0 36px 0 12px;
        font-size: 14px;
        background-position: right 12px center;
        background-size: 16px;
    }

    /*
     * Data ingest phone: calendar + footer fill the page.
     * Visit editor is a slide-up sheet (not a second column / stacked pane).
     * Desktop ≥900 two-column split and ≥768 shell stay untouched.
     */
    .padmin-ingest-tab .padmin-main,
    .padmin-main.padmin-main-ingest,
    .padmin-main:has(.ingest-page) {
        overflow: hidden;
    }
    .padmin-main:has(.ingest-page) .padmin-content.ingest-page,
    .padmin-main-ingest .padmin-content.ingest-page {
        overflow: hidden;
    }
    .ingest-split {
        display: flex;
        flex-direction: column;
        flex: 1 1 auto;
        min-height: 0;
        position: relative;
    }
    .ingest-split-cal {
        flex: 1 1 auto;
        min-height: 0;
        display: flex;
        flex-direction: column;
    }
    .ingest-cal-wrap {
        flex: 1 1 auto;
        min-height: 0;
        display: flex;
        flex-direction: column;
        overflow-x: auto;
        overflow-y: hidden;
        -webkit-overflow-scrolling: touch;
    }
    .ingest-cal {
        display: flex;
        flex-direction: column;
        flex: 1 1 auto;
        min-width: 560px; /* gutter + 7 day lanes readable on phone */
        min-height: 0;
        height: 100%;
    }
    /*
     * Desktop keeps .cal-col { touch-action: none } for drag create.
     * On phone that blocks schedule scrolling — restore pan so hours can scroll.
     */
    .ingest-cal .cal-col,
    .ingest-cal .cal-visit,
    .ingest-cal .cal-visit-line-hit {
        touch-action: pan-x pan-y;
    }
    .ingest-cal .cal-scroll {
        flex: 1 1 auto;
        min-height: 0;
        max-height: none;
        overflow-x: hidden;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior: contain;
        touch-action: pan-y;
    }
    /*
     * Data ingest day footer — phone cleanup.
     * Desktop / ≤1100 tablet footer rules above stay as-is.
     */
    .ingest-schedule-footer {
        height: min(38vh, 280px);
        min-height: 168px;
        max-height: min(42vh, 320px);
    }
    .ingest-schedule-footer-scroll {
        padding-bottom: max(10px, env(safe-area-inset-bottom));
        scrollbar-gutter: auto;
    }
    .ingest-footer-body {
        gap: 8px;
        padding: 10px 12px 0;
    }
    .ingest-schedule-footer .footer-day-header {
        gap: 8px;
        padding-bottom: 8px;
    }
    .ingest-schedule-footer .footer-day-title {
        font-size: 14px;
        font-weight: 600;
    }
    /* Summary chips: number over label, equal columns */
    .ingest-schedule-footer .footer-summary {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 6px;
        width: 100%;
    }
    .ingest-schedule-footer .footer-chip {
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 3px;
        width: 100%;
        box-sizing: border-box;
        padding: 8px 4px;
        text-align: center;
    }
    .ingest-schedule-footer .footer-chip-value {
        font-size: 13px;
        line-height: 1.1;
    }
    .ingest-schedule-footer .footer-chip-label {
        font-size: 10px;
        line-height: 1.15;
        white-space: normal;
        text-align: center;
        color: var(--text-muted);
    }
    /*
     * Visit table — Time | Bathroom | Fixtures | Duration
     * Time track sized for compact ranges (e.g. 9:00–9:15am) so Bathroom
     * never overlaps; bathroom truncates in the flexible middle track.
     */
    .ingest-schedule-footer .footer-table { padding-top: 2px; }
    .ingest-schedule-footer .footer-row {
        display: grid;
        grid-template-columns: 7rem minmax(0, 1fr) 4.5rem 4.5rem;
        column-gap: 8px;
        align-items: center;
        font-size: 12px;
    }
    .ingest-schedule-footer .footer-row-head {
        font-size: 10px;
        letter-spacing: 0.03em;
    }
    .ingest-schedule-footer .footer-time,
    .ingest-schedule-footer .footer-bathroom-cell,
    .ingest-schedule-footer .footer-fixtures,
    .ingest-schedule-footer .footer-duration {
        padding: 0;
        min-width: 0;
        width: auto;
        max-width: 100%;
        margin: 0;
        box-sizing: border-box;
        overflow: hidden;
    }
    .ingest-schedule-footer .footer-time {
        text-align: left;
        white-space: nowrap;
    }
    .ingest-schedule-footer .footer-time-full { display: none; }
    .ingest-schedule-footer .footer-time-compact { display: inline; }
    .ingest-schedule-footer .footer-bathroom-cell {
        text-align: left;
        font-family: var(--font-sans);
        font-size: 12px;
        font-weight: 500;
        white-space: nowrap;
        text-overflow: ellipsis;
        overflow: hidden;
    }
    .ingest-schedule-footer .footer-row-head .footer-bathroom-cell {
        font-size: 10px;
        font-weight: 500;
        text-overflow: clip;
    }
    .ingest-schedule-footer .footer-fixtures {
        text-align: center;
        white-space: nowrap;
    }
    .ingest-schedule-footer .footer-duration {
        text-align: right;
        white-space: nowrap;
    }
    .ingest-schedule-footer .footer-row-head > span:nth-child(3) {
        text-align: center;
    }
    .ingest-schedule-footer .footer-row-head > span:nth-child(4) {
        text-align: right;
    }
    .ingest-schedule-footer .footer-row-data {
        padding: 10px 0;
        min-height: 44px;
    }
    .ingest-schedule-footer .footer-empty {
        font-size: 12px;
        padding: 4px 0;
    }
    .ingest-footer-comment {
        margin-top: 2px;
        padding: 8px 0 12px;
    }
    .ingest-footer-add-comment {
        width: 100%;
        justify-content: center;
        min-height: 40px;
        font-size: 12px;
    }
    .ingest-footer-comment-heading { font-size: 11px; }
    .ingest-footer-comment-display { padding: 8px 0; }
    .ingest-footer-comment-body { font-size: 12px; }
    /*
     * iOS Safari zooms focused inputs under 16px and often won't zoom back out.
     * Keep desktop textarea at 12px; phone uses 16px to avoid sticky zoom.
     */
    .ingest-footer-comment-textarea {
        min-height: 72px;
        font-size: 16px;
        line-height: 1.4;
        background: var(--panel);
        -webkit-appearance: none;
        appearance: none;
    }

    /* Visit details — fixed bottom sheet overlay.
       Keep position:fixed while closed so the edit column stays out of flow
       (same layout you tested). Raise z-index only when open. */
    .ingest-split-edit {
        position: fixed;
        inset: 0;
        z-index: auto;
        display: block;
        border: 0;
        background: transparent;
        pointer-events: none;
    }
    body:has(.ingest-edit-sheet--open) .site-date-picker-btn,
    body:has(.ingest-edit-sheet--open) .site-date-picker-panel,
    body:has(.ingest-edit-sheet--open) .site-date-picker-backdrop {
        z-index: 1;
    }
    .ingest-edit-sheet-backdrop {
        position: absolute;
        inset: 0;
        margin: 0;
        padding: 0;
        border: 0;
        background: rgba(0, 0, 0, 0.5);
        opacity: 0;
        transition: opacity 0.28s ease;
        pointer-events: none;
        cursor: pointer;
    }
    .ingest-edit-sheet-panel {
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        display: flex;
        flex-direction: column;
        max-height: min(88dvh, 640px);
        border: 1px solid var(--border);
        border-bottom: 0;
        border-radius: 20px 20px 0 0;
        background: var(--panel);
        box-shadow: 0 -20px 40px rgba(0, 0, 0, 0.45);
        transform: translateY(105%);
        transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
        pointer-events: none;
        overflow: hidden;
        padding-bottom: env(safe-area-inset-bottom, 0);
    }
    .ingest-edit-sheet--open {
        z-index: 200; /* Above .site-date-picker-btn (101); below unsaved overlay (210) */
        pointer-events: auto;
    }
    .ingest-edit-sheet--open .ingest-edit-sheet-backdrop {
        opacity: 1;
        pointer-events: auto;
    }
    .ingest-edit-sheet--open .ingest-edit-sheet-panel {
        transform: translateY(0);
        pointer-events: auto;
    }
    .ingest-edit-sheet-handle {
        flex: none;
        width: 48px;
        height: 4px;
        margin: 10px auto 6px;
        border-radius: 999px;
        background: color-mix(in srgb, var(--text-muted) 40%, transparent);
    }
    #ingest-edit-host {
        flex: 1 1 auto;
        min-height: 0;
        overflow: hidden;
        display: flex;
        flex-direction: column;
    }
    .ingest-edit-panel {
        max-height: min(80dvh, 600px);
    }
    .ingest-edit-header {
        height: auto;
        min-height: 48px;
        max-height: none;
        padding: 10px 12px;
        flex-wrap: wrap;
    }
    .ingest-edit-body {
        padding: 12px;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }
    .ingest-edit-fields { max-width: none; }
    .ingest-edit-idle { display: none; }
    .ingest-page > .panel:first-child { margin: 12px; }
    .ingest-visits-panel { margin: 0 12px 12px; }
}

/* Desktop: sheet chrome is inert — edit column stays in the split layout. */
@media (min-width: 768px) {
    .ingest-edit-sheet-backdrop,
    .ingest-edit-sheet-handle {
        display: none !important;
    }
    .ingest-edit-sheet-panel {
        display: contents;
    }
}

/* CRM Contacts list (home grid) */
.padmin-crm-home .crm-contacts-create {
    margin-bottom: 12px;
}
.padmin-crm-home .crm-contact-create-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
    gap: 10px 12px;
    align-items: end;
}
.padmin-crm-home .crm-contact-create-grid label,
.padmin-crm-home .crm-contact-edit-form label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 11px;
    color: var(--text-muted);
}
.padmin-crm-home .crm-contact-create-grid .crm-contact-notes {
    grid-column: 1 / -1;
}
.padmin-crm-home .crm-contact-create-actions {
    display: flex;
    align-items: end;
}
.padmin-crm-home .crm-contact-edit summary {
    cursor: pointer;
    list-style: none;
}
.padmin-crm-home .crm-contact-edit summary::-webkit-details-marker { display: none; }
.padmin-crm-home .crm-contact-edit-form {
    margin-top: 10px;
    padding: 12px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--panel) 92%, #000);
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
    gap: 10px 12px;
    min-width: min(28rem, 70vw);
}
.padmin-crm-home .crm-contact-edit-form button[type="submit"] {
    align-self: end;
}

/* Company / Building Details — Contacts card */
.crm-company-contacts .crm-contacts-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: var(--space-5, 16px);
}
.crm-company-contacts .crm-contacts-card-head h3 {
    margin: 0;
}
.crm-contacts-add-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    margin: 0;
    padding: 0;
    border: 1px solid var(--border-soft, var(--border));
    border-radius: 8px;
    background: var(--panel-2);
    color: var(--text);
    font-size: 18px;
    font-weight: 500;
    line-height: 1;
    cursor: pointer;
}
.crm-contacts-add-btn:hover {
    background: color-mix(in srgb, var(--panel-2) 70%, var(--text) 8%);
    border-color: var(--border);
}
.crm-contacts-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.crm-contacts-empty {
    margin: 0;
    padding: 10px 0 2px;
    font-size: 13px;
    color: var(--text-muted);
}
.crm-contact-row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    border: 1px solid var(--border-soft, var(--border));
    border-radius: 10px;
    background: var(--panel-2);
}
.crm-contact-row-text {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 13px;
    line-height: 1.45;
    color: var(--text);
    word-break: break-word;
}
.crm-contact-row-star,
.crm-contact-row-edit {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    margin: -4px -4px 0 0;
    padding: 0;
    border: none;
    border-radius: 6px;
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
}
.crm-contact-row-star:hover,
.crm-contact-row-edit:hover {
    background: color-mix(in srgb, var(--panel) 60%, transparent);
    color: var(--text);
}
.crm-contact-row.is-primary .crm-contact-row-star {
    color: var(--brand);
}
.crm-contact-row-actions {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 2px;
}
/* Star + actions hover-reveal in the Contacts card only; primary row keeps them visible.
   Delivery picker row (single contact, no star) always shows its actions. */
.crm-contacts-list .crm-contact-row-star,
.crm-contacts-list .crm-contact-row-actions {
    opacity: 0;
    transition: opacity .12s ease;
}
.crm-contacts-list .crm-contact-row:hover .crm-contact-row-star,
.crm-contacts-list .crm-contact-row:hover .crm-contact-row-actions,
.crm-contacts-list .crm-contact-row:focus-within .crm-contact-row-star,
.crm-contacts-list .crm-contact-row:focus-within .crm-contact-row-actions,
.crm-contacts-list .crm-contact-row.is-primary .crm-contact-row-star,
.crm-contacts-list .crm-contact-row.is-primary .crm-contact-row-actions {
    opacity: 1;
}
/* UA [hidden] loses to .intake-row's display:grid — force it for the delivery-contact toggle row. */
.crm-co-pane .intake-form .intake-row[data-delivery-contact-row][hidden] {
    display: none !important;
}

/* Contacts add modal (Create New | Add existing) */
.crm-contact-modal-overlay {
    position: fixed;
    inset: 0;
    z-index: 230;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: rgba(0, 0, 0, 0.55);
    font-family: var(--font-sans, system-ui, sans-serif);
    -webkit-font-smoothing: antialiased;
    line-height: 1.5;
}
.crm-contact-modal {
    width: min(480px, 100%);
    max-height: calc(100vh - 48px);
    overflow: auto;
    border: 1px solid #26282f;
    border-radius: 16px;
    background: #1a1c21;
    color: #edeff3;
    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.55);
    padding: 22px 24px 20px;
}
.crm-contact-modal-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}
.crm-contact-modal-head h2 {
    margin: 0;
    font-size: 20px;
    font-weight: 600;
    letter-spacing: -0.03em;
    color: #edeff3;
}
.crm-contact-modal-close {
    border: none;
    background: transparent;
    color: #9aa0aa;
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
    padding: 0 2px;
}
.crm-contact-modal-close:hover { color: #edeff3; }
.crm-contact-modal-tabs {
    display: flex;
    gap: 4px;
    margin: 0 0 16px;
    padding: 3px;
    border-radius: 10px;
    background: #12141a;
    border: 1px solid #26282f;
}
.crm-contact-modal-tab {
    flex: 1 1 0;
    margin: 0;
    padding: 8px 10px;
    border: none;
    border-radius: 8px;
    background: transparent;
    color: #9aa0aa;
    font-size: 13px;
    font-weight: 560;
    cursor: pointer;
}
.crm-contact-modal-tab.is-on {
    background: #24272f;
    color: #edeff3;
}
.crm-contact-modal-body { display: flex; flex-direction: column; gap: 0; }
.crm-contact-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
    margin: 0 0 12px;
    font-size: 12px;
    color: #9aa0aa;
}
.crm-contact-field .input {
    width: 100%;
    box-sizing: border-box;
    background: #12141a;
    border: 1px solid #26282f;
    color: #edeff3;
}
.crm-contact-field-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}
.crm-contact-modal-hint {
    margin: -4px 0 12px;
    font-size: 12px;
    color: #676d77;
}
.crm-contact-modal-error {
    margin: 0 0 10px;
    font-size: 12px;
    color: #f87171;
}
.crm-contact-modal-actions {
    display: flex;
    gap: 10px;
    margin-top: 8px;
}
.crm-contact-search-results {
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-height: min(36vh, 260px);
    overflow: auto;
    margin: 0 0 12px;
}
.crm-contact-search-hit {
    display: block;
    width: 100%;
    text-align: left;
    margin: 0;
    padding: 10px 12px;
    border: 1px solid #26282f;
    border-radius: 10px;
    background: #12141a;
    color: #edeff3;
    font-size: 13px;
    cursor: pointer;
}
.crm-contact-search-hit:hover {
    border-color: #3a3d46;
    background: #1a1c21;
}
.crm-contact-search-hit.is-selected {
    border-color: color-mix(in srgb, #f97269 45%, #26282f);
    background: color-mix(in srgb, #f97269 10%, #12141a);
}
@media (max-width: 520px) {
    .crm-contact-field-row { grid-template-columns: 1fr; }
}
.crm-contact-confirm { width: min(420px, 100%); }
.crm-contact-confirm .crm-contact-modal-head { margin-bottom: 10px; }
.crm-contact-confirm .crm-contact-modal-hint { margin-top: 0; }


/* ---- Adjust logo editor (onboarding Info / convert) ---- */
.logo-edit-backdrop {
    position: fixed;
    inset: 0;
    z-index: 400;
    background: rgba(0, 0, 0, 0.72);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    display: grid;
    place-items: center;
    padding: 16px;
    color: #e7e9ee;
}
.logo-edit-backdrop[hidden] { display: none; }
.logo-edit {
    position: relative;
    width: min(400px, 100%);
    max-height: min(92vh, 720px);
    background: #15161a;
    border: 1px solid #2a2c33;
    border-radius: 14px;
    box-shadow: 0 28px 90px rgba(0, 0, 0, 0.65);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    color: #e7e9ee;
}
.logo-edit-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 16px 18px 14px;
    border-bottom: 1px solid #2a2c33;
    background: #121316;
}
.logo-edit-head h3 {
    margin: 0;
    font-size: 15px;
    font-weight: 600;
    letter-spacing: -0.02em;
    color: #e7e9ee;
}
.logo-edit .logo-edit-close {
    width: 30px;
    height: 30px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: #9aa0aa;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    display: grid;
    place-items: center;
    padding: 0;
}
.logo-edit .logo-edit-close:hover {
    color: #e7e9ee;
    background: #1d1f24;
}
.logo-edit-body {
    flex: 1;
    overflow: auto;
    padding: 22px 20px 20px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    background: #15161a;
}
.logo-edit-stage {
    width: 200px;
    height: 200px;
    border-radius: 50%;
    border: 1px solid #3a3d46;
    box-shadow:
        inset 0 0 0 1px rgba(255, 255, 255, 0.04),
        0 12px 32px rgba(0, 0, 0, 0.35);
    background: #1d1f24;
    overflow: hidden;
    position: relative;
    cursor: grab;
    touch-action: none;
    user-select: none;
    flex: none;
}
.logo-edit-stage:active { cursor: grabbing; }
.logo-edit-stage img {
    position: absolute;
    left: 50%;
    top: 50%;
    max-width: none;
    transform-origin: center center;
    pointer-events: none;
    will-change: transform;
}
.logo-edit-hint {
    margin: 0;
    font-size: 12.5px;
    color: #9aa0aa;
    text-align: center;
    max-width: 280px;
    line-height: 1.45;
}
.logo-edit-controls {
    width: 100%;
    max-width: 280px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 12px 14px;
    border: 1px solid #2a2c33;
    border-radius: 10px;
    background: #1a1c21;
}
.logo-edit-zoom,
.logo-edit-bg {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 12px;
    font-weight: 500;
    color: #c4c8d0;
}
.logo-edit-zoom > span,
.logo-edit-bg > span {
    flex: none;
    min-width: 78px;
    color: #9aa0aa;
    font-weight: 500;
}
.logo-edit-zoom input[type="range"] {
    flex: 1;
    accent-color: #f97269;
    height: 4px;
}
.logo-edit-bg-swatch {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: 1px solid #3a3d46;
    padding: 0;
    overflow: hidden;
    cursor: pointer;
    background: #1d1f24;
    flex: none;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.06);
}
.logo-edit-bg-swatch input {
    opacity: 0;
    width: 100%;
    height: 100%;
    cursor: pointer;
    border: 0;
    padding: 0;
}
.logo-edit-eyedrop {
    width: 28px;
    height: 28px;
    border: 1px solid #3a3d46;
    border-radius: 7px;
    background: #15161a;
    color: #c4c8d0;
    display: grid;
    place-items: center;
    padding: 0;
    cursor: pointer;
    flex: none;
    transition: border-color 0.12s, color 0.12s, background 0.12s;
}
.logo-edit-eyedrop:hover {
    color: #e7e9ee;
    border-color: #f97269;
    background: color-mix(in srgb, #1a1c21 85%, #f97269 15%);
}
.logo-edit-eyedrop svg { width: 14px; height: 14px; }
.logo-edit-eyedrop:disabled { opacity: 0.4; cursor: not-allowed; }
.logo-edit-previews {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    max-width: 280px;
    padding-top: 2px;
}
.logo-edit-previews .prev {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: 1px solid #3a3d46;
    overflow: hidden;
    background: #1d1f24;
    position: relative;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
}
.logo-edit-previews .prev.lg { width: 44px; height: 44px; }
.logo-edit-previews .prev img {
    position: absolute;
    left: 50%;
    top: 50%;
    max-width: none;
    transform-origin: center center;
    pointer-events: none;
}
.logo-edit-previews .lbl {
    font-size: 11px;
    font-weight: 500;
    color: #6b7280;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}
.logo-edit-foot {
    padding: 14px 18px 16px;
    border-top: 1px solid #2a2c33;
    background: #121316;
    display: flex;
    justify-content: flex-end;
    gap: 8px;
}
.logo-edit-foot .logo-edit-btn {
    appearance: none;
    height: 32px;
    padding: 0 12px;
    border-radius: 8px;
    border: 1px solid #2a2c33;
    background: #1d1f24;
    color: #e7e9ee;
    font: inherit;
    font-size: 12.5px;
    font-weight: 500;
    cursor: pointer;
    transition: border-color 0.12s, background 0.12s, color 0.12s;
}
.logo-edit-foot .logo-edit-btn:hover {
    border-color: #3a3d46;
    background: #22252b;
}
.logo-edit-foot .logo-edit-btn-primary {
    border-color: color-mix(in srgb, #f97269 50%, transparent);
    background: color-mix(in srgb, #f97269 16%, #1d1f24);
    color: #f97269;
}
.logo-edit-foot .logo-edit-btn-primary:hover {
    background: color-mix(in srgb, #f97269 26%, #1d1f24);
    border-color: color-mix(in srgb, #f97269 65%, transparent);
}

/* Building Details — About metric cubes */
.crm-co-pane .intake-form .crm-about-cubes {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  margin: 0;
  padding: 0;
  border-bottom: 1px solid var(--border-soft);
  background: color-mix(in srgb, var(--panel) 55%, var(--panel-2));
}
.crm-co-pane .intake-form .crm-about-cubes:last-child { border-bottom: 0; }
.crm-co-pane .intake-form .crm-about-cube {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-width: 0;
  min-height: 68px;
  padding: 14px 12px 15px;
  border: 0;
  border-right: 1px solid var(--border-soft);
  background: transparent;
  text-align: center;
}
.crm-co-pane .intake-form .crm-about-cube:last-child { border-right: 0; }
.crm-co-pane .intake-form .crm-about-cube-label {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--text-muted);
  line-height: 1.3;
}
.crm-co-pane .intake-form .crm-about-cube-value {
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
  font-variant-numeric: tabular-nums;
  line-height: 1.15;
  letter-spacing: -0.015em;
  white-space: nowrap;
}
.crm-co-pane .intake-form .crm-about-cube-value--date {
  width: 100%;
  display: flex;
  justify-content: center;
  position: relative;
}
/* Date text stays centered like sibling cubes; pencil is out of flow. */
.crm-co-pane .intake-form .crm-about-cube-value--date .intake-editable.is-locked {
  display: block;
  width: auto;
  max-width: 100%;
  position: static;
  text-align: center;
}
.crm-co-pane .intake-form .crm-about-cube-value--date .intake-editable-value {
  flex: none;
  display: inline;
}
.crm-co-pane .intake-form .crm-about-cube:has([data-crm-created-date]) {
  position: relative;
}
.crm-co-pane .intake-form .crm-about-cube-value--date .intake-editable-edit {
  position: absolute;
  top: 4px;
  right: -6px;
  width: 28px;
  height: 28px;
  opacity: 0;
  transition: opacity 0.12s ease, color 0.12s, background 0.12s;
}
.crm-co-pane .intake-form .crm-about-cube:hover .intake-editable-edit,
.crm-co-pane .intake-form .crm-about-cube:focus-within .intake-editable-edit {
  opacity: 1;
}
.crm-co-pane .intake-form .crm-about-cube-value--date .intake-editable:not(.is-locked) {
  display: flex;
  justify-content: center;
  width: 100%;
}
.crm-co-pane .intake-form .crm-about-cube-value--date .intake-editable:not(.is-locked) [data-intake-input] {
  max-width: 100%;
  font: inherit;
  font-size: 13px;
  font-weight: 600;
}
@media (max-width: 559px) {
  .crm-co-pane .intake-form .crm-about-cubes { grid-template-columns: 1fr; }
  .crm-co-pane .intake-form .crm-about-cube {
    min-height: 56px;
    padding: 12px 16px;
    border-right: 0;
    border-bottom: 1px solid var(--border-soft);
    flex-direction: row;
    justify-content: space-between;
    gap: 12px;
  }
  .crm-co-pane .intake-form .crm-about-cube:last-child { border-bottom: 0; }
  .crm-co-pane .intake-form .crm-about-cube-label {
    text-transform: none;
    letter-spacing: -0.01em;
    font-size: 12.5px;
    color: var(--text-dim);
  }
}


/* Building Details — suggest menu (fixed; not clipped by cards) */
#crm-site-details .intake-editable[data-suggest] { position: relative; }
.crm-intake-suggest {
  position: fixed;
  z-index: 200;
  max-height: 220px;
  overflow-y: auto;
  margin: 0;
  padding: 4px;
  list-style: none;
  border: 1px solid var(--border, #2a2c33);
  border-radius: 10px;
  background: var(--panel-2, #1d1f24);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.45);
  box-sizing: border-box;
}
.crm-intake-suggest[hidden] { display: none !important; }
.crm-intake-suggest-item {
  display: block;
  width: 100%;
  margin: 0;
  padding: 8px 10px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: var(--text, #e7e9ee);
  font: inherit;
  font-size: 13px;
  text-align: left;
  cursor: pointer;
}
.crm-intake-suggest-item:hover,
.crm-intake-suggest-item.is-active {
  background: color-mix(in srgb, var(--panel, #15161a) 70%, transparent);
  color: var(--text);
}


/* Building Details — collapsible Onboarding */
#ov-setup > summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: calc(var(--space-6) * -1);
  padding: var(--space-6);
}
#ov-setup > summary::-webkit-details-marker { display: none; }
#ov-setup > summary .setup-caret {
  opacity: .55;
  font-size: 12px;
  transition: transform .15s ease;
}
#ov-setup[open] > summary .setup-caret { transform: rotate(90deg); }
#ov-setup > summary h3 { margin: 0; }
#ov-setup[open] > summary { padding-bottom: 0; margin-bottom: var(--space-5); }
#ov-delivery .crm-delivery-contact {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  width: 100%;
  min-height: 32px;
}
#ov-delivery .crm-delivery-contact .crm-contact-row {
  flex: 1 1 auto;
  width: 100%;
}
#ov-delivery [data-delivery-contact-row][hidden] {
  display: none !important;
}


/* CRM Contacts list — deep-link row highlight */
.crm-contact-list-row.is-deeplink-highlight,
tr.crm-contact-list-row.is-deeplink-highlight,
[data-contact-id].is-deeplink-highlight {
  outline: 2px solid var(--brand, #f97269);
  outline-offset: 2px;
  animation: crm-deeplink-fade 2.4s ease forwards;
}
@keyframes crm-deeplink-fade {
  0%, 70% { outline-color: var(--brand, #f97269); }
  100% { outline-color: transparent; }
}

/* ---- CRM Contacts home: row open + side drawer ---- */
.padmin-crm-home #crm-contacts-table tbody tr[data-crm-row] {
  cursor: pointer;
  transition: background .12s ease;
}
.padmin-crm-home #crm-contacts-table tbody tr[data-crm-row]:hover td {
  background: color-mix(in srgb, var(--panel-2) 55%, transparent);
}
.padmin-crm-home #crm-contacts-table tbody tr.is-open td {
  background: color-mix(in srgb, var(--panel-2) 80%, transparent);
}
.padmin-crm-home #crm-contacts-table .crm-name-text {
  font-weight: 500;
  color: var(--text);
}

.padmin .crm-drawer-overlay {
  position: fixed;
  inset: 0;
  z-index: 9000;
  background: rgba(0, 0, 0, .55);
  opacity: 0;
  pointer-events: none;
  transition: opacity .18s ease;
  font-family: var(--font-sans);
  -webkit-font-smoothing: antialiased;
}
.padmin .crm-drawer-overlay.is-open {
  opacity: 1;
  pointer-events: auto;
}
.padmin .crm-drawer {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 9001;
  width: min(440px, 100vw);
  height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--panel);
  color: var(--text);
  border-left: 1px solid var(--border);
  box-shadow: -20px 0 48px rgba(0, 0, 0, .55);
  transform: translateX(100%);
  transition: transform .2s ease;
  font-family: var(--font-sans);
  font-feature-settings: "ss01", "cv11";
  -webkit-font-smoothing: antialiased;
  font-size: 14px;
  line-height: 1.45;
}
.padmin .crm-drawer.is-open { transform: translateX(0); }
.padmin .crm-drawer-head {
  flex: 0 0 auto;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 20px 22px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--panel);
}
.padmin .crm-drawer-head-text { flex: 1; min-width: 0; }
.padmin .crm-drawer-kicker {
  margin: 0 0 4px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.padmin .crm-drawer-title {
  margin: 0;
  font-size: 20px;
  font-weight: 600;
  letter-spacing: -0.03em;
  color: var(--text);
  line-height: 1.25;
  word-break: break-word;
}
.padmin .crm-drawer-close {
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--text-dim);
  font: inherit;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}
.padmin .crm-drawer-close:hover {
  background: var(--panel-2);
  color: var(--text);
}
.padmin .crm-drawer-body {
  flex: 1 1 auto;
  overflow: auto;
  padding: 18px 22px 28px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  background: var(--panel);
}
.padmin .crm-drawer-section-label {
  margin: 10px 0 8px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.padmin .crm-drawer-field {
  display: flex;
  flex-direction: column;
  gap: 5px;
  margin: 0 0 12px;
  font-size: 12px;
  font-weight: 500;
  color: var(--text-dim);
}
.padmin .crm-drawer .input,
.padmin .crm-drawer .select,
.padmin .crm-drawer .btn,
.padmin .crm-drawer button {
  font-family: var(--font-sans);
  font-feature-settings: "ss01", "cv11";
  -webkit-font-smoothing: antialiased;
}
.padmin .crm-drawer-field .input,
.padmin .crm-drawer-field .select {
  width: 100%;
  box-sizing: border-box;
}
.padmin .crm-drawer-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.padmin .crm-bldg-check-list {
  display: flex;
  flex-direction: column;
  gap: 2px;
  max-height: 200px;
  overflow: auto;
  padding: 6px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--panel-2);
}
.padmin .crm-bldg-check-list label {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 8px 10px;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 400;
  color: var(--text);
  cursor: pointer;
}
.padmin .crm-bldg-check-list label:hover {
  background: color-mix(in srgb, var(--panel) 55%, transparent);
}
.padmin .crm-bldg-check-list input { margin: 0; }
.padmin .crm-bldg-empty {
  padding: 12px 10px;
  font-size: 13px;
  color: var(--text-muted);
}
.padmin .crm-bldg-note {
  margin: 6px 0 0;
  padding: 6px 10px 2px;
  border-top: 1px solid var(--border);
  font-size: 12px;
  color: var(--text-muted);
}
.padmin .crm-drawer-hint {
  margin: 0 0 4px;
  padding: 10px 12px;
  border-radius: 6px;
  background: var(--panel-2);
  border: 1px solid var(--border);
  font-size: 12px;
  line-height: 1.45;
  color: var(--text-dim);
}
.padmin .crm-drawer-hint strong {
  color: var(--text);
  font-weight: 600;
}
.padmin .crm-drawer-roles {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 4px;
}
.padmin .crm-drawer-role-row {
  display: flex;
  gap: 8px;
  font-size: 13px;
  line-height: 1.4;
}
.padmin .crm-drawer-role-row .lbl {
  flex: 0 0 72px;
  color: var(--text-muted);
  font-size: 12px;
}
.padmin .crm-drawer-role-row .val { color: var(--text); }
.padmin .crm-drawer-foot {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 22px;
  border-top: 1px solid var(--border);
  background: var(--panel);
}
.padmin .crm-drawer-foot .crm-drawer-save { min-width: 88px; }
.padmin .crm-drawer-delete { margin-left: auto; }
.padmin .crm-drawer-delete[hidden],
.padmin .crm-drawer-roles[hidden] { display: none !important; }

@media (max-width: 520px) {
  .padmin .crm-drawer { width: 100vw; }
  .padmin .crm-drawer-row { grid-template-columns: 1fr; }
}

