:root{
    --text:#f4f7fb;
    --muted:#9ba7b8;

    --glass:rgba(16,20,28,.56);
    --glass-strong:rgba(11,14,20,.72);

    --line:rgba(255,255,255,.10);
    --line-strong:rgba(255,255,255,.16);

    --shadow:0 24px 70px rgba(0,0,0,.38);

    --accent:#f4f7fb;
    --good:#65d79c;
    --bad:#ff6b74;
    --warn:#f4c765;
}

*{
    box-sizing:border-box;
}

html{
    min-height:100%;
}

body{
    margin:0;
    min-height:100vh;
    color:var(--text);
    background:#080a0f;
    font-family:
        Inter,
        ui-sans-serif,
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        sans-serif;
    overflow-x:hidden;
}

body::before{
    content:"";
    position:fixed;
    inset:0;
    z-index:-5;

    background:
        radial-gradient(
            circle at var(--bg1-x,18%) var(--bg1-y,12%),
            hsla(var(--bg1-h,190),80%,55%,.36),
            transparent 38%
        ),
        radial-gradient(
            circle at var(--bg2-x,82%) var(--bg2-y,22%),
            hsla(var(--bg2-h,280),75%,56%,.30),
            transparent 42%
        ),
        radial-gradient(
            circle at var(--bg3-x,55%) var(--bg3-y,88%),
            hsla(var(--bg3-h,35),85%,55%,.22),
            transparent 45%
        ),
        linear-gradient(
            125deg,
            #05070b 0%,
            #10141d 45%,
            #07090d 100%
        );

    background-attachment:fixed;
}

body::after{
    content:"";
    position:fixed;
    inset:0;
    z-index:-4;

    background:
        linear-gradient(
            rgba(255,255,255,.018) 1px,
            transparent 1px
        ),
        linear-gradient(
            90deg,
            rgba(255,255,255,.018) 1px,
            transparent 1px
        );

    background-size:48px 48px;

    mask-image:
        linear-gradient(
            to bottom,
            rgba(0,0,0,.8),
            transparent
        );

    pointer-events:none;
}

.ambient{
    position:fixed;
    border-radius:999px;
    filter:blur(95px);
    opacity:.17;
    z-index:-3;
    pointer-events:none;
}

.ambient-a{
    width:420px;
    height:420px;
    left:-140px;
    top:20%;
    background:white;
}

.ambient-b{
    width:520px;
    height:520px;
    right:-230px;
    top:6%;
    background:#888;
}

.ambient-c{
    width:450px;
    height:450px;
    left:40%;
    bottom:-260px;
    background:#666;
}

.glass{
    background:
        linear-gradient(
            145deg,
            rgba(255,255,255,.07),
            rgba(255,255,255,.025)
        ),
        var(--glass);

    border:1px solid var(--line);

    backdrop-filter:
        blur(24px)
        saturate(135%);

    -webkit-backdrop-filter:
        blur(24px)
        saturate(135%);

    box-shadow:var(--shadow);
}

.app-shell{
    display:grid;
    grid-template-columns:230px minmax(0,1fr);
    gap:18px;

    min-height:100vh;
    padding:18px;
}

.sidebar{
    position:sticky;
    top:18px;
    height:calc(100vh - 36px);

    border-radius:22px;
    padding:18px;

    display:flex;
    flex-direction:column;
}

.brand{
    display:flex;
    align-items:center;
    gap:12px;

    padding:4px 4px 22px;
    border-bottom:1px solid var(--line);
}

.brand-mark{
    width:38px;
    height:38px;

    display:grid;
    place-items:center;

    border-radius:10px;

    background:#f4f7fb;
    color:#11151d;

    font-weight:900;
    font-size:20px;
}

.brand-mark.large{
    width:52px;
    height:52px;
    border-radius:14px;
    font-size:27px;
}

.brand-name{
    font-weight:800;
    font-size:16px;
    letter-spacing:.01em;
}

.brand-sub{
    color:var(--muted);
    font-size:11px;
    margin-top:2px;
    letter-spacing:.12em;
    text-transform:uppercase;
}

.nav{
    display:flex;
    flex-direction:column;
    gap:6px;

    margin-top:18px;
}

.nav-item{
    display:flex;
    align-items:center;
    gap:10px;

    padding:10px 12px;

    color:#d8dee8;
    text-decoration:none;

    border:1px solid transparent;
    border-radius:10px;

    font-size:13px;

    transition:.18s ease;
}

.nav-item:hover{
    background:rgba(255,255,255,.07);
    border-color:var(--line);
    transform:translateX(2px);
}

.sidebar-user{
    margin-top:auto;
    padding-top:16px;
    border-top:1px solid var(--line);
}

.user-name{
    font-weight:700;
    font-size:13px;
}

.user-role{
    color:var(--muted);
    font-size:11px;
    margin-top:3px;
    text-transform:uppercase;
}

.logout{
    display:inline-block;
    margin-top:12px;
    color:#ff9aa0;
    text-decoration:none;
    font-size:12px;
}

.main{
    min-width:0;
}

.topbar{
    min-height:86px;

    border-radius:22px;
    padding:17px 22px;

    display:flex;
    align-items:center;
    justify-content:space-between;
}

.page-eyebrow{
    color:var(--muted);
    font-size:9px;
    letter-spacing:.20em;
    font-weight:700;
}

.topbar h1{
    margin:4px 0 0;
    font-size:23px;
    letter-spacing:-.025em;
}

.topbar-status{
    display:flex;
    align-items:center;
    gap:8px;
    color:var(--muted);
    font-size:12px;
}

.status-dot{
    width:7px;
    height:7px;
    border-radius:50%;
    background:var(--good);
    box-shadow:0 0 15px var(--good);
}

.content{
    margin-top:18px;
}

.stats-grid{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:14px;
    margin-bottom:18px;
}

.stat-card{
    border-radius:18px;
    padding:18px;
    min-height:116px;

    color:inherit;
    text-decoration:none;

    transition:.2s ease;
}

.stat-card:hover{
    transform:translateY(-2px);
    border-color:var(--line-strong);
}

.stat-label{
    color:var(--muted);
    text-transform:uppercase;
    letter-spacing:.12em;
    font-size:10px;
    font-weight:700;
}

.stat-value{
    font-size:34px;
    font-weight:800;
    margin-top:13px;
    letter-spacing:-.04em;
}

.good{
    color:var(--good);
}

.bad{
    color:var(--bad);
}

.warn{
    color:var(--warn);
}

.panel{
    border-radius:20px;
    padding:18px;
}

.panel + .panel{
    margin-top:16px;
}

.panel-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    margin-bottom:14px;
}

.panel-head h2{
    margin:0;
    font-size:15px;
}

.panel-sub{
    color:var(--muted);
    font-size:11px;
    margin-top:3px;
}

.table-scroll{
    overflow:auto;
}

.data-table{
    width:100%;
    border-collapse:separate;
    border-spacing:0;
    font-size:12px;
}

.data-table th{
    padding:9px 11px;
    text-align:left;

    color:#8e9aaa;

    font-size:9px;
    letter-spacing:.10em;
    text-transform:uppercase;

    border-bottom:1px solid var(--line);
}

.data-table td{
    padding:10px 11px;
    border-bottom:1px solid rgba(255,255,255,.055);
    vertical-align:middle;
}

.data-table tbody tr{
    transition:.14s ease;
}

.data-table tbody tr:hover{
    background:rgba(255,255,255,.035);
}

.customers-table .address{
    width:42%;
}

.customer-name{
    font-weight:700;
}

.clickable{
    cursor:pointer;
}

.mono{
    font-family:
        "SFMono-Regular",
        Consolas,
        monospace;
}

.amount{
    white-space:nowrap;
    font-weight:700;
}

.badge{
    display:inline-flex;
    align-items:center;

    min-height:23px;
    padding:3px 8px;

    border-radius:999px;

    font-size:9px;
    font-weight:800;
    letter-spacing:.04em;

    border:1px solid var(--line);
}

.badge.good{
    background:rgba(101,215,156,.10);
}

.badge.bad{
    background:rgba(255,107,116,.10);
}

.badge.warn{
    background:rgba(244,199,101,.10);
}

.btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;

    min-height:34px;
    padding:7px 12px;

    border:1px solid var(--line-strong);
    border-radius:9px;

    background:rgba(255,255,255,.06);
    color:#f4f7fb;

    text-decoration:none;

    font-size:11px;
    font-weight:700;

    cursor:pointer;

    transition:.16s ease;
}

.btn:hover{
    background:rgba(255,255,255,.11);
    transform:translateY(-1px);
}

.btn-primary{
    background:#f4f7fb;
    color:#11151d;
    border-color:#f4f7fb;
}

.btn-primary:hover{
    background:#dce2ea;
}

.btn-good{
    background:rgba(101,215,156,.16);
    color:#a9f3cd;
    border-color:rgba(101,215,156,.24);
}

.btn-danger{
    background:rgba(255,107,116,.13);
    color:#ffb0b5;
    border-color:rgba(255,107,116,.22);
}

.btn-small{
    min-height:28px;
    padding:5px 9px;
    font-size:10px;
}

.search-form{
    display:flex;
    gap:8px;
    width:min(520px,100%);
}

input,
textarea,
select{
    width:100%;

    border:1px solid var(--line);
    border-radius:9px;

    background:rgba(4,7,12,.48);
    color:var(--text);

    padding:8px 10px;

    font:inherit;
    font-size:12px;

    outline:none;

    transition:.15s ease;
}

input:focus,
textarea:focus,
select:focus{
    border-color:rgba(255,255,255,.28);
    background:rgba(4,7,12,.66);
}

textarea{
    min-height:80px;
    resize:vertical;
}

.field{
    margin-bottom:11px;
}

.field label{
    display:block;
    margin-bottom:5px;

    color:#94a0af;

    font-size:9px;
    font-weight:800;
    letter-spacing:.09em;
    text-transform:uppercase;
}

.field-row{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
}

.important-field{
    font-weight:800;
    font-size:14px;
}

.profile-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:16px;
}

.profile-toolbar{
    display:flex;
    justify-content:flex-end;
    margin-bottom:12px;
}

.save-bar{
    margin-top:12px;
    padding:10px 14px;

    border-radius:14px;

    display:flex;
    justify-content:flex-end;
}

.section-gap{
    margin-top:16px !important;
}

.access-row,
.bank-row{
    display:flex;
    gap:8px;
    align-items:flex-end;

    padding:10px 0;

    border-bottom:1px solid var(--line);
}

.access-form{
    flex:1;

    display:grid;
    grid-template-columns:1fr 1fr auto;
    gap:9px;
    align-items:end;
}

.access-form .field,
.bank-form .field,
.add-row .field,
.add-bank .field{
    margin:0;
}

.bank-form{
    flex:1;

    display:grid;
    grid-template-columns:1.5fr 1.2fr 1fr .6fr auto;
    gap:9px;
    align-items:end;
}

.bank-meta{
    display:flex;
    align-items:center;
    gap:7px;
}

.add-row,
.add-bank{
    display:grid;
    gap:9px;
    align-items:end;

    margin-top:14px;

    padding:13px;

    border:1px dashed var(--line-strong);
    border-radius:12px;

    background:rgba(255,255,255,.025);
}

.add-row{
    grid-template-columns:1fr 1fr auto;
}

.add-bank{
    grid-template-columns:1.4fr 1.1fr 1fr .6fr auto;
}

.password-field{
    position:relative;
}

.password-field input{
    padding-right:42px;
}

.eye-button{
    position:absolute;
    right:4px;
    top:50%;
    transform:translateY(-50%);

    width:32px;
    height:28px;

    border:0;
    border-radius:7px;

    background:transparent;
    color:#cfd6e0;

    cursor:pointer;
}

.eye-button:hover{
    background:rgba(255,255,255,.07);
}

.icon-action{
    width:34px;
    padding:0;
}

.flash-stack{
    margin-top:14px;
}

.flash{
    padding:10px 13px;

    border-radius:11px;

    background:rgba(255,255,255,.08);
    border:1px solid var(--line);

    font-size:12px;

    backdrop-filter:blur(16px);
}

.flash + .flash{
    margin-top:7px;
}

.flash.success{
    color:#b4f5d2;
    border-color:rgba(101,215,156,.24);
    background:rgba(101,215,156,.10);
}

.flash.error{
    color:#ffc0c4;
    border-color:rgba(255,107,116,.24);
    background:rgba(255,107,116,.10);
}

.actions-cell{
    display:flex;
    gap:6px;
}

.form-panel{
    max-width:650px;
}

.form-actions{
    display:flex;
    gap:8px;
    margin-top:16px;
}

.check-row{
    display:flex;
    align-items:center;
    gap:9px;
    font-size:12px;
}

.check-row input{
    width:auto;
}

.field-help{
    color:var(--muted);
    font-size:10px;
    margin-top:5px;
}

.empty-table{
    color:var(--muted);
    text-align:center;
    padding:25px !important;
}

.login-body{
    display:grid;
    place-items:center;
    min-height:100vh;
    padding:20px;
}

.login-wrap{
    width:min(430px,100%);
}

.login-card{
    border-radius:25px;
    padding:27px;
}

.login-brand{
    display:flex;
    align-items:center;
    gap:14px;
    margin-bottom:28px;
}

.login-title{
    font-size:20px;
    font-weight:800;
}

.login-sub{
    color:var(--muted);
    font-size:10px;
    margin-top:4px;
    letter-spacing:.05em;
}

.btn-login{
    width:100%;
    margin-top:8px;
    min-height:40px;
}

@media(max-width:1050px){

    .app-shell{
        grid-template-columns:190px minmax(0,1fr);
    }

    .stats-grid{
        grid-template-columns:repeat(2,1fr);
    }

    .bank-form,
    .add-bank{
        grid-template-columns:1fr 1fr;
    }
}

@media(max-width:760px){

    .app-shell{
        display:block;
        padding:10px;
    }

    .sidebar{
        position:relative;
        top:auto;
        height:auto;
        margin-bottom:10px;
    }

    .nav{
        flex-direction:row;
        flex-wrap:wrap;
    }

    .sidebar-user{
        margin-top:14px;
    }

    .topbar{
        border-radius:16px;
    }

    .profile-grid{
        grid-template-columns:1fr;
    }

    .access-form,
    .add-row,
    .bank-form,
    .add-bank{
        grid-template-columns:1fr;
    }

    .access-row,
    .bank-row{
        align-items:stretch;
        flex-direction:column;
    }

    .customers-head{
        align-items:stretch;
        flex-direction:column;
    }

    .search-form{
        width:100%;
    }
}

/* ===== 2FA ===== */

.twofa-panel{
    margin-top:18px;
    padding:14px;
    border:1px solid var(--line);
    border-radius:12px;
    background:rgba(255,255,255,.025);
}

.twofa-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:15px;
    margin-bottom:13px;
}

.twofa-title{
    font-weight:800;
    font-size:13px;
}

.twofa-text{
    color:var(--muted);
    font-size:12px;
    line-height:1.6;
}

.qr-box{
    width:max-content;
    padding:12px;
    margin:18px 0;
    border-radius:14px;
    background:#fff;
}

.qr-box img{
    display:block;
    width:230px;
    max-width:70vw;
    height:auto;
}

.otp-input{
    text-align:center;
    font-size:24px !important;
    font-weight:800;
    letter-spacing:.28em;
}


/* ==========================================================
   PAYMENTS - ACTION BUTTONS
   ========================================================== */

.payment-action-btn,
.payment-match-btn {
    appearance: none;
    -webkit-appearance: none;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    height: 38px;
    padding: 0 17px;

    border-radius: 10px;
    border: 1px solid rgba(255,255,255,.13);

    color: #f8fafc;
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;

    cursor: pointer;

    transition:
        transform .15s ease,
        border-color .15s ease,
        background .15s ease,
        box-shadow .15s ease;
}


/* Synchronizacia */

.payment-sync-btn {
    background:
        linear-gradient(
            135deg,
            rgba(14,165,233,.90),
            rgba(37,99,235,.88)
        );

    border-color: rgba(96,165,250,.38);

    box-shadow:
        0 6px 18px rgba(37,99,235,.18);
}

.payment-sync-btn:hover {
    transform: translateY(-1px);

    border-color: rgba(147,197,253,.65);

    box-shadow:
        0 9px 24px rgba(37,99,235,.28);
}


/* Automaticke parovanie */

.payment-auto-btn {
    background:
        linear-gradient(
            135deg,
            rgba(124,58,237,.92),
            rgba(79,70,229,.88)
        );

    border-color: rgba(167,139,250,.38);

    box-shadow:
        0 6px 18px rgba(109,40,217,.18);
}

.payment-auto-btn:hover {
    transform: translateY(-1px);

    border-color: rgba(196,181,253,.65);

    box-shadow:
        0 9px 24px rgba(109,40,217,.28);
}


/* Manualne sparovanie */

.payment-match-btn {
    height: 32px;
    min-width: 100px;
    padding: 0 13px;

    border-radius: 8px;

    background:
        linear-gradient(
            135deg,
            rgba(16,185,129,.88),
            rgba(5,150,105,.86)
        );

    border-color: rgba(52,211,153,.35);

    box-shadow:
        0 4px 13px rgba(5,150,105,.16);
}

.payment-match-btn:hover {
    transform: translateY(-1px);

    border-color: rgba(110,231,183,.65);

    box-shadow:
        0 7px 18px rgba(5,150,105,.25);
}

.payment-action-btn:active,
.payment-match-btn:active {
    transform: translateY(0);
}


/* Formular manualneho parovania */

.data-table td form {
    align-items: center !important;
}

.data-table td form select {
    height: 32px;

    padding: 0 32px 0 10px;

    border-radius: 8px;
    border: 1px solid rgba(255,255,255,.10);

    background-color: rgba(5,10,20,.55);

    color: #f1f5f9;
    font-family: inherit;
    font-size: 11px;

    outline: none;
}

.data-table td form select:focus {
    border-color: rgba(96,165,250,.55);
}


/* Horna lista akcii */

.panel-head > div:last-child {
    align-items: center;
}


/* ==========================================================
   PAYMENTS - COMPACT FILTERS
   ========================================================== */

.payments-filter-form {
    display: flex !important;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;

    margin-bottom: 18px;
}

.payments-filter-form input[type="text"] {
    width: 320px !important;
    max-width: 320px !important;
    min-width: 220px;

    height: 36px;
}

.payments-filter-form select {
    width: auto !important;
    min-width: 150px;
    max-width: 190px;

    height: 36px;
}

.payments-filter-form button {
    height: 36px;
    padding: 0 16px;

    border: 1px solid rgba(96,165,250,.35);
    border-radius: 9px;

    background: linear-gradient(
        135deg,
        rgba(37,99,235,.90),
        rgba(59,130,246,.78)
    );

    color: #fff;
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;

    cursor: pointer;
}

.payments-filter-form .filter-reset {
    display: inline-flex;
    align-items: center;

    height: 36px;
    padding: 0 14px;

    border-radius: 9px;
    border: 1px solid rgba(255,255,255,.10);

    background: rgba(255,255,255,.05);

    color: rgba(255,255,255,.75);
    text-decoration: none;
    font-size: 12px;
    font-weight: 600;
}

.payments-filter-form .filter-reset:hover {
    background: rgba(255,255,255,.09);
    color: #fff;
}


/* ==========================================================
   PAYMENTS - COMPACT MANUAL MATCH
   ========================================================== */

/* výber zákazníka */
.data-table td:last-child select {
    width: 220px !important;
    min-width: 220px !important;
    max-width: 220px !important;

    height: 32px !important;
    min-height: 32px !important;

    padding: 3px 30px 3px 10px !important;

    border-radius: 7px !important;

    font-size: 11px !important;
    line-height: 1 !important;
}

/* zelené Spárovať */
.data-table td:last-child button[type="submit"] {
    width: auto !important;
    min-width: 82px !important;

    height: 32px !important;
    min-height: 32px !important;

    padding: 0 11px !important;

    border-radius: 7px !important;

    font-size: 11px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
}

/* celý manuálny formulár kompaktnejší */
.data-table td:last-child form {
    display: flex !important;
    align-items: center !important;
    gap: 7px !important;
    flex-wrap: nowrap !important;
}


/* Spárovať - nižšie kompaktnejšie tlačidlo */

.data-table td:last-child button[type="submit"] {

    height: 26px !important;

    min-height: 26px !important;

    padding: 0 10px !important;

    border-radius: 6px !important;

    font-size: 10px !important;

    line-height: 24px !important;

}


/* Spárovať - ešte tenšie */
.data-table td:last-child button[type="submit"] {
    height: 23px !important;
    min-height: 23px !important;
    padding: 0 9px !important;
    line-height: 21px !important;
    font-size: 10px !important;
    border-radius: 6px !important;
}


/* Customers actions */

.customers-actions {
    display: flex;
    align-items: center;
    gap: 12px;
}

.customer-row-actions {
    display: flex;
    align-items: center;
    gap: 6px;
}

.customer-row-actions form {
    margin: 0;
}


/* ==========================================================
   CUSTOMERS HEADER - COMPACT FIX
   ========================================================== */

.customers-head {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 14px !important;
}

.customers-actions {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    flex-wrap: nowrap !important;
}

.customers-actions .search-form {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;

    margin: 0 !important;
}

.customers-actions .search-form input {
    width: 250px !important;
    min-width: 250px !important;
    max-width: 250px !important;

    height: 32px !important;

    padding: 0 10px !important;

    border-radius: 8px !important;

    font-size: 11px !important;
}

.customers-actions .search-form button {
    width: auto !important;
    min-width: 70px !important;
    height: 32px !important;

    padding: 0 12px !important;

    border-radius: 8px !important;

    font-size: 11px !important;
    line-height: 1 !important;
}


/* ==========================================================
   CUSTOMERS HEADER BUTTONS - STYLED
   ========================================================== */

/* Hľadať */

.customers-actions .search-form button {
    height: 32px !important;
    min-width: 76px !important;
    padding: 0 14px !important;

    border: 1px solid rgba(96,165,250,.40) !important;
    border-radius: 8px !important;

    background:
        linear-gradient(
            135deg,
            rgba(37,99,235,.94),
            rgba(14,165,233,.86)
        ) !important;

    color: #fff !important;

    font-size: 11px !important;
    font-weight: 700 !important;

    box-shadow:
        0 5px 14px rgba(37,99,235,.18) !important;

    cursor: pointer;

    transition:
        transform .15s ease,
        box-shadow .15s ease,
        border-color .15s ease !important;
}

.customers-actions .search-form button:hover {
    transform: translateY(-1px);

    border-color: rgba(147,197,253,.72) !important;

    box-shadow:
        0 8px 20px rgba(37,99,235,.28) !important;
}


/* Vyhľadávacie pole trochu elegantnejšie */

.customers-actions .search-form input {
    background:
        rgba(7, 12, 24, .62) !important;

    border:
        1px solid rgba(255,255,255,.10) !important;

    color: #f8fafc !important;

    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.025) !important;
}

.customers-actions .search-form input:focus {
    border-color: rgba(96,165,250,.52) !important;

    box-shadow:
        0 0 0 3px rgba(59,130,246,.08) !important;

    outline: none !important;
}


/* Presne zarovnane + v tlacidle Pridat zakaznika */

.add-customer-plus {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: 12px !important;
    height: 12px !important;

    margin: 0 !important;
    padding: 0 !important;

    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 12px !important;

    transform: translateY(-0.5px);
}


/* FINAL - Pridat zakaznika */

/* FINAL add customer alignment */


/* ===== ADD CUSTOMER BUTTON - HARD FINAL ===== */

.customers-actions .add-customer-btn {
    display: inline-flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: center !important;

    width: auto !important;
    min-width: 150px !important;
    max-width: none !important;

    height: 34px !important;
    min-height: 34px !important;

    padding: 0 14px !important;
    gap: 7px !important;

    white-space: nowrap !important;

    background: linear-gradient(135deg, #10b981, #059669) !important;
    border: 1px solid rgba(110,231,183,.45) !important;
    border-radius: 8px !important;

    color: #fff !important;
    text-decoration: none !important;

    box-sizing: border-box !important;
}

.customers-actions .add-customer-btn .add-customer-icon {
    display: inline-block !important;

    width: auto !important;
    min-width: 0 !important;
    height: auto !important;

    margin: 0 !important;
    padding: 0 !important;

    font-size: 13px !important;
    font-weight: 800 !important;
    line-height: 1 !important;

    flex: 0 0 auto !important;
}

.customers-actions .add-customer-btn .add-customer-label {
    display: inline-block !important;

    width: auto !important;
    min-width: max-content !important;

    margin: 0 !important;
    padding: 0 !important;

    font-size: 12px !important;
    font-weight: 700 !important;
    line-height: 1 !important;

    white-space: nowrap !important;
    flex: 0 0 auto !important;
}


.customers-actions .search-form {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
}

.customers-actions .search-form input {
    height: 34px !important;
    box-sizing: border-box !important;
}

.customers-actions .search-form button {
    height: 34px !important;
    min-height: 34px !important;
    padding: 0 18px !important;
    box-sizing: border-box !important;
}


/* ===== PRIDAT ZAKAZNIKA - COMPACT FINAL ===== */

.customers-actions .add-customer-btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;

    height: 28px !important;
    min-height: 28px !important;

    padding: 0 10px !important;
    gap: 5px !important;

    background: linear-gradient(
        135deg,
        #3b82f6,
        #6366f1
    ) !important;

    border: 1px solid rgba(129, 140, 248, .55) !important;
    border-radius: 7px !important;

    color: #fff !important;
    box-shadow: 0 3px 10px rgba(59, 130, 246, .18) !important;

    white-space: nowrap !important;
    flex: 0 0 auto !important;
}

.customers-actions .add-customer-btn:hover {
    transform: translateY(-1px) !important;
    filter: brightness(1.08) !important;
}

.customers-actions .add-customer-btn .add-customer-icon {
    display: inline !important;
    width: auto !important;
    height: auto !important;

    font-size: 11px !important;
    line-height: 1 !important;

    margin: 0 !important;
    padding: 0 !important;
}

.customers-actions .add-customer-btn .add-customer-label {
    display: inline !important;
    width: auto !important;
    min-width: 0 !important;

    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1 !important;

    margin: 0 !important;
    padding: 0 !important;

    white-space: nowrap !important;
}


/* PRIDAT - FINAL COMPACT */

a.add-customer-btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: auto !important;
    min-width: 0 !important;
    height: 26px !important;
    min-height: 26px !important;

    padding: 0 9px !important;
    gap: 4px !important;

    flex: 0 0 auto !important;
    white-space: nowrap !important;

    background: linear-gradient(135deg, #2563eb, #7c3aed) !important;
    border: 1px solid rgba(139, 92, 246, .55) !important;
    border-radius: 6px !important;

    color: #fff !important;
    text-decoration: none !important;
    box-shadow: 0 3px 9px rgba(37, 99, 235, .20) !important;
}

a.add-customer-btn .add-customer-icon {
    display: inline-block !important;
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;

    font-size: 10px !important;
    line-height: 1 !important;
}

a.add-customer-btn .add-customer-label {
    display: inline-block !important;
    width: auto !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;

    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    white-space: nowrap !important;
}


/* ===== PRIDAT ZAKAZNIKA - FINAL ===== */

.add-customer-btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex-direction: row !important;

    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;

    height: 26px !important;
    min-height: 26px !important;

    padding: 0 9px !important;
    gap: 4px !important;

    margin: 0 !important;

    white-space: nowrap !important;
    flex: 0 0 auto !important;

    background: linear-gradient(
        135deg,
        #2563eb 0%,
        #6d28d9 100%
    ) !important;

    border: 1px solid rgba(139, 92, 246, .65) !important;
    border-radius: 6px !important;

    color: #fff !important;
    text-decoration: none !important;

    box-shadow:
        0 3px 10px rgba(37, 99, 235, .20) !important;
}

.add-customer-btn:hover {
    background: linear-gradient(
        135deg,
        #3b82f6 0%,
        #7c3aed 100%
    ) !important;

    border-color: rgba(167, 139, 250, .85) !important;

    transform: translateY(-1px) !important;
}

.add-customer-btn .add-customer-icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: auto !important;
    height: auto !important;
    min-width: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    font-size: 10px !important;
    font-weight: 800 !important;
    line-height: 1 !important;

    color: #fff !important;
}

.add-customer-btn .add-customer-label {
    display: inline-block !important;

    width: auto !important;
    min-width: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1 !important;

    white-space: nowrap !important;
    color: #fff !important;
}


/* ===== CUSTOMER ADD BUTTON - ABSOLUTE FINAL ===== */

.customers-head .customers-actions a.btn.btn-primary.add-customer-btn {
    display: inline-flex !important;
    flex: 0 0 auto !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: center !important;

    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;

    height: 24px !important;
    min-height: 24px !important;

    padding: 0 8px !important;
    margin: 0 !important;
    gap: 5px !important;

    white-space: nowrap !important;

    background: linear-gradient(
        135deg,
        #0891b2,
        #2563eb
    ) !important;

    border: 1px solid rgba(56, 189, 248, .55) !important;
    border-radius: 6px !important;

    color: #fff !important;
    text-decoration: none !important;

    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1 !important;

    box-shadow: 0 3px 9px rgba(37, 99, 235, .18) !important;
}

.customers-head .customers-actions a.btn.btn-primary.add-customer-btn
.add-customer-icon {
    display: inline !important;
    width: auto !important;
    height: auto !important;
    min-width: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    font-size: 10px !important;
    line-height: 1 !important;
    color: #fff !important;
}

.customers-head .customers-actions a.btn.btn-primary.add-customer-btn
.add-customer-label {
    display: inline !important;
    width: auto !important;
    min-width: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    white-space: nowrap !important;

    font-size: 10px !important;
    line-height: 1 !important;
    color: #fff !important;
}


/* ===== CUSTOMERS BUTTONS - FINAL COMPACT ===== */

/* PRIDAŤ - červené */
.add-customer-btn,
.customers-head .add-customer-btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;

    height: 24px !important;
    min-height: 24px !important;

    padding: 0 8px !important;
    gap: 4px !important;

    flex: 0 0 auto !important;
    white-space: nowrap !important;

    background: linear-gradient(
        135deg,
        #ef4444,
        #b91c1c
    ) !important;

    border: 1px solid rgba(248,113,113,.55) !important;
    border-radius: 6px !important;

    color: #fff !important;
    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1 !important;

    box-shadow: 0 3px 8px rgba(185,28,28,.20) !important;
}

/* plus */
.add-customer-btn .add-customer-icon {
    display: inline !important;
    width: auto !important;
    height: auto !important;

    margin: 0 !important;
    padding: 0 !important;

    font-size: 10px !important;
    line-height: 1 !important;
}

/* text */
.add-customer-btn .add-customer-label {
    display: inline !important;
    width: auto !important;
    min-width: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    font-size: 10px !important;
    line-height: 1 !important;
    white-space: nowrap !important;
}

/* HĽADAŤ - menšie */
.customers-head .search-form button,
.customers-head .search-form .btn {
    width: auto !important;
    min-width: 0 !important;

    height: 24px !important;
    min-height: 24px !important;

    padding: 0 9px !important;

    border-radius: 6px !important;

    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
}

/* vyhľadávacie pole nech je zarovno */
.customers-head .search-form input {
    height: 24px !important;
    min-height: 24px !important;

    padding: 0 9px !important;

    font-size: 10px !important;
    border-radius: 6px !important;

    box-sizing: border-box !important;
}


/* ==========================================================
   CUSTOMERS FILTER - SAME STYLE AS PAYMENTS
   ========================================================== */

.customers-filter-form {
    margin-top: 0 !important;
    margin-bottom: 18px !important;
}

.customers-filter-form input[type="text"] {
    width: 320px !important;
    min-width: 320px !important;
    max-width: 320px !important;

    height: 36px !important;
    min-height: 36px !important;

    font-size: 12px !important;
}

.customers-filter-form button {
    width: auto !important;
    min-width: 0 !important;

    height: 36px !important;
    min-height: 36px !important;

    padding: 0 16px !important;

    font-size: 12px !important;
}

.customers-filter-form .filter-reset {
    height: 36px !important;
    min-height: 36px !important;
}


/* Pridať zostane malé červené vpravo hore */

.customers-head .add-customer-btn {
    height: 26px !important;
    min-height: 26px !important;

    padding: 0 9px !important;

    background: linear-gradient(
        135deg,
        #ef4444,
        #b91c1c
    ) !important;

    border: 1px solid rgba(248,113,113,.55) !important;
    border-radius: 6px !important;

    color: #fff !important;

    font-size: 10px !important;
    font-weight: 700 !important;

    box-shadow: 0 3px 8px rgba(185,28,28,.20) !important;
}


/* ===== CUSTOMER ADDRESS + PHONE LINKS ===== */

.customer-address-link,
.customer-phone-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;

    color: inherit;
    text-decoration: none;

    transition:
        color .15s ease,
        opacity .15s ease;
}

.customer-address-link:hover {
    color: #60a5fa;
}

.customer-phone-link:hover {
    color: #34d399;
}

.customer-link-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    width: 15px;

    opacity: .60;
    font-size: 11px;
    line-height: 1;
}

.customer-address-link:hover .customer-link-icon,
.customer-phone-link:hover .customer-link-icon {
    opacity: 1;
}


/* ==========================================================
   CUSTOMER STATUS
   ========================================================== */

.customer-status {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    height: 22px;
    padding: 0 8px;

    border-radius: 6px;

    font-size: 9px;
    font-weight: 800;
    line-height: 1;
    letter-spacing: .04em;

    white-space: nowrap;
}

.customer-status-active {
    color: #86efac;
    background: rgba(34,197,94,.10);
    border: 1px solid rgba(34,197,94,.26);
}

.customer-status-soon {
    color: #fde68a;
    background: rgba(245,158,11,.11);
    border: 1px solid rgba(245,158,11,.30);
}

.customer-status-expired {
    color: #fca5a5;
    background: rgba(239,68,68,.10);
    border: 1px solid rgba(239,68,68,.28);
}

.customer-status-unknown {
    color: #94a3b8;
    background: rgba(148,163,184,.08);
    border: 1px solid rgba(148,163,184,.18);
}


/* ==========================================================
   DASHBOARD - EXPIRING CUSTOMERS
   ========================================================== */

.dashboard-expiring {
    margin-top: 18px;
}

.expiry-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    min-width: 28px;
    height: 24px;
    padding: 0 8px;

    border-radius: 7px;

    background: rgba(245,158,11,.11);
    border: 1px solid rgba(245,158,11,.28);

    color: #fde68a;
    font-size: 11px;
    font-weight: 800;
}

.dashboard-expiry-empty {
    padding: 18px 0 4px;

    color: #86efac;
    font-size: 12px;
}


/* ==========================================================
   CUSTOMERS TABLE - COLUMN SPACING
   ========================================================== */

.customers-table th,
.customers-table td {
    padding-left: 10px !important;
    padding-right: 10px !important;
}

/* Meno */
.customers-table th:nth-child(1),
.customers-table td:nth-child(1) {
    min-width: 150px;
}

/* Adresa */
.customers-table th:nth-child(2),
.customers-table td:nth-child(2) {
    min-width: 310px;
}

/* Telefón */
.customers-table th:nth-child(3),
.customers-table td:nth-child(3) {
    min-width: 125px;
}

/* Služba */
.customers-table th:nth-child(4),
.customers-table td:nth-child(4) {
    min-width: 70px;
}

/* Platba */
.customers-table th:nth-child(5),
.customers-table td:nth-child(5) {
    min-width: 65px;
}

/* Expirácia */
.customers-table th:nth-child(6),
.customers-table td:nth-child(6) {
    min-width: 95px;
}

/* Posledná platba */
.customers-table th:nth-child(7),
.customers-table td:nth-child(7) {
    min-width: 110px;
}

/* Stav */
.customers-table th:nth-child(8),
.customers-table td:nth-child(8) {
    min-width: 105px;
}

/* Akcie */
.customers-table th:nth-child(9),
.customers-table td:nth-child(9) {
    min-width: 125px;
}

/* trochu väčší odstup medzi platbou a dátumami */
.customers-table th:nth-child(6),
.customers-table td:nth-child(6),
.customers-table th:nth-child(7),
.customers-table td:nth-child(7),
.customers-table th:nth-child(8),
.customers-table td:nth-child(8) {
    padding-left: 15px !important;
    padding-right: 15px !important;
}


/* ==========================================================
   CUSTOMERS TABLE - FINAL COLUMN LAYOUT
   ========================================================== */

.customers-table {
    table-layout: auto !important;
    width: 100% !important;
}

/* adresa už nebude zaberať 42 % tabuľky */
.customers-table .address {
    width: 28% !important;
}

/* trochu viac vzduchu medzi stĺpcami */
.customers-table th,
.customers-table td {
    padding-left: 13px !important;
    padding-right: 13px !important;
}

/* meno */
.customers-table th:nth-child(1),
.customers-table td:nth-child(1) {
    width: 15% !important;
    min-width: 145px !important;
}

/* adresa */
.customers-table th:nth-child(2),
.customers-table td:nth-child(2) {
    width: 28% !important;
    min-width: 260px !important;
}

/* telefón */
.customers-table th:nth-child(3),
.customers-table td:nth-child(3) {
    width: 13% !important;
    min-width: 135px !important;
}

/* služba */
.customers-table th:nth-child(4),
.customers-table td:nth-child(4) {
    min-width: 75px !important;
}

/* platba */
.customers-table th:nth-child(5),
.customers-table td:nth-child(5) {
    min-width: 75px !important;
}

/* expirácia */
.customers-table th:nth-child(6),
.customers-table td:nth-child(6) {
    min-width: 115px !important;
    padding-left: 18px !important;
}

/* posledná platba */
.customers-table th:nth-child(7),
.customers-table td:nth-child(7) {
    min-width: 125px !important;
    padding-left: 18px !important;
}

/* stav */
.customers-table th:nth-child(8),
.customers-table td:nth-child(8) {
    min-width: 115px !important;
    padding-left: 18px !important;
}

/* akcie */
.customers-table th:nth-child(9),
.customers-table td:nth-child(9) {
    min-width: 135px !important;
}


/* ===== DASHBOARD - MONTHLY PAYMENTS ===== */

.monthly-payment-value {
    white-space: nowrap;
}

.stat-subvalue {
    margin-top: 5px;
    color: #7f8b9d;
    font-size: 10px;
    font-weight: 600;
}


/* ===== CUSTOMER ACTIVE / DISABLED ===== */

.customer-status-disabled {
    color: #cbd5e1;
    background: rgba(100,116,139,.12);
    border: 1px solid rgba(148,163,184,.22);
}

.customer-disable-btn {
    background: rgba(245,158,11,.12) !important;
    border: 1px solid rgba(245,158,11,.35) !important;
    color: #fbbf24 !important;
}

.customer-disable-btn:hover {
    background: rgba(245,158,11,.20) !important;
}

.customer-enable-btn {
    background: rgba(34,197,94,.12) !important;
    border: 1px solid rgba(34,197,94,.35) !important;
    color: #86efac !important;
}

.customer-enable-btn:hover {
    background: rgba(34,197,94,.20) !important;
}

/* deaktivovany riadok jemne utlmit */
.customers-table tr:has(.customer-status-disabled) {
    opacity: .62;
}


/* ==========================================================
   DASHBOARD STATS - 5 DLÁŽDIC VEDĽA SEBA
   ========================================================== */

.stats-grid {
    display: grid !important;
    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;

    gap: 12px !important;

    width: 100% !important;
}

.stats-grid .stat-card {
    min-width: 0 !important;

    min-height: 92px !important;
    height: 92px !important;

    padding: 16px 18px !important;

    border-radius: 16px !important;
}

.stats-grid .stat-label {
    font-size: 9px !important;
    margin-bottom: 10px !important;
}

.stats-grid .stat-value {
    font-size: 30px !important;
    line-height: 1 !important;
}

.stats-grid .stat-subvalue {
    margin-top: 5px !important;
    font-size: 9px !important;
}


/* menšie obrazovky */

@media (max-width: 1300px) {
    .stats-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    }
}

@media (max-width: 850px) {
    .stats-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
}


/* ==========================================================
   CUSTOMER STATUS - FARBY
   ========================================================== */

/* DEAKTIVOVANÝ - žltý */
.customer-status-disabled,
.customer-status-inactive {
    background: rgba(245, 158, 11, .14) !important;
    border: 1px solid rgba(245, 158, 11, .38) !important;
    color: #fbbf24 !important;

    box-shadow:
        0 0 10px rgba(245, 158, 11, .08) !important;
}

/* NEZNÁMY - modrý */
.customer-status-unknown {
    background: rgba(59, 130, 246, .14) !important;
    border: 1px solid rgba(59, 130, 246, .38) !important;
    color: #60a5fa !important;

    box-shadow:
        0 0 10px rgba(59, 130, 246, .08) !important;
}


/* DEAKTIVOVANÝ - fialový */
.customer-status-disabled {
    background: rgba(168, 85, 247, .16) !important;
    border: 1px solid rgba(168, 85, 247, .45) !important;
    color: #c084fc !important;

    box-shadow:
        0 0 10px rgba(168, 85, 247, .10) !important;
}

/* ==========================================================
   CUSTOMER DETAIL - JEDNOTNE AKCNE TLACIDLA
   ========================================================== */

/* spoločná veľkosť */
.customer-detail .btn,
.customer-detail button,
.customer-detail input[type="submit"] {
    box-sizing: border-box !important;

    height: 28px !important;
    min-height: 28px !important;

    padding: 0 11px !important;

    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    border-radius: 7px !important;

    font-size: 10px !important;
    font-weight: 750 !important;
    line-height: 1 !important;

    white-space: nowrap !important;

    transition:
        background .15s ease,
        border-color .15s ease,
        transform .15s ease,
        box-shadow .15s ease !important;
}


/* ULOŽIŤ / ULOŽIŤ PROFIL */
.customer-detail button[type="submit"]:not(.btn-danger):not(.btn-success),
.customer-detail .btn-primary {
    color: #fff !important;

    background: linear-gradient(
        135deg,
        #2563eb,
        #3b82f6
    ) !important;

    border: 1px solid rgba(96,165,250,.55) !important;

    box-shadow:
        0 3px 10px rgba(37,99,235,.20) !important;
}


/* PRIDAŤ */
.customer-detail .btn-success,
.customer-detail button[class*="add"],
.customer-detail .host-add-form button,
.customer-detail .bank-account-add-form button {
    color: #ecfdf5 !important;

    background: linear-gradient(
        135deg,
        #059669,
        #10b981
    ) !important;

    border: 1px solid rgba(52,211,153,.50) !important;

    box-shadow:
        0 3px 10px rgba(16,185,129,.16) !important;
}


/* ODSTRÁNIŤ / X */
.customer-detail .btn-danger,
.customer-detail button[class*="delete"],
.customer-detail button[class*="remove"] {
    color: #fff1f2 !important;

    background: linear-gradient(
        135deg,
        #dc2626,
        #ef4444
    ) !important;

    border: 1px solid rgba(248,113,113,.50) !important;

    box-shadow:
        0 3px 10px rgba(239,68,68,.15) !important;
}


/* malé X nech zostane štvorcové */
.customer-detail .btn-danger:has(span:only-child),
.customer-detail .host-delete-btn {
    width: 28px !important;
    min-width: 28px !important;
    padding: 0 !important;
}


/* hover */
.customer-detail .btn:hover,
.customer-detail button:hover {
    transform: translateY(-1px) !important;
    filter: brightness(1.10);
}


/* ==========================================================
   CUSTOMER DETAIL BUTTONS - FINAL REAL SELECTORS
   ========================================================== */

/* VŠETKY tlačidlá v detaile zákazníka */
.save-bar .btn,
.access-row .btn,
.add-host .btn,
.bank-row .btn,
.add-bank .btn,
.bank-meta .btn {
    box-sizing: border-box !important;

    height: 28px !important;
    min-height: 28px !important;

    padding: 0 11px !important;

    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    border-radius: 7px !important;

    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1 !important;

    white-space: nowrap !important;

    transition:
        transform .15s ease,
        filter .15s ease,
        box-shadow .15s ease !important;
}


/* ULOŽIŤ / ULOŽIŤ PROFIL - MODRÉ */
.save-bar .btn-primary,
.access-row .btn-primary,
.bank-row .btn-primary {
    color: #fff !important;

    background: linear-gradient(
        135deg,
        #2563eb,
        #3b82f6
    ) !important;

    border: 1px solid rgba(96,165,250,.55) !important;

    box-shadow:
        0 3px 9px rgba(37,99,235,.20) !important;
}


/* PRIDAŤ / PRIDAŤ IBAN - ZELENÉ */
.add-host .btn-good,
.add-bank .btn-good,
.add-bank .btn,
form[action*="/hosts/add"] .btn,
form[action*="/bank-accounts/add"] .btn {
    color: #ecfdf5 !important;

    background: linear-gradient(
        135deg,
        #059669,
        #10b981
    ) !important;

    border: 1px solid rgba(52,211,153,.50) !important;

    box-shadow:
        0 3px 9px rgba(16,185,129,.18) !important;
}


/* ODSTRÁNIŤ / X - ČERVENÉ */
.bank-meta .btn-danger,
.access-row .btn-danger,
form[action*="/delete"] .btn-danger {
    color: #fff1f2 !important;

    background: linear-gradient(
        135deg,
        #dc2626,
        #ef4444
    ) !important;

    border: 1px solid rgba(248,113,113,.50) !important;

    box-shadow:
        0 3px 9px rgba(239,68,68,.16) !important;
}


/* malé X nech je štvorcové */
.access-row .btn-danger.btn-small {
    width: 28px !important;
    min-width: 28px !important;
    padding: 0 !important;
}


/* všetky hover */
.save-bar .btn:hover,
.access-row .btn:hover,
.add-host .btn:hover,
.bank-row .btn:hover,
.add-bank .btn:hover,
.bank-meta .btn:hover {
    transform: translateY(-1px) !important;
    filter: brightness(1.08) !important;
}


/* ==========================================================
   CUSTOMERS TABLE - ZMAZAT KOMPAKTNE
   ========================================================== */

.customers-table .customer-row-actions .btn-danger {
    width: auto !important;
    min-width: 0 !important;

    height: 26px !important;
    min-height: 26px !important;

    padding: 0 10px !important;

    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    border-radius: 7px !important;

    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1 !important;

    color: #fecaca !important;

    background: rgba(239, 68, 68, .10) !important;
    border: 1px solid rgba(248, 113, 113, .32) !important;

    box-shadow: none !important;
    white-space: nowrap !important;
}

.customers-table .customer-row-actions .btn-danger:hover {
    color: #fff !important;

    background: rgba(239, 68, 68, .20) !important;
    border-color: rgba(248, 113, 113, .55) !important;

    box-shadow: none !important;
    transform: none !important;
}


/* ===== CUSTOMERS - ZMAZAT EFEKT ===== */

.customers-table .customer-row-actions .btn-danger {
    background: rgba(239, 68, 68, .10) !important;
    border: 1px solid rgba(248, 113, 113, .32) !important;
    color: #fecaca !important;

    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.06),
        0 2px 7px rgba(239,68,68,.10) !important;

    transition:
        background .15s ease,
        border-color .15s ease,
        color .15s ease,
        box-shadow .15s ease,
        transform .15s ease !important;
}

.customers-table .customer-row-actions .btn-danger:hover {
    background: rgba(239, 68, 68, .18) !important;
    border-color: rgba(248, 113, 113, .55) !important;
    color: #fff !important;

    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.08),
        0 4px 12px rgba(239,68,68,.20) !important;

    transform: translateY(-1px) !important;
}

.customers-table .customer-row-actions .btn-danger:active {
    transform: translateY(0) !important;

    box-shadow:
        inset 0 1px 2px rgba(0,0,0,.15),
        0 1px 4px rgba(239,68,68,.12) !important;
}


/* ===== NEW CUSTOMER - VS GENERATOR ===== */

.vs-generate-row {
    display: flex;
    align-items: center;
    gap: 6px;
}

.vs-generate-row input {
    flex: 1 1 auto;
    min-width: 0;
}

.vs-generate-btn {
    height: 28px;
    min-height: 28px;

    padding: 0 9px;

    border-radius: 7px;
    border: 1px solid rgba(96,165,250,.28);

    background: rgba(59,130,246,.08);
    color: #93c5fd;

    font-size: 9px;
    font-weight: 700;
    line-height: 1;

    white-space: nowrap;
    cursor: pointer;

    transition:
        background .15s ease,
        border-color .15s ease,
        color .15s ease;
}

.vs-generate-btn:hover {
    background: rgba(59,130,246,.15);
    border-color: rgba(96,165,250,.45);
    color: #dbeafe;
}

.vs-generate-btn:disabled {
    opacity: .55;
    cursor: wait;
}


/* ==========================================================
   SATIX SIDEBAR - FINAL
   ========================================================== */

.sidebar {
    padding: 18px 16px !important;
}


/* BRAND */

.brand {
    gap: 11px !important;
    padding: 3px 3px 18px !important;
}

.brand-mark {
    width: 38px !important;
    height: 38px !important;

    display: grid !important;
    place-items: center !important;

    border-radius: 11px !important;

    background:
        linear-gradient(
            135deg,
            rgba(37,99,235,.98),
            rgba(124,58,237,.95)
        ) !important;

    border: 1px solid rgba(147,197,253,.34) !important;

    color: #fff !important;

    font-size: 18px !important;
    font-weight: 900 !important;
    line-height: 1 !important;

    box-shadow:
        0 5px 16px rgba(59,130,246,.20),
        inset 0 1px 0 rgba(255,255,255,.16) !important;
}

.brand-copy {
    min-width: 0;
}

.brand-name {
    font-size: 16px !important;
    font-weight: 850 !important;
    line-height: 1 !important;

    letter-spacing: .04em !important;

    color: #f8fafc !important;
}

.brand-sub {
    margin-top: 5px !important;

    color: #7f8da0 !important;

    font-size: 8px !important;
    font-weight: 700 !important;

    letter-spacing: .22em !important;
    text-transform: uppercase !important;
}


/* NAV */

.nav {
    gap: 7px !important;
    margin-top: 18px !important;
}

.nav-item {
    position: relative;

    display: flex !important;
    align-items: center !important;

    gap: 10px !important;

    height: 38px !important;
    min-height: 38px !important;

    padding: 0 10px !important;

    border-radius: 10px !important;
    border: 1px solid transparent !important;

    color: #b8c2cf !important;

    font-size: 12px !important;
    font-weight: 650 !important;

    text-decoration: none !important;

    transition:
        background .16s ease,
        border-color .16s ease,
        color .16s ease,
        transform .16s ease,
        box-shadow .16s ease !important;
}

.nav-icon {
    width: 24px !important;
    height: 24px !important;

    flex: 0 0 24px !important;

    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    border-radius: 7px !important;

    background: rgba(255,255,255,.045) !important;
    border: 1px solid rgba(255,255,255,.055) !important;

    color: #9ba8b8 !important;

    font-size: 11px !important;
    line-height: 1 !important;
}

.nav-label {
    line-height: 1 !important;
}


/* HOVER */

.nav-item:hover {
    transform: translateX(2px) !important;

    background: rgba(255,255,255,.055) !important;
    border-color: rgba(255,255,255,.075) !important;

    color: #f8fafc !important;
}

.nav-item:hover .nav-icon {
    color: #dbeafe !important;

    background: rgba(59,130,246,.10) !important;
    border-color: rgba(96,165,250,.20) !important;
}


/* ACTIVE PAGE */

.nav-item.active {
    color: #fff !important;

    background:
        linear-gradient(
            90deg,
            rgba(37,99,235,.16),
            rgba(124,58,237,.08)
        ) !important;

    border-color: rgba(96,165,250,.20) !important;

    box-shadow:
        inset 3px 0 0 #60a5fa,
        0 4px 14px rgba(15,23,42,.12) !important;
}

.nav-item.active .nav-icon {
    color: #fff !important;

    background:
        linear-gradient(
            135deg,
            rgba(37,99,235,.80),
            rgba(124,58,237,.72)
        ) !important;

    border-color: rgba(147,197,253,.30) !important;

    box-shadow:
        0 3px 9px rgba(59,130,246,.16) !important;
}


/* USER FOOTER */

.sidebar-user {
    padding-top: 14px !important;
}

.sidebar-user .user-name {
    font-size: 12px !important;
}

.sidebar-user .user-role {
    font-size: 9px !important;
    letter-spacing: .08em !important;
}

.logout {
    margin-top: 10px !important;

    display: inline-flex !important;
    align-items: center !important;

    height: 26px !important;
    padding: 0 9px !important;

    border-radius: 7px !important;

    background: rgba(239,68,68,.07) !important;
    border: 1px solid rgba(248,113,113,.16) !important;

    color: #fca5a5 !important;

    font-size: 10px !important;
    font-weight: 700 !important;

    transition: .15s ease !important;
}

.logout:hover {
    background: rgba(239,68,68,.14) !important;
    border-color: rgba(248,113,113,.30) !important;
    color: #fff !important;
}


/* ==========================================================
   SIDEBAR USER CARD - FINAL
   ========================================================== */

.sidebar-user {
    margin-top: auto !important;
    padding-top: 14px !important;

    border-top: 1px solid rgba(255,255,255,.09) !important;
}

.sidebar-user-card {
    display: flex;
    align-items: center;

    gap: 9px;

    padding: 8px 9px;

    border-radius: 10px;

    background: rgba(255,255,255,.025);
    border: 1px solid rgba(255,255,255,.055);
}

.sidebar-avatar {
    width: 30px;
    height: 30px;

    flex: 0 0 30px;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    border-radius: 9px;

    background:
        linear-gradient(
            135deg,
            rgba(37,99,235,.86),
            rgba(124,58,237,.78)
        );

    border: 1px solid rgba(147,197,253,.24);

    color: #fff;

    font-size: 12px;
    font-weight: 900;

    box-shadow:
        0 4px 12px rgba(59,130,246,.14),
        inset 0 1px 0 rgba(255,255,255,.12);
}

.sidebar-user-info {
    min-width: 0;
}

.sidebar-user .user-name {
    color: #f8fafc !important;

    font-size: 11px !important;
    font-weight: 750 !important;
    line-height: 1.1 !important;

    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.user-role-badge {
    display: inline-flex;
    align-items: center;

    margin-top: 5px;
    padding: 2px 6px;

    border-radius: 5px;

    background: rgba(96,165,250,.08);
    border: 1px solid rgba(96,165,250,.14);

    color: #93c5fd;

    font-size: 7px;
    font-weight: 800;
    line-height: 1;

    letter-spacing: .10em;
    text-transform: uppercase;
}


/* logout */

.sidebar-user .logout {
    width: 100% !important;

    margin-top: 7px !important;

    display: flex !important;
    align-items: center !important;
    justify-content: center !important;

    gap: 6px !important;

    height: 28px !important;
    min-height: 28px !important;

    padding: 0 9px !important;

    border-radius: 8px !important;

    background: rgba(239,68,68,.07) !important;
    border: 1px solid rgba(248,113,113,.18) !important;

    color: #fca5a5 !important;

    font-size: 9px !important;
    font-weight: 750 !important;

    text-decoration: none !important;

    box-sizing: border-box !important;

    transition:
        background .15s ease,
        border-color .15s ease,
        color .15s ease,
        transform .15s ease,
        box-shadow .15s ease !important;
}

.sidebar-user .logout:hover {
    background: rgba(239,68,68,.14) !important;
    border-color: rgba(248,113,113,.34) !important;

    color: #fff !important;

    transform: translateY(-1px);

    box-shadow:
        0 4px 12px rgba(239,68,68,.12) !important;
}

.logout-icon {
    font-size: 11px;
    line-height: 1;
    opacity: .85;
}


/* ==========================================================
   SATIX 4K DAILY BACKGROUND
   ========================================================== */

:root {
    --satix-daily-background:
        url("/static/img/backgrounds/bg-01.jpg");
}

html {
    min-height: 100%;
    background: #040711;
}

body {
    min-height: 100vh;

    background-image:
        linear-gradient(
            135deg,
            rgba(3,8,18,.78) 0%,
            rgba(5,12,25,.64) 38%,
            rgba(20,10,32,.62) 72%,
            rgba(4,7,15,.78) 100%
        ),
        var(--satix-daily-background) !important;

    background-position:
        center center,
        center center !important;

    background-repeat:
        no-repeat,
        no-repeat !important;

    background-size:
        cover,
        cover !important;

    background-attachment:
        fixed,
        fixed !important;
}

/* menej farebnych ambientov - obrazok nech je vidiet */
.ambient-a,
.ambient-b,
.ambient-c {
    opacity: .12 !important;
}

/* glass panel nad fotkou */
.glass {
    background:
        linear-gradient(
            145deg,
            rgba(13,23,38,.72),
            rgba(13,11,26,.66)
        ) !important;

    backdrop-filter:
        blur(20px)
        saturate(125%) !important;

    -webkit-backdrop-filter:
        blur(20px)
        saturate(125%) !important;

    border:
        1px solid rgba(255,255,255,.085) !important;

    box-shadow:
        0 18px 45px rgba(0,0,0,.28),
        inset 0 1px 0 rgba(255,255,255,.035) !important;
}

.sidebar.glass {
    background:
        linear-gradient(
            180deg,
            rgba(11,20,32,.82),
            rgba(10,17,28,.78)
        ) !important;
}


/* ==========================================================
   SATIX TRUE GLASS UI - FINAL
   ========================================================== */

/* univerzalny glass bez modreho nadychu */
.glass,
.panel,
.stat-card,
.topbar,
.sidebar {
    background:
        linear-gradient(
            145deg,
            rgba(18,18,22,.56),
            rgba(10,10,14,.46)
        ) !important;

    border:
        1px solid rgba(255,255,255,.10) !important;

    backdrop-filter:
        blur(24px)
        saturate(115%) !important;

    -webkit-backdrop-filter:
        blur(24px)
        saturate(115%) !important;

    box-shadow:
        0 18px 45px rgba(0,0,0,.24),
        inset 0 1px 0 rgba(255,255,255,.055) !important;
}


/* sidebar trosku tmavsi, stale glass */
.sidebar.glass {
    background:
        linear-gradient(
            180deg,
            rgba(16,16,20,.64),
            rgba(8,8,12,.54)
        ) !important;
}


/* topbar */
.topbar.glass {
    background:
        linear-gradient(
            145deg,
            rgba(20,20,24,.58),
            rgba(10,10,14,.48)
        ) !important;
}


/* panely a karty */
.panel.glass,
.stat-card.glass {
    background:
        linear-gradient(
            145deg,
            rgba(20,20,24,.52),
            rgba(10,10,14,.42)
        ) !important;
}


/* tabulky - ziadna modra plocha */
.data-table {
    background: transparent !important;
}

.data-table thead,
.data-table tbody,
.data-table tr,
.data-table th,
.data-table td {
    background: transparent !important;
}

.data-table th {
    border-bottom:
        1px solid rgba(255,255,255,.09) !important;
}

.data-table td {
    border-bottom:
        1px solid rgba(255,255,255,.055) !important;
}


/* hover riadku iba jemny glass */
.data-table tbody tr:hover {
    background:
        rgba(255,255,255,.035) !important;

    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.025) !important;
}


/* formularove prvky neutrálne glass */
input,
select,
textarea {
    background:
        rgba(8,8,12,.48) !important;

    border:
        1px solid rgba(255,255,255,.10) !important;

    backdrop-filter:
        blur(12px) !important;

    -webkit-backdrop-filter:
        blur(12px) !important;

    color: #f8fafc !important;
}

input:focus,
select:focus,
textarea:focus {
    background:
        rgba(12,12,16,.58) !important;

    border-color:
        rgba(255,255,255,.22) !important;

    box-shadow:
        0 0 0 3px rgba(255,255,255,.035) !important;

    outline: none !important;
}


/* ambienty skoro vypneme - nech je hlavna fotka */
.ambient-a,
.ambient-b,
.ambient-c {
    opacity: .05 !important;
}


/* fotka ostava, len neutralny tmavy overlay */
body {
    background-image:
        linear-gradient(
            135deg,
            rgba(0,0,0,.62),
            rgba(5,5,8,.50),
            rgba(0,0,0,.62)
        ),
        var(--satix-daily-background) !important;
}


/* ==========================================================
   SATIX GLASS - VIAC PRIEHLADNOSTI
   FARBY NEMENIT
   ========================================================== */

.glass,
.panel,
.stat-card,
.topbar,
.sidebar {
    background:
        linear-gradient(
            145deg,
            rgba(18,18,22,.43),
            rgba(10,10,14,.34)
        ) !important;
}


/* sidebar nech je o malinko silnejsi kvoli menu */
.sidebar.glass {
    background:
        linear-gradient(
            180deg,
            rgba(16,16,20,.49),
            rgba(8,8,12,.40)
        ) !important;
}


/* topbar */
.topbar.glass {
    background:
        linear-gradient(
            145deg,
            rgba(20,20,24,.44),
            rgba(10,10,14,.36)
        ) !important;
}


/* obsahove panely + dashboard dlazdice */
.panel.glass,
.stat-card.glass {
    background:
        linear-gradient(
            145deg,
            rgba(20,20,24,.39),
            rgba(10,10,14,.30)
        ) !important;
}


/* inputy len trochu priehladnejsie */
input,
select,
textarea {
    background:
        rgba(8,8,12,.38) !important;
}

input:focus,
select:focus,
textarea:focus {
    background:
        rgba(12,12,16,.46) !important;
}


/* ==========================================================
   SATIX GLASS - EXTRA PRIEHLADNY
   iba opacity, farby ostavaju
   ========================================================== */

.glass,
.panel,
.stat-card,
.topbar,
.sidebar {
    background:
        linear-gradient(
            145deg,
            rgba(18,18,22,.30),
            rgba(10,10,14,.22)
        ) !important;
}


/* sidebar */
.sidebar.glass {
    background:
        linear-gradient(
            180deg,
            rgba(16,16,20,.35),
            rgba(8,8,12,.27)
        ) !important;
}


/* topbar */
.topbar.glass {
    background:
        linear-gradient(
            145deg,
            rgba(20,20,24,.30),
            rgba(10,10,14,.23)
        ) !important;
}


/* panely a dashboard dlazdice */
.panel.glass,
.stat-card.glass {
    background:
        linear-gradient(
            145deg,
            rgba(20,20,24,.27),
            rgba(10,10,14,.19)
        ) !important;
}


/* inputy */
input,
select,
textarea {
    background:
        rgba(8,8,12,.27) !important;
}

input:focus,
select:focus,
textarea:focus {
    background:
        rgba(12,12,16,.34) !important;
}


/* ==========================================================
   SATIX GLASS - ULTRA TRANSPARENT
   iba priehladnost
   ========================================================== */

.glass,
.panel,
.stat-card,
.topbar,
.sidebar {
    background:
        linear-gradient(
            145deg,
            rgba(18,18,22,.20),
            rgba(10,10,14,.14)
        ) !important;
}

/* sidebar */
.sidebar.glass {
    background:
        linear-gradient(
            180deg,
            rgba(16,16,20,.25),
            rgba(8,8,12,.18)
        ) !important;
}

/* topbar */
.topbar.glass {
    background:
        linear-gradient(
            145deg,
            rgba(20,20,24,.20),
            rgba(10,10,14,.14)
        ) !important;
}

/* panely + dashboard dlazdice */
.panel.glass,
.stat-card.glass {
    background:
        linear-gradient(
            145deg,
            rgba(20,20,24,.18),
            rgba(10,10,14,.12)
        ) !important;
}

/* inputy */
input,
select,
textarea {
    background:
        rgba(8,8,12,.18) !important;
}

input:focus,
select:focus,
textarea:focus {
    background:
        rgba(12,12,16,.25) !important;
}



/* ==========================================================
   CUSTOMER HOSTS - OSCAM COMPACT FINAL
   ========================================================== */

.access-row.access-row-compact {
    display: flex !important;
    flex-direction: row !important;
    align-items: flex-end !important;
    justify-content: flex-start !important;

    gap: 8px !important;
    padding: 8px 0 !important;
}

.access-row.access-row-compact .access-form.access-form-compact {
    display: grid !important;

    grid-template-columns:
        220px
        150px
        220px
        82px !important;

    gap: 8px !important;
    align-items: flex-end !important;

    flex: 0 0 auto !important;

    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
}

.access-row.access-row-compact .access-form-compact .field {
    width: auto !important;
    min-width: 0 !important;
    margin: 0 !important;
}

.access-row.access-row-compact .access-host {
    width: 220px !important;
}

.access-row.access-row-compact .access-password {
    width: 220px !important;
}

.access-row.access-row-compact .access-oscam {
    width: 150px !important;
    padding: 0 0 5px 0 !important;
}

.access-row.access-row-compact .access-host input,
.access-row.access-row-compact .access-password input {
    width: 100% !important;
    min-width: 0 !important;
    height: 34px !important;
    box-sizing: border-box !important;
}

.access-row.access-row-compact .password-field {
    width: 100% !important;
}

.access-row.access-row-compact .access-save,
.access-row.access-row-compact .access-save-compact {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: 82px !important;
    min-width: 82px !important;
    max-width: 82px !important;

    height: 34px !important;

    grid-column: 4 !important;
    grid-row: 1 !important;

    margin: 0 !important;
    padding: 0 8px !important;
}

.access-row.access-row-compact .access-delete-form {
    display: block !important;

    flex: 0 0 34px !important;

    width: 34px !important;
    min-width: 34px !important;

    margin: 0 !important;
}

.access-row.access-row-compact .access-delete {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: 34px !important;
    min-width: 34px !important;
    max-width: 34px !important;

    height: 34px !important;

    margin: 0 !important;
    padding: 0 !important;
}


/* OSCam stav v jednom riadku */

.access-row.access-row-compact .oscam-line {
    display: flex !important;
    flex-direction: row !important;

    align-items: center !important;
    justify-content: flex-start !important;

    gap: 7px !important;

    min-height: 34px !important;

    white-space: nowrap !important;
}

.access-row.access-row-compact .oscam-line strong {
    display: inline-flex !important;
    align-items: center !important;

    gap: 5px !important;

    font-size: 14px !important;
}

.access-row.access-row-compact .oscam-dot {
    display: inline-block !important;

    width: 10px !important;
    height: 10px !important;

    flex: 0 0 10px !important;

    border-radius: 50% !important;

    background: #20d34a !important;

    box-shadow:
        0 0 6px rgba(32, 211, 74, .70) !important;
}

.access-row.access-row-compact .oscam-match {
    font-size: 12px !important;
    font-weight: 700 !important;
    opacity: .85 !important;
}

.access-row.access-row-compact .oscam-mismatch {
    font-size: 12px !important;
    font-weight: 700 !important;
}


/*
 * Pôvodný responsive layout menil access-form na jeden stĺpec.
 * Pre OSCam compact riadok ho NEPOUŽIJEME.
 */

@media (max-width: 1100px) {

    .access-row.access-row-compact {
        flex-direction: row !important;
        align-items: flex-end !important;
    }

    .access-row.access-row-compact .access-form.access-form-compact {
        grid-template-columns:
            200px
            140px
            200px
            78px !important;
    }

}


/* ==========================================================
   OSCAM / HOSTNAME FINAL LAYOUT
   ========================================================== */

/* Expiracia hore */
.expiry-field {
    display: grid !important;
    grid-template-columns: 185px auto !important;
    column-gap: 12px !important;
    align-items: end !important;
    justify-content: start !important;
}

.expiry-field > label {
    grid-column: 1 / -1 !important;
}

.expiry-field > input {
    grid-column: 1 !important;
    width: 185px !important;
    max-width: 185px !important;
}

.expiry-oscam-status {
    grid-column: 2 !important;
    align-self: center !important;
    padding-bottom: 2px !important;
}

.expiry-state {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;

    height: 34px !important;

    padding: 0 11px !important;

    border: 1px solid rgba(255,255,255,.10) !important;
    border-radius: 9px !important;

    background: rgba(0,0,0,.12) !important;

    font-size: 12px !important;
    white-space: nowrap !important;
}

.expiry-state-dot {
    display: inline-block !important;
    width: 9px !important;
    height: 9px !important;
    border-radius: 50% !important;
}

.expiry-state-ok .expiry-state-dot {
    background: #20d34a !important;
    box-shadow: 0 0 6px rgba(32,211,74,.65) !important;
}


/* Host riadky */
.access-row.access-row-compact .access-form.access-form-compact {
    display: grid !important;

    grid-template-columns:
        130px
        220px
        220px
        82px !important;

    grid-template-areas:
        "oscam host password save" !important;

    gap: 8px !important;
    align-items: end !important;

    width: auto !important;
    flex: 0 0 auto !important;
}

.access-row.access-row-compact .access-oscam {
    grid-area: oscam !important;

    width: 130px !important;
    padding: 0 0 5px 0 !important;
}

.access-row.access-row-compact .access-host {
    grid-area: host !important;
    width: 220px !important;
}

.access-row.access-row-compact .access-password {
    grid-area: password !important;
    width: 220px !important;
}

.access-row.access-row-compact .access-save,
.access-row.access-row-compact .access-save-compact {
    grid-area: save !important;

    width: 82px !important;
    min-width: 82px !important;
    max-width: 82px !important;
}

.access-row.access-row-compact .oscam-line {
    min-height: 34px !important;
}

.access-row.access-row-compact .oscam-line strong {
    font-size: 14px !important;
}


/* Expiracia + kontrola OSCam */
.expiry-row {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
}

.expiry-row input[type="date"] {
    width: 165px !important;
    min-width: 165px !important;
    max-width: 165px !important;
}

.expiry-ok {
    color: #55e879 !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    white-space: nowrap !important;
}

.expiry-bad {
    color: #ffb347 !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    white-space: nowrap !important;
}


/* ==========================================================
   HOST ACCESS - viac miesta pre OSCam konflikt
   ========================================================== */

.access-row.access-row-compact .access-form.access-form-compact {
    grid-template-columns:
        130px
        220px
        220px
        82px !important;

    gap: 10px !important;
}

/* OSCam stĺpec */
.access-form-compact .access-oscam {
    width: 130px !important;
    min-width: 130px !important;
}

/* Hostname */
.access-form-compact .access-host {
    width: 220px !important;
    min-width: 220px !important;
}

/* Password */
.access-form-compact .access-password {
    width: 220px !important;
    min-width: 220px !important;
}

/* Konflikt nesmie vliezť do hostname */
.access-form-compact .oscam-conflict {
    white-space: nowrap !important;
    overflow: visible !important;
}

.access-row.access-row-compact .access-form.access-form-compact {
    grid-template-columns:
        150px
        220px
        220px
        82px !important;
}

.access-form-compact .access-oscam {
    width: 150px !important;
    min-width: 150px !important;
}

/* Hostname / OSCam / server / password */
.access-row.access-row-compact .access-form.access-form-compact {
    grid-template-columns:
        150px
        220px
        100px
        220px
        82px !important;

    grid-template-areas:
        "oscam host server password save" !important;

    gap: 9px !important;
}

.access-row.access-row-compact .access-server {
    grid-area: server !important;
    width: 100px !important;
    min-width: 100px !important;
}

.access-row.access-row-compact .access-server select {
    width: 100px !important;
    height: 34px !important;
}

.add-row {
    grid-template-columns:
        minmax(240px, 1fr)
        120px
        minmax(240px, 1fr)
        auto !important;
}

.add-row select {
    width: 100% !important;
    height: 34px !important;
}

/* ==========================================================
   NOVY HOSTNAME - COMPACT
   ========================================================== */

form.add-row {
    display: grid !important;

    grid-template-columns:
        220px
        110px
        220px
        82px !important;

    gap: 9px !important;
    align-items: end !important;
    justify-content: start !important;

    width: fit-content !important;
    max-width: 100% !important;

    padding: 12px 13px !important;
}

form.add-row .field {
    width: auto !important;
    min-width: 0 !important;
    margin: 0 !important;
}

form.add-row input,
form.add-row select {
    width: 100% !important;
    min-width: 0 !important;
    height: 34px !important;
    box-sizing: border-box !important;
}

form.add-row .password-field {
    width: 100% !important;
}

form.add-row .password-field input {
    width: 100% !important;
}

form.add-row .btn {
    width: 82px !important;
    min-width: 82px !important;
    height: 34px !important;
    margin: 0 !important;
    padding: 0 8px !important;
}

/* Nenechaj povodny responsive CSS roztiahnut formular */
@media (max-width: 1100px) {
    form.add-row {
        grid-template-columns:
            200px
            105px
            200px
            78px !important;
    }
}


/* ==========================================================
   NOVY HOSTNAME - zarovnanie s hornymi riadkami
   ========================================================== */

form.add-row {
    margin-left: 159px !important;
}


/* ==========================================================
   NOVY HOSTNAME - FINAL ORDER / WIDTH
   hostname | password | server | add
   ========================================================== */

form.add-row {
    display: grid !important;

    grid-template-columns:
        300px
        300px
        120px
        90px !important;

    gap: 10px !important;
    align-items: end !important;
    justify-content: start !important;

    width: auto !important;
    max-width: none !important;

    margin-left: 159px !important;
    margin-right: 0 !important;
}

form.add-row .field {
    min-width: 0 !important;
    width: auto !important;
    margin: 0 !important;
}

form.add-row input,
form.add-row select {
    width: 100% !important;
    height: 34px !important;
    box-sizing: border-box !important;
}

form.add-row .password-field {
    width: 100% !important;
}

form.add-row .btn {
    width: 90px !important;
    min-width: 90px !important;
    height: 34px !important;
    margin: 0 !important;
}


/* NOVY HOSTNAME - presne rozmery ako horne polia */
form.add-row {
    display: grid !important;
    grid-template-columns: 220px 220px 100px 82px !important;
    gap: 9px !important;
    align-items: end !important;
    justify-content: start !important;
    width: fit-content !important;
    max-width: none !important;
    margin-left: 159px !important;
    margin-right: 0 !important;
}

form.add-row .field {
    width: auto !important;
    min-width: 0 !important;
    margin: 0 !important;
}

form.add-row input {
    width: 220px !important;
    min-width: 220px !important;
    max-width: 220px !important;
    height: 34px !important;
    box-sizing: border-box !important;
}

form.add-row .password-field {
    width: 220px !important;
}

form.add-row .password-field input {
    width: 220px !important;
    min-width: 220px !important;
    max-width: 220px !important;
}

form.add-row select {
    width: 100px !important;
    min-width: 100px !important;
    max-width: 100px !important;
    height: 34px !important;
}

form.add-row .btn {
    width: 82px !important;
    min-width: 82px !important;
    max-width: 82px !important;
    height: 34px !important;
    margin: 0 !important;
    padding: 0 8px !important;
}

/* Novy hostname od laveho okraja */
form.add-row {
    margin-left: 0 !important;
    margin-right: 0 !important;
    justify-content: start !important;
}


/* Server select trochu sirsi */
form.add-row {
    grid-template-columns: 220px 220px 125px 82px !important;
}

form.add-row select {
    width: 125px !important;
    min-width: 125px !important;
    max-width: 125px !important;
}


/* Novy hostname - natiahnut po koniec hornych tlacidiel */
form.add-row {
    grid-template-columns:
        220px
        220px
        125px
        82px !important;

    width: 688px !important;
    min-width: 688px !important;
    max-width: 688px !important;
}


/* ==========================================================
   NOVY HOSTNAME - sirka po koniec hornych tlacidiel
   ========================================================== */

form.add-row {
    display: grid !important;

    /* hostname | heslo | server | pridat */
    grid-template-columns:
        minmax(0, 1fr)
        minmax(0, 1fr)
        125px
        82px !important;

    gap: 9px !important;

    width: 850px !important;
    min-width: 850px !important;
    max-width: 850px !important;

    box-sizing: border-box !important;

    margin-left: 0 !important;
    margin-right: 0 !important;

    align-items: end !important;
    justify-content: stretch !important;
}

form.add-row .field {
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
}

form.add-row input {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    height: 34px !important;
    box-sizing: border-box !important;
}

form.add-row .password-field {
    width: 100% !important;
    min-width: 0 !important;
}

form.add-row .password-field input {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
}

form.add-row select {
    width: 125px !important;
    min-width: 125px !important;
    max-width: 125px !important;
    height: 34px !important;
}

form.add-row .btn {
    width: 82px !important;
    min-width: 82px !important;
    max-width: 82px !important;
    height: 34px !important;
    margin: 0 !important;
}


/* ==========================================================
   CUSTOMER - AUTOMATIC OSCAM SERVER
   ========================================================== */

.customer-oscam-server-box {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 42px;
}

.customer-oscam-server-row {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 10px;

    min-height: 42px;
    padding: 8px 10px;

    border: 1px solid rgba(255,255,255,.12);
    border-radius: 10px;

    background: rgba(255,255,255,.045);
}

.customer-oscam-server-name {
    font-weight: 700;
    white-space: nowrap;
}

.customer-oscam-server-host {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    opacity: .88;
}

.customer-oscam-server-count {
    white-space: nowrap;
    opacity: .68;
    font-size: .88rem;
}

.customer-oscam-server-empty {
    min-height: 42px;
    display: flex;
    align-items: center;

    padding: 8px 10px;

    border: 1px dashed rgba(255,255,255,.14);
    border-radius: 10px;

    opacity: .65;
}

/* ==========================================================
   CUSTOMER OSCAM SERVER - COMPACT DISPLAY
   ========================================================== */

.customer-oscam-server-box {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.customer-oscam-server-row {
    display: grid;
    grid-template-columns: 58px minmax(120px, 1fr) auto;
    align-items: center;
    gap: 12px;

    min-height: 42px;
    padding: 7px 12px;

    border: 1px solid rgba(255,255,255,.13);
    border-radius: 10px;

    background: rgba(255,255,255,.045);
}

.customer-oscam-server-name {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    min-width: 48px;
    height: 27px;
    padding: 0 9px;

    border-radius: 7px;

    background: rgba(255,255,255,.10);
    border: 1px solid rgba(255,255,255,.12);

    font-size: .82rem;
    font-weight: 800;
    letter-spacing: .04em;
}

.customer-oscam-server-address {
    min-width: 0;
}

.customer-oscam-server-ip {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: .92rem;
    font-weight: 600;
    white-space: nowrap;
}

.customer-oscam-server-ip.unknown {
    opacity: .55;
}

.customer-oscam-server-count {
    padding-left: 12px;
    border-left: 1px solid rgba(255,255,255,.10);

    white-space: nowrap;
    font-size: .82rem;
    opacity: .68;
}

/* ==========================================================
   CUSTOMER OSCAM SERVER - SMALLER
   ========================================================== */

.customer-oscam-server-row {
    grid-template-columns: 50px minmax(100px, 1fr) auto !important;
    gap: 8px !important;

    min-height: 34px !important;
    padding: 4px 9px !important;

    border-radius: 8px !important;
}

.customer-oscam-server-name {
    min-width: 42px !important;
    height: 22px !important;
    padding: 0 7px !important;

    border-radius: 6px !important;

    font-size: .72rem !important;
}

.customer-oscam-server-ip {
    font-size: .82rem !important;
}

.customer-oscam-server-count {
    padding-left: 8px !important;
    font-size: .74rem !important;
}

.customer-oscam-server-box {
    gap: 4px !important;
}

/* ==========================================================
   DASHBOARD - OSCAM LIVE
   ========================================================== */

.oscam-live-panel {
    margin-top: 18px;
    margin-bottom: 18px;
    padding: 16px;
}

.oscam-live-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 12px;
}

.oscam-live-head h2 {
    margin: 0 0 3px;
    font-size: 1.05rem;
}

.oscam-live-summary {
    font-size: .78rem;
    opacity: .68;
}

.oscam-live-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    min-width: 72px;
    height: 28px;
    padding: 0 10px;

    border-radius: 999px;
    border: 1px solid rgba(76, 225, 150, .28);
    background: rgba(76, 225, 150, .10);

    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .06em;
}

.oscam-live-badge.has-error {
    border-color: rgba(255, 94, 94, .30);
    background: rgba(255, 94, 94, .10);
}

.oscam-live-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
}

.oscam-live-card {
    min-width: 0;
    padding: 12px 13px;

    border-radius: 12px;
    border: 1px solid rgba(255,255,255,.10);
    background: rgba(255,255,255,.035);

    transition:
        border-color .2s ease,
        background .2s ease,
        opacity .2s ease;
}

.oscam-live-card.loading {
    opacity: .55;
}

.oscam-live-card.is-online {
    border-color: rgba(76, 225, 150, .16);
}

.oscam-live-card.is-offline {
    border-color: rgba(255, 94, 94, .22);
}

.oscam-live-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 12px;
}

.oscam-live-instance {
    font-size: .82rem;
    font-weight: 800;
}

.oscam-live-instance span {
    margin-left: 4px;
    font-size: .72rem;
    font-weight: 600;
    opacity: .55;
}

.oscam-live-state {
    display: inline-flex;
    align-items: center;
    gap: 5px;

    font-size: .62rem;
    font-weight: 800;
    opacity: .72;
}

.oscam-live-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: currentColor;
}

.oscam-live-card.is-online .oscam-live-state {
    color: #52d996;
}

.oscam-live-card.is-offline .oscam-live-state {
    color: #ff6868;
}

.oscam-live-values {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

.oscam-live-value {
    min-width: 0;
}

.oscam-live-value strong {
    display: block;

    font-size: 1.22rem;
    line-height: 1;
    font-weight: 800;
    letter-spacing: -.03em;
}

.oscam-live-value span {
    display: block;
    margin-top: 5px;

    font-size: .58rem;
    font-weight: 700;
    letter-spacing: .05em;
    opacity: .48;
}

@media (max-width: 1100px) {
    .oscam-live-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 650px) {
    .oscam-live-grid {
        grid-template-columns: 1fr;
    }
}

/* TV1 LIVE BIN PORT */
.oscam-bin-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 43px;
    height: 19px;
    padding: 0 7px;
    margin-left: 6px;
    border-radius: 999px;
    font-size: .58rem;
    line-height: 1;
    font-weight: 800;
    letter-spacing: .035em;
}

/* 7777 = fialova */
.oscam-bin-7777 {
    color: #e2d3ff;
    background: rgba(139, 92, 246, .20);
    border: 1px solid rgba(167, 139, 250, .48);
}

/* 11011 = oranzova */
.oscam-bin-11011 {
    color: #ffd3a0;
    background: rgba(249, 115, 22, .18);
    border: 1px solid rgba(251, 146, 60, .50);
}

.payment-import-time {
    margin-top: 2px;
    font-size: .68rem;
    opacity: .48;
}

/* SATIX logo v sidebare */
.brand-mark-logo {
    width: 48px !important;
    height: 48px !important;
    min-width: 48px !important;
    padding: 0 !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    overflow: hidden !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.brand-mark-logo img {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain !important;
    display: block !important;
}

/* SATIX logo - final */
.sidebar .brand {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
}

.sidebar .brand-mark-logo {
    width: 150px !important;
    height: 55px !important;
    min-width: 150px !important;
    padding: 0 !important;
    margin: 0 !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    overflow: visible !important;
}

.sidebar .brand-mark-logo img {
    width: 150px !important;
    height: 55px !important;
    object-fit: contain !important;
    object-position: left center !important;
    display: block !important;
}

/* SATIX logo doladenie */
.sidebar .brand-mark-logo {
    width: 175px !important;
    height: 62px !important;
    min-width: 175px !important;
    margin-left: 8px !important;
}

.sidebar .brand-mark-logo img {
    width: 175px !important;
    height: 62px !important;
    object-fit: contain !important;
    object-position: left center !important;
}


/* ==========================================================
   SATIX BILLING - FINAL MOBILE RESPONSIVE
   Desktop pravidla sa nemenia.
   ========================================================== */

@media (max-width: 760px) {

    html,
    body {
        width: 100% !important;
        max-width: 100% !important;
        overflow-x: hidden !important;
    }

    body {
        min-width: 0 !important;
    }


    /* ------------------------------------------------------
       HLAVNY LAYOUT
       ------------------------------------------------------ */

    .app-shell {
        display: block !important;

        width: 100% !important;
        max-width: 100% !important;

        min-height: 100vh !important;

        padding:
            max(8px, env(safe-area-inset-top))
            max(8px, env(safe-area-inset-right))
            max(12px, env(safe-area-inset-bottom))
            max(8px, env(safe-area-inset-left)) !important;

        box-sizing: border-box !important;
    }

    .main {
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
    }

    .content {
        width: 100% !important;
        max-width: 100% !important;
        margin-top: 10px !important;
    }


    /* ------------------------------------------------------
       SIDEBAR -> KOMPAKTNY HORNY PANEL
       ------------------------------------------------------ */

    .sidebar,
    .sidebar.glass {
        position: relative !important;

        top: auto !important;
        left: auto !important;

        width: 100% !important;
        height: auto !important;
        min-height: 0 !important;
        max-width: 100% !important;

        margin: 0 0 8px 0 !important;
        padding: 10px !important;

        border-radius: 16px !important;

        box-sizing: border-box !important;

        overflow: hidden !important;
    }

    .sidebar .brand {
        min-height: 44px !important;

        padding: 0 2px 8px !important;
        margin: 0 !important;

        border-bottom: 1px solid rgba(255,255,255,.08) !important;
    }

    .sidebar .brand-mark-logo {
        width: 118px !important;
        min-width: 118px !important;
        height: 42px !important;

        margin: 0 !important;
    }

    .sidebar .brand-mark-logo img {
        width: 118px !important;
        height: 42px !important;

        object-fit: contain !important;
        object-position: left center !important;
    }


    /* ------------------------------------------------------
       NAVIGACIA
       ------------------------------------------------------ */

    .nav {
        display: grid !important;

        grid-template-columns:
            repeat(3, minmax(0, 1fr)) !important;

        gap: 6px !important;

        width: 100% !important;

        margin-top: 9px !important;
    }

    .nav-item {
        min-width: 0 !important;
        min-height: 40px !important;

        padding: 7px 6px !important;

        display: flex !important;
        align-items: center !important;
        justify-content: center !important;

        gap: 5px !important;

        border-radius: 9px !important;

        text-align: center !important;
        font-size: 11px !important;

        transform: none !important;
    }

    .nav-item:hover {
        transform: none !important;
    }

    .nav-label {
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        white-space: nowrap !important;
    }


    /* ------------------------------------------------------
       USER BOX V SIDEBARI
       ------------------------------------------------------ */

    .sidebar-user {
        width: 100% !important;

        margin-top: 10px !important;
        padding-top: 9px !important;

        box-sizing: border-box !important;
    }

    .sidebar-user-card {
        width: 100% !important;
        min-width: 0 !important;
    }


    /* ------------------------------------------------------
       TOPBAR
       ------------------------------------------------------ */

    .topbar,
    .topbar.glass {
        width: 100% !important;
        max-width: 100% !important;

        min-height: 58px !important;

        padding: 10px 13px !important;

        border-radius: 15px !important;

        box-sizing: border-box !important;

        gap: 8px !important;
    }

    .topbar h1 {
        margin: 0 !important;

        min-width: 0 !important;

        font-size: 18px !important;
        line-height: 1.15 !important;

        overflow-wrap: anywhere !important;
    }

    .topbar-status {
        flex: 0 0 auto !important;
        white-space: nowrap !important;

        font-size: 10px !important;
    }


    /* ------------------------------------------------------
       PANELY
       ------------------------------------------------------ */

    .panel,
    .glass {
        max-width: 100% !important;
        box-sizing: border-box !important;
    }

    .panel {
        padding: 12px !important;
        border-radius: 15px !important;
    }

    .panel-head {
        gap: 8px !important;
    }

    .panel-head h2 {
        font-size: 15px !important;
    }

    .panel-sub {
        font-size: 10px !important;
    }

    .section-gap {
        margin-top: 10px !important;
    }


    /* ------------------------------------------------------
       DASHBOARD STATS
       ------------------------------------------------------ */

    .stats-grid {
        grid-template-columns:
            repeat(2, minmax(0, 1fr)) !important;

        gap: 8px !important;

        margin-bottom: 10px !important;
    }

    .stats-grid .stat-card,
    .stat-card {
        min-width: 0 !important;
        min-height: 88px !important;

        padding: 12px !important;

        border-radius: 14px !important;
    }

    .stat-label {
        font-size: 10px !important;
    }

    .stat-value {
        font-size: 25px !important;
    }

    .stat-subvalue {
        font-size: 9px !important;
    }


    /* ------------------------------------------------------
       OSCAM LIVE DASHBOARD
       ------------------------------------------------------ */

    .oscam-live-panel {
        padding: 12px !important;

        margin-top: 10px !important;
        margin-bottom: 10px !important;
    }

    .oscam-live-head {
        margin-bottom: 9px !important;
    }

    .oscam-live-summary {
        font-size: 10px !important;
    }

    .oscam-live-badge {
        min-width: 58px !important;
        height: 24px !important;

        padding: 0 7px !important;

        font-size: 9px !important;
    }

    .oscam-live-grid {
        grid-template-columns:
            repeat(2, minmax(0, 1fr)) !important;

        gap: 7px !important;
    }

    .oscam-live-card {
        padding: 10px !important;
        border-radius: 11px !important;
    }

    .oscam-live-card-head {
        margin-bottom: 10px !important;
    }

    .oscam-live-instance {
        font-size: 11px !important;
    }

    .oscam-live-value strong {
        font-size: 18px !important;
    }

    .oscam-live-value span {
        font-size: 8px !important;
    }


    /* ------------------------------------------------------
       CUSTOMER PROFILE
       ------------------------------------------------------ */

    .profile-grid {
        display: grid !important;
        grid-template-columns: 1fr !important;

        width: 100% !important;

        gap: 9px !important;
    }

    .field-row {
        display: grid !important;
        grid-template-columns: 1fr !important;

        width: 100% !important;

        gap: 9px !important;
    }

    .field {
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;

        box-sizing: border-box !important;
    }

    .field input,
    .field select,
    .field textarea {
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;

        box-sizing: border-box !important;
    }


    /* Expiracia */
    .expiry-field {
        display: block !important;

        width: 100% !important;
    }

    .expiry-field > label {
        display: block !important;
    }

    .expiry-row {
        display: flex !important;
        flex-wrap: wrap !important;
        align-items: center !important;

        width: 100% !important;

        gap: 7px !important;
    }

    .expiry-field input,
    .expiry-field > input {
        width: 100% !important;
        max-width: 100% !important;
    }


    /* OSCam server box */
    .customer-oscam-server-row {
        grid-template-columns:
            auto minmax(0, 1fr) auto !important;

        width: 100% !important;

        gap: 6px !important;

        box-sizing: border-box !important;
    }


    /* ------------------------------------------------------
       HOSTNAME / PRISTUPY
       Prebijame stare desktop !important pravidla.
       ------------------------------------------------------ */

    .access-row.access-row-compact {
        display: block !important;

        width: 100% !important;
        max-width: 100% !important;

        margin: 0 0 9px 0 !important;
        padding: 10px !important;

        border: 1px solid rgba(255,255,255,.08) !important;
        border-radius: 12px !important;

        background: rgba(255,255,255,.025) !important;

        box-sizing: border-box !important;
    }

    .access-row.access-row-compact
    .access-form.access-form-compact {

        display: grid !important;

        grid-template-columns:
            minmax(0, 1fr)
            minmax(0, 1fr) !important;

        grid-template-areas:
            "oscam oscam"
            "host host"
            "server server"
            "password password"
            "save save" !important;

        gap: 8px !important;

        width: 100% !important;
        max-width: 100% !important;

        flex: none !important;

        align-items: stretch !important;

        box-sizing: border-box !important;
    }

    .access-row.access-row-compact .access-oscam {
        grid-area: oscam !important;

        width: 100% !important;
        min-width: 0 !important;

        padding: 0 !important;
    }

    .access-row.access-row-compact .access-host {
        grid-area: host !important;

        width: 100% !important;
        min-width: 0 !important;
    }

    .access-row.access-row-compact .access-server {
        grid-area: server !important;

        width: 100% !important;
        min-width: 0 !important;
    }

    .access-row.access-row-compact .access-password {
        grid-area: password !important;

        width: 100% !important;
        min-width: 0 !important;
    }

    .access-row.access-row-compact
    .access-host input,

    .access-row.access-row-compact
    .access-password input,

    .access-row.access-row-compact
    .access-server select {

        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;

        height: 40px !important;

        box-sizing: border-box !important;
    }

    .access-row.access-row-compact .password-field {
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
    }

    .access-row.access-row-compact
    .access-save,

    .access-row.access-row-compact
    .access-save-compact {

        grid-area: save !important;

        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;

        height: 40px !important;

        margin: 0 !important;
    }

    .access-row.access-row-compact .oscam-line {
        min-height: 28px !important;

        display: flex !important;
        align-items: center !important;

        flex-wrap: wrap !important;

        gap: 5px !important;
    }

    .oscam-bin-badge {
        margin-left: 3px !important;
    }


    /* Delete pod kartou */
    .access-row.access-row-compact .access-delete-form {
        display: block !important;

        width: 100% !important;

        margin: 7px 0 0 !important;
    }

    .access-row.access-row-compact .access-delete {
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;

        min-height: 38px !important;
    }


    /* ------------------------------------------------------
       NOVY HOSTNAME
       ------------------------------------------------------ */

    form.add-row {
        display: grid !important;

        grid-template-columns: 1fr !important;

        width: 100% !important;
        max-width: 100% !important;

        margin-left: 0 !important;
        margin-right: 0 !important;

        gap: 8px !important;

        box-sizing: border-box !important;
    }

    form.add-row .field,
    form.add-row .password-field {
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
    }

    form.add-row input,
    form.add-row .password-field input,
    form.add-row select,
    form.add-row .btn {

        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;

        height: 40px !important;

        box-sizing: border-box !important;
    }


    /* ------------------------------------------------------
       BANK FORMULARE
       ------------------------------------------------------ */

    .bank-form,
    .add-bank {
        display: grid !important;
        grid-template-columns: 1fr !important;

        width: 100% !important;
        max-width: 100% !important;

        gap: 8px !important;
    }

    .bank-row {
        width: 100% !important;
        max-width: 100% !important;

        flex-direction: column !important;
        align-items: stretch !important;
    }


    /* ------------------------------------------------------
       CUSTOMERS / SEARCH
       ------------------------------------------------------ */

    .customers-head {
        flex-direction: column !important;
        align-items: stretch !important;

        gap: 8px !important;
    }

    .search-form {
        width: 100% !important;
        max-width: 100% !important;
    }

    .search-form input {
        width: 100% !important;
        box-sizing: border-box !important;
    }


    /* ------------------------------------------------------
       TABULKY
       Nezmensujeme obsah necitatelne.
       Bezpecny horizontalny scroll.
       ------------------------------------------------------ */

    .table-scroll {
        width: 100% !important;
        max-width: 100% !important;

        overflow-x: auto !important;
        overflow-y: hidden !important;

        -webkit-overflow-scrolling: touch !important;
    }

    .data-table {
        width: max-content !important;
        min-width: 100% !important;
    }

    .data-table th,
    .data-table td {
        padding: 9px 8px !important;

        font-size: 11px !important;

        white-space: nowrap !important;
    }

    .data-table td input,
    .data-table td select,
    .data-table td button {
        max-width: none !important;
    }


    /* ------------------------------------------------------
       BUTTONY - TOUCH
       ------------------------------------------------------ */

    .btn {
        min-height: 38px;
    }

    .btn-small {
        min-height: 34px;
    }


    /* ------------------------------------------------------
       SAVE BAR
       ------------------------------------------------------ */

    .save-bar {
        width: 100% !important;

        padding: 9px !important;

        box-sizing: border-box !important;
    }

    .save-bar .btn {
        width: 100% !important;
    }

}


/* ==========================================================
   MALY TELEFON
   ========================================================== */

@media (max-width: 520px) {

    .app-shell {
        padding: 6px !important;
    }

    .sidebar,
    .sidebar.glass {
        padding: 8px !important;
        border-radius: 14px !important;
    }

    .sidebar .brand-mark-logo {
        width: 105px !important;
        min-width: 105px !important;
        height: 38px !important;
    }

    .sidebar .brand-mark-logo img {
        width: 105px !important;
        height: 38px !important;
    }

    .nav {
        grid-template-columns:
            repeat(2, minmax(0, 1fr)) !important;
    }

    .topbar,
    .topbar.glass {
        min-height: 52px !important;
        padding: 9px 11px !important;
    }

    .topbar h1 {
        font-size: 17px !important;
    }

    .stats-grid {
        grid-template-columns: 1fr !important;
    }

    .stat-card {
        min-height: 74px !important;
    }

    .oscam-live-grid {
        grid-template-columns: 1fr !important;
    }

    .oscam-live-values {
        grid-template-columns:
            repeat(3, minmax(0, 1fr)) !important;
    }

    .panel {
        padding: 10px !important;
    }

    .customer-oscam-server-row {
        grid-template-columns:
            auto minmax(0, 1fr) !important;
    }

    .customer-oscam-server-count {
        grid-column: 1 / -1 !important;
        padding-left: 0 !important;
    }

}

/* ===== SATIX LOGIN BRAND ===== */

.login-wrap{
    width:min(400px,100%) !important;
}

.login-card{
    border-radius:22px !important;
    padding:23px 26px !important;
}

.login-brand{
    display:flex !important;
    align-items:center !important;
    gap:13px !important;
    margin-bottom:22px !important;
}

.login-satix-logo{
    width:108px !important;
    min-width:108px !important;
    height:46px !important;
    display:flex !important;
    align-items:center !important;
    justify-content:flex-start !important;
    overflow:visible !important;
}

.login-satix-logo img{
    width:108px !important;
    height:46px !important;
    display:block !important;
    object-fit:contain !important;
    object-position:left center !important;
}

.login-title{
    font-size:18px !important;
    line-height:1.1 !important;
    font-weight:800 !important;
}

.login-sub{
    font-size:9px !important;
    line-height:1.3 !important;
    margin-top:4px !important;
    letter-spacing:.045em !important;
}

.btn-login{
    width:100% !important;
    min-height:34px !important;
    height:34px !important;
    padding:0 14px !important;
    margin-top:7px !important;
    font-size:11px !important;
    border-radius:8px !important;
}

/* ===== SATIX LOGIN - LARGE STACKED BRAND ===== */

.login-brand-stacked{
    display:flex !important;
    flex-direction:column !important;
    align-items:center !important;
    justify-content:center !important;
    gap:4px !important;
    margin-bottom:20px !important;
    text-align:center !important;
}

.login-brand-stacked .login-satix-logo{
    width:100% !important;
    min-width:0 !important;
    height:68px !important;
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
}

.login-brand-stacked .login-satix-logo img{
    width:250px !important;
    max-width:92% !important;
    height:68px !important;
    object-fit:contain !important;
    object-position:center center !important;
}

.login-brand-copy{
    text-align:center !important;
    margin-top:0 !important;
}

.login-brand-copy .login-title{
    font-size:13px !important;
    line-height:1.15 !important;
    font-weight:750 !important;
    margin:0 !important;
}

.login-brand-copy .login-sub{
    font-size:8px !important;
    line-height:1.2 !important;
    margin-top:3px !important;
    letter-spacing:.06em !important;
}

.btn-login{
    min-height:32px !important;
    height:32px !important;
    font-size:10px !important;
}

/* SATIX login logo - vacsie */
.login-brand-stacked .login-satix-logo{
    height:88px !important;
}

.login-brand-stacked .login-satix-logo img{
    width:310px !important;
    max-width:96% !important;
    height:88px !important;
}

/* SATIX login - vacsi Billing System */
.login-brand-copy .login-title{
    font-size:17px !important;
    line-height:1.15 !important;
    font-weight:800 !important;
    margin-top:2px !important;
}

.login-brand-copy .login-sub{
    font-size:8px !important;
    margin-top:4px !important;
}

/* SATIX login - Billing System 19px */
.login-brand-copy .login-title{
    font-size:19px !important;
    line-height:1.15 !important;
    font-weight:800 !important;
}

/* SATIX login - finálne doladenie */
.login-brand-stacked .login-satix-logo img{
    width:345px !important;
    max-width:98% !important;
    height:90px !important;
}

.login-brand-copy .login-sub{
    font-size:9px !important;
    margin-top:4px !important;
    letter-spacing:.055em !important;
}

/* ===== SATIX LOGIN - BUTTON + TITLE TUNING ===== */

.login-brand-copy .login-title{
    font-size:19px !important;
    font-weight:850 !important;
    line-height:1.1 !important;
    color:#f2b51d !important;
    text-shadow:0 1px 10px rgba(242,181,29,.18) !important;
    letter-spacing:.01em !important;
}

.login-brand-copy .login-sub{
    font-size:9px !important;
    color:rgba(220,230,245,.72) !important;
    letter-spacing:.07em !important;
}

/* kratšie SATIX tlačidlo */
#login-form .btn-login{
    width:190px !important;
    min-width:190px !important;
    height:34px !important;
    min-height:34px !important;

    display:block !important;
    margin:17px auto 0 !important;

    border:1px solid rgba(255,190,35,.60) !important;
    border-radius:9px !important;

    background:linear-gradient(
        110deg,
        #d99400 0%,
        #ffc62d 42%,
        #0877e8 75%,
        #0355c8 100%
    ) !important;

    color:#10151d !important;
    font-size:11px !important;
    font-weight:850 !important;

    box-shadow:
        0 6px 18px rgba(0,0,0,.22),
        0 0 14px rgba(20,116,230,.13) !important;

    transition:
        transform .16s ease,
        filter .16s ease,
        box-shadow .16s ease !important;
}

#login-form .btn-login:hover{
    transform:translateY(-1px) !important;
    filter:brightness(1.07) !important;
    box-shadow:
        0 8px 20px rgba(0,0,0,.25),
        0 0 18px rgba(20,116,230,.22) !important;
}

#login-form .btn-login:active{
    transform:translateY(0) !important;
}

/* ===== SATIX 2FA ===== */

.twofa-brand{
    margin-bottom:18px !important;
}

.twofa-brand .login-satix-logo{
    height:82px !important;
}

.twofa-brand .login-satix-logo img{
    width:325px !important;
    max-width:96% !important;
    height:82px !important;
}

.twofa-brand .login-title{
    font-size:19px !important;
    font-weight:850 !important;
    color:#f2b51d !important;
    text-shadow:0 1px 10px rgba(242,181,29,.18) !important;
}

.twofa-brand .login-sub{
    font-size:9px !important;
    color:rgba(220,230,245,.72) !important;
    letter-spacing:.05em !important;
}

/* 2FA input */
#twofa-login-form .otp-input{
    height:46px !important;
    border:1px solid rgba(30,125,235,.36) !important;
    box-shadow:
        inset 0 1px 4px rgba(0,0,0,.25),
        0 0 0 1px rgba(255,184,30,.04) !important;
}

#twofa-login-form .otp-input:focus{
    border-color:#1682ed !important;
    box-shadow:
        0 0 0 2px rgba(22,130,237,.16),
        0 0 16px rgba(22,130,237,.12) !important;
}

/* kratšie SATIX tlačidlo pre 2FA */
#twofa-login-form .btn-login{
    width:190px !important;
    min-width:190px !important;
    height:34px !important;
    min-height:34px !important;

    display:block !important;
    margin:17px auto 0 !important;

    border:1px solid rgba(255,190,35,.60) !important;
    border-radius:9px !important;

    background:linear-gradient(
        110deg,
        #d99400 0%,
        #ffc62d 42%,
        #0877e8 75%,
        #0355c8 100%
    ) !important;

    color:#10151d !important;
    font-size:11px !important;
    font-weight:850 !important;

    box-shadow:
        0 6px 18px rgba(0,0,0,.22),
        0 0 14px rgba(20,116,230,.13) !important;
}

#twofa-login-form .btn-login:hover{
    transform:translateY(-1px) !important;
    filter:brightness(1.07) !important;
}

/* ==========================================================
   SATIX AUTO LOGOUT MODAL
   ========================================================== */

.satix-session-modal[hidden] {
    display: none !important;
}

.satix-session-modal {
    position: fixed;
    inset: 0;
    z-index: 99999;

    display: flex;
    align-items: center;
    justify-content: center;

    padding: 20px;
}

.satix-session-backdrop {
    position: absolute;
    inset: 0;

    background: rgba(3, 8, 18, .68);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.satix-session-dialog {
    position: relative;
    z-index: 1;

    width: min(390px, 100%);
    padding: 26px 28px 24px;

    text-align: center;

    border-radius: 22px;

    border:
        1px solid rgba(255, 190, 35, .22) !important;

    background:
        linear-gradient(
            145deg,
            rgba(13, 24, 43, .96),
            rgba(7, 17, 32, .94)
        ) !important;

    box-shadow:
        0 24px 70px rgba(0, 0, 0, .45),
        0 0 30px rgba(25, 115, 230, .12),
        inset 0 1px 0 rgba(255, 255, 255, .06) !important;
}

.satix-session-icon {
    width: 48px;
    height: 48px;

    margin: 0 auto 13px;

    display: flex;
    align-items: center;
    justify-content: center;

    border-radius: 15px;

    font-size: 22px;

    color: #f2b51d;

    background:
        linear-gradient(
            135deg,
            rgba(242, 181, 29, .15),
            rgba(18, 119, 232, .13)
        );

    border:
        1px solid rgba(242, 181, 29, .22);
}

.satix-session-title {
    font-size: 20px;
    line-height: 1.15;
    font-weight: 850;

    color: #f2b51d;

    margin-bottom: 8px;
}

.satix-session-text {
    color: rgba(226, 234, 247, .72);

    font-size: 11px;
    line-height: 1.5;
}

.satix-session-countdown {
    margin: 18px 0 20px;

    font-family:
        ui-monospace,
        SFMono-Regular,
        Menlo,
        Monaco,
        Consolas,
        monospace;

    font-size: 37px;
    line-height: 1;
    font-weight: 900;

    letter-spacing: .06em;

    color: #ffffff;

    text-shadow:
        0 0 20px rgba(19, 126, 238, .30);
}

.satix-session-actions {
    display: flex;
    justify-content: center;
    gap: 10px;

    flex-wrap: wrap;
}

.satix-session-btn {
    min-width: 145px;
    height: 35px;

    padding: 0 15px;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    border-radius: 9px;

    text-decoration: none !important;

    font-size: 10px;
    font-weight: 850;

    cursor: pointer;

    transition:
        transform .15s ease,
        filter .15s ease,
        box-shadow .15s ease;
}

.satix-session-btn-stay {
    border:
        1px solid rgba(255, 190, 35, .58);

    background:
        linear-gradient(
            110deg,
            #d99400 0%,
            #ffc62d 43%,
            #0877e8 76%,
            #0355c8 100%
        );

    color: #10151d;
}

.satix-session-btn-logout {
    border:
        1px solid rgba(255, 255, 255, .12);

    background:
        rgba(255, 255, 255, .055);

    color: rgba(235, 240, 248, .82);
}

.satix-session-btn:hover {
    transform: translateY(-1px);
    filter: brightness(1.08);
}

.satix-session-btn-stay:hover {
    box-shadow:
        0 7px 20px rgba(0, 0, 0, .24),
        0 0 18px rgba(20, 116, 230, .18);
}

.satix-session-btn-logout:hover {
    background:
        rgba(239, 68, 68, .12);

    border-color:
        rgba(239, 68, 68, .28);

    color: #ffb4b4;
}

body.satix-session-warning-open {
    overflow: hidden;
}

@media(max-width:520px) {
    .satix-session-actions {
        flex-direction: column;
    }

    .satix-session-btn {
        width: 100%;
    }
}

/* ===== SATIX SESSION MODAL - TRANSPARENT BACKDROP ===== */

.satix-session-backdrop {
    background: rgba(0,0,0,.08) !important;

    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

.satix-session-dialog {
    background:
        linear-gradient(
            145deg,
            rgba(13,24,43,.82),
            rgba(7,17,32,.78)
        ) !important;

    backdrop-filter: blur(10px) !important;
    -webkit-backdrop-filter: blur(10px) !important;

    border:
        1px solid rgba(242,181,29,.30) !important;

    box-shadow:
        0 18px 50px rgba(0,0,0,.24),
        inset 0 1px 0 rgba(255,255,255,.06) !important;
}

/* ===== SATIX SESSION MODAL - SAME GLASS AS APP ===== */

.satix-session-dialog {
    background:
        linear-gradient(
            145deg,
            rgba(74, 61, 51, .72),
            rgba(58, 48, 42, .66)
        ) !important;

    backdrop-filter: blur(12px) saturate(110%) !important;
    -webkit-backdrop-filter: blur(12px) saturate(110%) !important;

    border:
        1px solid rgba(255,255,255,.14) !important;

    box-shadow:
        0 18px 45px rgba(0,0,0,.22),
        inset 0 1px 0 rgba(255,255,255,.06) !important;
}

/* backdrop takmer neviditelny */
.satix-session-backdrop {
    background: rgba(0,0,0,.03) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

/* ikonka jemnejsia */
.satix-session-icon {
    background: rgba(255,255,255,.055) !important;
    border-color: rgba(242,181,29,.25) !important;
}

/* logout tlacidlo viac glass */
.satix-session-btn-logout {
    background: rgba(255,255,255,.06) !important;
    border-color: rgba(255,255,255,.16) !important;
}

/* ===== SATIX SESSION MODAL - CLEAR GLASS ===== */

.satix-session-dialog {
    background: rgba(255,255,255,.045) !important;

    backdrop-filter: blur(14px) saturate(115%) !important;
    -webkit-backdrop-filter: blur(14px) saturate(115%) !important;

    border: 1px solid rgba(255,255,255,.16) !important;

    box-shadow:
        0 16px 40px rgba(0,0,0,.16),
        inset 0 1px 0 rgba(255,255,255,.05) !important;
}

.satix-session-backdrop {
    background: rgba(0,0,0,.015) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

.satix-session-icon {
    background: rgba(255,255,255,.035) !important;
    border-color: rgba(255,190,35,.28) !important;
}

.satix-session-btn-logout {
    background: rgba(255,255,255,.045) !important;
    border-color: rgba(255,255,255,.14) !important;
}

/* SATIX session modal - extra clear glass */
.satix-session-dialog {
    background: rgba(255,255,255,.018) !important;

    backdrop-filter: blur(10px) saturate(105%) !important;
    -webkit-backdrop-filter: blur(10px) saturate(105%) !important;

    border: 1px solid rgba(255,255,255,.13) !important;

    box-shadow:
        0 14px 34px rgba(0,0,0,.12),
        inset 0 1px 0 rgba(255,255,255,.035) !important;
}

.satix-session-backdrop {
    background: transparent !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

.satix-session-actions {
    justify-content: center !important;
}

.satix-session-btn-stay {
    width: 180px !important;
}

/* SATIX session - ciste modre tlacidlo */
.satix-session-btn-stay {
    background: #0b7cff !important;
    border: 1px solid rgba(255,255,255,.14) !important;
    color: #ffffff !important;

    box-shadow:
        0 6px 16px rgba(11,124,255,.22) !important;
}

.satix-session-btn-stay:hover {
    background: #1687ff !important;
    filter: none !important;

    box-shadow:
        0 8px 20px rgba(11,124,255,.28) !important;
}

/* SATIX session - cerveny odpocet */
.satix-session-countdown {
    color: #ff4d4f !important;

    text-shadow:
        0 0 12px rgba(255,77,79,.28),
        0 0 22px rgba(255,77,79,.16) !important;
}
