/* dexa BOS Data Broker – Mandanten-Styles (DX Titanium, helles Theme)
   Ein Design-System, zwei Themes: der Mandant nutzt den HELLEN Zweig
   derselben DX-Titanium-Graustufe wie das dunkle Admin-Panel; Akzent
   (#E1242C) und Kantenbild sind in beiden gleich, nur hell statt dunkel. */

:root {
    /* Akzent – identisch zu Admin/dunkel */
    --dx-primary:        #E1242C;
    --dx-primary-hover:  #B71C22;
    --dx-primary-tint:   #FCE9EA;   /* heller Akzent-Hintergrund (Hover/aktiv) */

    /* Flaechen & Text – heller Zweig der Titanium-Graustufe */
    --dx-bg:            #F4F5F7;
    --dx-card:          #FFFFFF;
    --dx-border:        #DEE2E6;
    --dx-text:          #212529;
    --dx-muted:         #6C757D;
    --dx-neutral:       #F1F3F5;
    --dx-neutral-hover: #E9ECEF;

    /* Kantenbild: das Admin ist vollstaendig eckig (0). Der Mandant fuehrt
       minimal weicher (2 px) – erkennbar derselbe Zwilling, nur heller. */
    --dx-radius: .125rem;

    /* Rueckwaertskompatibel: bestehende .btn-Regeln lesen diese Namen. */
    --color-primary:       var(--dx-primary);
    --color-primary-hover: var(--dx-primary-hover);
    --color-primary-light: var(--dx-primary-tint);
}

/* ---------- Buttons ---------- */
.btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    border-radius: var(--dx-radius);
    font-weight: 600;
    font-size: 0.875rem;
    line-height: 1.25rem;
    padding: 0.6rem 1rem;
    border: 1px solid transparent;
    transition: all 0.15s ease-in-out;
}

.btn svg { height: 1rem; width: 1rem; }

.btn-primary {
    background-color: var(--dx-primary);
    color: #fff;
    border-color: var(--dx-primary);
}
.btn-primary:hover {
    background-color: var(--dx-primary-hover);
    border-color: var(--dx-primary-hover);
}

.btn-outline {
    background-color: #fff;
    color: var(--dx-primary);
    border-color: var(--dx-primary);
}
.btn-outline:hover { background-color: var(--dx-primary-tint); }

.btn-neutral {
    background-color: var(--dx-neutral);
    color: var(--dx-text);
    border-color: var(--dx-border);
}
.btn-neutral:hover { background-color: var(--dx-neutral-hover); }

.btn-ghost {
    background-color: transparent;
    color: var(--dx-primary);
    border-color: transparent;
}
.btn-ghost:hover { background-color: var(--dx-primary-tint); }

.btn-compact { padding: 0.35rem 0.6rem; font-size: 0.75rem; }

/* ---------- Fokus in DX-Rot statt Browser-Blau ----------
   Nur bei Tastatur-/Klick-Fokus sichtbar; ersetzt den blauen System-Ring. */
.btn:focus-visible,
button:focus-visible,
[role="button"]:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
    outline: 2px solid var(--dx-primary);
    outline-offset: 2px;
}

/* ---------- Markierung in Akzentfarbe ---------- */
::selection { background: var(--dx-primary-tint); color: var(--dx-text); }

/* ---------- Titanium-Kantenbild (Mandant als heller Zwilling des Admin) ----------
   Nur die tatsaechlich genutzten Rundungen werden angeglichen. Runde Pillen,
   Avatare und Statuspunkte (rounded-full) bleiben bewusst rund. */
.rounded,
.rounded-md,
.rounded-lg,
.rounded-xl { border-radius: var(--dx-radius); }

/* ---------- Optionale Titanium-Bausteine (linker Akzentbalken) ----------
   Fuer die selektive Angleichung an das Admin-Panel (Karten mit rotem
   Balken links). Wird gezielt auf Haupt-Karten gesetzt, nicht flaechig. */
.ti-card {
    background: var(--dx-card);
    border: 1px solid var(--dx-border);
    border-radius: var(--dx-radius);
    position: relative;
}
.ti-accent-left { position: relative; }
.ti-accent-left::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 4px;
    background: var(--dx-primary);
}

/* ==========================================================================
   Formularelemente – ein Grundbild fuer die ganze Plattform (helles Theme)
   --------------------------------------------------------------------------
   Greift ueber Attribut-Selektoren auf jedes Eingabefeld, auch wenn eine
   Vorlage noch alte Utility-Klassen traegt (border-2, rounded-md, shadow-sm,
   focus:ring-1 …): "[class]" hebt die Spezifitaet ueber die Utilities
   (0,1,1 > 0,1,0; im Fokus 0,2,1 > 0,2,0), ohne !important.
   Checkboxen, Radios, Datei- und Farbfelder haben eigene Regeln.
   ========================================================================== */
:root {
    --dx-field-h:             2.375rem;   /* 38 px – eine Hoehe fuer alle Felder */
    --dx-field-h-sm:          1.875rem;   /* 30 px – kompakte Felder in Tabellen */
    --dx-field-bg:            #FFFFFF;
    --dx-field-bg-disabled:   #F1F3F5;
    --dx-field-border:        #CED4DA;
    --dx-field-border-hover:  #ADB5BD;
    --dx-field-text:          #212529;
    --dx-field-placeholder:   #ADB5BD;
    --dx-field-ring:          rgba(225, 36, 44, .16);
    --dx-field-radius:        var(--dx-radius);
    --dx-field-chevron:       url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none' stroke='%236C757D' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
}

/* --- Textfelder, Zahlen, Passwoerter, Suche, Datum, Auswahl ---------------- */
input:not([type]),
input:not([type])[class],
input[type="text"],        input[type="text"][class],
input[type="email"],       input[type="email"][class],
input[type="password"],    input[type="password"][class],
input[type="number"],      input[type="number"][class],
input[type="search"],      input[type="search"][class],
input[type="tel"],         input[type="tel"][class],
input[type="url"],         input[type="url"][class],
input[type="date"],        input[type="date"][class],
input[type="time"],        input[type="time"][class],
input[type="datetime-local"], input[type="datetime-local"][class],
select,                    select[class],
textarea,                  textarea[class] {
    -webkit-appearance: none;
    appearance: none;
    box-sizing: border-box;
    height: var(--dx-field-h);
    margin: 0;
    padding: 0 .75rem;
    font: inherit;
    font-size: .875rem;
    line-height: 1.25rem;
    color: var(--dx-field-text);
    background-color: var(--dx-field-bg);
    background-image: none;
    border: 1px solid var(--dx-field-border);
    border-radius: var(--dx-field-radius);
    box-shadow: none;
    outline: none;
    transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}

/* Kompakte Felder: wer text-xs traegt, ist eine Tabellen- oder Kopfzeile. */
input[class~="text-xs"], select[class~="text-xs"] {
    height: var(--dx-field-h-sm);
    padding: 0 .5rem;
    font-size: .75rem;
    line-height: 1rem;
}
select[class~="text-xs"] { padding-right: 1.75rem; background-position: right .375rem center; }

textarea, textarea[class] {
    height: auto;
    min-height: 6rem;
    padding: .5rem .75rem;
    resize: vertical;
    line-height: 1.45;
}
textarea[class~="font-mono"], textarea[class~="text-xs"] { font-size: .8125rem; }

select, select[class] {
    padding-right: 2.25rem;
    background-image: var(--dx-field-chevron);
    background-repeat: no-repeat;
    background-position: right .625rem center;
    background-size: 1rem 1rem;
    cursor: pointer;
}
select[multiple], select[multiple][class], select[size], select[size][class] {
    height: auto;
    padding: .375rem;
    background-image: none;
}

/* Zustaende */
input:not([type]):hover, input[type="text"]:hover, input[type="email"]:hover, input[type="password"]:hover,
input[type="number"]:hover, input[type="search"]:hover, input[type="tel"]:hover, input[type="url"]:hover,
input[type="date"]:hover, input[type="time"]:hover, input[type="datetime-local"]:hover,
select:hover, textarea:hover,
input:not([type])[class]:hover, input[type="text"][class]:hover, input[type="email"][class]:hover, input[type="password"][class]:hover,
input[type="number"][class]:hover, input[type="search"][class]:hover, input[type="tel"][class]:hover, input[type="url"][class]:hover,
input[type="date"][class]:hover, input[type="time"][class]:hover, input[type="datetime-local"][class]:hover,
select[class]:hover, textarea[class]:hover {
    border-color: var(--dx-field-border-hover);
}

input:not([type]):focus, input[type="text"]:focus, input[type="email"]:focus, input[type="password"]:focus,
input[type="number"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="url"]:focus,
input[type="date"]:focus, input[type="time"]:focus, input[type="datetime-local"]:focus,
select:focus, textarea:focus,
input:not([type])[class]:focus, input[type="text"][class]:focus, input[type="email"][class]:focus, input[type="password"][class]:focus,
input[type="number"][class]:focus, input[type="search"][class]:focus, input[type="tel"][class]:focus, input[type="url"][class]:focus,
input[type="date"][class]:focus, input[type="time"][class]:focus, input[type="datetime-local"][class]:focus,
select[class]:focus, textarea[class]:focus,
input:not([type])[class]:focus-visible, input[type="text"][class]:focus-visible, input[type="email"][class]:focus-visible,
input[type="password"][class]:focus-visible, input[type="number"][class]:focus-visible, input[type="search"][class]:focus-visible,
input[type="tel"][class]:focus-visible, input[type="url"][class]:focus-visible, input[type="date"][class]:focus-visible,
input[type="time"][class]:focus-visible, input[type="datetime-local"][class]:focus-visible,
select[class]:focus-visible, textarea[class]:focus-visible {
    border-color: var(--dx-primary);
    box-shadow: 0 0 0 3px var(--dx-field-ring);
    outline: none;
}

input:disabled, input[class]:disabled, select:disabled, select[class]:disabled, textarea:disabled, textarea[class]:disabled,
input[readonly], input[class][readonly], textarea[readonly], textarea[class][readonly] {
    background-color: var(--dx-field-bg-disabled);
    color: var(--dx-muted);
    cursor: not-allowed;
    border-color: var(--dx-field-border);
    box-shadow: none;
}

input::placeholder, textarea::placeholder { color: var(--dx-field-placeholder); opacity: 1; }
input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; }
input[type="number"] { -moz-appearance: textfield; }
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* Fehlerzustand: aria-invalid oder Klasse is-invalid */
input[aria-invalid="true"], input[class][aria-invalid="true"], input[class~="is-invalid"],
select[aria-invalid="true"], select[class][aria-invalid="true"], select[class~="is-invalid"],
textarea[aria-invalid="true"], textarea[class][aria-invalid="true"], textarea[class~="is-invalid"] {
    border-color: var(--dx-primary);
    background-color: #FFF7F7;
}

/* --- Checkbox & Radio ------------------------------------------------------- */
input[type="checkbox"], input[type="checkbox"][class],
input[type="radio"],    input[type="radio"][class] {
    -webkit-appearance: none;
    appearance: none;
    box-sizing: border-box;
    width: 1rem;
    height: 1rem;
    margin: 0;
    padding: 0;
    flex: none;
    vertical-align: -.125rem;
    color: var(--dx-primary);
    background-color: var(--dx-field-bg);
    border: 1px solid var(--dx-field-border-hover);
    border-radius: var(--dx-field-radius);
    box-shadow: none;
    cursor: pointer;
    transition: background-color .12s ease, border-color .12s ease, box-shadow .12s ease;
    background-position: center;
    background-repeat: no-repeat;
    background-size: 100% 100%;
}
input[type="radio"], input[type="radio"][class] { border-radius: 9999px; }
input[type="checkbox"]:hover, input[type="checkbox"][class]:hover,
input[type="radio"]:hover,    input[type="radio"][class]:hover { border-color: var(--dx-primary); }
input[type="checkbox"]:checked, input[type="checkbox"][class]:checked {
    background-color: var(--dx-primary);
    border-color: var(--dx-primary);
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E");
}
input[type="radio"]:checked, input[type="radio"][class]:checked {
    background-color: var(--dx-primary);
    border-color: var(--dx-primary);
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3' fill='white'/%3E%3C/svg%3E");
}
input[type="checkbox"]:focus-visible, input[type="checkbox"][class]:focus-visible,
input[type="radio"]:focus-visible,    input[type="radio"][class]:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px var(--dx-field-ring);
}
input[type="checkbox"]:disabled, input[type="checkbox"][class]:disabled,
input[type="radio"]:disabled,    input[type="radio"][class]:disabled { opacity: .5; cursor: not-allowed; }

/* --- Datei-Auswahl ---------------------------------------------------------- */
input[type="file"], input[type="file"][class] {
    font-size: .875rem;
    color: var(--dx-muted);
}
input[type="file"]::file-selector-button {
    margin-right: .75rem;
    padding: .4rem .75rem;
    font: inherit;
    font-size: .8125rem;
    font-weight: 600;
    color: var(--dx-text);
    background: var(--dx-neutral);
    border: 1px solid var(--dx-border);
    border-radius: var(--dx-field-radius);
    cursor: pointer;
}
input[type="file"]::file-selector-button:hover { background: var(--dx-neutral-hover); }

/* --- Beschriftungen & Hilfetexte -------------------------------------------- */
.dx-label {
    display: block;
    margin-bottom: .375rem;
    font-size: .8125rem;
    font-weight: 600;
    line-height: 1rem;
    color: #343A40;
}
.dx-label .req { color: var(--dx-primary); margin-left: .125rem; }
.dx-help {
    margin-top: .375rem;
    font-size: .75rem;
    line-height: 1.1rem;
    color: var(--dx-muted);
}
.dx-badge-saved {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    margin-left: .5rem;
    padding: .0625rem .4rem;
    font-size: .6875rem;
    font-weight: 600;
    color: #166534;
    background: #DCFCE7;
    border-radius: 9999px;
    vertical-align: middle;
}

/* --- Schalter (Toggle) ------------------------------------------------------ */
.dx-switch {
    position: relative;
    display: inline-flex;
    flex: none;
    width: 2.5rem;
    height: 1.375rem;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 9999px;
    background: #CED4DA;
    cursor: pointer;
    transition: background-color .15s ease;
    vertical-align: middle;
}
.dx-switch::after {
    content: '';
    position: absolute;
    top: 2px; left: 2px;
    width: 1.125rem; height: 1.125rem;
    border-radius: 9999px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(0,0,0,.28);
    transition: transform .15s ease;
}
.dx-switch:hover { background: #ADB5BD; }
.dx-switch[aria-checked="true"] { background: var(--dx-primary); }
.dx-switch[aria-checked="true"]:hover { background: var(--dx-primary-hover); }
.dx-switch[aria-checked="true"]::after { transform: translateX(1.125rem); }
.dx-switch:focus-visible { outline: 2px solid var(--dx-primary); outline-offset: 2px; }
.dx-switch:disabled, .dx-switch[aria-disabled="true"] { opacity: .45; cursor: not-allowed; }

/* Schalter-Zeile: Text links, Schalter rechts, alles klickbar. */
.dx-switch-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: .625rem .75rem;
    border: 1px solid var(--dx-border);
    border-radius: var(--dx-field-radius);
    background: #FAFBFC;
    cursor: pointer;
    transition: border-color .15s ease, background-color .15s ease;
}
.dx-switch-row:hover { border-color: var(--dx-field-border-hover); background: #fff; }
.dx-switch-row .dx-label { margin: 0; }
.dx-switch-row .dx-help { margin-top: .125rem; }
.dx-switch-row .dx-switch { margin-top: .0625rem; }

/* --- Eingabe mit Vorsatz/Anhang (z. B. https:// oder Einheit) ---------------- */
.dx-input-group { display: flex; align-items: stretch; }
.dx-input-group > .dx-addon {
    display: inline-flex; align-items: center;
    padding: 0 .625rem;
    font-size: .8125rem; color: var(--dx-muted);
    background: var(--dx-neutral);
    border: 1px solid var(--dx-field-border);
    border-right: 0;
    border-radius: var(--dx-field-radius) 0 0 var(--dx-field-radius);
    white-space: nowrap;
}
.dx-input-group > input, .dx-input-group > input[class],
.dx-input-group > select, .dx-input-group > select[class] {
    border-radius: 0 var(--dx-field-radius) var(--dx-field-radius) 0;
    min-width: 0;
}

/* --- Formular-Karten (Konfigurationsmasken) --------------------------------- */
.dx-form-card {
    background: #fff;
    border: 1px solid var(--dx-border);
    border-radius: var(--dx-field-radius);
    overflow: hidden;
}
.dx-form-card > header {
    padding: .75rem 1rem;
    background: #FAFBFC;
    border-bottom: 1px solid var(--dx-border);
}
.dx-form-card > header h4 {
    margin: 0;
    font-size: .8125rem;
    font-weight: 700;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: #495057;
}
.dx-form-card > header p { margin: .25rem 0 0; font-size: .75rem; color: var(--dx-muted); line-height: 1.15rem; }
.dx-form-card > .body { padding: 1rem; }
.dx-form-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem 1.5rem;
}
@media (min-width: 640px) {
    .dx-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .dx-form-grid > .wide { grid-column: 1 / -1; }
}

/* Klebende Aktionsleiste unter einem Formular */
.dx-form-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .75rem;
    margin-top: 1rem;
    padding: .75rem 1rem;
    background: #FAFBFC;
    border: 1px solid var(--dx-border);
    border-radius: var(--dx-field-radius);
}
.dx-dirty-dot {
    display: inline-block;
    width: .5rem; height: .5rem;
    border-radius: 9999px;
    background: #F59E0B;
    box-shadow: 0 0 0 3px rgba(245,158,11,.2);
}

/* --- Status-Pille ----------------------------------------------------------- */
.dx-pill {
    display: inline-flex; align-items: center; gap: .375rem;
    padding: .125rem .625rem;
    font-size: .75rem; font-weight: 700; letter-spacing: .02em;
    border-radius: 9999px;
    white-space: nowrap;
}
.dx-pill .dot { width: .5rem; height: .5rem; border-radius: 9999px; background: currentColor; }
.dx-pill-green  { background: #DCFCE7; color: #166534; }
.dx-pill-yellow { background: #FEF9C3; color: #854D0E; }
.dx-pill-red    { background: #FEE2E2; color: #991B1B; }
.dx-pill-gray   { background: #F1F3F5; color: #495057; }

/* --- Sortierbare Tabellenkoepfe --------------------------------------------- */
th.dx-sort { cursor: pointer; user-select: none; white-space: nowrap; }
th.dx-sort:hover { color: var(--dx-text); }
th.dx-sort .arrow { display: inline-block; width: .875rem; margin-left: .125rem; font-size: .7rem; opacity: .35; }
th.dx-sort.active .arrow { opacity: 1; color: var(--dx-primary); }

/* --- Auge-Button in Geheimnis-Feldern ------------------------------------ */
.dx-eye {
    position: absolute; top: 0; right: 0;
    display: inline-flex; align-items: center; justify-content: center;
    height: var(--dx-field-h); width: 2.25rem;
    color: var(--dx-muted);
    background: transparent; border: 0; cursor: pointer;
}
.dx-eye:hover { color: var(--dx-text); }
.dx-eye:focus-visible { outline: 2px solid var(--dx-primary); outline-offset: -2px; }
