Ctrl K
ComunidadGuías…

resources/css/app.css

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
@import "tailwindcss";

/* ============================================================
   Design-Basis v2 »Bühnenlicht« — semantische Token-Ebene (design-basis.md §0/§1)
   ============================================================ */
@theme {
    /* ---------- Flächen ---------- */
    --color-surface-canvas:  #F2F3F5;   /* Seitenhintergrund (v2, kühl) */
    --color-surface:         #FFFFFF;   /* Karten, Tabellen, Modal */
    --color-surface-sunken:  #F4F5F6;   /* Modal-Footer, Zebra */
    --color-surface-header:  #FBFBFC;   /* Tabellenkopf */
    --color-surface-hover:   #EFF4F9;   /* Zeilen-Hover, akzentgetönt */
    --color-surface-inverse: #222831;   /* Band: Navigation, Toolbar, Kalender-/Modalkopf */

    /* ---------- Rahmen ---------- */
    --color-border-hairline: #EEEFF1;   /* Zeilentrenner */
    --color-border-subtle:   #E3E5E9;   /* Karten, Segmented-Track */
    --color-border:          #C9CDD3;   /* Eingaben, Buttons */
    --color-border-strong:   #8B929C;   /* Datenraster, 3:1-Pflicht */

    /* ---------- Text (Kontrast auf --color-surface) ---------- */
    --color-text:            #1C1F24;   /* 15,1:1 */
    --color-text-muted:      #5F6169;   /*  6,3:1 */
    --color-text-subtle:     #74767E;   /*  4,6:1 — Minimum für Text */
    --color-text-inverse:    #F4F4F2;   /* auf dem Band */
    --color-text-inverse-muted: #A9B1BC; /* Kontextzeilen auf dem Band, nie unter 11,5px */

    /* ---------- Akzent (abgeleitet aus Bestands-#3073ae) ---------- */
    --color-accent-50:       #EEF4FA;
    --color-accent-100:      #D9E7F4;
    --color-accent-200:      #B7D0E8;
    --color-accent-500:      #3073AE;   /* Flächen, Icons — NICHT für Text auf Weiß */
    --color-accent-600:      #276293;   /* Primär, Links, Fokus — 4,6:1 */
    --color-accent-700:      #1E4E77;   /* Hover / Aktiv */
    --color-accent-900:      #14314A;

    /* ---------- Status ---------- */
    --color-success:         #157F4F;  --color-success-surface: #E8F5EE;  --color-success-border: #A8D8BF;
    --color-warning:         #8A5A00;  --color-warning-surface: #FCF3E1;  --color-warning-border: #E8CE92;
    --color-danger:          #B3261E;  --color-danger-surface:  #FDEDEC;  --color-danger-border:  #F0B9B4;
    --color-info:            #276293;  --color-info-surface:    #EEF4FA;  --color-info-border:    #B7D0E8;

    /* ---------- Radien ---------- */
    --radius-sm:   4px;   /* Kalenderkacheln, Zellen */
    --radius-md:   6px;   /* alle Steuerelemente */
    --radius-lg:  12px;   /* Karten, Modale, Listen-Container */
    --radius-pill: 999px; /* Chips, Zähler */

    /* ---------- Elevation ---------- */
    --shadow-raised:  0 1px 2px rgba(28,31,36,.06), 0 1px 1px rgba(28,31,36,.04);
    --shadow-overlay: 0 8px 24px -8px rgba(28,31,36,.18), 0 2px 6px rgba(28,31,36,.06);
    --shadow-card:    0 1px 2px rgba(28,31,36,.06), 0 6px 16px -8px rgba(28,31,36,.10);

    /* ---------- Steuerhöhen ---------- */
    --control-h-sm: 28px;
    --control-h-md: 32px;
    --control-h-lg: 40px;

    /* ---------- Zeilenhöhen ---------- */
    --row-h:         40px;  /* Standard-Datenzeile */
    --row-h-project: 44px;  /* Projektlisten (Badges + Avatare) */
    --row-h-compact: 34px;  /* wählbares Kompakt-Profil */

    /* ---------- Typografie ---------- */
    --font-heading: Lexend, system-ui, sans-serif;
    --font-body:    Inter, system-ui, sans-serif;
    --font-sans:    Inter, system-ui, sans-serif;
    --font-lexend:  Lexend, system-ui, sans-serif;

    /* ---------- Gelernte Sonderfarben (feste Marker, AA auf Weiß) ----------
       Für etablierte Spezialfälle: violet = Lifecycle/BI-Chips, pink =
       "zuletzt angelegt"-Marker (Bulk), orange = Verifizierung/Nachträglich,
       teal = Ausgleichstage/Sonder-Marker. Nutzergepflegte Farben (Terminarten,
       Inventar-Status, Räume, Gewerke) kommen weiterhin dynamisch aus der DB. */
    --color-special-violet:         #6D28D9;
    --color-special-violet-surface: #F2EEFA;
    --color-special-violet-border:  #D6C9F0;
    --color-special-pink:           #B03578;
    --color-special-pink-surface:   #F9ECF3;
    --color-special-pink-border:    #EDC2DA;
    --color-special-orange:         #B04A0A;
    --color-special-orange-surface: #FAF0E6;
    --color-special-orange-border:  #F0CBA4;
    --color-special-teal:           #0F766E;
    --color-special-teal-surface:   #E7F4F2;
    --color-special-teal-border:    #A9D8D2;

    /* ---------- Sonstiges (Bestand, weiter genutzt) ---------- */
    --z-100: 100;
}


/* Fokus — verbindlich, nie überschreiben */
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
    outline: 2px solid var(--color-accent-600);
    outline-offset: 2px;
}

:root {
    /*General*/
    --dp-font-family: 'lexend', sans-serif; /*Font family for the date picker*/
    --dp-border-radius: 5px; /*Configurable border-radius*/
    --dp-cell-border-radius: 4px; /*Specific border radius for the calendar cell*/
    --dp-common-transition: all 0.1s ease-in; /*Generic transition applied on buttons and calendar cells*/

    /*Sizing*/
    --dp-button-height: 35px; /*Size for buttons in overlays*/
    --dp-month-year-row-height: 35px; /*Height of the month-year select row*/
    --dp-month-year-row-button-size: 35px; /*Specific height for the next/previous buttons*/
    --dp-button-icon-height: 20px; /*Icon sizing in buttons*/
    --dp-cell-size: 35px; /*Width and height of calendar cell*/
    --dp-cell-padding: 5px; /*Padding in the cell*/
    --dp-common-padding: 10px; /*Common padding used*/
    --dp-input-icon-padding: 35px; /*Padding on the left side of the input if icon is present*/
    --dp-input-padding: 6px 30px 6px 12px; /*Padding in the input*/
    --dp-menu-min-width: 260px; /*Adjust the min width of the menu*/
    --dp-action-buttons-padding: 2px 5px; /*Adjust padding for the action buttons in action row*/
    --dp-row-margin:  5px 0; /*Adjust the spacing between rows in the calendar*/
    --dp-calendar-header-cell-padding:  0.5rem; /*Adjust padding in calendar header cells*/
    --dp-two-calendars-spacing:  10px; /*Space between multiple calendars*/
    --dp-overlay-col-padding:  3px; /*Padding in the overlay column*/
    --dp-time-inc-dec-button-size:  32px; /*Sizing for arrow buttons in the time picker*/
    --dp-menu-padding: 6px 8px; /*Menu padding*/

    /*Font sizes*/
    --dp-font-size: 1rem; /*Default font-size*/
    --dp-preview-font-size: 0.8rem; /*Font size of the date preview in the action row*/
    --dp-time-font-size: 0.8rem; /*Font size in the time picker*/

    /*Transitions*/
    --dp-animation-duration: 0.1s; /*Transition duration*/
    --dp-menu-appear-transition-timing: cubic-bezier(.4, 0, 1, 1); /*Timing on menu appear animation*/
    --dp-transition-timing: ease-out; /*Timing on slide animations*/
}




@font-face {
    font-family: 'Inter';
    src: local('Inter-Regular'), url('../fonts/Inter-Regular.woff2') format('woff2');
    font-display: swap;
}

@font-face {
    font-family: 'Lexend';
    src: local('Lexend-Regular'), url('../fonts/Lexend-Regular.woff2') format('woff2');
    font-display: swap;
}

    body {
        scrollbar-width: thin; /* Für Firefox */
        scrollbar-color: rgba(210, 210, 213, 0.44) transparent; /* Für Firefox */
    }

    [x-cloak] {
        display: none;
    }

    ::-webkit-scrollbar {
        width: 9px;
        height: 9px;
    }

    ::-webkit-scrollbar-track {
        background-color: transparent;
        box-shadow: none;
    }

    ::-webkit-scrollbar-thumb {
        background-color: rgba(210, 210, 213, 0.44);
        border-radius: 16px;
        border: 4px solid transparent;
        background-clip: content-box;
        box-shadow: none;
    }

    ::-webkit-scrollbar-thumb:hover {
        background-color: #a8bbbf;
    }

    .base-menu-link {
        .base-menu-icon {
            @apply text-text-subtle;
        }
    }































    .stateColorDefault {
        background-color: #FCFCFBFF;
        border: 1px solid #afafaf;
        color: #696868;
    }

    .stateColorRed {
        background: rgba(100, 26, 84, 0.15);
        border: 1px solid #641A54;
        color: #641A54;
    }

    .stateColorPink {
        background: rgba(218, 63, 135, 0.15);
        border: 1px solid #DA3F87;
        color: #DA3F87
    }

    .stateColorOrange {
        background: rgba(235, 122, 61, 0.15);
        border: 1px solid #EB7A3D;
        color: #EB7A3D;
    }

    .stateColorYellow {
        background: rgba(241, 182, 64, 0.15);
        border: 1px solid #F1B640;
        color: #F1B640;
    }

    .stateColorGreen {
        background: rgba(134, 197, 84, 0.15);
        border: 1px solid #86C554;
        color: #86C554;
    }

    .stateColorDarkGreen {
        background: rgba(46, 170, 99, 0.15);
        border: 1px solid #2EAA63;
        color: #2EAA63;
    }

    .stateColorDodgeBlue {
        background: rgba(61, 195, 203, 0.15);
        border: 1px solid #3DC3CB;
        color: #3DC3CB;
    }

    .stateColorBlue {
        background: rgba(22, 143, 195, 0.15);
        border: 1px solid #168FC3;
        color: #168FC3;
    }

    .stateColorGreenBlue {
        background: rgba(77, 144, 142, 0.15);
        border: 1px solid #4D908E;
        color: #4D908E;
    }

    .stateColorDarkBlue {
        background: rgba(33, 72, 92, 0.15);
        border: 1px solid #21485C;
        color: #21485C;
    }




    .transition-enter-active {
        @apply transition ease-out duration-100;
    }

    .transition-enter-from,
    .transition-leave-to {
        @apply transform opacity-0 scale-95;
    }

    .transition-enter-to,
    .transition-leave-from {
        @apply transform opacity-100 scale-100;
    }

    .transition-leave-active {
        @apply transition ease-in duration-75;
    }


    .event-disabled {
        background-image: repeating-linear-gradient(
            -45deg,
            transparent 0,
            transparent 10px,
            color-mix(in srgb, var(--event-contrast-color, currentColor) 18%, transparent) 10px,
            color-mix(in srgb, var(--event-contrast-color, currentColor) 18%, transparent) 20px
        );
    }

.tooltip {
    @apply invisible absolute;
}

.has-tooltip:hover .tooltip {
    margin-top: -1rem;
    margin-left: 1.5rem;
    @apply visible z-50;
}

.artwork {
    .chip {
        @apply inline-flex items-center rounded-full px-2.5 py-1 text-[11px] font-medium ring-1 ring-inset
        bg-white/10 ring-white/20;
    }

    /* Alias auf BaseUIButton variant="secondary" (Design-Basis v1) */


    .artwork-container {
        @apply mx-auto container px-4 sm:px-6 md:px-6 lg:px-8 xl:px-8 2xl:px-8 mt-5 pb-20;
    }

    /* Volle Breite für Board-/Tabellen-Seiten (z.B. Kanban), Padding identisch zum artwork-container */
    .artwork-container-fluid {
        @apply w-full max-w-none px-4 sm:px-6 md:px-6 lg:px-8 xl:px-8 2xl:px-8 mt-5 pb-20;
    }

    /* Linksverankerte Projektseiten (Designkonzept „Ankerlinie = Seitenkante"):
       -page = volle Breite mit Seitenpadding (Kopfzeile), -column = an derselben
       Ankerlinie hängende Inhaltsspalte mit 1536px-Deckel. Werkzeug-Komponenten
       (Kalender/Schichten/Budget/Terminliste) laufen ohne Wrapper vollbreit. */
    .artwork-anchored-page {
        @apply w-full max-w-none px-4 sm:px-6 md:px-6 lg:px-8 xl:px-8 2xl:px-8;
    }
    .artwork-anchored-column {
        @apply w-full max-w-[96rem] px-4 sm:px-6 md:px-6 lg:px-8 xl:px-8 2xl:px-8;
    }

    .background-color {
        @apply bg-white;
    }

    /* Layout Helpers */
    .ui-grid-2 { @apply grid grid-cols-1 gap-2 md:grid-cols-2; }
    .ui-hint { @apply text-[12px] text-zinc-500; }
    .ui-error { @apply text-[12px] text-rose-600; }

    /* Card */
    .ui-card { @apply rounded-lg border border-zinc-200 bg-white/90 p-3; }
    .ui-card-header { @apply flex items-center gap-2 mb-2; }
    .ui-card-title { @apply text-[13.5px] font-semibold text-zinc-900; }
    .ui-dot { @apply inline-block size-2.5 rounded-full; }
    /* Aliasse auf die BaseUIButton-Varianten (Design-Basis v1) — Templates nutzen sie noch direkt */
    .ui-button { @apply select-none inline-flex items-center gap-x-1.5 justify-center rounded-md border border-border bg-surface min-h-8 px-3 text-[13px] font-medium text-text cursor-pointer hover:bg-surface-sunken transition-[background-color,border-color] duration-150 ease-out disabled:bg-surface-canvas disabled:text-text-subtle disabled:border-border-subtle disabled:cursor-not-allowed;}
    .ui-button-small { @apply select-none inline-flex items-center gap-x-1.5 justify-center rounded-md border border-border bg-surface min-h-7 px-2.5 text-xs font-medium text-text cursor-pointer hover:bg-surface-sunken transition-[background-color,border-color] duration-150 ease-out disabled:bg-surface-canvas disabled:text-text-subtle disabled:border-border-subtle disabled:cursor-not-allowed;}
    .ui-button-add { @apply select-none inline-flex items-center gap-x-1.5 justify-center rounded-md bg-accent-600 text-white border border-accent-600 min-h-8 px-3 text-[13px] font-medium cursor-pointer hover:bg-accent-700 hover:border-accent-700 transition-[background-color,border-color] duration-150 ease-out disabled:bg-surface-canvas disabled:text-text-subtle disabled:border-border-subtle disabled:cursor-not-allowed;}
    .ui-button-add-small { @apply select-none inline-flex items-center gap-x-1.5 justify-center rounded-md bg-accent-600 text-white border border-accent-600 min-h-7 px-2.5 text-xs font-medium cursor-pointer hover:bg-accent-700 hover:border-accent-700 transition-[background-color,border-color] duration-150 ease-out disabled:bg-surface-canvas disabled:text-text-subtle disabled:border-border-subtle disabled:cursor-not-allowed;}
    .ui-button-delete { @apply select-none inline-flex items-center gap-x-1.5 justify-center rounded-md bg-surface text-danger border border-danger-border min-h-8 px-3 text-[13px] font-medium cursor-pointer hover:bg-danger-surface transition-[background-color,border-color] duration-150 ease-out disabled:bg-surface-canvas disabled:text-text-subtle disabled:border-border-subtle disabled:cursor-not-allowed;}


    /* Inputs kompakt */
    .ui-input :deep(input),
    .ui-input { @apply h-10; }

    /* Checkbox kompakt */
    .ui-checkbox { @apply size-4 rounded border-zinc-300 text-indigo-600 focus:ring-indigo-500; }
    .ui-checkbox-emerald { @apply text-emerald-600 focus:ring-emerald-500; }
    .ui-checkbox-amber { @apply text-amber-600 focus:ring-amber-500; }

    /* Project Chip */
    .ui-project-chip { @apply flex items-center gap-2 rounded-md border border-zinc-200 bg-zinc-50 px-3 py-2; }
    .ui-project-link { @apply inline-block max-w-[28rem] truncate text-indigo-600 hover:underline; }


    /* Segment-Schalter */
    .ui-segment {
        @apply inline-flex rounded-md border border-zinc-200 bg-white p-0.5 shadow-sm;
    }
    .ui-segment-btn {
        @apply relative inline-flex items-center justify-center rounded-[6px] px-3 py-1.5 text-[12.5px] text-zinc-700 transition;
    }
    .ui-segment-btn.is-active {
        @apply bg-zinc-100 text-zinc-900;
    }

    /* Buttons */
    .ui-icon-btn {
        @apply inline-flex items-center justify-center rounded-md border border-transparent text-text-subtle hover:text-danger;
    }

    /* Transition */
    .fade-enter-active, .fade-leave-active { transition: opacity .15s ease, transform .15s ease; }
    .fade-enter-from, .fade-leave-to { opacity: 0; transform: translateY(-2px); }

    /* Buttons */

    /* Sticky Footer innerhalb des Modals */
    /* Sticky-Modal-Footer (v2): surface-sunken, Hairline-Oberkante, kein Blur */
    .ui-footer {
        @apply sticky bottom-0 left-0 w-full bg-surface-sunken border-t border-border-subtle pt-2 pb-2 mt-2;
    }

    .ui-lb-btn { /* placeholder, falls extern benötigt */ }


    .card-header {
        @apply flex items-center gap-2 -mt-1;
    }
    .card-dot {
        @apply inline-block size-2 rounded-full;
    }
    .card-title {
        @apply text-[13px] font-semibold text-zinc-900;
    }

    /* --- Helpers --- */
    .hint { @apply text-[12px] text-zinc-500; }
    .err  { @apply text-[12px] text-rose-600; }



    /* --- Listbox default classes via props (keine globalen Änderungen nötig) --- */

    .border-color {
        &.soft-green {
            @apply border-[#edf5ef];
        }

        &.soft-red {
            @apply border-[#f6eaea];
        }

        &.soft-yellow {
            @apply border-[#f8f3dd];
        }
    }



    .aw-checklist-input {
        @apply col-start-1 row-start-1 size-4 appearance-none rounded-sm border border-border bg-surface checked:border-accent-600 checked:bg-accent-600 indeterminate:border-accent-600 indeterminate:bg-accent-600 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent-600 disabled:border-border-subtle disabled:bg-surface-sunken disabled:checked:bg-surface-sunken forced-colors:appearance-auto
    }

    .aw-input-svg {
        @apply pointer-events-none col-start-1 row-start-1 size-3.5 self-center justify-self-center stroke-white group-has-disabled:stroke-gray-950/25 dark:group-has-disabled:stroke-white/25;
    }

}

.timeline-container {
    @apply flex flex-col gap-2 w-full;

    .timeline-dates-container,
    .timeline-times-container {
        @apply flex flex-row gap-2;

        .timeline-date-input,
        .timeline-time-input {
            @apply h-8 placeholder:subpixel-antialiased rounded-md w-full border-border focus:border-accent-600;
        }
    }

    .timeline-error-text {
        @apply text-danger text-xs;
    }

    .timeline-textarea {
        @apply block w-full placeholder:subpixel-antialiased rounded-md border-border focus:border-accent-600;
    }
}


.base-menu-link {
    @apply cursor-pointer flex items-center px-4 py-2 text-sm subpixel-antialiased;

    .base-menu-icon {
        @apply mr-3 h-5 w-5;
    }
}

.input {
    @apply rounded-md px-2.5 w-full text-sm border border-border bg-surface text-text placeholder-text-subtle placeholder-transparent transition-[border-color,background-color] duration-150 ease-out;

    &:disabled {
        @apply bg-surface-sunken text-text-subtle cursor-not-allowed;
    }

}

.input-label {
    @apply cursor-text px-1 absolute left-0 -top-6 peer-placeholder-shown:text-xs transition-all subpixel-antialiased peer-placeholder-shown:text-text-subtle peer-placeholder-shown:left-2 pointer-events-none;
}

.input-checklist {
    color: var(--color-success);
    @apply border border-border rounded-md p-2.5 text-sm text-left;
}

.input-checklist-small {
    color: var(--color-success);
    @apply border border-border rounded-md p-0.5 text-sm text-left;
}

.input-checklist-dark {
    color: var(--color-success);
    @apply rounded-md p-2 text-sm text-left;
}

.menu-button {
    @apply w-full flex items-center justify-between border border-border bg-surface rounded-md px-3 min-h-8 py-1 text-sm placeholder-transparent;

    span {
        @apply text-left float-left text-sm placeholder-transparent text-text-muted;
    }
}

.menu-button-no-padding {
    @apply w-full flex items-center justify-between border border-border bg-surface rounded-md px-3 min-h-8 text-sm placeholder-transparent;

    span {
        @apply text-left float-left text-sm placeholder-transparent text-text-muted;
    }
}

.menu-button-no-flex {
    @apply w-full block border border-border bg-surface rounded-md px-3 min-h-8 py-1 text-sm placeholder-transparent;

    span {
        @apply text-left float-left text-sm placeholder-transparent text-text-muted;
    }
}


.btn-icon {
    @apply grid place-items-center size-8 rounded-md border border-border bg-surface text-text hover:bg-surface-sunken transition-colors;
}

/* Inputs */
.form-input {
    @apply w-full rounded-md border border-border bg-surface py-2 pr-3 text-sm text-text placeholder:text-text-subtle focus:border-accent-600;
}
.form-textarea {
    @apply rounded-md border border-border bg-surface py-2.5 pr-3 pl-3 text-sm text-text placeholder:text-text-subtle focus:border-accent-600;
}

/* Position Picker spots */
.picker-spot {
    @apply absolute h-20 w-28 rounded-lg border-2 border-dashed border-white/70 bg-white/20 hover:bg-white/30 focus:outline-none transition-colors;
}

/* Scrollbar (WebKit) */
::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}
::-webkit-scrollbar-thumb {
    background-color: rgba(24, 24, 27, 0.12);
    border-radius: 999px;
    border: 2px solid transparent;
    background-clip: content-box;
}
::-webkit-scrollbar-track {
    background: transparent;
}

/*
 * Horizontale Scrollbarkeit immer sichtbar machen (Pflichtenheft 3.4).
 * Wenn ein Container horizontal scrollbar ist, soll der Scrollbalken dauerhaft
 * sichtbar sein – nicht nur als Overlay beim Scrollen (macOS/WebKit-Verhalten).
 * Greift global über die in der App genutzten Tailwind-Overflow-Utilities.
 */
.overflow-x-auto,
.overflow-x-scroll,
.overflow-auto,
.overflow-scroll {
    scrollbar-width: thin; /* Firefox */
    scrollbar-color: rgba(24, 24, 27, 0.25) transparent;
}

.overflow-x-auto::-webkit-scrollbar,
.overflow-x-scroll::-webkit-scrollbar,
.overflow-auto::-webkit-scrollbar,
.overflow-scroll::-webkit-scrollbar {
    -webkit-appearance: none; /* erzwingt klassische, dauerhaft sichtbare Scrollbalken statt Overlay */
    height: 10px;
}

/*
 * Bewusstes Opt-out: .no-scrollbar (z.B. Filter-Chip-Reihen) bleibt ohne Balken.
 * !important, damit das Opt-out unabhängig von der Quellreihenfolge gewinnt.
 */
.no-scrollbar {
    scrollbar-width: none !important; /* Firefox */
    -ms-overflow-style: none !important; /* IE/Edge alt */
}
.no-scrollbar::-webkit-scrollbar {
    display: none !important;
}



.modal {
    @apply relative transform bg-white text-left shadow-2xl transition-all sm:my-8 sm:w-full rounded-lg;
}

.modal-header {
    @apply mb-6;

    .full-modal {
        @apply px-6 pt-4 pb-2;
    }

    .not-full-modal {
        @apply pt-4 pb-2;
    }

    .model-title {
        @apply font-medium font-lexend text-zinc-900;
    }

    .modal-description {
        @apply text-gray-400 font-lexend font-light;
    }
}


.checklist-card {
    @apply w-72 min-w-72 rounded-lg;

    .checklist-card-header {
        @apply  px-4 py-2 flex items-center justify-between text-white truncate rounded-t-lg;
    }

    .checklist-card-body {
        @apply bg-gray-100 rounded-b-lg;

        .checklist-card-body-project {
            @apply w-full text-xs mb-2 flex items-start gap-x-2 px-4 py-2;
        }

        .checklist-body-add-task {
            @apply px-5 py-2.5 cursor-pointer flex items-center text-center justify-center;
        }
    }
}


.checklist-listview-head-bar {
    @apply bg-gray-50 px-5 py-2.5 rounded-lg;

    .head-bar-grid {
        @apply grid grid-cols-12 grid-rows-1 gap-6;
    }
}

.checklist-listview-container {
    @apply space-y-5 mt-5 min-h-screen;
}



.dp__btn {
    @apply !font-lexend !text-xs;
}

.dp__menu {
    @apply !rounded-b-3xl !rounded-tr-3xl !font-lexend;
}

.dp__action_row {
    @apply !px-4 !py-3;
}

.dp__action_cancel {
    @apply !font-lexend !px-4 !py-4
}

.dp__action_select {
    @apply !font-lexend !px-4 !py-4
}

.badge {
    @apply inline-flex items-center gap-1.5 rounded-full bg-white px-2.5 py-0.5 text-[11px] text-zinc-700 ring-1 ring-zinc-200;
}


/* === PrimeVue Tooltip: global width/word-wrap + visuals (aw-tooltip) ===
   Ensures tooltips don't collapse to 1-char width after horizontal scroll.
   Applied to any tooltip created with directive option { class: 'aw-tooltip' }.
*/
.aw-tooltip {
    /* Tunable via CSS var if needed per scope */
    --aw-tooltip-min-width: 12ch;   /* ensures ~10–14 chars fit per line */
    --aw-tooltip-max-width: 24rem;  /* ≈ Tailwind max-w-sm */
    z-index: 9999 !important;       /* ensure tooltip renders above HeadlessUI Float portals */
}
/* PrimeVue-Theme deckelt .p-tooltip auf 12.5rem — hier gilt stattdessen die CSS-Variable */
.aw-tooltip.p-tooltip {
    max-width: var(--aw-tooltip-max-width);
}
/* Breitere Variante für erklärende Tooltips (per tooltip-css-class="aw-tooltip-wide") */
.aw-tooltip-wide {
    --aw-tooltip-max-width: 32rem;
}
/* Aufzählungen in HTML-Tooltips (allow-html): echte Liste mit hängendem Einzug */
.aw-tooltip .p-tooltip-text ul {
    margin: 0.375rem 0 0;
    padding-left: 1.1rem;
    list-style: disc;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}
.aw-tooltip .p-tooltip-text {
    display: inline-block;
    min-width: var(--aw-tooltip-min-width);
    max-width: var(--aw-tooltip-max-width);
    white-space: pre-line; /* wie normal, erhält aber \n → mehrzeilige Tooltips (z.B. Aufzählungen) */
    overflow-wrap: anywhere; /* modern, allows breaking long tokens */
    word-break: break-word;  /* fallback for older browsers */

    /* Visuals aligned with previous Tailwind classes */
    background-color: var(--color-primary, #222);
    color: #fff; /* contrast text */
    font-weight: 500; /* ~font-medium */
    font-size: 0.75rem; /* ~text-xs */
    padding: 0.25rem 0.5rem; /* ~px-2 py-1 */
    border: 1px solid #1f2937; /* ~border-gray-800 */
    border-radius: 0.5rem; /* rounded-md/lg */
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1); /* ~shadow-lg */
}

/* ============================================================
   Schichtplan — Personenbereich (unteres Panel in ShiftPlan.vue)
   Zwei Farbwelten über EINEN Variablensatz (--uo-*): Standard ist die
   bisherige dunkle Fläche (Band-Ink), `.user-overview-light` schaltet
   pro Person auf die helle Design-Fläche um. Die Werte auf :root sind
   bewusst die Dunkel-Werte, damit geteilte Komponenten (DragElement im
   Projekt-Schichten-Tab) außerhalb des Panels unverändert aussehen.
   Statusfarben: auf Dunkel die hellen *-border-Töne (lesbar auf Ink),
   auf Hell die kräftigen Basistöne (AA auf Weiß).
   ============================================================ */
:root {
    --uo-bg:            var(--color-surface-inverse);
    --uo-text:          #FFFFFF;
    --uo-text-muted:    rgba(255, 255, 255, 0.75);
    --uo-text-subtle:   rgba(255, 255, 255, 0.6);
    --uo-line:          rgba(255, 255, 255, 0.3);
    --uo-line-strong:   rgba(255, 255, 255, 0.4);
    --uo-chip-bg:       rgba(255, 255, 255, 0.1);
    --uo-chip-text:     var(--color-text-inverse);
    --uo-cell-bg:       rgba(244, 245, 246, 0.1);
    --uo-cell-ring:     transparent;
    --uo-hover-ring:    rgba(255, 255, 255, 0.4);
    --uo-active-ring:   rgba(255, 255, 255, 0.7);
    --uo-success-text:  var(--color-success-border);
    --uo-danger-text:   var(--color-danger-border);
    --uo-warning-text:  var(--color-warning-border);
    --uo-orange-text:   #F08B32;
    --uo-teal-text:     var(--color-special-teal-border);
    --uo-staff-none-bg:    rgba(255, 255, 255, 0.1);
    --uo-staff-none-text:  rgba(255, 255, 255, 0.5);
    --uo-staff-low-bg:     color-mix(in srgb, var(--color-danger) 25%, transparent);
    --uo-staff-low-text:   var(--color-danger-surface);
    --uo-staff-partial-bg: color-mix(in srgb, var(--color-warning) 25%, transparent);
    --uo-staff-partial-text: var(--color-warning-surface);
    --uo-staff-full-bg:    color-mix(in srgb, var(--color-success) 25%, transparent);
    --uo-staff-full-text:  var(--color-success-surface);
    --uo-kw-attention-bg:   color-mix(in srgb, var(--color-warning) 50%, transparent);
    --uo-kw-attention-ring: color-mix(in srgb, var(--color-warning-border) 70%, transparent);
    --uo-kw-requested-bg:   color-mix(in srgb, var(--color-accent-500) 50%, transparent);
    --uo-kw-requested-ring: color-mix(in srgb, var(--color-accent-200) 70%, transparent);
    --uo-kw-committed-bg:   color-mix(in srgb, var(--color-success) 50%, transparent);
    --uo-kw-committed-ring: color-mix(in srgb, var(--color-success-border) 70%, transparent);
}
.user-overview-light {
    --uo-bg:            var(--color-surface-canvas);
    --uo-text:          var(--color-text);
    --uo-text-muted:    var(--color-text-muted);
    --uo-text-subtle:   var(--color-text-subtle);
    --uo-line:          var(--color-border);
    --uo-line-strong:   var(--color-border-strong);
    --uo-chip-bg:       rgba(28, 31, 36, 0.08);
    --uo-chip-text:     var(--color-text);
    --uo-cell-bg:       var(--color-surface);
    --uo-cell-ring:     var(--color-border-subtle);
    --uo-hover-ring:    var(--color-border-strong);
    --uo-active-ring:   var(--color-text);
    --uo-success-text:  var(--color-success);
    --uo-danger-text:   var(--color-danger);
    --uo-warning-text:  var(--color-warning);
    --uo-orange-text:   var(--color-special-orange);
    --uo-teal-text:     var(--color-special-teal);
    --uo-staff-none-bg:    rgba(28, 31, 36, 0.08);
    --uo-staff-none-text:  var(--color-text-subtle);
    --uo-staff-low-bg:     var(--color-danger-surface);
    --uo-staff-low-text:   var(--color-danger);
    --uo-staff-partial-bg: var(--color-warning-surface);
    --uo-staff-partial-text: var(--color-warning);
    --uo-staff-full-bg:    var(--color-success-surface);
    --uo-staff-full-text:  var(--color-success);
    --uo-kw-attention-bg:   var(--color-warning-surface);
    --uo-kw-attention-ring: var(--color-warning-border);
    --uo-kw-requested-bg:   var(--color-accent-50);
    --uo-kw-requested-ring: var(--color-accent-200);
    --uo-kw-committed-bg:   var(--color-success-surface);
    --uo-kw-committed-ring: var(--color-success-border);
}