/* Theme contrast contract. Loaded last.
   Surfaces follow tokens. :where() is not used: it loses to multi-class light colors. */

:root{
  --surface:var(--bg-elevated,#fff);
  --surface-2:var(--bg-subtle,#f4f7f5);
  --primary:var(--pine,#123d32);
  --primary-text:#fff;
  --brand-text:var(--pine,#123d32);
  --input-bg:var(--bg-elevated,#fff);
  --input-text:var(--text,#17231f);
  --hover:#e7f3ec;
  --disabled:#5c6e66;
  --warning:#7a5a12;
  --info:#1d4f91;
  --danger-bg:#fde8e8;
  --success-bg:#e4f5eb;
  --warning-bg:#fff4d6;
  --info-bg:#e7f0fb;
  --surface-soft:var(--surface-2);
}

html[data-theme=dark]{
  --bg:#0e1714;
  --surface:#17261f;
  --surface-2:#20342b;
  --text:#f4fbf7;
  --text-muted:#c9ddd2;
  --border:#6d9080;
  --primary:var(--pine);
  --primary-text:#fff;
  --brand-text:var(--pine-2,#8ed0b2);
  --input-bg:#10201a;
  --input-text:#f4fbf7;
  --hover:#274437;
  --disabled:#b7cfc4;
  --danger:#ffb4ae;
  --success:#9be7c0;
  --warning:#ffe08a;
  --info:#c5dcff;
  --danger-bg:#4a2424;
  --success-bg:#163528;
  --warning-bg:#3d3318;
  --info-bg:#1a2c44;
  --bg-elevated:var(--surface);
  --bg-subtle:var(--surface-2);
  --ink:var(--text);
  --muted:var(--text-muted);
  --line:var(--border);
  --mist:var(--surface-2);
  --white:#fff;
  --eyebrow:#e0c07a;
  --surface-soft:var(--surface-2);
  --control-bg:#182a22;
  --control-fg:var(--input-text);
  --control-border:var(--border);
  --link-fg:var(--brand-text);
  --link-hover:#fff;
  --sidebar-control-bg:var(--surface);
  --sidebar-control-fg:var(--text);
  --sidebar-control-hover:var(--hover);
  --sidebar-caption:var(--text);
  --sidebar-caption-muted:var(--text-muted);
  color-scheme:dark;
  background:var(--bg);
  color:var(--text);
}

html[data-theme=dark] body,
html[data-theme=dark] .app-frame,
html[data-theme=dark] .app-frame-main,
html[data-theme=dark] .workspace,
html[data-theme=dark] .management-shell,
html[data-theme=dark] .management-main{
  background:var(--bg);
  color:var(--text);
}

/* Page canvases that hardcoded a light gradient. */
html[data-theme=dark] :is(
  .farm-workspace,
  .inventory-workspace,
  .procurement-workspace,
  .sales-workspace,
  .compliance-workspace,
  .documents-workspace,
  .planning-workspace,
  .production-workspace,
  .workforce-workspace,
  .assets-workspace,
  .readiness-panel
){
  background:var(--bg) !important;
  color:var(--text);
}

/* Shared surfaces. Featured metrics and brand heroes stay green. */
html[data-theme=dark] :is(
  .surface,
  .metric-card:not(.featured),
  .cc-card,
  .cc-panel,
  .cc-kpis .surface,
  .cc-bottom .surface,
  .readiness-strip,
  .readiness-panel .readiness-strip>div,
  .simple-card,
  .quote-card,
  .hub-card,
  .role-card,
  .plan-card,
  .register-plan-card,
  .roadmap-card,
  .conflict-card,
  .admin-section,
  .roles-section,
  .login-panel,
  .notice-box,
  .dashboard-setup,
  .dashboard-quick,
  .onboarding-step,
  .capacity-strip>div,
  .seed-grid>div,
  .receipt-cards>div,
  .data-list>div,
  .role-grid>div,
  .trace-chain>div,
  .report-catalog>div,
  .session-strip>span,
  .run-list>span,
  .receipt-drawer,
  .procurement-flow,
  .quality-flow,
  .sales-flow,
  .workspace-productivity,
  .record-workspace,
  .record-workspace-sheet,
  .record-workspace-header,
  .record-workspace-status,
  .quick-create-panel,
  .quick-create-chrome,
  .user-menu-popover,
  .user-menu-trigger,
  .user-menu-identity,
  .abos-new-menu,
  .msd-panel,
  .msd-trigger,
  .msd-toolbar,
  .language-flag-menu,
  .language-toggle,
  .language-select,
  .register-guide-card,
  .register-guide-header,
  .entity-delete-panel,
  .row-actions-menu .compact-form,
  .invoice-multi-combo-panel,
  .invoice-multi-combo-toggle,
  .nav-layout-row,
  .offline-shell .conflict-card,
  .register-success-facts>div,
  .ai-window,
  .ai-shell .ai-answer,
  .voice-shell .voice-result .ai-answer,
  dialog
){
  background:var(--surface) !important;
  background-image:none !important;
  color:var(--text);
  border-color:var(--border);
}

html[data-theme=dark] :is(.table-head, .data-table th, .usage-table th, thead th){
  background:var(--surface-2) !important;
  color:var(--text-muted) !important;
  border-color:var(--border);
}
html[data-theme=dark] :is(.data-table td, .usage-table td, .stock-table>div, .ledger-list>div, .document-register-table>div, .plan-table>div, .production-table>div, .workforce-table>div, .cycle-table>div, .sales-table>div){
  color:var(--text);
  border-color:var(--border);
}
html[data-theme=dark] :is(.data-table tbody tr:hover td, .usage-table tbody tr:hover td){
  background:var(--hover);
  color:var(--text);
}

html[data-theme=dark] :is(.surface, .metric-card:not(.featured), .cc-card, .cc-panel, .readiness-strip, .simple-card, .login-panel, .admin-section, .quote-card, .hub-card, .dashboard-setup) :is(h1,h2,h3,h4,p,li,label,legend,dt,dd){
  color:var(--text);
}
html[data-theme=dark] :is(.surface, .metric-card:not(.featured), .cc-card, .readiness-strip, .quote-card, .hub-card) :is(small, .muted, .field-hint, .abos-lead){
  color:var(--text-muted);
}
html[data-theme=dark] :is(.cc-card, .cc-kpis .surface, .metric-card:not(.featured)) strong{
  color:var(--brand-text);
}
html[data-theme=dark] .metric-card:not(.featured) :is(span, small),
html[data-theme=dark] .cc-card :is(span, small),
html[data-theme=dark] .readiness-strip small{
  color:var(--text-muted);
}
html[data-theme=dark] :is(.metric-card:not(.featured) .metric-icon, .farm-code, .dashboard-asset-group>h3 span, .dashboard-empty>span, .dashboard-setup-step>span){
  background:var(--surface-2);
  color:var(--brand-text);
}
html[data-theme=dark] .dashboard-setup-step.is-complete,
html[data-theme=dark] .onboarding-step.done{
  background:var(--success-bg) !important;
  color:var(--success);
  border-color:var(--success);
}
html[data-theme=dark] .progress-cell{
  background:var(--surface-2) !important;
}
html[data-theme=dark] .progress-cell small{color:var(--text)}

html[data-theme=dark] :is(input, select, textarea):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]){
  background-color:var(--input-bg) !important;
  color:var(--input-text) !important;
  border-color:var(--border);
}
html[data-theme=dark] :is(input, textarea)::placeholder{
  color:var(--text-muted);
  opacity:1;
}
html[data-theme=dark] input:-webkit-autofill,
html[data-theme=dark] textarea:-webkit-autofill,
html[data-theme=dark] select:-webkit-autofill{
  -webkit-text-fill-color:var(--input-text);
  caret-color:var(--input-text);
  box-shadow:0 0 0 1000px var(--input-bg) inset;
}
html[data-theme=dark] :is(button, input, select, textarea, .primary-button, .secondary-button):disabled:not([type=checkbox]):not([type=radio]){
  opacity:1;
  color:var(--disabled) !important;
  background:var(--surface-2) !important;
  border-color:var(--border) !important;
}
html:not([data-theme=dark]) :is(button, .primary-button, .secondary-button):disabled{
  opacity:1;
  color:var(--disabled);
  background:var(--surface-2);
  border-color:var(--border);
}

html[data-theme=dark] :is(.secondary-button, a.secondary-button, button.secondary-button, .text-button, a.text-button, .shell-action){
  background:var(--input-bg);
  color:var(--text);
  border-color:var(--border);
}
html[data-theme=dark] :is(.secondary-button, a.secondary-button, button.secondary-button, .text-button):hover,
html[data-theme=dark] :is(.secondary-button, a.secondary-button, button.secondary-button, .text-button):focus-visible{
  background:var(--hover);
  color:var(--text);
}
html[data-theme=dark] .danger-button{
  background:var(--danger-bg);
  color:var(--danger);
  border-color:var(--danger);
}
html[data-theme=dark] .danger-button:hover{background:var(--hover);color:var(--danger)}

html[data-theme=dark] :is(.dashboard-quick nav a, .cc-quick a, nav.dashboard-quick>a){
  background:var(--surface-2);
  color:var(--brand-text);
  border-color:var(--border);
}
html[data-theme=dark] :is(.dashboard-quick nav a, .cc-quick a, nav.dashboard-quick>a):hover,
html[data-theme=dark] :is(.dashboard-quick nav a, .cc-quick a, nav.dashboard-quick>a):focus-visible{
  background:var(--hover);
  color:var(--text);
}
html[data-theme=dark] a:where(:not(.primary-button):not(.secondary-button):not(.danger-button):not(.nav-item):not(.shell-action):not(.cc-card):not(.metric-card)){
  color:var(--link-fg);
}
html[data-theme=dark] a:where(:not(.primary-button):not(.secondary-button):not(.danger-button):not(.nav-item):not(.shell-action)):hover{
  color:var(--link-hover);
}

html[data-theme=dark] :is(
  .sub-status-badge,
  .land-status-badge,
  .state-badge,
  .tenant-chip,
  .status-pill,
  .task-badge,
  .sync-indicator,
  .cc-band
){
  background:var(--surface-2);
  color:var(--text);
  border-color:var(--border);
}
html[data-theme=dark] :is(
  .sub-status-badge.status-active,
  .land-status-badge.status-organic,
  .state-approved,
  .state-badge.sync-status-Succeeded,
  .task-badge.status-completed,
  .task-badge.status-active,
  .sync-indicator[data-state="online"],
  .agri-sync-indicator[data-state=online],
  .severity-low,
  .state-pass
){
  background:var(--success-bg);
  color:var(--success);
  border-color:var(--success);
}
html[data-theme=dark] :is(
  .sub-status-badge.status-grace,
  .sub-status-badge.status-past_due,
  .land-status-badge.status-under_conversion,
  .land-status-badge.status-review_due,
  .state-draft,
  .state-pending_approval,
  .warning-banner,
  .platform-mail-banner,
  .task-badge.status-inprogress,
  .task-badge.status-waiting,
  .task-badge.status-pending,
  .task-badge.priority-high,
  .task-badge.severity-warning,
  .severity-major,
  .severity-high,
  .severity-badge.severity-warning,
  .cc-band-soon,
  .sync-indicator[data-state="pending"],
  .demo-banner
){
  background:var(--warning-bg);
  color:var(--warning);
  border-color:var(--warning);
}
html[data-theme=dark] :is(
  .sub-status-badge.status-suspended,
  .sub-status-badge.status-expired,
  .sub-status-badge.status-cancelled,
  .land-status-badge.status-suspended,
  .error-banner,
  .danger-badge,
  .severity-critical,
  .task-badge.status-escalated,
  .task-badge.status-rejected,
  .task-badge.priority-critical,
  .cc-band-urgent,
  .cc-band-overdue,
  .sync-indicator[data-state="offline"],
  .sync-indicator[data-state="conflict"],
  .state-badge.sync-status-Conflict,
  .state-badge.sync-status-Rejected
){
  background:var(--danger-bg);
  color:var(--danger);
  border-color:var(--danger);
}
html[data-theme=dark] :is(
  .sub-status-badge.status-trial,
  .sync-indicator[data-state="syncing"],
  .task-badge.severity-info
){
  background:var(--info-bg);
  color:var(--info);
  border-color:var(--info);
}

html[data-theme=dark] .platform-admin-context{
  --platform-canvas:var(--bg);
  --platform-card:var(--surface);
  --platform-line:var(--border);
  --platform-accent-soft:var(--surface-2);
}
html[data-theme=dark] :is(.platform-sidebar, .app-frame>.sidebar){
  background:#101a16;
  color:var(--text);
  border-color:var(--border);
}
html[data-theme=dark] .platform-admin-context :is(.surface-header, .pager-row, .table-pagination){
  background:var(--surface);
  color:var(--text);
}
html[data-theme=dark] .nav-layout-title small,
html[data-theme=dark] .entity-delete-heading,
html[data-theme=dark] .ws-ico{
  color:var(--brand-text);
}
html[data-theme=dark] .public-hero-actions :is(.primary-button, a.primary-button){
  background:#fff !important;
  color:var(--pine) !important;
  border-color:#fff !important;
}
html[data-theme=dark] :is(.quality-hero, .subscription-hero){
  background:linear-gradient(120deg,var(--pine),var(--pine-2)) !important;
  color:#fff !important;
}
html[data-theme=dark] :is(.quality-hero, .subscription-hero) :is(h1,h2,h3,p,small,span,strong){
  color:#fff !important;
}
html[data-theme=dark] .metric-card.featured{
  background:var(--card-bg) !important;
  color:var(--text) !important;
  border-color:var(--card-border) !important;
}
html[data-theme=dark] .metric-card.featured :is(strong){
  color:var(--text) !important;
}
html[data-theme=dark] .metric-card.featured :is(span,small){
  color:var(--text-muted) !important;
}
html[data-theme=dark] .farm-map-search-bar input{
  background:transparent !important;
  color:var(--text) !important;
}
html[data-theme=dark] :is(.leaflet-popup-content-wrapper, .leaflet-popup-tip, .leaflet-bar a){
  background:var(--surface) !important;
  color:var(--text) !important;
}

html[data-theme=dark] :is(.procurement-flow span, .sales-flow span, .quality-flow span, .production-flow span, .safety-flow span, .ledger-lock){
  background:var(--success-bg) !important;
  color:var(--success) !important;
}
html[data-theme=dark] :is(.success-banner, .invitation-result, .finished-shell .success-banner){
  background:var(--success-bg) !important;
  color:var(--success) !important;
  border-color:var(--success);
}
html[data-theme=dark] :is(.info-banner, .management-shell .info-banner){
  background:var(--info-bg) !important;
  color:var(--info) !important;
  border-color:var(--info);
}
html[data-theme=dark] .form-alert{
  background:var(--danger-bg) !important;
  color:var(--danger) !important;
  border-color:var(--danger);
}
html[data-theme=dark] :is(.environment-score, .roadmap-card li.current>span){
  background:var(--surface-2) !important;
  color:var(--text) !important;
}
html[data-theme=dark] :is(.osp-findings-count.is-blocking, .osp-finding-icon, .severity-badge.severity-blocking){
  background:var(--danger-bg) !important;
  color:var(--danger) !important;
}
html[data-theme=dark] :is(.osp-findings-count.is-warning, .osp-finding-item.severity-warning .osp-finding-icon){
  background:var(--warning-bg) !important;
  color:var(--warning) !important;
}
html[data-theme=dark] :is(.public-note, .public-badge, .public-chain span, .architecture-node-strong, .architecture-rule, .product-preview, .preview-bar, .preview-metrics span, .preview-flow span, .preview-status, .preview-ring, .preview-checks span){
  background:var(--surface) !important;
  color:var(--text) !important;
  border-color:var(--border);
}

html[data-theme=dark] :is(a, button, input, select, textarea, summary):focus-visible{
  outline:2px solid var(--brand-text);
  outline-offset:2px;
}
html[data-theme=dark] ::selection{
  background:#1f6b4a;
  color:#fff;
}

.dashboard-readiness-row{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:.75rem;
  margin:.75rem 0;
}
.dashboard-readiness-row>.readiness-strip{min-width:0;margin:0}
.dashboard-readiness-row>.readiness-strip:only-child{grid-column:1/-1}
@media(max-width:760px){.dashboard-readiness-row{grid-template-columns:1fr}}
