/* Gemeinsame Gestaltungsbasis des EFI-Admins (madmin) und des Signals-Admins.
 * Herausgeloest aus signals_admin.css; Tokens stammen aus ef-efi-nextjs/styles/globals.css
 * (:root + Farbskalen), components/ui/{button,badge}.tsx und .efi-list-item-active.
 * Inter wird lokal ueber inter-font geladen. Signals-Fachbausteine: signals_admin.css. */
.efi-admin {
  --adm-foreground: oklch(0.07 0 0);
  --adm-muted-foreground: #626262;
  --adm-border: oklch(0.83 0 0);
  --adm-primary: oklch(0.429 0.227 27.5);
  --adm-primary-hover: oklch(0.429 0.227 27.5 / 90%);
  --adm-widget-bg: oklch(0.96 0 0);
  --adm-muted-bg: oklch(0.8699 0 0);
  --adm-subtle: #fafafa;
  --adm-success: #1f5c36;
  --adm-success-bg: #e0f8e8;
  --adm-error: #921f2b;
  --adm-error-bg: #fceae7;
  --adm-warning: #7b4d18;
  --adm-warning-bg: #f9f5c8;
  --adm-radius: 0.4rem;
}
/* Keine Abhaengigkeit von madmins CDN oder Tailwind. */
.efi-admin { --adm-bg:var(--adm-widget-bg); --adm-ink:var(--adm-foreground); --adm-muted:var(--adm-muted-foreground); --adm-line:var(--adm-border); --adm-red:var(--adm-primary); margin:0; background:var(--adm-bg); color:var(--adm-ink); font:15px/1.5 "Inter var",Inter,ui-sans-serif,system-ui,sans-serif; }
.efi-admin *, .efi-admin *::before, .efi-admin *::after { box-sizing:border-box; }
.efi-admin a { color:inherit; text-decoration:none; }
.efi-admin a:hover { text-decoration:underline; }
.efi-admin :focus-visible { outline:3px solid var(--adm-primary); outline-offset:4px; }
.efi-admin h1,.efi-admin h2,.efi-admin h3,.efi-admin p { margin:0; }
.efi-admin h1 { font-size:30px; line-height:1.2; letter-spacing:-.8px; font-weight:600; overflow-wrap:anywhere; }
.efi-admin h2 { font-size:17px; font-weight:600; }
.efi-admin h3 { font-size:16px; }
.efi-admin small { display:block; color:var(--adm-muted); font-size:12px; }
.adm-sidebar { width:232px; position:fixed; inset:0 auto 0 0; background:white; border-right:1px solid var(--adm-line); display:flex; flex-direction:column; overflow-y:auto; padding:25px 16px 18px; }
.adm-brand { display:flex; align-items:center; gap:12px; font-size:22px; font-weight:700; margin:0 8px 22px; }
.adm-brand small { font-size:11px; font-weight:500; letter-spacing:.3px; }
.adm-brand img { width:100px; height:auto; }
.adm-nav-group { margin-bottom:19px; }
.adm-navigation>summary { display:none; cursor:pointer; font-weight:600; padding:10px 8px; }
.adm-navigation>summary span { float:right; }
.adm-nav-label { display:block; color:var(--adm-muted); font-size:11px; font-weight:600; padding:0 12px 6px; }
.adm-nav-link { display:block; border-radius:calc(var(--adm-radius) - 2px); padding:7px 12px; margin:2px 0; font-size:13px; }
.adm-nav-link:hover { background:var(--adm-bg); text-decoration:none!important; }
.adm-nav-link.is-active { background:var(--adm-muted-bg); color:var(--adm-foreground); font-weight:400; box-shadow:none; }
.adm-account { margin-top:auto; border-top:1px solid var(--adm-line); padding:17px 10px 0; font-size:12px; }
.adm-account small { margin:8px 0; overflow-wrap:anywhere; }
.adm-workspace { margin-left:232px; min-width:0; }
/* Umgebungskennzeichen (Staging von Produktion unterscheiden) unten im Konto-Block, klein und unauffaellig. */
.adm-environment { display:inline-block; margin-top:10px; border:1px solid var(--adm-line); border-radius:4px; padding:1px 6px; font-size:11px; color:var(--adm-muted); }
.adm-main { padding:32px 36px 40px; max-width:1640px; margin:auto; }
.adm-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; margin-bottom:28px; }
.adm-heading p { color:var(--adm-muted); margin-top:9px; max-width:75ch; }
.adm-section-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:19px; }
.adm-section-heading .adm-muted { font-size:12px; }
.adm-muted,.adm-note { color:var(--adm-muted); }
.adm-note { font-size:12px; margin-top:15px!important; max-width:75ch; }
.adm-link { color:var(--adm-primary)!important; font-weight:500; font-size:13px; }
.adm-back { display:inline-block; color:var(--adm-muted)!important; margin-bottom:16px; font-size:13px; }
.adm-panel { background:white; border:1px solid var(--adm-line); border-radius:var(--adm-radius); padding:24px; margin-bottom:24px; min-width:0; }
.adm-panel>h2 { margin-bottom:18px; }
.adm-panel--table { padding:0; overflow:hidden; }
.adm-panel>h3,.adm-form h3 { margin:20px 0 10px; }
.adm-form h2 { margin:28px 0 12px; }
.adm-two-columns { display:grid; grid-template-columns:minmax(0,1.45fr) minmax(0,1fr); gap:24px; }
.adm-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.adm-list-row { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:14px 0; border-top:1px solid var(--adm-border); }
.sig-record-title { display:block; font-weight:600; margin:4px 0; overflow-wrap:anywhere; }
/* sig-badge und sig-record-title behalten den Namen in beiden Bereichen: spec/requests/madmin/signals_workspace_spec.rb prueft sie per Selektor. */
.sig-badge { border:1px solid transparent; display:inline-block; flex-shrink:0; background:var(--adm-muted-bg); color:var(--adm-muted-foreground); border-radius:9999px; padding:3px 8px; font-size:11px; font-weight:600; white-space:nowrap; }
.sig-badge--good { background:var(--adm-success-bg); color:var(--adm-success); }
.sig-badge--bad { background:var(--adm-error-bg); color:var(--adm-error); }
.sig-badge--waiting { background:var(--adm-warning-bg); color:var(--adm-warning); }
.adm-inline { display:flex; gap:9px; align-items:center; flex-wrap:wrap; }
.efi-admin td>.adm-inline { flex-wrap:nowrap; }
.adm-filters { display:flex; gap:12px; flex-wrap:wrap; align-items:flex-end; margin:0 0 22px; }
.efi-admin label { display:flex; flex-direction:column; gap:6px; font-size:12px; font-weight:500; }
/* type=submit ist ein Button (adm-button) und bekommt keine Eingabefeld-Optik. */
.efi-admin input:not([type=hidden]):not([type=checkbox]):not([type=submit]),.efi-admin select,.efi-admin textarea { font:inherit; color:var(--adm-ink); border:1px solid var(--adm-border); border-radius:calc(var(--adm-radius) - 2px); background:white; padding:9px 11px; min-height:39px; max-width:100%; }
.adm-search { flex:1; min-width:220px; }
.adm-filters>.adm-link { padding:10px 0; }
.adm-button { display:inline-flex; justify-content:center; align-items:center; min-height:39px; border:1px solid var(--adm-border); border-radius:calc(var(--adm-radius) - 2px); padding:8px 13px; background:white; color:var(--adm-ink); font:500 13px/1.4 "Inter var",Inter,ui-sans-serif,system-ui,sans-serif; cursor:pointer; white-space:nowrap; }
.adm-button:hover { background:var(--adm-muted-bg); text-decoration:none!important; }
.adm-button--primary { background:var(--adm-primary); color:white!important; border-color:var(--adm-primary); }
.adm-button--primary:hover { background:var(--adm-primary-hover); }
.adm-button--danger { color:var(--adm-error); border-color:var(--adm-error); }
.adm-button[aria-current] { background:var(--adm-muted-bg); }
.adm-text-button { background:none; border:0; padding:0; color:var(--adm-muted); font:inherit; cursor:pointer; }
.adm-table-scroll { overflow-x:auto; }
.efi-admin table { width:100%; border-collapse:collapse; font-size:13px; text-align:left; }
.efi-admin th { font-weight:500; color:var(--adm-muted); font-size:11px; background:var(--adm-subtle); border-block:1px solid var(--adm-line); white-space:nowrap; }
.efi-admin th a { display:inline-flex; align-items:center; gap:4px; }
.efi-admin th,.efi-admin td { padding:14px 18px; vertical-align:top; }
/* break-word statt anywhere: lange Adressen brechen weiterhin um, Spalten werden aber nicht auf Wortbruch zusammengedrueckt. */
.efi-admin td { border-bottom:1px solid var(--adm-border); overflow-wrap:break-word; }
.efi-admin td time { white-space:nowrap; }
.efi-admin tr:last-child td { border-bottom:0; }
.efi-admin tbody tr:hover { background:var(--adm-subtle); }
.adm-text-cell { min-width:200px; max-width:440px; }
.adm-empty { text-align:center; padding:42px 24px; }
.adm-empty p { color:var(--adm-muted); max-width:55ch; margin:9px auto 20px; font-size:13px; }
.adm-pagination { display:flex; justify-content:center; align-items:center; flex-wrap:wrap; gap:6px; font-size:13px; margin-bottom:24px; }
.adm-pagination .adm-button { min-width:39px; padding:8px 10px; }
.adm-pagination>span[aria-hidden] { padding:0 4px; color:var(--adm-muted); }
/* Pagy-Seitenleiste der has_many-Felder auf Show-Seiten in derselben Optik. */
.efi-admin nav.pagy { display:inline-flex; flex-wrap:wrap; gap:6px; margin-top:8px; font-size:12px; }
.efi-admin nav.pagy a { display:inline-flex; align-items:center; justify-content:center; min-width:30px; min-height:30px; padding:4px 8px; border:1px solid var(--adm-border); border-radius:calc(var(--adm-radius) - 2px); background:white; color:var(--adm-ink)!important; font-weight:500; }
.efi-admin nav.pagy a[aria-current] { background:var(--adm-muted-bg); }
.efi-admin nav.pagy a[aria-disabled=true] { opacity:.4; pointer-events:none; }
.efi-admin nav.pagy a[role=separator] { border:0; background:transparent; }
.adm-detail-list { margin:0; }
.adm-detail-list>div { display:grid; grid-template-columns:190px minmax(0,1fr); gap:24px; padding:13px 0; border-top:1px solid var(--adm-border); }
.adm-detail-list dt { color:var(--adm-muted); font-size:12px; }
.adm-detail-list dd { margin:0; white-space:pre-wrap; overflow-wrap:anywhere; font-size:13px; }
.adm-code { font:12px/1.6 ui-monospace,monospace; white-space:pre-wrap; overflow-wrap:anywhere; margin:0; max-height:420px; overflow:auto; }
.adm-flash { padding:13px 18px; border:1px solid var(--adm-success); background:var(--adm-success-bg); color:var(--adm-success); border-radius:calc(var(--adm-radius) - 2px); margin-bottom:24px; }
.adm-flash ul { margin:8px 0 0; padding-left:20px; }
/* sig-callout bleibt als zweiter Name, weil spec/requests/madmin/signals_workspace_spec.rb den Selektor prueft. */
.adm-flash--error,.adm-callout,.sig-callout { padding:13px 16px; background:var(--adm-warning-bg); color:var(--adm-warning); border-radius:calc(var(--adm-radius) - 2px); margin-bottom:16px!important; font-size:13px; }
.adm-footer { padding:0 36px 24px; color:var(--adm-muted); font-size:11px; }
.adm-form { max-width:720px; }
.adm-form label { margin-bottom:20px; }
.adm-form .adm-inline label { flex-direction:row; align-items:center; }
.adm-field { display:flex; flex-direction:column; gap:6px; margin-bottom:20px; }
.adm-field label { display:block; margin-bottom:0; }
.adm-field--checkbox { flex-direction:row-reverse; justify-content:flex-end; align-items:center; gap:9px; }
.adm-field--checkbox>label { font-size:13px; }
.adm-required { color:var(--adm-primary); }
/* Rails legt bei Validierungsfehlern <div class="field_with_errors"> um Label und Feld; der Wrapper darf das Spaltenraster von adm-field nicht unterbrechen. */
.efi-admin .field_with_errors { display:contents; }
.adm-skip,.adm-sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); }
.adm-skip:focus { width:auto; height:auto; clip:auto; z-index:100; top:8px; left:8px; padding:12px; background:white; }
@media(max-width:1180px) { .adm-main { padding:26px 24px; } .adm-two-columns,.adm-columns { grid-template-columns:1fr; gap:0; } }
@media(max-width:850px) { .adm-sidebar { position:static; width:100%; padding:16px; } .adm-brand { margin-bottom:16px; } .adm-sidebar nav { display:flex; overflow-x:auto; gap:20px; } .adm-nav-group { flex-shrink:0; margin-bottom:8px; } .adm-account { display:none; } .adm-workspace { margin-left:0; } }
@media(max-width:850px) { .adm-navigation>summary { display:list-item; } .adm-sidebar nav { display:grid; grid-template-columns:1fr 1fr; overflow:visible; margin-top:16px; gap:12px; } .adm-nav-group { min-width:0; } .adm-account { display:block; } .adm-account small,.adm-account form { display:none; } }
@media(max-width:540px) { .adm-main { padding:22px 16px; } .adm-heading { display:block; } .efi-admin h1 { font-size:26px; } .adm-panel { padding:18px; } .adm-panel--table { padding:0; } .adm-section-heading { align-items:flex-start; flex-wrap:wrap; gap:8px; } .adm-detail-list>div { grid-template-columns:1fr; gap:5px; } .adm-filters>label { width:100%; } .adm-footer { padding:0 16px 24px; } }

.adm-number { text-align:right; font-variant-numeric:tabular-nums; }
@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  html {
    --foreground-rgb: 255, 255, 255;
    --background-start-rgb: 10, 10, 10;
  }
  body {
    font-feature-settings:
      'rlig' 1,
      'calt' 1;
    color: rgb(var(--foreground-rgb));
    background: rgb(var(--background-start-rgb));
  }
}

.turbo-progress-bar {
  height: 4px;
  background-color: #c40812;
}
/* Signals-Fachbausteine. Tokens, Huelle, Karten, Tabellen, Formulare, Buttons, Badges,
 * Leerzustaende und Flash liegen in admin_base.css (Prefix adm-) und werden geteilt.
 * Die Klassennamen hier pruefen die Signals-Request-Specs teils per Selektor
 * (sig-stage, sig-budget-number, sig-summary, sig-evidence, sig-table-meta, sig-callout). */
.sig-pipeline { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); background:white; border:1px solid var(--adm-line); border-radius:var(--adm-radius); overflow:hidden; margin-bottom:30px; }
.sig-stage { padding:20px 18px; display:flex; flex-direction:column; gap:6px; border-right:1px solid var(--adm-line); font-size:12px; }
.sig-stage:last-child { border:0; }
.sig-stage:hover { background:var(--adm-subtle); text-decoration:none!important; }
.sig-stage strong { font-size:32px; letter-spacing:-1px; font-weight:600; margin-top:10px; font-variant-numeric:tabular-nums; }
.sig-stage-label { font-size:13px; font-weight:600; white-space:nowrap; }
.sig-stage-label>span { display:inline-flex; width:22px; height:22px; align-items:center; justify-content:center; background:var(--adm-muted-bg); color:var(--adm-muted-foreground); border-radius:50%; margin-right:7px; font-size:11px; }
.sig-attention { color:var(--adm-warning); }
.sig-event-row { display:grid; grid-template-columns:145px minmax(0,1fr) auto; gap:20px; align-items:start; padding:18px 0; border-top:1px solid var(--adm-border); }
.sig-event-date { color:var(--adm-muted); font-size:12px; padding-top:4px; }
.sig-budget-number { font-size:30px; font-weight:600; margin:8px 0 16px!important; }
.sig-budget-context { display:block; color:var(--adm-muted); font-weight:400; font-size:13px; }
.sig-progress { display:block; height:7px; width:100%; accent-color:var(--adm-primary); margin:15px 0 20px; }
.sig-facts { margin:18px 0; }
.sig-facts>div { display:flex; justify-content:space-between; gap:20px; padding:9px 0; border-bottom:1px solid var(--adm-border); }
.sig-facts dt { color:var(--adm-muted); font-size:13px; }
.sig-facts dd { margin:0; text-align:right; font-weight:500; max-width:70%; overflow-wrap:anywhere; }
.sig-table-meta { display:flex; justify-content:space-between; padding:15px 18px; font-size:12px; color:var(--adm-muted); }
.sig-reading { max-width:940px; }
.sig-summary { font-size:19px; line-height:1.65; margin:20px 0 28px!important; max-width:65ch; }
.sig-prose { white-space:pre-wrap; line-height:1.8; max-width:75ch; overflow-wrap:anywhere; margin-bottom:20px; }
.sig-evidence { margin:16px 0; padding:16px 20px; border-left:3px solid var(--adm-border); background:var(--adm-subtle); }
.sig-evidence blockquote { margin:0 0 14px; line-height:1.7; }
@media(max-width:1180px) { .sig-stage { padding:16px 10px; } }
@media(max-width:850px) { .sig-pipeline { grid-template-columns:repeat(5,160px); overflow-x:auto; } }
@media(max-width:540px) { .sig-event-row { grid-template-columns:1fr auto; gap:8px; } .sig-event-date { grid-column:1/-1; } }
/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's
 * vendor/assets/stylesheets directory can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the bottom of the
 * compiled file so the styles you add here take precedence over styles defined in any other CSS
 * files in this directory. Styles in this file should be added after the last require_* statement.
 * It is generally better to create a new file per style scope.
 *


 */
