/* ==========================================================================
   Organizator Nuntă — foaia de stil a aplicației (Bootstrap 5.3)
   Ordine: 1. tokens  2. bază  3. shell layout  4. componente  5. utilitare
   ========================================================================== */

/* 1. TOKENS ================================================================ */

:root {
    --on-font: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
    /* serifa editorială folosită pe landing — o reluăm pe titlurile de autentificare */
    --on-serif: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, Georgia, "Times New Roman", serif;

    /* paletă — construită în jurul gradientului de brand roz → auriu */
    --on-primary: #c75978;
    --on-primary-hover: #ad4462;
    --on-primary-soft: #fbe9ee;
    --on-accent: #d9a661;
    --on-accent-soft: #fbf1e2;
    --on-gold: #d9a661;

    /* gradientul de brand + culoarea elementelor desenate peste el */
    --on-gradient: linear-gradient(45deg, #c75978 0%, #d9a661 100%);
    --on-gradient-fg: rgba(255, 255, 255, .95);

    /* formă */
    --on-radius: .75rem;
    --on-radius-sm: .5rem;
    --on-shadow: 0 1px 3px rgba(74, 33, 44, .08), 0 4px 14px rgba(74, 33, 44, .06);
    --on-shadow-lg: 0 4px 12px rgba(74, 33, 44, .11), 0 12px 32px rgba(74, 33, 44, .09);

    /* dimensiuni shell */
    --on-sidebar-w: 254px;
    --on-bottomnav-h: 62px;
    --on-topbar-h: 56px;

    /* suprafețe carduri */
    --on-card-bg: #fdf3f6;
    --on-card-accent-bg: #fdf5ea;
    --on-card-fg: #35272b;
    --on-card-border: rgba(199, 89, 120, .18);
    --on-card-accent-border: rgba(217, 166, 97, .3);

    /* culori semantice pentru calendar/tabele */
    --on-weekend-bg: #f7f3f1;
    --on-holiday-bg: #fbf0e0;
    --on-today-bg: #fbe4eb;

    --bs-body-font-family: var(--on-font);
    --bs-primary: var(--on-primary);
    --bs-link-color-rgb: 173, 68, 98;
    --bs-link-hover-color-rgb: 148, 55, 81;
}

[data-bs-theme="light"] {
    --bs-body-bg: #faf7f7;
    --bs-tertiary-bg: #ffffff;
}

[data-bs-theme="dark"] {
    --on-primary: #e58aa4;
    --on-primary-hover: #f0a3b8;
    --on-primary-soft: #3a2129;
    --on-accent: #e6bd80;
    --on-accent-soft: #372b1d;
    --on-gold: #e6bd80;

    --on-card-bg: #2a2124;
    --on-card-accent-bg: #2c2620;
    --on-card-fg: #ece2e5;
    --on-card-border: rgba(229, 138, 164, .16);
    --on-card-accent-border: rgba(230, 189, 128, .2);

    --on-weekend-bg: #262121;
    --on-holiday-bg: #322a20;
    --on-today-bg: #3b2730;

    --on-shadow: 0 1px 3px rgba(0, 0, 0, .35), 0 4px 14px rgba(0, 0, 0, .25);
    --on-shadow-lg: 0 4px 12px rgba(0, 0, 0, .4), 0 12px 32px rgba(0, 0, 0, .3);

    --bs-body-bg: #191416;
    --bs-tertiary-bg: #211b1e;
    --bs-link-color-rgb: 229, 138, 164;
    --bs-link-hover-color-rgb: 240, 163, 184;
}

/* 2. BAZĂ ================================================================== */

body {
    font-family: var(--on-font);
    -webkit-tap-highlight-color: transparent;
    overflow-x: hidden;   /* nicio pagină nu trebuie să scrolleze lateral pe mobil */
}

h1, h2, h3, h4, h5, h6 { font-weight: 600; }

a { text-decoration: none; }
a:hover { text-decoration: underline; }

/* butoane primare pe paleta aplicației */
.btn-primary {
    --bs-btn-bg: var(--on-primary);
    --bs-btn-border-color: var(--on-primary);
    --bs-btn-hover-bg: var(--on-primary-hover);
    --bs-btn-hover-border-color: var(--on-primary-hover);
    --bs-btn-active-bg: var(--on-primary-hover);
    --bs-btn-active-border-color: var(--on-primary-hover);
    --bs-btn-disabled-bg: var(--on-primary);
    --bs-btn-disabled-border-color: var(--on-primary);
    --bs-btn-color: #fff;
    --bs-btn-hover-color: #fff;
    --bs-btn-active-color: #fff;
    --bs-btn-disabled-color: #fff;
}

.btn { border-radius: var(--on-radius-sm); }

/* Corecţii de contrast: galbenul implicit al Bootstrap e ilizibil pe alb,
   iar varianta „dark" dispare complet pe fundal întunecat. */
.btn-outline-warning {
    --bs-btn-color: #8a5c11;
    --bs-btn-border-color: var(--on-gold);
    --bs-btn-hover-bg: var(--on-gold);
    --bs-btn-hover-border-color: var(--on-gold);
    --bs-btn-hover-color: #000;
}
[data-bs-theme="dark"] .btn-outline-dark {
    --bs-btn-color: #ced4da;
    --bs-btn-border-color: #6c757d;
    --bs-btn-hover-bg: #ced4da;
    --bs-btn-hover-color: #000;
    --bs-btn-hover-border-color: #ced4da;
}
[data-bs-theme="dark"] .btn-outline-secondary {
    --bs-btn-color: #c3cac6;
    --bs-btn-border-color: #6c757d;
}
[data-bs-theme="dark"] .badge.text-bg-dark {
    background-color: #495057 !important;
    color: #f1f3f5 !important;
}

.form-control, .form-select {
    border-radius: var(--on-radius-sm);
}
.form-control:focus, .form-select:focus {
    border-color: var(--on-primary);
    box-shadow: 0 0 0 .2rem rgba(199, 89, 120, .2);
}

/* input date/time: ascunde câmpul AM/PM pe webkit (preluat din vechiul header) */
.without::-webkit-datetime-edit-ampm-field { display: none; }

/* scrollbar discret */
::-webkit-scrollbar { width: 10px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
    background: rgba(128, 128, 128, .35);
    border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover { background: rgba(128, 128, 128, .55); }

/* 3. SHELL LAYOUT ========================================================== */

/* `.has-chrome` = browser normal (are sidebar/bottom nav/top bar)
   `.is-mobile-app` = WebView-ul aplicației native, care își desenează
   propriul chrome; aici nu trebuie niciun offset de layout. */

.app-main {
    padding: 1rem;
}

/* paginile îşi păstrează wrapperul .container-fluid; padding-ul e deja pe .app-main */
.app-main > .container-fluid {
    padding-left: 0;
    padding-right: 0;
}

.has-chrome .app-main {
    padding-top: calc(var(--on-topbar-h) + 1rem);
    padding-bottom: calc(var(--on-bottomnav-h) + env(safe-area-inset-bottom) + 1rem);
}

@media (min-width: 992px) {
    .has-chrome .app-main {
        margin-left: var(--on-sidebar-w);
        padding: 1.5rem 2rem;
    }
}

.is-mobile-app .app-main {
    margin-left: 0 !important;
    padding-top: 1rem;
    padding-bottom: 1rem;
}

/* --- bara de sus (mobil) --- */
.app-topbar {
    position: fixed;
    top: 0; left: 0; right: 0;
    height: var(--on-topbar-h);
    z-index: 1030;
    display: flex;
    align-items: center;
    gap: .6rem;
    padding: 0 1rem;
    background: var(--on-gradient);
    color: var(--on-gradient-fg);
    border-bottom: 0;
    box-shadow: 0 1px 8px rgba(74, 33, 44, .18);
}
/* butonul de temă din bara colorată trebuie să rămână alb, nu „text-body" */
.app-topbar .btn-link, .app-topbar .btn-link:hover, .app-topbar .btn-link:focus {
    color: var(--on-gradient-fg) !important;
}

.app-topbar-brand {
    display: flex;
    align-items: center;
    gap: .55rem;
    font-weight: 600;
    color: var(--on-gradient-fg);
    line-height: 1.1;
}
.app-topbar-brand:hover { text-decoration: none; color: var(--on-gradient-fg); }
/* fără min-width:0 numele lung ar împinge butonul de temă în afara ecranului */
.app-topbar-brand > span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.app-topbar-brand small {
    display: block;
    font-weight: 400;
    font-size: .75rem;
    color: rgba(255, 255, 255, .8);
}

/* --- sigla aplicației (emblema albă, desenată peste gradient) --- */
.app-brand-logo {
    flex: 0 0 auto;
    width: 2rem;
    height: 2rem;
    object-fit: contain;
}

/* --- sidebar (desktop) --- */
.app-sidebar {
    position: fixed;
    top: 0; left: 0; bottom: 0;
    width: var(--on-sidebar-w);
    z-index: 1030;
    background: var(--bs-tertiary-bg);
    border-right: 1px solid var(--bs-border-color);
}

.app-sidebar-head {
    padding: 1.1rem 1.25rem;
    background: var(--on-gradient);
    color: var(--on-gradient-fg);
    border-bottom: 0;
}
.app-sidebar-brand {
    display: flex;
    align-items: center;
    gap: .6rem;
    font-weight: 600;
    font-size: 1.05rem;
    color: var(--on-gradient-fg);
}
.app-sidebar-brand:hover { text-decoration: none; color: var(--on-gradient-fg); }
.app-sidebar-head .app-brand-logo {
    width: 2.35rem;
    height: 2.35rem;
}
.app-sidebar-user {
    font-size: .8rem;
    color: rgba(255, 255, 255, .82);
    margin-top: .35rem;
}

.app-sidebar-nav {
    padding: .6rem .6rem;
    overflow-y: auto;
}

.app-sidebar-foot {
    padding: .6rem;
    border-top: 1px solid var(--bs-border-color);
}

/* --- link de navigare (folosit și în sidebar și în drawer) --- */
.app-nav-link {
    display: flex;
    align-items: center;
    gap: .75rem;
    width: 100%;
    padding: .6rem .75rem;
    margin-bottom: .15rem;
    border: 0;
    border-radius: var(--on-radius-sm);
    background: transparent;
    color: var(--bs-body-color);
    font-size: .93rem;
    text-align: left;
    transition: background-color .12s ease, color .12s ease;
}
.app-nav-link:hover {
    background: var(--on-primary-soft);
    color: var(--bs-body-color);
    text-decoration: none;
}
.app-nav-link.active {
    background: var(--on-gradient);
    color: var(--on-gradient-fg);
    font-weight: 500;
}
.app-nav-link.active:hover { background: var(--on-gradient); color: var(--on-gradient-fg); }
.app-nav-link.active .badge { background: rgba(255, 255, 255, .25) !important; color: inherit !important; }
.app-nav-link i { width: 1.15rem; text-align: center; opacity: .85; }
.app-nav-link .app-nav-text { flex: 1 1 auto; }

/* separator înaintea grupului de administrare */
.app-nav-sep {
    margin: .5rem .25rem;
    border-top: 1px solid var(--bs-border-color);
}

/* --- antetul drawer-ului (mobil) --- */
.app-drawer-head {
    background: var(--on-gradient);
    color: var(--on-gradient-fg);
}
.app-drawer-head small { color: rgba(255, 255, 255, .82); }
/* butonul de închidere e o iconiţă SVG neagră; pe gradient trebuie albă */
.app-drawer-head .btn-close { filter: brightness(0) invert(1); opacity: .9; }

/* --- bottom nav (mobil) --- */
.app-bottomnav {
    position: fixed;
    bottom: 0; left: 0; right: 0;
    z-index: 1030;
    display: flex;
    height: calc(var(--on-bottomnav-h) + env(safe-area-inset-bottom));
    padding-bottom: env(safe-area-inset-bottom);
    background: var(--bs-tertiary-bg);
    border-top: 1px solid var(--bs-border-color);
}

.app-bottomnav-item {
    flex: 1 1 0;
    min-width: 0;              /* fără asta, eticheta lungă împinge ultimul buton în afara ecranului */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .2rem;
    border: 0;
    background: transparent;
    padding: .35rem .1rem;
    color: var(--bs-secondary-color);
    font-size: .66rem;
    line-height: 1;
}
.app-bottomnav-item span {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.app-bottomnav-item:hover { text-decoration: none; color: var(--bs-body-color); }
.app-bottomnav-item i { font-size: 1.15rem; }
.app-bottomnav-item.active { color: var(--on-primary); font-weight: 600; }
[data-bs-theme="dark"] .app-bottomnav-item.active { color: var(--on-primary-hover); }

/* --- footer --- */
.app-footer {
    color: var(--bs-secondary-color);
}
@media (min-width: 992px) {
    .has-chrome .app-footer { margin-left: var(--on-sidebar-w); }
}

/* 4. COMPONENTE ============================================================ */

/* --- card generic de listă --- */
.app-card {
    background: var(--on-card-bg);
    border: 1px solid var(--on-card-border);
    border-radius: var(--on-radius);
    box-shadow: var(--on-shadow);
    color: var(--on-card-fg);
    transition: box-shadow .15s ease, transform .15s ease;
}
.app-card:hover { box-shadow: var(--on-shadow-lg); }

.app-card.app-card-accent {
    background: var(--on-card-accent-bg);
    border-color: var(--on-card-accent-border);
}

.app-card .card-body { color: var(--on-card-fg); }

/* eticheta „Nume:" / „Suma:" din carduri */
.app-card-label {
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: .02em;
    opacity: .65;
}
.app-card-value { font-weight: 600; }

/* acțiunile din colțul cardului */
.app-card-actions {
    position: absolute;
    top: .5rem;
    right: .75rem;
    display: flex;
    gap: .75rem;
    font-size: .8rem;
}
.app-card-actions a { cursor: pointer; }

/* card „+ Adaugă" */
.app-card-blank {
    border: 2px dashed var(--on-card-border);
    border-radius: var(--on-radius);
    background: transparent;
    color: var(--on-primary);
    min-height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.25rem;
    font-weight: 500;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease;
}
.app-card-blank:hover {
    background: var(--on-primary-soft);
    border-color: var(--on-primary);
    text-decoration: none;
    color: var(--on-primary-hover);
}

/* --- stat tile (dashboard) --- */
.app-stat {
    position: relative;
    display: block;
    height: 100%;
    padding: 1rem 1.1rem;
    border-radius: var(--on-radius);
    border: 1px solid var(--bs-border-color);
    background: var(--bs-tertiary-bg);
    box-shadow: var(--on-shadow);
    color: var(--bs-body-color);
    overflow: hidden;
    transition: box-shadow .15s ease, transform .15s ease;
}
.app-stat:hover {
    text-decoration: none;
    color: var(--bs-body-color);
    box-shadow: var(--on-shadow-lg);
    transform: translateY(-2px);
}
.app-stat-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: .65rem;
    font-size: 1.05rem;
    margin-bottom: .6rem;
}
.app-stat-value {
    font-size: 1.35rem;
    font-weight: 650;
    line-height: 1.2;
}
.app-stat-label {
    font-size: .82rem;
    color: var(--bs-secondary-color);
}
.app-stat-more {
    font-size: .76rem;
    color: var(--bs-secondary-color);
    margin-top: .5rem;
}

/* variantele de culoare ale iconului din stat tile */
.app-stat-icon.tone-primary   { background: rgba(199, 89, 120, .16); color: #ad4462; }
.app-stat-icon.tone-success   { background: rgba(56, 142, 79, .15);  color: #2f7a45; }
.app-stat-icon.tone-warning   { background: rgba(217, 166, 97, .22); color: #9a6b17; }
.app-stat-icon.tone-danger    { background: rgba(190, 76, 76, .15);  color: #a83c3c; }
.app-stat-icon.tone-info      { background: rgba(93, 125, 166, .16); color: #4a6788; }
.app-stat-icon.tone-secondary { background: rgba(126, 118, 121, .16); color: #665e61; }
.app-stat-icon.tone-purple    { background: rgba(142, 124, 195, .17); color: #6b5aa6; }
.app-stat-icon.tone-orange    { background: rgba(217, 154, 91, .18); color: #b1712d; }
.app-stat-icon.tone-copii     { background: rgba(160, 93, 166, .16); color: #86479b; }
.app-stat-icon.tone-vegetarieni { background: rgba(140, 166, 93, .18); color: #6d8542; }
.app-stat-icon.tone-dark      { background: rgba(66, 60, 62, .14);   color: #42383c; }

[data-bs-theme="dark"] .app-stat-icon.tone-primary   { color: #e58aa4; }
[data-bs-theme="dark"] .app-stat-icon.tone-success   { color: #74c98d; }
[data-bs-theme="dark"] .app-stat-icon.tone-warning   { color: #e6bd80; }
[data-bs-theme="dark"] .app-stat-icon.tone-danger    { color: #e08585; }
[data-bs-theme="dark"] .app-stat-icon.tone-info      { color: #93b1d6; }
[data-bs-theme="dark"] .app-stat-icon.tone-secondary { color: #b1a8ab; }
[data-bs-theme="dark"] .app-stat-icon.tone-purple    { color: #b3a4e0; }
[data-bs-theme="dark"] .app-stat-icon.tone-orange    { color: #e0ab72; }
[data-bs-theme="dark"] .app-stat-icon.tone-copii     { color: #d197dd; }
[data-bs-theme="dark"] .app-stat-icon.tone-vegetarieni { color: #b6cd85; }
[data-bs-theme="dark"] .app-stat-icon.tone-dark      { color: #cac2c5; }

/* --- titlul paginii --- */
.app-page-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: 1rem;
}
.app-page-head h1 {
    font-size: 1.35rem;
    font-weight: 650;
    margin: 0;
}

/* --- căutare --- */
.app-search {
    max-width: 420px;
}

/* --- buton flotant de adăugare (mobil) --- */
.add-new-mobile {
    position: fixed;
    right: 1rem;
    bottom: calc(var(--on-bottomnav-h) + env(safe-area-inset-bottom) + .85rem);
    z-index: 1029;
    width: 54px;
    height: 54px;
    border-radius: 50%;
    background: var(--on-gradient);
    box-shadow: var(--on-shadow-lg);
    text-align: center;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background-color .15s ease;
}
.add-new-mobile:hover { filter: brightness(.93); }
.add-new-mobile .fa,
.add-new-mobile .fas,
.add-new-mobile i {
    font-size: 1.3rem;
    color: var(--on-gradient-fg);
    cursor: pointer;
    margin: 0;
    line-height: 1;
}
.is-mobile-app .add-new-mobile { bottom: 1rem; }

/* --- badge-uri proprii (nu există în Bootstrap) --- */
.badge-pink  { color: #7a3b5e; background-color: #f7d9e8; }
.badge-brown { color: #6b4e16; background-color: #efe2c8; }
[data-bs-theme="dark"] .badge-pink  { color: #f7d9e8; background-color: #5a3247; }
[data-bs-theme="dark"] .badge-brown { color: #efe2c8; background-color: #54431f; }

/* --- calendar (lună / săptămână / zi + lista zilei selectate) ---
   Grila are o coloană îngustă în față pentru numărul săptămânii, apoi 7 zile;
   lăţimea ei e singurul lucru care diferă între desktop şi mobil. */
.on-cal {
    background: var(--bs-tertiary-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--on-radius);
    overflow: hidden;
}
#on-cal-wrapper.is-loading { opacity: .55; transition: opacity .15s ease; }

.on-cal-head { padding: .75rem .75rem .25rem; }

/* control segmentat pentru vederi */
.on-cal-views {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .25rem;
    padding: .2rem;
    background: var(--on-primary-soft);
    border-radius: var(--on-radius);
    /* pe ecran lat nu se întinde cât pagina — rămâne un control compact */
    max-width: 24rem;
}
.on-cal-view-btn {
    border: 0;
    background: transparent;
    border-radius: var(--on-radius-sm);
    padding: .4rem .5rem;
    font-size: .85rem;
    font-weight: 600;
    color: var(--on-primary-hover);
    transition: background .15s ease, color .15s ease;
}
.on-cal-view-btn:hover { background: rgba(255, 255, 255, .5); }
.on-cal-view-btn.is-active {
    background: var(--bs-tertiary-bg);
    color: var(--on-primary);
    box-shadow: var(--on-shadow);
}
[data-bs-theme="dark"] .on-cal-view-btn:hover { background: rgba(255, 255, 255, .06); }

.on-cal-period {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    margin-top: .6rem;
    padding: 0 .15rem .4rem;
}
.on-cal-period-label-wrap {
    flex: 1;
    min-width: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    flex-wrap: wrap;
}
.on-cal-period-label {
    font-size: 1.05rem;
    font-weight: 650;
    line-height: 1.2;
    text-align: center;
}
.on-cal-nav {
    flex: 0 0 2.15rem;
    width: 2.15rem;
    height: 2.15rem;
    border: 0;
    border-radius: 50%;
    background: var(--on-primary-soft);
    color: var(--on-primary);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background .15s ease;
}
.on-cal-nav:hover { background: var(--on-accent-soft); }
.on-cal-today-chip {
    border: 0;
    border-radius: 999px;
    padding: .2rem .7rem;
    font-size: .8rem;
    font-weight: 600;
    color: var(--on-primary);
    background: var(--on-primary-soft);
}
.on-cal-today-chip:hover { background: var(--on-accent-soft); }

/* capul de tabel + grila */
.on-cal-weekdays,
.on-cal-grid-month,
.on-cal-grid-week {
    display: grid;
    grid-template-columns: 2.4rem repeat(7, minmax(0, 1fr));
}
.on-cal-grid-day { display: grid; grid-template-columns: minmax(0, 1fr); }

.on-cal-weekdays { border-bottom: 1px solid var(--bs-border-color); }
.on-cal-weekday,
.on-cal-weekno-head {
    padding: .4rem .25rem;
    text-align: center;
    font-size: .78rem;
    font-weight: 650;
    text-transform: uppercase;
    color: var(--bs-secondary-color);
}
.on-cal-weekday.is-weekend { color: var(--on-primary); }
.on-cal-weekno-head,
.on-cal-weekno {
    background: var(--on-primary-soft);
    border-right: 1px solid var(--bs-border-color);
    color: var(--on-primary-hover);
    font-size: .7rem;
}
[data-bs-theme="dark"] .on-cal-weekno-head,
[data-bs-theme="dark"] .on-cal-weekno { color: var(--on-primary); }
.on-cal-weekno {
    display: flex;
    align-items: center;
    justify-content: center;
    border-top: 1px solid var(--bs-border-color);
    font-weight: 650;
}

.on-cal-day {
    position: relative;
    border: 0;
    border-top: 1px solid var(--bs-border-color);
    background: transparent;
    color: inherit;
    min-height: 4.1rem;
    padding: .35rem .2rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .15rem;
    transition: background .15s ease;
}
.on-cal-day:hover { background: var(--on-primary-soft); }
.on-cal-day.is-weekend { background: var(--on-weekend-bg); }
.on-cal-day.is-other-month { opacity: .45; }
.on-cal-day.is-today .on-cal-day-num {
    background: var(--on-today-bg);
    border-radius: 50%;
    width: 1.7rem;
    height: 1.7rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--on-primary-hover);
}
[data-bs-theme="dark"] .on-cal-day.is-today .on-cal-day-num { color: var(--on-primary); }
.on-cal-day.is-holiday { background: var(--on-holiday-bg); }
/* Ziua selectată se umple cu roz de brand. Pe temă închisă roz-ul e deschis,
   deci textul trebuie să fie întunecat, nu alb — altfel numărul dispare. */
.on-cal-day.is-selected {
    background: var(--on-primary);
    color: var(--on-gradient-fg);
}
[data-bs-theme="dark"] .on-cal-day.is-selected { color: #2b1f24; }
[data-bs-theme="dark"] .on-cal-day.is-selected .on-cal-day-count {
    background: rgba(43, 31, 36, .22);
    color: #2b1f24;
}
.on-cal-day.is-selected:hover { background: var(--on-primary-hover); }
.on-cal-day.is-selected .on-cal-day-num,
.on-cal-day.is-selected .on-cal-mark-holiday,
.on-cal-day.is-selected .on-cal-mark-wedding { color: inherit; background: transparent; }

.on-cal-day-num { font-size: .95rem; font-weight: 650; line-height: 1.7rem; }
.on-cal-day-label { font-size: .85rem; color: var(--bs-secondary-color); }
.on-cal-day.is-selected .on-cal-day-label { color: inherit; opacity: .85; }

.on-cal-day-marks { display: inline-flex; gap: .2rem; font-size: .6rem; line-height: 1; }
.on-cal-mark-holiday { color: var(--on-gold); }
.on-cal-mark-wedding { color: var(--on-primary); }

.on-cal-day-count {
    margin-top: auto;
    min-width: 1.05rem;
    height: 1.05rem;
    padding: 0 .3rem;
    border-radius: 999px;
    background: var(--on-primary);
    color: #fff;
    font-size: .65rem;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.on-cal-day.is-selected .on-cal-day-count { background: rgba(255, 255, 255, .28); color: #fff; }

/* vederea „Zi" — o singură celulă, mare */
.on-cal-grid-day .on-cal-day {
    min-height: 6rem;
    justify-content: center;
    gap: .3rem;
}
.on-cal-grid-day .on-cal-day-num { font-size: 2rem; line-height: 1.15; }
.on-cal-grid-day .on-cal-day.is-today .on-cal-day-num { width: 3rem; height: 3rem; }

/* lista zilei selectate */
.on-cal-list {
    border-top: 1px solid var(--bs-border-color);
    padding: 0 .75rem .75rem;
}
.on-cal-list-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    flex-wrap: wrap;
    margin: 0 -.75rem .75rem;
    padding: .7rem .75rem;
    background: var(--on-primary-soft);
}
.on-cal-list-head-text { display: flex; flex-direction: column; min-width: 0; }
.on-cal-list-title { font-weight: 650; }
.on-cal-list-count { font-size: .8rem; color: var(--bs-secondary-color); }
.on-cal-empty { padding: .9rem .25rem; color: var(--bs-secondary-color); font-size: .9rem; }

.on-cal-banner {
    display: flex;
    align-items: center;
    gap: .6rem;
    padding: .6rem .75rem;
    margin-bottom: .6rem;
    border-radius: var(--on-radius-sm);
    border: 1px solid transparent;
}
.on-cal-banner span { display: flex; flex-direction: column; line-height: 1.25; }
.on-cal-banner small { font-size: .72rem; text-transform: uppercase; letter-spacing: .03em; opacity: .8; }
.on-cal-banner.is-wedding {
    background: var(--on-primary-soft);
    border-color: var(--on-card-border);
    color: var(--on-primary-hover);
}
[data-bs-theme="dark"] .on-cal-banner.is-wedding { color: var(--on-primary); }
.on-cal-banner.is-holiday {
    background: var(--on-holiday-bg);
    border-color: var(--on-card-accent-border);
    color: var(--on-gold);
}

.on-cal-item {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: .6rem;
    padding: .6rem .7rem;
    margin-bottom: .5rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--on-radius-sm);
    background: var(--bs-body-bg);
}
.on-cal-item.is-done .on-cal-item-name { text-decoration: line-through; opacity: .65; }
.on-cal-item-tag {
    padding: .2rem .5rem;
    border-radius: 999px;
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .02em;
    white-space: nowrap;
}
.on-cal-item-tag.is-checklist { color: #6b4e16; background: var(--on-accent-soft); }
.on-cal-item-tag.is-event { color: var(--on-primary-hover); background: var(--on-primary-soft); }
[data-bs-theme="dark"] .on-cal-item-tag.is-checklist { color: var(--on-gold); }
[data-bs-theme="dark"] .on-cal-item-tag.is-event { color: var(--on-primary); }
.on-cal-item-main { display: flex; flex-direction: column; min-width: 0; }
.on-cal-item-name { font-weight: 600; }
.on-cal-item-sub { font-size: .78rem; color: var(--bs-secondary-color); }
.on-cal-item-actions { display: flex; align-items: center; gap: .25rem; }
.on-cal-item-action {
    width: 2rem;
    height: 2rem;
    border: 0;
    border-radius: var(--on-radius-sm);
    background: transparent;
    color: var(--bs-secondary-color);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background .15s ease, color .15s ease;
}
.on-cal-item-action:hover { background: var(--on-primary-soft); color: var(--on-primary); }
.on-cal-item-action.is-done { color: var(--bs-success); }
.on-cal-item-action.is-danger:hover { background: rgba(220, 53, 69, .12); color: var(--bs-danger); }

@media (max-width: 575.98px) {
    .on-cal-weekdays,
    .on-cal-grid-month,
    .on-cal-grid-week { grid-template-columns: 1.6rem repeat(7, minmax(0, 1fr)); }

    .on-cal-weekno-head { font-size: 0; }
    .on-cal-day { min-height: 3.3rem; padding: .3rem .1rem; }
    .on-cal-day-num { font-size: .88rem; }
    .on-cal-add-btn { width: 100%; }
    .on-cal-item { grid-template-columns: minmax(0, 1fr) auto; }
    .on-cal-item-tag { grid-column: 1 / -1; justify-self: start; }
}

/* --- rapoarte de administrare --- */
.report-chevron { transition: transform .15s ease; }
.report-trigger.report-trigger-open .report-chevron { transform: rotate(90deg); }
.report-trigger.report-trigger-open { background: var(--on-primary-soft); }
.report-detail-row > td { background: var(--bs-tertiary-bg); }

.report-panel {
    border: 1px solid var(--bs-border-color);
    border-left: 4px solid var(--on-primary);
    border-radius: var(--on-radius-sm);
    padding: .75rem .9rem;
    background: var(--bs-body-bg);
}
.report-panel.tone-warn { border-left-color: #d97706; background: rgba(217, 119, 6, .06); }
.report-panel.tone-ok   { border-left-color: #059669; background: rgba(5, 150, 105, .06); }
.report-panel.tone-info { border-left-color: #4f46e5; background: rgba(79, 70, 229, .06); }

.report-panel-title {
    font-weight: 700;
    font-size: .82rem;
    margin-bottom: .5rem;
}
.report-panel.tone-warn .report-panel-title { color: #b45309; }
.report-panel.tone-ok   .report-panel-title { color: #047857; }
.report-panel.tone-info .report-panel-title { color: #4338ca; }
[data-bs-theme="dark"] .report-panel.tone-warn .report-panel-title { color: #e0a03f; }
[data-bs-theme="dark"] .report-panel.tone-ok   .report-panel-title { color: #4ec98d; }
[data-bs-theme="dark"] .report-panel.tone-info .report-panel-title { color: #9aa4ee; }

.report-panel-head th {
    font-size: .68rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--bs-secondary-color);
}
.report-panel table { background: transparent !important; }
.report-muted { color: var(--bs-secondary-color); }
.report-empty { color: var(--bs-secondary-color); font-size: .85rem; }

/* --- bara de impersonare ------------------------------------------------------
   Vizibilă pe fiecare pagină cât timp administratorul e intrat în contul altui
   utilizator. Deliberat în afara paletei de brand (indigo, nu roz): din interior
   aplicaţia arată identic cu a utilizatorului, iar bara trebuie să se distingă
   dintr-o privire de restul interfeţei. */
.app-impersonare {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .6rem;
    padding: .6rem .9rem;
    border-radius: var(--on-radius-sm);
    background: linear-gradient(45deg, #4f46e5 0%, #7c3aed 100%);
    color: #fff;
    box-shadow: var(--on-shadow);
    font-size: .9rem;
}
.app-impersonare > i { font-size: 1.05rem; }
.app-impersonare-text { flex: 1 1 240px; }
.app-impersonare-mail { opacity: .8; }
.app-impersonare .btn-light {
    --bs-btn-color: #4338ca;
    --bs-btn-hover-color: #312e81;
    font-weight: 600;
    white-space: nowrap;
}

/* --- administrare: lista de utilizatori --- */
.admin-tile {
    display: flex;
    align-items: center;
    gap: .7rem;
    height: 100%;
    padding: .7rem .85rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--on-radius-sm);
    background: var(--bs-tertiary-bg);
    box-shadow: var(--on-shadow);
}
.admin-tile-icon {
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    font-size: .9rem;
    background: var(--on-primary-soft);
    color: var(--on-primary-hover);
}
.admin-tile.tone-ok   .admin-tile-icon { background: rgba(5, 150, 105, .12);  color: #047857; }
.admin-tile.tone-info .admin-tile-icon { background: rgba(79, 70, 229, .12);  color: #4338ca; }
.admin-tile.tone-warn .admin-tile-icon { background: rgba(217, 119, 6, .12);  color: #b45309; }
[data-bs-theme="dark"] .admin-tile.tone-ok   .admin-tile-icon { color: #4ec98d; }
[data-bs-theme="dark"] .admin-tile.tone-info .admin-tile-icon { color: #9aa4ee; }
[data-bs-theme="dark"] .admin-tile.tone-warn .admin-tile-icon { color: #e0a03f; }
.admin-tile-value { font-size: 1.3rem; font-weight: 700; line-height: 1.15; }
.admin-tile-label {
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--bs-secondary-color);
}

.admin-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; }
.admin-chips { display: flex; flex-wrap: wrap; gap: .35rem; }
.admin-chip {
    padding: .32rem .8rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 999px;
    background: var(--bs-tertiary-bg);
    color: var(--bs-secondary-color);
    font-size: .82rem;
    line-height: 1.25;
}
.admin-chip:hover { border-color: var(--on-primary); color: var(--on-primary); }
.admin-chip.is-active { background: var(--on-primary); border-color: var(--on-primary); color: #fff; }

.admin-users th {
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--bs-secondary-color);
    white-space: nowrap;
}
.admin-sortable { cursor: pointer; user-select: none; }
.admin-sort-icon { opacity: .4; margin-left: .15rem; }
.admin-sortable[data-sort-dir="asc"] .admin-sort-icon,
.admin-sortable[data-sort-dir="desc"] .admin-sort-icon { opacity: 1; color: var(--on-primary); }
.admin-users td { vertical-align: middle; }
/* rândul contului propriu — prin variabila de tabel, ca hover-ul să funcţioneze peste el */
.admin-user-row.is-me > td { --bs-table-bg-type: var(--on-primary-soft); }

.admin-user { display: flex; align-items: center; gap: .6rem; }
.admin-avatar {
    flex: 0 0 auto;
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    font-size: .78rem;
    font-weight: 700;
    background: var(--on-primary-soft);
    color: var(--on-primary-hover);
}
.admin-avatar[data-nuanta="1"] { background: rgba(217, 166, 97, .18);  color: #a2731f; }
.admin-avatar[data-nuanta="2"] { background: rgba(79, 70, 229, .14);   color: #4338ca; }
.admin-avatar[data-nuanta="3"] { background: rgba(5, 150, 105, .14);   color: #047857; }
.admin-avatar[data-nuanta="4"] { background: rgba(217, 119, 6, .14);   color: #b45309; }
.admin-avatar[data-nuanta="5"] { background: rgba(14, 116, 144, .14);  color: #0e7490; }
[data-bs-theme="dark"] .admin-avatar[data-nuanta="1"] { color: #e6bd80; }
[data-bs-theme="dark"] .admin-avatar[data-nuanta="2"] { color: #9aa4ee; }
[data-bs-theme="dark"] .admin-avatar[data-nuanta="3"] { color: #4ec98d; }
[data-bs-theme="dark"] .admin-avatar[data-nuanta="4"] { color: #e0a03f; }
[data-bs-theme="dark"] .admin-avatar[data-nuanta="5"] { color: #67c9dd; }

.admin-user-info { min-width: 0; }
.admin-user-name {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem;
    font-weight: 600;
    line-height: 1.25;
}
.admin-user-name .badge {
    font-size: .6rem;
    text-transform: uppercase;
    letter-spacing: .03em;
}
.admin-user-mail { font-size: .8rem; color: var(--bs-secondary-color); word-break: break-word; }
.admin-strong { font-weight: 600; font-size: .88rem; }
.admin-sub { font-size: .76rem; color: var(--bs-secondary-color); }

.admin-actions { display: flex; align-items: center; justify-content: flex-end; gap: .35rem; }
.admin-detail-toggle i { transition: transform .15s ease; }
.admin-detail-toggle.is-open i { transform: rotate(180deg); }

.admin-detail-row > td { background: var(--bs-body-bg); padding: .75rem; }
.admin-detail {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: .35rem .9rem;
}
.admin-detail-item {
    display: flex;
    gap: .4rem;
    font-size: .78rem;
    border-bottom: 1px dashed var(--bs-border-color);
    padding-bottom: .2rem;
}
.admin-detail-key { color: var(--bs-secondary-color); flex: 0 0 40%; }
.admin-detail-val { word-break: break-word; }

/* cei doi miri, cu avatarele suprapuse ca într-o listă de participanţi */
.admin-couple { display: flex; align-items: center; gap: .6rem; }
.admin-couple-avatars { display: flex; flex: 0 0 auto; }
.admin-couple-avatars .admin-avatar + .admin-avatar {
    margin-left: -.65rem;
    box-shadow: 0 0 0 2px var(--bs-tertiary-bg);
}

.admin-progress {
    width: 100%;
    min-width: 70px;
    max-width: 130px;
    height: 6px;
    border-radius: 999px;
    background: var(--bs-secondary-bg);
    overflow: hidden;
}
.admin-progress > span {
    display: block;
    height: 100%;
    border-radius: 999px;
    background: var(--on-primary);
}

@media (max-width: 767.98px) {
    .admin-hide-sm { display: none; }
    .admin-toolbar .app-search { max-width: none; flex: 1 1 100%; }
}

/* --- antetul unei mese (aranjare mese) --- */
.app-masa-head {
    font-size: 1rem;
    font-weight: 650;
    text-align: center;
    margin: 1.25rem 0 .6rem;
    padding: .5rem .75rem;
    border-radius: var(--on-radius-sm);
    background: var(--on-primary-soft);
    color: var(--on-primary-hover);
}
[data-bs-theme="dark"] .app-masa-head { color: var(--on-primary); }

/* --- pagini de autentificare -------------------------------------------------
   Shell-ul comun al paginilor publice login / forgot-password / password-recovery
   (auth-header.inc.php + auth-footer.inc.php). Ţinta vizuală: acelaşi limbaj cu
   landing-ul (serifă pe titluri, gradient roz→auriu, forme rotunjite), dar pe
   tokenii aplicaţiei, ca să funcţioneze identic în temă deschisă şi întunecată. */
.auth-body {
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 4.5rem 1rem 2rem;
    background:
        radial-gradient(1200px 600px at 15% -10%, var(--on-primary-soft), transparent 60%),
        radial-gradient(900px 500px at 100% 110%, var(--on-accent-soft), transparent 55%),
        var(--bs-body-bg);
}

/* bara plutitoare: întoarcerea la site + comutatorul de temă */
.auth-topbar {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    padding: .85rem 1rem;
    z-index: 5;
}
.auth-chip {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    border: 1px solid var(--bs-border-color);
    background: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
    border-radius: 999px;
    padding: .4rem .9rem;
    font-size: .85rem;
    font-weight: 500;
    line-height: 1.2;
    box-shadow: var(--on-shadow);
}
.auth-chip:hover { color: var(--on-primary); text-decoration: none; }
.auth-chip-icon { width: 2.15rem; height: 2.15rem; padding: 0; justify-content: center; }

.auth-wrap { width: 100%; max-width: 470px; }

/* antet de brand */
.auth-head { text-align: center; margin-bottom: 1.4rem; }
.auth-logo {
    width: 72px;
    height: 72px;
    border-radius: 1.25rem;
    box-shadow: var(--on-shadow-lg);
    margin-bottom: .8rem;
}
.auth-brand {
    font-family: var(--on-serif);
    font-size: 1.75rem;
    font-weight: 600;
    letter-spacing: .01em;
    background: var(--on-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    width: fit-content;
    margin: 0 auto .2rem;
}
.auth-sub { color: var(--bs-secondary-color); font-size: .9rem; margin: 0; }

/* ornamentul cu inimă, preluat de pe landing */
.auth-orn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .8rem;
    color: var(--on-primary);
    margin: 1rem 0 1.15rem;
}
.auth-orn::before, .auth-orn::after {
    content: "";
    height: 1px;
    width: 56px;
    background: linear-gradient(90deg, transparent, var(--on-card-border));
}
.auth-orn i { font-size: .7rem; }

/* cardul propriu-zis */
.auth-card {
    border: 1px solid var(--bs-border-color);
    border-radius: 1.25rem;
    background: var(--bs-tertiary-bg);
    box-shadow: var(--on-shadow-lg);
    overflow: hidden;
}
.auth-card-body { padding: 1.35rem 1.15rem 1.5rem; }
@media (min-width: 576px) { .auth-card-body { padding: 1.75rem 1.75rem 1.9rem; } }

/* comutatorul segmentat autentificare / înregistrare */
.auth-switch {
    display: flex;
    gap: .25rem;
    padding: .25rem;
    border-radius: 999px;
    background: var(--bs-secondary-bg);
    margin-bottom: 1.35rem;
}
.auth-switch button {
    flex: 1 1 0;
    border: 0;
    background: transparent;
    border-radius: 999px;
    padding: .5rem .5rem;
    font-size: .92rem;
    font-weight: 600;
    color: var(--bs-secondary-color);
    transition: color .18s ease, background .18s ease;
}
.auth-switch button.is-active {
    background: var(--on-gradient);
    color: var(--on-gradient-fg);
    box-shadow: 0 6px 16px -8px rgba(199, 89, 120, .9);
}

/* titluri şi text introductiv */
.auth-title {
    font-family: var(--on-serif);
    font-size: 1.6rem;
    font-weight: 600;
    text-align: center;
    margin: 0 0 .35rem;
}
.auth-lead {
    text-align: center;
    color: var(--bs-secondary-color);
    font-size: .92rem;
    line-height: 1.55;
    margin: 0 0 1.25rem;
}

/* câmpuri — pastile, cu etichete discrete deasupra */
.auth-form .form-label {
    font-size: .82rem;
    font-weight: 600;
    color: var(--bs-secondary-color);
    margin-bottom: .3rem;
    padding-left: .2rem;
}
.auth-form .form-control, .auth-form .form-select {
    border-radius: 999px;
    padding: .7rem 1.05rem;
    background: var(--bs-body-bg);
}
.auth-form .form-control:focus, .auth-form .form-select:focus {
    border-color: var(--on-primary);
    box-shadow: 0 0 0 .2rem var(--on-primary-soft);
}
.auth-form .form-text { padding-left: .2rem; }

/* butonul de arătare/ascundere a parolei, aşezat în interiorul câmpului */
.auth-pass { position: relative; }
.auth-pass .form-control { padding-right: 3rem; }
.auth-pass-toggle {
    position: absolute;
    top: 50%;
    right: .35rem;
    transform: translateY(-50%);
    width: 2.3rem;
    height: 2.3rem;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--bs-secondary-color);
    line-height: 1;
}
.auth-pass-toggle:hover { color: var(--on-primary); background: var(--on-primary-soft); }

/* indicatorul de putere a parolei + regulile bifate în timp real */
.auth-meter {
    height: 6px;
    border-radius: 999px;
    background: var(--bs-secondary-bg);
    overflow: hidden;
    margin-top: .55rem;
}
.auth-meter-bar {
    height: 100%;
    width: 0;
    border-radius: 999px;
    background: var(--bs-danger);
    transition: width .2s ease, background .2s ease;
}
.auth-rules {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: .15rem .9rem;
    padding: 0;
    margin: .5rem 0 0 .2rem;
    font-size: .78rem;
    color: var(--bs-secondary-color);
}
.auth-rules li { display: inline-flex; align-items: center; gap: .35rem; }
.auth-rules i { font-size: .7rem; }
.auth-rules li.is-ok { color: var(--bs-success); }

/* butonul principal — gradientul de brand */
.btn-auth {
    display: block;
    width: 100%;
    border: 0;
    border-radius: 999px;
    padding: .75rem 1rem;
    font-size: 1rem;
    font-weight: 600;
    background: var(--on-gradient);
    color: var(--on-gradient-fg);
    box-shadow: 0 10px 24px -14px rgba(199, 89, 120, .95);
    transition: transform .15s ease, box-shadow .15s ease, opacity .15s ease;
}
.btn-auth:hover:not(:disabled) {
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 14px 28px -14px rgba(199, 89, 120, 1);
}
.btn-auth:disabled { opacity: .55; box-shadow: none; }

/* legături auxiliare (parolă uitată, comutare formular, înapoi la login) */
.auth-links {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    font-size: .86rem;
    margin: .1rem .2rem 1.1rem;
}
.auth-alt {
    text-align: center;
    font-size: .9rem;
    color: var(--bs-secondary-color);
    margin: 1.15rem 0 0;
}
.auth-alt button {
    border: 0;
    background: transparent;
    padding: 0;
    font-weight: 600;
    color: rgba(var(--bs-link-color-rgb), 1);
}
.auth-alt button:hover { text-decoration: underline; }

/* acordul pentru termeni, la înregistrare */
.auth-terms { font-size: .82rem; color: var(--bs-secondary-color); line-height: 1.5; }

/* captcha de pe recuperarea parolei */
.auth-captcha {
    display: flex;
    align-items: center;
    gap: .6rem;
    padding: .5rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--on-radius);
    background: var(--bs-body-bg);
}
.auth-captcha img { border-radius: var(--on-radius-sm); max-width: 100%; }

/* subsolul cu linkurile legale */
.auth-foot { margin-top: 1.5rem; text-align: center; }
.auth-foot .auth-foot-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .35rem 1rem;
    font-size: .82rem;
    margin-bottom: .4rem;
}

/* în temă întunecată gradientul rămâne acelaşi, deci textul alb de pe el e în regulă;
   se schimbă doar suprafeţele neutre, care altfel ar fi prea deschise */
[data-bs-theme="dark"] .auth-switch { background: rgba(255, 255, 255, .06); }
[data-bs-theme="dark"] .auth-meter { background: rgba(255, 255, 255, .08); }
[data-bs-theme="dark"] .auth-pass-toggle:hover { color: var(--on-primary); background: rgba(255, 255, 255, .07); }

/* 5. UTILITARE ============================================================= */

.cursor-pointer { cursor: pointer; }

/* gradientul de brand ca fundal, cu elementele grafice de deasupra în alb */
.on-gradient {
    background: var(--on-gradient);
    color: var(--on-gradient-fg);
    border: 0;
}
.on-gradient a, .on-gradient .btn-link { color: var(--on-gradient-fg); }
/* acelaşi gradient aplicat pe text (titluri de brand) */
.on-gradient-text {
    background: var(--on-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

/* Fără min-width:0, un element flex nu coboară sub lăţimea conţinutului său
   şi lărgeşte pagina peste viewport pe ecrane înguste. */
.min-w-0 { min-width: 0; }

.delete-button-card-invitat {
    color: var(--bs-danger);
    font-size: .8rem;
    cursor: pointer;
}

.simple-shadow { box-shadow: var(--on-shadow); }

/* fond-uri folosite de statisticile din dashboard (păstrate ca nume) */
.bg-purple { background-color: #6f42c1 !important; }
.bg-orange { background-color: #dc8b35 !important; }
.bg-new-color { background-color: #5d7da6 !important; }
.bg-copii { background-color: #a05da6 !important; }
.bg-vegetarieni { background-color: #8ca65d !important; }

/* tabele fără chenar (aranjare mese, program biserică) */
.borderless td, .borderless th {
    border: none !important;
    padding: .15rem .35rem !important;
}
.borderless { margin-bottom: 0 !important; }
