/* SIGNAVENTO 12C: zentrale semantische Token- und Zustandsabbildung. */
:root {
  --color-bg: var(--tenant-bg, #0b0f17);
  --color-surface: var(--tenant-secondary, #151a23);
  --color-surface-raised: var(--tenant-card-bg, #141a24);
  --color-text: var(--tenant-text, #f8fafc);
  --color-text-muted: var(--tenant-muted, #a8b3c4);
  --color-border: var(--tenant-card-border, #2a3443);
  --color-primary: var(--tenant-primary, #8b5cf6);
  --color-on-primary: var(--tenant-button-text, #ffffff);
  --color-secondary: var(--tenant-secondary, #151a23);
  --color-accent: var(--tenant-accent, #a78bfa);
  --color-link: var(--tenant-accent, #a78bfa);
  --color-focus: #66b3ff;
  --color-disabled-bg: color-mix(in srgb, var(--color-surface-raised) 82%, var(--color-text-muted));
  --color-disabled-text: color-mix(in srgb, var(--color-text-muted) 78%, var(--color-bg));
  --color-success: #20a96b;
  --color-success-soft: color-mix(in srgb, var(--color-success) 15%, transparent);
  --color-info: #287bd1;
  --color-info-soft: color-mix(in srgb, var(--color-info) 15%, transparent);
  --color-warning: #c87900;
  --color-warning-soft: color-mix(in srgb, var(--color-warning) 17%, transparent);
  --color-error: #d83a4b;
  --color-error-soft: color-mix(in srgb, var(--color-error) 15%, transparent);
  --color-critical: #b4232c;
  --color-critical-soft: color-mix(in srgb, var(--color-critical) 17%, transparent);
  --color-overlay: rgba(3, 6, 12, .8);
  --radius-card: var(--tenant-card-radius, 18px);
  --radius-control: 12px;
  --shadow-raised: 0 15px 36px rgba(0, 0, 0, .26);
  --shadow-dialog: 0 24px 70px rgba(0, 0, 0, .45);
}

html[data-theme="light"] {
  --color-focus: #155eef;
  --color-success: #147a4b;
  --color-info: #175fa8;
  --color-warning: #8a5100;
  --color-error: #b4233a;
  --color-critical: #961f28;
  --color-overlay: rgba(16, 24, 40, .68);
  --shadow-raised: 0 12px 30px rgba(29, 40, 59, .1);
}

body { background-color: var(--color-bg); color: var(--color-text); }
a { color: var(--color-link); }
.muted, .field-help { color: var(--color-text-muted); }

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid var(--color-focus);
  outline-offset: 3px;
}
:where(button, input, select, textarea):disabled,
:where(.button, .public-button, .pwa-action)[aria-disabled="true"] {
  cursor: not-allowed;
  background: var(--color-disabled-bg);
  color: var(--color-disabled-text);
  border-color: var(--color-border);
  box-shadow: none;
  opacity: 1;
}
[aria-busy="true"], .is-loading { cursor: progress; }
[aria-busy="true"]::after, .is-loading::after { content: " …"; }

.card, .feed-card, .feed-empty, .event-login-card, .event-selection__card,
.tenant-choice-card, .operation-card, .media-admin {
  background: var(--color-surface-raised);
  color: var(--color-text);
  border-color: var(--color-border);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-raised);
}
.event-selection__card:hover, .event-selection__card:focus-visible,
.tenant-choice-card:hover, .tenant-choice-card:focus-within {
  border-color: var(--color-accent);
}

.button, .public-button, .document-center-button, .event-info-button,
.operator-button--primary, .tenant-preview__button {
  background: var(--color-primary);
  color: var(--color-on-primary);
}
.button:hover, .public-button:hover, .document-center-button:hover,
.event-info-button:hover, .operator-button--primary:hover { filter: brightness(1.1); }
.button:active, .public-button:active, .document-center-button:active,
.event-info-button:active { filter: brightness(.92); transform: translateY(1px); }
.button--secondary, .pwa-action, .theme-switch {
  background: var(--color-surface);
  color: var(--color-text);
  border-color: var(--color-border);
}
.button--secondary:hover, .pwa-action:hover, .theme-switch:hover {
  background: var(--color-surface-raised);
  border-color: var(--color-accent);
}
.admin-nav a.is-active, .preview-mode__button[aria-pressed="true"] {
  background: color-mix(in srgb, var(--color-primary) 20%, var(--color-surface));
  color: var(--color-text);
  box-shadow: inset 0 -2px 0 var(--color-primary);
}

.field :where(input, select, textarea), .color-control, .domain-suffix-input code {
  background: var(--color-bg);
  color: var(--color-text);
  border-color: var(--color-border);
}
.field :where(input, select, textarea):focus { border-color: var(--color-focus); box-shadow: none; }
.field-error, [aria-invalid="true"] + .field-help { color: var(--color-error); }
.field :where(input, select, textarea)[aria-invalid="true"] { border-color: var(--color-error); }

.alert--success, .operation-state--success, .acknowledgement__done { color: var(--color-success); background: var(--color-success-soft); }
.alert--info, .operation-state--info, .alert-badge--info { color: var(--color-info); background: var(--color-info-soft); }
.alert--warning, .operation-state--warning, .alert-badge--warning, .lock-pill { color: var(--color-warning); background: var(--color-warning-soft); }
.alert--error, .operation-state--error { color: var(--color-error); background: var(--color-error-soft); }
.alert-badge--critical, .type-badge--critical { color: #fff; background: var(--color-critical); }
.operation-card--success { border-left-color: var(--color-success); }
.operation-card--info { border-left-color: var(--color-info); }
.operation-card--warning { border-left-color: var(--color-warning); }
.operation-card--error { border-left-color: var(--color-error); }

.alarm-banner__item--warning { background: #fff4cc; color: #624000; border-color: #9b6100; }
.alarm-banner__item--critical { background: #7f1d1d; color: #fff; border-color: #fff; }
.feed-card.alert-card--info { box-shadow: inset 4px 0 0 var(--color-info), var(--shadow-raised); }
.feed-card.alert-card--warning { box-shadow: inset 4px 0 0 var(--color-warning), var(--shadow-raised); }
.feed-card.alert-card--critical { box-shadow: inset 5px 0 0 var(--color-critical), var(--shadow-raised); }
.event-info-list__emergency dd, .event-info-list__emergency a { color: var(--color-error); font-weight: 850; }

.event-info-dialog, .legal-dialog, .qr-dialog {
  background: var(--color-surface-raised);
  color: var(--color-text);
  border-color: var(--color-border);
  box-shadow: var(--shadow-dialog);
}
.event-info-dialog::backdrop, .legal-dialog::backdrop, .qr-dialog::backdrop,
.event-info-fallback-backdrop, .guided-tour__backdrop { background: var(--color-overlay); }
.event-info-dialog__header button, .legal-dialog__panel > header button, .qr-dialog__close {
  color: var(--color-text); border-color: var(--color-border);
}

.preview-mode { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1rem 0 .75rem; }
.preview-mode__button {
  min-height: 40px; padding: .55rem .85rem; border: 1px solid var(--color-border);
  border-radius: 999px; background: var(--color-surface); color: var(--color-text);
  font: inherit; font-weight: 800; cursor: pointer;
}
.tenant-preview { --color-bg: var(--tenant-bg); --color-surface: var(--tenant-secondary, var(--tenant-card-bg)); --color-surface-raised: var(--tenant-card-bg); --color-text: var(--tenant-text); --color-text-muted: var(--tenant-muted); --color-border: var(--tenant-card-border); --color-primary: var(--tenant-primary); --color-on-primary: var(--tenant-button-text); --color-accent: var(--tenant-accent); --color-link: var(--tenant-accent); }
.tenant-preview[data-preview-theme="light"] { --tenant-primary:#6d3fe8!important;--tenant-secondary:#eef1f6!important;--tenant-accent:#6842c2!important;--tenant-bg:#f5f7fb!important;--tenant-text:#172033!important;--tenant-muted:#5f6b7c!important;--tenant-card-bg:#ffffff!important;--tenant-card-text:#172033!important;--tenant-card-border:#d9dfe9!important;--tenant-button-text:#ffffff!important; }
.tenant-preview[data-preview-theme="dark"] { --tenant-primary:#8b5cf6!important;--tenant-secondary:#151a23!important;--tenant-accent:#a78bfa!important;--tenant-bg:#0b0f17!important;--tenant-text:#f8fafc!important;--tenant-muted:#a8b3c4!important;--tenant-card-bg:#141a24!important;--tenant-card-text:#f8fafc!important;--tenant-card-border:#2a3443!important;--tenant-button-text:#ffffff!important; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
@media (forced-colors: active) {
  :where(a, button, input, select, textarea, [tabindex]):focus-visible { outline: 3px solid CanvasText; }
  .feed-card.alert-card--critical, .alarm-banner__item--critical { border: 3px solid CanvasText; }
}
