/*
 * Calm, product-focused admin shell.
 * This file is intentionally loaded after the public-site and feature styles so
 * the operational UI can share one light/dark palette without changing markup
 * or application behaviour.
 */
html[data-admin-theme="dark"] {
  --admin-bg: #0f1115;
  --admin-surface: #171a20;
  --admin-surface-raised: #1d2128;
  --admin-input: #111419;
  --admin-text: #f2f4f1;
  --admin-muted: #a8b0aa;
  --admin-line: #30363f;
  --admin-line-strong: #464e59;
  --admin-accent: #9fd66c;
  --admin-accent-soft: rgba(159, 214, 108, .12);
  --admin-accent-ink: #14200f;
  --admin-warning: #f1bd70;
  --admin-warning-soft: rgba(241, 189, 112, .12);
  --admin-danger: #ffaaa1;
  --admin-danger-soft: rgba(255, 126, 113, .12);
  --admin-info: #8bcbea;
  --admin-info-soft: rgba(139, 203, 234, .12);
  --admin-shadow: 0 16px 42px rgba(0, 0, 0, .22);
}

html[data-admin-theme="light"] {
  --admin-bg: #f3f5f2;
  --admin-surface: #ffffff;
  --admin-surface-raised: #edf1ed;
  --admin-input: #ffffff;
  --admin-text: #1b211d;
  --admin-muted: #626b65;
  --admin-line: #d8ddd8;
  --admin-line-strong: #bdc6bf;
  --admin-accent: #376f53;
  --admin-accent-soft: rgba(55, 111, 83, .1);
  --admin-accent-ink: #ffffff;
  --admin-warning: #8a5b18;
  --admin-warning-soft: rgba(138, 91, 24, .1);
  --admin-danger: #9d4037;
  --admin-danger-soft: rgba(157, 64, 55, .09);
  --admin-info: #28627d;
  --admin-info-soft: rgba(40, 98, 125, .09);
  --admin-shadow: 0 16px 42px rgba(29, 45, 34, .08);
}

body.admin-ui {
  --ink: var(--admin-bg);
  --ink-2: var(--admin-surface);
  --surface: var(--admin-surface);
  --paper: var(--admin-text);
  --mist: var(--admin-muted);
  --acid: var(--admin-accent);
  --line: var(--admin-line);
  min-height: 100vh;
  background: var(--admin-bg);
  color: var(--admin-text);
  font-size: 16px;
  line-height: 1.5;
  transition: background-color .18s ease, color .18s ease;
}

body.admin-ui .grain,
body.admin-ui .scroll-progress { display: none; }

body.admin-ui .site-header,
body.admin-ui .site-header.scrolled {
  height: 76px;
  padding: 10px clamp(20px, 3vw, 48px);
  border-bottom: 1px solid var(--admin-line);
  background: color-mix(in srgb, var(--admin-bg) 94%, transparent);
  color: var(--admin-text);
  box-shadow: none;
  backdrop-filter: blur(18px);
}

body.admin-ui .brand-logo {
  width: clamp(190px, 17vw, 236px);
  height: 44px;
}

body.admin-ui .brand-logo .admin-logo { width: 100%; height: auto; }
html[data-admin-theme="dark"] .admin-logo--light,
html[data-admin-theme="light"] .admin-logo--dark { display: none; }

body.admin-ui .main-nav { gap: 6px; font-size: 14px; }
body.admin-ui .main-nav > a:not(.nav-cta),
body.admin-ui .nav-dropdown__toggle {
  min-height: 42px;
  padding: 9px 14px;
  border-radius: 9px;
  opacity: 1;
  color: var(--admin-muted);
  font-weight: 600;
  transition: background-color .15s ease, color .15s ease;
}
body.admin-ui .main-nav > a:hover,
body.admin-ui .main-nav > a.active,
body.admin-ui .nav-dropdown__toggle:hover,
body.admin-ui .nav-dropdown[open] .nav-dropdown__toggle {
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}

body.admin-ui .nav-dropdown__menu {
  top: calc(100% + 11px);
  min-width: 294px;
  padding: 10px;
  border: 1px solid var(--admin-line);
  border-radius: 12px;
  background: var(--admin-surface);
  box-shadow: var(--admin-shadow);
  backdrop-filter: blur(20px);
}
body.admin-ui .nav-dropdown__menu a,
body.admin-ui .nav-dropdown__menu button {
  min-height: 42px;
  padding: 10px 12px;
  border-radius: 8px;
  color: var(--admin-text);
  font-size: 14px;
}
body.admin-ui .nav-dropdown__menu a:hover,
body.admin-ui .nav-dropdown__menu button:hover {
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}
body.admin-ui .nav-dropdown__logout {
  margin-top: 5px;
  padding-top: 5px;
  border-top: 1px solid var(--admin-line);
}

.admin-theme-switch {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5px;
  padding: 5px 0 9px;
  border-bottom: 1px solid var(--admin-line);
  margin-bottom: 5px;
}
.admin-theme-switch > span:first-child {
  grid-column: 1 / -1;
  padding: 4px 7px 2px;
  color: var(--admin-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}
body.admin-ui .admin-theme-switch button {
  display: flex;
  gap: 7px;
  justify-content: center;
  min-height: 38px;
  padding: 8px 10px;
  border: 1px solid var(--admin-line);
  border-radius: 8px;
  background: transparent;
  color: var(--admin-muted);
  cursor: pointer;
}
body.admin-ui .admin-theme-switch button.active {
  border-color: var(--admin-accent);
  background: var(--admin-accent-soft);
  color: var(--admin-text);
}
body.admin-ui .main-nav > .admin-theme-switch {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 0;
  margin: 0 0 0 8px;
  border: 0;
}
body.admin-ui .main-nav > .admin-theme-switch > span:first-child { display: none; }
body.admin-ui .main-nav > .admin-theme-switch button { width: auto; }

body.admin-ui :where(.map-admin, .campaign-admin, .catalogue-admin, .customer-account, .map-manager) {
  width: min(100%, 1680px);
  min-height: 100vh;
  margin: 0 auto;
  padding: 112px clamp(20px, 3.5vw, 56px) 72px;
  background: var(--admin-bg);
  color: var(--admin-text);
}
body.admin-ui :where(.map-admin__header, .campaign-admin__header, .catalogue-admin__header) {
  display: block;
  max-width: 940px;
  margin-bottom: 28px;
  padding-bottom: 26px;
  border-bottom: 1px solid var(--admin-line);
}
body.admin-ui :where(.map-admin__header, .campaign-admin__header, .catalogue-admin__header) h1,
body.admin-ui .map-admin header h1 {
  margin: 4px 0 10px;
  font-size: clamp(42px, 5vw, 68px);
  font-weight: 500;
  line-height: 1;
  letter-spacing: -.045em;
}
body.admin-ui :where(.map-admin__header, .campaign-admin__header, .catalogue-admin__header) p:last-child,
body.admin-ui .map-admin header > p:last-child {
  max-width: 740px;
  margin: 0;
  color: var(--admin-muted);
  font-size: 16px;
  line-height: 1.55;
}
body.admin-ui .eyebrow {
  margin-bottom: 8px;
  color: var(--admin-accent);
  font-size: 11px;
  letter-spacing: .11em;
}

body.admin-ui .button {
  min-height: 44px;
  padding: 10px 17px;
  border-radius: 9px;
  font-size: 14px;
  box-shadow: none;
  transform: none;
}
body.admin-ui .button:hover { transform: none; }
body.admin-ui .button--solid {
  border-color: var(--admin-accent);
  background: var(--admin-accent);
  color: var(--admin-accent-ink);
}
body.admin-ui .button--dark {
  border-color: var(--admin-line-strong);
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}
body.admin-ui .button--dark:hover { border-color: var(--admin-accent); }
body.admin-ui .text-link { color: var(--admin-accent); }

body.admin-ui :where(.map-admin, .campaign-admin, .catalogue-admin, .admin-login, .customer-account, .map-manager) label {
  color: var(--admin-muted);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: .055em;
}
body.admin-ui :where(.map-admin, .campaign-admin, .catalogue-admin, .admin-login, .customer-account, .map-manager) :where(input, select, textarea) {
  min-height: 46px;
  padding: 11px 13px;
  border: 1px solid var(--admin-line-strong);
  border-radius: 8px;
  background: var(--admin-input);
  color: var(--admin-text);
  font: 500 16px/1.4 var(--sans);
  outline: none;
}
body.admin-ui :where(.map-admin, .campaign-admin, .catalogue-admin, .admin-login, .customer-account, .map-manager) textarea {
  min-height: 112px;
  resize: vertical;
}
body.admin-ui :where(.map-admin, .campaign-admin, .catalogue-admin, .admin-login, .customer-account, .map-manager) :where(input, select, textarea):focus {
  border-color: var(--admin-accent);
  box-shadow: 0 0 0 3px var(--admin-accent-soft);
}
body.admin-ui :where(.map-admin, .campaign-admin, .catalogue-admin, .admin-login, .customer-account, .map-manager) :where(input, textarea)::placeholder {
  color: color-mix(in srgb, var(--admin-muted) 78%, transparent);
}
body.admin-ui :where(.map-admin, .campaign-admin, .catalogue-admin, .admin-login, .customer-account, .map-manager) select option {
  background: var(--admin-input);
  color: var(--admin-text);
}

body.admin-ui :where(
  .map-admin__create,
  .map-admin__assign,
  .map-admin__customer,
  .map-admin__customer-detail,
  .map-admin__access,
  .map-admin__map-card,
  .map-admin__credentials,
  .catalogue-admin__toolbar,
  .catalogue-item-row,
  .catalogue-admin__editor,
  .catalogue-location-map,
  .catalogue-admin__images figure,
  .campaign-admin__results,
  .campaign-admin__map,
  .campaign-admin__editor,
  .campaign-admin__pipeline,
  .campaign-admin__filters,
  .campaign-admin__catalogue-builder,
  .campaign-admin__builder-step,
  .campaign-admin__builder-actions,
  .campaign-admin__customer-summary,
  .campaign-admin__capture-workbench,
  .campaign-admin__capture-workbench article,
  .campaign-admin__prospect-search,
  .campaign-admin__prospect-media,
  .campaign-place-choice,
  .campaign-result,
  .campaign-card-chip,
  .campaign-image,
  .campaign-pipeline-card,
  .admin-password
) {
  border-color: var(--admin-line);
  background: var(--admin-surface);
  color: var(--admin-text);
  box-shadow: none;
}

body.admin-ui :where(
  .map-admin__access,
  .map-admin__map-card,
  .catalogue-location-map,
  .catalogue-admin__images figure,
  .campaign-admin__builder-step,
  .campaign-admin__capture-workbench,
  .campaign-admin__capture-workbench article,
  .campaign-place-choice,
  .campaign-result,
  .campaign-card-chip,
  .campaign-image,
  .campaign-pipeline-card
) { background: var(--admin-surface-raised); }

body.admin-ui :where(
  .map-admin__header p,
  .map-admin__access > p:not(.eyebrow),
  .map-admin__map-card p:not(.eyebrow),
  .map-admin__customer span span,
  .catalogue-admin__header p,
  .catalogue-item-row > span > span,
  .catalogue-location-map__empty,
  .catalogue-location-map footer,
  .campaign-admin__header p,
  .campaign-admin__empty,
  .campaign-admin__map-empty,
  .campaign-admin__output-note,
  .campaign-admin__builder-step > p,
  .campaign-admin__customer-summary span,
  .campaign-admin__capture-workbench p,
  .campaign-admin__catalogue-builder > header > p,
  .campaign-admin__prospect-media > header > p,
  .campaign-place-choice span,
  .campaign-result p,
  .campaign-pipeline-card span span,
  .admin-password form p
) { color: var(--admin-muted); }

body.admin-ui :where(
  .map-admin__customer,
  .catalogue-item-row,
  .campaign-place-choice,
  .campaign-pipeline-card
) { color: var(--admin-text); }
body.admin-ui :where(
  .map-admin__customer:hover,
  .map-admin__customer.active,
  .catalogue-item-row:hover,
  .campaign-place-choice:hover,
  .campaign-pipeline-card:hover
) { border-color: var(--admin-accent); }
body.admin-ui .map-admin__customer.active { box-shadow: inset 3px 0 var(--admin-accent); }

body.admin-ui .map-admin__workspace { gap: 22px; margin-top: 22px; }
body.admin-ui .map-admin__workspace:has(.map-admin__customer-detail[hidden]) { grid-template-columns: minmax(0, 1fr); }
body.admin-ui .map-admin__create { gap: 13px; padding: 22px; border-radius: 12px; }
body.admin-ui .map-admin__create h2,
body.admin-ui .map-admin__customer-tools h2 { font-size: 26px; }
body.admin-ui .map-admin__business-search {
  padding: 14px;
  border-color: var(--admin-line);
  border-radius: 9px;
  background: var(--admin-surface-raised);
}
body.admin-ui .map-admin__business-choice {
  border-color: var(--admin-line);
  background: var(--admin-input);
  color: var(--admin-text);
}
body.admin-ui .map-admin__business-choice span { color: var(--admin-muted); }
body.admin-ui .map-admin__business-choice small {
  color: var(--admin-accent);
  font-weight: 700;
}
body.admin-ui .map-admin__customer-tools { margin: 30px 0 12px; }
body.admin-ui .map-admin__customer { padding: 14px 15px; border-radius: 9px; }
body.admin-ui .map-admin__customer-detail { top: 94px; padding: 22px; border-radius: 12px; }
body.admin-ui .map-admin__detail-head h2 { font-size: 32px; }
body.admin-ui .map-admin__access,
body.admin-ui .map-admin__map-card { border-radius: 9px; }
body.admin-ui .map-admin__credentials {
  border-color: var(--admin-accent);
  background: var(--admin-accent-soft);
}

body.admin-ui .catalogue-admin__toolbar {
  grid-template-columns: minmax(260px, 520px);
  margin: 26px 0 18px;
  padding: 18px;
  border-radius: 12px;
}
body.admin-ui .catalogue-admin__workspace { gap: 22px; margin-top: 18px; }
body.admin-ui .catalogue-item-row { border-radius: 9px; }
body.admin-ui .catalogue-item-row small,
body.admin-ui .catalogue-location-map footer a,
body.admin-ui .catalogue-admin__images figure.is-main figcaption { color: var(--admin-accent); }
body.admin-ui .catalogue-admin__editor { padding: 24px; border-radius: 12px; }
body.admin-ui .catalogue-admin__editor-head h2 { font-size: 32px; }
body.admin-ui .catalogue-location-map__empty {
  background: var(--admin-surface-raised);
}
body.admin-ui .catalogue-admin__images button {
  border-color: var(--admin-line-strong);
  background: var(--admin-input);
  color: var(--admin-text);
}

body.admin-ui .campaign-admin__status { margin: 16px 0; }
body.admin-ui .campaign-admin__automation,
body.admin-ui .campaign-batch {
  border-color: var(--admin-line);
  background: var(--admin-surface);
  color: var(--admin-text);
}
body.admin-ui .campaign-admin__automation > header :where(h2, p),
body.admin-ui .campaign-admin__automation :where(h3, strong) { color: inherit; }
body.admin-ui .campaign-admin__automation > header > span,
body.admin-ui .campaign-admin__recent-areas button {
  border-color: var(--admin-line-strong);
  background: var(--admin-accent-soft);
  color: var(--admin-accent);
}
body.admin-ui .campaign-admin__automation > header p,
body.admin-ui .campaign-admin__recent-areas > span,
body.admin-ui .campaign-admin__bulk-row :where(span, small),
body.admin-ui .campaign-batch > summary small { color: var(--admin-muted); }
body.admin-ui .campaign-admin__bulk-tools,
body.admin-ui .campaign-admin__bulk-row {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}
body.admin-ui .campaign-admin__bulk-outputs {
  border-color: var(--admin-line-strong);
  background: var(--admin-accent-soft);
}
body.admin-ui .campaign-admin__bulk-outputs .campaign-admin__check {
  border-color: var(--admin-line);
  background: var(--admin-surface);
  color: var(--admin-text) !important;
}
body.admin-ui .campaign-admin__bulk-outputs legend,
body.admin-ui .campaign-admin__bulk-tools output,
body.admin-ui .campaign-admin__bulk-row output,
body.admin-ui .campaign-batch > summary b { color: var(--admin-accent); }
body.admin-ui .campaign-admin__delivery-layout { gap: 18px; }
body.admin-ui .campaign-admin__editor,
body.admin-ui .campaign-admin__pipeline { padding: 22px; border-radius: 12px; }
body.admin-ui .campaign-admin__map { border-radius: 12px; }
body.admin-ui .campaign-admin__viewer {
  width: 100%;
  height: auto;
  min-height: 0;
  aspect-ratio: 16 / 9;
}
body.admin-ui .campaign-admin__viewer iframe { display: block; }
body.admin-ui .campaign-admin__map-head { padding: 18px; }
body.admin-ui .campaign-admin__panel-head h2,
body.admin-ui .campaign-admin__map-head h2 { font-size: 26px; }
body.admin-ui .campaign-admin__panel-head > span,
body.admin-ui .campaign-admin__cards header > span,
body.admin-ui .campaign-admin__capture-workbench [data-campaign-image-status-close],
body.admin-ui .campaign-admin__capture-workbench [data-campaign-image-status-wide] { color: var(--admin-accent); }
body.admin-ui .campaign-admin__check { color: var(--admin-text) !important; }
body.admin-ui .campaign-admin fieldset { border-color: var(--admin-line); }
body.admin-ui .campaign-admin legend { color: var(--admin-accent); }
body.admin-ui .campaign-admin__map-empty,
body.admin-ui .catalogue-location-map__empty { background: var(--admin-surface-raised); }
body.admin-ui .campaign-admin__catalogue-builder,
body.admin-ui .campaign-admin__prospect-media,
body.admin-ui .campaign-admin__prospect-search { padding: 22px; border-radius: 12px; }
body.admin-ui .campaign-admin__builder-step > div:first-child > span {
  background: var(--admin-accent);
  color: var(--admin-accent-ink);
}
body.admin-ui .campaign-admin__licensed-images article,
body.admin-ui .campaign-admin__prospect-gallery article {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
}
body.admin-ui .campaign-admin__licensed-images :where(small, a),
body.admin-ui .campaign-admin__search-attribution,
body.admin-ui .campaign-admin__search-attribution a { color: var(--admin-muted); }
body.admin-ui .campaign-admin__licensed-images button {
  border-color: var(--admin-accent);
  color: var(--admin-accent);
}
body.admin-ui .campaign-result footer button,
body.admin-ui .campaign-image > button {
  border-color: var(--admin-line-strong);
  color: var(--admin-text);
}
body.admin-ui .campaign-result footer button:first-child,
body.admin-ui .campaign-image.is-selected > button { border-color: var(--admin-accent); color: var(--admin-accent); }

/* Customer accounts and map studios use the same calm back-end system. */
body.admin-ui :where(.customer-account, .map-manager) {
  background: var(--admin-bg);
  color: var(--admin-text);
}
body.admin-ui :where(.customer-account__intro, .map-manager__intro) {
  max-width: 940px;
  margin-bottom: 36px;
  padding-bottom: 28px;
  border-bottom: 1px solid var(--admin-line);
}
body.admin-ui :where(.customer-account__intro, .map-manager__intro) h1 {
  margin: 5px 0 14px;
  font-size: clamp(44px, 6vw, 78px);
  line-height: .94;
  letter-spacing: -.05em;
}
body.admin-ui :where(.customer-account__intro, .map-manager__intro) > p:last-child {
  max-width: 740px;
  margin: 0;
  color: var(--admin-muted);
  font-size: 16px;
}
body.admin-ui :where(
  .customer-auth form,
  .customer-map-card,
  .map-product-card,
  .map-place-form,
  .map-manager__public-world,
  .map-branding,
  .map-analytics,
  .map-template-copy,
  .map-opening-view,
  .map-catalog-add,
  .map-place-media,
  .map-flight,
  .map-embed-code,
  .map-manager__viewer-size,
  .map-analytics__panel
) {
  border-color: var(--admin-line);
  border-radius: 12px;
  background: var(--admin-surface);
  color: var(--admin-text);
  box-shadow: none;
}
body.admin-ui :where(.customer-auth form, .map-place-form, .map-branding, .map-analytics) { padding: 24px; }
body.admin-ui :where(.customer-map-card, .map-product-card) { border-radius: 10px; }
body.admin-ui :where(
  .customer-account__intro > p,
  .map-manager__intro > p:last-child,
  .map-manager__account,
  .map-manager__public-world p,
  .map-branding p,
  .map-analytics p,
  .map-template-copy p,
  .map-opening-view small,
  .map-opening-view > p,
  .map-catalog-add > p,
  .map-place-media__head p:last-child,
  .map-manager-card p,
  .map-manager__preview-flight p,
  .map-manager__viewer-size p,
  .map-embed-code__actions span
) { color: var(--admin-muted); }
body.admin-ui :where(
  .map-place-form label,
  .map-template-copy label,
  .map-opening-view label,
  .map-embed-code label,
  .map-manager-card__actions button,
  .map-catalog-result,
  .map-manager__public-world > label
) { color: var(--admin-text); }
body.admin-ui :where(.map-manager-card__actions button, .map-catalog-result) { border-color: var(--admin-line); }
body.admin-ui .map-product-card select,
body.admin-ui .map-template-copy select,
body.admin-ui .map-embed-code textarea { background: var(--admin-input); color: var(--admin-text); }
body.admin-ui .map-embed-code textarea { color: var(--admin-accent); }
body.admin-ui .map-flight-stop {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}
body.admin-ui .map-flight-stop > div:nth-of-type(1) > strong { color: var(--admin-text); }
body.admin-ui .map-flight-stop label,
body.admin-ui .map-flight-stop__orbit { color: var(--admin-muted) !important; }
body.admin-ui .map-flight-stop input {
  border-color: var(--admin-line) !important;
  background: var(--admin-input) !important;
  color: var(--admin-text) !important;
}
body.admin-ui .map-flight-stop__controls button {
  border-color: var(--admin-line-strong);
  background: var(--admin-surface);
  color: var(--admin-text);
}
body.admin-ui .customer-dashboard__bar { border-color: var(--admin-line); }
/* Customer business/landing editor follows the selected backend appearance. */
body.admin-ui .customer-profile {
  border-color: var(--admin-line);
  background: var(--admin-surface);
  color: var(--admin-text);
}
body.admin-ui .customer-profile > summary p:last-child,
body.admin-ui .customer-profile label,
body.admin-ui .customer-profile label small,
body.admin-ui .customer-profile__theme > header > p,
body.admin-ui .customer-profile__presets small,
body.admin-ui .customer-profile__actions small,
body.admin-ui .customer-profile__slug span { color: var(--admin-muted); }
body.admin-ui .customer-profile > form { border-color: var(--admin-line); }
body.admin-ui :where(.customer-profile__section, .customer-profile__theme) {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}
body.admin-ui .customer-profile :where(input, textarea, select),
body.admin-ui .customer-profile__slug,
body.admin-ui .customer-profile__presets button {
  border-color: var(--admin-line-strong);
  background: var(--admin-input);
  color: var(--admin-text);
}
body.admin-ui .customer-profile__publish {
  border-color: var(--admin-accent) !important;
  background: var(--admin-accent-soft);
}
body.admin-ui .customer-profile__publish strong { color: var(--admin-text); }
body.admin-ui .customer-profile__presets button[aria-pressed="true"] {
  border-color: var(--admin-accent);
  box-shadow: 0 0 0 1px var(--admin-accent);
}
body.admin-ui .map-manager__preview > .viewer-frame { border-radius: 12px; box-shadow: none; }
body.admin-ui :where(.map-manager__embed, .customer-dashboard__bar) { border-color: var(--admin-line); }
body.admin-ui :where(.map-manager__account a, .map-manager__embed code) { color: var(--admin-accent); }

/* Estate-agent portfolio management belongs to the admin palette, not the dark public-map palette. */
body.admin-ui .map-properties {
  border-color: var(--admin-line);
  background: var(--admin-surface);
  color: var(--admin-text);
  box-shadow: none;
}
body.admin-ui .map-property-summary {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}
body.admin-ui .map-property-summary h3 { color: var(--admin-text); }
body.admin-ui .map-property-summary__price { color: var(--admin-accent); }
body.admin-ui .map-property-summary p { color: var(--admin-muted); }
body.admin-ui .map-property-search-results button {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}
body.admin-ui .map-property-search-results button:hover {
  border-color: var(--admin-accent);
  background: var(--admin-accent-soft);
}
body.admin-ui .map-property-delete { color: var(--admin-danger); }

/*
 * Operational surfaces that are authored in dark-first feature styles.
 * Keep this list explicit: these controls also appear outside the main form
 * panels, so relying on a parent input override leaves their containers dark.
 */
body.admin-ui :where(
  .map-image-rights,
  .map-catalog-request,
  .google-place-picker,
  .customer-account__discount,
  .catalogue-request-card,
  .map-admin__map-license
) {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
  color: var(--admin-text);
  box-shadow: none;
}
body.admin-ui :where(
  .map-image-rights small,
  .map-catalog-request > div span,
  .map-catalog-request label > span,
  .map-catalog-request__status,
  .google-place-picker header p,
  .google-place-picker [data-google-place-status],
  .customer-account__discount p
) { color: var(--admin-muted) !important; }
body.admin-ui :where(
  .map-catalog-request label,
  .map-place-form__publish,
  .customer-account__discount label
) { color: var(--admin-text) !important; }
body.admin-ui :where(
  .map-catalog-request input,
  .map-catalog-request textarea,
  .google-place-autocomplete-fallback,
  .customer-account__discount input,
  .catalogue-request-card textarea,
  .map-admin__map-license textarea
) {
  border-color: var(--admin-line-strong);
  background: var(--admin-input);
  color: var(--admin-text);
}

/* Dialog chrome follows the chosen appearance; the error cue stays semantic. */
body.admin-ui .map-admin__error-dialog {
  border-color: var(--admin-danger);
  background: var(--admin-surface);
  color: var(--admin-text);
  box-shadow: var(--admin-shadow);
}
body.admin-ui .map-admin__error-dialog h2 { color: var(--admin-text); }
body.admin-ui .map-admin__error-dialog p[data-admin-error-message] { color: var(--admin-muted); }

/* Consent is site-wide, but it must not turn a signed-in light page black. */
body.admin-ui .privacy-banner,
body.admin-ui .privacy-dialog__panel {
  border-color: var(--admin-accent);
  background: var(--admin-surface);
  color: var(--admin-text);
}
body.admin-ui :where(.privacy-banner p, .privacy-choice small, .privacy-dialog__panel > p:last-child) {
  color: var(--admin-muted);
}
body.admin-ui :where(.privacy-banner a, .privacy-link-button, .privacy-dialog__close) { color: var(--admin-text); }
body.admin-ui .privacy-dialog__close { border-color: var(--admin-line-strong); }
body.admin-ui .privacy-choice { border-color: var(--admin-line); }

/*
 * Theme-completeness sweep.
 * Feature styles predate the shared appearance switch and retain dark fallbacks
 * for public rendering. Every operational surface is normalised here so the
 * signed-in Light/Dark choice is the single source of truth. Media, map frames,
 * customer-brand previews and semantic warning states intentionally keep their
 * own colours.
 */
body.admin-ui ::selection {
  background: var(--admin-accent-soft);
  color: var(--admin-text);
}
body.admin-ui .nav-cta:hover {
  border-color: var(--admin-accent);
  background: var(--admin-accent);
  color: var(--admin-accent-ink);
}

/* Customer map manager and analytics. */
body.admin-ui :where(
  .map-analytics__ranges,
  .map-analytics__locked,
  .map-analytics__metric,
  .map-analytics__panel,
  .map-branding__locked,
  .map-place-image,
  .map-image-dropzone,
  .image-cropper,
  .map-flight__toggle,
  .map-flight__stops,
  .map-flight-stop,
  .map-flight-stop__controls button
) {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
  color: var(--admin-text);
  box-shadow: none;
}
body.admin-ui :where(.map-analytics__locked, .image-cropper) { border-color: var(--admin-accent); }
body.admin-ui .map-analytics__ranges button { color: var(--admin-muted); }
body.admin-ui .map-analytics__ranges button.active {
  background: var(--admin-accent);
  color: var(--admin-accent-ink);
}
body.admin-ui :where(.map-analytics__metric strong, .map-analytics__locked h3) { color: var(--admin-text); }
body.admin-ui .map-analytics__day:hover::after {
  background: var(--admin-surface-raised);
  color: var(--admin-text);
  box-shadow: var(--admin-shadow);
}
body.admin-ui .map-preview-lighting {
  border-color: var(--admin-line);
  background: var(--admin-surface);
  color: var(--admin-text);
  box-shadow: none;
}
body.admin-ui .map-preview-lighting__head > p,
body.admin-ui .map-lighting__choices small,
body.admin-ui .map-lighting__status { color: var(--admin-muted); }
body.admin-ui .map-preview-lighting__head .eyebrow { color: var(--admin-accent); }
body.admin-ui .map-lighting__choices span {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}
body.admin-ui .map-lighting__choices input:checked + span {
  border-color: var(--admin-accent);
  background: var(--admin-accent-soft);
  box-shadow: 0 0 0 3px var(--admin-accent-soft);
}
body.admin-ui .map-lighting__choices input:focus-visible + span { outline-color: var(--admin-accent); }
body.admin-ui :where(
  .map-place-form label span,
  .map-branding__form label span,
  .map-flight header > p:last-child,
  .map-flight__toggle small,
  .map-flight__empty,
  .map-manager-card__managed
) { color: var(--admin-muted); }
body.admin-ui :where(
  .map-place-form label,
  .map-branding__form label,
  .map-flight__settings > label,
  .map-flight-stop__orbit
) { color: var(--admin-text) !important; }
body.admin-ui :where(.map-place-image, .image-cropper__frame) { background: var(--admin-input); }
body.admin-ui .map-place-image {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
}
body.admin-ui .map-place-image button {
  border-color: var(--admin-line);
  background: var(--admin-surface);
  color: var(--admin-danger);
}
body.admin-ui .map-place-image button:hover { background: var(--admin-danger-soft); }
body.admin-ui .map-image-dropzone {
  border-color: var(--admin-line-strong);
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}
body.admin-ui .map-image-dropzone:hover,
body.admin-ui .map-image-dropzone.is-dragging {
  border-color: var(--admin-accent);
  background: var(--admin-accent-soft);
}
body.admin-ui .map-place-media__head > strong {
  background: var(--admin-accent-soft);
  color: var(--admin-accent);
}
body.admin-ui .map-flight__stops { border-color: var(--admin-line-strong); }
body.admin-ui .map-flight__stops.is-dragging {
  border-color: var(--admin-accent);
  background: var(--admin-accent-soft);
}
body.admin-ui .map-flight-stop__order {
  background: var(--admin-accent);
  color: var(--admin-accent-ink);
}
body.admin-ui .map-flight-stop__controls button:last-child { color: var(--admin-danger); }
body.admin-ui :where(.map-manager-card__actions button, .map-catalog-result) {
  border-color: var(--admin-line);
  color: var(--admin-text);
}
body.admin-ui .map-catalog-result > button:hover {
  background: var(--admin-accent);
  color: var(--admin-accent-ink);
}

/* Customer and catalogue cards. */
body.admin-ui :where(
  .customer-auth form,
  .customer-map-card,
  .map-product-card,
  .catalogue-admin__toolbar,
  .catalogue-item-row,
  .catalogue-admin__editor,
  .catalogue-location-map,
  .catalogue-admin__images figure
) {
  border-color: var(--admin-line);
  background: var(--admin-surface);
  color: var(--admin-text);
}
body.admin-ui :where(
  .catalogue-item-row > img,
  .catalogue-item-row__blank,
  .catalogue-admin__images figure,
  .catalogue-location-map__empty
) { background: var(--admin-surface-raised); }
body.admin-ui .catalogue-item-row__blank { color: var(--admin-muted); }
body.admin-ui .catalogue-admin__images button {
  border-color: var(--admin-line-strong);
  background: var(--admin-input);
  color: var(--admin-text);
}
body.admin-ui .catalogue-admin__images button.is-remove { color: var(--admin-danger); }

/* Customer administration. Keep widget palette swatches/previews untouched. */
body.admin-ui :where(
  .map-admin__create-map,
  .map-admin__template-flight,
  .map-admin__map-source,
  .map-admin__built-source,
  .map-admin__widget-presets button
) {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}
body.admin-ui :where(
  .map-admin__business-create > div:first-child p:last-child,
  .map-admin__business-search > header > p,
  .map-admin__prospect-status,
  .map-admin__business-create label small,
  .map-admin__widget-theme > header > p,
  .map-admin__source-summary small,
  .map-admin__built-source small,
  .map-admin__source-controls > label:first-child,
  .map-admin__source-changed
) { color: var(--admin-muted); }
body.admin-ui :where(.map-admin__widget-theme h4, .map-admin__built-source strong) { color: var(--admin-text); }
body.admin-ui .map-admin__template-options,
body.admin-ui .map-admin__widget-theme { border-color: var(--admin-line); }
body.admin-ui .map-admin__widget-presets button:hover,
body.admin-ui .map-admin__widget-presets button[aria-pressed="true"] {
  border-color: var(--admin-accent);
  box-shadow: 0 0 0 2px var(--admin-accent-soft);
}
body.admin-ui .map-admin__esri-toggle {
  border-color: var(--admin-accent);
  background: var(--admin-accent-soft);
}
body.admin-ui .map-admin__state.is-archived {
  background: var(--admin-warning-soft);
  color: var(--admin-warning);
}
body.admin-ui .button--danger {
  border-color: var(--admin-danger);
  background: var(--admin-danger-soft);
  color: var(--admin-danger);
}
body.admin-ui .button--danger:hover {
  border-color: var(--admin-danger);
  background: var(--admin-danger);
  color: var(--admin-surface);
}

/* Map register tables. */
body.admin-ui :where(
  .map-register__summary div,
  .map-register__toolbar,
  .map-register__table
) {
  border-color: var(--admin-line);
  background: var(--admin-surface);
  color: var(--admin-text);
}
body.admin-ui .map-register__table-head {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
  color: var(--admin-muted);
}
body.admin-ui .map-register__row { border-color: var(--admin-line); }
body.admin-ui .map-register__row:hover { background: var(--admin-surface-raised); }
body.admin-ui :where(.map-register__source-badge, .map-register__gallery-badge) {
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}
body.admin-ui :where(.map-register__source-badge.is-esri, .map-register__gallery-badge.is-live) {
  background: var(--admin-accent-soft);
  color: var(--admin-accent) !important;
}
body.admin-ui :where(.map-register__row.is-unassigned, .map-register__row.is-gallery-previous) {
  background: var(--admin-warning-soft);
}
body.admin-ui .map-register__row.is-gallery-live { background: var(--admin-accent-soft); }
body.admin-ui :where(.map-register__unassigned-state strong, .map-register__gallery-badge.is-previously) {
  color: var(--admin-warning) !important;
}
body.admin-ui .map-register__gallery-badge.is-previously { background: var(--admin-warning-soft); }

/* Campaign manager application chrome. Photography and map previews stay literal. */
body.admin-ui :where(.campaign-admin label, .campaign-admin__catalogue-builder label) { color: var(--admin-muted); }
body.admin-ui :where(.campaign-admin select option, .campaign-admin__catalogue-builder select option) {
  background: var(--admin-input);
  color: var(--admin-text);
}
body.admin-ui :where(
  .campaign-admin input::placeholder,
  .campaign-admin textarea::placeholder,
  .campaign-admin__catalogue-builder input::placeholder,
  .campaign-admin__catalogue-builder textarea::placeholder
) { color: var(--admin-muted); }
body.admin-ui :where(
  .campaign-admin__prospect-search p,
  .campaign-admin__prospect-media > header > p,
  .campaign-admin__catalogue-builder > header > p,
  .campaign-admin__search-attribution,
  .campaign-admin__prospect-gallery small,
  .campaign-admin__licensed-images small,
  .campaign-admin__customer-summary span,
  .campaign-admin__capture-workbench p
) { color: var(--admin-muted); }
body.admin-ui :where(
  .campaign-admin__prospect-results > section > h3,
  .campaign-admin__search-attribution a,
  .campaign-admin__place-fallback summary,
  .campaign-admin__licensed-images a,
  .campaign-admin__capture-workbench [data-campaign-image-status-close],
  .campaign-admin__capture-workbench [data-campaign-image-status-wide]
) { color: var(--admin-accent); }
body.admin-ui :where(
  .campaign-place-choice,
  .campaign-admin__prospect-gallery article,
  .campaign-admin__builder-step,
  .campaign-admin__place-fallback,
  .campaign-admin__builder-actions,
  .campaign-admin__licensed-images article,
  .campaign-admin__customer-summary,
  .campaign-admin__capture-workbench,
  .campaign-admin__capture-workbench article
) {
  border-color: var(--admin-line);
  background: var(--admin-surface-raised);
  color: var(--admin-text);
}
body.admin-ui .campaign-admin__builder-actions,
body.admin-ui .campaign-admin__customer-summary { border-color: var(--admin-accent); }
body.admin-ui .campaign-place-choice:hover,
body.admin-ui .campaign-admin__licensed-images button { border-color: var(--admin-accent); }
body.admin-ui .campaign-admin__licensed-images button { color: var(--admin-accent); }
body.admin-ui .campaign-admin__builder-step > div:first-child > span {
  background: var(--admin-accent);
  color: var(--admin-accent-ink);
}

body.admin-ui .map-manager-disclosure {
  display: block;
  overflow: hidden;
  padding: 0;
  border: 1px solid var(--admin-line);
  border-radius: 12px;
  background: var(--admin-surface);
  box-shadow: none;
}
body.admin-ui .map-manager-disclosure > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 16px 18px;
  color: var(--admin-text);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
body.admin-ui .map-manager-disclosure > summary::-webkit-details-marker { display: none; }
body.admin-ui .map-manager-disclosure > summary:hover { background: color-mix(in srgb, var(--admin-accent) 5%, transparent); }
body.admin-ui .map-manager-disclosure > summary:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--admin-accent) 35%, transparent);
  outline-offset: -3px;
}
body.admin-ui .map-manager-disclosure > summary > span:first-child { display: grid; gap: 3px; }
body.admin-ui .map-manager-disclosure > summary small {
  color: var(--admin-accent);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .12em;
}
body.admin-ui .map-manager-disclosure > summary strong { font-size: 16px; }
body.admin-ui .map-manager-disclosure__action {
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--admin-muted);
  font-size: 11px;
  font-weight: 700;
}
body.admin-ui .map-manager-disclosure__action > span:nth-child(2) { display: none; }
body.admin-ui .map-manager-disclosure__action b {
  color: var(--admin-accent);
  font-size: 20px;
  font-weight: 500;
  line-height: 1;
  transition: transform .18s ease;
}
body.admin-ui .map-manager-disclosure[open] > summary { border-bottom: 1px solid var(--admin-line); }
body.admin-ui .map-manager-disclosure[open] .map-manager-disclosure__action > span:first-child { display: none; }
body.admin-ui .map-manager-disclosure[open] .map-manager-disclosure__action > span:nth-child(2) { display: inline; }
body.admin-ui .map-manager-disclosure[open] .map-manager-disclosure__action b { transform: rotate(180deg); }
body.admin-ui .map-manager-disclosure__body { padding: 24px; }
body.admin-ui .map-manager-disclosure__body--embed {
  display: grid;
  grid-template-columns: minmax(260px, .72fr) minmax(420px, 1.28fr);
  gap: clamp(30px, 6vw, 90px);
  align-items: start;
}
/* One spacing rule for every top-level panel, including bookings and rental policy. */
body.admin-ui .map-manager > .map-manager-disclosure { margin-bottom: 18px; }
body.admin-ui .map-holiday-business .map-manager-disclosure__body { padding: 0; }
body.admin-ui .map-holiday-business .map-place-form { border: 0; border-radius: 0; }
body.admin-ui .map-holiday-business .map-manager__account { display: none; }
body.admin-ui .map-manager-disclosure.map-flight { gap: 0; margin-top: 24px; }
body.admin-ui .map-manager-disclosure.map-manager__embed {
  margin-top: 70px;
  padding-top: 0;
  border-top: 1px solid var(--admin-line);
}

@media (max-width: 900px) {
  body.admin-ui .map-manager-disclosure__body--embed { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
  body.admin-ui .map-manager-disclosure > summary { padding: 14px; }
  body.admin-ui .map-manager-disclosure__action > span { display: none !important; }
  body.admin-ui .map-manager-disclosure__body { padding: 18px 14px; }
}

body.admin-ui .admin-password {
  margin-bottom: 18px;
  border-radius: 10px;
}
body.admin-ui .admin-password summary { padding: 12px 16px; color: var(--admin-muted); font-size: 13px; }
body.admin-ui .admin-password[open] summary { border-color: var(--admin-line); }
body.admin-ui .admin-password form { padding: 18px; }

body.admin-ui .admin-login {
  min-height: 100vh;
  padding: 110px 20px 60px;
  background: var(--admin-bg);
}
body.admin-ui .admin-login form {
  gap: 15px;
  width: min(100%, 460px);
  padding: clamp(28px, 4vw, 44px);
  border: 1px solid var(--admin-line);
  border-radius: 14px;
  background: var(--admin-surface);
  box-shadow: var(--admin-shadow);
}
body.admin-ui .admin-login h1 {
  margin: 0 0 14px;
  font-size: clamp(40px, 6vw, 58px);
  line-height: 1;
  letter-spacing: -.04em;
}

@media (max-width: 980px) {
  body.admin-ui .nav-toggle {
    display: block !important;
    color: var(--admin-text);
    background: var(--admin-surface);
    border-color: var(--admin-line);
  }
  body.admin-ui .main-nav {
    gap: 4px;
    padding: 96px 20px 30px;
    background: var(--admin-bg);
    font-family: var(--sans);
    font-size: 20px;
  }
  body.admin-ui .main-nav > a:not(.nav-cta),
  body.admin-ui .nav-dropdown__toggle { width: 100%; font-size: 20px; }
  body.admin-ui .nav-dropdown__menu {
    margin-top: 6px;
    padding: 8px;
    border: 1px solid var(--admin-line);
    border-radius: 10px;
    background: var(--admin-surface);
  }
  body.admin-ui .nav-dropdown__menu a,
  body.admin-ui .nav-dropdown__menu button { font-size: 15px; }
  body.admin-ui .main-nav > .admin-theme-switch {
    display: grid;
    grid-template-columns: 1fr 1fr;
    width: 100%;
    margin: 10px 0 0;
    padding-top: 12px;
    border-top: 1px solid var(--admin-line);
  }
  body.admin-ui .map-admin__workspace,
  body.admin-ui .catalogue-admin__workspace { grid-template-columns: 1fr; }
}

@media (max-width: 620px) {
  body.admin-ui .site-header,
  body.admin-ui .site-header.scrolled { height: 68px; padding-inline: 16px; }
  body.admin-ui .brand-logo { width: 184px; height: 40px; }
  body.admin-ui :where(.map-admin, .campaign-admin, .catalogue-admin, .customer-account, .map-manager) { padding: 96px 16px 52px; }
  body.admin-ui :where(.map-admin__header, .campaign-admin__header, .catalogue-admin__header) h1,
  body.admin-ui .map-admin header h1 { font-size: 40px; }
  body.admin-ui .map-admin__create,
  body.admin-ui .map-admin__business-create,
  body.admin-ui .campaign-admin__field-pair,
  body.admin-ui .campaign-admin__capture-workbench { grid-template-columns: 1fr; }
  body.admin-ui .campaign-admin__viewer { aspect-ratio: 4 / 3; }
  body.admin-ui .catalogue-admin__toolbar-actions { display: grid; }
  body.admin-ui .admin-password form { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  body.admin-ui,
  body.admin-ui * { scroll-behavior: auto; transition-duration: .01ms !important; }
}
