:root {
    --sidebar-width: 300px;
    --bg-main: #f8fafc;
    --bg-card: #ffffff;
    --bg-sidebar: #ffffff;
    --text-dark: #0f172a;
    --text-muted: #64748b;
    --accent-indigo: #6366f1;
    --border-gray: #cbd5e1;
    --border-card: #f1f5f9;
    --btn-dark-bg: #111111;
    --btn-dark-hover: #2b2b3d;
    --btn-dark-text: #ffffff;
    --nav-hover-bg: #f3f3f3;
    --input-bg: #ffffff;
    --input-border: #c9c9c9;
    --input-hover-border: var(--accent-indigo);
    --btn-neutral-hover: #e2e2e2;
    --btn-primary-hover: var(--btn-dark-hover);
    --table-header-bg: #ffffff;
    --table-row-alt-bg: #fafafa;
    --table-hover-bg: #f2f2f2;
    --control-height: 40px;
}

/* ========================================================
   TEMA SISTEM/DASHBOARD — diaktifkan lewat atribut
   [data-theme] pada <html>, dipilih dari dropdown di sidebar.
   Hanya 2 pilihan: Light (default) & Dark (#202124). Warna
   tombol (--btn-dark-bg / --btn-dark-hover / --accent-indigo)
   bisa di-override langsung oleh user lewat color picker,
   berlaku lintas tema (lihat dashboard-core.js: cqrSetButtonColor).
   ======================================================== */
html[data-theme="dark"] {
    --bg-main: #202124;
    --bg-card: #28292c;
    --bg-sidebar: #232426;
    --text-dark: #eef0f2;
    --text-muted: #9a9ca3;
    --accent-indigo: #818cf8;
    --border-gray: #3a3b3f;
    --border-card: #333438;
    --btn-dark-bg: #6366f1;
    --btn-dark-hover: #7c7ff5;
    --btn-dark-text: #ffffff;
    --nav-hover-bg: #2c2d30;
    --input-bg: #2a2b2e;
    --input-border: #3d3e42;
    --input-hover-border: var(--accent-indigo);
    --btn-neutral-hover: #3a3b3f;
    --btn-primary-hover: var(--btn-dark-hover);
    --table-header-bg: #28292c;
    --table-row-alt-bg: #26272a;
    --table-hover-bg: #2c2d30;
}

body {
    background-color: var(--bg-main);
    color: var(--text-dark);
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    margin: 0;
    /* overflow-x: hidden dipindah ke .saas-app-wrapper agar tidak mengganggu
       position: sticky pada halaman publik (mis. navbar Elementor).
       overflow selain visible pada ancestor memblokir sticky children. */
    transition: background-color 0.25s ease, color 0.25s ease;
}

.saas-app-wrapper {
    display: flex;
    min-height: 100vh;
    max-width: 100vw;
    overflow-x: hidden;
    /* PENTING: overflow-x != visible membuat browser otomatis
       meng-compute overflow-y jadi "auto", dan itu menjadikan
       wrapper ini "scroll container" -- yang MEMBLOKIR position:
       sticky pada semua descendant (termasuk kolom Live Preview
       di tab Edit Invitation). Set eksplisit ke visible supaya
       sticky kembali mengacu ke viewport asli / window scroll. */
    overflow-y: visible;
}

.saas-sidebar {
    width: var(--sidebar-width);
    background-color: var(--bg-sidebar);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    z-index: 100;
    padding: 24px 16px;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    transition: background-color 0.25s ease;
}

/* Baris header sidebar: judul/logo dashboard di kiri, tombol
   ciutkan/perluas (desktop) di kanan -- align kanan sejajar judul. */
.cqr-sidebar-header-mobile {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    width: 100%;
    margin-bottom: 10px;
}

.saas-brand {
    font-size: 20px;
    font-weight: 800;
    color: var(--text-dark);
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 0 12px;
    border-bottom: 0px solid #f1f5f9;
    min-width: 0;
}

.saas-brand span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.saas-brand-icon {
    width: 32px;
    height: 32px;
    background: var(--btn-dark-bg);
    color: #fff;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
}

.saas-brand-icon-img {
    object-fit: contain;
    background: transparent;
    flex-shrink: 0;
    border-radius: 0;
    width: auto;
    max-width: 120px;
    height: 22px;
    padding: 0;
    transition: filter 0.25s ease;
}

/* Logo klien biasanya berwarna gelap (mis. teks hitam) supaya kontras
   di background terang -- otomatis di-invert jadi putih saat mode
   dark aktif, supaya tetap kebaca dan tidak "hilang" di sidebar gelap. */
html[data-theme="dark"] .saas-brand-icon-img {
    filter: invert(1) brightness(1.6);
}

/* Membungkus nav + tema + akun/logout supaya di desktop bisa
   tetap "menempel ke bawah" (akun/logout), sekaligus jadi satu
   grup yang sama-sama di-toggle buka/tutup di mode mobile. */
.cqr-sidebar-collapsible {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    flex: 1;
    min-height: 0;
}

.saas-nav-group {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 6px;
}

.saas-nav-btn {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 12px 16px;
    border-radius: 12px;
    border: none;
    background: transparent;
    color: var(--text-dark);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    text-align: left;
    transition: all 0.2s ease;
}

.saas-nav-btn:hover {
    background-color: var(--nav-hover-bg);
    color: var(--text-dark) !important;
}

/* Samakan warna fokus (klik/tap) semua tombol nav sidebar -- termasuk
   "Tema Tampilan" -- dengan fix yang sama di .cqr-notif-bell-btn:
   outline abu-abu bawaan browser dimatikan, diganti background hover
   + ring tipis warna aksen situs supaya konsisten di seluruh dashboard.
   'color' dipaksa !important di sini juga -- BUGFIX "warna teks hover
   di tema Light belum sesuai": tanpa ini, teks tombol (mis. "Tema
   Tampilan") bisa ke-tiban warna dari CSS global tema/Elementor aktif
   saat hover/focus, jadi nyaris tak kelihatan (putih di atas terang). */
.saas-nav-btn:focus {
    outline: none;
    background-color: var(--nav-hover-bg);
    color: var(--text-dark) !important;
}
.saas-nav-btn:focus-visible {
    outline: none;
    background-color: var(--nav-hover-bg);
    color: var(--text-dark) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-indigo) 35%, transparent);
}
.saas-nav-btn.active,
.saas-nav-btn.active:hover,
.saas-nav-btn.active:focus,
.saas-nav-btn.active:focus-visible {
    background-color: var(--btn-dark-bg);
    color: var(--btn-dark-text) !important;
}

.saas-user-footer {
    padding-top: 16px;
    border-top: 1px solid var(--border-card);
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.saas-main-content {
    margin-left: var(--sidebar-width);
    flex: 1;
    min-width: 0;
    padding: 32px;
    box-sizing: border-box;
}

.saas-client-header {
    /* Background disamakan dengan sidebar (var(--bg-sidebar)) supaya baris
       judul undangan + notifikasi + pengaturan terasa jadi satu "header
       bar" yang senada dengan sidebar, bukan menyatu transparan dengan
       latar halaman. */
    background: var(--bg-sidebar);
    border-radius: 14px;
    padding: 14px 20px;
    margin-bottom: 24px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
    transition: background-color 0.25s ease;
}

.saas-client-title {
    font-size: 16px;
    font-weight: 700;
    color: var(--text-dark);
    margin: 0;
}

.saas-metrics-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 16px;
    margin-bottom: 24px;
}

.saas-metric-card {
    background: var(--bg-card);
    border-radius: 12px;
    padding: 18px 20px;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-width: 0;
    overflow-wrap: break-word;
    word-break: break-word;
}

.saas-metric-card-text {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-width: 0;
}

.saas-metric-label {
    font-size: 12px;
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.saas-metric-value {
    font-size: 28px;
    font-weight: 800;
    color: var(--text-dark);
    margin: 0;
    line-height: 1;
}

/* Mini donut chart di tiap metric card -- ring stroke 10px, menunjukkan
   proporsi metrik tsb terhadap Total Invited Guests (lihat PHP:
   cqr_metric_donut_svg() di view-dashboard.php & JS: cqrUpdateMetricDonuts
   di dashboard-sync.js untuk update realtime tanpa reload). */
.cqr-metric-donut {
    position: relative;
    width: 96px;
    height: 96px;
    flex-shrink: 0;
}
.cqr-metric-donut svg {
    display: block;
    width: 100%;
    height: 100%;
}
.cqr-metric-donut .cqr-donut-arc {
    transition: stroke-dasharray 0.4s ease, stroke-dashoffset 0.4s ease;
}
.cqr-metric-donut-center {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    font-weight: 800;
    pointer-events: none;
}
@media screen and (max-width: 360px) {
    .cqr-metric-donut { width: 72px; height: 72px; }
}

.saas-filter-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 16px;
}

.saas-filter-group {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.saas-filter-group select, 
.saas-filter-group input,
.cqr-filter-white,
.cqr-search-input {
    background-color: var(--input-bg) !important;
    color: var(--text-dark) !important;
    border: 1px solid var(--input-border) !important;
    border-radius: 12px !important;
    height: var(--control-height) !important;
    box-sizing: border-box !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    outline: 10px !important;
    transition: all 0.2s ease !important;
}

.saas-filter-group select:hover, 
.saas-filter-group input:hover,
.cqr-filter-white:hover,
.cqr-search-input:hover {
    border-color: var(--input-hover-border) !important;
}

.saas-filter-group input,
.cqr-search-input {
    padding: 0 16px 0 38px !important;
}

.saas-filter-group input::placeholder {
    color: #787878 !important;
}

.cqr-filter-white.guest-link-input {
    height: 26px !important;
    padding: 0 12px !important;
    font-size: 12px !important;
}

.cqr-btn-black-rounded, 
.btn-copy-trigger {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    width: auto !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
    padding: 16 28px !important;
    height: 40px !important;
    background-color: var(--btn-dark-bg) !important;
    color: var(--btn-dark-text) !important;
    border-radius: 12px !important;
    border: none !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    cursor: pointer !important;
    transition: background-color 0.2s ease, transform 0.15s ease !important;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08) !important;
}

.cqr-btn-black-rounded:hover, 
.btn-copy-trigger:hover {
    background-color: var(--btn-primary-hover) !important;
    transform: scale(1.03);
}

.cqr-select-wrapper {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.cqr-select-wrapper svg {
    position: absolute;
    right: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--text-muted);
    pointer-events: none;
    z-index: 2;
}

.cqr-select-wrapper select {
    appearance: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    padding-right: 38px !important;
    padding-left: 16px !important;
    background-color: var(--input-bg) !important;
    color: var(--text-dark) !important;
    border: 1px solid var(--input-border) !important;
    background-image: none !important;
    cursor: pointer;
}

/* ========================================================
   STANDARDISASI SEMUA DROPDOWN (<select>) DI DASHBOARD
   Menyamakan tampilan seluruh field dropdown (mis. dropdown
   di modal Add Guest, Edit Tamu, Tambah Meja) dengan gaya
   dropdown filter kategori: rounded, ber-chevron, dan ikut
   variabel warna tema (termasuk saat Dark Mode aktif).
   Dropdown yang sudah dibungkus .cqr-select-wrapper memakai
   svg chevron sendiri sehingga chevron bawaan di sini
   dinonaktifkan supaya tidak dobel (lihat aturan di atas).
   ======================================================== */
select {
    background-color: var(--input-bg);
    color: var(--text-dark);
    border: 1px solid var(--input-border);
    border-radius: 12px;
    height: var(--control-height);
    box-sizing: border-box;
    font-size: 13px;
    font-weight: 500;
    padding: 0 38px 0 16px;
    outline: none;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23787878' stroke-width='2.5' stroke-linecap='round'%3E%3Cline x1='4' y1='6' x2='20' y2='6'/%3E%3Cline x1='7' y1='12' x2='17' y2='12'/%3E%3Cline x1='10' y1='18' x2='14' y2='18'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    transition: border-color 0.2s ease, background-color 0.25s ease, color 0.25s ease;
}

select:hover {
    border-color: var(--input-hover-border);
}

select:focus {
    border-color: var(--accent-indigo);
}

/* ========================================================
   JARING PENGAMAN: <input>/<textarea> POLOS (tanpa class
   .cqr-filter-white / .cqr-modal-input / .cqr-search-input)
   tetap ikut background field filter & var tema.
   ======================================================== */
input[type="text"]:not(.cqr-filter-white):not(.cqr-modal-input):not(.cqr-search-input),
input[type="number"]:not(.cqr-filter-white):not(.cqr-modal-input):not(.cqr-search-input),
input[type="tel"]:not(.cqr-filter-white):not(.cqr-modal-input):not(.cqr-search-input),
input[type="email"]:not(.cqr-filter-white):not(.cqr-modal-input):not(.cqr-search-input),
input[type="search"]:not(.cqr-filter-white):not(.cqr-modal-input):not(.cqr-search-input),
textarea:not(.cqr-modal-input) {
    background-color: var(--input-bg);
    color: var(--text-dark);
    border: 1px solid var(--input-border);
    border-radius: 12px;
    box-sizing: border-box;
    transition: border-color 0.2s ease, background-color 0.25s ease, color 0.25s ease;
}
input[type="text"]:not(.cqr-filter-white):not(.cqr-modal-input):not(.cqr-search-input):hover,
input[type="number"]:not(.cqr-filter-white):not(.cqr-modal-input):not(.cqr-search-input):hover,
textarea:not(.cqr-modal-input):hover {
    border-color: var(--input-hover-border);
}
input[type="text"]:not(.cqr-filter-white):not(.cqr-modal-input):not(.cqr-search-input):focus,
input[type="number"]:not(.cqr-filter-white):not(.cqr-modal-input):not(.cqr-search-input):focus,
textarea:not(.cqr-modal-input):focus {
    border-color: var(--accent-indigo);
}
input::placeholder,
textarea::placeholder {
    color: var(--text-muted);
}

.cqr-input-avatar-wrapper {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.cqr-input-avatar-wrapper svg {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: #787878;
    pointer-events: none;
}

.cqr-input-avatar-wrapper input {
    padding-left: 38px !important;
}

@media (max-width: 1024px) {
    .saas-sidebar {
        position: relative;
        width: 100%;
        height: auto;
    }
    .saas-main-content {
        margin-left: 0;
        padding: 16px;
    }
    .saas-app-wrapper {
        flex-direction: column;
    }
}

.cqr-edge-layout * { font-family: 'Inter', sans-serif; box-sizing: border-box; }
    .cqr-edge-layout { width: 100% !important; min-height: 90vh; background: var(--bg-main, #fafbfa); color: var(--text-dark, #111); margin: 0; padding: 0; display: flex; flex-direction: column; }
    
    .cqr-edge-navbar { width: 100%; background: var(--bg-card, #ffffff); padding: 16px 40px; display: flex; align-items: center; justify-content: space-between; position: sticky; top: 0; z-index: 999; border: none; transition: background-color 0.25s ease; }
    .cqr-edge-brand { font-size: 20px; font-weight: 700; color: var(--text-dark, #111); display: flex; align-items: center; gap: 8px; letter-spacing: -0.5px; }
    .cqr-edge-brand span { color: #84cc16; font-size: 24px; font-weight: 800; } 
    
    .cqr-edge-nav-center { display: flex; gap: 8px; align-items: center; margin: 0 auto; }
    .cqr-edge-nav-btn { padding: 8px 18px; border: none; background: transparent; border-radius: 12px; font-size: 14px; font-weight: 500; color: var(--text-muted); cursor: pointer; transition: 0.2s; }
    .cqr-edge-nav-btn:hover { background: var(--nav-hover-bg, #f0f3f0); color: var(--text-dark, #111); }
    .cqr-edge-nav-btn.active { background: var(--btn-dark-bg, #111); color: var(--btn-dark-text, #fff); font-weight: 600; }
    
    .cqr-edge-main { width: 100%; padding: 40px; display: flex; flex-direction: column; gap: 32px; }
    
    .cqr-edge-grid-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 24px; width: 100%; }
    
    /* 1 BARIS SEJAJAR: METRIC CARD FLEX ROW */
    .cqr-edge-metric-card { 
        background: var(--bg-card, #fff); 
        border-radius: 12px; 
        padding: 24px; 
        display: flex; 
        flex-direction: row; 
        justify-content: space-between; 
        align-items: flex-start; 
        gap: 16px; 
        box-shadow: 0 10px 30px rgba(0,0,0,0.02); 
        border: none;
        transition: background-color 0.25s ease;
    }
    .cqr-edge-metric-label { font-size: 13px; color: var(--text-muted, #777); font-weight: 500; margin-top: 4px; }
    .cqr-edge-metric-value { font-size: 28px; font-weight: 700; margin: 0; letter-spacing: -0.5px; line-height: 1; color: var(--text-dark, #111); }
    
    .cqr-edge-card { border: none; border-radius: 12px; background: var(--bg-card); width: 100%; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.02); transition: background-color 0.25s ease; }
    .cqr-edge-card-header { padding: 24px 24px 12px 24px; border: none; display: flex; justify-content: space-between; align-items: center; }
    .cqr-edge-card-title { font-size: 20px; font-weight: 700; margin: 0; color: var(--text-dark); }

    /* ========================================================
       BANNER SAMBUTAN (tab Overview Guest)
       Background & border ikut var(--bg-card) / var(--border-card),
       sama persis dengan card lain di dashboard, otomatis ikut tema
       Light/Dark yang aktif. Judul "Selamat Datang Kembali" & badge
       "Dashboard Undangan" warnanya FIX var(--text-dark) -- hitam di
       Light, putih di Dark -- SENGAJA TIDAK ikut var(--btn-dark-bg)/
       color picker "Warna Tombol" di Tema Tampilan lagi. Ornamen
       lingkaran blur & motif melayang (hati/cincin/kilau) SUDAH
       DIHAPUS -- satu-satunya dekorasi yang tersisa adalah pola
       titik-titik grid tipis (::before), warnanya ikut var(--text-muted)
       per tema (abu gelap di Light, abu terang di Dark -- lihat
       definisi var ini di :root & html[data-theme="dark"] di atas
       file ini). */
    .cqr-welcome-banner {
        position: relative;
        overflow: hidden;
        isolation: isolate;
        border-radius: 16px;
        padding: 48px 32px;
        box-sizing: border-box;
        display: flex;
        align-items: center;
        justify-content: center;
        min-height: 200px;
        background: var(--bg-card);
        border: 1px solid var(--border-card);
        color: var(--text-dark);
        transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
    }
    .cqr-welcome-banner::before {
        content: "";
        position: absolute;
        inset: 0;
        background-image: radial-gradient(var(--text-muted) 1.5px, transparent 1.5px);
        background-size: 26px 26px;
        opacity: 0.22;
        pointer-events: none;
        z-index: 0;
    }

    .cqr-welcome-banner-content {
        position: relative;
        z-index: 1;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        text-align: center;
        max-width: 560px;
        margin: 0 auto;
    }
    .cqr-welcome-banner-badge {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        padding: 6px 14px;
        border-radius: 999px;
        /* Background netral (bukan tint warna tombol) supaya konsisten
           dengan teksnya yang sekarang FIX hitam/putih per tema, tidak
           ikut color picker "Warna Tombol" lagi. */
        background: var(--border-card);
        color: var(--text-dark);
        font-size: 12px;
        font-weight: 700;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        margin-bottom: 16px;
    }
    .cqr-welcome-banner-title {
        margin: 0;
        font-size: clamp(24px, 3.2vw, 38px);
        font-weight: 800;
        line-height: 1.2;
        letter-spacing: -0.5px;
        /* FIX hitam di tema Light / putih di tema Dark (var(--text-dark)
           sudah didefinisikan begitu di :root & html[data-theme="dark"])
           -- SENGAJA tidak lagi ikut var(--btn-dark-bg)/color picker
           "Warna Tombol" di Tema Tampilan. */
        color: var(--text-dark);
    }
    .cqr-welcome-banner-subtitle {
        margin: 10px 0 0;
        font-size: 15px;
        font-weight: 500;
        line-height: 1.5;
        color: var(--text-muted);
        max-width: 460px;
    }
    .cqr-welcome-banner-subtitle strong {
        font-weight: 700;
        color: var(--text-dark);
    }
    @media screen and (max-width: 640px) {
        .cqr-welcome-banner { padding: 36px 22px; min-height: 0; }
    }

    .cqr-edge-table {width: 100%; border-collapse: collapse; font-size: 14px; border: none; !important; margin-top: 12px; }
    .cqr-edge-table th { padding: 16px 24px; font-weight: 600; color: var(--text-muted); background: var(--table-header-bg); font-size: 13px; text-align: left !important; border: none; }
    .cqr-edge-table td { padding: 18px 24px; color: var(--text-dark); vertical-align: middle !important; border: none; text-align: left; }
    .cqr-edge-table tbody tr:nth-child(even) { background-color: var(--table-row-alt-bg); }
    .cqr-edge-table tbody tr:hover { background-color: var(--table-hover-bg); }

    /* Menyeragamkan tinggi sel di semua tabel dashboard */
.cqr-edge-table th,
.cqr-edge-table td {
    padding-top: 10px !important;
    padding-bottom: 10px !important;
    vertical-align: middle !important;
}

/* Menyeragamkan tinggi elemen input URL di dalam tabel */
.cqr-edge-table .guest-link-cell input {
    height: 32px !important;
    box-sizing: border-box !important;
}

/* Menyeragamkan tinggi tombol aksi agar tidak membuat baris melebar sebelah */
.cqr-edge-table .cqr-actions-group button {
    height: 32px !important;
    box-sizing: border-box !important;
}

    /* Menyesuaikan tinggi tombol aksi/ikon di dalam baris agar tetap proporsional */
    .cqr-actions-group .edit-btn,
    .cqr-actions-group .delete-btn,
    .cqr-icon-btn {
        padding: 4px !important;
    }

    /* Menyesuaikan tinggi tombol copy di dalam tabel */
    .cqr-actions-group .copy-btn,
    .cqr-actions-group a:not(.edit-btn):not(.delete-btn) {
        padding: 4px 10px !important;
        font-size: 12px !important;
        height: 28px !important;
    }

    /* Memberikan border bawah pada bagian header tabel (thead) */
    .cqr-edge-table thead {
        border-bottom: 1px solid var(--border-card) !important;
    }

    .cqr-edge-table th {
        border-bottom: 1px solid var(--border-card) !important;
    }

    /* Memberikan border luar yang halus pada pembungkus kartu tabel (opsional agar makin rapi) */
    .cqr-edge-card .cqr-edge-table {
        border: 1px solid var(--border-card);
    }
    

    /* ========================================================
       DARK MODE: PAKSA BACKGROUND CARD & LAYOUT IKUT TEMA GELAP
       Override dengan !important agar tidak tertimpa CSS eksternal
       (WordPress, Elementor, atau tema aktif).
       ======================================================== */
    html[data-theme="dark"] .cqr-edge-card,
    html[data-theme="dark"] .cqr-edge-card-header {
        background-color: var(--bg-card) !important;
        color: var(--text-dark) !important;
    }
    html[data-theme="dark"] .cqr-edge-metric-card {
        background-color: var(--bg-card) !important;
        color: var(--text-dark) !important;
    }
    html[data-theme="dark"] .cqr-edge-layout {
        background-color: var(--bg-main) !important;
        color: var(--text-dark) !important;
    }
    html[data-theme="dark"] .cqr-edge-navbar {
        background-color: var(--bg-sidebar) !important;
    }
    html[data-theme="dark"] .cqr-edge-metric-label {
        color: var(--text-muted) !important;
    }
    html[data-theme="dark"] .cqr-edge-metric-value,
    html[data-theme="dark"] .cqr-edge-card-title {
        color: var(--text-dark) !important;
    }
    html[data-theme="dark"] .saas-metric-card {
        background-color: var(--bg-card) !important;
    }
    html[data-theme="dark"] .saas-metric-label {
        color: var(--text-muted) !important;
    }
    html[data-theme="dark"] .saas-metric-value,
    html[data-theme="dark"] .saas-client-title {
        color: var(--text-dark) !important;
    }


    /* FIX: MEMAKSA ICON BUTTON (EDIT & HAPUS) TETAP TRANSPARAN SAAT DIKLIK */
    .cqr-actions-group .edit-btn,
    .cqr-actions-group .delete-btn,
    .cqr-icon-btn {
        background: transparent !important;
        background-color: transparent !important;
        border: none !important;
        cursor: pointer;
        padding: 6px;
        border-radius: 50%;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        box-shadow: none !important;
        outline: none !important;
        transition: background-color 0.2s ease;
    }
    
    /* Efek hover/klik halus hanya untuk tombol ikon edit & hapus */
    .cqr-actions-group .edit-btn:hover, .cqr-actions-group .edit-btn:focus, .cqr-actions-group .edit-btn:active,
    .cqr-actions-group .delete-btn:hover, .cqr-actions-group .delete-btn:focus, .cqr-actions-group .delete-btn:active,
    .cqr-icon-btn:hover, .cqr-icon-btn:focus, .cqr-icon-btn:active { 
        background: var(--nav-hover-bg) !important; 
        background-color: var(--nav-hover-bg) !important;
        box-shadow: none !important;
        outline: none !important;
    }

    /* KEMBALIKAN STYLE TOMBOL COPY HITAM AGAR TETAP MUNCUL */
    .cqr-actions-group .copy-btn,
    .cqr-actions-group a:not(.edit-btn):not(.delete-btn) {
        background: var(--btn-dark-bg) !important;
        color: var(--btn-dark-text) !important;
        border: 1px solid var(--btn-dark-bg) !important;
        padding: 6px 14px !important;
        border-radius: 12px !important;
        font-size: 13px !important;
        font-weight: 600 !important;
        text-decoration: none !important;
        display: inline-flex !important;
    }
    .cqr-actions-group .copy-btn:hover,
    .cqr-actions-group a:not(.edit-btn):not(.delete-btn):hover {
        background: var(--btn-primary-hover) !important;
        color: var(--btn-dark-text) !important;
        border-color: var(--btn-primary-hover) !important;
    }

    /* ==========================================
   MEDIA QUERIES: TABLET & SMARTPHONE RESPONSIVE
   ========================================== */

/* 📱 Optimalisasi untuk Tablet (Lebar layar di bawah 992px) */
/* ==========================================
   MEDIA QUERIES: RESPONSIVE NAVBAR FIX
   ========================================== */

/* ==========================================
   MEDIA QUERIES: RESPONSIVE NAVBAR FIX (TABLET)
   ========================================== */

/* ========================================================
   GLOBAL OVERRIDE: PERBAIKAN TOTAL NAVBAR & TOMBOL SIGN OUT
   ======================================================== */

/* 1. Paksa tombol Sign Out tidak melar di semua ukuran layar (Desktop & Mobile) */
.cqr-edge-nav-right .cqr-btn-black-rounded,
.cqr-btn-black-rounded {
    width: auto !important;
    max-width: 120px !important;
    height: 36px !important;
    padding: 8px 16px !important;
    font-size: 13px !important;
    white-space: nowrap !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

/* 2. Paksa teks nama user dan container kanan rata tengah secara vertikal */
.cqr-edge-nav-right {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
}
.cqr-edge-nav-right span {
    white-space: nowrap !important;
    display: inline-block !important;
    line-height: 1 !important;
}

/* 3. Paksa struktur navbar utama sejajar lurus di layar Desktop */
.cqr-edge-navbar {
    display: flex !important;
    align-items: center !important;
}


/* ========================================================
   MEDIA QUERIES: KHUSUS TAMPILAN TABLET & HP (DI BAWAH 992px)
   ======================================================== */
@media screen and (max-width: 992px) {
    .cqr-edge-navbar {
        padding: 16px 20px !important;
        flex-wrap: wrap !important; 
        flex-direction: row !important; 
        justify-content: space-between !important;
        gap: 16px 0 !important; 
    }
    
    .cqr-edge-brand {
        flex: 1 !important;
        justify-content: flex-start !important; 
    }
    
    .cqr-edge-nav-right {
        flex: 1 !important;
        justify-content: flex-end !important;
    }

    /* Menu tab turun rapi di bawah logo & nama user */
    .cqr-edge-nav-center {
        order: 3 !important; 
        width: 100% !important;
        overflow-x: auto !important;
        white-space: nowrap !important;
        padding-bottom: 4px !important;
        justify-content: flex-start !important;
    }
    
    .cqr-edge-main {
        padding: 20px !important;
        gap: 20px !important;
    }
}

/* Khusus Layar Smartphone Kecil */
@media screen and (max-width: 640px) {
    .cqr-edge-grid-metrics {
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 12px !important;
    }
    .cqr-edge-metric-card {
        padding: 16px !important;
        flex-direction: column-reverse !important;
        justify-content: flex-end !important;
        align-items: flex-start !important;
        gap: 8px !important;
    }
    #cqr-ajax-guest-form {
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 12px !important;
    }
    .cqr-edge-input, #ins_text_format, #cqr-ajax-guest-form .cqr-btn-black-rounded {
        width: 100% !important;
    }
}

/* ========================================================
   FIX FORM GENERATE & LEBAR FIELD INPUT (RESPONSIF DESKTOP 40% & MOBILE/TABLET 100%)
   ======================================================== */
@media screen and (max-width: 1024px) {
    .cqr-responsive-width {
        width: 100% !important;
        min-width: 100% !important;
    }
}

/* 1. Kembalikan ukuran normal tombol Generate agar teks tidak terpotong */
#cqr-ajax-guest-form .cqr-btn-black-rounded {
    width: 100% !important;
    max-width: none !important;
    min-height: 42px !important;
    padding: 11px 24px !important;
    height: 42px !important;
}

/* 2. Menghindari teks tombol Generate terpotong saat layar mulai mengecil */
#cqr-ajax-guest-form .cqr-btn-black-rounded {
    white-space: nowrap !important;
}

/* ========================================================
   MODAL POP-UP CONFIRMATION SIGN OUT
   ======================================================== */

.cqr-modal-overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    /*backdrop-filter: blur(4px);*/
    z-index: 9999;
    justify-content: center;
    align-items: center;
}

/* Tampilkan modal ketika kelas is-active ditambahkan oleh JavaScript */
.cqr-modal-overlay.is-active {
    display: flex !important;
}

/* Styling tambahan untuk kotak modal agar rapi */
.cqr-modal-box {
    background: var(--bg-card);
    padding: 24px;
    border-radius: 12px;
    width: 100%;
    max-width: 400px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    text-align: center;
    transition: background-color 0.25s ease;
}

.cqr-modal-overlay.is-active .cqr-modal-box {
    transform: scale(1);
}

.cqr-modal-icon {
    font-size: 40px;
    margin-bottom: 12px;
}

.cqr-modal-box h3 {
    margin: 0 0 8px 0;
    font-size: 18px;
    color: var(--text-dark);
    font-weight: 600;
}

html[data-theme="dark"] .cqr-modal-box h3,
html[data-theme="dark"] .cqr-detail-modal-box h3,
html[data-theme="dark"] .cqr-table-detail-modal-box h3 {
    color: #ffffff;
}

.cqr-modal-box p {
    margin: 0 0 24px 0;
    font-size: 14px;
    color: var(--text-muted);
    line-height: 1.5;
}

.cqr-modal-buttons {
    display: flex;
    gap: 12px;
}

.cqr-btn-modal-secondary,
.cqr-btn-modal-danger {
    flex: 1;
    padding: 12px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    border: none;
    transition: all 0.2s;
    text-decoration: none;
    text-align: center;
}

.cqr-btn-modal-secondary {
    background: var(--nav-hover-bg);
    color: var(--text-dark);
}
.cqr-btn-modal-secondary:hover { background-color: var(--btn-neutral-hover); }
html:not([data-theme="dark"]) .cqr-btn-modal-secondary:hover { color: #000000; }

.cqr-btn-modal-danger {
    background: #ef4444;
    color: #ffffff;
}
.cqr-btn-modal-danger:hover { background: #dc2626; color: #ffffff;}

/* Tombol "Batal"/"Simpan" generik dipakai di modal konfirmasi JS
   (checkin, edit tamu, edit area/meja, delete tamu/meja/area) &
   tombol "Batal"/"Tutup" di modal-modal PHP (Add Guest, Guest
   Detail, Venue Area/Meja). Semua ikut var tema (termasuk Dark
   Mode); hover pakai warna eksplisit --btn-neutral-hover yang
   SEDIKIT LEBIH TERANG dari warna dasarnya, baik di tema Light
   maupun Dark (bukan filter, supaya hasilnya pasti konsisten).
   ======================================================== */
.cqr-modal-btn,
.cqr-btn-neutral {
    flex: 1;
    background: var(--nav-hover-bg);
    color: var(--text-dark);
    border: none;
    padding: 12px;
    border-radius: 12px;
    font-weight: 600;
    font-size: 13px;
    cursor: pointer;
    transition: background-color 0.2s ease;
}

.cqr-modal-btn:hover,
.cqr-btn-neutral:hover {
    background-color: var(--btn-neutral-hover);
}

/* Teks tombol Batal/Tutup (non-primary, non-danger) tetap HITAM saat
   hover khusus di tema Light/Default, supaya tidak pernah pudar di
   atas background hover abu-abu-nya. */
html:not([data-theme="dark"]) .cqr-modal-btn:hover:not(.cqr-modal-btn-primary):not(.cqr-modal-btn-danger),
html:not([data-theme="dark"]) .cqr-btn-neutral:hover:not(.cqr-modal-btn-primary):not(.cqr-modal-btn-danger) {
    color: #000000;
}

.cqr-modal-btn.cqr-modal-btn-primary,
.cqr-btn-neutral.cqr-modal-btn-primary {
    background: var(--btn-dark-bg);
    color: var(--btn-dark-text);
}

.cqr-modal-btn.cqr-modal-btn-primary:hover,
.cqr-btn-neutral.cqr-modal-btn-primary:hover {
    background: var(--btn-primary-hover);
    color: var(--btn-dark-text);
}

.cqr-modal-btn.cqr-modal-btn-danger,
.cqr-btn-neutral.cqr-modal-btn-danger {
    background: #ef4444;
    color: #ffffff;
}

.cqr-modal-btn.cqr-modal-btn-danger:hover,
.cqr-btn-neutral.cqr-modal-btn-danger:hover {
    background: #dc2626;
    color: #ffffff;
}


select.cqr-edge-input {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    
    /* SVG Icon Filter: Lebih lebar dan lebih tipis */
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23222222'%3E%3Cpath d='M2 6C2 5.44772 2.44772 5 3 5H21C21.5523 5 22 5.44772 22 6C22 6.55228 21.5523 7 21 7H3C2.44772 7 2 6.55228 2 6Z'/%3E%3Cpath d='M6 12C6 11.4477 6.44772 11 7 11H17C17.5523 11 18 11.4477 18 12C18 12.5523 17.5523 13 17 13H7C6.44772 13 6 12.5523 6 12Z'/%3E%3Cpath d='M10 18C10 17.4477 10.4477 17 11 17H13C13.5523 17 14 17.4477 14 18C14 18.5523 13.5523 19 13 19H11C10.4477 19 10 18.5523 10 18Z'/%3E%3C/svg%3E") !important;
    
    background-repeat: no-repeat !important;
    background-position: right 14px center !important;
    background-size: 18px 18px !important; /* Ukuran kotak ikon sedikit diperbesar agar proporsi lebarnya pas */
    
    padding-left: 14px !important;
    padding-right: 40px !important;       /* Menyesuaikan ruang agar teks dropdown tidak menimpa ikon yang lebih lebar */
    cursor: pointer;
}

/* Styling input search dengan latar belakang ikon SVG Kaca Pembesar */
.cqr-search-input {
    background-color: var(--input-bg) !important;
    /* Menggunakan SVG Search yang sesuai gambar */
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23555555' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'%3E%3C/circle%3E%3Cline x1='16.5' y1='16.5' x2='22' y2='22'%3E%3C/line%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: left 12px center !important; /* Posisi ikon di sebelah kiri */
    background-size: 15px 15px !important;            /* Ukuran ikon search */
    padding-left: 36px !important;                     /* Ruang agar teks placeholder tidak menimpa ikon */
}

/* Ikon kaca pembesar dibuat lebih terang di Dark Mode supaya tetap terlihat */
html[data-theme="dark"] .cqr-search-input {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23aaaaae' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'%3E%3C/circle%3E%3Cline x1='16.5' y1='16.5' x2='22' y2='22'%3E%3C/line%3E%3C/svg%3E") !important;
}

/* ========================================================
   RESPONSIVE: SEMUA FIELD RATA KANAN KIRI DI TABLET & MOBILE
   ======================================================== */
@media screen and (max-width: 992px) {
    .saas-filter-topbar {
        display: flex !important;
        flex-direction: column !important;
        gap: 12px !important;
        width: 100% !important;
    }
    
    .saas-filter-group {
        width: 100% !important;
        display: flex !important;
        flex-direction: row !important;
        justify-content: space-between !important;
        align-items: center !important;
        gap: 10px !important;
        flex-wrap: nowrap !important;
    }

    /* Memaksa elemen select, input, dan wrapper-nya mengambil ruang secara rata */
    .saas-filter-group .cqr-select-wrapper,
    .saas-filter-group .cqr-search-input,
    .saas-filter-group input,
    .saas-filter-group select {
        flex: 2 !important;
        width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box !important;
    }
}

/* ========================================================
   SEMBUNYIKAN TOMBOL TOGGLE DI DESKTOP (>= 1025px)
   ======================================================== */
.cqr-mobile-menu-toggle {
    display: none !important;
}

/* ========================================================
   MUNCUL DI HP MAUPUN TABLET (MAKSIMAL 1024px, TANPA BATASAN
   ORIENTASI) — supaya tablet berlayar besar (mis. iPad, Huawei
   MatePad, dsb.) yang lebar viewport-nya masih di atas ukuran HP
   tetap dapat sidebar mode toggle yang ringan & bisa di-scroll,
   bukan sidebar fixed ala desktop yang bisa memicu layar tidak
   bisa di-scroll di beberapa browser/tablet.
   ======================================================== */
@media screen and (max-width: 1024px) {
    .cqr-mobile-menu-toggle {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        background: transparent !important;
        border: none !important;
        padding: 4px !important;
        color: var(--text-dark) !important;
        cursor: pointer;
    }

    .saas-app-wrapper {
        flex-direction: column !important;
    }

    .saas-sidebar {
        width: 100% !important;
        height: auto !important;
        bottom: auto !important;
        display: flex !important;
        flex-direction: column !important;
        padding: 14px 18px !important;
        box-sizing: border-box !important;
        background: var(--bg-sidebar) !important;
        border-bottom: 1px solid var(--border-card);
        overflow: visible !important;
        z-index: 200;
    }

    .cqr-sidebar-header-mobile {
        display: flex !important;
        flex-direction: row !important;
        justify-content: space-between !important;
        align-items: center !important;
        width: 100% !important;
        position: relative !important;
    }

    /* Dropdown card navigasi (nav + tema tampilan + akun/logout):
       melayang di bawah header, bukan lagi ikut mendorong/menutupi
       seluruh layar. Disembunyikan secara default, baru muncul
       sebagai card mengambang saat tombol toggle (hamburger) diklik. */
    .cqr-sidebar-collapsible {
        display: none !important;
        flex-direction: column !important;
        position: absolute !important;
        top: calc(100% + 20px) !important;
        left: 20px !important;
        right: 20px !important;
        width: auto !important;
        margin-top: 0 !important;
        padding: 14px !important;
        background: var(--bg-card) !important;
        border: 1px solid var(--border-card) !important;
        border-radius: 16px !important;
        box-shadow: 0 16px 40px rgba(15, 23, 42, 0.18) !important;
        max-height: calc(100vh - 90px) !important;
        overflow-y: auto !important;
        -webkit-overflow-scrolling: touch !important;
        z-index: 300 !important;
    }

    .cqr-sidebar-collapsible.is-open {
        display: flex !important;
    }

    .cqr-sidebar-collapsible-top {
        width: 100% !important;
    }

    .saas-nav-group {
        flex-direction: column !important;
        width: 100% !important;
        gap: 6px !important;
        margin-top: 0 !important;
    }

    .saas-nav-group .saas-nav-btn {
        width: 100% !important;
        text-align: left !important;
        justify-content: flex-start !important;
    }

    /* Akun/logout ikut jadi bagian dari grup yang di-toggle, dengan
       jarak & pemisah yang sama seperti dropdown tema di atasnya. */
    .cqr-sidebar-collapsible .saas-user-footer {
        margin-top: 14px !important;
        padding-top: 14px !important;
        border-top: 1px solid var(--border-card) !important;
    }
}

/* ========================================================
   FORCE METRIC GRID LAYOUT (OVERRIDE WORDPRESS/PLUGIN)
   ======================================================== */

div.saas-metrics-grid,
.saas-metrics-grid {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 16px !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    margin-bottom: 20px !important;
}

div.saas-metrics-grid .saas-metric-card,
.saas-metric-card {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
    overflow-wrap: break-word !important;
    word-break: break-word !important;
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
}

/* Mode Portrait (Layar Tegak / HP / Tablet Portrait) -> Paksa 2 Kolom */
@media screen and (orientation: portrait) {
    div.saas-metrics-grid,
    .saas-metrics-grid {
        grid-template-columns: repeat(2, 1fr) !important;
    }
}

/* ========================================================
   RESPONSIF: ISI METRIC CARD DI LAYAR SEMPIT (HP/PORTRAIT)
   BUG SEBELUMNYA: kartu dipaksa 2 kolom di atas, TAPI isi kartu
   masih flex-direction row dengan donut 96px fixed + label huruf
   kapital ber-letter-spacing -- di layar sempit ruang tersisa untuk
   teks jadi sangat kecil, dan word-break: break-word (di atas)
   memaksa kata seperti "TOTAL INVITED" dipotong per beberapa huruf
   ("TO / TAL / INV / ITE / D"), bukan per kata.
   FIX: di bawah breakpoint ini, susun ulang isi kartu jadi VERTIKAL
   (donut di atas, teks di bawah, center-align) & kecilkan donut --
   dengan begitu teks selalu dapat lebar penuh kartu untuk wrap
   NORMAL per kata, bukan per huruf.
   ======================================================== */
@media screen and (max-width: 560px) {
    div.saas-metrics-grid .saas-metric-card,
    .saas-metric-card {
        flex-direction: column !important;
        justify-content: center !important;
        text-align: center;
        padding: 16px 12px !important;
        gap: 10px !important;
    }
    .saas-metric-card-text {
        align-items: center;
        width: 100%;
    }
    .saas-metric-label {
        word-break: normal !important;
        overflow-wrap: normal !important;
        white-space: normal !important;
        font-size: 11px;
        line-height: 1.4;
    }
    .saas-metric-value {
        font-size: 22px;
    }
    .cqr-metric-donut {
        width: 68px !important;
        height: 68px !important;
    }
    .cqr-metric-donut-center {
        font-size: 12px;
    }
}

/* Layar SANGAT sempit (HP kecil, <380px) -> balik ke 1 kolom supaya
   kartu tidak makin sesak, teks & donut tetap nyaman dibaca. */
@media screen and (max-width: 380px) {
    div.saas-metrics-grid,
    .saas-metrics-grid {
        grid-template-columns: 1fr !important;
    }
    div.saas-metrics-grid .saas-metric-card,
    .saas-metric-card {
        flex-direction: row !important;
        text-align: left;
        justify-content: space-between !important;
    }
    .saas-metric-card-text {
        align-items: flex-start;
    }
    .cqr-metric-donut {
        width: 80px !important;
        height: 80px !important;
    }
}

/* Container untuk menempatkan alert di tengah atas */
#cqr-floating-alert-container {
    position: fixed;
    top: 20px; /* Jarak/margin dari atas layar */
    right: 20px; /* Jarak dari sisi kanan layar */
    z-index: 99999;
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-width: 400px;
    width: 100%;
}

.cqr-custom-alert {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 18px;
    border-radius: 12px;
    color: #fff;
    font-family: inherit;
    font-size: 14px;
    font-weight: 500;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    backdrop-filter: blur(8px);
    animation: cqrSlideIn 0.3s ease-out forwards;
}

/* Varian Warna Transparan */
.cqr-custom-alert.success {
    background-color: rgba(40, 167, 69, 0.70); /* Hijau transparan */
}

.cqr-custom-alert.error {
    background-color: rgba(220, 53, 69, 0.70); /* Merah transparan (kurung tutup sudah diperbaiki) */
}

.cqr-custom-alert.info {
    background-color: rgba(23, 162, 184, 0.70); /* Biru transparan */
}

.cqr-alert-content {
    display: flex;
    align-items: center;
    gap: 12px;
    overflow: hidden;
}

.cqr-alert-message {
    word-break: break-word;
}

.cqr-alert-close {
    background: transparent;
    border: none;
    color: #fff;
    font-size: 18px;
    cursor: pointer;
    padding: 0 0 0 10px;
    opacity: 0.8;
    transition: opacity 0.2s;
}

.cqr-alert-close:hover {
    opacity: 1;
}

@keyframes cqrSlideIn {
    from {
        transform: translateY(-20px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}
/* ========================================================
   NOTIFICATION BELL (Top Right of Dashboard Header)
   ======================================================== */
.cqr-notif-bell-btn {
    position: relative;
    background: transparent;
    border: none;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--text-dark) !important;
    flex-shrink: 0;
    transition: background-color 0.2s ease;
}

.cqr-notif-bell-btn:hover {
    background: var(--nav-hover-bg);
}

/* BUGFIX "WARNA FOKUS TOMBOL": tanpa style :focus custom, browser
   (terutama Chrome) mewarnai tombol bulat ini dengan lingkaran abu-abu
   solid bawaan saat diklik/fokus -- kelihatan seperti "nyala sendiri"
   & tidak nyambung sama warna aksen situs. Outline default dimatikan,
   diganti ring tipis warna --accent-indigo (dipakai juga di elemen
   fokus lain seperti input) supaya konsisten di seluruh dashboard. */
.cqr-notif-bell-btn:focus {
    outline: none;
    background: var(--nav-hover-bg);
}
.cqr-notif-bell-btn:focus-visible {
    outline: none;
    background: var(--nav-hover-bg);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-indigo) 35%, transparent);
}

/* BUGFIX "ICON TIDAK TAMPIL SAMA SEKALI": kemungkinan besar 'color'
   tombol ini ketiban rule global dari tema/Elementor aktif (mis. reset
   umum semacam "button { color: ... }" yang ikut ke-load di halaman
   dashboard) -- currentColor yang dipakai stroke SVG di dalamnya ikut
   jadi transparan/menyatu dengan background walau class .cqr-notif-bell-btn
   sudah set var(--text-dark). Dipaksa eksplisit di sini (!important)
   langsung ke elemen svg-nya supaya ikon lonceng & gear SELALU kelihatan,
   apa pun rule global yang aktif. */
.cqr-notif-bell-btn svg {
    color: inherit !important;
    stroke: currentColor !important;
    fill: none !important;
    flex-shrink: 0;
}

.cqr-notif-dot {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #ef4444;
    border: 2px solid var(--bg-card);
}

.cqr-notif-dropdown {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    width: 320px;
    max-width: 88vw;
    background: var(--bg-card);
    border-radius: 14px;
    box-shadow: 0 12px 32px rgba(0,0,0,0.14);
    border: 1px solid var(--border-card);
    z-index: 1000;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px);
    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s ease, background-color 0.25s ease;
}

.cqr-notif-dropdown.is-active {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.cqr-notif-dropdown-header {
    padding: 14px 16px;
    font-weight: 800;
    font-size: 13px;
    border-bottom: 1px solid var(--border-card);
    color: var(--text-dark);
}

.cqr-notif-list {
    max-height: 340px;
    overflow-y: auto;
    padding: 6px;
}

.cqr-notif-empty {
    text-align: center;
    color: var(--text-muted);
    font-size: 12px;
    padding: 24px 12px;
}

.cqr-notif-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 10px;
    border-radius: 10px;
    transition: background 0.15s;
}

.cqr-notif-item:hover {
    background: var(--nav-hover-bg);
}

.cqr-notif-item.is-new {
    background: rgba(99, 102, 241, 0.1);
}

.cqr-notif-item-icon {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--nav-hover-bg);
    color: var(--text-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.cqr-notif-item.is-new .cqr-notif-item-icon {
    background: rgba(99, 102, 241, 0.18);
    color: var(--accent-indigo);
}

.cqr-notif-item-body {
    flex: 1;
    min-width: 0;
}

.cqr-notif-item-text {
    font-size: 12.5px;
    color: var(--text-dark);
    font-weight: 600;
    line-height: 1.4;
    word-break: break-word;
}

.cqr-notif-item-time {
    font-size: 11px;
    color: var(--text-muted);
    margin-top: 2px;
}

@media (max-width: 640px) {
    .cqr-notif-dropdown {
        position: fixed;
        top: 70px;
        right: 12px;
        left: 12px;
        width: auto;
        max-width: none;
    }
}

/* Tombol solid hitam (dipakai Download QR di Modal Detail Tamu) */
.cqr-black-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--btn-dark-bg);
    color: var(--btn-dark-text);
    border: none;
    border-radius: 12px;
    padding: 11px 16px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s, opacity 0.2s;
}

.cqr-black-btn:hover {
    background: var(--btn-primary-hover);
}

.cqr-black-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

/* ========================================================
   TABEL DINAMIS "CREATE NEW ROUTE INVITATION"
   ======================================================== */
.cqr-add-guest-table th,
.cqr-add-guest-table td {
    padding: 10px 12px !important;
}

.cqr-add-guest-table td input.cqr-filter-white {
    width: 100%;
    box-sizing: border-box;
}

.cqr-add-row-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #eff6ff;
    color: #2563eb;
    border: 1.5px dashed #93c5fd;
    border-radius: 10px;
    padding: 9px 16px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s, border-color 0.2s;
}

.cqr-add-row-btn:hover {
    background: #dbeafe;
    border-color: #60a5fa;
}

/* ========================================================
   FIX: TOMBOL BERUBAH GELAP SETELAH DIKLIK
   Tanpa aturan :focus/:active sendiri, tombol custom bisa
   "ditimpa" oleh style focus bawaan browser/tema WordPress
   (biasanya gelap) begitu tombol dalam kondisi ter-fokus
   setelah diklik. Semua tombol custom plugin ini dikunci
   di sini supaya :focus/:active selalu tampil SAMA seperti
   kondisi normal/hover-nya, tidak pernah ketiban style luar.
   ======================================================== */
.cqr-add-row-btn.cqr-add-row-btn:focus,
.cqr-add-row-btn.cqr-add-row-btn:active {
    background: #eff6ff !important;
    color: #2563eb !important;
    border-color: #93c5fd !important;
    outline: none !important;
    box-shadow: none !important;
}

.cqr-black-btn:focus,
.cqr-black-btn:active,
.cqr-btn-black-rounded:focus,
.cqr-btn-black-rounded:active,
.btn-copy-trigger:focus,
.btn-copy-trigger:active {
    background-color: var(--btn-dark-bg) !important;
    color: var(--btn-dark-text) !important;
    outline: none !important;
    box-shadow: none !important;
}

.cqr-modal-btn:focus,
.cqr-modal-btn:active,
.cqr-btn-neutral:focus,
.cqr-btn-neutral:active {
    background-color: var(--nav-hover-bg) !important;
    color: var(--text-dark) !important;
    outline: none !important;
    box-shadow: none !important;
}

.cqr-modal-btn.cqr-modal-btn-primary:focus,
.cqr-modal-btn.cqr-modal-btn-primary:active,
.cqr-btn-neutral.cqr-modal-btn-primary:focus,
.cqr-btn-neutral.cqr-modal-btn-primary:active {
    background-color: var(--btn-dark-bg) !important;
    color: var(--btn-dark-text) !important;
}

.cqr-modal-btn.cqr-modal-btn-danger:focus,
.cqr-modal-btn.cqr-modal-btn-danger:active,
.cqr-btn-neutral.cqr-modal-btn-danger:focus,
.cqr-btn-neutral.cqr-modal-btn-danger:active {
    background-color: #ef4444 !important;
    color: #ffffff !important;
}

.cqr-btn-modal-secondary:focus,
.cqr-btn-modal-secondary:active {
    background-color: var(--nav-hover-bg) !important;
    color: var(--text-dark) !important;
    outline: none !important;
    box-shadow: none !important;
}

.cqr-venue-detail-btn:focus,
.cqr-venue-detail-btn:active {
    background-color: var(--btn-dark-bg) !important;
    outline: none !important;
    box-shadow: none !important;
}

.cqr-row-delete-btn:focus,
.cqr-row-delete-btn:active {
    background-color: #fef2f2 !important;
    color: #ef4444 !important;
    outline: none !important;
    box-shadow: none !important;
}

.cqr-row-delete-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    background: #fef2f2;
    color: #ef4444;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    transition: background 0.2s;
    font-size: 20px;
    font-weight: 700;
    line-height: 1;
    padding: 0;
}

.cqr-row-delete-btn:hover {
    background: #fee2e2;
}

/* ========================================================
   OVERVIEW AREA — Grid Denah Meja per Area
   ======================================================== */
.cqr-venue-area-block {
    margin-bottom: 28px;
}
.cqr-venue-area-block:last-child {
    margin-bottom: 0;
}
.cqr-venue-area-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
    padding-bottom: 8px;
    border-bottom: 2px solid var(--border-card);
}
.cqr-venue-area-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--text-dark);
    margin: 0;
}
.cqr-venue-area-actions {
    display: flex;
    gap: 6px;
}
.cqr-venue-area-action-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    background: var(--nav-hover-bg);
    color: var(--text-muted);
    border: none;
    border-radius: 8px;
    cursor: pointer;
    transition: background 0.2s, color 0.2s;
}
.cqr-venue-area-action-btn:hover {
    background: var(--border-card);
}
.cqr-venue-area-action-btn.is-danger:hover {
    background: #fee2e2;
    color: #ef4444;
}
.cqr-venue-table-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 14px;
}
.cqr-venue-table-card {
    position: relative;
    background: var(--table-row-alt-bg);
    border: 1px solid var(--border-card);
    border-radius: 14px;
    padding: 14px;
    transition: box-shadow 0.2s, background-color 0.25s ease, border-color 0.25s ease;
}
.cqr-venue-table-card:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.06);
}
.cqr-venue-table-card.is-full {
    background: #fff7ed;
    border-color: #fed7aa;
}
html[data-theme="dark"] .cqr-venue-table-card.is-full {
    background: #3a2c1c;
    border-color: #6b4a20;
}
.cqr-venue-table-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
}
.cqr-venue-table-number {
    font-size: 14px;
    font-weight: 800;
    color: var(--text-dark);
}
.cqr-venue-table-count {
    font-size: 11px;
    font-weight: 700;
    background: var(--nav-hover-bg);
    color: var(--text-dark);
    padding: 2px 8px;
    border-radius: 10px;
}
.cqr-venue-table-count.is-full {
    background: #fed7aa;
    color: #9a3412;
}
.cqr-venue-table-names {
    font-size: 12px;
    color: var(--text-muted);
    line-height: 1.5;
    min-height: 32px;
    margin-bottom: 10px;
}
.cqr-venue-table-card-footer {
    display: flex;
    align-items: center;
    gap: 6px;
}
.cqr-venue-detail-btn {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    background: var(--btn-dark-bg);
    color: var(--btn-dark-text);
    border: none;
    border-radius: 8px;
    padding: 6px 10px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.2s ease;
}
.cqr-venue-detail-btn:hover {
    background: var(--btn-primary-hover);
}
.cqr-venue-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    flex-shrink: 0;
    background: var(--bg-card);
    border: 1px solid var(--border-card);
    color: var(--text-muted);
    border-radius: 8px;
    cursor: pointer;
    transition: background 0.2s, color 0.2s;
}
.cqr-venue-icon-btn:hover {
    background: var(--nav-hover-bg);
}
.cqr-venue-icon-btn.is-danger:hover {
    background: #fee2e2;
    color: #ef4444;
}

/* ========================================================
   MODAL GENERIK BERGAYA "OVERVIEW GUEST" (dipakai bersama oleh
   Detail Tamu, Detail Meja, Tambah Area, Tambah Meja, Add Guest)
   ======================================================== */
.cqr-detail-modal-overlay {
    position: fixed; top: 0; left: 0; width: 100%; height: 100%;
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(4px);
    display: flex; align-items: center; justify-content: center;
    z-index: 100000;
    opacity: 0; visibility: hidden;
    transition: opacity 0.25s ease, visibility 0.25s ease;
    padding: 16px;
    box-sizing: border-box;
}
.cqr-detail-modal-overlay.is-active { opacity: 1; visibility: visible; }
.cqr-detail-modal-box {
    background: var(--bg-card);
    width: 100%; max-width: 420px;
    border-radius: 20px;
    padding: 26px 24px 24px 24px;
    position: relative;
    box-shadow: 0 10px 30px rgba(0,0,0,0.15);
    max-height: 90vh;
    overflow-y: auto;
    box-sizing: border-box;
    transition: background-color 0.25s ease;
}
.cqr-detail-close-btn {
    position: absolute; top: 16px; right: 16px;
    background: transparent; border: none;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; color: var(--text-muted); padding: 4px;
}
.cqr-detail-row {
    display: flex; justify-content: space-between; align-items: flex-start;
    padding: 9px 0; border-bottom: 1px dashed var(--border-card); gap: 12px;
}
.cqr-detail-row:last-child { border-bottom: none; }
.cqr-detail-label { font-size: 12px; color: var(--text-muted); font-weight: 600; white-space: nowrap; }
.cqr-detail-value { font-size: 13px; color: var(--text-dark); font-weight: 600; text-align: right; word-break: break-word; }

/* ========================================================
   INPUT TEKS/NOMOR DI DALAM MODAL (Edit Tamu, Edit Area/Meja,
   Tambah Area/Meja, Jumlah Kehadiran) — disamakan dengan
   background field filter supaya ikut var tema (Dark Mode dsb).
   ======================================================== */
.cqr-modal-input {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    font-size: 14px;
    outline: none;
    box-sizing: border-box;
    background-color: var(--input-bg);
    color: var(--text-dark);
    transition: border-color 0.2s ease, background-color 0.25s ease, color 0.25s ease;
}
.cqr-modal-input:hover {
    border-color: var(--input-hover-border);
}
.cqr-modal-input:focus {
    border-color: var(--accent-indigo);
}
.cqr-modal-input::placeholder {
    color: var(--text-muted);
}

/* ========================================================
   DROPDOWN PILIHAN TEMA SISTEM/DASHBOARD (Sidebar)
   ======================================================== */
.cqr-theme-switcher-wrap {
    position: relative;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid var(--border-card);
}

.cqr-theme-switcher-btn {
    justify-content: flex-start;
}

.cqr-theme-current-swatch {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    border: 1px solid rgba(0,0,0,0.1);
    background: var(--btn-dark-bg);
    flex-shrink: 0;
}

.cqr-theme-dropdown {
    position: absolute;
    left: 0;
    bottom: calc(100% + 6px);
    width: 100%;
    background: var(--bg-card);
    border: 1px solid var(--border-card);
    border-radius: 14px;
    box-shadow: 0 12px 32px rgba(0,0,0,0.14);
    padding: 8px;
    z-index: 400;
    opacity: 0;
    visibility: hidden;
    transform: translateY(6px);
    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s ease, background-color 0.25s ease;
}

.cqr-theme-dropdown.is-active {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.cqr-theme-option {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    background: transparent;
    border: none;
    border-radius: 10px;
    padding: 9px 10px;
    font-size: 13px;
    font-weight: 600;
    color: var(--text-dark);
    cursor: pointer;
    text-align: left;
    transition: background 0.15s;
}

.cqr-theme-option:hover {
    background: var(--nav-hover-bg);
    color: var(--text-dark) !important;
}

.cqr-theme-option.is-selected {
    background: var(--nav-hover-bg);
    color: var(--text-dark) !important;
}

.cqr-theme-swatch {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    border: 1px solid rgba(0,0,0,0.1);
    flex-shrink: 0;
}

.cqr-theme-divider {
    height: 1px;
    background: var(--border-card);
    margin: 6px 4px;
}

.cqr-theme-color-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 6px 10px 4px 10px;
}

.cqr-theme-color-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.cqr-theme-color-controls {
    display: flex;
    align-items: center;
    gap: 8px;
}

.cqr-theme-color-input {
    -webkit-appearance: none;
    appearance: none;
    width: 30px;
    height: 30px;
    padding: 0;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background: transparent;
    cursor: pointer;
}

.cqr-theme-color-input::-webkit-color-swatch-wrapper {
    padding: 2px;
}

.cqr-theme-color-input::-webkit-color-swatch {
    border: none;
    border-radius: 6px;
}

.cqr-theme-color-input::-moz-color-swatch {
    border: none;
    border-radius: 6px;
}

.cqr-theme-color-reset {
    background: var(--nav-hover-bg);
    color: var(--text-muted);
    border: none;
    border-radius: 8px;
    padding: 6px 10px;
    font-size: 11px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s;
}

.cqr-theme-color-reset:hover {
    background: var(--border-card);
    color: var(--text-dark);
}

/* ========================================================
   SCANNER GATE -- VIEWPORT KAMERA & TOMBOL GANTI KAMERA
   ========================================================
   BUGFIX: class ini dipakai di panel-scanner.php tapi sebelumnya
   TIDAK PERNAH punya definisi CSS sama sekali -- akibatnya tombol
   "Ganti Kamera" (yang seharusnya "mengambang" di pojok video kamera)
   tidak punya posisi/ukuran/warna sama sekali, jadi terlihat seperti
   hilang/tidak ada (padahal elemennya ada di HTML, cuma polos tanpa
   style, gampang ketiban elemen video kamera yang muncul di atasnya).
   ======================================================== */
.cqr-scanner-viewport {
    position: relative;
    width: 100%;
    max-width: 400px;
    aspect-ratio: 1 / 1;
    margin: 0 auto 16px auto;
    background: #000;
    border-radius: 16px;
    overflow: hidden;
}
.cqr-scanner-viewport #cqr-qr-reader {
    width: 100%;
    height: 100%;
}
.cqr-scanner-switch-overlay-btn {
    position: absolute;
    bottom: 12px;
    right: 12px;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: rgba(17, 17, 17, 0.6);
    color: #fff;
    border: none;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 10;
    transition: background-color 0.2s ease;
}
.cqr-scanner-switch-overlay-btn:hover {
    background: rgba(17, 17, 17, 0.85);
}

/* ========================================================
   DROPDOWN "PENGATURAN" -- 2 VIEW (Daftar Menu / Reset Password)
   Ikon gerigi di header dashboard. Lihat toggleCqrSettingsDropdown(),
   cqrShowSettingsMenu(), cqrShowChangePasswordPanel() di
   dashboard-core.js.
   ======================================================== */
.cqr-settings-menu-list {
    padding: 6px;
}
.cqr-settings-menu-item {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 12px 10px;
    border: none;
    background: transparent;
    border-radius: 10px;
    cursor: pointer;
    text-align: left;
    transition: background 0.15s ease;
}
.cqr-settings-menu-item:hover {
    background: var(--nav-hover-bg);
}
.cqr-settings-menu-icon {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--nav-hover-bg);
    color: var(--text-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.cqr-settings-menu-text {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.cqr-settings-menu-text strong {
    font-size: 13px;
    color: var(--text-dark);
    font-weight: 700;
}
.cqr-settings-menu-text small {
    font-size: 11px;
    color: var(--text-muted);
}
.cqr-settings-menu-chevron {
    flex-shrink: 0;
    color: var(--text-muted);
}
.cqr-settings-subheader {
    display: flex;
    align-items: center;
    gap: 8px;
}
.cqr-settings-back-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    border: none;
    background: var(--nav-hover-bg);
    color: var(--text-dark);
    cursor: pointer;
    flex-shrink: 0;
    padding: 0;
}
.cqr-settings-back-btn:hover {
    background: var(--border-card);
}

/* ========================================================
   MODAL "SETTING LAYAR SAPA"
   ======================================================== */
.cqr-greeting-settings-box {
    max-width: 720px;
}
.cqr-gs-settings-layout {
    display: flex;
    flex-direction: column;
    gap: 22px;
}
.cqr-gs-preview-wrap {
    width: 100%;
}
.cqr-gs-preview-label {
    font-size: 11px;
    font-weight: 700;
    color: var(--text-muted);
    letter-spacing: 0.3px;
    margin-bottom: 8px;
}
.cqr-gs-preview-stage {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 10;
    border-radius: 14px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 16px;
    text-align: center;
    color: #fff;
    background: radial-gradient(circle at 30% 20%, rgba(99,102,241,0.28), transparent 55%), #0b0b0f;
    box-shadow: 0 8px 22px rgba(0,0,0,0.18);
    font-family: 'Playfair Display', serif;
    transition: background 0.2s ease;
}
.cqr-gs-preview-check {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #6366f1;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 0 0 6px rgba(99,102,241,0.16);
    margin-bottom: 2px;
}
.cqr-gs-preview-eyebrow {
    font-weight: 600;
    letter-spacing: 2px;
    text-transform: uppercase;
    opacity: 0.72;
}
.cqr-gs-preview-name {
    font-weight: 700;
    line-height: 1.1;
    word-break: break-word;
}
.cqr-gs-preview-msg {
    font-weight: 500;
    opacity: 0.82;
}
.cqr-gs-field-label {
    display: block;
    font-size: 11px;
    font-weight: 700;
    color: var(--text-muted);
    margin-bottom: 5px;
    letter-spacing: 0.3px;
}
.cqr-gs-bg-toggle {
    display: flex;
    gap: 6px;
    background: var(--nav-hover-bg);
    border-radius: 10px;
    padding: 4px;
}
.cqr-gs-bg-tab {
    flex: 1;
    border: none;
    background: transparent;
    padding: 8px 10px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    color: var(--text-muted);
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
.cqr-gs-bg-tab.is-active {
    background: var(--bg-card);
    color: var(--text-dark);
    box-shadow: 0 1px 4px rgba(0,0,0,0.12);
}
/* Slider "Opacity Overlay" -- plugin ini belum punya style range
   sebelumnya (semua field lain pakai text/select/color), jadi
   di-style ringkas di sini biar tidak tampil abu-abu polos bawaan
   browser yang kontras aneh dengan modal gelap. */
.cqr-gs-form-wrap input[type="range"] {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    height: var(--control-height, 40px);
    background: transparent;
    cursor: pointer;
    margin: 0;
}
.cqr-gs-form-wrap input[type="range"]::-webkit-slider-runnable-track {
    height: 6px;
    border-radius: 999px;
    background: var(--input-border);
}
.cqr-gs-form-wrap input[type="range"]::-moz-range-track {
    height: 6px;
    border-radius: 999px;
    background: var(--input-border);
}
.cqr-gs-form-wrap input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--accent-indigo);
    border: 2px solid #fff;
    box-shadow: 0 1px 4px rgba(0,0,0,0.3);
    margin-top: -6px;
}
.cqr-gs-form-wrap input[type="range"]::-moz-range-thumb {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--accent-indigo);
    border: 2px solid #fff;
    box-shadow: 0 1px 4px rgba(0,0,0,0.3);
}

.cqr-gs-bg-upload-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 22px 12px;
    border: 1.5px dashed var(--border-card);
    border-radius: 10px;
    color: var(--text-muted);
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color 0.15s ease, color 0.15s ease;
}
.cqr-gs-bg-upload-btn:hover {
    border-color: var(--accent-indigo);
    color: var(--accent-indigo);
}
.cqr-gs-bg-remove-btn {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    border: none;
    background: rgba(0,0,0,0.55);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    padding: 0;
}
.cqr-gs-bg-remove-btn:hover {
    background: rgba(239,68,68,0.85);
}

/* ========================================================
   TOMBOL CIUTKAN/PERLUAS SIDEBAR (DESKTOP >= 1025px)
   ------------------------------------------------------------
   Status ciut/terbuka disimpan lewat attribute
   html[data-sidebar-collapsed="1"] (bukan class di .saas-app-wrapper)
   supaya bisa diterapkan SEDINI MUNGKIN oleh inline script paling
   atas view-dashboard.php (sebelum sidebar sempat dirender penuh),
   sama seperti pola html[data-theme="dark"] yang sudah ada.

   Tombolnya sendiri sekarang jadi bagian baris header sidebar
   (.cqr-sidebar-header-mobile, align kanan sejajar judul dashboard),
   BUKAN lagi tombol fixed terpisah yang melayang di tepi sidebar.
   ======================================================== */
/* Pola sama persis dengan .cqr-notif-bell-btn (lihat komentar
   "BUGFIX WARNA FOKUS TOMBOL" di situ): 'color' & 'background' dipaksa
   !important supaya tidak ketiban rule global dari tema/Elementor aktif
   di halaman (penyebab warna hover/fokus jadi tidak konsisten di tema
   Light), dan ring fokusnya pakai var(--accent-indigo) yang sama dipakai
   elemen fokus lain di dashboard ini -- BUKAN outline/warna bawaan
   browser lagi. */
.cqr-sidebar-collapse-btn {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    padding: 0;
    border-radius: 8px;
    border: none;
    background: transparent;
    color: var(--text-dark) !important;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background-color 0.2s ease, color 0.2s ease;
}
.cqr-sidebar-collapse-btn:hover,
.cqr-sidebar-collapse-btn:active {
    background: var(--nav-hover-bg);
    color: var(--text-dark) !important;
}
.cqr-sidebar-collapse-btn:focus {
    outline: none;
    background: var(--nav-hover-bg);
    color: var(--text-dark) !important;
}
.cqr-sidebar-collapse-btn:focus-visible {
    outline: none;
    background: var(--nav-hover-bg);
    color: var(--text-dark) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-indigo) 35%, transparent);
}
.cqr-sidebar-collapse-btn svg {
    color: inherit !important;
    stroke: currentColor !important;
    fill: none !important;
    transition: transform 0.25s ease;
}

.saas-sidebar {
    transition: background-color 0.25s ease, width 0.25s ease, padding 0.25s ease, opacity 0.2s ease;
}
.saas-main-content {
    transition: margin-left 0.25s ease;
}

/* Lebar sidebar saat diciutkan (DESKTOP) -- BUKAN 0/hilang total lagi,
   melainkan menciut jadi "rail" sempit yang tetap menampilkan ikon menu
   supaya user tetap bisa pindah tab tanpa perlu memperluas sidebar dulu. */
:root {
    --sidebar-collapsed-width: 76px;
}

html[data-sidebar-collapsed="1"] .saas-sidebar {
    width: var(--sidebar-collapsed-width) !important;
    min-width: var(--sidebar-collapsed-width) !important;
    padding-left: 10px !important;
    padding-right: 10px !important;
    overflow-x: hidden !important;
    opacity: 1;
    pointer-events: auto;
}
html[data-sidebar-collapsed="1"] .saas-main-content {
    margin-left: var(--sidebar-collapsed-width) !important;
}
html[data-sidebar-collapsed="1"] .cqr-sidebar-collapse-btn svg {
    transform: rotate(180deg);
}

/* --- Isi sidebar saat rail/collapsed: sisakan ikon saja --- */

/* Header: logo/judul dashboard disembunyikan TOTAL saat rail, yang
   tersisa cuma tombol ciutkan/perluas-nya sendiri (di-tengah-kan), dengan
   jarak ekstra ke menu nav di bawahnya supaya tidak terlalu mepet. */
html[data-sidebar-collapsed="1"] .cqr-sidebar-header-mobile {
    justify-content: center;
    margin-bottom: 22px;
}
html[data-sidebar-collapsed="1"] .cqr-sidebar-header-mobile .saas-brand {
    display: none;
}

/* Tombol menu nav: ikon di tengah, label teks disembunyikan (tooltip
   native browser via attribute title="" tetap muncul saat di-hover). */
html[data-sidebar-collapsed="1"] .saas-nav-btn {
    justify-content: center;
    padding: 12px 0;
    gap: 0;
}
html[data-sidebar-collapsed="1"] .saas-nav-btn .cqr-nav-label {
    display: none;
}

/* Dropdown "Tema Tampilan" tetap bisa diakses saat rail -- cuma ikon
   palet-nya yang tersisa di rail (label teks, swatch warna aktif, &
   chevron disembunyikan, dropdown-nya sendiri jadi "flyout" muncul
   di SAMPING KANAN rail, bukan lagi menutupi lebar penuh sidebar). */
html[data-sidebar-collapsed="1"] .cqr-theme-switcher-btn {
    justify-content: center;
}
html[data-sidebar-collapsed="1"] .cqr-theme-current-swatch,
html[data-sidebar-collapsed="1"] .cqr-theme-switcher-btn svg:last-child {
    display: none;
}
html[data-sidebar-collapsed="1"] .cqr-theme-dropdown {
    left: calc(100% + 12px);
    bottom: 0;
    width: 240px;
}

/* Footer akun: avatar & tombol sign-out tetap tampil (ditumpuk vertikal),
   nama/role client disembunyikan. */
html[data-sidebar-collapsed="1"] .saas-user-footer {
    flex-direction: column;
    align-items: center;
    gap: 12px;
}
html[data-sidebar-collapsed="1"] .cqr-user-footer-info {
    flex-direction: column;
    gap: 8px !important;
}
html[data-sidebar-collapsed="1"] .cqr-user-footer-text {
    display: none;
}

/* Di mode mobile/tablet (<=1024px) sudah ada tombol hamburger sendiri
   (.cqr-mobile-menu-toggle) & sidebar sudah jadi layout non-fixed --
   tombol ciutkan desktop ini disembunyikan total di situ. */
@media screen and (max-width: 1024px) {
    .cqr-sidebar-collapse-btn {
        display: none !important;
    }
    html[data-sidebar-collapsed="1"] .saas-sidebar {
        width: 100% !important;
        opacity: 1 !important;
        pointer-events: auto !important;
    }
    html[data-sidebar-collapsed="1"] .saas-main-content {
        margin-left: 0 !important;
    }
}
