/* =============================================================================
   modules-generic.css - aspectul modulelor FĂRĂ override de temă „primărie".
   =============================================================================

   Un modul cu rute publice care nu are `engine/themes/primarie/modules/{slug}.php`
   se randează cu marcajul generic al modulului (`.pub-form`, `.tbl`, `.card`, …)
   în interiorul acestei teme. Marcajul acela e scris pentru tema hibridă, unde
   `.card` are padding propriu; aici `.card` e clasa Bootstrap, al cărei padding
   stă în `.card-body` - deci conținutul ajungea lipit de chenar.

   Azi calea asta e folosită de: alerts, authorizations, info_requests,
   meals_menu, page_feedback. Fișierul le acoperă pe toate deodată și pe cele
   viitoare, ca un modul nou să arate corect din prima, fără override.

   Nu se modifică style.css - e copie verbatim a referinței.
   ============================================================================= */

/* Variabile pe care le presupune marcajul generic, mapate pe cele ale temei.
   ATENȚIE: doar cele care NU există deja. `--primary: var(--primary, …)` ar fi o
   definiție circulară - variabila devine invalidă și tot ce o folosea rămâne fără
   culoare (pastilele de an din raportul anual erau albe pe alb). --primary și
   --accent sunt definite de style.css; aici se mapează doar ce lipsește. */
.content-main {
    --radius: var(--border-radius, 8px);
}

/* ---------- Formulare publice ---------- */
.content-main .pub-form.card {
    padding: 1.25rem 1.25rem 1rem;
    border: 1px solid var(--border, #dee2e6);
    border-radius: 10px;
    box-shadow: 0 2px 12px rgba(0, 51, 102, .06);
    /* 720px e lățimea potrivită cât timp formularul stă între două bare laterale. Pe
       paginile de formular, care sunt pe toată lățimea (vezi primarie_is_form_page),
       limita s-ar vedea ca un card mic pierdut în stânga unui ecran gol. */
    max-width: 720px;
}
.page-layout-home .content-main .pub-form.card { max-width: none; }
/* Două coloane pentru câmpurile scurte: formularul devine vizibil dintr-un ecran,
   fără derulare. Marcajul generic e o listă de <label>-uri, deci grila se aplică pe
   formular, nu pe fiecare câmp - nu e nevoie de clase în modul. */
.content-main .pub-form.card {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .65rem 1rem;
    align-items: start;
}
.content-main .pub-form label {
    display: block;
    margin: 0;
    font-weight: 600;
    font-size: .875rem;
    color: var(--primary, #003366);
}
/* Câmpurile lungi și butonul ocupă toată lățimea. `:has()` ține marcajul modulului
   neatins; unde nu e suportat, câmpurile rămân pe o coloană - degradare acceptabilă. */
.content-main .pub-form label:has(textarea),
.content-main .pub-form label:has(select),
/* Câmpuri care primesc text lung: pe jumătate de rând ar fi prea înguste, iar dacă
   sunt impare lasă un gol vizibil lângă ele. Lista e scurtă și explicită - numele
   sunt cele folosite de modulele fără override. */
.content-main .pub-form label:has(input[name="subject"]),
.content-main .pub-form label:has(input[name="title"]),
.content-main .pub-form > button,
.content-main .pub-form > p,
.content-main .pub-form > .msg-ok,
.content-main .pub-form > .msg-err { grid-column: 1 / -1; }
.content-main .pub-form > button { justify-self: start; }
/* Steluța de câmp obligatoriu, discretă dar vizibilă. */
.content-main .pub-form .req { color: var(--danger, #dc3545); font-weight: 700; }
.content-main .pub-form input,
.content-main .pub-form textarea,
.content-main .pub-form select {
    width: 100%;
    margin-top: .3rem;
    padding: .5rem .7rem;
    font: inherit;
    font-weight: 400;
    color: inherit;
    background: var(--bg-white, #fff);
    border: 1px solid var(--border, #dee2e6);
    border-radius: 6px;
    transition: border-color .15s, box-shadow .15s;
}
.content-main .pub-form textarea { min-height: 110px; resize: vertical; }
.content-main .pub-form input:focus,
.content-main .pub-form textarea:focus,
.content-main .pub-form select:focus {
    outline: none;
    border-color: var(--accent, #0078D4);
    box-shadow: 0 0 0 .2rem rgba(0, 120, 212, .15);
}
/* Honeypot-ul rămâne ascuns; regula de lățime de mai sus nu trebuie să-l reafișeze. */
.content-main .pub-form input[type="hidden"],
.content-main .pub-form input[name="website"] { display: none; }

.content-main .pub-form button {
    padding: .5rem 1.4rem;
    font-weight: 600;
    color: #fff;
    background: var(--primary, #003366);
    border: 1px solid var(--primary, #003366);
    border-radius: 6px;
    cursor: pointer;
    transition: background .15s;
}
.content-main .pub-form button:hover { background: var(--secondary, #005B96); }

.content-main .gdpr-note {
    margin-top: .75rem;
    font-size: .8rem;
    line-height: 1.45;
    color: var(--text-muted, #6c757d);
}

/* ---------- Tabele generice ---------- */
.content-main .tbl {
    width: 100%;
    border-collapse: collapse;
    margin: 1rem 0;
    border: 1px solid var(--border, #dee2e6);
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 2px 12px rgba(0, 51, 102, .06);
}
.content-main .tbl thead th {
    padding: .7rem 1rem;
    font-size: .78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    text-align: left;
    white-space: nowrap;
    color: var(--primary, #003366);
    background: var(--bg-main, #F5F6FA);
    border-bottom: 2px solid var(--border, #dee2e6);
}
.content-main .tbl td {
    padding: .65rem 1rem;
    vertical-align: middle;
    border-bottom: 1px solid var(--border, #dee2e6);
}
.content-main .tbl tbody tr:last-child td { border-bottom: none; }
.content-main .tbl tbody tr:hover { background: rgba(0, 120, 212, .03); }

/* ---------- Casete de stare ---------- */
.content-main .msg-ok,
.content-main .msg-err {
    display: block;
    padding: .7rem 1rem;
    margin: .8rem 0;
    font-size: .9rem;
    font-weight: 600;
    border: 1px solid;
    border-radius: 8px;
}
.content-main .msg-ok  { color: #146c43; background: #e8f5ee; border-color: #badbcc; }
.content-main .msg-err { color: #b02a37; background: #fdecec; border-color: #f5c2c7; }

/* ---------- Utilitare folosite de marcajul generic ---------- */
.content-main .muted { color: var(--text-muted, #6c757d); }
.content-main .small { font-size: .85rem; }

/* ---------- Contrast ridicat ---------- */
.high-contrast .content-main .pub-form.card,
.high-contrast .content-main .tbl { background: #1a1a1a; border-color: #555; }
.high-contrast .content-main .pub-form label,
.high-contrast .content-main .tbl thead th { color: #FFD700; }
.high-contrast .content-main .tbl thead th { background: #000; }
.high-contrast .content-main .pub-form input,
.high-contrast .content-main .pub-form textarea,
.high-contrast .content-main .pub-form select {
    color: #FFFFFF; background: #000; border-color: #FFFFFF;
}

/* ---------- Ecrane mici ---------- */
@media (max-width: 639.98px) {
    /* Pe telefon, o singură coloană: două câmpuri alăturate ar fi prea înguste. */
    .content-main .pub-form.card { grid-template-columns: 1fr; padding: 1rem .9rem .85rem; }
    .content-main .tbl thead th,
    .content-main .tbl td { padding: .55rem .6rem; }
}
