/* FleetDV v100 — canonical semantic theme architecture.
   Experiences supply values; shared components consume the same contract. */
:root,
body[data-experience="classic"] {
  --app-bg:#f4f7f5;--section-bg:#ffffff;--card-bg:#ffffff;--card-elevated-bg:#f5f8f6;--metric-bg:#eef3f0;--interactive-bg:#ffffff;
  --text-primary:#16201d;--text-secondary:#50605a;--text-muted:#6d7b76;--text-disabled:#9ca6a2;
  --border-subtle:#e4eae7;--border-default:#d5ded9;--accent:#197457;--positive:#167456;--negative:#bd3d3d;--warning:#986a12;--info:#326ca8;
  --count-badge-bg:#303b37;--count-badge-text:#f7faf8;
  --theme-shadow:0 8px 24px rgba(24,45,37,.07);
}
body[data-experience="modern"] {
  --app-bg:#f3f7fb;--section-bg:#ffffff;--card-bg:#ffffff;--card-elevated-bg:#f5f8fc;--metric-bg:#edf3f9;--interactive-bg:#ffffff;
  --text-primary:#142334;--text-secondary:#506477;--text-muted:#708194;--text-disabled:#9ba8b5;
  --border-subtle:#e4ebf2;--border-default:#d6e0ea;--accent:#2c7be5;--positive:#1e8564;--negative:#c74747;--warning:#a16b0d;--info:#3279ca;
  --theme-shadow:0 10px 28px rgba(27,54,82,.08);
}
body[data-experience="premium"] {
  --app-bg:#f3f6fb;--section-bg:#ffffff;--card-bg:#ffffff;--card-elevated-bg:#f5f7fc;--metric-bg:#edf2fa;--interactive-bg:#ffffff;
  --text-primary:#12233a;--text-secondary:#4d617a;--text-muted:#6e8097;--text-disabled:#9aa7b7;
  --border-subtle:#e2e8f1;--border-default:#d2dce8;--accent:#246fe8;--positive:#178066;--negative:#c3414b;--warning:#9b6911;--info:#286fc5;
  --count-badge-bg:#293842;--count-badge-text:#f4f8fc;
  --theme-shadow:0 14px 34px rgba(20,45,80,.09);
}
html[data-appearance="dark"] body[data-experience="classic"] {
  --app-bg:#0d1512;--section-bg:#141f1b;--card-bg:#182520;--card-elevated-bg:#1e2d27;--metric-bg:#22332c;--interactive-bg:#1b2a24;
  --text-primary:#f1f6f3;--text-secondary:#c2cec8;--text-muted:#9fafaa;--text-disabled:#72807a;
  --border-subtle:#26362f;--border-default:#34483f;--accent:#52c99c;--positive:#4fcca0;--negative:#ff8585;--warning:#e4b75d;--info:#7db5ee;
  --count-badge-bg:#d9e7e0;--count-badge-text:#17231e;
  --theme-shadow:0 12px 30px rgba(0,0,0,.24);
}
html[data-appearance="dark"] body[data-experience="modern"] {
  --app-bg:#101820;--section-bg:#16222c;--card-bg:#1a2834;--card-elevated-bg:#20313f;--metric-bg:#243846;--interactive-bg:#1e303d;
  --text-primary:#f3f7fa;--text-secondary:#c4d0d9;--text-muted:#9babb7;--text-disabled:#71828e;
  --border-subtle:#293b49;--border-default:#3a5163;--accent:#64a6ff;--positive:#58cda7;--negative:#ff8c91;--warning:#e7bb63;--info:#82b9f2;
  --theme-shadow:0 14px 32px rgba(0,0,0,.25);
}
html[data-appearance="dark"] body[data-experience="premium"] {
  --app-bg:#09111d;--section-bg:#111c2b;--card-bg:#162338;--card-elevated-bg:#1b2b43;--metric-bg:#20334d;--interactive-bg:#192941;
  --text-primary:#f4f7fc;--text-secondary:#c5d0df;--text-muted:#9daec2;--text-disabled:#71839a;
  --border-subtle:#23344b;--border-default:#344a67;--accent:#78aaff;--positive:#5ad1aa;--negative:#ff8d98;--warning:#e9bd69;--info:#83b7f3;
  --count-badge-bg:#dbe7f7;--count-badge-text:#13243a;
  --theme-shadow:0 16px 38px rgba(0,0,0,.3);
}

body {
  background:var(--app-bg)!important;color:var(--text-primary);
  --background:var(--app-bg);--surface:var(--card-bg);--surface-soft:var(--section-bg);--surface-elevated:var(--card-elevated-bg);--surface-strong:var(--metric-bg);
  --ink:var(--text-primary);--text:var(--text-primary);--muted:var(--text-muted);--line:var(--border-default);--border:var(--border-default);
  --green:var(--accent);--red:var(--negative);--information:var(--info);--shadow:var(--theme-shadow);--fl-shadow:var(--theme-shadow);
}
.app-shell,.workspace,.author-footer{background:var(--app-bg)!important;color:var(--text-primary)}

/* Shared surfaces */
:is(.panel,.metric-card,.mini-metric,.feature-panel,.fleet-panel,.vehicle-card,.fleet-pulse-card,.trip-action-card,.booking-mobile-card,.bookings-data-surface,.expense-vehicle-card,.vehicle-expense-panel,.expense-category-panel,.expense-transactions-panel,.maintenance-card,.maintenance-vehicle-card,.goal-card,.report-card,.loan-card,.mileage-card,.decision-card,.vehicle-decision-card,.annual-kpi-card,.annual-month-card,.annual-highlight-card,.annual-trend-panel,.annual-month-panel,.annual-vehicle-panel,.annual-vehicle-card,.annual-detail-table,.breakdown-panel,.calculator-panel,.reconciliation-card,.breakeven-card,.sidebar-card,.calendar-board,.calendar-mini-month,.account-identity,.account-profile-card,.account-appearance-card,.account-plan-card,.account-support-card,.account-danger-card,.vehicle-profile,.vehicle-profile-section,.setup-launchpad,.setup-step,.auth-card,.loading-card,.modal,.pro-upgrade-modal,.calendar-booking-modal,.admin-stat,.admin-loading-card) {
  background:var(--card-bg)!important;background-image:none!important;color:var(--text-primary)!important;border-color:var(--border-default)!important;box-shadow:var(--theme-shadow);
}
:is(.vehicle-card-facts>div,.expense-metric,.expense-vehicle-metrics>div,.maintenance-summary-grid>div,.loan-facts>div,.break-stats>div,.stat-pairs>div,.pricing-numbers,.pricing-signal-metrics>span,.calendar-booking-facts>div,.annual-vehicle-metrics>div,.report-card,.mini-metric) {
  background:var(--metric-bg)!important;background-image:none!important;color:var(--text-primary)!important;border:1px solid var(--border-subtle)!important;
}
:is(.annual-highlights article,.annual-mobile-month>div>span,.reset-data-safe-note,.expense-transaction-group>summary,.global-period-selectors){background:var(--card-elevated-bg)!important;color:var(--text-primary)!important;border-color:var(--border-subtle)!important}
:is(h1,h2,h3,h4,h5,strong,b,dd,.metric-value,.profit-value,.service-event-cost,.calendar-day-number,.data-table td) { color:var(--text-primary); }
:is(p,small,dt,.metric-label,.section-toolbar p,.panel-head p,.service-event-meta,.calendar-availability,.empty-state p) { color:var(--text-secondary); }
:is(.overline,.mini-label,.chart-label,.legend,.data-table th,.annual-financial-table th) { color:var(--text-muted); }

/* Inputs, menus, modals, tables and charts */
:is(input,select,textarea,.secondary-button,.more-button,.experience-menu-options button,.calendar-filter select,.profit-vehicle-filter select,.mobile-period-button,.experience-options button,.experience-command-trigger) {
  background:var(--interactive-bg)!important;color:var(--text-primary)!important;border-color:var(--border-default)!important;
}
:is(input,textarea)::placeholder{color:var(--text-muted)!important;opacity:1}
:is(input,select,textarea,button,a):focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 48%,transparent);outline-offset:2px}
:is(.modal,.account-panel,.experience-profile-menu,.experience-command-palette>section){background:var(--card-bg)!important;color:var(--text-primary)!important;border-color:var(--border-default)!important;opacity:1!important;backdrop-filter:none!important}
:is(.data-table,.annual-financial-table,.fleet-table-wrap,.annual-table-wrap){background:var(--card-bg)!important;color:var(--text-primary)!important;border-color:var(--border-default)!important}
:is(.data-table thead,.annual-financial-table thead){background:var(--card-elevated-bg)!important}
:is(.data-table tr,.annual-financial-table tr,.loan-payment-row,.expense-transaction-row,.service-event){border-color:var(--border-subtle)!important}
:is(.data-table tbody tr,.annual-financial-table tbody tr):hover{background:var(--card-elevated-bg)!important}
:is(.chart-surface,.chart-wrap,.annual-chart,.trend-chart){background:var(--card-bg)!important;color:var(--text-primary)!important}
:is(.chart-grid line,.gridline){stroke:var(--border-subtle)!important}
:is(.chart-axis text,.chart-label,.chart-legend){fill:var(--text-muted)!important;color:var(--text-muted)!important}
:is(.chart-tooltip,.tooltip){background:var(--card-elevated-bg)!important;color:var(--text-primary)!important;border-color:var(--border-default)!important}
.positive{color:var(--positive)!important}.negative{color:var(--negative)!important}

/* Vehicle imagery is bounded by variant and can never cover adjacent content. */
.fleet-vehicle-image{position:relative;display:block;overflow:hidden;max-width:100%;flex:none}
.fleet-vehicle-image img{display:block;width:100%;height:100%;object-fit:cover}
.fleet-vehicle-image--hero{width:100%;aspect-ratio:16/9}.fleet-vehicle-image--card{width:100%;aspect-ratio:16/9}
.fleet-vehicle-image--thumbnail{width:88px!important;min-width:88px;max-width:88px;aspect-ratio:4/3}
.fleet-vehicle-image--compact{width:64px!important;min-width:64px;max-width:64px;aspect-ratio:1}

/* Overview bookings: structural columns prevent image/text collision. */
.upcoming-booking-row{display:grid!important;grid-template-columns:88px minmax(0,1fr) minmax(96px,auto)!important;align-items:center;gap:14px;min-width:0;padding:12px 8px!important}
.upcoming-booking-row>.upcoming-vehicle-image{grid-column:1;position:relative!important;inset:auto!important;width:88px!important;height:66px!important;min-width:88px;max-width:88px}
.upcoming-booking-copy{grid-column:2;min-width:0;display:grid;gap:3px}
.upcoming-booking-copy :is(strong,span,small){display:block;min-width:0;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere;color:var(--text-primary)}
.upcoming-booking-copy small{color:var(--text-secondary)}
.upcoming-booking-result{grid-column:3;display:grid;justify-items:end;gap:6px;min-width:90px}

/* Pricing recommendations use useful width, never three squeezed columns. */
.pricing-list{display:grid!important;grid-template-columns:repeat(2,minmax(320px,1fr))!important;gap:14px!important}
.pricing-signal-card{display:grid!important;grid-template-columns:64px minmax(0,1fr)!important;gap:12px 14px!important;padding:16px!important;background:var(--card-bg)!important;border:1px solid var(--border-default)!important;border-radius:14px}
.pricing-signal-card>.pricing-vehicle-image{grid-column:1;grid-row:1;width:64px!important;height:64px!important}
.pricing-signal-head{grid-column:2;grid-row:1;min-width:0}
.pricing-signal-head strong{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere}
.pricing-signal-card>.pricing-signal-metrics,.pricing-signal-card>p{grid-column:1/-1}
.pricing-signal-metrics{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
.pricing-signal-metrics>span{display:flex!important;align-items:baseline;justify-content:space-between;gap:8px;padding:10px!important}

/* Expense, maintenance, loan, vehicle and break-even internals share dark-native layers. */
:is(.vehicle-expense-panel,.expense-vehicle-card,.maintenance-card-hero,.maintenance-card-summary,.maintenance-timeline,.loan-card,.breakeven-card,.vehicle-card-body){background:var(--card-bg)!important;background-image:none!important;color:var(--text-primary)!important}
:is(.expense-group-rows,.expense-transaction-group>summary,.maintenance-upcoming,.service-event-source,.loan-history-head){background:var(--card-elevated-bg)!important;color:var(--text-primary)!important;border-color:var(--border-subtle)!important}
.maintenance-card-media{background:var(--metric-bg)!important}.maintenance-card-hero{border-color:var(--border-subtle)!important}
.break-stats .break-total{background:color-mix(in srgb,var(--accent) 18%,var(--card-elevated-bg))!important}
.break-stats .break-total :is(span,strong){color:var(--text-primary)!important}

/* True dark calendar cells and explicit, non-color-only booking labels. */
.calendar-board{overflow:auto}.calendar-board-head,.calendar-weekdays{background:var(--card-elevated-bg)!important;border-color:var(--border-default)!important}
.calendar-grid{background:var(--border-default)!important;gap:1px}
.calendar-day{min-height:132px;background:var(--section-bg)!important;color:var(--text-primary)!important;border:0!important}
.calendar-day.outside{background:var(--app-bg)!important;color:var(--text-disabled)!important;opacity:1}
.calendar-day.open-day{background:color-mix(in srgb,var(--positive) 4%,var(--section-bg))!important}
.calendar-day.partially-booked{background:color-mix(in srgb,var(--info) 7%,var(--section-bg))!important}
.calendar-day.fully-booked{background:color-mix(in srgb,var(--info) 11%,var(--section-bg))!important}
.calendar-day.today{box-shadow:inset 0 0 0 2px var(--accent)}
.calendar-event{background:color-mix(in srgb,var(--info) 18%,var(--card-elevated-bg))!important;color:var(--text-primary)!important;border:1px solid color-mix(in srgb,var(--info) 38%,var(--border-default))!important}
.calendar-event.tone-1{background:color-mix(in srgb,var(--positive) 17%,var(--card-elevated-bg))!important;border-color:color-mix(in srgb,var(--positive) 38%,var(--border-default))!important}
.calendar-event.tone-2{background:color-mix(in srgb,var(--warning) 17%,var(--card-elevated-bg))!important;border-color:color-mix(in srgb,var(--warning) 38%,var(--border-default))!important}
.calendar-event.tone-3{background:color-mix(in srgb,var(--negative) 15%,var(--card-elevated-bg))!important;border-color:color-mix(in srgb,var(--negative) 34%,var(--border-default))!important}
.calendar-event b{background:color-mix(in srgb,var(--card-bg) 74%,transparent)!important;color:inherit!important}
.calendar-more{border:0;background:transparent!important;color:var(--accent)!important;text-align:left;padding:2px 4px;font-size:9px;font-weight:800;cursor:pointer}
.calendar-mini-month,.calendar-mini-month :is(button,span,i){background-color:var(--card-bg)!important;color:var(--text-primary)!important;border-color:var(--border-default)!important}
.calendar-mini-grid>span.open-day{background:var(--metric-bg)!important}.calendar-mini-grid>span.partially-booked,.calendar-mini-grid>span.fully-booked{background:color-mix(in srgb,var(--info) 22%,var(--metric-bg))!important}
.calendar-day-detail-list{display:grid;gap:8px;margin-top:16px}
.calendar-day-detail-booking{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:12px;border:1px solid var(--border-default);border-radius:11px;background:var(--card-elevated-bg);color:var(--text-primary);text-align:left;cursor:pointer}
.calendar-day-detail-booking>b{display:grid;place-items:center;min-width:30px;min-height:30px;border-radius:8px;background:var(--metric-bg);color:var(--text-primary)}
.calendar-day-detail-booking>span{display:grid;gap:2px;min-width:0}.calendar-day-detail-booking small{color:var(--text-secondary);overflow-wrap:anywhere}.calendar-day-detail-booking em{font-style:normal;font-weight:800;color:var(--text-primary)}

/* Compact dark empty states. */
.empty-state{background:var(--card-elevated-bg)!important;color:var(--text-primary)!important;border-color:var(--border-subtle)!important}
.empty-state :is(p,small){color:var(--text-secondary)!important}

@media(max-width:900px){.pricing-list{grid-template-columns:1fr!important}}
@media(max-width:780px){
  .upcoming-booking-row{grid-template-columns:72px minmax(0,1fr)!important;align-items:start}
  .upcoming-booking-row>.upcoming-vehicle-image{width:72px!important;height:58px!important;min-width:72px;max-width:72px}
  .upcoming-booking-result{grid-column:2;grid-row:2;display:flex;align-items:center;justify-content:space-between;justify-items:initial;min-width:0}
  .calendar-board{max-width:100%;overscroll-behavior-x:contain}.calendar-day{min-height:116px;padding:7px}
}
@media(max-width:430px){
  .pricing-signal-card{grid-template-columns:56px minmax(0,1fr)!important;padding:13px!important}.pricing-signal-card>.pricing-vehicle-image{width:56px!important;height:56px!important}
  .pricing-signal-metrics{grid-template-columns:1fr!important}
  .calendar-booking-identity{grid-template-columns:1fr}.calendar-day-detail-booking{grid-template-columns:auto minmax(0,1fr)}.calendar-day-detail-booking em{grid-column:2}
}
