@font-face {
    font-family: "IRANSansX";
    src: url("../IRANSansX-Medium.ttf") format("truetype");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

.logout-form { margin-top: auto; }
.logout-form .logout { width: 100%; margin-top: 0; border: 0; background: transparent; cursor: pointer; }
.portal-user .logout-form { margin: 0; }
.portal-logout { min-height: 40px; display: inline-flex; align-items: center; gap: 7px; padding: 6px 13px; color: #fca5a5; border: 1px solid rgba(239,68,68,.28); border-radius: 10px; background: transparent; cursor: pointer; }

html,
body,
button,
input,
select,
textarea,
code {
    font-family: "IRANSansX", Tahoma, sans-serif !important;
}

/* Unified authentication */
.auth-body {
    min-height: 100dvh;
    margin: 0;
    padding: 32px;
    display: grid;
    place-items: center;
    color: #f8fafc;
    background:
        radial-gradient(circle at 82% 12%, rgba(37, 99, 235, .2), transparent 34%),
        radial-gradient(circle at 14% 86%, rgba(5, 150, 105, .12), transparent 30%),
        #020617;
}

.auth-shell {
    width: min(1050px, 100%);
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(390px, .72fr);
    overflow: hidden;
    border: 1px solid rgba(71, 85, 105, .55);
    border-radius: 28px;
    background: rgba(8, 15, 32, .95);
    box-shadow: 0 32px 90px rgba(0, 0, 0, .48);
}

.auth-brand {
    position: relative;
    min-height: 620px;
    padding: 58px 54px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    overflow: hidden;
    background: linear-gradient(145deg, #172554, #0f172a 64%);
}

.auth-brand::after {
    content: '';
    position: absolute;
    width: 280px;
    height: 280px;
    left: -100px;
    bottom: -100px;
    border: 52px solid rgba(96, 165, 250, .08);
    border-radius: 50%;
}

.auth-brand-identity { display: flex; align-items: center; gap: 14px; margin-bottom: 32px; }
.auth-brand-identity img { width: 64px; height: 64px; flex: 0 0 64px; object-fit: contain; object-position: center; margin: 0; }
.auth-kicker { color: #93c5fd; font-size: 12px; font-weight: 800; letter-spacing: .14em; }
.auth-brand-tagline { display: block; margin-top: 3px; color: #94a3b8; font-size: 12px; font-weight: 700; }
.auth-brand h1 { max-width: 470px; margin: 10px 0 14px; font-size: clamp(28px, 4vw, 42px); line-height: 1.45; }
.auth-brand p { max-width: 520px; margin: 0; color: #cbd5e1; font-size: 15px; line-height: 2; }
.auth-brand ul { display: grid; gap: 12px; margin: 32px 0 0; padding: 0; list-style: none; color: #dbeafe; }
.auth-brand li { display: flex; align-items: center; gap: 10px; }
.auth-brand li::before { content: ''; width: 9px; height: 9px; flex: 0 0 9px; border-radius: 50%; background: #34d399; box-shadow: 0 0 0 5px rgba(52, 211, 153, .1); }

.auth-card { padding: 48px 42px; align-self: center; }
.auth-card-head { margin-bottom: 28px; }
.auth-card-head h2 { margin: 8px 0 6px; font-size: 26px; }
.auth-card-head p { margin: 0; color: #94a3b8; }
.auth-step { display: inline-flex; min-height: 28px; align-items: center; padding: 4px 10px; color: #bfdbfe; font-size: 11px; font-weight: 800; border: 1px solid rgba(96, 165, 250, .28); border-radius: 999px; background: rgba(30, 64, 175, .18); }
.auth-form { display: grid; gap: 17px; }
.auth-form label { margin: 0; color: #dbeafe; font-size: 13px; }
.auth-form input { min-height: 50px; border-color: #3b4b63; border-radius: 13px; background: #050b18; }
.auth-form input:focus { border-color: #60a5fa; box-shadow: 0 0 0 4px rgba(96,165,250,.1); }
.auth-form small { color: #8494aa; font-size: 11px; font-weight: 500; }
.auth-name-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.password-field { position: relative; }
.password-field input { padding-left: 72px; }
.password-toggle { position: absolute; left: 7px; top: 50%; min-width: 58px; min-height: 36px; transform: translateY(-50%); color: #93c5fd; border: 0; border-radius: 9px; background: rgba(30,64,175,.2); cursor: pointer; }
.password-toggle:hover { background: rgba(37,99,235,.32); }
.auth-secondary { color: #cbd5e1; border: 1px solid #334155; background: transparent; }
.auth-switch { margin: 24px 0 0; color: #94a3b8; text-align: center; font-size: 13px; }
.auth-switch a { color: #93c5fd; font-weight: 800; text-decoration: none; }
.auth-switch a:hover { text-decoration: underline; }
.otp-input { direction: ltr; text-align: center; font-size: 24px; font-weight: 800; letter-spacing: .35em; font-variant-numeric: tabular-nums; }
.auth-form button:disabled { cursor: wait; opacity: .62; }

/* Customer portal */
.portal-body { min-height: 100dvh; margin: 0; color: #f8fafc; background: #020617; }
.portal-header { min-height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 12px max(24px, calc((100vw - 1240px)/2)); border-bottom: 1px solid #1e293b; background: rgba(8,15,32,.92); backdrop-filter: blur(14px); }
.portal-brand { display: flex; align-items: center; gap: 12px; color: #fff; text-decoration: none; }
.portal-brand img { width: 54px; height: 42px; object-fit: cover; border-radius: 12px; background: #fff; }
.portal-brand strong,.portal-brand small { display: block; }.portal-brand small { color: #94a3b8; }
.portal-user { display: flex; align-items: center; gap: 14px; }.portal-user a { min-height: 40px; display: inline-flex; align-items: center; padding: 6px 13px; color: #fca5a5; border: 1px solid rgba(239,68,68,.28); border-radius: 10px; text-decoration: none; }
.portal-main { width: min(1240px, calc(100% - 32px)); margin: 0 auto; padding: 36px 0 60px; }
.portal-welcome { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 24px; padding: 28px 30px; border: 1px solid rgba(59,130,246,.28); border-radius: 22px; background: linear-gradient(120deg, rgba(30,64,175,.28), rgba(15,23,42,.92) 55%); }
.portal-welcome h1 { margin: 5px 0; font-size: 30px; }.portal-welcome p { margin: 0; color: #a8b7cc; }
.portal-mobile { min-width: 190px; padding: 13px 16px; border: 1px solid #334155; border-radius: 14px; background: rgba(2,6,23,.45); }.portal-mobile span,.portal-mobile strong { display: block; }.portal-mobile span { color:#94a3b8;font-size:11px; }.portal-mobile strong { margin-top:4px;font-variant-numeric:tabular-nums; }
.portal-grid { display: grid; grid-template-columns: minmax(320px,.7fr) minmax(430px,1.3fr); gap: 18px; align-items: start; }
.settings-form textarea { width:100%; resize:vertical; padding:11px 12px; color:#fff; border:1px solid #3b4b63; border-radius:11px; background:#050b18; }
.portal-reservation-list { display:grid; gap:10px; }.portal-reservation-list article { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 15px; border:1px solid #29364a; border-radius:14px; background:rgba(2,6,23,.34); }.portal-reservation-list article>div { display:flex; align-items:flex-start; gap:8px; flex-direction:column; }.portal-reservation-list article>div:last-child { align-items:flex-end; }.portal-reservation-list span { color:#94a3b8;font-size:12px; }
.link-danger { padding: 0; color:#fca5a5; border:0; background:transparent; cursor:pointer; font-size:12px; }

@media (max-width: 820px) {
    .auth-body { padding: 16px; }
    .auth-shell { grid-template-columns: 1fr; max-width: 520px; }
    .auth-brand { min-height: auto; padding: 30px 28px; }
    .auth-brand h1 { font-size: 26px; }.auth-brand p,.auth-brand ul { display:none; }.auth-brand-identity { margin-bottom: 16px; }
    .auth-card { padding: 32px 24px; }
    .portal-grid { grid-template-columns: 1fr; }
}

@media (max-width: 520px) {
    .auth-name-grid { grid-template-columns: 1fr; }
    .portal-header { padding: 10px 16px; }.portal-user>span { display:none; }
    .portal-welcome { align-items:stretch; flex-direction:column; padding:22px 20px; }.portal-mobile { min-width:0; }
    .portal-main { width:min(100% - 24px,1240px); padding-top:20px; }
    .portal-reservation-list article { align-items:flex-start; flex-direction:column; }.portal-reservation-list article>div:last-child { align-items:flex-start; }
}

.brand-logo {
    position: relative;
    display: block;
    flex: 0 0 auto;
    overflow: hidden;
    background: #fff;
    border: 1px solid rgba(148, 163, 184, .25);
    box-shadow: 0 10px 30px rgba(37, 99, 235, .22);
}

.brand-logo img {
    position: absolute;
    top: 0;
    right: 0;
    max-width: none;
    object-fit: contain;
}

.brand-logo-large {
    width: 62px;
    height: 54px;
    border-radius: 16px;
}

.brand-logo-login {
    width: 92px;
    height: 80px;
    margin: 0 auto 18px;
    border-radius: 22px;
}

.brand-logo-small {
    width: 48px;
    height: 42px;
    border-radius: 13px;
}

.site-footer {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 24px;
    padding: 16px 12px;
    color: #94a3b8;
    font-size: 12px;
    text-align: center;
    border-top: 1px solid rgba(51, 65, 85, .7);
}

.site-footer a {
    color: #7dd3fc;
    font-weight: 800;
    text-decoration: none;
    transition: color .2s ease;
}

.site-footer a:hover,
.site-footer a:focus-visible {
    color: #c4b5fd;
    text-decoration: underline;
}

.footer-heart {
    display: inline-block;
    filter: drop-shadow(0 0 6px rgba(239, 68, 68, .35));
}

.dashboard-footer {
    margin: 12px 24px 0;
    padding-bottom: 20px;
}

.agent-list {
    display: grid;
    gap: 10px;
}

.alert.success {
    background: #052e16;
    border: 1px solid #166534;
    color: #bbf7d0;
}

.customer-card {
    max-width: 460px;
}

.customer-balance {
    display: grid;
    gap: 7px;
    margin: 22px 0;
    padding: 18px;
    border: 1px solid #1d4ed8;
    border-radius: 16px;
    background: linear-gradient(145deg, #0c1a36, #0f172a);
}

.customer-balance span {
    color: #bfdbfe;
    font-size: 13px;
}

.customer-balance strong {
    color: #fff;
    font-size: 26px;
    font-feature-settings: "tnum";
}

.customer-reservations {
    display: grid;
    gap: 12px;
    margin: 24px 0;
    padding-top: 20px;
    border-top: 1px solid #243247;
}

.customer-reservations h2 {
    margin: 0;
    font-size: 18px;
}

.customer-reservations select {
    min-height: 46px;
    width: 100%;
    padding: 10px 12px;
    color: #f8fafc;
    border: 1px solid #334155;
    border-radius: 11px;
    background: #020617;
}

.reservation-list {
    display: grid;
    gap: 8px;
}

.reservation-list article {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 4px 12px;
    padding: 12px;
    border: 1px solid #243247;
    border-radius: 12px;
    background: #0b1221;
}

.reservation-list span,
.reservation-list small {
    color: #94a3b8;
    font-size: 12px;
}

.reservation-list small {
    grid-column: 2;
    grid-row: 1;
}

.agent-list article {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 14px;
    border: 1px solid #243247;
    border-radius: 14px;
    background: #0b1221;
}

.agent-list strong,
.agent-list code,
.agent-list small {
    display: block;
}

.agent-list code {
    margin-top: 4px;
    color: #93c5fd;
    direction: ltr;
    font-size: 12px;
}

.agent-list article > div:last-child {
    display: grid;
    justify-items: end;
    gap: 7px;
}

.agent-list small {
    color: #94a3b8;
    font-size: 11px;
}

@media (max-width: 520px) {
    .agent-list article {
        align-items: flex-start;
        flex-direction: column;
    }

    .agent-list article > div:last-child {
        justify-items: start;
    }
}

.cafeteria-card {
    border-color: rgba(168, 85, 247, .42);
    background: linear-gradient(145deg, #17112a, #0f172a);
}

.cafeteria-icon {
    background: rgba(168, 85, 247, .2);
    color: #e9d5ff;
}

.cafeteria-meta {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.items span small {
    display: block;
    margin-top: 2px;
    color: #94a3b8;
    font-size: 10px;
}

.sessions-heading {
    align-items: center;
}

.session-tools {
    display: flex;
    align-items: flex-end;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 10px;
}

.session-search {
    min-width: min(320px, 100%);
    margin: 0;
    gap: 4px;
}

.session-search span {
    font-size: 11px;
    color: #94a3b8;
}

.session-search input {
    min-height: 42px;
    direction: rtl;
}

.session-filter-panel {
    display: grid;
    gap: 10px;
    margin: 0 0 14px;
    padding: 12px;
    background: #0b1221;
    border: 1px solid #243247;
    border-radius: 14px;
}

.filter-set {
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr);
    align-items: center;
    gap: 10px;
}

.filter-label {
    color: #94a3b8;
    font-size: 11px;
    font-weight: 700;
}

.session-filter-panel .filters {
    min-width: 0;
    width: max-content;
    max-width: 100%;
    overflow-x: auto;
    scrollbar-width: thin;
}

.session-filter-panel .filter {
    min-height: 40px;
    white-space: nowrap;
    transition: color .18s ease, background-color .18s ease, box-shadow .18s ease;
}

.session-filter-panel .filter:focus-visible,
.filter-reset:focus-visible {
    outline: 3px solid #60a5fa;
    outline-offset: 2px;
}

.filter-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 36px;
    padding: 4px 4px 0;
    color: #93c5fd;
    font-size: 11px;
}

.filter-reset {
    min-height: 36px;
    padding: 5px 11px;
    color: #fca5a5;
    background: rgba(153, 27, 27, .18);
    border: 1px solid rgba(239, 68, 68, .35);
    border-radius: 9px;
    cursor: pointer;
}

.filter-reset[hidden] {
    display: none;
}

.session-table-wrap {
    overflow: hidden;
    border: 1px solid #243247;
    border-radius: 16px;
    background: #0f172a;
}

.session-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 11px;
}

.session-table .col-status { width: 7%; }
.session-table .col-station { width: 16%; }
.session-table .col-session { width: 15%; }
.session-table .col-money { width: 10%; }
.session-table .col-cafe { width: 15%; }
.session-table .col-notes { width: 17%; }

.session-table th {
    padding: 12px 8px;
    color: #93c5fd;
    font-size: 10px;
    font-weight: 700;
    text-align: right;
    background: #172554;
    border-bottom: 1px solid #334155;
}

.session-table td {
    padding: 12px 8px;
    vertical-align: middle;
    color: #e2e8f0;
    overflow-wrap: break-word;
    word-break: normal;
    border-bottom: 1px solid #243247;
}

.session-table tr:last-child td {
    border-bottom: 0;
}

.session-table tbody tr {
    transition: background-color .18s ease;
}

.session-table tbody tr:hover {
    background: rgba(37, 99, 235, .08);
}

.session-table tr.cafeteria-row {
    background: rgba(126, 34, 206, .07);
}

.session-table td > small {
    display: block;
    margin-top: 3px;
    color: #94a3b8;
}

.money-cell {
    font-feature-settings: "tnum";
    font-weight: 700;
}

.money-cell.paid {
    color: #86efac;
}

.money-cell.remaining {
    color: #fca5a5;
}

.notes-cell {
    line-height: 1.8;
    color: #cbd5e1;
}

.station-cell strong,
.station-cell .cell-meta {
    display: block;
}

.station-cell .cell-meta {
    margin-top: 5px;
    color: #cbd5e1;
}

.session-detail-cell {
    font-feature-settings: "tnum";
}

.session-detail-cell > div {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 3px 0;
}

.session-detail-cell > div + div {
    border-top: 1px solid rgba(51, 65, 85, .55);
}

.session-detail-cell span {
    color: #94a3b8;
}

.muted {
    color: #64748b;
}

.cafe-cell details {
    margin-top: 5px;
    padding: 0;
    border: 0;
}

.cafe-cell summary {
    display: inline-flex;
    min-height: 30px;
    align-items: center;
    padding: 3px 8px;
    color: #d8b4fe;
    font-size: 10px;
    background: rgba(126, 34, 206, .16);
    border-radius: 7px;
}

.table-items {
    display: grid;
    gap: 4px;
    width: 100%;
    min-width: 0;
    margin-top: 7px;
    padding: 8px;
    background: #090f1e;
    border: 1px solid #334155;
    border-radius: 9px;
}

.table-items div {
    display: flex;
    justify-content: space-between;
    gap: 8px;
}

.table-items span,
.table-items b {
    min-width: 0;
}

.table-items b {
    white-space: nowrap;
}

.table-empty {
    padding: 28px 16px;
    color: #94a3b8;
    text-align: center;
}

.session-row[hidden] {
    display: none;
}

@media (max-width: 1180px) {
    .session-table {
        font-size: 10px;
    }

    .session-table th,
    .session-table td {
        padding: 10px 6px;
    }
}

@media (max-width: 980px) and (min-width: 761px) {
    .session-table-wrap {
        overflow-x: auto;
    }

    .session-table {
        min-width: 900px;
    }
}

@media (max-width: 760px) {
    .dashboard-footer {
        margin: 8px 14px 0;
    }

    .footer-divider {
        display: none;
    }

    .site-footer {
        line-height: 1.9;
    }

    .session-tools,
    .session-search {
        width: 100%;
    }

    .session-filter-panel {
        padding: 10px;
    }

    .filter-set {
        grid-template-columns: 1fr;
        gap: 5px;
    }

    .session-filter-panel .filters {
        width: 100%;
    }

    .session-table-wrap {
        overflow: visible;
        border: 0;
        background: transparent;
    }

    .session-table,
    .session-table colgroup,
    .session-table tbody,
    .session-table tr,
    .session-table td {
        display: block;
        width: 100%;
    }

    .session-table thead {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
    }

    .session-table colgroup {
        display: none;
    }

    .session-table tr {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
        margin-bottom: 12px;
        padding: 12px;
        background: #0f172a;
        border: 1px solid #243247;
        border-radius: 14px;
    }

    .session-table tr.cafeteria-row {
        background: linear-gradient(145deg, #17112a, #0f172a);
        border-color: rgba(168, 85, 247, .4);
    }

    .session-table td {
        min-height: 54px;
        padding: 8px;
        background: #0b1221;
        border: 0;
        border-radius: 9px;
    }

    .session-table td::before {
        content: attr(data-label);
        display: block;
        margin-bottom: 4px;
        color: #94a3b8;
        font-size: 9px;
    }

    .session-table .notes-cell,
    .session-table .cafe-cell,
    .session-table .station-cell,
    .session-table .session-detail-cell {
        grid-column: 1 / -1;
    }

    .table-items {
        min-width: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    .site-footer a {
        transition: none;
    }
}

/* PhoenixNet admin console */
@font-face {
    font-family: "Font Awesome 6 Free";
    font-style: normal;
    font-weight: 900;
    font-display: swap;
    src: url("fa-solid-900.woff2") format("woff2");
}

.fa-solid,
.dashboard-body .nav-icon,
.dashboard-body .menu-button::before,
.dashboard-body .logout::before,
.dashboard-body .stats-grid article::after {
    font-family: "Font Awesome 6 Free";
    font-style: normal;
    font-weight: 900;
    text-rendering: auto;
}
.fa-chart-pie::before { content: "\f200"; }
.fa-users::before { content: "\f0c0"; }
.fa-calendar-check::before { content: "\f274"; }
.fa-layer-group::before { content: "\f5fd"; }
.fa-credit-card::before { content: "\f09d"; }
.fa-list-check::before { content: "\f0ae"; }
.fa-sliders::before { content: "\f1de"; }
.fa-bars::before { content: "\f0c9"; }
.fa-arrow-right-from-bracket::before { content: "\f08b"; }

.dashboard-body {
    --admin-bg: #060914;
    --admin-sidebar: rgba(10, 15, 31, .96);
    --admin-surface: rgba(17, 25, 48, .82);
    --admin-surface-strong: #111a31;
    --admin-surface-soft: #0c1327;
    --admin-border: rgba(148, 163, 184, .14);
    --admin-text: #f4f7ff;
    --admin-muted: #93a4c0;
    --admin-primary: #6366f1;
    --admin-primary-light: #818cf8;
    min-height: 100dvh;
    color: var(--admin-text);
    background:
        radial-gradient(circle at 18% 4%, rgba(79, 70, 229, .14), transparent 28rem),
        radial-gradient(circle at 86% 96%, rgba(14, 165, 233, .08), transparent 30rem),
        var(--admin-bg);
}

.dashboard-body .app-shell { grid-template-columns: 276px minmax(0, 1fr); }
.dashboard-body .sidebar {
    padding: 24px 18px 18px;
    background: linear-gradient(180deg, rgba(15, 23, 48, .98), var(--admin-sidebar));
    border-left: 1px solid var(--admin-border);
    box-shadow: -18px 0 50px rgba(0, 0, 0, .16);
}
.dashboard-body .brand {
    min-height: 72px;
    gap: 13px;
    margin-bottom: 24px;
    padding: 8px 10px 22px;
    border-bottom: 1px solid var(--admin-border);
}
.dashboard-body .sidebar > .brand:not(.configured-brand) { display: none; }
.dashboard-body .brand-logo-small {
    width: 48px;
    height: 48px;
    padding: 5px;
    overflow: hidden;
    border: 1px solid rgba(129, 140, 248, .28);
    border-radius: 15px;
    background: linear-gradient(145deg, rgba(99, 102, 241, .17), rgba(14, 165, 233, .08));
    box-shadow: 0 10px 30px rgba(79, 70, 229, .18);
}
.dashboard-body .brand-logo-small img { width: 100%; height: 100%; object-fit: contain; }
.dashboard-body .brand strong { font: 700 16px/1.4 "IRANSansX", Tahoma, sans-serif; letter-spacing: 0; }
.dashboard-body .brand span { margin-top: 3px; color: var(--admin-muted); font-size: 11px; }
.dashboard-body .sidebar nav { gap: 7px; }
.dashboard-body .sidebar nav a {
    position: relative;
    gap: 12px;
    min-height: 50px;
    padding: 8px 10px;
    color: #a8b6ce;
    border: 1px solid transparent;
    border-radius: 14px;
    font-size: 14px;
    font-weight: 650;
}
.dashboard-body .sidebar nav a::after {
    content: "";
    position: absolute;
    inset: 12px auto 12px -18px;
    width: 3px;
    border-radius: 3px;
    background: linear-gradient(#818cf8, #38bdf8);
    opacity: 0;
    transform: scaleY(.4);
    transition: opacity .18s ease, transform .18s ease;
}
.dashboard-body .sidebar nav a:hover { color: #eef2ff; background: rgba(99, 102, 241, .09); border-color: rgba(129, 140, 248, .12); }
.dashboard-body .sidebar nav a.active {
    color: #fff;
    background: linear-gradient(100deg, rgba(79, 70, 229, .34), rgba(37, 99, 235, .16));
    border-color: rgba(129, 140, 248, .3);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .05), 0 10px 28px rgba(30, 41, 99, .18);
}
.dashboard-body .sidebar nav a.active::after { opacity: 1; transform: none; }
.dashboard-body .nav-icon {
    display: grid;
    place-items: center;
    flex: 0 0 34px;
    width: 34px;
    height: 34px;
    color: #91a3c0;
    border: 0;
    border-radius: 10px;
    background: rgba(148, 163, 184, .07);
    font-size: 14px;
    opacity: 1;
}
.dashboard-body .sidebar nav a.active .nav-icon { color: #c7d2fe; background: rgba(129, 140, 248, .15); box-shadow: none; }
.dashboard-body .logout {
    gap: 12px;
    margin-top: auto;
    min-height: 48px;
    color: #fda4af;
    border: 1px solid rgba(244, 63, 94, .13);
    background: rgba(159, 18, 57, .07);
}
.dashboard-body .logout:hover { color: #fecdd3; border-color: rgba(244, 63, 94, .28); background: rgba(159, 18, 57, .15); }
.dashboard-body .logout::before { content: "\f2f5"; width: 24px; text-align: center; }
.dashboard-body .logout > i { display: none; }

.dashboard-body .main-area { position: relative; }
.dashboard-body .topbar {
    height: 88px;
    gap: 16px;
    padding: 0 34px;
    background: rgba(6, 9, 20, .76);
    border-color: var(--admin-border);
    backdrop-filter: blur(18px) saturate(140%);
}
.dashboard-body .topbar::after {
    content: "";
    position: absolute;
    right: 34px;
    bottom: -1px;
    width: 86px;
    height: 1px;
    background: linear-gradient(90deg, #818cf8, transparent);
}
.dashboard-body .topbar h1 { font-size: 20px; font-weight: 800; letter-spacing: -.015em; }
.dashboard-body .topbar p { max-width: 760px; margin-top: 3px; color: var(--admin-muted); font-size: 12px; }
.dashboard-body .connection {
    margin-right: auto;
    padding: 8px 12px;
    border: 1px solid currentColor;
    border-color: color-mix(in srgb, currentColor 25%, transparent);
    background: rgba(15, 23, 42, .72);
}
.dashboard-body .menu-button {
    place-items: center;
    flex: 0 0 46px;
    font-size: 0;
    border-color: var(--admin-border);
    background: var(--admin-surface-strong);
}
.dashboard-body .menu-button::before { content: "\f0c9"; font-size: 17px; }
.dashboard-body .menu-button > i { display: none; }
.dashboard-body .content { width: 100%; max-width: 1500px; padding: 32px 34px 48px; }

.dashboard-body .panel,
.dashboard-body .stats-grid article,
.dashboard-body .station-card,
.dashboard-body .order-list article {
    border-color: var(--admin-border);
    background: linear-gradient(145deg, rgba(20, 30, 55, .88), rgba(12, 19, 38, .88));
    box-shadow: 0 18px 60px rgba(0, 0, 0, .2), inset 0 1px 0 rgba(255, 255, 255, .025);
}
.dashboard-body .panel { border-radius: 22px; padding: 26px; }
.dashboard-body .section-heading { margin-bottom: 20px; }
.dashboard-body .section-heading h2 { font-size: 20px; letter-spacing: -.015em; }
.dashboard-body .section-heading p { margin-top: 5px; color: var(--admin-muted); }
.dashboard-body .section-eyebrow { margin-bottom: 7px; color: #818cf8; letter-spacing: .14em; }

.dashboard-body .last-update {
    padding: 16px 18px;
    border-color: var(--admin-border);
    background: rgba(15, 23, 42, .64);
    box-shadow: inset 3px 0 0 currentColor;
}
.dashboard-body .stats-grid { gap: 16px; margin-bottom: 34px; }
.dashboard-body .stats-grid article { min-height: 132px; padding: 21px; }
.dashboard-body .stats-grid article::before { inset: auto 20px 0; width: auto; height: 2px; background: linear-gradient(90deg, transparent, #6366f1, transparent); }
.dashboard-body .stats-grid article::after {
    position: absolute;
    left: 18px;
    top: 18px;
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    color: #a5b4fc;
    border: 1px solid rgba(129, 140, 248, .18);
    border-radius: 12px;
    background: rgba(99, 102, 241, .1);
    font-size: 15px;
}
.dashboard-body .stats-grid article:nth-child(1)::after { content: "\f11b"; }
.dashboard-body .stats-grid article:nth-child(2)::after { content: "\f058"; }
.dashboard-body .stats-grid article:nth-child(3)::after { content: "\f51e"; }
.dashboard-body .stats-grid article:nth-child(4)::after { content: "\f54e"; }
.dashboard-body .stats-grid strong { margin-top: 9px; font-size: 29px; }

.dashboard-body input,
.dashboard-body select,
.dashboard-body textarea,
.dashboard-body .settings-form input,
.dashboard-body .settings-form select {
    color: var(--admin-text);
    border-color: rgba(148, 163, 184, .22);
    border-radius: 12px;
    background: rgba(3, 7, 18, .64);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .02);
    transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}
.dashboard-body input:hover,
.dashboard-body select:hover,
.dashboard-body textarea:hover { border-color: rgba(148, 163, 184, .38); }
.dashboard-body input:focus,
.dashboard-body select:focus,
.dashboard-body textarea:focus { outline: 0; border-color: #818cf8; background: #070c1a; box-shadow: 0 0 0 4px rgba(99, 102, 241, .14); }
.dashboard-body .button.primary,
.dashboard-body .tab.active {
    color: #fff;
    background: linear-gradient(135deg, #4f46e5, #2563eb);
    border-color: rgba(129, 140, 248, .54);
    box-shadow: 0 10px 28px rgba(37, 99, 235, .2), inset 0 1px 0 rgba(255, 255, 255, .16);
}
.dashboard-body .button:hover { opacity: 1; transform: translateY(-1px); }

.dashboard-body .session-table-wrap,
.dashboard-body .user-table-wrap { border-color: var(--admin-border); border-radius: 16px; background: rgba(6, 10, 23, .48); }
.dashboard-body .session-table th,
.dashboard-body .directory-table th {
    color: #b8c5ff;
    background: rgba(49, 46, 129, .28);
    border-color: var(--admin-border);
}
.dashboard-body .session-table td { border-color: rgba(148, 163, 184, .09); }
.dashboard-body .session-table tbody tr:hover,
.dashboard-body .directory-table tbody tr:hover { background: rgba(99, 102, 241, .07); }
.dashboard-body .directory-toolbar,
.dashboard-body .session-filter-panel,
.dashboard-body .filters { border-color: var(--admin-border); background: rgba(6, 10, 23, .48); }

.dashboard-body .settings-tabs { max-width: 1240px; }
.dashboard-body .settings-tabs.panel { padding: 30px; }
.dashboard-body .tab-list {
    gap: 5px;
    padding: 6px;
    border: 1px solid var(--admin-border);
    border-radius: 14px;
    background: rgba(6, 10, 23, .48);
}
.dashboard-body .tab { flex: 1 0 auto; min-height: 46px; color: #a8b6ce; }
.dashboard-body .tab:hover { color: #eef2ff; background: rgba(99, 102, 241, .09); }
.dashboard-body .tab-panel { max-width: 780px; padding-top: 32px; }
.dashboard-body .settings-form { gap: 18px; }
.dashboard-body .settings-form .button { justify-self: start; min-width: 190px; }
.dashboard-body .brand-settings-form { max-width: 720px; }
.dashboard-body .brand-preview {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 16px;
    border: 1px solid var(--admin-border);
    border-radius: 16px;
    background: rgba(6, 10, 23, .48);
}
.dashboard-body .brand-preview img {
    width: 72px;
    height: 72px;
    padding: 8px;
    object-fit: contain;
    border: 1px solid rgba(129, 140, 248, .24);
    border-radius: 16px;
    background: rgba(99, 102, 241, .08);
}
.dashboard-body .brand-preview strong,
.dashboard-body .brand-preview small { display: block; }
.dashboard-body .brand-preview small { margin-top: 4px; color: var(--admin-muted); }
.dashboard-body input[type="file"] { padding: 9px; cursor: pointer; }
.dashboard-body input[type="file"]::file-selector-button {
    margin-left: 12px;
    padding: 8px 12px;
    color: #e0e7ff;
    border: 1px solid rgba(129, 140, 248, .3);
    border-radius: 9px;
    background: rgba(79, 70, 229, .2);
    cursor: pointer;
}

@media (max-width: 1050px) {
    .dashboard-body .app-shell { grid-template-columns: 232px minmax(0, 1fr); }
    .dashboard-body .sidebar { padding-inline: 12px; }
    .dashboard-body .content { padding-inline: 24px; }
}

@media (max-width: 760px) {
    .dashboard-body .app-shell { display: block; }
    .dashboard-body .sidebar { width: min(86vw, 310px); padding: 20px 14px; }
    .dashboard-body .menu-button { display: grid; }
    .dashboard-body .topbar { height: 76px; padding: 0 16px; }
    .dashboard-body .topbar::after { right: 16px; }
    .dashboard-body .topbar p { max-width: 64vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .dashboard-body .content { padding: 18px 14px 36px; }
    .dashboard-body .panel { padding: 18px; border-radius: 18px; }
    .dashboard-body .settings-tabs.panel { padding: 18px; }
    .dashboard-body .tab-list { justify-content: flex-start; }
    .dashboard-body .tab { flex: 0 0 auto; }
    .dashboard-body .settings-form .button { width: 100%; }
}
code.copy-value { cursor: copy; user-select: all; }

:root {
    --pn-surface: #0f172a;
    --pn-surface-raised: #111c31;
    --pn-border: rgba(71, 85, 105, .52);
    --pn-text-muted: #a8b7cc;
    --pn-accent: #22c55e;
    --pn-focus: #60a5fa;
    --pn-primary: #2563eb;
    --pn-success: #059669;
    --pn-warning: #d97706;
    --pn-danger: #dc2626;
    --pn-radius-control: 12px;
    --pn-radius-card: 20px;
    --pn-motion: 180ms ease-out;
}

* { scrollbar-color: #334155 #020617; }
.button,.tab,.sidebar nav a { transition: background-color var(--pn-motion), border-color var(--pn-motion), color var(--pn-motion), transform var(--pn-motion); }
.button:focus-visible,.tab:focus-visible,.sidebar nav a:focus-visible { outline: 3px solid var(--pn-focus); outline-offset: 3px; }

.panel,
.stats-grid article,
.station-card,
.order-list article {
    border-color: var(--pn-border);
    box-shadow: 0 16px 42px rgba(0, 0, 0, .19);
}

.panel { background: linear-gradient(145deg, var(--pn-surface-raised), var(--pn-surface)); }
.stats-grid article { position: relative; overflow: hidden; }
.stats-grid article::before { content: ''; position: absolute; inset: 0 auto 0 0; width: 3px; background: linear-gradient(var(--pn-accent), #2563eb); opacity: .9; }
.stats-grid strong { letter-spacing: -.02em; }
.section-heading p,
.security-note { color: var(--pn-text-muted); }
.connection-card { display: grid; align-content: start; }
.security-note { margin: 2px 0 0; font-size: 12px; line-height: 1.9; }

.directory-panel { min-height: 380px; }
.directory-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) minmax(190px, 250px); gap: 12px; margin: 18px 0; padding: 14px; border: 1px solid var(--pn-border); border-radius: 15px; background: rgba(2, 6, 23, .42); }
.directory-toolbar label { margin: 0; }
.directory-toolbar input,
.directory-toolbar select { min-height: 46px; width: 100%; padding: 9px 12px; color: #f8fafc; border: 1px solid #3b4b63; border-radius: 11px; background: #020617; }
.directory-search input { direction: ltr; text-align: right; }
.directory-table tbody tr { transition: background-color .16s ease; }
.directory-table tbody tr:hover { background: rgba(34, 197, 94, .07); }
.directory-table td { white-space: nowrap; }
.sidebar nav a { border: 1px solid transparent; }
.sidebar nav a:hover,.sidebar nav a.active { border-color: rgba(96, 165, 250, .18); box-shadow: inset 0 1px 0 rgba(255,255,255,.04); }
.nav-icon { position: relative; width: 10px; height: 10px; border: 1.5px solid currentColor; border-radius: 3px; font-size: 0; opacity: .85; }
.sidebar nav a.active .nav-icon { background: currentColor; box-shadow: 0 0 0 4px rgba(96, 165, 250, .12); }

/* Payment setup uses a deliberately compact, grouped form. It must never
   inherit the generic full-width input rule for its checkbox. */
.payment-settings-shell { max-width: 980px; margin: 0 auto; }
.payment-settings-panel { padding: 0; overflow: hidden; }
.payment-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; padding: 28px 30px 22px; border-bottom: 1px solid var(--pn-border); background: linear-gradient(110deg, rgba(99,102,241,.14), transparent 55%); }
.payment-heading h2 { margin: 4px 0 8px; font-size: 23px; }
.payment-heading p { max-width: 620px; margin: 0; color: var(--pn-text-muted); }
.eyebrow { color: #a5b4fc; font-size: 12px; font-weight: 800; letter-spacing: .02em; }
.security-chip { flex: 0 0 auto; padding: 7px 10px; border: 1px solid rgba(52,211,153,.34); border-radius: 999px; color: #86efac; background: rgba(6,78,59,.32); font-size: 12px; font-weight: 800; }
.payment-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 18px; padding: 26px 30px 22px; }
.payment-form-grid label { margin: 0; font-size: 14px; }
.payment-form-grid .field-wide { grid-column: 1 / -1; }
.payment-form-grid input,.payment-form-grid select { width: 100%; min-height: 48px; margin-top: 1px; padding: 10px 12px; color: #f8fafc; border: 1px solid #3b4b63; border-radius: 11px; background: #050b18; }
.payment-form-grid input { direction: ltr; text-align: left; }
.payment-form-grid small,.check-field small { color: var(--pn-text-muted); font-size: 12px; font-weight: 500; line-height: 1.7; }
.payment-actions { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 18px 30px 26px; border-top: 1px solid var(--pn-border); background: rgba(2,6,23,.35); }
.payment-actions .button { min-width: 205px; }
.check-field { display: flex; align-items: center; gap: 11px; margin: 0; cursor: pointer; }
.check-field input[type="checkbox"] { appearance: none; display: grid; place-items: center; flex: 0 0 20px; width: 20px; min-height: 20px; height: 20px; margin: 0; padding: 0; border: 1px solid #64748b; border-radius: 6px; background: #050b18; direction: ltr; cursor: pointer; }
.check-field input[type="checkbox"]::after { content: ''; width: 8px; height: 4px; border: solid #fff; border-width: 0 0 2px 2px; transform: rotate(-45deg) translate(1px,-1px) scale(0); transition: transform .16s ease; }
.check-field input[type="checkbox"]:checked { border-color: #6366f1; background: #6366f1; }
.check-field input[type="checkbox"]:checked::after { transform: rotate(-45deg) translate(1px,-1px) scale(1); }
.check-field strong,.check-field small { display: block; }
.directory-panel { border-radius: 20px; }
.directory-panel .section-heading { padding-bottom: 6px; }
.directory-table th { padding-top: 14px; padding-bottom: 14px; background: #182759; color: #dbeafe; }
.directory-table td { padding-top: 13px; padding-bottom: 13px; }
.section-eyebrow { display:block; margin-bottom:5px; color:#93c5fd; font-size:10px; font-weight:800; letter-spacing:.12em; }
.identity-role { display:inline-flex; min-height:28px; align-items:center; padding:4px 10px; border:1px solid transparent; border-radius:999px; font-size:11px; font-weight:800; }
.identity-role.is-admin { color:#fde68a; border-color:rgba(245,158,11,.28); background:rgba(120,53,15,.28); }
.identity-role.is-user { color:#bfdbfe; border-color:rgba(59,130,246,.28); background:rgba(30,64,175,.22); }
.verified-mark { color:#6ee7b7; font-size:12px; font-weight:800; }
.directory-table td strong,.directory-table td small { display:block; }.directory-table td small { margin-top:4px;color:var(--pn-text-muted); }
.reservation-actions { display:flex; gap:6px; }.mini-action { min-height:34px; padding:5px 10px; border:1px solid transparent; border-radius:9px; cursor:pointer; font:inherit; font-size:11px; font-weight:800; }.mini-action.confirm { color:#a7f3d0;border-color:rgba(16,185,129,.32);background:rgba(6,78,59,.35);}.mini-action.reject { color:#fecaca;border-color:rgba(239,68,68,.3);background:rgba(127,29,29,.28);}
.settings-tabs { max-width: 980px; margin: 0 auto; }
.tab-list { display: flex; gap: 8px; padding-bottom: 20px; border-bottom: 1px solid var(--pn-border); overflow-x: auto; }
.tab { min-height: 44px; padding: 9px 16px; color: var(--pn-text-muted); background: transparent; border: 1px solid transparent; border-radius: 10px; cursor: pointer; white-space: nowrap; }
.tab.active { color: #fff; background: #2563eb; border-color: #3b82f6; }
.tab-panel { display: none; max-width: 700px; padding-top: 26px; }
.tab-panel.active { display: block; }
.tab-panel h2 { margin: 0 0 8px; }.tab-panel>p { color: var(--pn-text-muted); }
.settings-form { display: grid; gap: 16px; margin-top: 24px; }.settings-form label { margin: 0; }.settings-form input,.settings-form select { min-height: 46px; width: 100%; padding: 10px 12px; color:#fff; background:#050b18; border:1px solid #3b4b63; border-radius:11px; }
.settings-form .check-field input[type="checkbox"] { width:20px; min-height:20px; }

@media (max-width: 760px) {
    .directory-toolbar { grid-template-columns: 1fr; }
    .directory-table thead { display: none; }
    .directory-table,
    .directory-table tbody,
    .directory-table tr,
    .directory-table td { display: block; width: 100%; }
    .directory-table tr { padding: 11px 0; border-bottom: 1px solid var(--pn-border); }
    .directory-table tr:last-child { border-bottom: 0; }
    .directory-table td { display: grid; grid-template-columns: minmax(105px, .8fr) 1fr; gap: 12px; padding: 7px 4px; white-space: normal; border: 0; }
    .directory-table td::before { content: attr(data-label); color: var(--pn-text-muted); font-size: 12px; }
    .payment-heading { display: block; padding: 22px 18px 18px; }
    .security-chip { display: inline-block; margin-top: 14px; }
    .payment-form-grid { grid-template-columns: 1fr; padding: 20px 18px; }
    .payment-actions { align-items: stretch; flex-direction: column; padding: 18px; }
    .payment-actions .button { width: 100%; }
}

.fa-desktop::before { content: "\f390"; }
.fa-gamepad::before { content: "\f11b"; }
.fa-clock::before { content: "\f017"; }

/* Professional booking, wallet and Zone workspace */
.booking-hero { align-items: stretch; }
.wallet-card { min-width:330px;padding:20px;border:1px solid rgba(139,92,246,.35);border-radius:18px;background:linear-gradient(145deg,rgba(124,58,237,.2),rgba(15,23,42,.92)); }
.wallet-card>span,.wallet-card>strong { display:block }.wallet-card>span { color:var(--pn-text-muted);font-size:13px }.wallet-card>strong { margin:5px 0 14px;font-size:24px;color:#fff }
.inline-topup { display:flex;gap:8px }.inline-topup input { min-width:0;width:100%;padding:10px;border:1px solid #3b4b63;border-radius:10px;color:#fff;background:#050b18 }.inline-topup button { white-space:nowrap;padding:0 14px;border:0;border-radius:10px;color:#fff;background:#7c3aed;cursor:pointer }
.booking-layout { display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,.7fr);gap:20px;align-items:start;margin:20px 0 }.booking-form { display:grid;gap:18px }.form-grid,.type-picker { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px }.booking-form label,.type-picker label { display:grid;gap:8px;color:#cbd5e1;font-size:13px }.booking-form input,.booking-form select,.booking-form textarea,.type-picker input,.type-picker select { width:100%;padding:11px 12px;border:1px solid #334155;border-radius:11px;color:#f8fafc;background:#071020 }.booking-form textarea { resize:vertical }
.selection-switch,.payment-choice { display:flex;flex-wrap:wrap;gap:10px }.selection-switch label,.payment-choice label { display:flex;grid-template-columns:none;align-items:center;gap:8px;padding:12px 14px;border:1px solid #334155;border-radius:12px;background:#0b1425 }.selection-switch input,.payment-choice input,.rules-box input,.device-option input { width:auto }
.device-picker { display:grid;gap:14px }.device-picker fieldset,.sms-pattern-card { margin:0;padding:16px;border:1px solid #263650;border-radius:14px }.device-picker legend,.sms-pattern-card legend { padding:0 8px;color:#c4b5fd;font-weight:800 }.device-options { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px }.device-option { display:flex!important;align-items:center;gap:10px;padding:12px;border:1px solid #27364d;border-radius:12px;background:#0a1322;cursor:pointer }.device-option span { display:grid;gap:3px }.device-option small { color:#8090aa }.rules-box { display:flex!important;align-items:flex-start;gap:12px;padding:16px;border:1px solid rgba(245,158,11,.35);border-radius:14px;background:rgba(245,158,11,.07) }.rules-box span { display:grid;gap:6px }.rules-box small { color:#cbd5e1;line-height:1.9 }
.wallet-list { display:grid;gap:4px }.wallet-list>div { display:flex;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid #1e293b }.wallet-list span,.wallet-list small { display:block }.wallet-list small { margin-top:4px;color:#718096;font-size:11px }.wallet-list .credit { color:#34d399 }.wallet-list .debit { color:#fda4af }
.booking-cards,.reservation-admin-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px }.booking-cards article { display:flex;justify-content:space-between;gap:16px;padding:17px;border:1px solid #263650;border-radius:14px;background:#091323 }.booking-cards article>div { display:grid;gap:6px }.booking-cards article span { color:#94a3b8;font-size:13px }.rejection-reason,.danger-text { color:#fda4af!important }
.sms-credentials,.zone-settings-grid,.device-add-form,.blackout-form { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px }.sms-pattern-card { display:grid;gap:14px }.sms-actions { display:flex;flex-wrap:wrap;gap:10px }.sms-test-result { margin:18px 0;padding:16px;border:1px solid rgba(52,211,153,.35);border-radius:14px;background:rgba(16,185,129,.08) }
.zone-admin { display:grid;gap:20px }.zone-config-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px }.field-wide { grid-column:1/-1 }.compact-list { display:grid;gap:8px;margin-top:18px }.compact-list article { display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid #263650;border-radius:12px;background:#091323 }.compact-list article div,.compact-list article small { display:block }.compact-list small { color:#8492aa;margin-top:3px }.device-add-form,.blackout-form { grid-template-columns:repeat(5,minmax(0,1fr));align-items:end }.device-add-form label,.blackout-form label { display:grid;gap:7px }.device-add-form input,.device-add-form select,.blackout-form input,.blackout-form select { width:100%;padding:11px;border:1px solid #334155;border-radius:10px;color:#fff;background:#071020 }
.compact-list .compact-actions { display:flex;align-items:center;gap:8px;flex:0 0 auto }.compact-list .compact-actions form { margin:0 }.compact-list .compact-actions .mini-action { min-height:40px }
.payment-inline-error { display:flex;align-items:flex-start;gap:10px;margin:0 0 16px }.payment-inline-error>i { margin-top:3px }.payment-inline-error span { display:grid;gap:3px }
.payment-settings-note{display:flex;align-items:center;gap:12px;margin:16px 0;padding:14px 16px;border:1px solid rgba(52,211,153,.28);border-radius:14px;background:rgba(16,185,129,.07)}.payment-settings-note>i{color:#34d399;font-size:20px}.payment-settings-note span{display:grid;gap:3px}.payment-settings-note small{color:#91a2ba}.payment-settings-form input[dir=ltr]{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;text-align:left}

/* Payment callback */
.payment-result-body{min-height:100vh;margin:0;padding:clamp(24px,5vw,72px) 18px;display:grid;place-items:center;background:radial-gradient(circle at 50% 0,rgba(99,102,241,.2),transparent 42%),#070b17;color:#f8fafc;font-family:IRANSansX,IRANSans,sans-serif}
.payment-result-card{position:relative;isolation:isolate;width:min(100%,680px);overflow:hidden;padding:clamp(28px,5vw,52px);border:1px solid rgba(148,163,184,.2);border-radius:28px;background:linear-gradient(145deg,rgba(19,28,48,.98),rgba(10,16,30,.98));box-shadow:0 30px 90px rgba(0,0,0,.42);text-align:center}
.payment-result-glow{position:absolute;z-index:-1;inset:-180px auto auto 50%;width:360px;height:360px;transform:translateX(-50%);border-radius:50%;filter:blur(10px);opacity:.2;background:#ef4444}
.payment-result-card.is-success .payment-result-glow{background:#10b981}
.payment-result-icon{width:78px;height:78px;margin:0 auto 18px;display:grid;place-items:center;border-radius:24px;border:1px solid rgba(248,113,113,.35);background:rgba(239,68,68,.13);color:#f87171;font-size:2.2rem;font-weight:900;box-shadow:inset 0 0 28px rgba(239,68,68,.08)}
.payment-result-card.is-success .payment-result-icon{border-color:rgba(52,211,153,.4);background:rgba(16,185,129,.14);color:#34d399;box-shadow:inset 0 0 28px rgba(16,185,129,.1)}
.payment-result-kicker{display:inline-flex;padding:7px 12px;border-radius:999px;background:rgba(248,113,113,.1);color:#fca5a5;font-size:.78rem;font-weight:800}
.payment-result-card.is-success .payment-result-kicker{background:rgba(52,211,153,.1);color:#6ee7b7}
.payment-result-card h1{margin:14px 0 8px;font-size:clamp(1.45rem,4vw,2rem);line-height:1.5;color:#fff}
.payment-result-message{max-width:520px;margin:0 auto 26px;color:#aebbd0;line-height:2}
.payment-result-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:12px;border:1px solid rgba(148,163,184,.16);border-radius:20px;background:rgba(3,8,20,.44);text-align:right}
.payment-result-details div{min-width:0;padding:12px 14px;border-radius:14px;background:rgba(30,41,59,.5)}
.payment-result-details dt{margin-bottom:5px;color:#7f91ad;font-size:.75rem}
.payment-result-details dd{margin:0;color:#eef4ff;font-weight:750;overflow-wrap:anywhere}
.payment-result-details dd small{color:#90a2be;font-size:.72rem}
.payment-result-details .payment-result-date{grid-column:1/-1}
.payment-result-actions{display:flex;justify-content:center;gap:10px;margin-top:24px}
.payment-result-actions .button{min-width:170px;min-height:46px;justify-content:center}
.payment-result-note{margin:20px 0 0;color:#6f809c;font-size:.74rem;line-height:1.8}
@media(max-width:560px){.payment-result-card{padding:26px 18px;border-radius:22px}.payment-result-details{grid-template-columns:1fr}.payment-result-details .payment-result-date{grid-column:auto}.payment-result-actions{flex-direction:column}.payment-result-actions .button{width:100%}}
.zone-map-section { margin-top:22px }.zone-map-head { display:flex;justify-content:space-between;align-items:center;margin-bottom:10px }.zone-map-head h3,.zone-map-head p { margin:0 }.zone-map-head p { color:#8090aa }.zone-canvas { position:relative;min-height:420px;overflow:hidden;border:1px solid #334155;border-radius:18px;background-color:#07101e;background-image:linear-gradient(rgba(148,163,184,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.06) 1px,transparent 1px);background-size:24px 24px }.zone-device { position:absolute;left:var(--x);top:var(--y);display:grid;place-items:center;gap:4px;width:112px;min-height:94px;padding:10px;border:1px solid rgba(139,92,246,.5);border-radius:15px;background:#121d34;box-shadow:0 12px 28px rgba(0,0,0,.3);cursor:grab;user-select:none;transform:translate(-50%,-50%) }.zone-device i { color:#a78bfa;font-size:20px }.zone-device small { color:#8290a8 }.zone-device form { position:absolute;top:4px;left:6px }.zone-device button { border:0;color:#34d399;background:transparent;cursor:pointer }.zone-device.disabled { opacity:.5 }.zone-device.disabled button { color:#fb7185 }
.reservation-admin-card { padding:18px;border:1px solid #263650;border-radius:16px;background:#091323 }.reservation-admin-card header { display:flex;justify-content:space-between;gap:12px }.reservation-admin-card header small { display:block;margin-top:4px;color:#8290a8 }.reservation-admin-card dl { display:grid;gap:10px;margin:16px 0 }.reservation-admin-card dl div { display:grid;grid-template-columns:80px 1fr;gap:10px }.reservation-admin-card dt { color:#718096 }.reservation-admin-card dd { margin:0;color:#dbe4f2 }.decision-form { display:grid;gap:10px }.decision-form textarea { width:100%;padding:10px;border:1px solid #334155;border-radius:10px;color:#fff;background:#050b18 }.decision-form>div { display:flex;gap:8px }
.reservation-admin-grid { grid-template-columns:repeat(auto-fit,minmax(430px,1fr));gap:18px }.reservation-admin-card,.customer-booking-card { --reservation-accent:#f59e0b;position:relative;overflow:hidden;border:1px solid rgba(148,163,184,.18);background:linear-gradient(145deg,rgba(17,27,49,.98),rgba(7,15,29,.98));box-shadow:0 16px 40px rgba(0,0,0,.18) }.reservation-admin-card::before,.customer-booking-card::before { content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--reservation-accent) }.state-confirmed { --reservation-accent:#22c55e }.state-rejected { --reservation-accent:#ef4444 }.state-no_show { --reservation-accent:#f97316 }.reservation-admin-card { padding:20px;border-radius:20px }.reservation-card-head { align-items:flex-start }.reservation-customer { display:flex;align-items:center;gap:13px }.reservation-state-icon,.customer-booking-icon { display:grid;place-items:center;flex:0 0 48px;height:48px;border-radius:15px;color:var(--reservation-accent);background:color-mix(in srgb,var(--reservation-accent) 14%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--reservation-accent) 24%,transparent) }.reservation-customer h3 { margin:3px 0;font-size:17px }.reservation-customer a { color:#93a4c0;text-decoration:none;font-variant-numeric:tabular-nums }.reservation-customer a:hover { color:#fff }.reservation-admin-card .status-badge,.customer-booking-card .status-badge { display:inline-flex;align-items:center;min-height:30px;padding:5px 11px;border-radius:999px;line-height:1;white-space:nowrap }.reservation-facts { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:18px 0 }.reservation-facts>div { display:flex;align-items:flex-start;gap:10px;min-width:0;padding:13px;border:1px solid rgba(148,163,184,.13);border-radius:14px;background:rgba(4,10,22,.5) }.reservation-facts i { margin-top:3px;color:#818cf8 }.reservation-facts span,.reservation-facts strong { display:block;min-width:0 }.reservation-facts span { color:#8290a8;font-size:11px }.reservation-facts strong { margin-top:5px;color:#eef2ff;font-size:13px;line-height:1.7;overflow-wrap:anywhere }.reservation-extra { gap:0!important;margin:0 0 16px!important;border:1px solid rgba(148,163,184,.12);border-radius:14px;overflow:hidden }.reservation-extra>div { grid-template-columns:125px 1fr!important;padding:11px 13px;border-bottom:1px solid rgba(148,163,184,.1);background:rgba(15,23,42,.42) }.reservation-extra>div:last-child { border-bottom:0 }.decision-form { padding-top:16px;border-top:1px solid rgba(148,163,184,.15) }.decision-form label { display:grid;gap:7px }.decision-form label>span { color:#94a3b8;font-size:12px }.decision-form textarea { min-height:76px;padding:12px 14px;border-radius:13px;resize:vertical }.decision-form>div { flex-wrap:wrap }.decision-form .mini-action { min-height:42px;padding:9px 14px;border-radius:11px }.decision-form .mini-action i { margin-left:6px }
.booking-cards { grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:14px }.booking-cards .customer-booking-card { display:flex;align-items:flex-start;justify-content:flex-start;gap:14px;padding:18px;border-radius:18px }.customer-booking-main { display:grid!important;flex:1;gap:12px!important;min-width:0 }.customer-booking-main header { display:flex;align-items:flex-start;justify-content:space-between;gap:12px }.customer-booking-main header small,.customer-booking-main header strong { display:block }.customer-booking-main header small { margin-bottom:4px;color:#a5b4fc!important;font-size:11px!important }.customer-booking-main header strong { color:#f8fafc;font-size:15px;line-height:1.7 }.customer-booking-meta { display:flex;flex-wrap:wrap;gap:8px!important }.customer-booking-meta span { display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid rgba(148,163,184,.13);border-radius:10px;color:#aab8ce!important;background:rgba(3,10,22,.5) }.customer-booking-meta i { color:#818cf8 }.booking-alert { margin:0;padding:10px 12px;border:1px solid rgba(244,63,94,.24);border-radius:11px;color:#fecdd3;background:rgba(127,29,29,.12);line-height:1.8 }.booking-alert i { margin-left:6px }.customer-booking-actions { display:flex;justify-content:flex-end }.customer-booking-actions .link-danger { min-height:40px;padding:8px 13px;border:1px solid rgba(244,63,94,.3);border-radius:10px;color:#fda4af;background:rgba(244,63,94,.08);cursor:pointer }.customer-booking-actions .link-danger:hover { color:#fff;background:rgba(244,63,94,.18) }
.fa-hourglass-half::before{content:"\f252"}.fa-user-xmark::before{content:"\f235"}.fa-circle-xmark::before{content:"\f057"}.fa-check::before{content:"\f00c"}.fa-rotate-left::before{content:"\f2ea"}.fa-triangle-exclamation::before{content:"\f071"}.fa-circle-info::before{content:"\f05a"}.fa-desktop::before{content:"\f108"}
.state-requested .status-badge{color:#fbbf24!important;background:rgba(245,158,11,.13)!important}.state-confirmed .status-badge{color:#6ee7b7!important;background:rgba(34,197,94,.13)!important}.state-rejected .status-badge{color:#fda4af!important;background:rgba(239,68,68,.13)!important}.state-no_show .status-badge{color:#fdba74!important;background:rgba(249,115,22,.13)!important}
@media (max-width:900px){.booking-layout,.zone-config-grid,.booking-cards,.reservation-admin-grid{grid-template-columns:1fr}.form-grid,.type-picker,.sms-credentials,.zone-settings-grid{grid-template-columns:1fr}.device-add-form,.blackout-form{grid-template-columns:repeat(2,minmax(0,1fr))}.wallet-card{min-width:0;width:100%}}
@media (max-width:600px){.device-options,.device-add-form,.blackout-form{grid-template-columns:1fr}.zone-canvas{min-height:520px}.zone-device{width:96px}.inline-topup{flex-direction:column}}
@media (max-width:720px){.reservation-admin-grid,.booking-cards{grid-template-columns:1fr}.reservation-facts{grid-template-columns:1fr}.reservation-admin-card{padding:16px}.reservation-card-head,.customer-booking-main header{align-items:flex-start}.reservation-extra>div{grid-template-columns:1fr!important;gap:5px!important}.booking-cards .customer-booking-card{padding:15px}.reservation-state-icon,.customer-booking-icon{flex-basis:42px;height:42px}.decision-form>div .mini-action{flex:1}.customer-booking-main header{flex-wrap:wrap}}

.blackout-panel .blackout-form { grid-template-columns:repeat(4,minmax(0,1fr)); }
.working-hours-form { display:grid;grid-template-columns:minmax(260px,1.5fr) repeat(2,minmax(150px,.7fr)) minmax(180px,.8fr) auto;gap:14px;align-items:end;margin-bottom:24px;padding:18px;border:1px solid rgba(139,92,246,.32);border-radius:16px;background:linear-gradient(135deg,rgba(124,58,237,.12),rgba(9,19,35,.92)); }
.working-hours-form>label { display:grid;gap:7px;color:#cbd5e1;font-size:13px }.working-hours-form input[type=time] { width:100%;padding:11px;border:1px solid #334155;border-radius:10px;color:#fff;background:#071020 }
.working-hours-toggle { display:flex!important;align-items:center;gap:11px;min-height:46px }.working-hours-toggle input { width:20px;height:20px;margin:0;accent-color:#8b5cf6 }.working-hours-toggle span,.working-hours-toggle small { display:block }.working-hours-toggle small,.working-hours-summary small,.section-divider small { margin-top:4px;color:#8492aa;font-size:11px }
.working-hours-summary { display:flex;align-items:center;gap:11px;min-height:46px;padding:8px 12px;border:1px solid rgba(52,211,153,.28);border-radius:10px;background:rgba(16,185,129,.07) }.working-hours-summary i { color:#6ee7b7;font-size:18px }.working-hours-summary span,.working-hours-summary small { display:block }
.section-divider { display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 14px;padding-top:20px;border-top:1px solid #263650 }.section-divider span { color:#e2e8f0;font-weight:800 }
.blackout-all-day { display:flex!important;align-items:center;gap:10px;min-height:46px;padding:8px 12px;border:1px solid #334155;border-radius:10px;background:#0a1322; }
.blackout-all-day input { width:20px!important;height:20px;margin:0;accent-color:#8b5cf6; }
.blackout-all-day span,.blackout-all-day small { display:block }.blackout-all-day small { color:#8492aa;font-size:11px }
.blackout-list { display:grid;gap:10px;margin-top:22px }.blackout-item { display:flex;align-items:flex-start;gap:10px;padding:14px;border:1px solid #263650;border-radius:14px;background:#091323 }.blackout-item details { flex:1 }.blackout-item summary { display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:38px;cursor:pointer;list-style:none }.blackout-item summary::-webkit-details-marker { display:none }.blackout-item summary strong,.blackout-item summary small { display:block }.blackout-item summary small { margin-top:4px;color:#94a3b8 }.edit-hint { color:#a78bfa;font-size:12px }.blackout-edit-form { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid #263650 }.blackout-edit-form label { display:grid;gap:6px;color:#cbd5e1;font-size:12px }.blackout-edit-form input,.blackout-edit-form select { width:100%;padding:10px;border:1px solid #334155;border-radius:9px;color:#fff;background:#071020 }.blackout-delete { padding-top:3px }
@media (max-width:1100px){.working-hours-form{grid-template-columns:repeat(2,minmax(0,1fr))}.working-hours-toggle{grid-column:1/-1}}
@media (max-width:900px){.blackout-panel .blackout-form,.blackout-edit-form{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.working-hours-form,.blackout-panel .blackout-form,.blackout-edit-form{grid-template-columns:1fr}.working-hours-toggle{grid-column:auto}.section-divider{align-items:flex-start;flex-direction:column}.blackout-item{display:block}.blackout-delete{margin-top:10px}}

.device-add-form { grid-template-columns:repeat(6,minmax(0,1fr)); }
.sms-credentials { grid-template-columns:repeat(3,minmax(0,1fr)); }
.sms-credentials input[readonly] { color:#a78bfa;background:#111a2d;letter-spacing:1px;cursor:not-allowed; }
.sms-connection-test { display:flex;align-items:center;justify-content:space-between;gap:16px;margin:18px 0;padding:16px 18px;border:1px solid #334155;border-radius:14px;background:#091323; }
.sms-connection-test div,.sms-connection-test small { display:block }.sms-connection-test small { margin-top:4px;color:#94a3b8 }.sms-connection-test .button { white-space:nowrap }
.sms-balance-card { display:grid;gap:5px;margin:0 0 18px;padding:18px;border:1px solid rgba(52,211,153,.38);border-radius:14px;background:rgba(16,185,129,.08) }.sms-balance-card span,.sms-balance-card small { color:#94a3b8 }.sms-balance-card strong { color:#6ee7b7;font-size:24px }
@media (max-width:1100px){.device-add-form{grid-template-columns:repeat(3,minmax(0,1fr))}.sms-credentials{grid-template-columns:1fr}}
@media (max-width:600px){.device-add-form{grid-template-columns:1fr}.sms-connection-test{align-items:stretch;flex-direction:column}}

/* Zone floor-plan editor */
.zone-overview-panel,.device-layout-panel { overflow:hidden }
.map-help { display:inline-flex;align-items:center;gap:8px;color:#94a3b8;font-size:12px }
.zone-overview { position:relative;height:var(--overview-height);min-height:520px;overflow:hidden;border:1px solid #334155;border-radius:18px;background-color:#050d1a;background-image:linear-gradient(rgba(148,163,184,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.07) 1px,transparent 1px);background-size:24px 24px }
.zone-room { position:absolute;left:var(--x);top:var(--y);width:var(--w);height:var(--h);min-width:150px;min-height:110px;display:grid;place-items:center;overflow:hidden;border:1px solid rgba(139,92,246,.65);border-radius:18px;background:linear-gradient(145deg,rgba(30,41,59,.96),rgba(15,23,42,.92));box-shadow:0 16px 38px rgba(0,0,0,.28);cursor:pointer;transition:border-color .2s,box-shadow .2s,opacity .2s }
.zone-room:hover,.zone-room:focus-visible { border-color:#a78bfa;box-shadow:0 18px 45px rgba(76,29,149,.28) }.zone-room:focus-visible,.zone-device:focus-visible { outline:3px solid #60a5fa;outline-offset:3px }
.zone-room>div { display:grid;place-items:center;gap:5px;text-align:center;pointer-events:none }.zone-room>div>i { color:#a78bfa;font-size:24px }.zone-room>div small { color:#94a3b8 }.zone-room.disabled { opacity:.5 }
.zone-drag-handle,.zone-edit-trigger,.zone-resize-handle,.device-drag-handle,.dialog-close { display:grid;place-items:center;min-width:44px;min-height:44px;border:0;color:#c4b5fd;background:transparent;cursor:pointer;touch-action:none }
.zone-drag-handle { position:absolute;top:0;right:0;cursor:grab }.zone-edit-trigger { position:absolute;top:0;left:0 }.zone-resize-handle { position:absolute;bottom:0;left:0;cursor:nwse-resize }.zone-room .zone-edit-trigger:hover,.zone-drag-handle:hover,.zone-resize-handle:hover,.device-drag-handle:hover { color:#fff;background:rgba(139,92,246,.18) }
.zone-room.dragging,.zone-device.dragging { z-index:20;border-color:#c4b5fd;box-shadow:0 24px 55px rgba(76,29,149,.45);transition:none;cursor:grabbing }.zone-room.saving,.zone-device.saving { border-color:#fbbf24 }.zone-room.saved,.zone-device.saved { border-color:#34d399 }.zone-room.save-error,.zone-device.save-error { border-color:#fb7185 }
.zone-map-section { scroll-margin-top:92px }.zone-map-meta { display:flex;align-items:center;gap:10px }.zone-map-meta .zone-edit-trigger { position:static;min-width:auto;min-height:38px }
.zone-canvas { height:var(--room-height);min-height:360px;max-height:900px }
.zone-device { width:132px;min-height:116px;padding:36px 10px 12px;cursor:pointer;touch-action:manipulation;transition:border-color .18s,box-shadow .18s,opacity .18s }.zone-device:hover { border-color:#a78bfa;box-shadow:0 15px 34px rgba(76,29,149,.28) }
.zone-device .device-drag-handle { position:absolute;top:0;left:0;cursor:grab }.device-status { position:absolute;top:14px;right:14px;width:8px;height:8px;border-radius:50%;background:#34d399;box-shadow:0 0 0 4px rgba(52,211,153,.08) }.zone-device.disabled .device-status { background:#fb7185 }.zone-device>em { color:#6ee7b7;font-size:10px;font-style:normal }
.editor-dialog { width:min(680px,calc(100% - 28px));padding:0;border:1px solid #334155;border-radius:20px;color:#f8fafc;background:#0f172a;box-shadow:0 30px 100px rgba(0,0,0,.7) }.editor-dialog::backdrop { background:rgba(2,6,23,.72);backdrop-filter:blur(5px) }.editor-dialog form { padding:22px }.editor-dialog header,.editor-dialog footer { display:flex;align-items:center;justify-content:space-between;gap:14px }.editor-dialog header { margin-bottom:20px }.editor-dialog header h2 { margin:2px 0 0 }.editor-dialog footer { justify-content:flex-start;margin-top:22px;padding-top:18px;border-top:1px solid #263650 }.dialog-close { border-radius:12px;background:#182338 }.editor-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px }.editor-grid label { margin:0 }.editor-grid input,.editor-grid select,.editor-grid textarea { width:100%;padding:11px 12px;border:1px solid #334155;border-radius:10px;color:#fff;background:#071020 }.editor-grid textarea { resize:vertical }.editor-toggle { display:flex!important;align-items:flex-start;gap:10px;padding:13px;border:1px solid #334155;border-radius:12px;background:#0a1322 }.editor-toggle input { width:20px;height:20px;margin:2px 0 0;accent-color:#8b5cf6 }.editor-toggle span,.editor-toggle small { display:block }.editor-toggle small { margin-top:4px;color:#94a3b8;font-size:11px }.button.secondary { border:1px solid #334155;color:#cbd5e1;background:#172033 }
.fa-grip::before { content:"\f58d" }.fa-pen::before { content:"\f304" }.fa-door-open::before { content:"\f52b" }.fa-up-right-and-down-left-from-center::before { content:"\f424" }.fa-hand-pointer::before { content:"\f25a" }.fa-xmark::before { content:"\f00d" }
@media (max-width:760px){.zone-overview{height:620px}.zone-room{min-width:145px}.map-help{display:none}.zone-map-head{align-items:flex-start;gap:10px}.zone-map-meta{align-items:flex-end;flex-direction:column}.zone-device{width:116px}.editor-grid{grid-template-columns:1fr}.editor-grid .field-wide{grid-column:auto}}

/* Customer portal */
.portal-app { min-height:100dvh;background:radial-gradient(circle at 12% 8%,rgba(124,58,237,.12),transparent 30%),#030816 }.portal-app .portal-header { position:sticky;top:0;z-index:50;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:28px;min-height:78px;padding:12px max(20px,calc((100vw - 1440px)/2));border-bottom:1px solid rgba(51,65,85,.75);background:rgba(3,8,22,.9);backdrop-filter:blur(18px) }.portal-nav { display:flex;justify-content:center;gap:6px }.portal-nav a { display:flex;align-items:center;gap:8px;min-height:44px;padding:9px 14px;border-radius:11px;color:#94a3b8;text-decoration:none;font-weight:700;transition:.18s }.portal-nav a:hover,.portal-nav a.active { color:#fff;background:#172554 }.portal-nav a.active { box-shadow:inset 0 0 0 1px rgba(96,165,250,.25) }.portal-menu { display:none }.portal-app .portal-main { width:min(1440px,calc(100% - 32px));margin:0 auto;padding:28px 0 54px }
.portal-page-head,.portal-welcome { display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:22px;padding:28px;border:1px solid #243247;border-radius:22px;background:linear-gradient(135deg,rgba(30,58,138,.25),rgba(15,23,42,.9)) }.portal-page-head h1,.portal-welcome h1 { margin:4px 0;font-size:clamp(25px,3vw,36px) }.portal-page-head p,.portal-welcome p { margin:0;color:#94a3b8 }.portal-welcome .button { gap:9px }.booking-balance { text-align:left }.booking-balance span,.booking-balance strong { display:block }.booking-balance span { color:#94a3b8;font-size:12px }.booking-balance strong { font-size:21px }
.portal-stat-grid { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px }.portal-stat-grid article { position:relative;display:grid;gap:5px;padding:20px;border:1px solid #243247;border-radius:18px;background:#0d1628;overflow:hidden }.portal-stat-grid article>i { position:absolute;top:18px;left:18px;color:#8b5cf6;font-size:24px }.portal-stat-grid span,.portal-stat-grid small { color:#94a3b8 }.portal-stat-grid strong { font-size:27px;font-variant-numeric:tabular-nums }.portal-dashboard-grid { display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,.7fr);gap:20px }.bar-chart { display:flex;align-items:end;gap:12px;height:250px;padding-top:24px }.bar-chart>div { flex:1;display:grid;grid-template-rows:1fr auto;gap:10px;height:100%;text-align:center }.bar-chart span { position:relative;align-self:end;display:block;height:var(--bar);min-height:12px;border-radius:9px 9px 3px 3px;background:linear-gradient(#8b5cf6,#2563eb) }.bar-chart b { position:absolute;right:50%;bottom:calc(100% + 5px);color:#cbd5e1;font-size:10px;white-space:nowrap;transform:translateX(50%) }.bar-chart small { color:#94a3b8;font-size:11px }.upcoming-card { display:flex;flex-direction:column;gap:12px }.upcoming-card>strong { color:#c4b5fd;font-size:20px }.upcoming-card>span { color:#94a3b8 }.upcoming-card>a { margin-top:auto;color:#60a5fa;text-decoration:none }
.pro-booking-form { display:grid;gap:20px }.booking-step>header { display:flex;align-items:center;gap:13px;margin-bottom:20px }.booking-step>header>span { display:grid;place-items:center;flex:0 0 42px;height:42px;border-radius:13px;color:#fff;background:#6d28d9;font-size:18px;font-weight:900 }.booking-step h2,.booking-step h3,.booking-step p { margin:0 }.booking-step header p { color:#94a3b8;font-size:12px }.customer-zone-overview { position:relative;height:var(--overview-height);min-height:440px;overflow:hidden;border:1px solid #334155;border-radius:18px;background-color:#050d1a;background-image:linear-gradient(rgba(148,163,184,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.06) 1px,transparent 1px);background-size:24px 24px }.customer-zone { position:absolute;left:var(--x);top:var(--y);width:var(--w);height:var(--h);min-width:145px;min-height:100px;display:grid;place-items:center;align-content:center;gap:5px;border:1px solid rgba(139,92,246,.55);border-radius:17px;color:#fff;background:linear-gradient(145deg,#172033,#10182a);cursor:pointer }.customer-zone:hover,.customer-zone:focus-visible { border-color:#c4b5fd;box-shadow:0 16px 38px rgba(76,29,149,.3);transform:translateY(-2px) }.customer-zone i { color:#a78bfa;font-size:23px }.customer-zone small { color:#94a3b8 }.customer-room-head { display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px }.room-back { min-height:44px;padding:8px 13px;border:1px solid #334155;border-radius:11px;color:#cbd5e1;background:#111b2e;cursor:pointer }.customer-room-map { position:relative;min-height:470px;overflow:hidden;border:1px solid #334155;border-radius:18px;background-color:#050d1a;background-image:linear-gradient(rgba(148,163,184,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.06) 1px,transparent 1px);background-size:24px 24px }.customer-device { position:absolute;left:var(--x);top:var(--y);width:126px;margin:0;transform:translate(-50%,-50%);cursor:pointer }.customer-device input { position:absolute;opacity:0;pointer-events:none }.customer-device span { display:grid;place-items:center;gap:4px;min-height:106px;padding:12px;border:1px solid #3b4b63;border-radius:15px;color:#fff;background:#111a2e;transition:.18s }.customer-device i { color:#a78bfa;font-size:20px }.customer-device small { color:#8ca0bd }.customer-device input:checked+span { border-color:#34d399;background:linear-gradient(145deg,rgba(16,185,129,.2),#111a2e);box-shadow:0 0 0 3px rgba(52,211,153,.1) }.customer-device input:focus-visible+span { outline:3px solid #60a5fa;outline-offset:2px }.selected-devices { margin-top:14px;padding:13px 15px;border:1px solid #263650;border-radius:12px;color:#cbd5e1;background:#091323 }.assignment-option { margin-top:14px;padding:0;border:1px solid #263650;border-radius:12px }.assignment-option summary { padding:13px 15px;border:0 }.assignment-option .type-picker { padding:0 15px 15px }
.booking-calendar { overflow:hidden;border:1px solid #283851;border-radius:18px;background:linear-gradient(145deg,rgba(18,30,51,.94),rgba(7,16,31,.96));box-shadow:inset 0 1px rgba(255,255,255,.03) }.booking-calendar-head { display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border-bottom:1px solid #263650;background:rgba(15,23,42,.55) }.booking-calendar-head>div { display:flex;align-items:center;gap:11px }.booking-calendar-head i { display:grid;place-items:center;width:40px;height:40px;border-radius:12px;color:#c4b5fd;background:rgba(124,58,237,.18) }.booking-calendar-head span { display:grid;gap:2px }.booking-calendar-head small { color:#8191aa }.booking-calendar-head>b { padding:9px 13px;border:1px solid rgba(139,92,246,.38);border-radius:999px;color:#ddd6fe;background:rgba(76,29,149,.2);font-size:12px }.date-strip { display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px;padding:14px }.date-strip button,.time-slots button { min-height:62px;border:1px solid #31425d;border-radius:13px;color:#d7dfec;background:#091424;cursor:pointer;transition:.18s ease }.date-strip button { display:grid;place-items:center;align-content:center;gap:2px;padding:10px 5px }.date-strip button small,.date-strip button strong,.date-strip button em { display:block }.date-strip button small { color:#8da0bd;font-size:11px }.date-strip button strong { font-size:15px }.date-strip button em { color:#64748b;font-size:10px;font-style:normal }.date-strip button:hover,.time-slots button:hover { border-color:#7c5ce7;transform:translateY(-1px) }.date-strip button.active,.time-slots button.active { border-color:#a78bfa;color:#fff;background:linear-gradient(145deg,#6d28d9,#4c1d95);box-shadow:0 8px 24px rgba(76,29,149,.35) }.date-strip button.active small,.date-strip button.active em { color:#e9d5ff }.time-range-picker { display:grid;grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);align-items:stretch;gap:12px;margin-top:18px }.time-range-picker>section { padding:16px;border:1px solid #283851;border-radius:17px;background:#091323 }.time-range-head { display:flex;align-items:center;gap:10px }.time-range-head>span { display:grid;place-items:center;width:32px;height:32px;border-radius:10px;color:#c4b5fd;background:rgba(124,58,237,.16);font-weight:900 }.time-range-head>div { display:grid }.time-range-head small { color:#7f91ab }.range-arrow { align-self:center;color:#6d7890;text-align:center }.time-slots { display:flex;flex-wrap:wrap;gap:9px;min-height:86px;margin-top:14px;padding:12px;border:1px dashed #31425d;border-radius:14px;background:rgba(3,10,22,.38) }.time-slots button { min-width:78px }.time-slots p { margin:auto;color:#94a3b8;text-align:center }.selected-range { display:flex;align-items:center;gap:9px;margin-top:14px;padding:13px 15px;border:1px solid rgba(52,211,153,.25);border-radius:13px;color:#a7f3d0;background:rgba(16,185,129,.06) }.selected-range i { color:#34d399 }.booking-summary { display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;padding:15px;border:1px solid rgba(52,211,153,.3);border-radius:13px;background:rgba(16,185,129,.07) }.booking-summary strong { color:#6ee7b7;font-size:20px }.gateway-select { max-width:360px }
.customer-zone.selected { border-color:#34d399;box-shadow:0 0 0 3px rgba(52,211,153,.12),0 16px 38px rgba(16,185,129,.18) }.date-capacity { display:block;margin-top:3px;padding:2px 6px;border-radius:999px;color:#6ee7b7;background:rgba(16,185,129,.1);font-size:9px;font-weight:800 }.date-strip button.no-capacity { border-color:#263244;color:#64748b;background:#080f1b;cursor:not-allowed;opacity:.7 }.date-strip button.no-capacity .date-capacity { color:#fda4af;background:rgba(239,68,68,.09) }.date-strip button:disabled:hover { border-color:#263244;transform:none;box-shadow:none }
.wallet-hero { display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding:30px;border:1px solid rgba(139,92,246,.5);border-radius:22px;background:linear-gradient(135deg,#312e81,#111827);box-shadow:0 20px 55px rgba(49,46,129,.28) }.wallet-hero span,.wallet-hero strong,.wallet-hero p { display:block;margin:0 }.wallet-hero span,.wallet-hero p { color:#c4b5fd }.wallet-hero strong { margin:7px 0;font-size:34px }.wallet-hero strong small { font-size:15px }.wallet-hero>i { color:#c4b5fd;font-size:58px }.wallet-page-grid { display:grid;grid-template-columns:minmax(320px,.85fr) minmax(0,1.15fr);gap:20px }.wallet-charge-form { display:grid;gap:16px }.gateway-cards { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px }.gateway-cards label { margin:0;cursor:pointer }.gateway-cards input { position:absolute;opacity:0 }.gateway-cards span { display:grid;place-items:center;gap:4px;padding:17px;border:1px solid #334155;border-radius:14px;background:#0a1323 }.gateway-cards i { color:#a78bfa;font-size:22px }.gateway-cards small { color:#94a3b8 }.gateway-cards input:checked+span { border-color:#8b5cf6;background:#20164b;box-shadow:0 0 0 3px rgba(139,92,246,.1) }.profile-panel { width:min(760px,100%);margin:0 auto }.profile-form { display:grid;gap:16px }.profile-form label { margin:0 }.profile-form input { border-color:#334155;background:#071020 }.profile-form input[readonly] { color:#94a3b8;background:#111827 }.password-change { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:17px;border:1px solid #263650;border-radius:14px;background:#091323 }.password-change h3 { grid-column:1/-1;margin:0 }.password-change h3 small { color:#94a3b8;font-size:11px }
.group-availability-note { display:flex;align-items:flex-start;gap:10px;margin-top:16px;padding:13px 15px;border:1px solid rgba(96,165,250,.32);border-radius:13px;color:#bfdbfe;background:rgba(30,64,175,.12);line-height:1.8 }.group-availability-note[hidden] { display:none }.group-availability-note i { margin-top:5px;color:#60a5fa }
.booking-checkout-step{position:relative;overflow:hidden;background:linear-gradient(145deg,rgba(15,23,42,.98),rgba(8,15,30,.98))}.booking-checkout-step::before{position:absolute;top:-170px;left:-120px;width:360px;height:360px;border-radius:50%;background:rgba(109,40,217,.1);filter:blur(18px);content:"";pointer-events:none}.booking-checkout-step>header,.booking-checkout-step>div{position:relative}.checkout-amount{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px;padding:17px 19px;border:1px solid rgba(52,211,153,.26);border-radius:16px;background:linear-gradient(135deg,rgba(16,185,129,.11),rgba(15,23,42,.6));box-shadow:inset 0 1px rgba(255,255,255,.04)}.checkout-amount>span{display:flex;align-items:center;gap:12px}.checkout-amount>span>i{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;color:#6ee7b7;background:rgba(16,185,129,.13)}.checkout-amount>span>span{display:grid}.checkout-amount small{color:#cbd5e1;font-size:12px}.checkout-amount b{color:#71829c;font-size:10px}.checkout-amount>strong{color:#6ee7b7;font-size:clamp(20px,2.4vw,27px);font-variant-numeric:tabular-nums}.checkout-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.75fr);gap:16px;align-items:start}.checkout-main{display:grid;gap:14px}.checkout-section{margin:0;padding:17px;border:1px solid #293951;border-radius:17px;background:rgba(5,13,27,.62)}.checkout-section legend{padding:0 9px;color:#ddd6fe;font-size:13px;font-weight:900}.checkout-payment-choice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.checkout-payment-choice label{display:block;margin:0;padding:0;border:0;background:transparent;cursor:pointer}.checkout-payment-choice input{position:absolute;width:1px;height:1px;opacity:0}.checkout-payment-choice label>span{position:relative;display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:4px 11px;min-height:82px;padding:14px;border:1px solid #33445e;border-radius:14px;background:#0b1527;transition:border-color .18s ease,background .18s ease,box-shadow .18s ease}.checkout-payment-choice label>span>i{grid-row:1/3;display:grid;place-items:center;width:42px;height:42px;border-radius:12px;color:#a78bfa;background:rgba(124,58,237,.14);font-size:18px}.checkout-payment-choice b,.checkout-payment-choice small{grid-column:2;display:block}.checkout-payment-choice b{align-self:end;color:#f8fafc}.checkout-payment-choice small{align-self:start;color:#899ab4;font-size:11px}.checkout-payment-choice em{grid-column:3;grid-row:1/3;color:#3d4c63;font-style:normal}.checkout-payment-choice input:checked+span{border-color:#8b5cf6;background:linear-gradient(145deg,rgba(76,29,149,.34),#0b1527);box-shadow:0 0 0 3px rgba(139,92,246,.1)}.checkout-payment-choice input:checked+span em{color:#a78bfa}.checkout-payment-choice input:focus-visible+span{outline:3px solid #60a5fa;outline-offset:2px}.checkout-gateway{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:14px 0 0;padding:12px 14px;border:1px solid #2c3d57;border-radius:13px;background:#081222}.checkout-gateway[hidden]{display:none!important}.checkout-gateway>span,.checkout-gateway>span small{display:block}.checkout-gateway>span{color:#e2e8f0;font-size:12px}.checkout-gateway>span small{margin-top:2px;color:#7486a2;font-size:10px}.checkout-gateway select{width:min(260px,48%);min-height:44px;padding:8px 12px;border:1px solid #41516b;border-radius:10px;color:#fff;background:#111c30;font:inherit}.checkout-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.checkout-fields>label{display:grid;gap:10px;margin:0;padding:15px;border:1px solid #293951;border-radius:16px;background:rgba(5,13,27,.62)}.checkout-fields label>span{display:grid;grid-template-columns:34px 1fr;align-items:center;gap:1px 10px}.checkout-fields label>span>i{grid-row:1/3;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;color:#a78bfa;background:rgba(124,58,237,.12)}.checkout-fields label b,.checkout-fields label small{grid-column:2}.checkout-fields label b{color:#e2e8f0;font-size:12px}.checkout-fields label small{color:#7486a2;font-size:10px}.checkout-fields textarea{width:100%;min-height:108px;padding:12px 13px;resize:vertical;border:1px solid #34445d;border-radius:12px;color:#f8fafc;background:#071020;font:inherit;font-size:13px;line-height:1.8;transition:.18s ease}.checkout-fields textarea::placeholder{color:#52627a}.checkout-fields textarea:focus{outline:0;border-color:#8b5cf6;box-shadow:0 0 0 3px rgba(139,92,246,.11)}.checkout-confirm{position:sticky;top:96px;display:grid;gap:12px;padding:15px;border:1px solid #30405a;border-radius:17px;background:linear-gradient(155deg,rgba(17,27,47,.96),rgba(7,14,28,.98));box-shadow:0 18px 45px rgba(0,0,0,.2)}.checkout-safe{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;border:1px solid rgba(52,211,153,.18);border-radius:12px;background:rgba(16,185,129,.06)}.checkout-safe>i{margin-top:4px;color:#34d399}.checkout-safe span,.checkout-safe b,.checkout-safe small{display:block}.checkout-safe b{color:#d1fae5;font-size:12px}.checkout-safe small{margin-top:3px;color:#8aa39b;font-size:10px;line-height:1.8}.checkout-rules{margin:0;padding:14px;border-color:rgba(245,158,11,.3);border-radius:13px;background:rgba(245,158,11,.055);cursor:pointer}.checkout-rules input{flex:0 0 20px;width:20px;height:20px;margin:3px 0 0;accent-color:#8b5cf6}.checkout-rules strong{color:#fef3c7;font-size:12px}.checkout-rules small{max-height:150px;overflow:auto;padding-left:3px;color:#aebbd0;font-size:10px;line-height:2}.checkout-submit{display:flex;justify-content:space-between;gap:10px;min-height:52px;padding-inline:18px;background:linear-gradient(135deg,#7c3aed,#2563eb);box-shadow:0 12px 28px rgba(79,70,229,.24)}.checkout-submit-note{color:#6f809a;text-align:center;font-size:10px}.checkout-submit:hover{transform:translateY(-1px);box-shadow:0 15px 34px rgba(79,70,229,.3)}
.customer-support { display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:18px;background:linear-gradient(135deg,rgba(37,99,235,.13),rgba(124,58,237,.08)) }.customer-support h2 { margin:4px 0 6px }.customer-support p { margin:0;color:#94a3b8 }.support-links { display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end }.support-links a { display:flex;flex-direction:column;gap:2px;min-width:120px;padding:12px 15px;border:1px solid #334155;border-radius:14px;color:#f8fafc;background:rgba(7,15,30,.62);text-decoration:none;font-weight:800;transition:.18s ease }.support-links a:hover { transform:translateY(-2px);border-color:#6366f1;background:rgba(37,99,235,.12) }.support-links small { color:#94a3b8;font-weight:500;direction:ltr;text-align:right }
.booking-review-dialog { width:min(620px,calc(100% - 24px)) }.booking-review-content { padding:24px }.booking-review-content header,.booking-review-content footer { display:flex;align-items:center;justify-content:space-between;gap:12px }.booking-review-content h2 { margin:3px 0 0 }.booking-review-note { margin:16px 0;color:#94a3b8 }.booking-review-list { display:grid;gap:0;margin:0;border:1px solid #2a3950;border-radius:16px;overflow:hidden }.booking-review-list>div { display:grid;grid-template-columns:145px 1fr;gap:14px;padding:13px 15px;border-bottom:1px solid #263650 }.booking-review-list>div:last-child { border-bottom:0 }.booking-review-list dt { color:#94a3b8 }.booking-review-list dd { margin:0;color:#f8fafc;font-weight:700;overflow-wrap:anywhere }.booking-review-list .review-total { background:rgba(16,185,129,.07) }.booking-review-list .review-total dd { color:#6ee7b7;font-size:18px }.booking-review-content footer { justify-content:flex-start;margin-top:20px }
.user-edit-trigger { min-height:40px;border-color:rgba(139,92,246,.45);color:#ddd6fe;background:rgba(109,40,217,.14) }.editor-wide { grid-column:1/-1 }.editor-wide small { display:block;margin:4px 0 7px;color:#94a3b8 }.wallet-adjust-panel { display:grid;gap:14px;margin-top:18px;padding:16px;border:1px solid #334155;border-radius:14px;background:#081220 }.wallet-adjust-panel>div:first-child { display:flex;align-items:center;justify-content:space-between;gap:12px }.wallet-adjust-panel span { color:#94a3b8 }.wallet-adjust-panel strong { color:#6ee7b7;font-size:19px }.wallet-adjust-fields { display:grid;grid-template-columns:1fr 1.4fr;gap:12px }.wallet-adjust-fields label { margin:0 }.wallet-adjust-panel input { width:100%;padding:11px 12px;border:1px solid #334155;border-radius:10px;color:#fff;background:#071020 }.wallet-add { color:#a7f3d0!important;border-color:rgba(52,211,153,.4)!important }.wallet-subtract { color:#fecdd3!important;border-color:rgba(244,63,94,.4)!important }.reservation-number { display:block;margin-bottom:5px;color:#c4b5fd;font-size:12px }
.fa-house::before{content:"\f015"}.fa-wallet::before{content:"\f555"}.fa-user-pen::before{content:"\f4ff"}.fa-receipt::before{content:"\f543"}.fa-circle-check::before{content:"\f058"}.fa-plus::before{content:"\2b"}.fa-arrow-right::before{content:"\f061"}

/* Unified transaction ledger */
.fa-money-bill-transfer::before{content:"\e528"}.fa-arrow-trend-up::before{content:"\e098"}.fa-arrow-trend-down::before{content:"\e097"}.fa-building-columns::before{content:"\f19c"}.fa-magnifying-glass::before{content:"\f002"}.fa-trash::before{content:"\f1f8"}.fa-chevron-right::before{content:"\f054"}.fa-chevron-left::before{content:"\f053"}
.transaction-page{display:grid;gap:16px}.transaction-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.transaction-stats article{position:relative;min-height:116px;padding:18px 20px;overflow:hidden;border:1px solid var(--admin-border);border-radius:18px;background:linear-gradient(145deg,rgba(20,30,56,.94),rgba(9,15,31,.94))}.transaction-stats article>i{width:38px;height:38px;display:grid;place-items:center;margin-bottom:12px;color:#a5b4fc;border:1px solid rgba(129,140,248,.22);border-radius:12px;background:rgba(99,102,241,.12)}.transaction-stats article>span,.transaction-stats article>strong{display:block}.transaction-stats article>span{color:var(--admin-muted);font-size:12px}.transaction-stats article>strong{margin-top:4px;font-size:21px;font-variant-numeric:tabular-nums}.transaction-stats article>strong small{font-size:11px;color:var(--admin-muted)}.transaction-stats .credit>i{color:#34d399;border-color:rgba(52,211,153,.22);background:rgba(16,185,129,.1)}.transaction-stats .debit>i{color:#fb7185;border-color:rgba(251,113,133,.22);background:rgba(244,63,94,.1)}
.transaction-directory{min-width:0}.transaction-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:18px 0}.transaction-tabs{display:flex;align-items:center;gap:5px;max-width:100%;padding:4px;overflow-x:auto;border:1px solid var(--admin-border);border-radius:13px;background:rgba(2,6,23,.42);scrollbar-width:thin}.transaction-tabs button{min-height:36px;flex:0 0 auto;padding:6px 13px;color:#9eacc2;border:0;border-radius:9px;background:transparent;font:inherit;font-size:12px;font-weight:700;cursor:pointer;transition:.18s ease}.transaction-tabs button:hover{color:#fff;background:rgba(99,102,241,.1)}.transaction-tabs button.active{color:#fff;background:linear-gradient(135deg,#4f46e5,#6366f1);box-shadow:0 6px 18px rgba(79,70,229,.24)}.transaction-toolbar .directory-search{position:relative;min-width:min(320px,100%);margin:0}.transaction-toolbar .directory-search i{position:absolute;right:14px;top:50%;color:#71819b;transform:translateY(-50%)}.transaction-toolbar .directory-search input{width:100%;min-height:46px;padding:9px 40px 9px 13px;color:#fff;border:1px solid var(--admin-border);border-radius:13px;background:#070d1b}.transaction-toolbar .directory-search input:focus{outline:0;border-color:#6366f1;box-shadow:0 0 0 3px rgba(99,102,241,.12)}
.transaction-table td{vertical-align:middle}.transaction-table td>strong,.transaction-table td>small{display:block}.transaction-table td>small{margin-top:5px;color:#8291aa;font-size:11px}.transaction-table time{white-space:nowrap;color:#cbd5e1;font-size:12px}.transaction-kind{display:inline-flex;align-items:center;min-height:28px;padding:4px 9px;border:1px solid transparent;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}.kind-charge{color:#6ee7b7;border-color:rgba(16,185,129,.25);background:rgba(16,185,129,.1)}.kind-reservation{color:#c4b5fd;border-color:rgba(139,92,246,.26);background:rgba(139,92,246,.11)}.kind-refund{color:#7dd3fc;border-color:rgba(14,165,233,.25);background:rgba(14,165,233,.1)}.kind-adjustment{color:#fcd34d;border-color:rgba(245,158,11,.25);background:rgba(245,158,11,.1)}.kind-gateway{color:#cbd5e1;border-color:rgba(148,163,184,.24);background:rgba(148,163,184,.09)}.kind-server{color:#67e8f9;border-color:rgba(6,182,212,.24);background:rgba(6,182,212,.12)}.transaction-amount{white-space:nowrap;font-variant-numeric:tabular-nums}.transaction-amount.credit{color:#34d399}.transaction-amount.debit{color:#fb7185}.transaction-amount.neutral{color:#e2e8f0}.transaction-table .status-badge{display:inline-flex;margin-top:6px}.transaction-table tr[hidden]{display:none}.table-empty{padding:28px;text-align:center;color:var(--admin-muted)}
.transaction-directory .inline-actions,.transaction-directory .inline-actions form{display:flex;align-items:center;gap:8px;margin:0}.transaction-delete{margin:0}.transaction-delete button{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:6px 10px;color:#fda4af;border:1px solid rgba(244,63,94,.32);border-radius:9px;background:rgba(244,63,94,.09);font:inherit;font-size:11px;font-weight:800;cursor:pointer}.transaction-delete button:hover{color:#fff;background:#be123c}.transaction-pagination{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px;padding:12px 14px;border:1px solid var(--admin-border);border-radius:14px;background:rgba(2,6,23,.38)}.transaction-pagination>span{color:var(--admin-muted);font-size:12px}.transaction-pagination>div{display:flex;align-items:center;gap:8px}.transaction-pagination button{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:6px 12px;color:#c7d2fe;border:1px solid rgba(99,102,241,.3);border-radius:10px;background:rgba(79,70,229,.1);font:inherit;font-size:12px;font-weight:800;cursor:pointer}.transaction-pagination button:hover:not(:disabled){color:#fff;background:#4f46e5}.transaction-pagination button:disabled{opacity:.38;cursor:not-allowed}.transaction-pagination strong{min-width:92px;text-align:center;font-size:12px}
.reconciliation-card{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:18px}.reconciliation-card>div{max-width:520px}.reconciliation-card h2{margin:4px 0}.reconciliation-card p{margin:0;color:var(--admin-muted)}.reconciliation-card dl{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:10px;margin:0}.reconciliation-card dl div{padding:14px 16px;border:1px solid var(--admin-border);border-radius:14px;background:rgba(7,16,31,.45)}.reconciliation-card dt{color:var(--admin-muted);font-size:.78rem}.reconciliation-card dd{margin:7px 0 0;font-weight:850}
.agent-health-strip{display:flex;gap:10px;overflow:auto;margin:0 0 16px;padding:2px}.agent-health-strip article{display:flex;align-items:center;gap:10px;min-width:210px;padding:12px 14px;border:1px solid var(--admin-border);border-radius:14px;background:rgba(8,18,35,.72)}.agent-health-strip i{width:9px;height:9px;border-radius:50%;background:#64748b;box-shadow:0 0 0 5px rgba(100,116,139,.12)}.agent-health-strip article.online i{background:#34d399;box-shadow:0 0 0 5px rgba(52,211,153,.12)}.agent-health-strip article.warning i{background:#fbbf24;box-shadow:0 0 0 5px rgba(251,191,36,.12)}.agent-health-strip article.offline i{background:#fb7185;box-shadow:0 0 0 5px rgba(251,113,133,.12)}.agent-health-strip strong,.agent-health-strip small{display:block}.agent-health-strip small{margin-top:3px;color:var(--admin-muted);font-size:.72rem}
@media(max-width:900px){.reconciliation-card{align-items:stretch;flex-direction:column}.reconciliation-card dl{grid-template-columns:1fr}}
@media print{.sidebar,.topbar,.transaction-toolbar,.inline-actions{display:none!important}.main-area{margin:0!important}.panel{box-shadow:none!important}.transaction-page{padding:0!important}}
@media(max-width:1000px){.transaction-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.transaction-toolbar{align-items:stretch;flex-direction:column}.transaction-toolbar .directory-search{width:100%}}
@media(max-width:640px){.transaction-stats{grid-template-columns:1fr 1fr}.transaction-stats article{min-height:104px;padding:15px}.transaction-stats article>strong{font-size:17px}.transaction-tabs{width:100%}.transaction-directory .inline-actions{flex-wrap:wrap}.transaction-pagination{align-items:stretch;flex-direction:column}.transaction-pagination>div{justify-content:space-between}}
@media(max-width:420px){.transaction-stats{grid-template-columns:1fr}}
@media(max-width:1000px){.portal-app .portal-header{grid-template-columns:auto auto 1fr}.portal-menu{display:grid;place-items:center;width:44px;height:44px;border:1px solid #334155;border-radius:12px;color:#fff;background:#111827}.portal-nav{position:fixed;top:78px;right:16px;left:16px;display:none;grid-template-columns:repeat(2,1fr);padding:12px;border:1px solid #334155;border-radius:16px;background:#0b1221;box-shadow:0 20px 60px rgba(0,0,0,.55)}.portal-menu-open .portal-nav{display:grid}.portal-user{justify-self:end}.portal-stat-grid{grid-template-columns:repeat(2,1fr)}.portal-dashboard-grid,.wallet-page-grid,.checkout-layout{grid-template-columns:1fr}.checkout-confirm{position:static}.date-strip{grid-template-columns:repeat(4,1fr)}}
@media(max-width:640px){.portal-app .portal-header{gap:9px;padding:10px 14px}.portal-brand span,.portal-user span{display:none}.portal-app .portal-main{width:min(100% - 20px,1440px);padding-top:14px}.portal-page-head,.portal-welcome{align-items:flex-start;flex-direction:column;padding:20px}.portal-stat-grid{grid-template-columns:1fr 1fr;gap:9px}.portal-stat-grid article{padding:15px}.portal-stat-grid article>i{top:14px;left:14px;font-size:19px}.portal-stat-grid strong{font-size:21px}.booking-calendar-head{align-items:flex-start;flex-direction:column}.date-strip{display:flex;overflow:auto;scroll-snap-type:x mandatory}.date-strip button{flex:0 0 112px;scroll-snap-align:start}.time-range-picker{grid-template-columns:1fr}.range-arrow{transform:rotate(-90deg)}.customer-zone-overview{height:600px}.customer-zone{min-width:135px}.customer-room-map{min-height:580px}.customer-device{width:105px}.booking-cards{grid-template-columns:1fr}.gateway-cards,.password-change,.user-editor-dialog .editor-grid,.wallet-adjust-fields,.checkout-payment-choice,.checkout-fields{grid-template-columns:1fr}.checkout-amount{align-items:flex-start;flex-direction:column}.checkout-amount>strong{align-self:flex-end}.checkout-gateway{align-items:stretch;flex-direction:column}.checkout-gateway select{width:100%}.booking-checkout-step{padding:16px}.password-change h3{grid-column:auto}.wallet-hero{padding:22px}.wallet-hero>i{font-size:42px}.customer-support{align-items:stretch;flex-direction:column}.support-links{justify-content:stretch}.support-links a{flex:1 1 130px}.booking-review-content{padding:18px}.booking-review-list>div{grid-template-columns:1fr;gap:5px}.booking-review-content footer{align-items:stretch;flex-direction:column-reverse}.booking-review-content footer .button{width:100%}}

/* Minimal reservation desk */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.reservations-directory{padding:20px}.reservations-directory>.section-heading{margin-bottom:14px}.reservation-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.reservation-tabs{display:flex;gap:4px;padding:4px;border:1px solid #263650;border-radius:12px;background:#071020}.reservation-tabs button{min-height:38px;padding:7px 14px;border:0;border-radius:8px;color:#94a3b8;background:transparent;cursor:pointer;font-weight:700}.reservation-tabs button:hover{color:#e2e8f0;background:#111c30}.reservation-tabs button.active{color:#fff;background:#334155}.reservation-toolbar .directory-search{position:relative;width:min(330px,100%);margin:0}.reservation-toolbar .directory-search i{position:absolute;right:13px;top:50%;color:#64748b;transform:translateY(-50%)}.reservation-toolbar .directory-search input{width:100%;min-height:46px;padding-right:38px;border-radius:11px}
.reservations-directory .reservation-admin-grid{gap:12px}.reservations-directory .reservation-admin-card{padding:16px;border-radius:14px;box-shadow:none}.reservations-directory .reservation-admin-card::before{height:2px}.reservations-directory .reservation-state-icon{flex-basis:40px;height:40px;border-radius:11px}.reservations-directory .reservation-card-head h3{margin:1px 0;font-size:15px}.reservations-directory .reservation-card-head a{font-size:12px}.reservations-directory .reservation-number{margin:0;font-size:11px}.reservations-directory .reservation-facts{gap:8px;margin-top:12px}.reservations-directory .reservation-facts>div{padding:10px;border-radius:10px}.reservations-directory .reservation-facts strong{margin-top:2px;font-size:12px}.reservations-directory .reservation-extra{margin:10px 0!important;border-radius:10px}.reservations-directory .reservation-extra>div{padding:8px 11px}.reservations-directory .decision-form{grid-template-columns:1fr;gap:10px;padding-top:10px}.reservations-directory .decision-form textarea{height:58px;min-height:58px;padding:9px 11px}.reservations-directory .decision-form>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%}.reservations-directory .decision-form .mini-action{display:inline-flex;align-items:center;justify-content:center;min-width:0;min-height:42px;padding:8px 10px;line-height:1.6;text-align:center;white-space:normal}.reservations-directory .decision-form .mini-action i{flex:0 0 auto;margin:0 0 0 6px}
@media(max-width:760px){.reservation-toolbar{align-items:stretch;flex-direction:column}.reservation-tabs{display:grid;grid-template-columns:repeat(2,1fr)}.reservation-toolbar .directory-search{width:100%}.reservations-directory .decision-form{grid-template-columns:1fr}.reservations-directory .decision-form>div{flex-wrap:wrap}}
@media(max-width:480px){.reservations-directory .decision-form>div{grid-template-columns:1fr}}

/* Reservation deletion controls */
.reservation-bulk-bar{display:flex;align-items:center;gap:10px;margin:-4px 0 14px;padding:10px 12px;border:1px solid #263650;border-radius:12px;background:#091426}.reservation-bulk-bar>[data-selection-count]{flex:1;color:#94a3b8;font-size:12px;font-weight:700}.reservation-bulk-bar .mini-action{min-height:38px}.reservation-bulk-bar button:disabled{cursor:not-allowed;opacity:.45}.reservations-directory .reservation-admin-card{position:relative}.reservations-directory .reservation-card-head{padding-left:44px}.reservation-select-box{position:absolute;top:14px;left:14px;z-index:2;display:grid;place-items:center;width:30px;height:30px;cursor:pointer}.reservation-select-box input{position:absolute;opacity:0;pointer-events:none}.reservation-select-box span{display:grid;place-items:center;width:30px;height:30px;border:1px solid #40506a;border-radius:9px;color:transparent;background:#0b1527;transition:.18s ease}.reservation-select-box:hover span{border-color:#7c6cff}.reservation-select-box input:checked+span{border-color:#7c6cff;color:#fff;background:#6957e8;box-shadow:0 0 0 3px rgba(105,87,232,.14)}.reservation-delete-one{display:inline-flex;align-items:center;gap:7px;min-height:36px;margin-top:10px;padding:7px 11px;border:1px solid rgba(248,113,113,.32);border-radius:9px;color:#fca5a5;background:rgba(127,29,29,.13);cursor:pointer;font-family:inherit;font-weight:700}.reservation-delete-one:hover{border-color:#ef4444;color:#fff;background:rgba(185,28,28,.26)}
@media(max-width:640px){.reservation-bulk-bar{align-items:stretch;flex-direction:column}.reservation-bulk-bar>[data-selection-count]{text-align:center}.reservation-bulk-bar .mini-action{width:100%}}

/* Responsive foundation shared by public, customer and admin pages. */
html { overflow-x: clip; }
body,main,section,article,form,fieldset,.main-area,.content { min-width: 0; }
img,svg,video,canvas { max-width: 100%; }
button,input,select,textarea { max-width: 100%; touch-action: manipulation; }
dialog { max-width: calc(100vw - 24px); max-height: calc(100dvh - 24px); overflow: auto; }

@media (max-width: 1280px) {
    .portal-nav { gap: 3px; }
    .portal-nav a { padding-inline: 10px; }
    .dashboard-body .content { padding-inline: 26px; }
}

@media (max-width: 1024px) {
    .zone-config-grid,.booking-layout { grid-template-columns: 1fr; }
    .dashboard-body .content { padding-inline: 20px; }
    .compact-list article { align-items: flex-start; }
    .portal-nav { z-index: 70; max-height: calc(100dvh - 96px); overflow-y: auto; overscroll-behavior: contain; }
}

@media (max-width: 760px) {
    input:not([type="checkbox"]):not([type="radio"]),select,textarea { font-size: 16px; }
    .button,.mini-action,.filter,.tab,.reservation-tabs button { min-height: 44px; }
    .install-body,.auth-body { padding: 12px; }
    .install-hero { align-items: flex-start; }
    .install-hero h1 { font-size: 24px; }
    .install-shell>.panel { padding: 18px; }
    .dashboard-body .topbar>div { min-width: 0; }
    .dashboard-body .topbar h1 { overflow: hidden; font-size: 17px; text-overflow: ellipsis; white-space: nowrap; }
    .dashboard-body .sidebar { z-index: 100; overflow-y: auto; overscroll-behavior: contain; }
    .dashboard-body .content { padding: 16px 12px 32px; }
    .dashboard-body .panel { padding: 16px; }
    .section-heading { margin-top: 16px; }
    .directory-panel,.reservations-directory { min-height: 0; padding: 16px; }
    .directory-table td { grid-template-columns: minmax(88px,.65fr) minmax(0,1fr); overflow-wrap: anywhere; }
    .compact-list article { align-items: stretch; flex-direction: column; }
    .compact-list .compact-actions { width: 100%; flex-wrap: wrap; }
    .compact-list .compact-actions>* { flex: 1; }
    .zone-map-head,.customer-room-head { align-items: flex-start; flex-wrap: wrap; gap: 8px; }
    .zone-map-head p { width: 100%; }
    .zone-canvas { border-radius: 14px; }
    .editor-dialog { width: calc(100% - 20px); }
    .editor-dialog form { padding: 18px; }
    .editor-dialog footer { align-items: stretch; flex-direction: column-reverse; }
    .editor-dialog footer .button { width: 100%; }
    .payment-heading,.payment-form-grid,.payment-actions { padding-inline: 16px; }
    .reservation-card-head { flex-wrap: wrap; }
    .reservation-customer { min-width: 0; }
    .reservation-customer h3,.reservation-customer a { overflow-wrap: anywhere; }
    .transaction-table td,.directory-table td { white-space: normal; }
    .transaction-pagination button { min-height: 44px; }
    .portal-app .portal-header { min-height: 70px; }
    .portal-nav { top: 70px; right: 10px; left: 10px; }
    .portal-nav a { min-height: 48px; justify-content: center; }
    .portal-user a { min-width: 44px; min-height: 44px; justify-content: center; }
    .portal-page-head h1,.portal-welcome h1 { font-size: clamp(22px,7vw,29px); }
    .wallet-hero { gap: 16px; flex-wrap: wrap; }
    .wallet-hero strong { font-size: clamp(25px,8vw,34px); overflow-wrap: anywhere; }
    .selected-range,.booking-summary { align-items: flex-start; flex-direction: column; }
    .time-slots button { min-width: 72px; min-height: 56px; }
    .customer-zone-overview,.customer-room-map { max-width: 100%; }
}

@media (max-width: 480px) {
    .auth-body { padding: 8px; }
    .auth-shell { border-radius: 20px; }
    .auth-brand { padding: 22px 18px; }
    .auth-brand-identity { gap: 11px; }
    .auth-brand-identity img { width: 54px; height: 54px; flex-basis: 54px; }
    .auth-card { padding: 26px 18px; }
    .auth-card-head h2 { font-size: 22px; }
    .install-body { padding: 8px; }
    .install-hero { gap: 12px; }
    .dashboard-body .topbar { height: 68px; padding-inline: 12px; }
    .dashboard-body .topbar p { display: none; }
    .dashboard-body .content { padding-inline: 10px; }
    .dashboard-body .panel,.reservations-directory { padding: 14px; border-radius: 15px; }
    .settings-tabs.panel { padding-inline: 12px; }
    .tab-list { gap: 5px; margin-inline: -2px; padding-bottom: 14px; }
    .tab { padding-inline: 12px; }
    .reservation-tabs { grid-template-columns: 1fr 1fr; }
    .reservation-tabs button { padding-inline: 8px; }
    .reservation-customer { align-items: flex-start; gap: 9px; }
    .reservation-state-icon { flex-basis: 38px; height: 38px; }
    .reservation-admin-card .status-badge { margin-right: 47px; }
    .transaction-pagination>div { gap: 5px; }
    .transaction-pagination button { padding-inline: 9px; }
    .transaction-pagination strong { min-width: 70px; }
    .portal-app .portal-header { grid-template-columns: auto auto 1fr; padding-inline: 10px; }
    .portal-brand img { width: 44px; height: 44px; }
    .portal-menu { width: 44px; height: 44px; }
    .portal-nav { grid-template-columns: 1fr; }
    .portal-app .portal-main { width: calc(100% - 16px); }
    .portal-page-head,.portal-welcome,.wallet-hero { padding: 17px; border-radius: 17px; }
    .portal-stat-grid { grid-template-columns: 1fr; }
    .bar-chart { gap: 7px; height: 220px; }
    .booking-step { padding: 14px; }
    .booking-step>header { align-items: flex-start; }
    .date-strip button { flex-basis: 104px; }
    .time-slots { gap: 7px; padding: 9px; }
    .time-slots button { flex: 1 1 72px; }
    .booking-checkout-step { padding: 14px; }
    .checkout-section { padding: 13px; }
    .checkout-payment-choice label>span { grid-template-columns: 38px minmax(0,1fr) auto; padding: 12px; }
    .checkout-payment-choice label>span>i { width: 38px; height: 38px; }
    .support-links { display: grid; grid-template-columns: 1fr; }
    .support-links a { min-width: 0; }
    .payment-result-body { padding-inline: 10px; }
    .payment-result-card { padding-inline: 15px; }
}

@media (max-width: 640px) {
    .customer-zone-overview {
        display: grid;
        grid-template-columns: repeat(2,minmax(0,1fr));
        gap: 10px;
        height: auto;
        min-height: 0;
        padding: 10px;
        overflow: visible;
    }
    .customer-zone {
        position: relative;
        inset: auto;
        width: 100%;
        height: auto;
        min-width: 0;
        min-height: 126px;
        padding: 14px 8px;
    }
    .customer-zone strong { max-width: 100%; overflow-wrap: anywhere; text-align: center; }
    .customer-room-map {
        display: grid;
        grid-template-columns: repeat(2,minmax(0,1fr));
        gap: 10px;
        min-height: 0;
        padding: 10px;
        overflow: visible;
    }
    .customer-device {
        position: relative;
        inset: auto;
        width: 100%;
        transform: none;
    }
    .customer-device span { height: 100%; min-height: 112px; }
}

@media (max-width: 340px) {
    .customer-zone-overview,.customer-room-map { grid-template-columns: 1fr; }
}

@media (max-height: 700px) and (min-width: 821px) {
    .auth-body { align-items: start; }
    .auth-brand { min-height: 520px; padding-block: 36px; }
    .auth-brand ul { margin-top: 20px; }
}
