/* ===========================================================
   CORE BUTTONS UNIFIED (v29.4)
   - Uložit / Save        → ZELENÝ TEXT (jen text, transparent bg)
   - Zpět / Zrušit/Cancel → ČERVENÝ TEXT (jen text, transparent bg)
   - Smazat / Delete      → červený text
   - Upravit / Edit       → zelený text
   - Nový / New           → zelený text
   - Ostatní (Test, Info, Přehrát, Akce) → neutrální
   Cílí všechna tlačítka v adminu (table-box, *-edit, action panely).
=========================================================== */

/* generický baseline pro všechna <button> v adminu */
.adminContent button,
#adminContent button,
.table-box button,
.users-edit-content button,
.pe22-btn,
.pse-btn,
.rs-form-save,
.rs-form-cancel,
.provider-act-edit,
.provider-act-delete,
.core-btn{
    background: transparent;
    border: 1px solid #2a3340;
    border-radius: 3px;
    padding: 6px 14px;
    cursor: pointer;
    font-family: 'Segoe UI', sans-serif;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 1px;
    color: #cbd3df;
    transition: border-color .14s ease, background .14s ease;
    margin-left: 4px;
}
.adminContent button:hover,
#adminContent button:hover,
.table-box button:hover,
.users-edit-content button:hover,
.pe22-btn:hover,
.pse-btn:hover,
.core-btn:hover{
    background: rgba(255,255,255,0.04);
    border-color: #3a4555;
}

/* ZELENÉ – Uložit / Save */
button[id="saveBtn"],
button[data-testid$="-save"],
button[data-testid$="-save-btn"],
button.rs-form-save,
button.core-btn-save,
button.pe22-btn.primary,
button.pse-btn.primary{
    color: #10d9a3 !important;
    border-color: #10d9a3 !important;
    background: transparent !important;
}
button[id="saveBtn"]:hover,
button[data-testid$="-save"]:hover,
button[data-testid$="-save-btn"]:hover,
button.rs-form-save:hover,
button.core-btn-save:hover,
button.pe22-btn.primary:hover,
button.pse-btn.primary:hover{
    background: rgba(16,217,163,0.08) !important;
    color: #10d9a3 !important;
    border-color: #10d9a3 !important;
}

/* ČERVENÉ – Zpět / Zrušit / Cancel */
button[data-testid$="-back"],
button[data-testid$="-cancel"],
button.rs-form-cancel,
button.core-btn-cancel{
    color: #f43f5e !important;
    border-color: #2a3340 !important;
}
button[data-testid$="-back"]:hover,
button[data-testid$="-cancel"]:hover,
button.rs-form-cancel:hover,
button.core-btn-cancel:hover{
    background: rgba(244,63,94,0.08) !important;
    border-color: #f43f5e !important;
    color: #f43f5e !important;
}

/* ČERVENÉ – Smazat / Delete (action buttons) */
button.provider-act-delete,
button.btn-delete,
button.pse-btn.danger{
    color: #f43f5e !important;
}
button.provider-act-delete:hover,
button.btn-delete:hover,
button.pse-btn.danger:hover{
    background: rgba(244,63,94,0.08) !important;
    border-color: #f43f5e !important;
}

/* ZELENÉ – Upravit / Edit / Nový */
button.provider-act-edit,
button.btn-edit,
button[id="resetBtn"]{
    color: #10d9a3 !important;
}
button.provider-act-edit:hover,
button.btn-edit:hover,
button[id="resetBtn"]:hover{
    background: rgba(16,217,163,0.08) !important;
    border-color: #10d9a3 !important;
}

/* ===========================================================
   PANELS – SJEDNOCENÁ ŠÍŘKA NAPŘÍČ VŠEMI ADMIN STRÁNKAMI
   - NEpřepisujeme margin-top (z panel.css je 46px aby kontent
     nebyl pod fixed topbarem!) – jen pravolevé centrování.
   - NEpřepisujeme padding-top z layout.css.
=========================================================== */

.wrapper,
.adminContent,
#adminContent,
.core-config-wrapper,
.users-edit-content,
.provider-detail,
.programs-wrapper,
.epg-edit-wrapper,
.system-info-wrapper{
    max-width: 1500px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    box-sizing: border-box !important;
}

/* form-box uvnitř wrapperů – ať nemá další max-width omezení */
.form-content,
.form-box{
    max-width: 100% !important;
    width: 100% !important;
    box-sizing: border-box !important;
}

/* core_settings – stejná hustota jako ostatní panely */
.core-config-wrapper .core-row{
    min-height: 32px;
    margin-bottom: 4px;
    gap: 8px;
}
.core-config-wrapper .core-label{
    flex: 0 0 220px;
    font-size: 11px;
    height: 28px;
    letter-spacing: 1px;
    text-transform: uppercase;
}
.core-config-wrapper .core-input{
    height: 28px;
    font-size: 12px;
}
.core-config-wrapper .core-node{
    padding: 10px 12px;
    margin-bottom: 8px;
}
.core-config-wrapper .core-node-title{
    font-size: 11px;
    margin-bottom: 8px;
}

/* ===========================================================
   STICKY CARD HEADER – statusbar / form-header / core-card-header
   se "připíchnou" pod topbar, scrolluje jen tělo karty pod ním.
=========================================================== */

.statusbar,
.form-header,
.core-card-header,
.card-header{
    position: sticky !important;
    top: calc(var(--topbar-h) + var(--green-h)) !important;
    z-index: 50 !important;
    /* aby přes ně neprosvítal scrollovaný obsah */
    background: var(--bg-2) !important;
}

/* všechny tabulky stejná hustota a velikost písma */
.table-box{ max-width: 100% !important; }
.table-box table{
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}
.table-box th{
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 600;
    padding: 6px 8px;
    color: #a6b1c0;
}
.table-box td{
    padding: 5px 8px;
    height: 30px;
    line-height: 1.3;
    font-size: 12px;
    vertical-align: middle;
}
/* akce v buňce tabulky nesmí mít margin-top (patří jen do formulářů) → kompaktní řádky */
.table-box td .actions{
    margin-top: 0;
    align-items: center;
}

/* card header sjednocený */
.core-card-header,
.card-header,
.form-header{
    font-size: 13px !important;
    padding: 10px 14px !important;
}

/* responsivní – mobil */
@media (max-width: 900px){
    .wrapper,
    .adminContent,
    #adminContent,
    .core-config-wrapper,
    .users-edit-content,
    .provider-detail,
    .programs-wrapper,
    .epg-edit-wrapper,
    .system-info-wrapper{
        max-width: 100% !important;
    }
}

/* ===========================================================
   GLOBAL "WORKING" BLINK
   - .btn-working na libovolném <button> → pulzuje červeně,
     dokud běží operace (update apply, speedtest run, backup …).
   - Aplikuje se přes JS: el.classList.add("btn-working").
=========================================================== */

@keyframes btnWorkingPulse{
    0%   { background: #f43f5e; color:#fff; box-shadow: 0 0 0 0 rgba(244,63,94,0.65); }
    50%  { background: #b8253b; color:#fff; box-shadow: 0 0 0 8px rgba(244,63,94,0); }
    100% { background: #f43f5e; color:#fff; box-shadow: 0 0 0 0 rgba(244,63,94,0); }
}

button.btn-working,
.btn-working{
    animation: btnWorkingPulse 1.0s ease-in-out infinite !important;
    color: #fff !important;
    border-color: #b8253b !important;
    cursor: progress !important;
    pointer-events: none;       /* zabraňuje dvojkliknutí během operace */
}


/* ===========================================================
   MENU CLICK FLASH – kliknuté pole v admin menu krátce blikne
   červeně aby bylo jasné, že kliknutí bylo zaregistrováno.
=========================================================== */

@keyframes menuClickFlashAnim{
    0%   { background: rgba(244,63,94,0.0); color: inherit; }
    20%  { background: rgba(244,63,94,0.55); color: #fff; }
    60%  { background: rgba(244,63,94,0.35); color: #fff; }
    100% { background: rgba(244,63,94,0.0); color: inherit; }
}
.menu-click-flash{
    animation: menuClickFlashAnim 0.55s ease-out;
}

