*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; touch-action: manipulation; }

/* Pe butoane: fara selectare text / meniu CUT-COPY-SELECT ALL la dublu-tap pe touch (Android/iOS). */
button { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }

/* POS = kiosk: NICIO selectare de text / meniu CUT-COPY pe dublu-tap, oriunde (ex. „Online TRXNova").
   Exceptie: inputurile (acolo se tasteaza). Scoped la containerele POS -> nu afecteaza BackOffice. */
.pos-screen, .pos-screen *,
.pos-overlay, .pos-overlay *,
.cfg-overlay, .cfg-overlay * { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.pos-screen input, .pos-screen textarea,
.pos-overlay input, .pos-overlay textarea,
.cfg-overlay input, .cfg-overlay textarea { -webkit-user-select: text; user-select: text; }

:root {
    --navy:       #1a2744;
    --navy-md:    #1e3a6e;
    --blue:       #3d6eb5;
    --blue-lt:    #c8d4e8;
    --blue-lth:   #b0c2de;
    --orange:     #f5821f;
    --orange-hv:  #d4700f;
    --bg:         #f0f2f5;
    --white:      #ffffff;
    --border:     #dde2ec;
    --text:       #1a2744;
    --text-sm:    #5a6a84;
    --green:      #2e9e52;
    --purple:     #8e44ad;

    --gap:    6px;
    --rad:    10px;
    --rad-sm: 6px;
    --fs-xs:  clamp(0.6rem,  1vw,   0.72rem);
    --fs-sm:  clamp(0.68rem, 1.2vw, 0.82rem);
    --fs-md:  clamp(0.76rem, 1.4vw, 0.92rem);
    --fs-lg:  clamp(0.9rem,  1.8vw, 1.1rem);
    --num-h:  clamp(58px, 8.2vh, 84px);   /* +25% total — desktop */
    --act-h:  clamp(42px, 5.5vh, 54px);
    --nav-h:  clamp(44px, 6vh,   56px);
    --hdr-h:  clamp(64px, 9vh,   88px);
}

html, body { height:100%; height:100dvh; width:100%; font-family:'Segoe UI','Segoe UI Symbol','Segoe UI Emoji',Arial,sans-serif; background:var(--bg); overflow:hidden; overscroll-behavior:none; -webkit-text-size-adjust:100%; }
.pos-root   { position:fixed; inset:0; display:flex; flex-direction:column;
              background:var(--navy); box-sizing:border-box;
              /* Inaltimea = bounds-ul REAL al WebView-ului (inset:0), NU 100dvh: pe unele terminale Android
                 (ex. Samsung S25+) 100dvh raporteaza mai putin decat WebView-ul edge-to-edge -> ramanea gol
                 (bg deschis) jos. Overlay-urile (.pos-overlay) foloseau deja inset:0 si se incadrau corect. */
              /* insets reale: Android MAUI injecteaza --safe-top/--safe-bottom (MainActivity); iOS PWA -> env(); web/Windows -> 0 */
              padding-top:    var(--safe-top,    env(safe-area-inset-top,    0px));
              padding-bottom: var(--safe-bottom, env(safe-area-inset-bottom, 0px)); }
/* Plasa de siguranta: host-ul POS are fundal navy -> orice zona neacoperita (sub bare / in timpul
   incarcarii) ramane navy, niciodata alb. Scoped la POS via :has() -> nu afecteaza BackOffice. */
body:has(.pos-root) { background:var(--navy); }
.pos-screen { display:flex; flex-direction:column; flex:1; min-height:0; overflow:hidden; }

/* iOS PWA „Adaugă pe ecranul de start" (standalone): conținutul ar intra sub bara de stare
   (ceas/semnal). Header-ul navy se extinde sub status bar (text alb pe navy), conținutul dedesubt;
   jos lăsăm loc de home indicator (strip navy, nu alb). */
@media (display-mode: standalone) {
    /* status bar = `black` → iOS rezervă bara de stare. Tratăm doar home indicator-ul jos. */
    .pos-root { padding-bottom: env(safe-area-inset-bottom, 0px); box-sizing: border-box; background: var(--navy); }
}

/* ════════════════════ HEADER ════════════════════ */
.pos-header {
    background: var(--navy);
    min-height: var(--hdr-h);
    display: flex;
    align-items: center;
    gap: clamp(6px, 1.2vw, 16px);
    /* +0.2cm sus: coboară logo+info ca să nu fie tăiate de rama monitorului (MAUI Windows fullscreen).
       Se adaugă PESTE safe-area Android (--safe-top pe .pos-root) → încadrarea mobilă rămâne neatinsă. */
    padding: calc(6px + 0.2cm) clamp(10px, 1.5vw, 20px) 6px;
    flex-shrink: 0;
    flex-wrap: nowrap;
}

.pos-logo {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
.pos-logo img {
    height: calc(var(--hdr-h) - 14px);
    width: auto;
    max-width: 200px;
    object-fit: contain;
    display: block;
}
.pos-ver { font-size: 0.7rem; font-weight: 400; font-style: normal;
           color: #6a8aa8; letter-spacing: .5px; }

.hdr-sep { width:1px; height:36px; background:rgba(255,255,255,0.15); flex-shrink:0; }

.hdr-field { display:flex; flex-direction:column; gap:3px; min-width:0; }
.hdr-label { color:#a0b4cc; font-size:var(--fs-xs); font-weight:600; letter-spacing:.5px; white-space:nowrap; }

.hdr-input {
    background: rgba(255,255,255,0.12);
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: var(--rad-sm);
    color: var(--white);
    font-size: var(--fs-md);
    font-weight: 600;
    padding: 4px 8px;
    height: 34px;
    min-width: 0;
}
.hdr-input::placeholder { color: rgba(255,255,255,0.4); }
.hdr-input:focus { outline: 1px solid rgba(255,255,255,0.5); }

.hdr-input-wrap { display:flex; align-items:center; gap:4px; }
.btn-barcode {
    width:34px; height:34px;
    background: rgba(255,255,255,0.12);
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: var(--rad-sm);
    color: var(--white);
    font-size: 1rem;
    cursor: pointer;
    display:flex; align-items:center; justify-content:center;
    flex-shrink:0;
}
.btn-barcode:hover { background: rgba(255,255,255,0.2); }

.hdr-field-cant { min-width: clamp(110px, 14vw, 170px); }
.cant-ctrl { display:flex; align-items:center; gap:4px; }
.btn-cant {
    width:32px; height:34px;
    background: var(--blue);
    border: none; border-radius: var(--rad-sm);
    color: var(--white); font-size:1.2rem; font-weight:700;
    cursor:pointer; display:flex; align-items:center; justify-content:center;
    flex-shrink:0;
}
.btn-cant:hover { background: var(--navy-md); }
.cant-val {
    flex:1; text-align:center;
    background: rgba(255,255,255,0.12);
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: var(--rad-sm);
    color: var(--white); font-size:var(--fs-md); font-weight:700;
    height:34px; padding:0 4px; min-width:0;
}

.hdr-pret {
    min-width: clamp(80px, 10vw, 130px);
    text-align: right;
    background: rgba(255,255,255,0.12);
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: var(--rad-sm);
    color: var(--white); font-size: var(--fs-lg); font-weight:700;
    height:34px; padding:0 8px;
    display:flex; align-items:center; justify-content:flex-end;
}

.hdr-info {
    margin-left:auto;
    display:flex; flex-direction:column; align-items:flex-end;
    gap:2px; flex-shrink:0;
}
.hdr-info > div { color:#a0b4cc; font-size:var(--fs-xs); white-space:nowrap; }
.hdr-info strong { color:var(--white); }
.dot-green { color:#4caf50; font-size:0.7rem; }

/* Butonul balanță în mod live: SVG + greutatea sub el, verde. */
.btn-cantar-live { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; position:relative; container-type:inline-size; }
.btn-cantar-live svg { width:24px; height:24px; }
/* Greutatea ANCORATĂ la baza butonului (spațiu minim jos) + culoare = simbolul balanței (currentColor = navy).
   Fontul se REDIMENSIONEAZĂ după lățimea butonului (cqw = % din lățime) ca „00.000 Kg" să încapă mereu, plafonat sus. */
.cantar-live-val { position:absolute; left:0; right:0; bottom:3px; text-align:center; color:currentColor; font-weight:800;
    font-size:clamp(0.5rem, 19cqw, 1.25rem); line-height:1; white-space:nowrap;
    font-variant-numeric:tabular-nums; font-family:'Consolas','Courier New',monospace; letter-spacing:0; }

.btn-settings {
    width:36px; height:36px; flex-shrink:0;
    background: rgba(255,255,255,0.1);
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: 50%;
    color:var(--white); font-size:1.1rem;
    cursor:pointer; display:flex; align-items:center; justify-content:center;
}
.btn-settings:hover { background: rgba(255,255,255,0.2); }

/* ════════════════════ BODY ════════════════════ */
.pos-body {
    display:flex; flex:1; overflow:hidden;
    gap:var(--gap); padding:var(--gap);
    min-height:0;
}

/* ════════════════════ BON PANEL ════════════════════ */
.bon-panel {
    flex:1; display:flex; flex-direction:column;
    background:var(--white);
    border-radius: var(--rad);
    overflow:hidden;
    border:1px solid var(--border);
    min-width:0;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}

.bon-tabs-bar {
    background: var(--navy);
    display:flex; align-items:center; gap:4px;
    padding: 5px 8px;
    flex-shrink:0;
    overflow-x:auto; overflow-y:hidden;
}
.bon-tabs-bar::-webkit-scrollbar { height:2px; }
.bon-tabs-bar::-webkit-scrollbar-thumb { background:rgba(255,255,255,0.3); }

.bon-tab {
    background: rgba(255,255,255,0.1);
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: var(--rad-sm);
    color: rgba(255,255,255,0.6);
    font-size: var(--fs-sm); font-weight:700;
    padding: 11px 16px; cursor:pointer; white-space:nowrap;
    min-height:44px;            /* touch-friendly: țintă mai mare */
    flex-shrink:0; transition: background .1s, color .1s;
}
.bon-tab.active { background: var(--white); color: var(--navy); }
.bon-tab:hover:not(.active) { background: rgba(255,255,255,0.2); color:var(--white); }
/* Bon cu pozitii (are linii) — evidentiat verde ca sa se vada clar care bonuri au produse */
.bon-tab.cu-pozitii { background: rgba(46,158,82,0.28); border-color: var(--green); color: var(--white); }
.bon-tab.cu-pozitii:hover:not(.active) { background: rgba(46,158,82,0.42); }
.bon-tab.active.cu-pozitii { background: var(--white); color: var(--green); border-color: var(--green); }

.bon-tab-wrap {
    display:flex; align-items:center; gap:2px; flex-shrink:0;
}
.bon-tab-close {
    width:30px; height:30px;
    background:rgba(255,60,60,0.35);
    border:none; border-radius:50%;
    color:var(--white); font-size:1.1rem; font-weight:700;
    cursor:pointer; display:flex; align-items:center; justify-content:center;
    line-height:1; flex-shrink:0;
}
.bon-tab-close:hover { background:rgba(255,60,60,0.7); }

.bon-tab-add {
    width:58px; min-height:44px; flex-shrink:0;   /* mai lat + mai înalt (touch) */
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: var(--rad-sm);
    color:var(--white); font-size:1.6rem; font-weight:700;
    cursor:pointer; display:flex; align-items:center; justify-content:center;
}
.bon-tab-add:hover { background: rgba(255,255,255,0.2); }

.bon-panel-header {
    background: var(--navy-md);
    color: var(--white);
    display:flex; justify-content:space-between; align-items:center;
    padding: 6px 8px 6px 14px;
    flex-shrink:0;
    font-weight:700;
    font-size:var(--fs-md);
}
.bon-hdr-info {
    flex:1; min-width:0;
    display:flex; flex-direction:column; gap:1px;
    pointer-events:none; user-select:none;
}
.bon-hdr-label { font-size:var(--fs-xs); color:rgba(255,255,255,0.55); font-weight:600; }
.bon-hdr-qty   { font-size:var(--fs-sm); font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bon-hdr-cod   { font-size:var(--fs-xs); color:rgba(255,255,255,0.65); }
.scan-busy     { color:#7ecfff; animation:pulse-scan 0.7s ease-in-out infinite; }
.scan-negasit  { color:#ff6b6b; }
@keyframes pulse-scan { 0%,100%{opacity:1} 50%{opacity:0.4} }

.btn-bon-nav {
    width: var(--act-h); height: var(--act-h);
    background: rgba(255,255,255,0.12);
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: var(--rad-sm);
    color: var(--white); font-size:1.1rem; font-weight:700;
    cursor:pointer; display:flex; align-items:center; justify-content:center;
    flex-shrink:0;
}
.btn-bon-nav:hover { background: rgba(255,255,255,0.25); }
.bon-nav-down { background: var(--blue-lt); border-color:var(--border); color:var(--navy); }
.bon-nav-down:hover { background: var(--blue-lth); }

/* ── Telefon / interfata mica (POS) — spatiu util maxim ── */
@media (max-width: 700px) {
    /* tab-uri BON mai mici */
    .bon-tab        { min-height:30px; padding:5px 10px; font-size:var(--fs-xs); }
    .bon-tab-add    { min-width:28px; width:28px; height:28px; font-size:1rem; padding:0; }
    .bon-tab-close  { width:20px; height:20px; }

    /* ascunde "Ultimul produs scanat" (detaliile) — pastreaza doar feedback scan + erorile */
    .bon-hdr-label { display:none; }
    .bon-hdr-cod   { display:none; }
    .bon-hdr-qty:not(.scan-busy):not(.scan-negasit) { display:none; }
    /* erori: maxim 2 randuri (clamp) ca sa nu impinga lista */
    .bon-hdr-err {
        display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
        overflow:hidden; white-space:normal !important;
    }
    .bon-panel-header { padding-top:3px; padding-bottom:3px; }

    /* fara butoane navigatie sus/jos — avem scroll */
    .btn-bon-nav { display:none; }

    /* INCHIDERE POS = patrat, doar icon (text ascuns) -> mai mult loc pentru restul butoanelor jos */
    .btn-inchidere .btn-inchidere-txt { display:none; }
    .btn-inchidere { flex:0 0 auto; min-width:0; width:46px; padding:0; }

    /* discount sub linia produsului = text mic colorat, NU box portocaliu invaziv (spatiu limitat) */
    .bon-sub          { padding:0 0 2px 0 !important; gap:4px; }
    .sub-tag.discount { background:transparent !important; padding:0 !important; font-size:0.62rem; }
    .sub-tag.returo   { background:transparent !important; padding:0 !important; font-size:0.62rem; }
}

/* Coloane ascunse pe telefon, vizibile pe ecran mare */
.bc-nr   { display:none; }
.bc-extra { display:none; }
.bc-det  { display:block; }

@media (min-width: 700px) {
    .bc-nr    { display:block; }
    .bc-extra { display:block; }
    .bc-det   { display:none !important; }
    /* Header și rânduri folosesc EXACT același grid → aliniere perfectă pe coloane.
       Lățimi FIXE pentru NR / CANTITATE / PRET-BUC / GESTIUNEA / VALOARE (dimensionate la conținutul maxim);
       PRODUS = 1fr (singura coloană care crește/ocupă spațiul rămas).
       NR: „NR." + max 99 · CANTITATE: butoane +/- + max 9999.99 · PRET/BUC: max 99999.99 ·
       GESTIUNEA: textul „GESTIUNEA" · VALOARE: max 99999.99 */
    .bon-cols,
    .bon-row  { grid-template-columns: 20px 1fr 125px 80px 80px 80px !important; column-gap: clamp(6px,0.8vw,12px) !important; }
    .bon-row .nr { display:block !important; }
    .bon-row.selected .col-r { color:var(--white); }
    .bon-row.anulat .col-r { text-decoration:line-through; color:#e57373; }
}
.bon-row .nr    { font-size:var(--fs-xs); color:var(--text-sm); font-weight:600; padding-top:2px; text-align:center !important; }
.bon-cols .bc-nr { text-align:center !important; }
.bon-row .col-r { font-size:var(--fs-sm); font-weight:600; text-align:right; color:var(--text); }
.bc-gest { display:none; font-size:var(--fs-xs); color:var(--text-sm); font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:center; }
@media (min-width:700px) { .bc-gest { display:block; } }

/* Lățime îngustă (ex. monitor 1024/1280 px) — PRODUS se strânge, numele nu se mai vede.
   (Chestiune de LĂȚIME, nu de înălțime — vezi compact mode la max-height:800px.)
   Sub 1366px: ascundem coloana GESTIUNEA + strângem coloanele fixe → numele produsului câștigă spațiu.
   Rămânem în layout desktop (min-width:700px), nu carduri mobile. */
@media (min-width:700px) and (max-width:1365px) {
    .bc-gest { display:none !important; }   /* header + rânduri: coloana gestiune dispare */
    .bon-cols,
    .bon-row  { grid-template-columns: 20px 1fr 92px 74px 76px !important; column-gap: clamp(5px,0.6vw,10px) !important; }
}

.bon-cols {
    display:grid;
    grid-template-columns: 1fr auto;
    padding: 5px 12px;
    background: var(--bg);
    border-bottom: 1px solid var(--border);
    flex-shrink:0;
}
.bon-cols span { font-size:var(--fs-xs); font-weight:700; color:var(--text-sm); text-transform:uppercase; }

.bon-list { flex:1; overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; }
@media (hover:hover) and (pointer:fine) {
    .bon-list { cursor:grab; }
    .bon-list::-webkit-scrollbar { width:6px; }
    .bon-list::-webkit-scrollbar-track { background:rgba(255,255,255,0.04); }
    .bon-list::-webkit-scrollbar-thumb { background:rgba(255,255,255,0.2); border-radius:3px; }
    .bon-list::-webkit-scrollbar-thumb:hover { background:rgba(255,255,255,0.4); }
}

.bon-empty {
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    height:100%; color:var(--text-sm); gap:8px;
    padding:20px;
}
.bon-empty svg { opacity:.25; }
.bon-empty .em-title { font-size:var(--fs-lg); font-weight:600; margin-top:8px; }
.bon-empty .em-sub   { font-size:var(--fs-sm); }

.bon-row {
    display:grid;
    grid-template-columns: 1fr auto;
    padding: 6px 12px;
    border-bottom: 1px solid #f0f2f5;
    align-items:start;
    cursor:pointer;
    transition: background .1s;
    gap: 0 4px;
}
.bon-row:hover    { background:#f5f7fa; }
.bon-row.selected { background:var(--navy-md); }
.bon-row.anulat   { background:#fff5f5; }
.bon-row.anulat .produs, .bon-row.anulat .bon-row-det, .bon-row.anulat .bon-amb-line, .bon-row.anulat .valoare {
    text-decoration: line-through; color:#e57373;
}
.bon-row.anulat.selected { background:#c62828; }
.bon-row.anulat.selected .produs,
.bon-row.anulat.selected .bon-row-det,
.bon-row.anulat.selected .bon-amb-line,
.bon-row.anulat.selected .valoare { color:rgba(255,255,255,0.7); }
.bon-row.selected .nr,
.bon-row.selected .produs,
.bon-row.selected .bon-row-det,
.bon-row.selected .bon-amb-line,
.bon-row.selected .valoare { color:var(--white); }
.bon-row.selected .bon-row-det,
.bon-row.selected .bon-amb-line { color:rgba(255,255,255,0.85); }

.bon-row-main     { display:flex; flex-direction:column; gap:2px; min-width:0; }
.bon-row .produs  { font-size:var(--fs-sm); font-weight:700; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bon-row-det      { font-size:var(--fs-xs); color:var(--text-sm); font-weight:500; }
.bon-amb-line     { font-size:var(--fs-xs); color:#4caf50; font-weight:600; }
.bon-disc-line    { font-size:var(--fs-xs); color:#ff9070; font-weight:600; }

/* Ambalaj / Discount — folosesc TOATA lățimea rândului (sub coloana PRODUS în wide, full row în compact) */
.bon-row-fullspan { grid-column: 1 / -1; padding-left:0; white-space:normal; line-height:1.3; }
@media (min-width: 700px) {
    /* În wide mode pornesc de la coloana PRODUS (col 2) ca să fie vizual aliniate cu denumirea, dar se întind până la VALOARE */
    .bon-row-fullspan { grid-column: 2 / -1; }
}
.bon-row .valoare { font-size:var(--fs-sm); font-weight:700; text-align:center; color:var(--navy-md); white-space:nowrap; padding-top:2px; align-self:baseline; }

/* Pe ecrane mari (desktop POS), denumirile + valorile din lista de vânzare devin mai vizibile */
@media (min-width: 1024px) {
    .bon-row .produs  { font-size: 1.05rem; }
    .bon-row .valoare { font-size: 1.10rem; }
    .bon-row-det      { font-size: 0.85rem; }
    .bon-row .nr      { font-size: 0.85rem; }
    .bon-amb-line,
    .bon-disc-line    { font-size: 0.78rem; }
    .bon-row          { padding: 8px 12px; }   /* păstrăm 12px orizontal = identic cu .bon-cols → coloanele se aliniază perfect */
}
@media (min-width: 1400px) {
    .bon-row .produs  { font-size: 1.20rem; }
    .bon-row .valoare { font-size: 1.25rem; }
    .bon-row-det      { font-size: 0.95rem; }
    .bon-row .nr      { font-size: 0.95rem; }
    .bon-amb-line,
    .bon-disc-line    { font-size: 0.85rem; }
    .bon-row          { padding: 10px 12px; }   /* 12px orizontal = identic cu .bon-cols */
}

.bon-panel-footer {
    display:flex; justify-content:space-between; align-items:center;
    padding: 5px 8px 5px 14px;
    border-top: 1px solid var(--border);
    background: var(--bg);
    flex-shrink:0;
    font-size:var(--fs-sm);
    color:var(--text-sm);
    font-weight:600;
}
.bon-panel-footer .ft-total { font-size:var(--fs-lg); font-weight:900; color:var(--navy); }
.bon-ftr-right { display:flex; align-items:center; gap:6px; }

.bon-sub {
    grid-column: 1 / -1;
    display:flex; flex-wrap:wrap; gap:5px;
    padding: 2px 0 4px 36px;
}
.sub-tag {
    font-size: var(--fs-xs); font-weight:600;
    padding: 2px 7px; border-radius:3px;
}
.sub-tag.returo   { background:#e8f5e9; color:#2e7d32; }
.sub-tag.discount { background:#fff3e0; color:#e65100; display:flex; flex-direction:column; align-items:flex-start; line-height:1.25; }
.sub-tag.discount .disc-lbl { font-weight:800; }

/* ════════════════════ RIGHT PANEL ════════════════════ */
.right-panel {
    width: clamp(300px, 35vw, 500px);    /* +25% vs anterior pentru 5 col numpad mai late */
    display:flex; flex-direction:column; gap:var(--gap);
    flex-shrink:0; min-width:0; overflow:hidden;
}

.rp-cant {
    display:flex; align-items:center; gap:6px; flex-shrink:0; min-width:0;
}
.rp-label {
    font-size:var(--fs-xs); font-weight:700;
    color:var(--text-sm); text-transform:uppercase;
    letter-spacing:.5px; white-space:nowrap; flex-shrink:0;
}
.rp-cant .cant-ctrl { flex:0 0 auto; }
.rp-cant-val {
    width:64px !important;
    background:var(--bg) !important;
    border-color:var(--border) !important;
    text-align:center !important;
    color:var(--navy) !important;
    font-weight:700 !important;
}

.rp-input-wrap {
    display:flex; align-items:center; gap:4px; flex-shrink:0;
}
.rp-main-input {
    flex:1; min-width:0;
    background:var(--white);
    border:1px solid var(--border);
    border-radius:var(--rad-sm);
    color:var(--navy);
    font-size:var(--fs-md); font-weight:600;
    padding:5px 10px; height:36px;
    box-shadow: inset 0 1px 3px rgba(0,0,0,0.06);
}
.rp-main-input:focus { outline:1px solid var(--blue); }
.rp-barcode-btn {
    width:36px; height:36px; flex-shrink:0;
    background:var(--blue-lt); border:1px solid var(--border);
    border-radius:var(--rad-sm); color:var(--navy);
    font-size:1.5rem; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
}
.rp-barcode-btn:hover { background:var(--blue-lth); }

.numpad-area {
    background: var(--bg);
    border:1px solid var(--border);
    border-radius:var(--rad);
    padding: 8px;
    display:grid;
    grid-template-columns: repeat(4,1fr);  /* Default (mobile/small) — 4 col, acțiunile (.btn-action) coboară pe rândul 5 */
    gap: 6px;
    /* ELASTIC: numpad-ul se MICSOREAZA cand spatiul util scade (ex. bara de navigatie prezenta / ecran scund),
       ca zona de plata + Total de jos sa incapa. Nu creste peste --num-h (randuri plafonate). */
    flex: 0 1 auto; min-height:0;
    grid-auto-rows: minmax(0, var(--num-h));
}
/* Pe mobil/small (default), butoanele de acțiune (🔍/⚖/%/Fact) coboară pe ultimul rând */
.numpad-area .btn-action { order: 1; }
/* Pe desktop (≥700px + mouse), 5 coloane — acțiunile rămân pe coloana lor (order ignorat).
   Touch devices NU intră — tabletele rămân pe 4 col regardless of viewport. */
@media (min-width: 700px) and (hover: hover) and (pointer: fine) {
    .numpad-area { grid-template-columns: repeat(5,1fr); }
    .numpad-area .btn-action { order: 0; }
}

.btn-num {
    height: 100%; min-height: 0;   /* umple randul grilei (plafonat la --num-h); se micsoreaza cu numpad-ul */
    font-size: clamp(1.4rem,2.5vw,2rem);
    font-weight:700;
    border-radius: var(--rad-sm);
    cursor:pointer;
    border: none;
    background: var(--blue);
    color: var(--white);
    display:flex; align-items:center; justify-content:center;
    transition: background .1s, transform .08s;
    user-select:none;
    box-shadow: 0 2px 4px rgba(0,0,0,0.12);
}
.btn-num:hover  { background: var(--navy-md); }
.btn-num:active { transform:scale(0.96); }
.btn-num.lt     { background:var(--blue-lt); color:var(--navy); box-shadow:none; font-size:clamp(1.5rem,2.6vw,2.1rem); }
.btn-num.lt:hover { background:var(--blue-lth); }
/* CIF activ = doar roșu (text „CIF" la mărimea normală, ca inactiv → fără micșorarea celorlalte taste). */
.btn-num.btn-cif-activ { background:#c0392b !important; color:#fff !important; }
.btn-num.btn-cif-activ:hover { background:#e74c3c !important; }
.btn-factura { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; }
.btn-factura-label { font-size:0.55rem; font-weight:700; letter-spacing:.5px; }
.btn-num.btn-factura-activ { background:#1e88e5 !important; color:#fff !important; }
.btn-num.btn-factura-activ:hover { background:#1976d2 !important; }
.btn-num.span2  { grid-column:span 2; }

.plata-btns {
    display:grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--gap);
    flex-shrink:0;
}
.btn-plata {
    background: var(--blue-lt);
    color: var(--navy);
    border:none; border-radius:var(--rad-sm);
    cursor:pointer; min-height: clamp(56px,8vh,76px);
    display:flex; flex-direction:column;
    align-items:center; justify-content:center; gap:3px;
    transition: background .12s;
    padding: 6px 4px;
}
.btn-plata:hover  { background: var(--blue-lth); }
.btn-plata.active { background: var(--navy-md); color: var(--white); }
.btn-plata-orange {
    background: var(--orange); color: var(--white);
    box-shadow: 0 2px 6px rgba(245,130,31,0.35);
}
.btn-plata-orange:hover { background: var(--orange-hv); }
.btn-plata-green {
    background:#2e7d32; color: var(--white);
    box-shadow: 0 2px 6px rgba(46,125,50,0.35);
}
.btn-plata-green:hover { background:#1b5e20; }

/* Pe touch (mobil/tabletă), INCASARE TICHET dispare — grid devine 3 col (Numerar / Card / Alte forme).
   Folosim detecția touch (NU max-width) ca să prindem și tablete cu viewport ≥700px.
   Plasat DUPĂ .btn-plata pentru a câștiga cascade-ul (same specificity, last wins). */
@media (hover: none) and (pointer: coarse) {
    .plata-btns { grid-template-columns: repeat(3, 1fr); }
    .btn-plata-tichet { display: none; }
}

/* ════════════════════ ConfirmDialog (component shared Da/Nu) ════════════════════
   Stiluri neutre pentru ca dialogul să arate la fel în POS (dark theme) și BackOffice (light theme).
   Card alb pe overlay întunecat; butoanele folosesc convenția .btn-act.red/.green. */
.confirm-overlay {
    position:fixed; inset:0; background:rgba(0,0,0,0.55);
    z-index:9999; display:flex; align-items:center; justify-content:center;
    padding:16px;
}
.confirm-box {
    background:#fff; color:#1a2744; border-radius:10px;
    padding:22px 26px; max-width:480px; width:100%;
    box-shadow:0 12px 36px rgba(0,0,0,0.35);
    display:flex; flex-direction:column; gap:14px;
    outline:none;
}
.confirm-title {
    font-size:1.15rem; font-weight:700; color:#1a2744;
    border-bottom:1px solid #e0e6ee; padding-bottom:10px;
}
.confirm-body {
    color:#2a3a4a; font-size:0.95rem; line-height:1.5;
}
.confirm-body p { margin:0 0 8px 0; }
.confirm-body p:last-child { margin-bottom:0; }
/* Mesaje bogate în dialogurile de confirmare (sumă maximă, Raport Z) */
.conf-msg { text-align:center; line-height:1.55; }
.conf-msg .conf-suma { font-size:2rem; font-weight:900; color:#b8860b; margin:8px 0;
    font-family:'Arial Narrow','Segoe UI',sans-serif; letter-spacing:-0.5px; }
.conf-msg .conf-avert { margin-top:10px; color:#b23b3b; font-weight:600; }
.conf-msg .conf-intreb { margin-top:12px; font-weight:800; font-size:1.05rem; color:#1a2744; }
.confirm-actions {
    display:flex; gap:10px; justify-content:flex-end; padding-top:6px;
}
.confirm-actions .btn-act { flex:0 1 auto; min-width:120px; padding:9px 16px; }

/* ════════════════════ Toast (notificări auto-dismiss) ════════════════════ */
.toast-container {
    position:fixed; top:16px; right:16px; z-index:10000;
    display:flex; flex-direction:column; gap:8px; max-width:360px;
    pointer-events:none;
}
.toast {
    pointer-events:auto;
    display:flex; align-items:center; gap:10px;
    padding:10px 14px; border-radius:8px;
    background:#fff; color:#1a2744; font-size:0.92rem; font-weight:600;
    box-shadow:0 6px 18px rgba(0,0,0,0.25);
    border-left:5px solid;
    cursor:pointer;
    animation: toast-in .22s ease-out;
    min-width:240px;
}
.toast:hover { filter:brightness(.97); }
.toast-icon  { font-weight:900; font-size:1.05rem; flex-shrink:0; }
.toast-msg   { flex:1; line-height:1.35; }
.toast-close { opacity:.5; font-size:0.85rem; flex-shrink:0; }
.toast:hover .toast-close { opacity:1; }

.toast-success { border-left-color:#2e7d32; color:#1b5e20; }
.toast-success .toast-icon { color:#2e7d32; }
.toast-error   { border-left-color:#d32f2f; color:#b71c1c; }
.toast-error   .toast-icon { color:#d32f2f; }
.toast-warning { border-left-color:#f57c00; color:#e65100; }
.toast-warning .toast-icon { color:#f57c00; }
.toast-info    { border-left-color:#1976d2; color:#0d47a1; }
.toast-info    .toast-icon { color:#1976d2; }

@keyframes toast-in {
    from { transform:translateX(120%); opacity:0; }
    to   { transform:translateX(0);    opacity:1; }
}

.plata-icon  { font-size: clamp(1.3rem, 2.2vw, 1.7rem); line-height:1; }
.plata-label { font-size: clamp(0.46rem, 2.2vw, 0.68rem); font-weight:700; text-align:center; line-height:1.2; white-space: normal; overflow-wrap: break-word; word-break: break-word; max-width: 100%; }

.ultim-bon-panel {
    background:var(--navy); color:var(--white);
    border-radius:var(--rad); padding:clamp(4px,0.8vh,10px) 10px;
    /* ACOPERA zona de plata: pozitionat ABSOLUT peste .rp-pay-zone (butoanele incasare + zona total),
       pana jos. Asa numpad-ul NU se redimensioneaza, iar rezumatul are tot spatiul zonei de plata. */
    position:absolute; inset:0; z-index:2; overflow-y:auto;
    animation: ub-fadein .25s ease;
}
@keyframes ub-fadein { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:none; } }
.ub-title  { font-size:var(--fs-xs); font-weight:700; color:rgba(255,255,255,0.55); letter-spacing:.5px; text-transform:uppercase; margin-bottom:clamp(2px,0.4vh,6px); }
.ub-total  { font-size:clamp(0.95rem,1.6vw,1.4rem); font-weight:800; color:var(--white); margin-bottom:clamp(2px,0.4vh,6px); }
.ub-plati  { display:flex; flex-direction:column; gap:clamp(1px,0.3vh,3px); margin-bottom:clamp(1px,0.3vh,4px); }
.ub-row    { display:flex; justify-content:space-between; font-size:var(--fs-xs); line-height:1.3; }
.ub-den    { color:rgba(255,255,255,0.7); }
.ub-suma   { font-weight:700; }
.ub-rest   { font-size:var(--fs-xs); color:var(--orange); font-weight:700; border-top:1px solid rgba(255,255,255,0.15); padding-top:clamp(2px,0.3vh,4px); margin-top:clamp(2px,0.3vh,4px); }

/* Zona de plata (butoane incasare + sectiunea Total / ultima vanzare). Ancora RELATIVA pentru ca
   .ultim-bon-panel sa se pozitioneze ABSOLUT peste ea (acoperind butoanele) fara a misca numpad-ul. */
/* grow:1 (umple pe ecrane inalte) + shrink:0 (NU se micsoreaza -> plata + Total raman complet vizibile;
   numpad-ul, elastic, absoarbe lipsa de spatiu). */
.rp-pay-zone { position:relative; flex:1 0 auto; min-height:0; display:flex; flex-direction:column; gap:var(--gap); }

.de-plata-section {
    background:var(--white);
    border:1px solid var(--border);
    border-radius:var(--rad);
    overflow:hidden;
    flex:1 0 auto;   /* creste pe ecrane inalte; NU se micsoreaza -> Total mereu vizibil (numpad-ul cedeaza spatiu) */
    display:flex; flex-direction:column;
    min-height:0;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}

.dp-plati-list { display:flex; flex-direction:column; flex:1; overflow-y:auto; min-height:0; }
.dp-row {
    display:flex; align-items:center; gap:7px;
    padding: clamp(4px, 0.7vh, 7px) 10px;
    border-bottom:1px solid var(--border);
}
.dp-row-icon { font-size:1.1rem; flex-shrink:0; }
.dp-row-den  { flex:1; font-size:var(--fs-sm); font-weight:600; color:var(--text-sm); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dp-row-val  { font-size:var(--fs-sm); font-weight:700; color:var(--navy); flex-shrink:0; }
.dp-remove   { background:none; border:none; color:#ccc; font-size:.85rem; cursor:pointer; padding:2px 5px; border-radius:4px; flex-shrink:0; line-height:1; }
.dp-remove:hover { background:#fff0f0; color:#e57373; }
.dp-sumar {
    padding: clamp(4px, 0.7vh, 7px) 10px;
    font-size:var(--fs-sm); font-weight:700;
    display:flex; justify-content:flex-end;
    border-top:1px solid var(--border);
    background:var(--bg); flex-shrink:0;
}
.dp-ramane { color:var(--orange); }
.dp-exact  { color:var(--green); }
.dp-rest   { color:var(--blue); }

.de-plata-header {
    background: var(--navy-md);
    color:var(--white);
    display:flex; justify-content:space-between; align-items:center;
    padding: clamp(6px, 1.2vh, 10px) 12px;
    font-weight:700; font-size:var(--fs-sm);
    flex-shrink:0;
}
/* Eticheta „Total" — mare, ca suma de pe aceeași linie (.dp-val). */
.de-plata-header > span:first-child { font-size: clamp(1.1rem, 3vh, 2rem); line-height:1; }
/* Pe telefon o micșorăm puțin ca să încapă și sumele mari (ex. 1234.56) lângă ea. */
@media (max-width: 600px) {
    .de-plata-header > span:first-child { font-size: clamp(1rem, 2.2vh, 1.35rem); }
}
.de-plata-header .dp-val {
    font-size: clamp(1.2rem, 3.5vh, 2.4rem);
    font-weight:900; color:var(--white);
    font-family:'Arial Narrow','Segoe UI',sans-serif;
    font-stretch:condensed; letter-spacing:-0.5px; line-height:1;
}
/* Promoții: total inițial − reducere = total final, pe aceeași linie cu „Total”. */
.de-plata-header .dp-breakdown {
    display:flex; align-items:baseline; gap:6px; flex-wrap:nowrap; min-width:0;
    font-family:'Arial Narrow','Segoe UI',sans-serif; font-stretch:condensed;
}
.dp-breakdown .dp-bd-init { font-size: clamp(0.85rem, 1.9vh, 1.25rem); font-weight:700; color:rgba(255,255,255,0.75); }
.dp-breakdown .dp-bd-red  { font-size: clamp(0.85rem, 1.9vh, 1.25rem); font-weight:800; color:#ffd54f; white-space:nowrap; }
.dp-breakdown .dp-bd-eq   { font-size: clamp(0.9rem, 2vh, 1.3rem); color:rgba(255,255,255,0.6); }
/* Pe telefon nu incape „brut − reducere = total” pe o linie → aratam DOAR totalul final (.dp-val). */
@media (max-width: 700px) {
    .dp-breakdown .dp-bd-init,
    .dp-breakdown .dp-bd-red,
    .dp-breakdown .dp-bd-eq { display:none; }
}

.btn-tot, .btn-dif {
    height:30px; padding:0 9px;
    border:none; border-radius:var(--rad-sm);
    font-size:var(--fs-xs); font-weight:600;
    cursor:pointer; white-space:nowrap;
}
.btn-tot { background:var(--blue); color:var(--white); }
.btn-tot:hover { background:var(--navy-md); }
.btn-tot:disabled { background:#c3ccd6; color:#8a96a5; cursor:not-allowed; opacity:0.7; }
.btn-tot:disabled:hover { background:#c3ccd6; }
.btn-dif { background:var(--blue-lt); color:var(--navy); }
.btn-dif:hover { background:var(--blue-lth); }

.btn-confirma-plata {
    margin:6px 8px; height:clamp(36px,5vh,46px);
    background:var(--green); border:none; border-radius:var(--rad-sm);
    color:var(--white); font-size:var(--fs-sm); font-weight:700;
    cursor:pointer; flex-shrink:0; width:calc(100% - 16px);
    transition: background .12s;
}
.btn-confirma-plata:hover    { background:#247a40; }
.btn-confirma-plata:disabled { background:#aaa; cursor:not-allowed; }

/* ════════════════════ NUMPAD PLATA ════════════════════ */
.npad-overlay {
    position:fixed; inset:0; z-index:1002;
    background:rgba(0,0,0,0.65);
    display:flex; align-items:center; justify-content:center;
    padding:16px;
}
.npad-panel {
    background:var(--navy);
    border-radius:16px;
    width:min(320px, 90vw);
    padding:16px;
    box-shadow:0 16px 48px rgba(0,0,0,0.4);
    display:flex; flex-direction:column; gap:10px;
}
.npad-title {
    color:rgba(255,255,255,0.65);
    font-size:var(--fs-sm); font-weight:600;
    text-align:center; text-transform:uppercase; letter-spacing:.5px;
}
.npad-display {
    background:rgba(255,255,255,0.1);
    border:1px solid rgba(255,255,255,0.2);
    border-radius:var(--rad-sm);
    color:var(--white);
    font-size:clamp(1.4rem,5vw,2rem); font-weight:700;
    text-align:right; padding:8px 14px;
    min-height:52px; display:flex; align-items:center; justify-content:flex-end;
}
.npad-hint {
    margin:6px 2px 2px; padding:5px 8px; border-radius:6px;
    font-size:0.82rem; font-weight:600; text-align:center;
    color:rgba(255,255,255,0.8); background:rgba(255,255,255,0.06);
}
.npad-hint-cash { color:#a5e8b0; background:rgba(46,125,50,0.18); }
.npad-hint-warn { color:#ffcf9a; background:rgba(200,60,0,0.22); }
.npad-grid {
    display:grid; grid-template-columns:repeat(3,1fr); gap:7px;
}
.npad-btn {
    height:clamp(50px,9vh,64px);
    background:rgba(255,255,255,0.12);
    border:1px solid rgba(255,255,255,0.18);
    border-radius:var(--rad-sm);
    color:var(--white); font-size:1.3rem; font-weight:700;
    cursor:pointer; display:flex; align-items:center; justify-content:center;
    transition:background .1s, transform .08s;
    user-select:none;
}
.npad-btn:hover  { background:rgba(255,255,255,0.22); }
.npad-btn:active { transform:scale(0.93); }
.npad-bs { background:rgba(210,60,40,0.35); }
.npad-bs:hover { background:rgba(210,60,40,0.55); }
.npad-actions { display:flex; gap:8px; }
.npad-cancel {
    flex:1; height:46px;
    background:rgba(255,255,255,0.1); border:1px solid rgba(255,255,255,0.2);
    border-radius:var(--rad-sm); color:rgba(255,255,255,0.7);
    font-size:var(--fs-sm); font-weight:700; cursor:pointer;
}
.npad-cancel:hover { background:rgba(255,255,255,0.2); }
.npad-ok {
    flex:2; height:46px;
    background:var(--green); border:none; border-radius:var(--rad-sm);
    color:var(--white); font-size:var(--fs-sm); font-weight:700; cursor:pointer;
}
.npad-ok:hover { background:#247a40; }

/* ════════════════════ ALTE FORME MODAL ════════════════════ */
.altele-overlay {
    position:fixed; inset:0; z-index:500;
    background:rgba(0,0,0,0.6);
    display:flex; align-items:center; justify-content:center;
    padding:16px;
}
.altele-panel {
    background:var(--white);
    border-radius:14px;
    box-shadow:0 8px 48px rgba(0,0,0,0.4);
    width:100%; max-width:500px;
    max-height:88dvh;
    display:flex; flex-direction:column;
    overflow:hidden;
}
.altele-hdr {
    display:flex; align-items:center; gap:10px;
    padding:13px 16px;
    background:var(--navy);
    color:var(--white);
    flex-shrink:0;
}
.altele-title { font-size:var(--fs-sm); font-weight:700; flex:1; opacity:.85; }
.altele-total {
    font-size:clamp(1.4rem,4vw,2rem); font-weight:900;
    font-family:'Arial Narrow','Segoe UI',sans-serif;
    letter-spacing:-0.5px; line-height:1;
}
.altele-close {
    background:none; border:none; color:rgba(255,255,255,0.6);
    font-size:1.1rem; cursor:pointer; padding:5px 9px;
    border-radius:6px; line-height:1; transition:background .1s;
    margin-left:4px;
}
.altele-close:hover { background:rgba(255,255,255,0.15); color:var(--white); }
.altele-resta {
    display:flex; align-items:center; justify-content:space-between;
    padding:10px 16px;
    background:var(--navy-md);
    flex-shrink:0;
    transition:background .2s;
}
.altele-resta.ar-pos { background:#1b5e20; }
.altele-resta.ar-neg { background:#7f1d1d; }
.altele-resta.ar-ok  { background:#1b5e20; }
.ar-label { font-size:var(--fs-xs); font-weight:700; color:rgba(255,255,255,0.75); text-transform:uppercase; letter-spacing:.4px; }
.ar-val   { font-size:clamp(1.1rem,3.5vw,1.5rem); font-weight:900; color:#fff; font-family:'Arial Narrow','Segoe UI',sans-serif; }
.altele-rows {
    display:flex; flex-direction:column;
    flex:1; overflow-y:auto; min-height:0;
}
.altele-rows::-webkit-scrollbar { width:3px; }
.altele-rows::-webkit-scrollbar-thumb { background:var(--blue-lt); }
.altele-row {
    display:flex; align-items:center; gap:12px;
    padding:10px 14px;
    border-bottom:1px solid var(--border);
    cursor:pointer; transition:background .12s;
    min-height:58px;
}
.altele-row:last-child { border-bottom:none; }
.altele-row:hover      { background:#f5f8ff; }
.altele-row-active     { background:#eef5ff; }
.altele-row-active:hover { background:#e5efff; }
.altele-icon-bub {
    width:42px; height:42px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    font-size:1.35rem; flex-shrink:0;
}
.ic-cash   { background:#e8f5e9; }
.ic-card   { background:#e3f2fd; }
.ic-tichet { background:#fff3e0; }
.ic-bank   { background:#e0f7fa; }
.ic-doc    { background:#fce4ec; }
.ic-online { background:#f3e5f5; }
.ic-credit { background:#fff8e1; }
.ic-other  { background:#f5f5f5; }
.altele-den {
    flex:1; font-size:var(--fs-sm); font-weight:600;
    color:var(--text); min-width:0;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.altele-icon-returo { width:auto; min-width:56px; background:transparent; border-radius:0; padding:0 4px; display:flex; align-items:center; gap:8px; }
.altele-logo-returo { height:34px; width:auto; max-width:100%; object-fit:contain; }
.altele-logo-rvm { height:22px; width:auto; object-fit:contain; }
.altele-amount {
    font-size:var(--fs-sm); font-weight:700; color:#ccc;
    min-width:76px; text-align:right; flex-shrink:0;
}
.altele-amount.filled { color:var(--navy); font-size:var(--fs-md); }
.altele-row-active .altele-amount.filled { color:var(--blue); }
.altele-btns { display:flex; gap:5px; flex-shrink:0; }
.altele-confirma-btn {
    margin:10px 12px 12px;
    height:clamp(42px,6vh,52px);
    background:var(--green); border:none; border-radius:var(--rad-sm);
    color:var(--white); font-size:var(--fs-sm); font-weight:700;
    cursor:pointer; flex-shrink:0;
    transition:background .12s; letter-spacing:.3px;
}
.altele-confirma-btn:hover    { background:#247a40; }
.altele-confirma-btn:disabled { background:#c8c8c8; color:#888; cursor:not-allowed; }

/* ════════════════════ ACTION BAR ════════════════════ */
.pos-action-bar {
    background:var(--bg);
    border-top:1px solid var(--border);
    padding: 5px var(--gap);
    /* FARA env(safe-area-inset-bottom) aici: safe-area jos e gestionat O SINGURA DATA de .pos-root
       (--safe-bottom). Dublarea facea o banda gri suplimentara sub butoane pe Android edge-to-edge. */
    display:flex; gap: var(--gap);
    align-items:stretch;
    overflow-x:auto; -webkit-overflow-scrolling:touch;
    flex-wrap:nowrap; flex-shrink:0;
    min-height:var(--act-h);
}

.btn-act {
    flex:1;
    background:var(--white);
    border:1px solid var(--border);
    border-radius:var(--rad-sm);
    color:var(--navy);
    font-size:var(--fs-sm); font-weight:700;
    cursor:pointer; white-space:normal;
    display:flex; align-items:center; justify-content:center;
    text-align:center; line-height:1.2; gap:4px;
    transition: background .1s;
    min-width:56px; padding:3px 6px;
}
/* Buton îngust: nu crește, se strânge cât conținutul (ex. ÎNCHIDERE POS). Restul rămân flex:1 (redimensionabile). */
.btn-act.narrow { flex:0 0 auto; min-width:0; }
.pos-conn-status {
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    padding:3px 7px; border-radius:var(--rad-sm); border:1px solid;
    font-size:0.58rem; font-weight:700; line-height:1.3;
    white-space:nowrap; flex-shrink:0;
}
.pos-conn-online  { background:#e8f5e9; border-color:#2e7d32; color:#2e7d32; }
.pos-conn-offline { background:#fff3e0; border-color:var(--orange); color:var(--orange); }
.btn-act:hover:not(:disabled) { background:#e8ebf0; }
.btn-act:disabled { opacity:0.4; cursor:not-allowed; box-shadow:none; filter:grayscale(0.6); }
.btn-act.orange {
    background:var(--orange); border-color:var(--orange-hv); color:var(--white);
    box-shadow:0 2px 6px rgba(245,130,31,0.3);
}
/* Convenție UI: butoanele de RENUNȚĂ / ANULEAZĂ = roșu; CONFIRMĂ / APLICĂ / SALVEAZĂ = verde. */
.btn-act.red {
    background:#d32f2f; border-color:#b71c1c; color:var(--white);
    box-shadow:0 2px 6px rgba(211,47,47,0.3);
}
.btn-act.red:hover:not(:disabled) { background:#b71c1c; }
.btn-act.green {
    background:#2e7d32; border-color:#1b5e20; color:var(--white);
    box-shadow:0 2px 6px rgba(46,125,50,0.3);
}
.btn-act.green:hover:not(:disabled) { background:#1b5e20; }
.btn-act.green:disabled { background:#aaa; border-color:#999; cursor:not-allowed; box-shadow:none; }
.btn-act.orange:hover { background:var(--orange-hv); }

/* ════════════════════ LOGIN ════════════════════ */
.login-bg {
    flex:1; display:flex; flex-direction:column;
    align-items:center; justify-content:center;
    background:var(--bg); padding:16px;
}
.login-card {
    background:var(--navy);
    border-radius:16px;
    padding:clamp(16px,2.5vw,32px) clamp(18px,3vw,36px);
    width:100%; max-width:640px;
    box-shadow:0 12px 40px rgba(0,0,0,0.2);
}
.login-kb-layout { max-width:980px; display:flex; gap:20px; align-items:flex-start; }
.login-left { flex:0 0 360px; }   /* lățime fixă = cât conținutul (butoanele) → identic Chrome/Safari + tastatura primește restul */
.login-card { position:relative; }
.login-logo-wrap { position:absolute; top:-65px; left:18px; z-index:10; }
.login-logo { max-height:60px; width:auto; object-fit:contain; }
.login-kb { flex:1; display:flex; flex-direction:column; gap:5px; padding-top:2px; }
.vkb-row  { display:flex; gap:5px; justify-content:center; }
.vkb-key  {
    flex:1; height:44px; min-width:0;
    background:rgba(255,255,255,0.12);
    border:1px solid rgba(255,255,255,0.2);
    border-radius:var(--rad-sm);
    color:var(--white); font-size:0.88rem; font-weight:700;
    cursor:pointer; display:flex; align-items:center; justify-content:center;
    transition:background .1s, transform .08s;
    user-select:none;
}
.vkb-key:hover  { background:rgba(255,255,255,0.22); }
.vkb-key:active { transform:scale(0.93); }
.vkb-wide  { flex:4; }
.vkb-row-space { justify-content:center; }
.vkb-space { flex: 0 0 75%; }
.vkb-bs    { flex:2; background:rgba(210,60,40,0.35); }
.vkb-bs:hover { background:rgba(210,60,40,0.55); }
.vkb-enter { flex:2; background:var(--blue); }
.vkb-enter:hover { background:var(--navy-md); }
.login-row { display:flex; align-items:center; gap:8px; margin-bottom:12px; }
.login-label {
    color:rgba(255,255,255,0.7);
    font-weight:700; font-size:var(--fs-md);
    width:68px; text-align:right; flex-shrink:0;
}
.login-input {
    flex:1; min-width:0;
    background:rgba(255,255,255,0.1);
    border:1px solid rgba(255,255,255,0.2);
    border-radius:var(--rad-sm);
    color:var(--white);
    font-size:var(--fs-lg); font-weight:600;
    padding:5px 12px; height:38px; text-align:center;
}
.login-input:focus { outline:1px solid rgba(255,255,255,0.5); }
.login-input[type="password"] { text-align:left; letter-spacing:3px; }
.login-btn-arrow {
    width:38px; height:38px; flex-shrink:0; padding:0; font-size:1.1rem;
    background:rgba(255,255,255,0.12); border:1px solid rgba(255,255,255,0.2);
    border-radius:var(--rad-sm); color:var(--white); cursor:pointer;
    display:flex; align-items:center; justify-content:center;
}
.login-btn-arrow:hover { background:rgba(255,255,255,0.22); }
/* Spacer cât butonul săgeată (38px) — aliniază câmpul PAROLA să înceapă sub câmpul NUME (care e offsetat de săgeata ←). */
.login-arrow-spacer { width:38px; flex-shrink:0; }
/* Toggle „Ține-mă minte" = switch cu track rounded-rect + bulină PĂTRATĂ-ROTUNJITĂ (nu cerc).
   OFF = track deschis, bulină stânga; ON = track verde, bulină dreapta. */
.login-toggle { display:flex; align-items:center; flex-shrink:0; cursor:pointer; }
.login-toggle > input { position:absolute; opacity:0; width:0; height:0; pointer-events:none; }
.login-toggle-track {
    box-sizing:border-box;
    position:relative; width:66px; height:38px; border-radius:11px; flex-shrink:0;
    background:#e6e8ec; border:1px solid rgba(0,0,0,0.10);
    transition:background .15s ease, border-color .15s ease;
}
.login-toggle-thumb {
    position:absolute; top:2px; left:2px; width:32px; height:32px; border-radius:8px;
    background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.30); transition:transform .18s ease;
}
.login-toggle > input:checked + .login-toggle-track { background:#5ec269; border-color:transparent; }
.login-toggle > input:checked + .login-toggle-track .login-toggle-thumb { transform:translateX(28px); }
.login-toggle > input:focus-visible + .login-toggle-track { outline:2px solid rgba(255,255,255,0.6); outline-offset:2px; }

.login-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; }
.login-actions .btn-act {
    flex:1 1 calc(50% - 8px); min-width:120px;
    height:clamp(42px,5.5vh,52px);
    background:rgba(255,255,255,0.1); border:1px solid rgba(255,255,255,0.2);
    color:var(--white);
}
.login-actions .btn-act:hover { background:rgba(255,255,255,0.18); }
.login-actions .btn-act.orange { background:var(--orange); border-color:var(--orange-hv); }
/* Buton INCHIDE APLICATIE: rosu MEREU (nu doar la hover); focus/active = mai inchis (se vede ca va fi apasat). */
.login-actions .btn-act.red { background:#d32f2f; border-color:#b71c1c; color:var(--white); }
.login-actions .btn-act.red:hover:not(:disabled),
.login-actions .btn-act.red:focus:not(:disabled),
.login-actions .btn-act.red:focus-visible:not(:disabled),
.login-actions .btn-act.red:active:not(:disabled) {
    background:#9a1616; border-color:#7a1010;
    box-shadow:0 0 0 2px rgba(0,0,0,0.25) inset;
    outline:none;
}
.login-error { color:#ffb74d; font-size:var(--fs-sm); text-align:center; margin-top:10px; min-height:18px; }
.login-footer { text-align:center; margin-top:12px; color:var(--text-sm); font-size:0.68rem; }
.login-connectivity { margin-top:10px; font-size:0.72rem; font-weight:600; letter-spacing:.4px; }
.login-conn-online  { color:#69f0ae; }
.login-conn-offline { color:#ffb74d; }
.login-conn-meta    { margin-top:4px; font-size:0.65rem; color:rgba(255,255,255,0.45); }
.login-conn-pending { color:#ffb74d; font-weight:600; }
.login-update-banner { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:10px; padding:8px 12px; background:rgba(255,193,7,0.15); border:1px solid rgba(255,193,7,0.4); border-radius:6px; font-size:0.75rem; color:#ffe082; }
.login-update-banner .btn-act { padding:4px 12px; font-size:0.72rem; }
/* Sold restant (updater) afisat in login — nuanta rosie/portocalie, sub banner-ul de versiune. */
.login-sold-banner { display:flex; flex-direction:column; gap:2px; margin-top:10px; padding:8px 12px; background:rgba(229,57,53,0.15); border:1px solid rgba(229,57,53,0.45); border-radius:6px; font-size:0.75rem; color:#ff8a80; }
.login-sold-banner .login-sold-msg { font-size:0.7rem; color:#ffb4ab; opacity:0.95; }
/* Mesaj general de la Tehnomax (updater.Mesaj) — banner informativ albastru. */
.login-mesaj-banner { margin-top:10px; padding:8px 12px; background:rgba(42,127,212,0.15); border:1px solid rgba(42,127,212,0.4); border-radius:6px; font-size:0.75rem; color:#9ecbff; white-space:pre-line; }

/* Incadrare LOGIN pe telefon dupa LATIME (nu doar capability): emulatoarele/unele WebView-uri raporteaza
   pointer:fine -> media (hover:none)/(pointer:coarse) NU se aplica -> .login-left ramanea FIX 360px si iesea
   lateral din ecran (tastatura se ascundea oricum pe latime). Dublam layout-ul mobil pe max-width ca sa fie sigur. */
@media (max-width: 700px) {
    .login-kb { display: none; }
    .login-kb-layout { max-width: 460px; flex-direction: column; }
    .login-left { flex: unset; width: 100%; }
}

.conn-overlay { position:fixed; inset:0; background:rgba(10,14,26,0.92); display:flex; align-items:center; justify-content:center; z-index:8000; }
.conn-box { display:flex; flex-direction:column; align-items:center; gap:18px; }
.conn-spinner { width:44px; height:44px; border:4px solid #2a3a4a; border-top-color:#2a7fd4; border-radius:50%; animation:spin .8s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }
.conn-msg { color:#b0c4de; font-size:0.88rem; letter-spacing:.3px; text-align:center; max-width:320px; }

/* Overlay descarcare update - BLOCHEAZA complet interfata (z-index peste orice) */
.update-overlay { position:fixed; inset:0; background:rgba(10,14,26,0.96); display:flex; align-items:center; justify-content:center; z-index:9500; }
.update-box { display:flex; flex-direction:column; align-items:center; gap:14px; width:min(460px,82vw); padding:28px 32px; background:#1a2744; border:1px solid rgba(255,255,255,0.12); border-radius:12px; box-shadow:0 12px 40px rgba(0,0,0,0.55); }
.update-box .update-title { font-size:1.15rem; font-weight:700; color:#fff; }
.update-box .update-sub { font-size:0.82rem; color:#a9b6cc; text-align:center; }
.update-box .update-bar { width:100%; height:14px; background:rgba(255,255,255,0.12); border-radius:8px; overflow:hidden; }
.update-box .update-bar-fill { height:100%; background:linear-gradient(90deg,#ffb300,#ffc107); border-radius:8px; transition:width .2s ease; }
.update-box .update-pct { font-size:0.95rem; font-weight:700; color:#ffc107; }

/* Checklist verificare casă (overlay fiscal) */
.fiscal-ov-pasi { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; min-width:260px; }
.fiscal-ov-pasi li { display:flex; align-items:center; gap:10px; font-size:0.98rem; color:#9aaac0; transition:color .2s; }
.fiscal-ov-pasi .pas-icon { width:1.3rem; text-align:center; flex:0 0 auto; }
.fiscal-ov-pasi li.pas-asteptare { color:#6b788f; }
.fiscal-ov-pasi li.pas-incurs    { color:#fff; font-weight:600; }
.fiscal-ov-pasi li.pas-incurs .pas-icon { animation:spin 1.2s linear infinite; display:inline-block; }
.fiscal-ov-pasi li.pas-gata      { color:#43c97f; }
.fiscal-ov-pasi li.pas-gata .pas-icon { color:#43c97f; }
.login-footer-failover { color:#ff6b6b !important; }
.footer-failover-badge { color:#ff4444; font-weight:700; letter-spacing:.4px; animation:pulse-red 1.5s ease-in-out infinite; }
@keyframes pulse-red { 0%,100%{opacity:1} 50%{opacity:.5} }

.startup-error-overlay { position:fixed; inset:0; background:rgba(10,14,26,0.97); display:flex; align-items:center; justify-content:center; z-index:9999; }
.startup-error-box { background:#1a1f2e; border:1px solid #c0392b; border-radius:12px; padding:40px 48px; max-width:520px; text-align:center; display:flex; flex-direction:column; align-items:center; gap:16px; }
.startup-error-icon { font-size:3rem; color:#e74c3c; }
.startup-error-title { font-size:1.2rem; font-weight:700; color:#e74c3c; letter-spacing:.5px; }
.startup-error-msg { font-size:0.82rem; color:#ccc; white-space:pre-wrap; text-align:left; background:#111; padding:12px 16px; border-radius:6px; border:1px solid #333; width:100%; }

/* padding-right = 0: zona de scroll ajunge pana la marginea DIN DREAPTA a cutiei -> bara de scroll
   e ancorata complet dreapta (nu peste inputuri). Clearance-ul fata de campuri il da .setup-scroll (padding-right). */
.startup-setup-box { background:#1a1f2e; border:1px solid #2a7fd4; border-radius:12px; padding:32px 0 32px 40px; width:560px; max-width:95vw; max-height:92vh; overflow:hidden; display:flex; flex-direction:column; align-items:center; gap:14px; }

/* Ecran mic — compactare formular */
@media (max-height: 720px), (max-width: 600px) {
    .startup-setup-box { padding:16px 20px; gap:8px; }
    .startup-error-icon { font-size:1.8rem; }
    .startup-error-title { font-size:1.05rem; }
    .startup-setup-subtitle { font-size:0.72rem; }
    .setup-form { gap:5px; }
    .setup-row { grid-template-columns:110px 1fr; gap:6px; }
    .setup-row label { font-size:0.72rem; }
    .setup-row input,
    .setup-select { padding:4px 8px; font-size:0.76rem; }
    .setup-section-title { padding-top:5px; margin-top:2px; }
    .setup-section-hint { padding-left:118px; font-size:0.66rem; line-height:1.3; }
    .setup-actions .btn-act { padding:6px 8px; font-size:0.74rem; min-height:32px; }
}
/* Touch / ecran ingust (telefon, terminal Android Zebra): o SINGURA coloana — eticheta DEASUPRA
   input-ului, pe toata latimea. Altfel layout-ul pe 2 coloane (eticheta + input) inghesuie inputurile
   si hint-ul (cu padding-left mare) se rupe urat. `pointer:coarse` prinde touch-ul indiferent de latime. */
@media (max-width: 700px), (pointer: coarse) {
    .setup-row { grid-template-columns:1fr !important; gap:3px !important; align-items:stretch; }
    .setup-row label { text-align:left !important; padding-left:2px; font-size:0.8rem; }
    .setup-row input,
    .setup-select { width:100%; box-sizing:border-box; padding:9px 10px; font-size:0.9rem; }
    .setup-section-hint { padding-left:2px !important; font-size:0.72rem; }
    .setup-actions .btn-act { padding:10px 8px; font-size:0.82rem; min-height:42px; }
    /* butoanele mici de langa codul fiscal (preluare din baza / cautare client) — tinta de deget */
    .setup-cif-btn { min-height:42px; min-width:44px; font-size:0.95rem; }
}
.startup-setup-subtitle { font-size:0.8rem; color:#aaa; text-align:center; }
.startup-setup-subtitle code { color:#7ecfff; background:#111; padding:1px 5px; border-radius:3px; }
.setup-form { width:100%; display:flex; flex-direction:column; gap:8px; }
.setup-row { display:grid; grid-template-columns:140px 1fr; align-items:center; gap:10px; }
.setup-row label { font-size:0.78rem; color:#aaa; text-align:right; }
.setup-row input { background:#111; border:1px solid #333; border-radius:5px; padding:6px 10px; color:#fff; font-size:0.82rem; outline:none; }
.setup-row input:focus { border-color:#2a7fd4; }
.setup-select { background:#111; border:1px solid #333; border-radius:5px; padding:6px 10px; color:#fff; font-size:0.82rem; outline:none; cursor:pointer; }
.setup-select:focus { border-color:#2a7fd4; }
.setup-section-hint { font-size:0.72rem; color:#9aaccc; padding:2px 0 4px 150px; line-height:1.4; }
.setup-section-hint code { color:#7ecfff; background:#111; padding:1px 5px; border-radius:3px; }
.setup-eroare { color:#ff6b6b; font-size:0.78rem; text-align:center; }
/* Footer ANCORAT (Înapoi + Salvează și repornește) — fix jos; .setup-scroll (flex:1) derulează DEASUPRA lui. */
.setup-actions {
    display:flex; gap:12px; width:100%; justify-content:center;
    flex:0 0 auto; padding-top:10px; padding-right:40px;   /* simetrie cu padding-left 40 al cutiei (dreapta cutiei = 0) */
    box-sizing:border-box;
    border-top:1px solid #2a3a4a;
}
.setup-scroll {
    flex:1 1 auto; min-height:0; overflow-y:auto; overflow-x:hidden; width:100%;
    display:flex; flex-direction:column; align-items:center; gap:14px;
    /* bara de scroll sta la marginea din dreapta a cutiei; padding-right tine campurile la distanta de ea
       (inclusiv pentru barele overlay din WebView2 care deseneaza PESTE continut). */
    padding-right:30px;
    box-sizing:border-box;
}
.setup-section-title { font-size:0.72rem; color:#7ecfff; text-transform:uppercase; letter-spacing:.6px; width:100%; border-top:1px solid #2a3a4a; padding-top:8px; margin-top:4px; }
.setup-cif-wrap { display:flex; gap:6px; }
.setup-cif-wrap input { flex:1; }
.setup-cif-btn { padding:4px 10px; font-size:0.78rem; min-width:36px; }
.setup-cif-found { font-size:0.78rem; color:#4caf50; text-align:center; }
.setup-cif-notfound { font-size:0.78rem; color:#ffb74d; text-align:center; }
.setup-cif-list { width:100%; display:flex; flex-direction:column; gap:4px; max-height:150px; overflow-y:auto; }
.setup-cif-item { background:#111; border:1px solid #2a3a4a; border-radius:5px; padding:6px 10px; cursor:pointer; display:flex; justify-content:space-between; align-items:center; text-align:left; color:#fff; }
.setup-cif-item:hover { border-color:#2a7fd4; background:#1a2a3a; }
.cif-item-den { font-size:0.82rem; font-weight:600; }
.cif-item-cif { font-size:0.72rem; color:#aaa; }

/* ════════════════════ SEARCH PANEL ════════════════════ */
.search-overlay {
    /* Se aliniaza EXACT cu viewport-ul vizual (deasupra tastaturii): top=--vvtop (offset iOS la deschiderea
       tastaturii), height=--vvh (inaltimea vizibila). Fallback 100dvh/0. bottom:auto -> panoul sta in zona vizibila. */
    position:fixed; top:var(--vvtop, 0); left:0; right:0; bottom:auto;
    height: var(--vvh, 100dvh);
    z-index:1000;
    background:rgba(0,0,0,0.55);
    display:flex; align-items:flex-end; justify-content:center;
    padding:0;
}
.search-panel {
    background:var(--navy);
    border-radius:16px 16px 0 0;
    width:100%; max-width:860px;
    height:85dvh; max-height:100%;   /* capat la inaltimea overlay-ului (zona de deasupra tastaturii) */
    display:flex; flex-direction:column;
    overflow:hidden;
    box-shadow:0 -8px 32px rgba(0,0,0,0.4);
}
.search-panel-hdr {
    display:flex; justify-content:space-between; align-items:center;
    padding:12px 16px;
    border-bottom:1px solid rgba(255,255,255,0.1);
    color:var(--white); font-size:var(--fs-md); font-weight:700;
    flex-shrink:0;
}
.search-close {
    width:32px; height:32px;
    background:rgba(255,255,255,0.1); border:1px solid rgba(255,255,255,0.2);
    border-radius:50%; color:var(--white); font-size:1rem;
    cursor:pointer; display:flex; align-items:center; justify-content:center;
}
.search-close:hover { background:rgba(255,255,255,0.2); }
.search-input-row { padding:10px 12px 6px; flex-shrink:0; display:flex; gap:4px; align-items:center; }
.search-bs-inline {
    flex-shrink:0; height:28px; width:88px;
    background:rgba(210,60,40,0.35); border:1px solid rgba(255,255,255,0.2);
    border-radius:var(--rad-sm); color:var(--white);
    font-size:0.88rem; font-weight:700; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    transition:background .1s, transform .08s; user-select:none;
}
.search-bs-inline:hover  { background:rgba(210,60,40,0.55); }
.search-bs-inline:active { transform:scale(0.93); }
.search-input {
    flex:1; min-width:0; height:40px;
    background:rgba(255,255,255,0.12); border:1px solid rgba(255,255,255,0.25);
    border-radius:var(--rad-sm); color:var(--white);
    font-size:var(--fs-lg); font-weight:600; padding:0 12px;
}
.search-input:focus { outline:1px solid rgba(255,255,255,0.5); }
.search-input::placeholder { color:rgba(255,255,255,0.4); }
.search-kb { padding:6px 12px 8px; display:flex; flex-direction:column; gap:5px; flex-shrink:0; }
/* Pe telefon se folosește tastatura NATIVĂ (input fără inputmode=none). Ca tastatura să se deschidă PESTE POS și să
   redimensioneze DOAR modalul: overlay-ul ACOPERĂ tot ecranul (POS-ul nu se mai vede/redimensionează în spate), iar
   panoul stă SUS cu INPUT-ul primul (order) → tastatura nativă se deschide SUB el; rezultatele umplu zona dintre
   input și tastatură (panoul = --vvh = înălțimea vizibilă deasupra tastaturii, setată din visualViewport). */
@media (max-width: 699px) {
    /* Overlay = EXACT viewport-ul vizual (top:--vvtop, height:--vvh din base). Fundal OPAC navy → POS-ul NU se mai
       vede deloc (nici estompat) sub panou. Panoul UMPLE overlay-ul (stretch), input SUS, rezultatele dedesubt →
       tastatura nativă stă exact sub panou, peste POS. */
    .search-overlay   { background:var(--navy); align-items:flex-start; }
    .search-panel     { height:var(--vvh, 100dvh); max-height:var(--vvh, 100dvh); width:100%; border-radius:0; box-shadow:none; }
    .search-input-row { order:1; padding:8px 10px; }
    .search-body      { order:2; }
}
/* Corp = listă + bară de navigare (▲/▼, butoane btn-bon-nav) pe dreapta, DOAR pe PC (touchscreen fără multitouch). */
.search-body { flex:1 1 auto; min-height:0; display:flex; }
.grupe-body  { display:flex; align-items:stretch; }
.grupe-body .grupe-produse-list { flex:1 1 auto; min-width:0; }
.lista-navbar { flex:0 0 auto; display:flex; flex-direction:column; justify-content:space-between; padding:8px 4px 8px 8px; }
@media (max-width:699px) { .lista-navbar { display:none; } }   /* pe telefon = scroll nativ (multitouch); butoanele btn-bon-nav sunt oricum ascunse */
.search-results { flex:1; min-width:0; overflow-y:auto; overscroll-behavior:contain; border-top:1px solid rgba(255,255,255,0.1); border-bottom:1px solid rgba(255,255,255,0.1); }
.search-results::-webkit-scrollbar { width:4px; }
.search-results::-webkit-scrollbar-thumb { background:rgba(255,255,255,0.3); border-radius:2px; }
@media (hover:hover) and (pointer:fine) {
    .search-results { cursor:grab; }
    .search-results::-webkit-scrollbar { width:8px; }
    .search-results::-webkit-scrollbar-track { background:rgba(255,255,255,0.06); border-radius:4px; }
    .search-results::-webkit-scrollbar-thumb { background:rgba(255,255,255,0.35); border-radius:4px; }
    .search-results::-webkit-scrollbar-thumb:hover { background:rgba(255,255,255,0.6); }
}
.search-empty { padding:20px; text-align:center; color:rgba(255,255,255,0.5); font-size:var(--fs-sm); }
.search-result-row {
    display:flex; align-items:center; justify-content:space-between;
    padding:10px 16px;
    border-bottom:1px solid rgba(255,255,255,0.08);
    cursor:pointer; transition:background .1s;
}
.search-result-row:hover { background:rgba(255,255,255,0.08); }
.search-result-row.sr-active { background:rgba(80,150,255,0.30); box-shadow:inset 3px 0 0 #4d90fe; }

/* Modal subunitate de lucru (GestSel, SUBUNITATI=ON) */
.subunitate-list { display:flex; flex-direction:column; gap:10px; margin:18px 0; }
.subunitate-btn {
    padding:16px 18px; font-size:1.15rem; font-weight:700;
    background:var(--blue,#1565c0); color:#fff; border:none; border-radius:10px;
    cursor:pointer; text-align:left; transition:background .1s;
}
.subunitate-btn:hover { background:#0d47a1; }
.subunitate-btn:active { transform:scale(0.99); }
.subunitate-btn.su-activ { outline:3px solid #ffd54f; outline-offset:-3px; }
.subunitate-exit { width:100%; padding:15px 18px; font-size:1.1rem; margin-top:4px; }

/* Modal vouchere RVM (TOMRA) */
.voucher-modal-title { display:flex; flex-direction:column; align-items:center; gap:8px; }
.voucher-logos { display:flex; align-items:center; justify-content:center; gap:14px; flex-wrap:wrap; }
.voucher-logo-returo { height:46px; width:auto; object-fit:contain; }
.voucher-logo-rvm { height:30px; width:auto; object-fit:contain; }
.voucher-input { width:100%; padding:12px 14px; font-size:1.05rem; border:2px solid #1565c0; border-radius:8px; margin:12px 0 8px; text-align:center; box-sizing:border-box; }
.voucher-msg { text-align:center; font-weight:700; padding:6px; font-size:0.9rem; }
.voucher-msg.ok  { color:#2e7d32; }
.voucher-msg.err { color:#c62828; }
.voucher-list { max-height:220px; overflow-y:auto; margin:8px 0; }
.voucher-item { display:flex; align-items:center; gap:8px; padding:8px 10px; border-bottom:1px solid #e0e0e0; }
.voucher-item .vi-cod { flex:1; font-family:monospace; font-size:0.78rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.voucher-item .vi-val { font-weight:700; color:#2e7d32; white-space:nowrap; }
.voucher-item .vi-del { background:#d32f2f; color:#fff; border:none; border-radius:6px; width:28px; height:28px; cursor:pointer; flex:0 0 auto; }
.voucher-empty { text-align:center; color:#999; padding:16px; }
.voucher-total { text-align:right; font-size:1.05rem; padding:8px 0; border-top:2px solid #e0e0e0; }
.voucher-hint { font-size:0.82rem; color:#2e7d32; background:rgba(46,125,50,0.1); border-radius:6px; padding:7px 9px; margin:4px 0; line-height:1.35; }
.voucher-actions { display:flex; gap:10px; margin-top:10px; }
.voucher-actions .btn-act { flex:1; padding:12px; }

/* Buton subunitate în bara de jos (ID deasupra, denumire sub) — FIX, exact cât butonul de status „Online" */
.pos-subunit-btn {
    flex:0 0 auto; min-width:0;
    flex-direction:column; gap:0; line-height:1.3;
    padding:3px 7px; white-space:nowrap;
}
.pos-subunit-btn .psb-id  { font-size:0.72rem; font-weight:800; }
.pos-subunit-btn .psb-den { font-size:0.58rem; font-weight:600; opacity:0.8; overflow:hidden; text-overflow:ellipsis; max-width:120px; }
.sr-info { display:flex; flex-direction:column; gap:2px; min-width:0; flex:1; overflow:hidden; }
.sr-name { font-size:var(--fs-sm); font-weight:700; color:var(--white); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sr-det  { font-size:var(--fs-xs); color:rgba(255,255,255,0.55); }
.sr-um   { font-size:0.68rem; font-weight:700; color:#1a2744; background:#7ab4ff; border-radius:4px; padding:1px 6px; white-space:nowrap; flex-shrink:0; align-self:center; }
.sr-pret { font-size:var(--fs-md); font-weight:700; color:#7ab4ff; white-space:nowrap; flex-shrink:0; padding-left:8px; }

/* ════════════════════ REST NUMERAR MODAL ════════════════════ */
.rest-overlay {
    position:fixed; inset:0; z-index:600;
    background:rgba(0,0,0,0.7);
    display:flex; align-items:center; justify-content:center;
    padding:16px;
}
.rest-panel {
    background:var(--navy);
    border-radius:16px;
    box-shadow:0 12px 56px rgba(0,0,0,0.5);
    width:100%; max-width:360px;
    display:flex; flex-direction:column;
    overflow:hidden;
}
.rest-hdr {
    padding:16px 20px 12px;
    font-size:var(--fs-sm); font-weight:700;
    color:rgba(255,255,255,0.7);
    text-align:center; text-transform:uppercase; letter-spacing:.5px;
}
.rest-body { padding:0 20px 16px; display:flex; flex-direction:column; gap:8px; }
.rest-row  { display:flex; justify-content:space-between; align-items:baseline; }
.rest-label  { font-size:var(--fs-sm); color:rgba(255,255,255,0.55); font-weight:500; }
.rest-val-sm { font-size:var(--fs-md); font-weight:700; color:rgba(255,255,255,0.8); }
.rest-sep    { height:1px; background:rgba(255,255,255,0.12); margin:4px 0; }
.rest-main-row { margin-top:4px; }
.rest-main-label { font-size:1.1rem; font-weight:700; color:rgba(255,255,255,0.7); text-transform:uppercase; letter-spacing:.5px; }
.rest-main-val {
    font-size:clamp(2rem,8vw,3rem); font-weight:900; color:#69f0ae;
    font-family:'Arial Narrow','Segoe UI',sans-serif;
    letter-spacing:-1px; line-height:1;
}
.rest-ok {
    margin:0; padding:16px;
    background:var(--green); border:none;
    color:var(--white); font-size:var(--fs-md); font-weight:700;
    cursor:pointer; letter-spacing:.3px;
    transition:background .12s;
}
.rest-ok:hover { background:#247a40; }

/* spinner POS bancar (comunicare cu terminalul) */
.banca-spinner {
    width:48px; height:48px; margin:6px auto 0;
    border:5px solid rgba(255,255,255,.2);
    border-top-color:#4da3ff;
    border-radius:50%;
    animation:spin .9s linear infinite;
}

/* Override supervizor (SupervizorOverrideModal) */
.sv-row { display:flex; flex-direction:column; gap:4px; margin-bottom:10px; }
.sv-row label { color:#cfe0ff; font-size:0.9rem; }
.sv-input-row { display:flex; gap:8px; }
.sv-input {
    flex:1; min-width:0; box-sizing:border-box; padding:10px 12px;
    border:1px solid rgba(255,255,255,.25); border-radius:8px;
    background:rgba(255,255,255,.08); color:#fff; font-size:1.15rem; letter-spacing:2px;
}
.sv-input:focus { outline:none; border-color:#4da3ff; background:rgba(255,255,255,.14); }
.sv-bs {
    flex:0 0 auto; width:52px; border:1px solid rgba(255,255,255,.2);
    border-radius:8px; background:rgba(255,255,255,.1); color:#fff;
    font-size:1.2rem; cursor:pointer;
}
.sv-bs:active { background:rgba(255,255,255,.2); }
.sv-kb { display:flex; flex-direction:column; gap:8px; margin-top:6px; }
/* Taste mari pentru tastatura din modalul de aprobare (scoped — nu afecteaza cautarea) */
.sv-kb .vkb-row { gap:8px; }
.sv-kb .vkb-key { height:72px; font-size:1.6rem; border-radius:10px; }

/* ════════════════════ MISC ════════════════════ */
.bon-list::-webkit-scrollbar { width:4px; }
.bon-list::-webkit-scrollbar-thumb { background:var(--blue-lt); border-radius:2px; }

/* ════════════════════ PC — butoane mari ════════════════════ */
@media (min-width: 700px) and (hover: hover) and (pointer: fine) {
    :root { --num-h: clamp(86px, 12vh, 121px); }    /* +25% total — desktop wide */
    .right-panel { width: clamp(425px, 48vw, 625px); } /* +25% lățime pentru numpad 5 col */
    .rp-cant { justify-content: flex-end; }
    .btn-cant { width: 42px; height: 42px; font-size: 1.4rem; }
    .rp-cant-val { width: 84px !important; height: 42px !important; }
    .rp-main-input { height: 44px; }
    .rp-barcode-btn { width: 44px; height: 44px; font-size: 1.6rem; }
    .numpad-area { gap: 8px; padding: 10px; }
    .btn-num { font-size: clamp(1.7rem, 2.8vw, 2.3rem); }
    .btn-plata { min-height: clamp(82px, 12vh, 112px); }
    .plata-icon  { font-size: clamp(1.7rem, 2.8vw, 2.4rem); }
    .plata-label { font-size: var(--fs-sm); }
}

/* Lățime îngustă (ex. 1024/1280 px, desktop): blocul din dreapta MAI ÎNGUST → mai mult spațiu pentru lista de
   produse. Butoanele numpad + plată ~20% mai mici ca să încapă proporțional în panoul mai îngust. */
@media (min-width: 700px) and (max-width: 1365px) and (hover: hover) and (pointer: fine) {
    .right-panel { width: clamp(340px, 38vw, 460px); }
    .numpad-area { gap: 6px; padding: 8px; }
    .btn-num { font-size: clamp(1.36rem, 2.24vw, 1.84rem); }
    .btn-plata { min-height: clamp(66px, 9.6vh, 90px); }
    .plata-icon  { font-size: clamp(1.36rem, 2.24vw, 1.9rem); }
}

/* ════════════════════ PC — ecran scurt (≤820px înălțime) ════════════════════ */
@media (min-width: 700px) and (max-height: 800px) and (hover: hover) and (pointer: fine) {
    :root {
        --hdr-h: clamp(48px, 7vh,   64px);
        --num-h: clamp(67px, 9.9vh, 103px);   /* +25% total — short screen (1366×768 / 1024×768 etc.) */
        --act-h: clamp(36px, 5vh,   48px);
    }
    .right-panel { gap: 4px; }
    .numpad-area { padding: 6px; gap: 5px; }
    .btn-plata   { min-height: clamp(60px, 9.6vh, 91px); }  /* +20% înălțime butoane plată — short screen */
    .plata-icon  { font-size: clamp(1.2rem, 2.2vw, 1.8rem); }

    /* Total mai mare pe ecran scund (acest breakpoint max-height:800px): bara albastra ~dubla + „Total" si valoarea la ~2x font. */
    .de-plata-header { padding: clamp(12px, 2.4vh, 20px) 12px; }
    .de-plata-header > span:first-child { font-size: clamp(2.2rem, 6vh, 4rem); }
    .de-plata-header .dp-val { font-size: clamp(2.4rem, 7vh, 4.8rem); }

    /* ULTIMA VANZARE (panoul care acopera Total dupa emiterea bonului) — la fel de mare:
       total, rest si modurile de plata cu font marit, ca sa se citeasca de la distanta. */
    .ultim-bon-panel { padding: clamp(10px, 2vh, 18px) 14px; }
    .ub-title { font-size: clamp(1.05rem, 2.2vh, 1.7rem); margin-bottom: clamp(4px, 1vh, 10px); }
    .ub-total { font-size: clamp(2rem, 5.6vh, 3.8rem); margin-bottom: clamp(4px, 1vh, 10px); }
    .ub-row   { font-size: clamp(1.15rem, 2.6vh, 2rem); line-height: 1.35; }
    .ub-rest  { font-size: clamp(1.3rem, 3vh, 2.3rem); padding-top: clamp(4px, 0.8vh, 8px); margin-top: clamp(4px, 0.8vh, 8px); }
}

/* ════════════════════ MOBILE ════════════════════ */
@media (hover: none) and (pointer: coarse) {
    .login-kb { display: none; }
    .login-kb-layout { max-width: 440px; flex-direction: column; }
    .login-left { flex: unset; width: 100%; }
    .pos-header  { flex-wrap: wrap; min-height: auto; }
    /* Pe touch (iOS/Android) arătăm info-ul (Z / bon / operator) compact, orizontal, se pliază pe lățimi mici.
       Data/ora se ascunde — iPad/Android o afișează nativ în bara de status. */
    .hdr-info    { flex-direction: row; flex-wrap: wrap; column-gap: 10px; row-gap: 1px; align-items: center; font-size: var(--fs-xs); }
    .hdr-clock   { display: none; }
    .right-panel { width: clamp(220px, 35vw, 340px); }
    .plata-btns { gap: 3px; }
    .btn-plata { padding: 4px 2px; }
    .plata-icon { font-size: 1.0rem; }
    .plata-label { font-size: clamp(0.42rem, 2.0vw, 0.60rem); }
}

/* ════════════════════ CONFIG POS PANEL ════════════════════ */
.cfg-overlay {
    position:fixed; inset:0; background:rgba(0,0,0,0.55);
    display:flex; align-items:center; justify-content:center;
    z-index:1000;
}
.cfg-panel {
    background:var(--white); border-radius:var(--rad);
    padding:24px; width:min(520px,94vw);
    box-shadow:0 8px 32px rgba(0,0,0,0.25);
    display:flex; flex-direction:column; gap:14px;
    max-height:92vh; overflow-y:auto;   /* panoul derulează; footer-ul (.cfg-actions) e ancorat jos via sticky */
}
.cfg-title {
    font-size:var(--fs-lg); font-weight:800; color:var(--navy);
    display:flex; align-items:center; justify-content:space-between;
}
.cfg-back {
    font-size:var(--fs-sm); font-weight:600; color:var(--blue);
    background:none; border:none; cursor:pointer; padding:4px 8px;
}
.cfg-mod-btns {
    display:grid; grid-template-columns:repeat(3,1fr); gap:8px;
}
/* 5 butoane: 3 pe primul rand, 2 pe al doilea centrate */
.cfg-mod-btns > :nth-child(4) { grid-column: 1; }
.cfg-mod-btns > :nth-child(5) { grid-column: 2; }
.cfg-mod-btn {
    display:flex; flex-direction:column; align-items:center; gap:4px;
    padding:12px 8px; border:2px solid var(--border);
    border-radius:var(--rad); background:var(--bg);
    cursor:pointer; transition:border-color .15s, background .15s;
    font-size:var(--fs-sm); font-weight:700; color:var(--navy);
}
.cfg-mod-btn:hover { border-color:var(--blue); background:var(--blue-lt); }
.cfg-mod-btn-offline { border-color:#c0392b; background:#fdf0ef; color:#c0392b; }
.cfg-mod-btn-offline:hover { border-color:#a93226; background:#fadbd8; }
.cfg-mod-btn-offline .cfg-mod-sub { color:#c0392b; }
.cfg-mod-icon { font-size:1.5rem; line-height:1; }
.cfg-mod-sub  { font-size:0.58rem; color:var(--text-sm); font-weight:400; text-align:center; word-break:break-all; }
.cfg-textarea {
    width:100%; height:260px; resize:vertical;
    font-family:'Consolas','Courier New',monospace; font-size:0.78rem;
    border:1px solid var(--border); border-radius:var(--rad-sm);
    padding:10px; color:var(--text); background:var(--bg);
    line-height:1.5;
}
.cfg-textarea:focus { outline:2px solid var(--blue); }
.cfg-mesaj  { font-size:var(--fs-sm); font-weight:600; padding:6px 10px; border-radius:var(--rad-sm); }
.cfg-ok  { background:#e8f5e9; color:#2e7d32; }
.cfg-err { background:#ffebee; color:#c62828; }
.cfg-actions { display:flex; gap:10px; }
/* Footer ANCORAT: stă MEREU jos (flex:0 0 auto). Zona scrollabilă (.cfg-scroll) e flex:1 DEASUPRA lui —
   conținutul derulează exact până la footer, nu pe sub el. Pe ecrane scurte footer-ul rămâne lipit jos. */
.cfg-panel > .cfg-actions { flex:0 0 auto; }
.cfg-scroll { flex:1 1 auto; min-height:0; overflow-y:auto; display:flex; flex-direction:column; gap:14px; }
.cfg-btn-save {
    flex:1; padding:10px; background:var(--green); color:var(--white);
    border:none; border-radius:var(--rad-sm); font-size:var(--fs-sm);
    font-weight:700; cursor:pointer;
}
.cfg-btn-save:disabled { background:#aaa; cursor:not-allowed; }
.cfg-btn-save:hover:not(:disabled) { background:#247a40; }
/* Convenție UI: butoanele de RENUNȚĂ / ANULEAZĂ / ÎNCHIDE = roșu (action destructivă / negativă). */
.cfg-btn-cancel {
    padding:10px 16px; background:#d32f2f; color:var(--white);
    border:1px solid #b71c1c; border-radius:var(--rad-sm);
    font-size:var(--fs-sm); font-weight:700; cursor:pointer;
    box-shadow:0 2px 6px rgba(211,47,47,0.3);
}
.cfg-btn-cancel:hover { background:#b71c1c; }
.cfg-btn-server { background:var(--navy-md) !important; }
.cfg-btn-server:hover:not(:disabled) { background:var(--navy) !important; }
.cfg-btn-ambele { background:var(--purple, #8e44ad) !important; }
.cfg-btn-ambele:hover:not(:disabled) { background:#7d3c98 !important; }
.cfg-page { display:flex; flex-direction:column; height:100dvh; background:var(--bg); }
.cfg-page-header { background:var(--navy); color:var(--white); display:flex; align-items:center; gap:14px; padding:10px 20px; flex-shrink:0; }
.cfg-back-btn { background:rgba(255,255,255,0.15); border:1px solid rgba(255,255,255,0.25); color:var(--white); border-radius:var(--rad-sm); padding:6px 14px; font-size:var(--fs-sm); font-weight:600; cursor:pointer; }
.cfg-back-btn:hover { background:rgba(255,255,255,0.25); }
.cfg-page-title { font-size:var(--fs-lg); font-weight:800; letter-spacing:.3px; }
.cfg-mod-btns-page { padding:20px; display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:14px; }
.cfg-section-title { font-size:var(--fs-md); font-weight:800; color:var(--navy); display:flex; align-items:center; justify-content:space-between; padding:14px 20px 6px; }
.cfg-textarea-page { margin:0 20px; height:calc(100dvh - 200px); resize:none; }
.cfg-viz-table-wrap { margin:0 20px; flex:1; overflow-y:auto; }
.cfg-actions { padding:12px 20px; display:flex; gap:10px; }
.cfg-viz-search-bar { padding:10px 20px 4px; }
.cfg-viz-search { width:100%; max-width:420px; padding:8px 14px; border:1px solid var(--border); border-radius:var(--rad-sm); font-size:var(--fs-sm); background:var(--white); color:var(--navy); }
.cfg-viz-search:focus { outline:2px solid var(--blue); }
.cfg-viz-sectiune { padding:8px 12px 4px; font-size:var(--fs-xs); font-weight:800; color:var(--text-sm); text-transform:uppercase; letter-spacing:.6px; background:var(--bg); border-bottom:1px solid var(--border); }
.cfg-viz-empty  { padding:24px; text-align:center; color:var(--text-sm); font-size:var(--fs-sm); }
.cfg-viz-subcfg { background:#f8f9ff; }
.cfg-viz-subcfg .cfg-viz-key { padding-left:24px; color:var(--blue); }
.cfg-viz-subcfg .cfg-viz-key::before { content:"↳ "; opacity:.5; }
.cfg-viz-pair-wrap { display:flex; gap:6px; }
.cfg-viz-pair-wrap .cfg-viz-input { flex:1; min-width:0; }
.cfg-viz-pair-sep  { color:var(--text-sm); margin:0 4px; }
.cfg-viz-pair-key  { color:var(--blue); font-weight:500; font-size:var(--fs-xs); }
.cfg-panel.cfg-wide { width:min(960px,96vw); }
/* Config vizuală pe desktop: fereastră ANCORATĂ la ~90% înălțime (≈5% sus / 5% jos prin centrarea overlay),
   nu doar cât conținutul. Tabelul de parametri umple tot spațiul vertical (scapă de plafonul de 340px).
   Pe touch, media query-ul de mai jos (sursă ulterioară) suprascrie înapoi la full-screen. */
.cfg-panel.cfg-tall { height:90vh; max-height:90vh; overflow:hidden; }
.cfg-panel.cfg-tall .cfg-viz-table-wrap { max-height:none; flex:1 1 auto; min-height:0; }

/* Touch (telefon / terminal Android Zebra): panoul de config umple tot ecranul — altfel ramane
   centrat la 520/960px cu margini mari pe ecranele late. */
@media (pointer: coarse), (max-width: 820px) {
    .cfg-overlay { align-items:stretch; justify-content:stretch; }
    .cfg-panel,
    .cfg-panel.cfg-wide {
        width:100vw; max-width:100vw; height:100dvh; border-radius:0; padding:14px;
        /* coboara continutul sub status bar / notch (Android edge-to-edge) — insets reale via --safe-* (MainActivity) */
        padding-top:max(14px, var(--safe-top, env(safe-area-inset-top, 34px)));
        padding-bottom:max(14px, var(--safe-bottom, env(safe-area-inset-bottom, 14px)));
    }
    /* tabelul de config umple tot spatiul vertical disponibil. `!important` invinge regula de mai jos din
       fisier (.cfg-viz-table-wrap { max-height:340px }) care, fiind dupa acest @media in sursa, ar plafona tabelul. */
    .cfg-viz-table-wrap { margin:0; max-height:none !important; flex:1 1 auto; min-height:0; }
    /* La config vizuală tabelul (flex:1) împinge butoanele jos. La AMEF (conținut natural, panoul
       derulează) NU folosim margin-top:auto — altfel rămâne un gol alb mare între conținut și buton. */
    .cfg-actions { margin-top:0; }
    /* coloana INFORMATII — ascunsa pe telefon/interfata mica (service-ul stie setarile; nu incarcam UI inutil) */
    .cfg-viz-info { display:none; }
    /* Pe touch panoul ÎNTREG derulează → scoatem plafonul intern al parametrilor AMEF, altfel
       ultima secțiune (Network + butonul Salvează) rămânea sub limita de 460px și nu se ajungea la ea. */
    .cfg-panel, .cfg-panel.cfg-wide { overflow-y:auto; }
    .cfg-amef-params { max-height:none; overflow:visible; }
}

/* ── ADMIN AMEF ──────────────────────────────────── */
.cfg-amef-status {
    margin:8px 0 14px; padding:8px 16px; border-radius:var(--rad-sm);
    font-size:var(--fs-sm); font-weight:700; text-align:center;
}
.cfg-amef-ok  { background:#e8f5e9; color:#2e7d32; }
.cfg-amef-off { background:#f5f5f5; color:#888; }
.cfg-amef-grid {
    display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:12px;
}
.cfg-amef-btn {
    padding:14px 10px; border:2px solid var(--blue); border-radius:var(--rad-sm);
    background:var(--blue-lt); color:var(--navy);
    font-size:var(--fs-sm); font-weight:700; cursor:pointer; transition:background .15s;
}
.cfg-amef-btn:hover:not(:disabled) { background:#c9e1ff; }
.cfg-amef-btn:disabled { opacity:.4; cursor:not-allowed; }
.cfg-amef-btn-sec  { border-color:var(--border); background:var(--bg); }
.cfg-amef-btn-sec:hover:not(:disabled) { background:var(--border); }
.cfg-amef-btn-danger { border-color:#e53935; color:#c62828; background:#ffebee; }
.cfg-amef-btn-danger:hover:not(:disabled) { background:#ffcdd2; }

/* Mini-form retipărire Z (după număr / după dată) în Operații Fiscale */
.retip-form { display:flex; flex-direction:column; gap:12px; margin-bottom:12px; }
.retip-row  { display:flex; align-items:center; gap:12px; }
.retip-row > label { flex:0 0 120px; font-weight:700; color:var(--navy); font-size:var(--fs-sm); }
.retip-row > .cfg-amef-btn, .retip-row > .dp { flex:1 1 auto; }
.retip-hint { font-size:var(--fs-xs); color:var(--muted, #78849a); text-align:center; }
.retip-input { flex:1 1 auto; padding:10px 12px; border:2px solid var(--blue); border-radius:var(--rad-sm);
               font-size:var(--fs-sm); color:var(--navy); background:var(--white); min-width:0; }

/* Tastatură pe ecran pentru adresa de email (light theme, taste mari pentru touchscreen) */
.ekb-input-row { display:flex; gap:8px; align-items:center; margin-bottom:12px; }
.ekb-input { flex:1 1 auto; padding:15px 16px; border:2px solid var(--blue); border-radius:var(--rad-sm);
             font-size:1.35rem; color:var(--navy); background:var(--white); min-width:0; }
.ekb-bs { flex:0 0 auto; height:60px; width:78px; border:2px solid #e53935; color:#c62828; background:#ffebee;
          border-radius:var(--rad-sm); font-size:1.4rem; font-weight:700; cursor:pointer; }
.ekb-bs:active { transform:scale(0.93); }
.ekb-kb  { display:flex; flex-direction:column; gap:8px; }
.ekb-row { display:flex; gap:8px; justify-content:center; }
.ekb-key { flex:1; height:60px; min-width:0; background:var(--blue-lt); border:2px solid var(--blue);
           border-radius:var(--rad-sm); color:var(--navy); font-size:1.4rem; font-weight:700; cursor:pointer;
           display:flex; align-items:center; justify-content:center; user-select:none; transition:background .1s, transform .08s; }
.ekb-key:hover  { background:#c9e1ff; }
.ekb-key:active { transform:scale(0.9); }
/* pe telefon îngust, taste puțin mai mici ca să încapă rândul de 10 */
@media (max-width: 560px) {
    .ekb-key { height:48px; font-size:1.05rem; }
    .ekb-input { font-size:1.1rem; padding:12px; }
    .ekb-bs { height:48px; width:60px; }
}

/* Bară de progres export XML — INDETERMINATĂ (COM-ul nu dă % de progres; arată doar activitate) */
.exp-bar { position:relative; width:280px; max-width:80vw; height:16px; border-radius:9px;
           background:rgba(255,255,255,0.18); overflow:hidden; box-shadow:inset 0 0 0 1px rgba(255,255,255,0.25); }
.exp-bar-indet { position:absolute; top:0; height:100%; width:40%; border-radius:9px;
                 background:linear-gradient(90deg,#3fa9f5,#2ee6a6); animation:exp-slide 1.1s ease-in-out infinite; }
@keyframes exp-slide { 0% { left:-42%; } 100% { left:100%; } }
.exp-bar-fill { height:100%; border-radius:9px; background:linear-gradient(90deg,#3fa9f5,#2ee6a6); transition:width .25s ease; }

/* Modal selecție rapoarte Z din perioadă */
.retz-tools { display:flex; gap:8px; justify-content:center; margin-bottom:8px; }
.retz-list  { display:flex; flex-wrap:wrap; gap:8px; justify-content:center;
              max-height:46vh; overflow-y:auto; padding:4px; margin-bottom:8px; }
.retz-chip  { padding:10px 14px; border:2px solid var(--blue); border-radius:var(--rad-sm);
              background:var(--white); color:var(--navy); font-weight:700; font-size:var(--fs-sm);
              cursor:pointer; min-width:64px; transition:background .12s; }
.retz-chip:hover:not(:disabled) { background:var(--blue-lt); }
.retz-chip.sel { background:#2e7d32; border-color:#1b5e20; color:var(--white); }
.retz-chip:disabled { opacity:.5; cursor:not-allowed; }
/* Buton segmentat selectat (ex. Simplificat/Detaliat la raport periodic) */
.cfg-amef-btn-sm.sel { background:#2e7d32; border-color:#1b5e20; color:var(--white); font-weight:700; }
/* Parametri AMEF panel */
.cfg-amef-loading { text-align:center; padding:24px; color:var(--muted); font-size:var(--fs-sm); }
.cfg-amef-params  { display:flex; flex-direction:column; gap:0; margin-bottom:12px; border:1px solid var(--border); border-radius:var(--rad-sm); }
.cfg-amef-grup-titlu { background:var(--navy); color:var(--white); font-size:var(--fs-xs); font-weight:700; padding:5px 10px; text-transform:uppercase; letter-spacing:.05em; position:sticky; top:0; z-index:1; }
.cfg-amef-param-row   { display:flex; justify-content:space-between; align-items:center; padding:5px 10px; border-bottom:1px solid var(--border); font-size:var(--fs-sm); }
.cfg-amef-param-label { color:var(--muted); }
.cfg-amef-param-val   { font-weight:600; color:var(--navy); text-align:right; }
/* Form rows in amef-cfg */
.cfg-amef-form-row  { display:flex; justify-content:space-between; align-items:center; padding:5px 10px; border-bottom:1px solid var(--border); font-size:var(--fs-sm); gap:8px; }
.cfg-amef-form-row label { color:var(--muted); flex:1; }
.cfg-amef-form-row input[type=checkbox] { width:18px; height:18px; cursor:pointer; flex-shrink:0; }
.cfg-amef-form-btns { justify-content:flex-end; padding:6px 10px; background:var(--bg); }
.cfg-amef-input    { border:1px solid var(--border); border-radius:var(--rad-sm); padding:3px 6px; font-size:var(--fs-sm); background:var(--white); flex-shrink:0; width:160px; }
.cfg-amef-input-sm { width:70px; }
.cfg-map-lbl { font-size:var(--fs-xs); color:var(--muted); margin:0 4px 0 8px; flex-shrink:0; }
.cfg-amef-select   { border:1px solid var(--border); border-radius:var(--rad-sm); padding:3px 6px; font-size:var(--fs-sm); background:var(--white); flex-shrink:0; }
.cfg-amef-btn-sm   { padding:4px 10px; border-radius:var(--rad-sm); border:1px solid var(--border); background:var(--bg); font-size:var(--fs-xs); cursor:pointer; }
.cfg-amef-btn-sm:hover:not(:disabled) { background:var(--border); }
.cfg-amef-btn-sm:disabled { opacity:.4; cursor:not-allowed; }
/* Convenție UI: SALVEAZĂ / CONFIRMĂ = verde. */
.cfg-amef-btn-save { background:#2e7d32; border-color:#1b5e20; color:var(--white); font-weight:700; }
.cfg-amef-btn-save:hover:not(:disabled) { background:#1b5e20; }
/* Convenție UI: butoanele de ștergere (✕) — variantă mică roșie pentru tabele/liste. */
.cfg-util-btn-del { background:#d32f2f !important; border-color:#b71c1c !important; color:var(--white) !important; font-weight:700; }
.cfg-util-btn-del:hover:not(:disabled) { background:#b71c1c !important; }
/* TVA table */
.cfg-amef-tva-header { display:grid; grid-template-columns:60px 1fr 90px; gap:6px; padding:4px 10px; background:var(--bg); font-size:var(--fs-xs); font-weight:700; color:var(--muted); border-bottom:1px solid var(--border); }
.cfg-amef-tva-row    { display:grid; grid-template-columns:60px 1fr 90px; gap:6px; padding:4px 10px; border-bottom:1px solid var(--border); align-items:center; font-size:var(--fs-sm); }
.cfg-amef-tva-litera { font-weight:700; color:var(--navy); }
/* Modal rapoarte fiscale din POS */
.pos-overlay { position:fixed; inset:0; z-index:1100; background:rgba(0,0,0,0.65); display:flex; align-items:center; justify-content:center; }
.pos-modal-small { background:var(--white); border-radius:var(--rad); padding:24px; min-width:320px; max-width:420px; width:90%; max-height:96dvh; overflow-y:auto; box-shadow:0 8px 32px rgba(0,0,0,0.35); }

/* Ecran mic/scund: modalul numpad (ex. Discount, cu toggle + preview) era prea inalt -> antetul si
   butoanele Renunta/Confirma ieseau din ecran. Compactam numpad-ul + scroll garantat. */
/* O SINGURĂ limită: layout-ul mobil (elastic, umple înălțimea) DOAR pe telefon (lățime mică).
   Restul (desktop / POS, inclusiv 1366×768) folosește interfața normală, compactă și centrată. */
@media (max-width: 700px) {
    /* modalele POS respecta status bar (SUS) + bara de navigatie (JOS). NOTA: env(safe-area-inset-top) e 0
       pe Android la status bar-ul normal (nu notch) -> folosim max(30px,...) ca sa clarezem mereu status bar-ul,
       altfel titlul modalului (ex. „% Discount") era taiat sus. */
    .pos-overlay     { padding-top: max(8px, var(--safe-top, env(safe-area-inset-top, 30px))); padding-bottom: max(8px, var(--safe-bottom, env(safe-area-inset-bottom, 8px))); }
    /* modal generic (ex. CIF) — limitat la zona sigura, scroll doar daca e nevoie */
    .pos-modal-small { padding:12px !important; max-height:100%; min-width:0; width:94%; gap:8px; }
    /* NUMPAD: umple inaltimea sigura; TASTELE SE REDIMENSIONEAZA sa incapa (FARA scroll), chiar si cu
       sectiunea extra de la „Produs selectat". Grila ia tot spatiul ramas; randurile se impart egal. */
    .npad-modal.pos-modal-small { height:100%; overflow:hidden; padding:8px 10px !important; gap:5px !important; }
    /* Toate sectiunile (titlu, toggle-uri, nume produs, display, preview, butoane) = inaltime fixa minima;
       DOAR grila numpad creste (flex:1) si umple tot restul -> tastele raman mari/proportionate pe ORICE
       rezolutie (pe ecran scund/ingust se compacteaza chrome-ul, nu tastele -> nu se mai inghesuie). */
    .npad-modal > *             { flex:0 0 auto; }
    .npad-modal .npad-grid      { flex:1 1 auto; min-height:0; grid-auto-rows:minmax(0,1fr); gap:7px !important; }
    /* tasta umple celula; fontul scaleaza cu inaltimea disponibila (vh) -> nu mai e text mic pe buton mare */
    .npad-modal .npad-btn       { padding:0 !important; min-height:0; font-size:clamp(1.1rem, 5vh, 1.8rem) !important;
                                  display:flex; align-items:center; justify-content:center; }
    .npad-modal .npad-btn-ro    { font-size:clamp(0.8rem, 2.6vh, 1rem) !important; }
    .npad-modal .npad-display   { padding:4px 14px !important; }
    .npad-modal .npad-val       { font-size:clamp(1.3rem, 4.6vh, 2.1rem); }
    .npad-modal .npad-unit      { font-size:clamp(0.8rem, 2.2vh, 1rem); }
    .npad-modal .pos-modal-title{ margin-bottom:1px !important; font-size:clamp(0.9rem, 2.4vh, 1.12rem); }
    /* chrome discount (toggle-uri / nume produs / preview / actiuni) compact pe ecran scund/ingust */
    .npad-modal .disc-toggle    { gap:6px !important; }
    .npad-modal .disc-tog       { padding:clamp(5px, 1.1vh, 10px) !important; font-size:clamp(0.8rem, 2.2vh, 0.98rem); line-height:1.15; }
    .npad-modal .npad-produs-name { font-size:clamp(0.9rem, 2.5vh, 1.15rem); padding:clamp(4px,1vh,9px) 12px; }
    .npad-modal .disc-preview   { padding:4px 12px !important; gap:1px !important; }
    .npad-modal .disc-prev-row  { font-size:clamp(0.72rem, 2vh, 0.88rem); }
    .npad-modal .disc-prev-final{ font-size:clamp(0.82rem, 2.3vh, 0.98rem); }
    .npad-modal .npad-actions .btn-act { padding:clamp(8px,1.6vh,13px) 18px !important; font-size:clamp(0.84rem,2.2vh,0.96rem) !important; }
}
.pos-modal-title { font-size:var(--fs-lg); font-weight:700; color:var(--navy); margin-bottom:16px; text-align:center; }
.cif-modal      { display:flex; flex-direction:column; gap:12px; }
.cif-input-row  { display:flex; gap:8px; }
.cif-input      { flex:1; background:#f4f6fb; border:1px solid #ccd3e0; border-radius:6px; padding:10px 12px; font-size:1rem; color:#1a2744; outline:none; }
.cif-input:focus { border-color:#2a7fd4; }
.cif-search-btn { padding:8px 14px; font-size:0.8rem; white-space:nowrap; }
.cif-denumire   { color:#1a7a3a; font-size:0.85rem; font-weight:600; padding:6px 10px; background:#e8f5e9; border-radius:6px; }
.cif-eroare     { color:#c0392b; font-size:0.82rem; padding:6px 10px; background:#fdecea; border-radius:6px; }
.cif-actions    { display:flex; gap:10px; justify-content:flex-end; margin-top:4px; }
.cif-actions .btn-act { padding:14px 22px; font-size:0.95rem; }
/* Toggle „Emite factură fiscală" — buton lung care simulează apăsarea (raised → pressed/albastru când e activ) */
.cif-factura-toggle {
    width:100%; display:flex; align-items:center; justify-content:center; gap:10px;
    padding:16px; font-size:1.1rem; font-weight:700;
    border:2px solid #ccd3e0; border-radius:12px;
    background:#eef1f7; color:#5a6580;
    box-shadow:0 3px 0 #ccd3e0; cursor:pointer; user-select:none;
    transition:transform .07s ease, box-shadow .07s ease, background .1s ease, color .1s ease;
}
.cif-factura-toggle:active { transform:translateY(2px); box-shadow:0 1px 0 #ccd3e0; }
.cif-factura-toggle.on {
    background:#1e88e5; color:#fff; border-color:#1565c0;
    box-shadow:inset 0 3px 7px rgba(0,0,0,.30); transform:translateY(1px);
}
.cif-factura-toggle .cf-check { font-size:1.25rem; line-height:1; }
/* Selecție cantitate în modalul de retur */
.retur-qty         { display:flex; align-items:center; gap:4px; flex-wrap:wrap; margin:12px 2px; }
.retur-qty-lbl     { color:#5a6580; font-weight:600; }
.retur-qty-step    { width:46px; height:46px; border:1px solid #ccd3e0; border-radius:8px; background:#eef1f7; color:#1a2744; font-size:1.5rem; font-weight:700; cursor:pointer; }
.retur-qty-step:active { background:#dde3ee; }
.retur-qty-val     { min-width:44px; text-align:center; font-size:1.35rem; font-weight:800; color:#1a2744; }
.retur-qty-presets { display:flex; gap:6px; margin-left:auto; }
.retur-qty-preset  { min-width:40px; height:40px; border:1px solid #ccd3e0; border-radius:8px; background:#fff; color:#1a2744; font-weight:700; cursor:pointer; }
.retur-qty-preset.on { background:#1e88e5; color:#fff; border-color:#1565c0; }
/* Produs negăsit — mesaj blocant mare */
.negasit-box   { background:#fff; border-radius:16px; padding:34px 40px; text-align:center; max-width:560px;
                 box-shadow:0 14px 44px rgba(0,0,0,.45); border-top:10px solid #c62828;
                 display:flex; flex-direction:column; align-items:center; gap:14px; animation:negasitPulse .3s ease; }
.negasit-icon  { font-size:4.5rem; line-height:1; }
.negasit-title { font-size:2.1rem; font-weight:800; color:#c62828; letter-spacing:.5px; }
.negasit-cod   { font-size:1.2rem; color:#1a2744; }
.negasit-btn   { margin-top:8px; padding:14px 44px; font-size:1.2rem; }
@keyframes negasitPulse { from { transform:scale(.85); opacity:.4; } to { transform:scale(1); opacity:1; } }

/* ── Confirmare centrată „adăugat în bon" (selecție din căutare/grupă; fereastra rămâne deschisă) ── */
.add-notif-wrap { position:fixed; inset:0; z-index:9998; display:flex; align-items:center; justify-content:center;
                  pointer-events:none; }  /* nu blochează fereastra de căutare de dedesubt */
.add-notif      { display:flex; align-items:center; gap:16px; background:#2e7d32; color:#fff;
                  padding:22px 36px; border-radius:16px; box-shadow:0 16px 50px rgba(0,0,0,.5);
                  max-width:80vw; animation:addNotifPop .18s ease; }
.add-notif-check { font-size:2.6rem; font-weight:900; line-height:1; flex-shrink:0; }
.add-notif-txt   { font-size:1.5rem; font-weight:700; line-height:1.3; }
@keyframes addNotifPop { from { transform:scale(.8); opacity:0; } to { transform:scale(1); opacity:1; } }

/* ── Discount modal ── */
.npad-modal         { display:flex; flex-direction:column; gap:12px; }
/* Denumirea produsului în modal-uri = vedeta (vizibilă, mare, contrastantă) */
.npad-produs-name   { font-size:1.15rem; font-weight:700; color:#fff;
                      text-align:center; padding:10px 12px;
                      background:#0d1a2a; border:1px solid #2a3a4a; border-radius:8px;
                      margin:6px 0; line-height:1.25;
                      word-break:break-word; }
.disc-toggle        { display:flex; gap:8px; }
.disc-toggle-sm .disc-tog { padding:7px; font-size:0.9rem; }
.disc-tog           { flex:1; padding:10px; font-size:1rem; font-weight:700; background:#1e2d3d; color:#e0eaf8; border:1px solid #2a3a4a; border-radius:7px; cursor:pointer; transition:background .13s; }
.disc-tog.active    { background:#2a7fd4; border-color:#2a7fd4; color:#fff; }
.npad-display       { background:#0d1a2a; border:1px solid #2a3a4a; border-radius:8px; padding:14px 18px; display:flex; align-items:baseline; justify-content:flex-end; gap:8px; transition:border-color .15s, background .15s; }
.npad-display-over  { border-color:#e74c3c !important; background:#5a0f0f !important; }
.npad-display-over .npad-val { color:#ff9090 !important; }
.npad-val           { font-size:2rem; font-weight:700; color:#fff; }
.npad-unit          { font-size:1rem; color:#6a8aa8; }
.npad-grid          { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; }
.npad-btn           { padding:18px 0; font-size:1.25rem; font-weight:700; background:#1e2d3d; color:#e0eaf8; border:1px solid #2a3a4a; border-radius:7px; cursor:pointer; transition:background .13s; }
.npad-btn:hover     { background:#2a7fd4; border-color:#2a7fd4; color:#fff; }
.npad-btn-bs        { background:#3a1a1a; border-color:#6a2a2a; color:#ff9999; }
.npad-btn-bs:hover  { background:#7a2a2a; border-color:#7a2a2a; color:#fff; }
.npad-btn-ro        { background:#1a3a1a; border-color:#2a6a2a; color:#7fff7f; font-size:0.95rem; }
.npad-btn-ro:hover  { background:#2a7a2a; border-color:#2a7a2a; color:#fff; }
.disc-preview       { background:#0a1520; border:1px solid #2a3a4a; border-radius:8px; padding:10px 14px; display:flex; flex-direction:column; gap:4px; }
.disc-prev-row      { display:flex; justify-content:space-between; font-size:0.88rem; color:#8aaccc; }
.disc-prev-red span:last-child { color:#ff7070; font-weight:600; }
.disc-prev-sep      { border-top:1px solid #2a3a4a; margin:4px 0; }
.disc-prev-final    { font-size:1rem; font-weight:700; }
.disc-prev-final span:first-child { color:#e0eaf8; }
.disc-prev-final span:last-child  { color:#7fff7f; }
.npad-actions       { display:flex; gap:10px; justify-content:flex-end; }
.npad-actions .btn-act { padding:14px 22px; font-size:0.95rem; }

/* Modal fallback cântar */
.cantar-fb-eroare   { background:#3a1a1a; border:1px solid #6a2a2a; color:#ffb0b0; font-size:0.85rem; padding:8px 12px; border-radius:7px; }
.cantar-fb-hint     { font-size:0.85rem; color:#8aaccc; }

/* Cod produs sub denumire (vizibil doar pe ecrane mari prin .bc-extra) */
.bon-row-cod { font-size:0.72rem; font-weight:500; color:#7a8aa0; font-family:'Consolas', 'Monaco', monospace; letter-spacing:0.3px; margin-top:1px; }
.bon-row-cod-lbl { color:#9aaac0; font-weight:400; margin-right:4px; font-family:inherit; letter-spacing:normal; font-style:italic; }
.bon-row.selected .bon-row-cod { color:#c9d6e9; }
.bon-row.anulat  .bon-row-cod { text-decoration:line-through; color:#c47878; }
/* Linia Cod/Stoc = flex: textul la stânga, pill-ul promoție/discount împins la DREAPTA (sub Valoare) */
.bon-row-cod       { display:flex; align-items:center; gap:8px; }
.bon-row-cod-txt   { flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bon-row-cod-promo { flex:0 0 auto; margin-left:auto; }
/* Promoție / discount — pill cu contur, inline pe rândul cu Stoc/Cod, compact (nu mărește înălțimea rândului) */
.bon-row-promo {
    display:inline-block; font-weight:700; color:#39d98a; font-style:normal; letter-spacing:normal;
    white-space:nowrap; line-height:1.35; padding:0 6px; border:1px solid #39d98a; border-radius:6px;
    background:rgba(57,217,138,0.14);
}
.bon-row-promo.is-manual { color:#f0b23e; border-color:#f0b23e; background:rgba(240,178,62,0.14); }
.bon-row.anulat .bon-row-promo { text-decoration:line-through; }
/* Telefon (<700px): promoția/discount pe rând DEDICAT (pe desktop e inline în linia Cod/Stoc, ascunsă aici) */
.bon-promo-mobile { display:flex; align-items:center; padding-top:3px; }
@media (min-width: 700px) { .bon-promo-mobile { display:none; } }
/* „Ultimul produs scanat": nume la stânga + hint promoție la dreapta, pe același rând (nu crește înălțimea) */
.bon-hdr-qty-row { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.bon-hdr-qty-row > .bon-hdr-qty { flex:1 1 auto; min-width:0; }
/* Hint „adaugă încă X pentru Y%" — pill verde vizibil (împinge vânzarea). Padding vertical 0 → nu mărește rândul. */
.bon-hdr-promo-hint { flex:0 1 auto; display:inline-block; font-size:var(--fs-xs); font-weight:800; line-height:1.35;
    color:#0b1a12; background:#39d98a; border-radius:6px; padding:2px 9px; margin-right:12px; letter-spacing:0.2px;
    white-space:normal; max-width:100%; }
/* Hint promoție pe praguri multiple → blocuri colorate distinct. */
.bon-hdr-promo-wrap { flex:0 1 auto; display:inline-flex; flex-wrap:wrap; align-items:center; gap:5px; max-width:100%; margin-right:12px; }
.bon-hdr-promo-lbl  { font-size:var(--fs-xs); font-weight:800; color:#39d98a; white-space:nowrap; }
.bon-hdr-promo-chip { font-size:var(--fs-xs); font-weight:800; line-height:1.3; border-radius:6px; padding:2px 8px;
    letter-spacing:0.2px; white-space:nowrap; color:#0b1a12; }
.promo-c0 { background:#39d98a; }   /* verde  */
.promo-c1 { background:#ffcf5c; }   /* auriu  */
.promo-c2 { background:#5cd0ff; }   /* cyan   */

/* Preluare documente terminal mobil (BPO/CMC) — listă selectabilă în modal */
.preluare-info { padding:24px 8px; text-align:center; color:#8aaccc; font-size:0.95rem; }
.preluare-cauta-row { display:flex; align-items:stretch; gap:6px; margin:12px 0 6px; }
.preluare-cauta {
    flex:1 1 auto; box-sizing:border-box; height:50px; padding:0 14px;
    background:#14284a; border:1px solid #33507e; border-radius:8px;
    color:#eaf2ff; font-size:1.05rem;
}
.preluare-cauta::placeholder { color:#7d97bb; }
.preluare-cauta:focus { outline:none; border-color:#5b86c8; box-shadow:0 0 0 2px rgba(91,134,200,0.35); }
.preluare-cauta-btn {
    flex:0 0 auto; width:50px; height:50px; display:flex; align-items:center; justify-content:center;
    background:#1d3358; border:1px solid #33507e; border-radius:8px; color:#cfe0f5;
    font-size:1.25rem; cursor:pointer; transition:background .12s, border-color .12s;
}
.preluare-cauta-btn:hover { background:#274372; }
.preluare-cauta-kb { font-size:1.5rem; line-height:1; }   /* emoji ⌨️ ca butonul de căutare din POS (rp-barcode-btn) */
.preluare-cauta-kb.activ { background:#2e6df0; border-color:#2e6df0; color:#fff; }
/* Pe telefon (ecran mic, web mobil sau Android) se folosește tastatura NATIVĂ (tap pe câmp) → ascundem butonul ⌨
   (tastatura noastră pe ecran = doar pe desktop/casă unde nativa touch nu e sigură). */
@media (max-width:700px) { .preluare-cauta-kb { display:none; } }
/* Verificator de preturi pe telefon: tastatura nativa acopera partea de jos -> ancoram modalul SUS (deasupra
   tastaturii) + inaltime limitata la zona vizibila (--vvh) cu scroll intern -> butonul Inchide mereu accesibil. */
@media (max-width:699px) {
    .verif-overlay { align-items:flex-start; }
    .verif-overlay .pos-modal-small { margin-top:15dvh; max-height:calc(var(--vvh, 100dvh) - 15dvh - 12px); }
}
/* Container pt. tastatura pe ecran (TastaturaEcran): vizibilă DOAR pe desktop/casă; pe telefon (<700px)
   se folosește tastatura NATIVĂ (tap pe câmp) → o ascundem. */
.kb-desktop-only { display:block; }
@media (max-width:700px) { .kb-desktop-only { display:none !important; } }

/* ── Tastatură pe ecran stil iPhone/Android (componenta TastaturaEcran / .ios-kb) ── */
.ios-kb {
    background:#d1d5db;                 /* tava gri deschis, ca pe iOS light */
    padding:8px 4px 10px; margin-top:8px;
    display:flex; flex-direction:column; gap:8px;
    user-select:none; -webkit-user-select:none;
    border-radius:8px;
}
.ios-kb-row  { display:flex; gap:6px; justify-content:center; }
.ios-kb-inset { padding:0 18px; }       /* rândul home (a-s-d-f, 9 taste) e insetat, ca pe telefon */
.ios-key {
    flex:1 1 0; min-width:0; height:44px; padding:0;
    background:#fff; color:#111; border:none; border-radius:6px;
    box-shadow:0 1px 0 rgba(0,0,0,0.30);
    font-size:1.25rem; font-weight:400; line-height:1;
    display:flex; align-items:center; justify-content:center; cursor:pointer;
    transition:background .05s;
}
.ios-key:active        { background:#c2c8d1; }
.ios-key-fn            { background:#a9b0bb; color:#111; font-size:0.98rem; }
.ios-key-fn:active     { background:#fff; }
.ios-key-shift, .ios-key-bs { flex:1.5 1 0; font-size:1.15rem; }
.ios-key-shift.on      { background:#fff; }
.ios-key-shift.lock    { background:#fff; color:#0a84ff; }
.ios-key-mod           { flex:1.6 1 0; }
.ios-key-space         { flex:5 1 0; color:#333; font-size:0.95rem; }
.ios-key-return        { flex:2 1 0; }
@media (max-width:700px) { .ios-key { height:40px; font-size:1.15rem; } .ios-kb-inset { padding:0 12px; } }

/* Variantă DARK (parametru Dark=true) pt. ecranele navy: login, căutare produs, supervizor. Tavă transparentă
   (se integrează în fundalul navy) + taste translucid-albe. Modalele albe (preluare/email) rămân LIGHT (.ios-kb). */
.ios-kb-dark { background:transparent; }
.ios-kb-dark .ios-key { background:rgba(255,255,255,0.14); color:#fff; border:1px solid rgba(255,255,255,0.16); box-shadow:none; }
.ios-kb-dark .ios-key:active { background:rgba(255,255,255,0.30); }
.ios-kb-dark .ios-key-fn { background:rgba(255,255,255,0.08); color:#e8eefb; }
.ios-kb-dark .ios-key-fn:active { background:rgba(255,255,255,0.22); }
.ios-kb-dark .ios-key-shift.on { background:rgba(255,255,255,0.40); }
.ios-kb-dark .ios-key-shift.lock { background:#fff; color:#0a84ff; }
.ios-kb-dark .ios-key-space { color:#e8eefb; }

/* Tastatura din LOGIN — taste ~15% mai mari + proporționate lățime/înălțime (scoped la .login-kb). */
.login-kb .ios-key            { height:51px; font-size:1.44rem; }
.login-kb .ios-key-fn         { font-size:1.13rem; }
.login-kb .ios-key-shift,
.login-kb .ios-key-bs         { font-size:1.32rem; }
.login-kb .ios-key-space      { font-size:1.09rem; }

.preluare-list { display:flex; flex-direction:column; gap:6px; max-height:52vh; overflow-y:auto; margin:12px 0; }
/* Când tastatura pe ecran e deschisă → modal ÎNALT & flex-column: lista flexează (scroll intern), iar
   tastatura + butonul Închide rămân ANCORATE jos (nu se mai mută în sus când sunt puține rezultate). */
/* Modal preluare ~30% mai lat (desktop) → încap Partener + Client + tastatura mai mare (umple lățimea). */
.preluare-modal { min-width:540px; max-width:730px; }
@media (max-width:700px) { .preluare-modal { min-width:0; max-width:none; width:96%; } }
.preluare-modal.preluare-kb-open { display:flex; flex-direction:column; height:min(92dvh, 820px); overflow:hidden; }
.preluare-modal.preluare-kb-open .preluare-list { flex:1 1 auto; min-height:0; max-height:none; }
.preluare-modal.preluare-kb-open .preluare-info { flex:1 1 auto; display:flex; align-items:center; justify-content:center; }
.preluare-modal.preluare-kb-open .tastatura-ecran { flex:0 0 auto; }
.preluare-modal.preluare-kb-open .cif-actions { flex:0 0 auto; margin-top:8px; }
.preluare-item { display:grid; grid-template-columns:auto auto auto 1fr 1fr auto; gap:10px; align-items:center;
    padding:12px 14px; background:#1b2a44; border:1px solid #2c3e5e; border-radius:8px; color:#e6edf7;
    cursor:pointer; text-align:left; font-size:0.95rem; }
.preluare-item:hover { background:#24375a; border-color:#3a5488; }
.preluare-item.pi-active { background:#27466f; border-color:#5b9bff; box-shadow:inset 3px 0 0 #5b9bff; }
.preluare-item.pi-active .pi-data,
.preluare-item.pi-active .pi-part,
.preluare-item.pi-active .pi-client { color:#e4eeff; }   /* pe highlight, câmpurile gri devin luminoase (Nr/dată/partener/client lizibile) */
.preluare-item .pi-tip  { font-weight:800; color:#39d98a; }
.preluare-item .pi-nr   { font-weight:700; }
.preluare-item .pi-data { color:#9fb2ce; }
.preluare-item .pi-part { color:#9fb2ce; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.preluare-item .pi-client { color:#c9d6ea; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.preluare-item .pi-suma { font-weight:800; color:#ffd479; text-align:right; }

/* Preț pe linie — centrat ca să se alinieze cu header-ul PRET/BUC */
/* Prețul aliniat pe ACEEAȘI linie de bază cu VALOAREA (valoarea are font mai mare + padding-top) → același nivel. */
.bc-pret-cell { font-size:var(--fs-sm); font-weight:600; text-align:center; color:var(--text); align-self:baseline; padding-top:2px; }
.bon-row.selected .bc-pret-cell { color:var(--white); }
.bon-row.anulat  .bc-pret-cell { text-decoration:line-through; color:#e57373; }

/* Controale cantitate pe linie — afișate doar pe ecrane >=700px (modul compact mobile le ascunde prin .bc-extra) */
@media (min-width: 700px) {
    .bc-qty-cell    { display:flex; align-items:center; gap:2px; justify-content:center; min-width:0; }
    .bc-qty-btn     { width:26px; height:30px; padding:0; font-size:1.1rem; font-weight:700; line-height:1; background:#1e2d3d; color:#e0eaf8; border:1px solid #2a3a4a; border-radius:5px; cursor:pointer; transition:background .12s; flex-shrink:0; }
    .bc-qty-btn:hover:not(:disabled) { background:#2a7fd4; border-color:#2a7fd4; }
    .bc-qty-btn:disabled { opacity:.35; cursor:not-allowed; }
    .bc-qty-frame   { display:flex; flex-direction:column; align-items:center; justify-content:center; padding:3px 6px; min-width:58px; height:30px; background:#fff; color:#1a2744; border:1.5px solid #2a7fd4; border-radius:5px; cursor:pointer; transition:background .12s, border-color .12s; flex:0 0 auto; overflow:hidden; }
    .bc-qty-frame:hover:not(:disabled) { background:#dbe9fa; }
    .bc-qty-frame:disabled { opacity:.4; cursor:not-allowed; }
    .bc-qty-val     { font-size:0.95rem; font-weight:700; line-height:1; }
    .bc-qty-um      { font-size:0.65rem; font-weight:500; opacity:.7; line-height:1; margin-top:1px; }
    .bon-row.selected .bc-qty-frame { background:#dbe9fa; }
    .bon-row.anulat .bc-qty-frame   { text-decoration:line-through; color:#e57373; border-color:#e57373; }
}

/* Lățime îngustă (<1366px): butoanele +/− stivuite VERTICAL la dreapta valorii → coloana cantitate mai îngustă.
   Celula acoperă rândul principal + linia „Cod" (grid-row span 2) și se ÎNTINDE pe toată înălțimea (align-self:stretch)
   → butoanele (rânduri 1fr) umplu înălțimea întregului rând-produs. `.bon-row` are align-items:start, de-aceea
   fără span celula rămânea doar la înălțimea rândului principal. Liniile fullspan rămân în coloana produs (2/3)
   ca să NU se suprapună cu celula de cantitate întinsă pe verticală. */
@media (min-width:700px) and (max-width:1365px) {
    .bc-qty-cell {
        display:grid; gap:2px; align-self:stretch; position:relative; z-index:1;
        grid-column: 3; grid-row: 1 / span 2;
        grid-template-columns: minmax(0,1fr) 22px;
        grid-template-rows: 1fr 1fr;
    }
    .bc-qty-frame { grid-column:1; grid-row:1 / 3; height:auto; min-width:0; padding:2px 4px; }
    .bc-qty-cell .bc-qty-btn { width:22px; height:auto; min-height:0; font-size:0.95rem; }
    .bc-qty-cell .bc-qty-btn:first-child { grid-column:2; grid-row:2; }   /* − jos-dreapta */
    .bc-qty-cell .bc-qty-btn:last-child  { grid-column:2; grid-row:1; }   /* + sus-dreapta */
}

/* ── Modal Grupe — tonul navy din search panel ── */
.pos-modal-large   { background:var(--navy); border-radius:16px; padding:18px; width:min(720px, 92vw); max-height:85vh; display:flex; flex-direction:column; gap:14px; box-shadow:0 8px 32px rgba(0,0,0,0.45); }
.grupe-modal       { color:var(--white); }
.grupe-modal .pos-modal-title { color:var(--white); margin:0; }
.grupe-header      { display:flex; align-items:center; gap:10px; padding-bottom:10px; border-bottom:1px solid rgba(255,255,255,0.1); }
.grupe-header .pos-modal-title { flex:1; text-align:left; font-size:var(--fs-md); }
.grupe-back-btn    { background:rgba(255,255,255,0.1); border:1px solid rgba(255,255,255,0.2); color:var(--white); border-radius:6px; padding:6px 12px; font-size:0.9rem; font-weight:600; cursor:pointer; }
.grupe-back-btn:hover { background:rgba(255,255,255,0.2); }
.grupe-search-btn  { background:rgba(255,255,255,0.1); border:1px solid rgba(255,255,255,0.2); color:var(--white); border-radius:6px; padding:6px 12px; font-size:1.05rem; cursor:pointer; }
.grupe-search-btn:hover { background:rgba(255,255,255,0.22); }
.grupe-close-btn   { width:32px; height:32px; padding:0; background:rgba(255,255,255,0.1); border:1px solid rgba(255,255,255,0.2); color:var(--white); border-radius:50%; font-size:1rem; font-weight:700; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.grupe-close-btn:hover { background:rgba(255,255,255,0.22); }
.grupe-info        { padding:24px; text-align:center; color:rgba(255,255,255,0.6); font-size:0.95rem; }
.grupe-info code   { background:rgba(255,255,255,0.1); padding:2px 6px; border-radius:4px; color:#7ab4ff; }
.grupe-grid        { display:grid; grid-template-columns:repeat(auto-fill, minmax(140px, 1fr)); gap:10px; overflow-y:auto; padding:4px; }
.grupe-grid::-webkit-scrollbar { width:8px; }
.grupe-grid::-webkit-scrollbar-thumb { background:rgba(255,255,255,0.35); border-radius:4px; }
.grupe-card        { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; padding:22px 12px 14px; background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.15); border-radius:10px; cursor:pointer; transition:background .12s, border-color .12s; min-height:80px; color:var(--white); }
.grupe-card:hover  { background:rgba(255,255,255,0.14); border-color:rgba(255,255,255,0.35); }
.grupe-card-badge  { position:absolute; top:6px; left:8px; font-size:0.72rem; font-weight:800; color:#1a2744; background:#7ab4ff; border-radius:4px; padding:2px 6px; letter-spacing:0.5px; }
.grupe-card-den    { font-size:1rem; font-weight:700; color:var(--white); text-align:center; line-height:1.2; }

/* Produse FAVORITE — pătrate mici (nume + preț sub nume) pe 2 RÂNDURI, scroll orizontal, fundal navy, deasupra footer-ului. */
/* Wrap = navy + butoane navigare ‹ › la capete; bara din mijloc NU se derulează manual (doar din butoane). */
.favorite-wrap { display:flex; align-items:stretch; background:var(--navy); border-top:1px solid rgba(255,255,255,0.12); flex-shrink:0; overflow:hidden; }
/* min-width:0 = bara se micșorează ÎNTRE butoane și își clipează conținutul (fără min-width:0 flexbox n-o lasă sub
   lățimea cardurilor → depășea wrap-ul „în spatele" butoanelor + apărea un mic scroll). */
.favorite-bar { flex:1 1 auto; min-width:0; display:grid; grid-template-rows:1fr 1fr; grid-auto-flow:column; grid-auto-columns:70px;
    gap:5px; overflow:hidden; padding:6px 4px; height:104px; scroll-behavior:smooth; }
.fav-nav { flex:0 0 auto; width:34px; border:none; background:rgba(255,255,255,0.10); color:var(--white);
    font-size:1.7rem; font-weight:700; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.fav-nav:hover:not(:disabled) { background:rgba(255,255,255,0.20); }
.fav-nav:disabled { opacity:0.22; cursor:default; }
.favorite-card { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px;
    width:100%; min-width:0; padding:2px 3px; background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.15);
    border-radius:7px; cursor:pointer; transition:background .12s, border-color .12s; color:var(--white); overflow:hidden; }
.favorite-card:hover { background:rgba(255,255,255,0.14); border-color:rgba(255,255,255,0.35); }
/* Numele: font FIX, max 2 rânduri; ce depășește se trunchiază cu „…" (line-clamp:2). */
.favorite-card .fav-den  { font-size:0.65rem; font-weight:700; color:var(--white); text-align:center; line-height:1.1;
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; width:100%; }
.favorite-card .fav-pret { font-size:0.66rem; font-weight:600; color:#9fd0ff; white-space:nowrap; max-width:100%; overflow:hidden; text-overflow:ellipsis; }
.favorite-card .fav-pret small { font-size:0.55rem; opacity:0.8; }
.favorite-card .fav-pret-liber { color:#ffb060; font-style:italic; }
.favorite-empty { color:rgba(255,255,255,0.7); font-size:0.9rem; padding:14px 8px; align-self:center; grid-row:1 / 3; }
/* Buton toggle Favorite (doar steluța) — în footer la DREAPTA, înaintea butonului ▼. Aceeași formă/înălțime ca ▼. */
.bon-panel-footer .ft-right { display:flex; align-items:center; gap:8px; }
.btn-favorite-toggle { width:var(--act-h); height:var(--act-h); flex:0 0 auto; padding:0;
    background:var(--blue-lt); border:1px solid var(--border); border-radius:var(--rad-sm); color:var(--navy);
    font-weight:700; font-size:1.1rem; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.btn-favorite-toggle:hover { background:var(--blue-lth); }
.btn-favorite-toggle.activ { background:#ffe9a8; border-color:#f5b400; }
.grupe-produse-list { display:flex; flex-direction:column; gap:4px; overflow-y:auto; max-height:60vh; padding-right:4px; }
.grupe-produse-list::-webkit-scrollbar { width:8px; }
.grupe-produse-list::-webkit-scrollbar-thumb { background:rgba(255,255,255,0.35); border-radius:4px; }
.grupe-prod-row    { display:grid; grid-template-columns:1fr auto; gap:10px; align-items:center; padding:10px 14px; background:rgba(255,255,255,0.04); border:1px solid rgba(255,255,255,0.08); border-radius:7px; cursor:pointer; text-align:left; transition:background .12s, border-color .12s; }
.grupe-prod-row:hover { background:rgba(255,255,255,0.1); border-color:rgba(255,255,255,0.2); }
.grupe-prod-row.gp-active { background:rgba(80,150,255,0.30); border-color:#4d90fe; box-shadow:inset 3px 0 0 #4d90fe; }
.grupe-prod-den    { font-size:1rem; font-weight:700; color:var(--white); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.grupe-prod-pret   { font-size:1rem; font-weight:700; color:#7ab4ff; white-space:nowrap; }
.grupe-prod-pret small { font-size:0.7rem; opacity:0.7; font-weight:500; }

.cif-numpad     { display:flex; flex-direction:column; gap:6px; }
/* CIF numpad folosește acum aceleași clase .disc-* (numere/backspace) + .disc-npad-ro pentru RO */
/* Utilizatori & Grupuri */
.cfg-util-toolbar { display:flex; align-items:center; gap:10px; padding:8px 20px; border-bottom:1px solid var(--border); }
.cfg-util-form { margin:0 20px 8px; border:2px solid var(--accent); border-radius:var(--rad-sm); overflow:hidden; }
.cfg-util-form-title { background:var(--accent); color:var(--white); font-size:var(--fs-xs); font-weight:700; padding:4px 10px; }
.cfg-util-table-wrap { margin:0 20px; max-height:320px; overflow-y:auto; border:1px solid var(--border); border-radius:var(--rad-sm); }
.cfg-viz-table td { padding:5px 10px; border-bottom:1px solid var(--border); font-size:var(--fs-sm); }
.cfg-viz-table tbody tr:last-child td { border-bottom:none; }
.cfg-viz-table tbody tr:hover td { background:var(--bg); }
.cfg-util-inactiv td { opacity:.5; font-style:italic; }
.cfg-util-actions { white-space:nowrap; text-align:right; }
.cfg-util-btn-del { border-color:#e53935; color:#c62828; }
.cfg-util-btn-del:hover:not(:disabled) { background:#ffebee; }
.cfg-err-inline { color:#c62828; font-size:var(--fs-sm); }
.cfg-ok-inline  { color:#2e7d32; font-size:var(--fs-sm); }
/* ── Conectivitate ────────────────────────────────── */
.cfg-conectivitate { display:flex; flex-direction:column; gap:12px; padding:8px 0; }
.cfg-conn-status { font-size:1.1rem; font-weight:700; padding:10px 16px; border-radius:var(--rad-sm); letter-spacing:.5px; }
.cfg-conn-online  { background:#e8f5e9; color:#2e7d32; }
.cfg-conn-offline { background:#fff3e0; color:#e65100; }
.cfg-conn-info    { font-size:var(--fs-sm); color:var(--text-sm); }
.cfg-conn-btns    { display:flex; gap:8px; flex-wrap:wrap; }
.cfg-conn-warning { background:#fff3e0; color:#e65100; border:1px solid #ffcc80; border-radius:var(--rad-sm); padding:8px 12px; font-size:var(--fs-sm); }
.cfg-conn-errors   { background:#fff8f8; border:1px solid #ffcdd2; border-radius:var(--rad-sm); padding:8px 12px; }
.cfg-conn-error-row { font-size:var(--fs-sm); color:#c62828; font-family:'Consolas',monospace; padding:2px 0; }
.cfg-viz-table-wrap { overflow-y:auto; max-height:340px; border:1px solid var(--border); border-radius:var(--rad-sm); }
.cfg-viz-table { width:100%; border-collapse:collapse; font-size:var(--fs-sm); }
.cfg-viz-table thead tr { background:var(--navy); color:var(--white); position:sticky; top:0; }
.cfg-viz-table th { padding:8px 12px; text-align:left; font-weight:700; font-size:var(--fs-xs); letter-spacing:.4px; }
.cfg-viz-table tbody tr { border-bottom:1px solid var(--border); }
.cfg-viz-table tbody tr:hover { background:var(--bg); }
.cfg-viz-override { background:#fff8e1 !important; }
.cfg-viz-key  { padding:7px 12px; font-weight:600; color:var(--navy); white-space:nowrap; }
.cfg-viz-srv  { padding:7px 12px; color:var(--text-sm); font-family:'Consolas',monospace; }
.cfg-viz-loc  { padding:4px 8px; }
.cfg-viz-input { width:100%; border:1px solid var(--border); border-radius:4px; padding:4px 8px; font-family:'Consolas',monospace; font-size:var(--fs-sm); background:var(--white); color:var(--navy); }
.cfg-viz-input:focus { outline:2px solid var(--blue); border-color:transparent; }
.cfg-viz-editlabel { font-size:0.65rem; font-weight:400; opacity:.7; }
.cfg-viz-info { padding:7px 12px; font-size:0.68rem; color:var(--text-sm); font-style:italic; max-width:220px; }
/* Info „ascunsă" în buton ℹ inline (deschide un rând expandabil) → listă compactă */
.cfg-viz-info-btn { display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px;
    margin-left:6px; padding:0; border:1px solid var(--border); border-radius:50%; background:var(--white);
    color:var(--blue); font-size:0.72rem; font-weight:700; line-height:1; cursor:pointer; vertical-align:middle; }
.cfg-viz-info-btn:hover { background:var(--blue); color:var(--white); border-color:var(--blue); }
.cfg-viz-info-btn.activ { background:var(--blue); color:var(--white); border-color:var(--blue); }
.cfg-viz-info-row td { padding:2px 12px 8px 30px; font-size:0.72rem; color:var(--text-sm); font-style:italic;
    background:var(--bg); white-space:pre-line; border-bottom:1px solid var(--border); }
.cfg-viz-input select, select.cfg-viz-input { width:100%; border:1px solid var(--border); border-radius:4px; padding:4px 8px; font-size:var(--fs-sm); background:var(--white); color:var(--navy); }
.cfg-viz-folder-row { display:flex; gap:4px; align-items:stretch; }
.cfg-viz-folder-row .cfg-viz-input { flex:1; }
.cfg-viz-folder-btn { padding:4px 10px; border:1px solid var(--border); border-radius:4px; background:var(--white); cursor:pointer; font-size:var(--fs-sm); }
.cfg-viz-folder-btn:hover { background:var(--bg); }

/* ── Stare AMEF afișată inline în Admin AMEF ── */
.cfg-amef-stare { background:var(--bg); border:1px solid var(--border); border-radius:6px;
                  padding:12px 14px; margin:14px 0; font-size:0.85rem; }
.cfg-amef-stare-titlu { font-weight:700; color:var(--navy); margin:8px 0 4px;
                         padding-bottom:4px; border-bottom:1px solid var(--border); }
.cfg-amef-stare-titlu:first-child { margin-top:0; }
.cfg-amef-stare-row   { display:flex; justify-content:space-between; align-items:baseline;
                         padding:3px 0; font-family:'Consolas',monospace; font-size:0.82rem; }
.cfg-amef-stare-row.stare-ok    strong { color:#2e7d32; }
.cfg-amef-stare-row.stare-warn  strong { color:#c0392b; }

/* ── Verificare AMEF modal ── */
.amef-issue { background:#fff3e0; border-left:4px solid var(--orange);
              padding:10px 14px; margin:8px 0; border-radius:4px; }
.amef-issue-titlu  { font-weight:600; font-size:0.95rem; color:#7c4a00; margin-bottom:4px; }
.amef-issue-detail { font-size:0.85rem; color:#5a3700; line-height:1.5; }
.amef-actions { display:flex; gap:10px; justify-content:flex-end; margin-top:14px; }

/* ════════════════════════════════════════════════════════════
   CUSTOMER DISPLAY  /display
   ════════════════════════════════════════════════════════════ */
.cd-root { width:100vw; height:100vh; background:#0d0d0d; color:#fff;
           font-family:'Segoe UI','Roboto',sans-serif; overflow:hidden; }

.cd-wrap { display:grid; height:100vh;
           grid-template-rows: 28% 1fr;
           padding-top:40px; box-sizing:border-box;  /* compensare margin -40 MAUI */ }

/* ── Rândul de jos: media + bon side by side ── */
.cd-bottom { display:grid; grid-template-columns: 40% 60%; min-height:0; }

/* ── Top: ultimul produs ── */
.cd-top { display:flex; flex-direction:column; justify-content:center; align-items:center;
          background:#111; border-bottom:2px solid #1e3a5f;
          padding:16px 32px; text-align:center; }
.cd-top-idle { background:#0d0d0d; }
.cd-prd-den   { font-size:clamp(1.6rem,4vw,3.2rem); font-weight:700;
                color:#fff; line-height:1.2; max-width:90vw; }
.cd-prd-det   { display:flex; gap:16px; align-items:baseline;
                margin-top:10px; flex-wrap:wrap; justify-content:center; }
.cd-prd-cant  { font-size:1.4rem; color:#aaa; }
.cd-prd-pret  { font-size:2rem; font-weight:600; color:#4fc3f7; }
.cd-prd-sep   { font-size:1.4rem; color:#666; }
.cd-prd-total { font-size:2.2rem; font-weight:700; color:#fff176; }
/* Ambalaj asociat (SGR) + discount ale ultimului produs scanat */
.cd-prd-extra { font-size:1.5rem; color:#9fb3c8; margin-top:6px; }
.cd-prd-disc  { color:#ff9070; }
.cd-welcome-text { font-size:clamp(2rem,5vw,4rem); font-weight:700; color:#4fc3f7; }
.cd-welcome-sub  { font-size:1.2rem; color:#666; margin-top:8px; }
.cd-casa-inchisa-modal { position:fixed; inset:0; display:flex; align-items:center;
                          justify-content:center; background:#0d0d0d; z-index:25;
                          padding-top:40px; /* compensare margin -40 MAUI */ }
.cd-casa-inchisa-img   { width:70vw; max-height:90vh; object-fit:contain; }
.cd-corner-logo  { position:fixed; top:52px; right:16px; height:7vh; width:auto;
                   z-index:30; pointer-events:none;
                   filter: drop-shadow(0 2px 8px rgba(0,0,0,0.6)); }
/* Coloana MEDIA (stânga) — media sus (elastică) + greutatea LIVE jos, aliniată cu linia de Total din dreapta. */
.cd-media-col { display:flex; flex-direction:column; min-height:0; overflow:hidden; border-right:1px solid #1e2e3e; }
/* Greutate LIVE jos-stânga — aceeași înălțime ca `.cd-total-bar` (padding + font-size identice) → aliniere fixă cu Totalul. */
.cd-greutate-jos { flex-shrink:0; display:flex; align-items:center; justify-content:flex-start;
                   padding:10px 20px; background:transparent; white-space:nowrap;
                   /* font IDENTIC cu valoarea de la Total (.cd-total-val) — fără monospace/letter-spacing/tabular-nums */
                   color:#69f0ae; font-weight:800; font-size:clamp(3.3rem,6vw,5.1rem); }

/* ── Media / reclame ── */
.cd-media { flex:1; min-height:0; background:#0a0a0a; display:flex; align-items:center;
            justify-content:center; overflow:hidden; }
.cd-media-placeholder { display:flex; align-items:center;
                         justify-content:center; gap:8px; opacity:.12; }
.cd-media-label { font-size:0.75rem; letter-spacing:4px; color:#fff; }
.cd-media-img   { width:100%; height:100%; object-fit:contain;
                  animation: cdFade 0.5s ease-in; }
@keyframes cdFade { from { opacity:0; } to { opacity:1; } }

/* ── Bon list + total ── */
.cd-bon-zona { display:flex; flex-direction:column;
               background:#0d0d0d; min-height:0; overflow:hidden; }
.cd-bon-lista { flex:1; overflow-y:auto; padding:4px 0; }
.cd-bon-lista::-webkit-scrollbar { width:4px; }
.cd-bon-lista::-webkit-scrollbar-thumb { background:#333; border-radius:2px; }

/* Coloane FIXE (identice pe header + rânduri) → aliniere garantată; column-gap = spațiu între col */
.cd-bon-header,
.cd-linie { display:grid;
            grid-template-columns: 1fr 10rem 7rem 8.5rem;
            column-gap:1.6rem; padding:5px 20px; align-items:baseline; }
.cd-bon-header { padding:4px 20px 4px; border-bottom:1px solid #1e3a5f;
                 margin-bottom:2px; }
.cd-linie { border-bottom:1px solid #161616; }
.cd-linie-anulat .cd-l-den,
.cd-linie-anulat .cd-l-qty,
.cd-linie-anulat .cd-l-pret,
.cd-linie-anulat .cd-l-total { text-decoration:line-through; color:#c0392b !important;
                                 opacity:.7; }

/* Titlu (Denumire/Cantitate/Preț/Valoare) ×3 față de dimensiunea inițială (0.65rem → 1.95rem) */
.cd-h-den,
.cd-h-qty,
.cd-h-pret,
.cd-h-val   { font-size:1.95rem; font-weight:700; letter-spacing:.8px;
              color:#2a5a8a; text-transform:uppercase; }
.cd-h-qty, .cd-h-pret, .cd-h-val { text-align:right; }

/* Lista de produse ×2 (1rem → 2rem, 0.85rem → 1.7rem) */
.cd-l-den   { font-size:2rem; color:#ddd;
              white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cd-l-qty   { font-size:1.7rem; color:#777; white-space:nowrap;
              text-align:right; font-variant-numeric:tabular-nums; }
.cd-l-pret  { font-size:1.7rem; color:#777; white-space:nowrap;
              text-align:right; font-variant-numeric:tabular-nums; }
.cd-l-total { font-size:2rem; font-weight:600; color:#fff;
              white-space:nowrap; text-align:right;
              font-variant-numeric:tabular-nums; }
.cd-linie-disc { padding:1px 20px 4px 40px; font-size:1.6rem; color:#ff9070; }

.cd-total-bar { display:flex; justify-content:space-between; align-items:center;
                padding:10px 20px; background:#142030;
                border-top:2px solid #1e4060; flex-shrink:0; }
/* TOTAL ×2 (2.5rem → 5rem); valoarea ×1.5 (clamp 2.2/4vw/3.4 → 3.3/6vw/5.1) */
.cd-total-label { font-size:5rem; font-weight:600; color:#aaa; letter-spacing:1px; }
.cd-total-val   { font-size:clamp(3.3rem,6vw,5.1rem);
                  font-weight:800; color:#69f0ae; }
/* Idle: logo mare wide în zona listei (umple lățimea); logo-ul mic din colț rămâne */
.cd-bon-idle { display:flex; align-items:center; justify-content:center;
               flex:1; padding:24px; min-height:0; }
.cd-bon-idle-logo { width:100%; max-height:100%; object-fit:contain; opacity:.92; }

/* ── Overlay ultima vânzare ── */
/* Overlay „Vânzare finalizată": frame = zona utilă (1cm margine sus/jos/lateral), stage = conținutul
   scalat proporțional prin JS (fitDisplayOverlay) ca să UMPLE frame-ul indiferent câte plăți sunt. */
.cd-ultim-overlay { position:absolute; inset:0; background:#060e18; z-index:20; overflow:hidden; }
.cd-ultim-frame   { position:absolute; inset:1cm; display:flex;
                    align-items:center; justify-content:center; overflow:hidden; }
.cd-ultim-stage   { display:flex; flex-direction:column; align-items:center; gap:2rem;
                    transform-origin:center center; }
.cd-ultim-icon    { font-size:7rem; color:#69f0ae; line-height:1; }
.cd-ultim-title   { font-size:3.2rem; font-weight:700; color:#fff;
                    letter-spacing:.5px; }
.cd-ultim-rows    { width:100%; max-width:56rem; display:flex;
                    flex-direction:column; gap:0.75rem; }
.cd-ultim-row     { display:flex; justify-content:space-between;
                    align-items:baseline; font-size:2.2rem; }
.cd-ultim-total-row { font-size:2.8rem; font-weight:700; color:#fff;
                      border-bottom:1px solid #1e3a5f; padding-bottom:0.75rem;
                      margin-bottom:0.25rem; }
.cd-ultim-sub     { font-size:1.9rem; color:#888; padding-left:2rem; }
.cd-ultim-disc-row { color:#ff9070 !important; }
.cd-ultim-sep     { border-top:1px solid #1e3a5f; margin:0.75rem 0; }
.cd-ultim-plata   { font-size:2.3rem; color:#4fc3f7; font-weight:600; }
.cd-ultim-rest-row { font-size:2.2rem; color:#fff176; font-weight:600; }
.cd-ultim-thanks  { font-size:3.6rem; font-weight:700; color:#69f0ae;
                    margin-top:1rem; letter-spacing:.5px; }
.cd-ultim-client  { text-align:center; padding:0.5rem 1rem;
                    border:1px solid #1e3a5f; border-radius:8px;
                    background:#0f1c2c; min-width:60vw; }
.cd-ultim-client-den { font-size:2rem; font-weight:600; color:#4fc3f7; }
.cd-ultim-client-cif { font-size:1.5rem; color:#aaa; margin-top:0.25rem; }

#blazor-error-ui {
    background:var(--orange); color:#fff; padding:8px 20px;
    position:fixed; bottom:0; left:0; right:0; display:none;
    text-align:center; z-index:9999; font-size:var(--fs-sm);
}
#blazor-error-ui .reload { color:#ffe; margin:0 10px; }
#blazor-error-ui .dismiss { cursor:pointer; float:right; }

/* Nota „neconfirmat" in panoul Parametri AMEF */
.cfg-amef-nota {
    background:#3a2f1a; border:1px solid #6a5a2a; color:#ffe0b3;
    font-size:0.82rem; line-height:1.45; padding:8px 12px; border-radius:8px; margin-bottom:12px;
}

/* ═══════════════ DatePicker (calendar custom reutilizabil) ═══════════════ */
.dp { position:relative; display:inline-block; }
.dp-field { position:relative; display:inline-flex; align-items:center; cursor:pointer; }
.dp-input {
    cursor:pointer; padding:7px 32px 7px 12px; border:1px solid var(--border,#cfd6e4);
    border-radius:8px; background:#fff; color:var(--navy,#1a2744);
    font-size:0.86rem; font-weight:600; width:140px; text-align:center;
}
.dp-field-open .dp-input,
.dp-input:focus { outline:none; border-color:var(--blue,#3d6eb5); box-shadow:0 0 0 3px rgba(61,110,181,0.18); }
.dp-ico { position:absolute; right:9px; font-size:0.95rem; pointer-events:none; opacity:.8; }

/* Popup = overlay FIX centrat în fereastră (ca un modal) → nu mai e tăiat de containere scrollabile
   și nu mai generează scroll, indiferent de ecran (POS/BackOffice, telefon/PC). */
.dp-backdrop {
    position:fixed; inset:0; z-index:3000;
    background:rgba(15,20,35,0.45);
    display:flex; align-items:center; justify-content:center; padding:16px;
}
.dp-pop {
    position:relative; z-index:3001;
    background:#fff; border:1px solid #dbe2ee; border-radius:16px;
    box-shadow:0 18px 60px rgba(10,15,35,0.40); padding:14px; width:340px; max-width:100%;
    max-height:92vh; overflow:auto;
    user-select:none; animation:dp-in .14s ease-out;
}
@keyframes dp-in { from { opacity:0; transform:scale(.96); } to { opacity:1; transform:none; } }

.dp-hdr { display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.dp-nav {
    flex:0 0 auto; width:34px; height:34px; border:none; border-radius:9px;
    background:var(--bg,#f4f5f9); color:var(--navy,#1a2744); font-size:1.3rem; font-weight:700;
    cursor:pointer; line-height:1; transition:background .12s;
}
.dp-nav:hover { background:#e3e9f5; }
.dp-title { flex:1; display:flex; gap:6px; justify-content:center; }
.dp-sel, .dp-an {
    border:1px solid #dbe2ee; border-radius:8px; padding:5px 6px; font-size:0.84rem; font-weight:700;
    color:var(--navy,#1a2744); background:#fff; cursor:pointer;
}
.dp-sel:focus, .dp-an:focus { outline:none; border-color:var(--blue,#3d6eb5); }
.dp-an { width:68px; text-align:center; }

.dp-dow { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; margin-bottom:4px; }
.dp-dow-c { text-align:center; font-size:0.7rem; font-weight:800; color:#9aa3b8; text-transform:uppercase; letter-spacing:.4px; padding:2px 0; }

.dp-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }
.dp-cell {
    aspect-ratio:1; border:none; border-radius:9px; background:transparent;
    color:var(--navy,#1a2744); font-size:0.86rem; font-weight:600; cursor:pointer;
    display:flex; align-items:center; justify-content:center; transition:background .1s, color .1s;
}
.dp-cell:hover { background:#e9eef9; }
.dp-empty { cursor:default; }
.dp-cell-we { color:#c0506a; }
.dp-cell-azi { box-shadow:inset 0 0 0 2px var(--blue,#3d6eb5); }
.dp-cell-sel, .dp-cell-sel:hover {
    background:var(--blue,#3d6eb5); color:#fff; font-weight:800;
    box-shadow:0 2px 8px rgba(61,110,181,0.45);
}

.dp-foot { display:flex; gap:8px; margin-top:10px; padding-top:10px; border-top:1px solid #eef1f7; }
.dp-btn {
    flex:1; padding:8px; border:1px solid #dbe2ee; border-radius:9px; background:#fff;
    color:var(--navy,#1a2744); font-size:0.82rem; font-weight:700; cursor:pointer; transition:background .12s;
}
.dp-btn:hover { background:var(--bg,#f4f5f9); }
.dp-btn-clear { color:#c0392b; border-color:#f0c6c0; }
.dp-btn-clear:hover { background:#fdecea; }


/* Self Order Kiosk (Modul=selforder) - design "TASTE" (dark + accent galben) */
:root{
  --so-bg:#17171a; --so-panel:#232327; --so-panel2:#2b2b30; --so-card:#ffffff;
  --so-yellow:#f5b301; --so-yellow2:#f7c948; --so-ink:#1c1c1e; --so-muted:#8a8a90;
  --so-line:#ececef; --so-green:#34c759;
}
.so-root{position:fixed;inset:0;overflow:hidden;box-sizing:border-box;
  font-family:'Segoe UI',system-ui,sans-serif;color:var(--so-ink);
  padding-top:var(--safe-top,env(safe-area-inset-top,0px));
  padding-bottom:var(--safe-bottom,env(safe-area-inset-bottom,0px));
  user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;background:var(--so-bg);}
.so-maint-hot{position:absolute;top:0;left:0;width:90px;height:90px;z-index:80;background:transparent;}

/* Ecran de atragere */
.so-atract{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:clamp(20px,4vh,44px);text-align:center;padding:5vh 24px;cursor:pointer;
  background:radial-gradient(120% 90% at 50% 0%,#26262b 0%,#141416 70%);}
.so-logo{width:min(70vw,720px);max-height:34vh;object-fit:contain;filter:drop-shadow(0 8px 24px rgba(0,0,0,.55));}
.so-welcome{font-size:clamp(1.8rem,5vw,3.4rem);font-weight:900;color:#fff;letter-spacing:.5px;}
.so-start{display:inline-flex;align-items:center;gap:12px;border:none;border-radius:18px;cursor:pointer;
  background:linear-gradient(180deg,var(--so-yellow2),var(--so-yellow));color:#1b1b1b;font-weight:900;
  font-size:clamp(1.25rem,3.4vw,2.1rem);padding:clamp(16px,3vh,28px) clamp(30px,6vw,60px);
  box-shadow:0 12px 34px rgba(245,179,1,.45);animation:soPulse 2.2s ease-in-out infinite;}
.so-start:active{transform:scale(.98);}
@keyframes soPulse{0%,100%{transform:scale(1);}50%{transform:scale(1.035);}}
.so-lang{display:flex;gap:10px;}
.so-lang button{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.08);color:#e9e9ee;
  border:1px solid rgba(255,255,255,.16);border-radius:12px;padding:10px 16px;font-weight:700;font-size:1rem;cursor:pointer;}
.so-lang button.on{background:var(--so-yellow);color:#1b1b1b;border-color:var(--so-yellow);}
.so-foot{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:center;flex-wrap:wrap;gap:clamp(14px,3vw,44px);
  padding:14px 18px;background:rgba(0,0,0,.35);border-top:1px solid rgba(255,255,255,.08);}
.so-foot-item{display:flex;align-items:center;gap:8px;color:#c9c9d0;font-size:.9rem;}
.so-foot-item b{color:#fff;font-weight:700;}

/* Shell ecran (topbar + body + cartbar) */
.so-screen{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--so-bg);}
.so-screen.light{background:#f2f2f5;color:var(--so-ink);}
.so-topbar{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:16px 20px;
  background:#fff;border-bottom:1px solid var(--so-line);}
.so-screen:not(.light) .so-topbar{background:#1c1c20;border-bottom:1px solid #2e2e34;color:#fff;}
.so-tb-btn{width:46px;height:46px;flex:0 0 auto;border:none;border-radius:12px;background:#f0f0f3;color:#333;
  font-size:1.4rem;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.so-screen:not(.light) .so-tb-btn{background:#2b2b31;color:#eee;}
.so-tb-back{flex:0 0 auto;height:clamp(52px,7vh,66px);padding:0 clamp(18px,2.4vw,28px);border:none;border-radius:14px;
  background:#c62828;color:#fff;font-size:clamp(1.05rem,2vw,1.4rem);font-weight:800;cursor:pointer;
  display:flex;align-items:center;gap:8px;box-shadow:0 4px 12px rgba(198,40,40,.45);}
.so-tb-back:active{transform:scale(.97);}
.so-tb-title{flex:1;text-align:center;font-size:clamp(1.1rem,2.6vw,1.6rem);font-weight:800;letter-spacing:.5px;text-transform:uppercase;}
.so-body{flex:1;min-height:0;overflow-y:auto;padding:18px;}

/* Categorii (grid tiles) */
.so-cats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;align-content:start;}
@media (max-width:760px){ .so-cats{grid-template-columns:repeat(2,1fr);} }
.so-cat{display:flex;flex-direction:column;align-items:center;gap:14px;background:#fff;border:2px solid transparent;
  border-radius:22px;padding:26px 18px;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.08);}
.so-cat:active{transform:scale(.98);}
.so-cat.on{background:var(--so-yellow2);border-color:var(--so-yellow);}
.so-cat-img{width:clamp(90px,14vw,170px);height:clamp(90px,14vw,170px);border-radius:18px;object-fit:cover;
  display:flex;align-items:center;justify-content:center;font-size:clamp(2.6rem,7vw,4.4rem);
  background:#f3f3f6;box-shadow:inset 0 0 0 1px rgba(0,0,0,.04);}
.so-cat-den{font-size:clamp(1.2rem,2.2vw,1.6rem);font-weight:800;text-align:center;line-height:1.15;}
.so-promo-btn{margin-top:18px;width:100%;display:flex;align-items:center;justify-content:center;gap:10px;
  background:#fff;border:1px dashed var(--so-yellow);color:#a9760a;border-radius:16px;padding:16px;
  font-weight:800;font-size:1.1rem;cursor:pointer;}

/* Produse (lista) */
.so-prods{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;}
@media (max-width:760px){ .so-prods{grid-template-columns:1fr;} }
.so-prod{display:flex;align-items:center;gap:14px;background:#fff;border-radius:18px;padding:12px 14px;
  box-shadow:0 3px 12px rgba(0,0,0,.07);position:relative;}
.so-prod-img{width:clamp(64px,9vw,90px);height:clamp(64px,9vw,90px);flex:0 0 auto;border-radius:14px;object-fit:cover;
  background:#f3f3f6;display:flex;align-items:center;justify-content:center;font-size:2rem;}
.so-prod-mid{flex:1;min-width:0;}
.so-prod-den{font-size:clamp(1.05rem,1.9vw,1.3rem);font-weight:800;line-height:1.2;}
.so-prod-desc{font-size:.9rem;color:var(--so-muted);margin-top:3px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.so-prod-pret{font-size:clamp(1rem,1.8vw,1.25rem);font-weight:900;color:var(--so-ink);white-space:nowrap;margin-top:4px;}
.so-prod-add{width:48px;height:48px;flex:0 0 auto;border:none;border-radius:14px;cursor:pointer;
  background:var(--so-yellow);color:#1b1b1b;font-size:1.8rem;font-weight:900;line-height:1;
  display:flex;align-items:center;justify-content:center;box-shadow:0 4px 10px rgba(245,179,1,.4);}
.so-prod-add:active{transform:scale(.95);}

/* Bara cos (persistenta jos) */
.so-cartbar{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:18px;
  min-height:180px;padding:32px 34px;background:linear-gradient(180deg,#242429,#1a1a1e);color:#fff;
  border-top:4px solid var(--so-yellow);box-shadow:0 -10px 28px rgba(0,0,0,.4);cursor:pointer;}
.so-cartbar-info{display:flex;flex-direction:column;gap:4px;}
.so-cartbar-n{font-size:1.35rem;color:#cfcfd8;font-weight:600;}
.so-cartbar-total{font-size:3.2rem;font-weight:900;color:var(--so-yellow);line-height:1.05;}
.so-cartbar-go{background:var(--so-yellow);color:#1b1b1b;border:none;border-radius:18px;padding:28px 52px;
  font-weight:900;font-size:1.9rem;cursor:pointer;display:flex;align-items:center;gap:12px;
  box-shadow:0 8px 22px rgba(245,179,1,.5);}
.so-cartbar-go:active{transform:scale(.97);}

/* Cos (ecran) */
.so-screen.cos{background:#161619;color:#eaeaf0;}
.so-screen.cos .so-topbar{background:#1c1c20;color:#fff;border-bottom:1px solid #2e2e34;}
.so-cos-list{display:flex;flex-direction:column;gap:12px;}
.so-cos-item{display:flex;align-items:center;gap:14px;background:var(--so-panel);border-radius:16px;padding:12px 14px;}
.so-cos-img{width:clamp(56px,8vw,76px);height:clamp(56px,8vw,76px);flex:0 0 auto;border-radius:12px;object-fit:cover;
  background:#3a3a40;display:flex;align-items:center;justify-content:center;font-size:1.8rem;}
.so-cos-mid{flex:1;min-width:0;}
.so-cos-den{font-size:1.1rem;font-weight:800;color:#fff;}
.so-cos-amb{font-size:.82rem;color:#9ec6a0;margin-top:2px;}
.so-cos-pret{font-size:.95rem;color:#bdbdc6;margin-top:2px;}
.so-cos-right{display:flex;flex-direction:column;align-items:flex-end;gap:10px;}
.so-step{display:flex;align-items:center;gap:12px;}
.so-step-btn{width:40px;height:40px;border:none;border-radius:10px;background:var(--so-panel2);color:#fff;
  font-size:1.4rem;font-weight:800;cursor:pointer;line-height:1;}
.so-step-btn:active{transform:scale(.94);}
.so-step-val{min-width:26px;text-align:center;font-size:1.2rem;font-weight:800;color:#fff;}
.so-cos-del{background:none;border:none;color:#ff6b6b;font-size:1.5rem;cursor:pointer;}
.so-cos-delbig{flex:0 0 auto;width:clamp(58px,7vw,78px);height:clamp(58px,7vw,78px);border:none;border-radius:16px;
  background:#7a1010;color:#fff;font-size:1.8rem;cursor:pointer;display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 12px rgba(122,16,16,.45);}
.so-cos-delbig:active{transform:scale(.95);}
.so-cos-foot{flex:0 0 auto;background:#1c1c20;border-top:1px solid #2e2e34;padding:16px 20px;}
.so-cos-line{display:flex;justify-content:space-between;font-size:1.05rem;color:#c9c9d2;margin-bottom:8px;}
.so-cos-line.total{font-size:1.5rem;font-weight:900;color:#fff;}
.so-cos-line.total b{color:var(--so-yellow);}
.so-cos-actions{display:flex;gap:12px;margin-top:14px;}
.so-btn-sec{flex:1;background:transparent;border:2px solid #4a4a52;color:#eaeaf0;border-radius:14px;
  padding:16px;font-weight:800;font-size:1.1rem;cursor:pointer;}
.so-btn-prim{flex:2;background:var(--so-yellow);border:none;color:#1b1b1b;border-radius:14px;
  padding:16px;font-weight:900;font-size:1.2rem;cursor:pointer;}
.so-btn-prim:disabled{background:#3a3a40;color:#888;cursor:default;}

.so-empty{text-align:center;color:var(--so-muted);font-size:1.15rem;padding:50px 20px;}
.so-toast{position:absolute;top:calc(var(--safe-top,0px) + 84px);left:50%;transform:translateX(-50%);z-index:70;
  background:#2e7d32;color:#fff;padding:14px 24px;border-radius:14px;font-weight:800;font-size:1.05rem;
  box-shadow:0 8px 24px rgba(0,0,0,.4);cursor:pointer;}

/* Mentenanta (overlay) */
.so-maint-overlay{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;}
.so-maint-panel{background:#1c1c20;border:1px solid #35353c;border-radius:16px;padding:22px;display:flex;flex-direction:column;
  gap:12px;min-width:min(90vw,360px);box-shadow:0 16px 48px rgba(0,0,0,.5);color:#eee;}
.so-maint-title{font-size:1.3rem;font-weight:800;text-align:center;margin-bottom:6px;}
.so-maint-panel .btn-act{font-size:1.1rem;padding:14px;}

/* ── Retur ambalaje SGR → voucher (grupa ROSGR) ── */
.retur-amb-list { display:flex; flex-direction:column; gap:8px; margin:14px 0; max-height:52vh; overflow-y:auto; }
.retur-amb-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 12px; background:#223052; border-radius:10px; border:1px solid transparent; }
.retur-amb-row.activ { border-color:#2e7d4f; background:#1f3b2e; }
.retur-amb-den { flex:1; font-size:1.02rem; font-weight:600; color:#eaf2ff; }
.retur-amb-qty { display:flex; align-items:center; gap:6px; flex:0 0 auto; }
.retur-amb-total { text-align:right; font-size:1.2rem; color:#2b2b40; font-weight:600; margin:6px 2px 12px; }
.retur-amb-total b { color:#1f7a44; }
.retur-amb-msg { background:#e7f6ec; border:1px solid #2e7d4f; color:#1f5130; border-radius:8px; padding:8px 12px; margin:8px 0; font-size:0.98rem; font-weight:600; }
.retur-amb-gol { color:#6b7280; text-align:center; padding:24px; }
