:root {
    --portal-bg: #0f172a;
    --portal-card: rgba(255,255,255,.96);
}
body.portal-body {
    min-height: 100vh;
    background:
        radial-gradient(circle at top left, rgba(13,110,253,.35), transparent 35%),
        radial-gradient(circle at bottom right, rgba(25,135,84,.28), transparent 35%),
        var(--portal-bg);
}
.portal-card {
    background: var(--portal-card);
    border: 0;
    border-radius: 1.5rem;
    box-shadow: 0 1rem 3rem rgba(0,0,0,.25);
}
.brand-badge {
    width: 54px;
    height: 54px;
    border-radius: 18px;
    display: grid;
    place-items: center;
    background: linear-gradient(135deg, #0d6efd, #20c997);
    color: #fff;
    font-weight: 800;
}
.admin-shell {
    background: #f5f7fb;
    min-height: 100vh;
}
.admin-card {
    border: 0;
    border-radius: 1rem;
    box-shadow: 0 .5rem 1.5rem rgba(15,23,42,.08);
}
.table thead th {
    font-size: .8rem;
    text-transform: uppercase;
    color: #64748b;
}
.qr-box {
    max-width: 420px;
    margin: 0 auto;
}
@media (max-width: 576px) {
    .portal-card { border-radius: 1rem; }
    .display-6 { font-size: 1.55rem; }
}

.admin-footer {
    position: relative;
    z-index: 1;
}
.admin-footer strong {
    color: #334155;
}
@media (max-width: 576px) {
    .admin-footer .container {
        flex-direction: column;
    }
}

.portal-body {
    background:
        radial-gradient(circle at top left, color-mix(in srgb, var(--brand-primary, #0d6efd) 35%, transparent), transparent 35%),
        radial-gradient(circle at bottom right, color-mix(in srgb, var(--brand-secondary, #20c997) 30%, transparent), transparent 35%),
        var(--brand-bg, #0f172a);
}
.brand-badge {
    background: linear-gradient(135deg, var(--brand-primary, #0d6efd), var(--brand-secondary, #20c997));
}
.btn-primary {
    --bs-btn-bg: var(--brand-primary, #0d6efd);
    --bs-btn-border-color: var(--brand-primary, #0d6efd);
}
.btn-success {
    --bs-btn-bg: var(--brand-secondary, #198754);
    --bs-btn-border-color: var(--brand-secondary, #198754);
}
.portal-logo {
    max-height: 64px;
    max-width: 220px;
    object-fit: contain;
}

.admin-navbar .nav-link {
    border-radius: .6rem;
    padding-left: .75rem;
    padding-right: .75rem;
}
.admin-navbar .nav-link.active {
    background: rgba(255,255,255,.14);
}
@media (max-width: 1199.98px) {
    .admin-navbar .navbar-collapse {
        padding-top: .75rem;
    }
    .admin-navbar .nav-link {
        padding: .75rem 1rem;
        margin-bottom: .15rem;
        background: rgba(255,255,255,.04);
    }
    .admin-navbar .navbar-text {
        padding: .75rem 0;
    }
}


/* Mobile admin UX enhancements */
.admin-brand-dot{width:.8rem;height:.8rem;border-radius:50%;display:inline-block;background:linear-gradient(135deg,#0d6efd,#20c997);box-shadow:0 0 0 .25rem rgba(13,110,253,.15)}
.admin-navbar .nav-link{border-radius:.75rem;padding:.55rem .85rem;margin:0 .1rem;color:rgba(255,255,255,.75)}
.admin-navbar .nav-link.active{background:rgba(255,255,255,.14);color:#fff}
.admin-user-pill{padding:.35rem .65rem;border-radius:999px;background:rgba(255,255,255,.08)}
.admin-offcanvas{max-width:86vw}
.admin-mobile-menu .list-group-item{color:rgba(255,255,255,.9);background:transparent;border-color:rgba(255,255,255,.08);border-radius:.9rem;margin-bottom:.35rem;padding:.9rem 1rem}
.admin-mobile-menu .list-group-item.active{background:linear-gradient(135deg,#0d6efd,#20c997);border-color:transparent}
.admin-mobile-menu .list-group-item:hover{background:rgba(255,255,255,.08);color:#fff}
.admin-shell{background:#f3f6fb}
.admin-card.card,.card.admin-card{border:0;border-radius:1.25rem;box-shadow:0 .5rem 1.5rem rgba(15,23,42,.08)}
.table-responsive{border-radius:1rem}
.btn{border-radius:.75rem}
.form-control,.form-select{border-radius:.8rem}
@media (max-width:767.98px){
.container,.container-fluid{padding-left:1rem;padding-right:1rem}
h1.h3,.h3{font-size:1.35rem}
.admin-card.card,.card.admin-card{border-radius:1rem}
.card-body,.admin-card.card.p-4{padding:1rem!important}
.btn,.form-control,.form-select{min-height:44px}
.btn-sm{min-height:38px;padding:.45rem .7rem}
.d-flex.gap-2,.d-flex.gap-3{flex-wrap:wrap}
.table-responsive table{font-size:.9rem}
.table-responsive th,.table-responsive td{white-space:nowrap}
.admin-footer .container{flex-direction:column;gap:.35rem!important}
}
@media (max-width:575.98px){
.admin-mobile-actions,.btn-toolbar,.actions,.table-actions{display:flex;flex-direction:column;gap:.5rem}
.admin-mobile-actions .btn,.btn-toolbar .btn,.actions .btn,.table-actions .btn{width:100%}
}


/* Admin compact modern style v2 */
:root {
    --admin-bg: #f3f6fb;
    --admin-card-radius: 1.1rem;
    --admin-soft-shadow: 0 .55rem 1.5rem rgba(15,23,42,.075);
}
.admin-shell {
    background: var(--admin-bg);
}
.admin-card.card,
.card.admin-card,
.create-panel {
    border: 0 !important;
    border-radius: var(--admin-card-radius) !important;
    box-shadow: var(--admin-soft-shadow) !important;
}
.admin-hero,
.voucher-hero {
    border-radius: 1.15rem !important;
    padding: 1.35rem 1.5rem !important;
}
.admin-hero h1,
.voucher-hero h1 {
    font-size: clamp(1.55rem, 2.3vw, 2.15rem) !important;
    line-height: 1.1;
}
.admin-hero .lead,
.voucher-hero .lead {
    font-size: 1rem !important;
    margin-bottom: 0;
}
.admin-stat,
.voucher-stat {
    border-radius: .9rem !important;
    padding: .75rem .9rem !important;
    min-height: 72px;
}
.admin-stat .h3,
.voucher-stat .h3,
.admin-kpi-number {
    font-size: 1.55rem !important;
    line-height: 1.1;
}
.compact-panel .card-body,
.create-panel .card-body {
    padding: 1.1rem !important;
}
.count-picker input {
    font-size: 1.55rem !important;
    font-weight: 800;
    min-height: 48px;
}
.quick-count {
    gap: .35rem !important;
}
.quick-count .btn {
    min-width: 48px !important;
    padding: .3rem .45rem !important;
}
.table-actions,
.voucher-actions {
    display: inline-flex;
    gap: .35rem;
    align-items: center;
    justify-content: flex-end;
}
.section-title-small {
    text-transform: uppercase;
    letter-spacing: .08em;
    color: #64748b;
    font-weight: 700;
    font-size: .76rem;
}
.dashboard-grid .admin-card {
    height: 100%;
}
.dashboard-card-icon {
    width: 42px;
    height: 42px;
    border-radius: .9rem;
    display: grid;
    place-items: center;
    background: linear-gradient(135deg, rgba(13,110,253,.14), rgba(32,201,151,.16));
    color: #0f172a;
    font-size: 1.25rem;
}
.dashboard-value {
    font-size: clamp(1.55rem, 3vw, 2.15rem);
    font-weight: 800;
    line-height: 1.05;
    color: #0f172a;
}
.dashboard-label {
    font-size: .8rem;
    color: #64748b;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
}
.dashboard-sub {
    color: #64748b;
    font-size: .88rem;
}
@media (max-width: 767.98px) {
    .admin-hero,
    .voucher-hero {
        padding: 1rem !important;
        border-radius: 1rem !important;
    }
    .voucher-stat,
    .admin-stat {
        min-height: 66px;
        padding: .65rem .75rem !important;
    }
    .create-panel .card-body {
        padding: .9rem !important;
    }
    .quick-count {
        display: grid !important;
        grid-template-columns: repeat(3,1fr);
    }
    .quick-count .btn {
        width: 100%;
    }
    .table-actions,
    .voucher-actions {
        flex-direction: column;
        width: 100%;
    }
    .table-actions .btn,
    .voucher-actions .btn,
    .voucher-actions form,
    .voucher-actions button {
        width: 100%;
    }
}


/* Admin shell v2 grouped menu + light/dark mode */
:root {
  --admin-bg:#eef3fa;
  --admin-surface:#ffffff;
  --admin-surface-2:#f8fafc;
  --admin-text:#0f172a;
  --admin-muted:#64748b;
  --admin-border:rgba(15,23,42,.10);
  --admin-shadow:0 .55rem 1.5rem rgba(15,23,42,.075);
  --hero-bg:radial-gradient(circle at top left, rgba(13,110,253,.22), transparent 35%),linear-gradient(135deg,#102a54,#17202b);
}
body.admin-shell[data-theme="dark"] {
  --admin-bg:#0b1220;
  --admin-surface:#111827;
  --admin-surface-2:#0f172a;
  --admin-text:#e5e7eb;
  --admin-muted:#94a3b8;
  --admin-border:rgba(255,255,255,.10);
  --admin-shadow:0 .8rem 2rem rgba(0,0,0,.32);
  --hero-bg:radial-gradient(circle at top left, rgba(56,189,248,.18), transparent 35%),linear-gradient(135deg,#020617,#111827);
}
.admin-shell{background:var(--admin-bg)!important;color:var(--admin-text);min-height:100vh}
.admin-page-wrap{max-width:1480px}
.admin-layout-grid{display:grid;grid-template-columns:230px minmax(0,1fr);gap:1rem}
.admin-layout-side{min-width:0}
.admin-layout-main{min-width:0}
.admin-subnav{position:sticky;top:78px;padding:.75rem;background:var(--admin-surface)!important}
.admin-subnav-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--admin-muted);font-weight:800;margin:.25rem .5rem .6rem}
.admin-subnav-link{display:block;text-decoration:none;color:var(--admin-text);padding:.65rem .75rem;border-radius:.8rem;margin-bottom:.25rem}
.admin-subnav-link:hover{background:var(--admin-surface-2)}
.admin-subnav-link.active{background:linear-gradient(135deg,#0d6efd,#20c997);color:white}
.admin-page-hero,.voucher-hero{background:var(--hero-bg)!important;color:white;border-radius:1.15rem!important;padding:1.35rem 1.5rem!important}
.admin-card.card,.card.admin-card,.create-panel{background:var(--admin-surface)!important;color:var(--admin-text)!important;border:1px solid var(--admin-border)!important;box-shadow:var(--admin-shadow)!important}
.table{color:var(--admin-text)!important}
.table th{color:var(--admin-muted)!important}
.table td,.table th{border-color:var(--admin-border)!important}
.form-control,.form-select{background:var(--admin-surface)!important;color:var(--admin-text)!important;border-color:var(--admin-border)!important}
.form-text,.text-muted,.dashboard-sub{color:var(--admin-muted)!important}
.dashboard-value{color:var(--admin-text)!important}
.voucher-stat,.admin-stat{background:rgba(255,255,255,.08)!important;border:1px solid rgba(255,255,255,.12)!important}
@media(max-width:1199.98px){
  .admin-layout-grid{display:block}
  .admin-layout-side{display:none}
}
@media(max-width:767.98px){
  .admin-page-wrap{padding-left:1rem!important;padding-right:1rem!important}
  .admin-page-hero,.voucher-hero{padding:1rem!important;border-radius:1rem!important}
}


/* Static top header + sidebar submenu */
.admin-navbar-fixed {
    min-height: 54px;
    max-height: 54px;
    overflow: visible;
}
.admin-navbar-fixed .container-fluid {
    min-height: 54px;
}
.admin-top-nav .nav-link {
    white-space: nowrap;
}
.admin-navbar .dropdown-menu {
    display: none !important;
}
.admin-layout-grid {
    display: grid;
    grid-template-columns: 230px minmax(0, 1fr);
    gap: 1rem;
    align-items: start;
}
.admin-layout-side {
    min-width: 0;
}
.admin-layout-main {
    min-width: 0;
}
.admin-subnav {
    position: sticky;
    top: 70px;
    padding: .8rem;
    background: var(--admin-surface, #fff) !important;
    border-radius: 1.1rem;
}
.admin-subnav-title {
    font-size: .75rem;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--admin-muted, #64748b);
    font-weight: 800;
    margin: .25rem .5rem .6rem;
}
.admin-subnav-link {
    display: block;
    text-decoration: none;
    color: var(--admin-text, #0f172a);
    padding: .65rem .75rem;
    border-radius: .8rem;
    margin-bottom: .25rem;
}
.admin-subnav-link:hover {
    background: var(--admin-surface-2, #f8fafc);
}
.admin-subnav-link.active {
    background: linear-gradient(135deg,#0d6efd,#20c997);
    color: #fff;
}
@media (max-width: 1199.98px) {
    .admin-navbar-fixed {
        max-height: none;
    }
    .admin-layout-grid {
        display: block;
    }
    .admin-layout-side {
        display: none;
    }
}


/* Admin aligned layout and common blue headers */
.admin-page-wrap {
    max-width: 1540px;
}
.admin-layout-grid {
    align-items: start !important;
}
.admin-layout-side,
.admin-layout-main {
    padding-top: 0 !important;
    margin-top: 0 !important;
}
.admin-subnav {
    margin-top: 0 !important;
}
.admin-page-hero,
.voucher-hero.admin-page-hero {
    margin-top: 0 !important;
    min-height: 132px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    background:
        radial-gradient(circle at top left, rgba(13,110,253,.24), transparent 38%),
        linear-gradient(135deg,#102a54,#17202b) !important;
}
.admin-page-hero h1 {
    color: #fff !important;
    font-size: clamp(1.65rem, 2.4vw, 2.3rem) !important;
    line-height: 1.08;
}
.admin-page-hero .lead {
    color: rgba(255,255,255,.68) !important;
    font-size: 1rem !important;
}
body.admin-shell[data-theme="dark"] .admin-page-hero {
    background:
        radial-gradient(circle at top left, rgba(56,189,248,.2), transparent 38%),
        linear-gradient(135deg,#020617,#111827) !important;
}
@media (max-width: 1199.98px) {
    .admin-page-hero {
        min-height: 112px;
    }
}
@media (max-width: 767.98px) {
    .admin-page-hero {
        min-height: auto;
        padding: 1rem !important;
    }
}


/* Single header/sidebar cleanup + improved site config */
.admin-page-wrap:has(+ .admin-page-wrap) {
    display: none !important;
}
.admin-layout-main > .admin-page-hero + .admin-page-hero {
    display: none !important;
}
.site-config-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1rem;
}
.site-config-section {
    background: var(--admin-surface, #fff);
    border: 1px solid var(--admin-border, rgba(15,23,42,.1));
    border-radius: 1.15rem;
    box-shadow: var(--admin-shadow, 0 .55rem 1.5rem rgba(15,23,42,.075));
    padding: 1.2rem;
}
.site-config-section h2 {
    font-size: 1.05rem;
    margin-bottom: .25rem;
}
.site-config-section .section-help {
    color: var(--admin-muted, #64748b);
    font-size: .9rem;
    margin-bottom: 1rem;
}
.site-config-preview {
    min-height: 170px;
    border-radius: 1rem;
    display: grid;
    place-items: center;
    text-align: center;
    color: #fff;
    padding: 1.25rem;
}
.site-logo-box {
    min-height: 98px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--admin-surface-2, #f8fafc);
    border: 1px dashed var(--admin-border, rgba(15,23,42,.14));
    border-radius: 1rem;
}
.site-logo-box img {
    max-height: 80px;
    max-width: 260px;
    object-fit: contain;
}
.color-tile {
    display: grid;
    grid-template-columns: 1fr 56px;
    gap: .6rem;
    align-items: center;
}
.color-tile input[type=color] {
    width: 56px;
    min-height: 44px;
    padding: .25rem;
}
.sticky-save-bar {
    position: sticky;
    bottom: 0;
    background: color-mix(in srgb, var(--admin-surface, #fff) 92%, transparent);
    backdrop-filter: blur(10px);
    border-top: 1px solid var(--admin-border, rgba(15,23,42,.1));
    padding: .85rem 0 0;
    margin-top: .5rem;
}
@media (min-width: 1200px) {
    .site-config-grid.two-col {
        grid-template-columns: minmax(0, 1.1fr) minmax(360px, .9fr);
    }
}
@media (max-width: 767.98px) {
    .site-config-section {
        padding: 1rem;
    }
    .color-tile {
        grid-template-columns: 1fr;
    }
    .color-tile input[type=color] {
        width: 100%;
    }
}


/* Card layout cleanup + collapsible voucher creation */
.admin-layout-grid { align-items: start !important; }
.admin-layout-main > .admin-page-hero:nth-of-type(n+2),
.admin-layout-main > .voucher-hero:nth-of-type(n+2) { display: none !important; }
.admin-page-wrap + .admin-page-wrap { display: none !important; }

.admin-section-card {
    background: var(--admin-surface, #fff);
    border: 1px solid var(--admin-border, rgba(15,23,42,.1));
    border-radius: 1.15rem;
    box-shadow: var(--admin-shadow, 0 .55rem 1.5rem rgba(15,23,42,.075));
    overflow: hidden;
}
.admin-section-card-header {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    padding:1rem 1.15rem;
    border-bottom:1px solid var(--admin-border, rgba(15,23,42,.1));
}
.admin-section-card-body { padding:1.15rem; }
.admin-section-title { font-size:1.05rem; font-weight:800; margin:0; color:var(--admin-text,#0f172a); }
.admin-section-subtitle { color:var(--admin-muted,#64748b); font-size:.9rem; margin:0; }

.voucher-create-grid {
    display:grid;
    grid-template-columns: 180px 160px minmax(180px,1fr) minmax(220px,1.2fr);
    gap:1rem;
    align-items:end;
}
.voucher-date-grid {
    display:grid;
    grid-template-columns: 1fr 1fr;
    gap:1rem;
    margin-top:1rem;
}
.voucher-create-grid .form-label,
.voucher-date-grid .form-label {
    font-weight:700;
    color:var(--admin-text,#0f172a);
}
.voucher-create-grid .form-control,
.voucher-date-grid .form-control {
    min-height:44px;
}
.quick-count {
    display:flex;
    flex-wrap:wrap;
    gap:.35rem;
    margin-top:.45rem;
}
.quick-count .btn {
    min-width:42px!important;
    padding:.28rem .45rem!important;
}
.one-time-inline {
    display:flex;
    align-items:center;
    gap:.45rem;
    min-height:44px;
    margin-top:.45rem;
    color:var(--admin-text,#0f172a);
}
.count-picker input {
    font-size:1.35rem!important;
    font-weight:800;
    text-align:center;
}
.voucher-actions-bar {
    display:flex;
    justify-content:flex-end;
    align-items:center;
    gap:.6rem;
    margin-top:1rem;
}
@media(max-width:1199.98px){
    .voucher-create-grid { grid-template-columns: 1fr 1fr; }
}
@media(max-width:767.98px){
    .admin-section-card-header { align-items:flex-start; flex-direction:column; }
    .voucher-create-grid,
    .voucher-date-grid { grid-template-columns:1fr; }
    .voucher-actions-bar { flex-direction:column; align-items:stretch; }
    .voucher-actions-bar .btn { width:100%; }
}


/* Alignment fixes, password page redesign, users collapsible create */
.voucher-create-grid.voucher-create-grid-flat {
    display: grid;
    grid-template-columns: 180px 180px minmax(220px, 1fr) minmax(260px, 1.2fr);
    gap: 1rem;
    align-items: start !important;
}
.voucher-create-grid-flat > div {
    align-self: start !important;
}
.voucher-create-grid-flat .form-label {
    min-height: 24px;
    display: flex;
    align-items: center;
    margin-bottom: .45rem;
}
.voucher-create-grid-flat .form-control {
    min-height: 48px;
}
.voucher-create-grid-flat .quick-count {
    min-height: 70px;
    align-content: start;
}
.voucher-create-grid-flat .one-time-inline {
    margin-top: .65rem;
    min-height: 32px;
}
.voucher-date-grid.voucher-date-grid-flat {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    align-items: start;
}
.pw-current-card {
    margin-top: 0 !important;
}
.pw-code-display {
    font-size: clamp(2rem, 4vw, 3.4rem);
    line-height: 1.05;
    letter-spacing: .03em;
    word-break: break-word;
}
.pw-action-row {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: 1rem;
}
.user-create-card .collapse:not(.show) {
    display: none;
}
.last-logon-pill {
    font-size: .85rem;
    color: var(--admin-muted, #64748b);
}
@media(max-width:1199.98px){
    .voucher-create-grid.voucher-create-grid-flat {
        grid-template-columns: 1fr 1fr;
    }
}
@media(max-width:767.98px){
    .voucher-create-grid.voucher-create-grid-flat,
    .voucher-date-grid.voucher-date-grid-flat {
        grid-template-columns: 1fr;
    }
    .voucher-create-grid-flat .quick-count {
        min-height: auto;
    }
    .pw-action-row .btn {
        width: 100%;
    }
}


/* Remove sidebar on mobile layout */
@media (max-width: 991.98px) {
    .admin-layout-side,
    .admin-sidebar,
    .admin-subnav,
    .admin-side-navigation {
        display: none !important;
    }

    .admin-layout-grid {
        grid-template-columns: 1fr !important;
    }

    .admin-layout-main {
        width: 100% !important;
        max-width: 100% !important;
    }

    .admin-page-wrap {
        padding-left: .75rem !important;
        padding-right: .75rem !important;
    }
}


/* Profile dropdown fix */
.admin-navbar .dropdown-menu {
    z-index: 2000;
}
.admin-user-pill.dropdown-toggle::after {
    margin-left: .45rem;
}


/* Fix user profile dropdown: do not hide real dropdowns */
.admin-navbar .dropdown-menu.show,
.admin-navbar .dropdown:hover > .dropdown-menu.show {
    display: block !important;
}

.admin-navbar .dropdown-menu {
    z-index: 3000 !important;
}

.admin-user-pill.dropdown-toggle::after {
    margin-left: .45rem;
}


/* Custom user menu without Bootstrap dropdown dependency */
.admin-user-menu {
    position: relative;
}
.admin-user-menu-button {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    border: 1px solid rgba(255,255,255,.75);
    background: rgba(255,255,255,.08);
    color: #fff;
    border-radius: 999px;
    padding: .35rem .7rem;
    font-size: .875rem;
    line-height: 1;
}
.admin-user-menu-button:hover,
.admin-user-menu-button:focus {
    background: rgba(255,255,255,.16);
    color: #fff;
}
.admin-user-menu-panel {
    position: absolute;
    right: 0;
    top: calc(100% + .45rem);
    min-width: 230px;
    background: #212529;
    color: #fff;
    border: 1px solid rgba(255,255,255,.12);
    border-radius: .8rem;
    box-shadow: 0 .75rem 2rem rgba(0,0,0,.35);
    padding: .45rem;
    display: none;
    z-index: 5000;
}
.admin-user-menu.open .admin-user-menu-panel {
    display: block !important;
}
.admin-user-menu-panel a {
    display: block;
    color: rgba(255,255,255,.9);
    text-decoration: none;
    border-radius: .55rem;
    padding: .6rem .7rem;
}
.admin-user-menu-panel a:hover {
    background: rgba(255,255,255,.10);
    color: #fff;
}
.admin-user-menu-divider {
    height: 1px;
    background: rgba(255,255,255,.12);
    margin: .35rem 0;
}
.admin-user-menu-logout {
    color: #ffb3b3 !important;
}
@media (max-width: 1199.98px) {
    .admin-user-menu {
        display: none !important;
    }
}
