* { box-sizing: border-box; }
:root {
    color-scheme: dark light;
}
body {
    --bg: #f4f6f8;
    --text: #1f2933;
    --muted: #64748b;
    --panel-bg: #ffffff;
    --panel-border: #e2e8f0;
    --input-bg: #ffffff;
    --input-border: #cbd5e1;
    --button-bg: #155e75;
    --button-text: #ffffff;
    --sidebar-bg: #102a43;
    --sidebar-text: #d9e2ec;
    --sidebar-active: #1f4e5f;
    --topbar-text: #1f2933;
    transition: background-color .2s ease, color .2s ease;
}
body.dark-mode {
    --bg: #0f172a;
    --text: #f8fafc;
    --muted: #cbd5e1;
    --panel-bg: #172033;
    --panel-border: #334155;
    --input-bg: #111827;
    --input-border: #475569;
    --button-bg: #0891b2;
    --button-text: #ffffff;
    --sidebar-bg: #071923;
    --sidebar-text: #dbeafe;
    --sidebar-active: #155e75;
    --topbar-text: #f8fafc;
}
body.light-mode {
    --bg: #f4f6f8;
    --text: #1f2933;
    --muted: #64748b;
    --panel-bg: #ffffff;
    --panel-border: #e2e8f0;
    --input-bg: #ffffff;
    --input-border: #cbd5e1;
    --button-bg: #155e75;
    --button-text: #ffffff;
    --sidebar-bg: #102a43;
    --sidebar-text: #d9e2ec;
    --sidebar-active: #1f4e5f;
    --topbar-text: #1f2933;
}
[hidden] {
    display: none !important;
}
body {
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
    background: var(--bg);
    color: var(--text);
}
a { color: #155e75; text-decoration: none; }
button, .button {
    display: inline-block;
    border: 0;
    background: var(--button-bg);
    color: var(--button-text);
    padding: 10px 14px;
    border-radius: 6px;
    cursor: pointer;
    font-weight: 700;
}
.button.secondary { background: #64748b; }
input, select, textarea {
    width: 100%;
    padding: 10px;
    border: 1px solid var(--input-border);
    border-radius: 6px;
    background: var(--input-bg);
    color: var(--text);
}
input[type="date"] {
    cursor: pointer;
}
textarea { min-height: 90px; resize: vertical; }
label { display: grid; gap: 6px; font-weight: 700; color: var(--text); }
fieldset {
    border: 1px solid #d7dee8;
    border-radius: 8px;
    padding: 14px;
}
legend { font-weight: 700; }

.login-page {
    min-height: 100vh;
    display: grid;
    place-items: center;
    background: linear-gradient(rgba(4, 23, 31, .64), rgba(4, 23, 31, .74)), url("../img/login-bg.svg") center/cover no-repeat;
}
.login-card {
    width: min(92vw, 420px);
    display: grid;
    gap: 16px;
    padding: 30px;
    border-radius: 8px;
    background: var(--panel-bg);
    background: color-mix(in srgb, var(--panel-bg) 94%, transparent);
    box-shadow: 0 20px 55px rgba(0,0,0,.28);
}
.login-logo {
    width: min(260px, 78%);
    height: auto;
    justify-self: center;
    margin-bottom: 4px;
    filter: drop-shadow(0 0 16px rgba(255, 255, 255, .88)) drop-shadow(0 0 34px rgba(34, 211, 238, .42));
}
.login-card p { margin: 0; color: var(--muted); }

.sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    width: 230px;
    background: var(--sidebar-bg);
    color: #fff;
    padding: 20px 14px;
}
.brand {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0 8px 22px;
    min-height: 92px;
}
.brand img {
    width: min(150px, 100%);
    height: auto;
    display: block;
    filter: drop-shadow(0 0 10px rgba(34, 211, 238, .28));
}
.sidebar nav { display: grid; gap: 5px; }
.sidebar a {
    color: var(--sidebar-text);
    padding: 11px 12px;
    border-radius: 6px;
}
.sidebar a.active, .sidebar a:hover { background: var(--sidebar-active); color: #fff; }
.content { margin-left: 230px; padding: 24px; }
.topbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    margin-bottom: 20px;
    color: var(--topbar-text);
}
.topbar h1 { margin: 0; font-size: 28px; }
.topbar-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
}
.theme-toggle {
    width: 34px;
    height: 34px;
    display: inline-grid;
    place-items: center;
    padding: 0;
    border-radius: 999px;
    border: 1px solid rgba(148, 163, 184, .38);
    background: rgba(255, 255, 255, .14);
    color: currentColor;
    font-size: 17px;
    line-height: 1;
    box-shadow: 0 8px 22px rgba(0, 0, 0, .12);
    backdrop-filter: blur(8px);
}
.theme-toggle:hover {
    transform: translateY(-1px);
}
.theme-toggle-floating {
    position: fixed;
    top: 18px;
    right: 18px;
    z-index: 5;
    color: #fff;
    background: rgba(2, 18, 26, .48);
    border-color: rgba(255, 255, 255, .28);
}

.panel, .card {
    background: var(--panel-bg);
    border: 1px solid var(--panel-border);
    border-radius: 8px;
    padding: 18px;
    margin-bottom: 18px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
}
.grid { display: grid; gap: 14px; }
.cards { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
.card span { color: var(--muted); display: block; margin-bottom: 8px; }
.card strong { font-size: 25px; }
.card small {
    display: block;
    margin-top: 6px;
    color: var(--muted);
    font-weight: 700;
}
.dashboard-block {
    display: grid;
    gap: 14px;
    margin-bottom: 22px;
}
.dashboard-title {
    padding: 2px 0;
}
.dashboard-title h2 {
    margin: 4px 0 4px;
    font-size: 24px;
}
.section-kicker {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    padding: 4px 9px;
    border-radius: 999px;
    background: rgba(6, 182, 212, .12);
    color: #0891b2;
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .04em;
}
body.dark-mode .section-kicker {
    background: rgba(103, 232, 249, .12);
    color: #67e8f9;
}
.dashboard-kpis {
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 10px;
}
.kpi-card {
    position: relative;
    overflow: hidden;
    min-height: 108px;
    padding: 15px 15px 13px;
    border-left: 0;
}
.kpi-card.has-tooltip {
    overflow: visible;
    cursor: help;
}
.kpi-card::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 5px;
    background: var(--kpi-accent, #06b6d4);
}
.kpi-card::after {
    content: "";
    position: absolute;
    right: -34px;
    top: -34px;
    width: 94px;
    height: 94px;
    border-radius: 999px;
    background: rgba(6, 182, 212, .12);
    background: color-mix(in srgb, var(--kpi-accent, #06b6d4) 16%, transparent);
}
.kpi-card span,
.kpi-card strong,
.kpi-card small {
    position: relative;
    z-index: 1;
}
.kpi-card span {
    margin-bottom: 9px;
    font-weight: 800;
    font-size: 15px;
}
.kpi-card strong {
    display: block;
    font-size: clamp(24px, 1.8vw, 31px);
    line-height: 1;
}
.kpi-card small {
    font-size: 13px;
    line-height: 1.2;
}
.kpi-card.is-clickable {
    cursor: pointer;
}
.kpi-card.is-clickable:hover,
.kpi-card.is-clickable:focus-visible {
    border-color: color-mix(in srgb, var(--kpi-accent, var(--primary)) 55%, var(--panel-border));
    box-shadow: 0 18px 45px rgba(2, 132, 199, .16);
    transform: translateY(-1px);
}
.kpi-card.is-clickable:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--kpi-accent, var(--primary)) 34%, transparent);
    outline-offset: 2px;
}
.plan-drawer-total span {
    color: var(--muted);
    font-size: 13px;
    font-weight: 900;
    text-transform: uppercase;
}
.plan-drawer {
    position: fixed;
    inset: 0;
    z-index: 90;
    pointer-events: none;
    visibility: hidden;
}
.plan-drawer.is-open {
    pointer-events: auto;
    visibility: visible;
}
.plan-drawer-backdrop {
    position: absolute;
    inset: 0;
    border: 0;
    background: rgba(2, 6, 23, .58);
    opacity: 0;
    cursor: pointer;
    transition: opacity .18s ease;
}
.plan-drawer.is-open .plan-drawer-backdrop {
    opacity: 1;
}
.plan-drawer-panel {
    position: absolute;
    top: 0;
    right: 0;
    width: min(520px, calc(100vw - 18px));
    height: 100%;
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 22px;
    border-left: 1px solid var(--panel-border);
    background: var(--panel-bg);
    box-shadow: -24px 0 70px rgba(2, 6, 23, .28);
    transform: translateX(100%);
    transition: transform .2s ease;
}
.plan-drawer.is-open .plan-drawer-panel {
    transform: translateX(0);
}
.plan-drawer-total {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 14px;
    border: 1px solid var(--panel-border);
    border-radius: 8px;
    background: color-mix(in srgb, #22c55e 8%, transparent);
}
.plan-drawer-total strong {
    color: var(--text);
    font-size: 26px;
    line-height: 1;
}
body.plan-drawer-open {
    overflow: hidden;
}
.plan-breakdown-heading {
    display: flex;
    align-items: start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 12px;
}
.plan-breakdown-heading h3 {
    margin: 0;
    font-size: 19px;
}
.plan-breakdown-heading p {
    margin: 3px 0 0;
    color: var(--muted);
    font-size: 13px;
    font-weight: 800;
}
.plan-breakdown-heading > strong {
    min-width: 70px;
    padding: 7px 12px;
    border-radius: 999px;
    background: color-mix(in srgb, #22c55e 14%, transparent);
    color: var(--text);
    font-size: 22px;
    line-height: 1;
    text-align: center;
}
.plan-breakdown-list {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px 14px;
    overflow: auto;
    padding-right: 4px;
}
.plan-drawer-panel .plan-breakdown-list {
    flex: 1;
    min-height: 0;
}
.plan-breakdown-row {
    display: grid;
    grid-template-columns: minmax(120px, 1fr) auto auto;
    gap: 8px 10px;
    align-items: center;
    padding: 10px 12px;
    border: 1px solid var(--panel-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--panel-bg) 96%, transparent);
    font-weight: 800;
}
.plan-breakdown-row span {
    color: var(--text);
    min-width: 0;
}
.plan-breakdown-row b {
    color: var(--text);
    font-size: 18px;
}
.plan-breakdown-row em {
    min-width: 42px;
    padding: 4px 7px;
    border-radius: 999px;
    background: color-mix(in srgb, #22c55e 14%, transparent);
    color: var(--text);
    font-size: 13px;
    font-style: normal;
    text-align: center;
}
.plan-breakdown-row i {
    grid-column: 1 / -1;
    height: 7px;
    border-radius: 999px;
    background: rgba(148, 163, 184, .22);
    overflow: hidden;
}
.plan-breakdown-row i::before {
    content: "";
    display: block;
    width: var(--bar-width, 0%);
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #22c55e, #06b6d4);
}
.kpi-tooltip {
    position: absolute;
    left: 0;
    top: calc(100% + 12px);
    z-index: 30;
    width: min(430px, 82vw);
    padding: 18px;
    border-radius: 8px;
    border: 1px solid color-mix(in srgb, var(--kpi-accent, #22c55e) 38%, var(--panel-border));
    background: color-mix(in srgb, var(--panel-bg) 96%, transparent);
    box-shadow: 0 24px 60px rgba(15, 23, 42, .22);
    opacity: 0;
    transform: translateY(-4px);
    pointer-events: none;
    transition: opacity .18s ease, transform .18s ease;
}
body.dark-mode .kpi-tooltip {
    background: rgba(15, 23, 42, .96);
    box-shadow: 0 24px 60px rgba(0, 0, 0, .48);
}
.kpi-card.has-tooltip:hover .kpi-tooltip,
.kpi-card.has-tooltip:focus-within .kpi-tooltip,
.kpi-card.has-tooltip:focus .kpi-tooltip {
    opacity: 1;
    transform: translateY(0);
}
.kpi-tooltip > strong {
    display: block;
    color: var(--text);
    font-size: 19px;
    line-height: 1.1;
    margin-bottom: 4px;
}
.kpi-tooltip p {
    margin: 0 0 14px;
    color: var(--muted);
    font-size: 13px;
    font-weight: 800;
}
.kpi-tooltip-list {
    display: grid;
    gap: 11px;
}
.kpi-tooltip-row {
    display: grid;
    grid-template-columns: minmax(110px, 1fr) auto auto;
    gap: 10px;
    align-items: center;
    font-size: 14px;
    font-weight: 800;
}
.kpi-tooltip-row span {
    margin: 0;
    color: var(--text);
}
.kpi-tooltip-row b {
    font-size: 19px;
    color: var(--text);
}
.kpi-tooltip-row em {
    min-width: 44px;
    padding: 4px 7px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--kpi-accent, #22c55e) 14%, transparent);
    color: var(--text);
    font-style: normal;
    text-align: center;
}
.kpi-tooltip-row i {
    grid-column: 1 / -1;
    height: 8px;
    border-radius: 999px;
    background: rgba(148, 163, 184, .22);
    overflow: hidden;
}
.kpi-tooltip-row i::before {
    content: "";
    display: block;
    width: var(--bar-width, 0%);
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--kpi-accent, #22c55e), #06b6d4);
}
.kpi-success { --kpi-accent: #22c55e; }
.kpi-warning { --kpi-accent: #f59e0b; }
.kpi-info { --kpi-accent: #06b6d4; }
.kpi-violet { --kpi-accent: #8b5cf6; }
.kpi-night { --kpi-accent: #64748b; }
.kpi-access { --kpi-accent: #10b981; }
.kpi-money { --kpi-accent: #14b8a6; }
.kpi-income { --kpi-accent: #f59e0b; }
.kpi-renewal { --kpi-accent: #06b6d4; }
.kpi-addons { --kpi-accent: #8b5cf6; }
.dashboard-section {
    display: grid;
    gap: 18px;
    margin: 26px 0;
}
.section-title {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 16px;
}
.section-title h2,
.chart-panel h3,
.panel h3 {
    margin: 0 0 6px;
}
.section-title p,
.chart-panel p {
    margin: 0;
    color: var(--muted);
    font-weight: 700;
}
.section-subhead {
    display: grid;
    gap: 3px;
    margin-top: 2px;
}
.section-subhead h3 {
    margin: 0;
    font-size: 18px;
}
.section-subhead p {
    margin: 0;
    color: var(--muted);
    font-weight: 700;
}
.analytics-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    align-items: end;
}
.analytics-filters label {
    min-width: 180px;
}
.dashboard-filters {
    align-items: center;
    padding: 14px;
    margin-bottom: 2px;
}
.dashboard-filters label {
    color: var(--muted);
    font-size: 13px;
}
.dashboard-filters input,
.dashboard-filters select {
    min-height: 42px;
}
.income-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 18px 0;
}
.income-tabs a {
    padding: 11px 16px;
    border-radius: 8px;
    border: 1px solid var(--panel-border);
    background: var(--panel);
    color: var(--muted);
    font-weight: 900;
    text-decoration: none;
    transition: background .18s ease, color .18s ease, border-color .18s ease;
}
.income-tabs a.active,
.income-tabs a:hover {
    border-color: rgba(6, 182, 212, .55);
    background: rgba(6, 182, 212, .12);
    color: var(--text);
}
.income-summary-cards {
    margin-bottom: 20px;
}
.analytics-filters .hidden {
    display: none;
}
.analytics-cards {
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
}
.analytics-summary {
    gap: 12px;
}
.metric-card {
    min-height: 108px;
    border-left: 4px solid #06b6d4;
}
.metric-card strong {
    font-size: 28px;
}
.analytics-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}
.chart-panel canvas {
    width: 100%;
    height: 360px !important;
    max-height: 360px;
}
.chart-panel {
    display: grid;
    gap: 14px;
    padding: 20px;
    position: relative;
}
.chart-html-tooltip {
    position: absolute;
    z-index: 20;
    min-width: 210px;
    padding: 13px 15px;
    border: 1px solid rgba(148, 163, 184, .34);
    border-radius: 8px;
    background: rgba(255, 255, 255, .96);
    color: #1f2933;
    box-shadow: 0 18px 42px rgba(15, 23, 42, .18);
    pointer-events: none;
    opacity: 0;
    transform: translate(-50%, calc(-100% - 12px));
    transition: opacity .12s ease;
    font-size: 15px;
    line-height: 1.35;
}
body.dark-mode .chart-html-tooltip {
    background: rgba(2, 6, 23, .95);
    color: #f8fafc;
    border-color: rgba(203, 213, 225, .22);
    box-shadow: 0 18px 42px rgba(0, 0, 0, .44);
}
.chart-html-tooltip-title {
    margin-bottom: 8px;
    font-weight: 900;
}
.chart-html-tooltip-row {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 500;
    white-space: nowrap;
}
.chart-html-tooltip-row strong {
    font-weight: 900;
}
.chart-html-tooltip-swatch {
    width: 13px;
    height: 13px;
    flex: 0 0 13px;
    border-radius: 2px;
}
.chart-html-tooltip-extra {
    padding-left: 21px;
}
.chart-panel-wide canvas {
    height: 390px !important;
    max-height: 390px;
}
.chart-panel-compact canvas {
    height: 300px !important;
    max-height: 300px;
}
.income-chart-panel canvas {
    height: 380px !important;
    max-height: 380px;
}
.chart-heading {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    align-items: start;
}
.chart-heading h3 {
    margin: 0 0 5px;
}
.panel-tabs {
    display: inline-flex;
    gap: 6px;
    padding: 5px;
    border: 1px solid var(--panel-border);
    border-radius: 8px;
    background: rgba(148, 163, 184, .08);
}
.panel-tabs button {
    min-height: 34px;
    padding: 7px 12px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--muted);
    font-size: 13px;
    font-weight: 900;
    box-shadow: none;
}
.panel-tabs button.active,
.panel-tabs button:hover {
    background: rgba(6, 182, 212, .14);
    color: var(--text);
    transform: none;
}
.today-access-detail {
    display: grid;
    gap: 14px;
}
.today-access-detail[hidden] {
    display: none;
}
.today-access-summary {
    display: grid;
    grid-template-columns: 1fr auto auto auto;
    gap: 12px;
    align-items: center;
    padding: 10px 14px;
    border: 1px solid var(--panel-border);
    border-radius: 8px;
    background: linear-gradient(90deg, rgba(16, 185, 129, .08), rgba(239, 68, 68, .06));
}
.today-access-summary span,
.today-access-summary small {
    color: var(--muted);
    font-weight: 900;
}
.today-access-summary strong {
    font-size: 23px;
}
.today-access-count {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    padding: 5px 10px;
    border-radius: 999px;
    border: 1px solid var(--panel-border);
    background: rgba(255, 255, 255, .72);
    white-space: nowrap;
}
.today-access-count b {
    color: var(--text);
    font-size: 21px;
}
.today-access-count.is-allowed {
    border-color: rgba(16, 185, 129, .24);
    background: rgba(16, 185, 129, .1);
}
.today-access-count.is-denied {
    border-color: rgba(239, 68, 68, .24);
    background: rgba(239, 68, 68, .1);
}
.today-access-table-frame {
    overflow-x: auto;
    border: 1px solid var(--line);
    border-radius: 8px;
}
.today-access-table th,
.today-access-table td {
    padding: 8px 12px;
    white-space: nowrap;
    font-size: 13px;
}
.today-access-table .level-pill.compact-level-pill {
    padding: 5px 9px;
    font-size: 12px;
    line-height: 1;
    box-shadow: 0 0 12px rgba(34, 211, 238, .22), inset 0 1px 0 rgba(255, 255, 255, .22);
    text-shadow: none;
}
.today-access-table tr.is-denied-access {
    background: rgba(239, 68, 68, .045);
}
.access-state-pill {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 900;
}
.access-state-pill.is-allowed {
    background: rgba(16, 185, 129, .14);
    color: #047857;
}
.access-state-pill.is-denied {
    background: rgba(239, 68, 68, .14);
    color: #b91c1c;
}
.today-access-pagination {
    padding: 10px 0 0;
    border-top: 0;
}
.today-access-pagination .button {
    min-height: 34px;
    padding: 7px 11px;
    font-size: 12px;
}
.today-access-pagination .button:disabled {
    opacity: .48;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}
.insight-panel {
    display: grid;
    gap: 12px;
}
.distribution-list,
.comparison-list {
    display: grid;
    gap: 10px;
}
.distribution-item,
.comparison-item {
    display: grid;
    gap: 4px;
    padding: 13px;
    border: 1px solid var(--panel-border);
    border-radius: 8px;
    background: rgba(148, 163, 184, .08);
}
.distribution-item {
    border-left: 4px solid rgba(6, 182, 212, .8);
}
.distribution-item strong,
.comparison-item strong {
    font-size: 18px;
}
.distribution-item span,
.distribution-item small,
.comparison-context {
    color: var(--muted);
    font-weight: 700;
}
.comparison-context {
    margin: 0 0 4px;
}
.comparison-item {
    grid-template-columns: 1fr auto auto;
    align-items: center;
}
.comparison-item span {
    color: var(--muted);
    font-weight: 800;
}
.comparison-item em {
    justify-self: end;
    min-width: 78px;
    text-align: center;
    padding: 5px 8px;
    border-radius: 999px;
    font-style: normal;
    font-weight: 900;
}
.comparison-item.positive em {
    background: rgba(34, 197, 94, .16);
    color: #16a34a;
}
.comparison-item.negative em {
    background: rgba(245, 158, 11, .18);
    color: #d97706;
}
.expiring-panel {
    padding: 0;
    overflow-x: auto;
}
.expiring-table th,
.expiring-table td {
    padding: 14px 16px;
    white-space: nowrap;
}
.table-pagination {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    padding: 16px;
    color: var(--muted);
    font-size: 14px;
    font-weight: 800;
    border-top: 1px solid var(--line);
}
.button.disabled,
.button.disabled:hover {
    opacity: .48;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}
.client-link {
    font-weight: 900;
}
.days-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 70px;
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(245, 158, 11, .16);
    color: #d97706;
    font-weight: 900;
}
body.dark-mode .days-chip {
    color: #fbbf24;
}
.renewal-status {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 112px;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 900;
}
.renewal-status-warning {
    background: rgba(245, 158, 11, .17);
    color: #92400e;
}
.renewal-status-danger {
    background: rgba(239, 68, 68, .16);
    color: #991b1b;
}
body.dark-mode .renewal-status-warning {
    background: rgba(245, 158, 11, .2);
    color: #fbbf24;
}
body.dark-mode .renewal-status-danger {
    background: rgba(239, 68, 68, .22);
    color: #fecaca;
}
.compact-button {
    padding: 7px 10px;
    font-size: 12px;
}
.table-actions {
    display: flex;
    align-items: center;
    gap: 8px;
}
.form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}
.form-grid.compact { grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; padding: 0; border: 0; }
.span-2 { grid-column: 1 / -1; }
.reports-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 16px;
}
.report-card {
    display: grid;
    align-content: start;
    gap: 12px;
}
.report-card h2 {
    margin: 0;
    font-size: 20px;
}
.report-card p {
    margin: 0;
    color: var(--muted);
    font-weight: 700;
}
.report-card form {
    margin: 0;
}
.settings-admin-card,
.settings-section {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    margin-bottom: 16px;
}
.settings-section {
    display: grid;
    align-items: stretch;
}
.settings-section-actions {
    display: flex;
    justify-content: flex-start;
}
.settings-section-heading,
.settings-section > div:first-child {
    display: grid;
    gap: 4px;
}
.settings-admin-card h2,
.settings-admin-card p,
.settings-section h2,
.settings-section p,
.settings-section h3 {
    margin: 0;
}
.settings-admin-card p,
.settings-section p {
    color: var(--muted);
    font-weight: 700;
}
.settings-plan-filter {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 14px;
    width: 100%;
    margin-top: 4px;
}
.settings-plan-filter label {
    width: min(520px, 100%);
}
.settings-plan-filter label span,
.settings-plan-filter strong {
    color: var(--muted);
    font-size: 13px;
    font-weight: 900;
}
.settings-plan-filter input {
    min-height: 42px;
}
.settings-plan-table {
    margin: 0;
    min-width: 1200px;
}
.settings-plan-table-frame {
    max-height: 520px;
    margin-top: 10px;
    overflow: auto;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: color-mix(in srgb, var(--panel-bg) 72%, var(--bg));
}
.settings-plan-table-frame .settings-plan-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #f6f8fa;
}
body.dark-mode .settings-plan-table-frame .settings-plan-table thead th {
    background: #172033;
}
.settings-plan-table-frame::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}
.settings-plan-table-frame::-webkit-scrollbar-thumb {
    border: 2px solid transparent;
    border-radius: 999px;
    background: rgba(8, 145, 178, .48);
    background-clip: padding-box;
}
.settings-plan-table-frame::-webkit-scrollbar-track {
    background: transparent;
}
.plan-order-actions {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}
.icon-button {
    display: inline-grid;
    place-items: center;
    width: 30px;
    height: 30px;
    min-width: 0;
    padding: 0;
    border-radius: 8px;
    background: rgba(6, 182, 212, .1);
    color: #047f94;
    border: 1px solid rgba(6, 182, 212, .24);
    box-shadow: none;
    font-size: 15px;
    line-height: 1;
}
.icon-button:hover {
    transform: none;
    background: rgba(6, 182, 212, .18);
    box-shadow: none;
}
.icon-button:disabled {
    opacity: .38;
    cursor: not-allowed;
}
.settings-plan-form {
    margin: 0;
    padding: 0;
    border: 0;
}
.settings-plan-form-title {
    display: grid;
    gap: 4px;
    padding-bottom: 2px;
}
.muted-line {
    display: block;
    margin-top: 4px;
    color: var(--muted);
    font-size: 12px;
    font-weight: 700;
}
.settings-modal {
    position: fixed;
    inset: 0;
    z-index: 80;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 24px;
}
.settings-modal.is-open {
    display: flex;
}
.settings-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(2, 6, 23, .68);
    backdrop-filter: blur(5px);
}
.settings-modal-card {
    position: relative;
    width: min(820px, 100%);
    max-height: min(86vh, 760px);
    overflow: auto;
    padding: 24px;
    border: 1px solid rgba(148, 163, 184, .45);
    border-radius: 8px;
    background: #172033;
    color: #f8fafc;
    box-shadow: 0 28px 90px rgba(2, 6, 23, .58);
}
body.light-mode .settings-modal-card {
    background: #ffffff;
    color: #1f2933;
    border-color: #cbd5e1;
    box-shadow: 0 28px 90px rgba(15, 23, 42, .28);
}
.settings-modal-card input,
.settings-modal-card select,
.settings-modal-card textarea {
    background: var(--input-bg);
    color: var(--text);
}
.plan-time-ranges {
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 14px;
}
.plan-time-range-list {
    display: grid;
    gap: 10px;
    margin-bottom: 10px;
}
.plan-time-range-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
    gap: 10px;
    align-items: end;
}
@media (max-width: 680px) {
    .plan-time-range-row {
        grid-template-columns: 1fr;
    }
}
.settings-modal-close {
    position: absolute;
    top: 12px;
    right: 14px;
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    border-radius: 999px;
    border: 0;
    background: rgba(148, 163, 184, .14);
    color: var(--text);
    font-size: 24px;
    font-weight: 900;
    line-height: 1;
    text-decoration: none;
    padding: 0;
    cursor: pointer;
}
.settings-modal-close:hover {
    background: rgba(6, 182, 212, .16);
}
.day-checks {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 16px;
    padding: 12px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
}
.day-checks legend {
    padding: 0 6px;
    font-weight: 900;
}
.day-checks label,
.checkbox-line {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 800;
}
.plan-active-toggle {
    display: flex;
    align-items: center;
    gap: 12px;
    width: fit-content;
    padding: 12px 14px;
    border: 1px solid rgba(34, 197, 94, .34);
    border-radius: 8px;
    background: rgba(34, 197, 94, .08);
}
.plan-active-toggle input {
    width: 18px;
    height: 18px;
    flex: 0 0 auto;
}
.plan-active-toggle span {
    display: grid;
    gap: 2px;
}
.plan-active-toggle small {
    color: var(--muted);
    font-weight: 700;
}

/* Professional plan configuration modal. */
.settings-modal {
    padding: clamp(12px, 3vw, 28px);
}

.settings-modal-card {
    width: min(900px, 100%);
    max-height: min(90vh, 820px);
    overflow: hidden;
    padding: 0;
    border: 1px solid rgba(203, 213, 225, .9);
    border-radius: 14px;
    background: #ffffff;
    color: #1f2933;
    box-shadow: 0 24px 80px rgba(15, 23, 42, .28);
}

body.dark-mode .settings-modal-card,
body.light-mode .settings-modal-card {
    background: #ffffff;
    color: #1f2933;
    border-color: rgba(203, 213, 225, .9);
    box-shadow: 0 24px 80px rgba(15, 23, 42, .28);
}

.settings-modal-card .settings-plan-form {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto minmax(0, 1fr) auto;
    gap: 0;
    max-height: min(90vh, 820px);
    margin: 0;
    padding: 0;
    border: 0;
}

.settings-plan-form-title {
    gap: 7px;
    padding: 24px 64px 18px 26px;
    border-bottom: 1px solid #e2e8f0;
    background: #ffffff;
}

.settings-plan-form-title h3 {
    margin: 0;
    color: #0f172a;
    font-size: 22px;
}

.settings-plan-form-title p {
    max-width: 660px;
    margin: 0;
    color: #64748b;
    font-size: 14px;
}

.settings-plan-form-body {
    display: grid;
    gap: 16px;
    min-height: 0;
    overflow-y: auto;
    padding: 18px 26px 22px;
    background: #ffffff;
    scrollbar-width: thin;
    scrollbar-color: rgba(8, 145, 178, .42) transparent;
}

.settings-plan-form-body::-webkit-scrollbar {
    width: 10px;
}

.settings-plan-form-body::-webkit-scrollbar-thumb {
    border: 3px solid #ffffff;
    border-radius: 999px;
    background: rgba(8, 145, 178, .42);
    background-clip: padding-box;
}

.settings-plan-card {
    display: grid;
    gap: 14px;
    padding: 16px;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    background: #f8fafc;
}

.settings-plan-card h4 {
    margin: 0;
    color: #0f172a;
    font-size: 13px;
    font-weight: 850;
}

.settings-plan-card-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    align-items: start;
}

.settings-plan-card-grid > .span-2 {
    grid-column: 1 / -1;
}

.settings-plan-card-grid > label {
    align-content: start;
    min-height: 88px;
}

.settings-plan-card-grid > label:not(:has(small)) {
    min-height: 68px;
}

.settings-plan-form label,
.settings-plan-form legend {
    color: #475569;
    font-size: 13px;
    font-weight: 750;
}

.settings-plan-form small {
    color: #64748b;
    font-size: 12px;
    font-weight: 500;
}

.settings-modal-card input,
.settings-modal-card select,
.settings-modal-card textarea {
    height: 44px;
    min-height: 44px;
    border: 1px solid #cbd5e1;
    border-radius: 9px;
    background: #ffffff;
    color: #1f2933;
    box-shadow: 0 1px 0 rgba(15, 23, 42, .02);
    transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease;
}

.settings-modal-card select {
    appearance: auto;
}

.settings-modal-card input:focus,
.settings-modal-card select:focus,
.settings-modal-card textarea:focus {
    outline: 0;
    border-color: #0891b2;
    box-shadow: 0 0 0 3px rgba(8, 145, 178, .15);
}

.settings-modal-card input::placeholder {
    color: #94a3b8;
}

.plan-code-field input {
    border-color: #e2e8f0;
    background: #eef2f7;
    color: #64748b;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    cursor: default;
}

.plan-code-field input:focus {
    border-color: #cbd5e1;
    box-shadow: none;
}

.settings-modal-close {
    top: 18px;
    right: 20px;
    z-index: 3;
    width: 38px;
    height: 38px;
    border: 1px solid #e2e8f0;
    background: #f8fafc;
    color: #334155;
    font-size: 24px;
    box-shadow: 0 8px 22px rgba(15, 23, 42, .08);
    transition: background-color .16s ease, border-color .16s ease, transform .16s ease, box-shadow .16s ease;
}

.settings-modal-close:hover {
    transform: translateY(-1px);
    border-color: rgba(8, 145, 178, .24);
    background: #ecfeff;
    box-shadow: 0 12px 26px rgba(8, 145, 178, .14);
}

.settings-plan-form-footer {
    position: sticky;
    bottom: 0;
    z-index: 2;
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding: 16px 26px;
    border-top: 1px solid #e2e8f0;
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 -14px 30px rgba(15, 23, 42, .07);
    backdrop-filter: blur(10px);
}

.settings-plan-form-footer button,
.settings-plan-form-footer .button {
    min-height: 42px;
    min-width: 128px;
    border-radius: 9px;
    padding: 10px 16px;
}

.settings-plan-form-footer .button.secondary {
    border: 1px solid #cbd5e1;
    background: #ffffff;
    color: #334155;
}

.settings-plan-form-footer button[type="submit"] {
    background: var(--button-bg);
    color: var(--button-text);
    box-shadow: 0 12px 24px rgba(21, 94, 117, .22);
}

.settings-plan-form .plan-time-ranges,
.settings-plan-form .day-checks {
    border-color: #dbe4ef;
    background: #ffffff;
}

.settings-plan-form .plan-active-toggle {
    width: 100%;
    border-color: rgba(8, 145, 178, .22);
    background: #ffffff;
}

@media (max-width: 680px) {
    .settings-modal {
        align-items: stretch;
        padding: 10px;
    }

    .settings-modal-card,
    .settings-modal-card .settings-plan-form {
        max-height: calc(100vh - 20px);
    }

    .settings-plan-form-title {
        padding: 20px 58px 16px 18px;
    }

    .settings-plan-form-body {
        padding: 14px 16px 18px;
    }

    .settings-plan-card {
        padding: 14px;
    }

    .settings-plan-card-grid {
        grid-template-columns: 1fr;
    }

    .settings-plan-form-footer {
        padding: 12px 16px;
        flex-direction: column-reverse;
    }

    .settings-plan-form-footer button,
    .settings-plan-form-footer .button {
        width: 100%;
    }
}
.current-photo-control {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px;
    border: 1px solid var(--panel-border);
    border-radius: 8px;
    background: rgba(148, 163, 184, .08);
}
.current-photo-control img {
    width: 74px;
    height: 74px;
    object-fit: cover;
    border-radius: 8px;
    border: 1px solid var(--panel-border);
}
.inline-form {
    display: inline;
}
.link-button {
    border: 0;
    background: transparent;
    color: var(--primary);
    padding: 0;
    font: inherit;
    font-weight: 900;
    cursor: pointer;
}
.link-button:hover {
    text-decoration: underline;
}
.danger-link {
    color: #dc2626;
}
.disabled-action {
    color: var(--muted);
    font-weight: 900;
    opacity: .55;
    cursor: not-allowed;
}
.table-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}
.actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-bottom: 18px;
}
.inline-search { display: flex; gap: 8px; width: min(520px, 100%); }
.clients-filter-form {
    width: min(780px, 100%);
}
.clients-filter-form select {
    max-width: 230px;
}
.filters {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 12px;
    align-items: end;
}
table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
}
th, td {
    padding: 10px;
    border-bottom: 1px solid var(--panel-border);
    text-align: left;
    vertical-align: top;
}
th { background: rgba(148, 163, 184, .12); color: var(--muted); }
.zebra-table tbody tr:nth-child(even) {
    background: rgba(148, 163, 184, .07);
}
.zebra-table tbody tr {
    transition: background .18s ease, box-shadow .18s ease;
}
.zebra-table tbody tr:hover {
    background: rgba(6, 182, 212, .11);
    box-shadow: inset 3px 0 0 var(--primary);
}
body.light-mode .zebra-table tbody tr:nth-child(even) {
    background: rgba(15, 23, 42, .035);
}
body.light-mode .zebra-table tbody tr:hover {
    background: rgba(8, 145, 178, .09);
}
.client-name-link {
    color: var(--primary);
    font-weight: 900;
    text-decoration: none;
}
.client-name-link:hover {
    text-decoration: underline;
}
.badge {
    display: inline-block;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
}
.badge.activo { background: #dcfce7; color: #166534; }
.badge.inactivo { background: #fee2e2; color: #991b1b; }
.alert {
    padding: 12px 14px;
    border-radius: 6px;
    margin-bottom: 14px;
    font-weight: 700;
}
.alert.success { background: #dcfce7; color: #166534; }
.alert.error { background: #fee2e2; color: #991b1b; }
.alert.warning { background: #fef3c7; color: #92400e; }
.client-head {
    display: grid;
    grid-template-columns: 130px 1fr;
    gap: 18px;
}
.photo {
    width: 120px;
    height: 120px;
    object-fit: cover;
    border-radius: 8px;
    border: 1px solid #e2e8f0;
}
.client-profile-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 260px;
    gap: 16px;
}
.client-summary {
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 20px;
    align-items: start;
}
.client-photo-large,
.client-photo-placeholder {
    width: 170px;
    height: 170px;
    border-radius: 8px;
    border: 1px solid var(--panel-border);
}
.client-photo-large {
    object-fit: cover;
    display: block;
}
.client-photo-placeholder {
    display: grid;
    place-items: center;
    background: linear-gradient(135deg, #155e75, #22c55e);
    color: #fff;
    font-size: 64px;
    font-weight: 900;
}
.client-summary-main h2 {
    margin: 8px 0 14px;
    font-size: 30px;
}
.client-meta-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}
.client-meta-grid span,
.info-list div {
    display: grid;
    gap: 4px;
    padding: 12px;
    border-radius: 8px;
    background: rgba(148, 163, 184, .1);
    border: 1px solid var(--panel-border);
}
.client-meta-grid strong,
.info-list span {
    color: var(--muted);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .02em;
}
.client-notes {
    margin: 14px 0 0;
    padding: 12px;
    border-radius: 8px;
    background: rgba(245, 158, 11, .1);
    border: 1px solid rgba(245, 158, 11, .25);
}
.client-actions {
    justify-content: flex-start;
    flex-wrap: wrap;
    margin: 16px 0 0;
}
.client-actions .button,
.client-actions button {
    min-height: 40px;
    padding: 10px 14px;
    border: 1px solid transparent;
    border-radius: 8px;
    line-height: 1.1;
    transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease, background .16s ease, color .16s ease;
}
.client-actions .button:hover,
.client-actions button:hover {
    transform: translateY(-1px);
}
.client-actions .inline-form {
    margin: 0;
}
.client-action-primary {
    background: linear-gradient(135deg, #0788a7, #10a99d);
    color: #fff;
    box-shadow: 0 10px 22px rgba(8, 145, 178, .22);
}
.client-action-primary:hover {
    box-shadow: 0 12px 28px rgba(8, 145, 178, .28);
}
.client-action-modify.button.secondary {
    border-color: rgba(30, 64, 175, .2);
    background: #1e5870;
    color: #fff;
    box-shadow: 0 8px 18px rgba(30, 88, 112, .18);
}
.client-action-modify.button.secondary:hover {
    background: #174961;
}
.client-action-pass.button.secondary {
    border-color: #9bd8e3;
    background: #e7fafe;
    color: #075985;
}
.client-action-pass.button.secondary:hover {
    background: #cff3fa;
    border-color: #63c6d7;
}
.client-action-edit.button.secondary {
    border-color: #cbd5e1;
    background: #eef2f7;
    color: #334155;
}
.client-action-edit.button.secondary:hover {
    background: #e2e8f0;
}
.client-action-delete.button.secondary {
    border-color: #fecaca;
    background: #fff1f2;
    color: #be123c;
    box-shadow: none;
}
.client-action-delete.button.secondary:hover {
    border-color: #fda4af;
    background: #ffe4e6;
    color: #9f1239;
}
.payment-client-summary {
    display: grid;
    gap: 4px;
    padding: 16px;
    border-radius: 8px;
    border: 1px solid rgba(6, 182, 212, .35);
    background: rgba(6, 182, 212, .08);
}
.payment-client-summary span {
    color: var(--muted);
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
}
.payment-client-summary strong {
    font-size: 24px;
    line-height: 1.15;
}
.payment-client-summary small {
    color: var(--muted);
    font-weight: 800;
}
.payment-focus {
    border-color: rgba(6, 182, 212, .5);
    background: rgba(6, 182, 212, .06);
}
.payment-operation-select {
    max-width: 420px;
}
.payment-sale-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin: 0;
    padding: 0;
    border: 0;
}
.payment-sale-grid > label:first-child {
    grid-column: 1 / -1;
    order: 1;
}
.payment-sale-grid > label:nth-of-type(2) {
    order: 2;
}
.payment-sale-grid > label:nth-of-type(4) {
    order: 3;
}
.payment-sale-grid > label:nth-of-type(5) {
    order: 4;
}
.payment-sale-grid > [data-duration-summary] {
    order: 3;
}
.payment-sale-grid > [data-membership-period-summary] {
    order: 5;
}
.payment-sale-grid > [data-sale-value] {
    order: 4;
}
.payment-sale-grid > label:nth-of-type(6) {
    grid-column: 1 / -1;
    order: 8;
}
.payment-sale-grid > [data-immediate-only] {
    order: 9;
}
.payment-sale-grid > .payment-plan-field {
    grid-column: 1 / -1;
    order: 2;
}
.payment-sale-grid > .payment-summary-grid {
    grid-column: 1 / -1;
    order: 3;
}
.payment-sale-grid > .payment-details-grid {
    grid-column: 1 / -1;
    order: 8;
}
.payment-sale-grid > .payment-date-field {
    order: 8;
}
.payment-sale-grid > .payment-method-field {
    order: 9;
}
.payment-sale-grid > .payment-comment-field {
    order: 10;
}
.payment-sale-grid > .payment-amount-field {
    order: 11;
}
.payment-sale-grid > .readonly-summary-field {
    grid-column: auto;
}
.payment-sale-grid > .payment-date-field,
.payment-sale-grid > .payment-method-field,
.payment-sale-grid > .payment-comment-field,
.payment-sale-grid > .payment-amount-field {
    display: grid;
    grid-template-rows: auto 46px minmax(17px, auto);
    align-content: start;
}
.payment-summary-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}
.payment-details-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}
.payment-summary-grid .readonly-summary-field {
    min-width: 0;
}
.payment-details-grid > label {
    min-width: 0;
    display: grid;
    grid-template-rows: auto 46px minmax(17px, auto);
    align-content: start;
}
.payment-start-field {
    position: relative;
}
.payment-details-grid .field-warning {
    position: absolute;
    left: 0;
    right: 0;
    bottom: -38px;
    z-index: 20;
    width: max-content;
    max-width: min(440px, 90vw);
    padding: 9px 12px;
    border: 1px solid rgba(245, 158, 11, .42);
    border-radius: 8px;
    background: #fffbeb;
    color: #92400e;
    font-weight: 800;
    box-shadow: 0 14px 34px rgba(15, 23, 42, .16);
    opacity: 0;
    transform: translateY(-4px);
    transition: opacity .16s ease, transform .16s ease;
}
.payment-details-grid .field-warning.is-visible {
    opacity: 1;
    transform: translateY(0);
}
body.dark-mode .payment-details-grid .field-warning {
    background: rgba(120, 53, 15, .96);
    border-color: rgba(251, 191, 36, .35);
    color: #fef3c7;
}
.payment-sale-grid > label:nth-of-type(2),
.payment-sale-grid > label:nth-of-type(4),
.payment-sale-grid > label:nth-of-type(5) {
    display: grid;
    grid-template-rows: auto 46px minmax(17px, auto);
    align-content: start;
}
.payment-plan-field {
    position: relative;
    display: grid;
    gap: 7px;
}
.payment-plan-field > label {
    color: var(--muted);
    font-weight: 600;
}
.payment-plan-field.is-enhanced > select {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    border: 0;
    opacity: 0;
    pointer-events: none;
}
.payment-plan-field.is-open {
    z-index: 50;
}
.plan-picker {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
    align-items: start;
}
.plan-quick-picks {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-content: start;
}
.plan-quick-chip {
    min-height: 34px;
    padding: 0 11px;
    border-radius: 999px;
    background: rgba(6, 182, 212, .11);
    color: #047f94;
    border: 1px solid rgba(6, 182, 212, .22);
    box-shadow: none;
    font-size: 12px;
}
body.dark-mode .plan-quick-chip {
    color: #b9f2ff;
    background: rgba(34, 211, 238, .1);
}
.plan-quick-chip.is-selected,
.plan-quick-chip:hover {
    background: linear-gradient(135deg, var(--button-bg), #14b8a6);
    color: #fff;
}
.plan-search-control {
    position: relative;
}
.plan-search-control input {
    padding-right: 42px;
}
.plan-search-clear {
    position: absolute;
    top: 50%;
    right: 8px;
    width: 30px;
    height: 30px;
    min-width: 0;
    padding: 0;
    transform: translateY(-50%);
    border-radius: 8px;
    background: transparent;
    color: var(--muted);
    box-shadow: none;
    font-size: 18px;
}
.plan-search-clear:hover {
    transform: translateY(-50%);
    background: rgba(6, 182, 212, .1);
    box-shadow: none;
}
.plan-picker-list {
    position: absolute;
    left: 0;
    right: 0;
    top: calc(100% + 6px);
    z-index: 45;
    max-height: 280px;
    overflow: auto;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--panel-bg) 92%, transparent);
    display: none;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    padding: 8px;
    box-shadow: 0 18px 45px rgba(15, 23, 42, .22);
}
.payment-plan-field.is-open .plan-picker-list {
    display: grid;
}
.plan-picker-category {
    display: contents;
    gap: 5px;
    padding: 0;
    align-content: start;
}
.plan-picker-category + .plan-picker-category {
    border-top: 0;
}
.plan-picker-category h4 {
    margin: 0;
    color: var(--muted);
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .02em;
}
.plan-picker-option {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
    justify-content: space-between;
    gap: 5px;
    width: 100%;
    min-height: 88px;
    padding: 10px;
    border-radius: 8px;
    background: transparent;
    color: var(--text);
    border: 1px solid transparent;
    box-shadow: none;
    text-align: left;
}
.plan-picker-option:hover,
.plan-picker-option:focus,
.plan-picker-option.is-selected {
    transform: none;
    background: rgba(6, 182, 212, .1);
    border-color: rgba(6, 182, 212, .22);
    box-shadow: none;
}
.plan-picker-option strong,
.plan-picker-option small {
    display: block;
}
.plan-picker-option strong {
    font-size: 13px;
    line-height: 1.2;
}
.plan-picker-option small {
    margin-top: 3px;
    color: var(--muted);
    font-size: 12px;
}
.plan-picker-option em {
    flex: 0 0 auto;
    order: -1;
    color: #0f766e;
    font-style: normal;
    font-weight: 800;
    font-size: 14px;
}
body.dark-mode .plan-picker-option em {
    color: #67e8f9;
}
.plan-picker-empty {
    grid-column: 1 / -1;
    padding: 14px;
    color: var(--muted);
    font-size: 13px;
}
.readonly-summary-field {
    display: grid;
    gap: 8px;
    align-content: start;
    min-height: 86px;
    padding: 14px 16px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background: rgba(255, 255, 255, .42);
}
body.dark-mode .readonly-summary-field {
    background: rgba(15, 23, 42, .34);
}
.readonly-summary-field span {
    color: var(--muted);
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
}
.readonly-summary-field strong {
    font-size: 20px;
    line-height: 1.1;
}
.readonly-summary-field small {
    color: var(--muted);
    font-size: 12px;
    font-weight: 800;
    line-height: 1.25;
}
.group-members-section {
    display: block;
}
.group-members-section[hidden] {
    display: none;
}
.group-members-header,
.group-member-list,
.group-member-results {
    display: grid;
    gap: 10px;
}
.group-member-chip,
.group-member-result {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 12px;
    border: 1px solid var(--panel-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--panel-bg) 94%, transparent);
    text-align: left;
}
.group-member-chip strong,
.group-member-result strong {
    display: block;
}
.group-member-chip small,
.group-member-result span {
    display: block;
    color: var(--muted);
}
.group-member-result {
    width: 100%;
    color: var(--text);
    cursor: pointer;
}
.group-member-result:disabled {
    opacity: .58;
    cursor: not-allowed;
}
.group-member-search {
    display: grid;
    gap: 12px;
    margin-top: 12px;
}
#paymentValueDisplay {
    color: #0f766e;
}
body.dark-mode #paymentValueDisplay {
    color: #67e8f9;
}
.immediate-plan-summary {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    padding: 14px;
    border: 1px solid rgba(245, 158, 11, .38);
    border-radius: 8px;
    background: rgba(245, 158, 11, .1);
}
.immediate-plan-summary div {
    display: grid;
    gap: 4px;
}
.immediate-plan-summary span {
    color: var(--muted);
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
}
.immediate-plan-summary strong {
    font-size: 16px;
}
.immediate-plan-summary p {
    grid-column: 1 / -1;
    margin: 0;
    color: var(--muted);
    font-weight: 800;
}
.status-pill {
    display: inline-flex;
    width: fit-content;
    padding: 7px 12px;
    border-radius: 999px;
    font-weight: 900;
    color: #fff;
}
.status-active { background: #16a34a; }
.status-expired { background: #d97706; }
.status-inactive { background: #dc2626; }
.status-none { background: #64748b; }
.plan-status-card {
    display: grid;
    align-content: center;
    gap: 8px;
    color: #fff;
}
.plan-status-card span {
    opacity: .86;
    font-weight: 800;
}
.plan-status-card strong {
    font-size: 32px;
}
.plan-status-card p {
    margin: 0;
    font-weight: 800;
}
.plan-status-card.status-active { background: linear-gradient(135deg, #15803d, #16a34a); }
.plan-status-card.status-expired { background: linear-gradient(135deg, #92400e, #d97706); }
.plan-status-card.status-inactive { background: linear-gradient(135deg, #991b1b, #dc2626); }
.plan-status-card.status-none { background: linear-gradient(135deg, #334155, #64748b); }
.client-status-stack {
    display: grid;
    gap: 12px;
}
.client-status-stack .plan-status-card {
    min-height: 164px;
}
.today-access-card {
    display: grid;
    align-content: center;
    gap: 7px;
    border-color: rgba(6, 182, 212, .35);
    background: linear-gradient(135deg, rgba(20, 184, 166, .16), rgba(6, 182, 212, .08));
}
.today-access-card span {
    color: #0f766e;
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
}
.today-access-card strong {
    font-size: 18px;
    line-height: 1.2;
}
.today-access-card p {
    margin: 0;
    font-size: 20px;
    font-weight: 900;
}
.today-access-card small {
    color: var(--muted);
    font-weight: 800;
}
body.dark-mode .today-access-card {
    background: linear-gradient(135deg, rgba(20, 184, 166, .2), rgba(6, 182, 212, .12));
}
body.dark-mode .today-access-card span {
    color: #67e8f9;
}
.section-heading-row {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 16px;
}
.section-heading-row h2,
.section-heading-row p {
    margin-bottom: 0;
}
.client-record-tabs {
    display: grid;
    gap: 16px;
}
.client-record-tabbar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 6px;
    width: fit-content;
    max-width: 100%;
    border: 1px solid var(--panel-border);
    border-radius: 8px;
    background: rgba(148, 163, 184, .08);
}
.client-record-tab {
    border: 1px solid transparent;
    border-radius: 6px;
    padding: 10px 14px;
    background: rgba(255, 255, 255, .72);
    color: #475569;
    font-weight: 900;
    cursor: pointer;
    transition: background .18s ease, color .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.client-record-tab.is-active {
    border-color: rgba(8, 145, 178, .55);
    background: #0891b2;
    color: #fff;
    box-shadow: 0 10px 22px rgba(8, 145, 178, .28);
}
body.dark-mode .client-record-tab {
    background: rgba(15, 23, 42, .7);
    color: #cbd5e1;
}
body.dark-mode .client-record-tab.is-active {
    background: #06b6d4;
    color: #082f49;
}
.client-record-panel[hidden] {
    display: none;
}
.client-record-panel {
    min-width: 0;
}
.guest-visits-panel {
    display: grid;
    gap: 16px;
}
.guest-counter {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 132px;
    padding: 9px 12px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 900;
}
.guest-counter.is-available {
    background: #dcfce7;
    color: #166534;
}
.guest-counter.is-full {
    background: #fee2e2;
    color: #991b1b;
}
.guest-visit-form {
    display: grid;
    gap: 12px;
    padding: 14px;
    border: 1px solid var(--panel-border);
    border-radius: 8px;
    background: rgba(148, 163, 184, .08);
}
.guest-search-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr);
    gap: 12px;
    align-items: start;
}
.guest-search-field {
    position: relative;
}
.guest-search-results {
    width: 100%;
    max-width: 100%;
    margin-top: 10px;
}
.guest-search-results .group-member-result {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    min-height: 42px;
    padding: 8px 12px;
}
.guest-search-results .group-member-result strong,
.guest-search-results .group-member-result span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.guest-selected-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 11px 12px;
    border: 1px solid rgba(22, 163, 74, .36);
    border-radius: 8px;
    background: rgba(22, 163, 74, .09);
}
.guest-selected-card strong,
.guest-selected-card small {
    display: block;
}
.guest-selected-card small {
    color: var(--muted);
}
.guest-form-actions {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    gap: 12px;
}
.guest-form-actions small {
    color: var(--muted);
    font-weight: 800;
}
.guest-history-card {
    padding: 14px;
    border: 1px solid var(--panel-border);
    border-radius: 8px;
    background: rgba(148, 163, 184, .08);
}
.guest-visits-panel h3 {
    margin-bottom: 10px;
    font-size: 16px;
}
.inline-access-note {
    display: grid;
    gap: 4px;
    margin-top: 12px;
    padding: 12px;
    border: 1px solid rgba(6, 182, 212, .3);
    border-radius: 8px;
    background: rgba(6, 182, 212, .08);
}
.inline-access-note strong {
    color: #0f766e;
}
.inline-access-note span {
    color: var(--muted);
    font-weight: 800;
}
body.dark-mode .inline-access-note strong {
    color: #67e8f9;
}
.group-members-inline {
    margin-top: 14px;
    padding: 14px;
    border: 1px solid var(--panel-border);
    border-radius: 8px;
    background: rgba(148, 163, 184, .08);
}
.group-members-inline h3 {
    margin-bottom: 10px;
    font-size: 16px;
}
.detail-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}
.info-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.info-list strong {
    line-height: 1.3;
}
.badge-summary {
    display: grid;
    gap: 12px;
}
.badge-summary .level-pill {
    font-size: 16px;
}
.badge-summary strong {
    font-size: 22px;
}
.badge-summary p {
    margin: 0;
    color: var(--muted);
    font-weight: 800;
}
.client-progress {
    height: 18px;
}

.kiosk, .page-access.dark-mode {
    background: #061821;
}
.kiosk-fullscreen-button {
    position: fixed;
    top: 14px;
    right: 14px;
    z-index: 80;
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    min-width: 0;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 8px;
    background: rgba(2, 6, 23, .18);
    color: rgba(255, 255, 255, .42);
    opacity: 0;
    box-shadow: none;
    backdrop-filter: blur(8px);
    transition: opacity .18s ease, background .18s ease, color .18s ease, border-color .18s ease;
}
.kiosk-fullscreen-button svg {
    width: 21px;
    height: 21px;
}
.kiosk:hover .kiosk-fullscreen-button,
.kiosk-fullscreen-button:focus-visible {
    opacity: .74;
}
.kiosk-fullscreen-button:hover,
.kiosk-fullscreen-button:focus-visible {
    opacity: 1;
    background: rgba(2, 6, 23, .62);
    color: #fff;
    border-color: rgba(255, 255, 255, .34);
    transform: none;
}
.page-access.light-mode {
    --topbar-text: #ffffff;
    background: #e9eef3;
}
body.page-access {
    overflow: hidden;
}
.page-access .content {
    height: 100vh;
    min-height: 100vh;
    padding: 18px;
    overflow: hidden;
}
.page-access .topbar {
    position: relative;
    z-index: 1;
    color: #fff;
    text-shadow: 0 2px 12px rgba(0, 0, 0, .5);
}
.main-kiosk {
    padding: 0;
    max-width: none;
    margin: 0;
}
.access-screen {
    position: relative;
    display: grid;
    gap: 18px;
    height: calc(100vh - 110px);
    min-height: 560px;
    place-items: center;
    padding: 42px;
    overflow: hidden;
}
.access-screen::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 0;
    background:
        linear-gradient(90deg, rgba(2, 18, 26, .82), rgba(2, 18, 26, .38), rgba(2, 18, 26, .86)),
        var(--access-bg, none) center/cover no-repeat;
}
body.light-mode .access-screen::before {
    background:
        linear-gradient(90deg, rgba(2, 18, 26, .54), rgba(2, 18, 26, .18), rgba(2, 18, 26, .62)),
        var(--access-bg, none) center/cover no-repeat;
}
.access-screen::after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 0;
    background: radial-gradient(circle at 50% 45%, rgba(255, 255, 255, .22), transparent 32%);
    pointer-events: none;
}
body.light-mode .access-screen::after {
    background: radial-gradient(circle at 50% 45%, rgba(255, 255, 255, .34), transparent 34%);
}
.access-screen > * {
    position: relative;
    z-index: 1;
}
.access-form {
    display: grid;
    gap: 16px;
    width: min(880px, 92vw);
    padding: 0;
    border-radius: 0;
    background: transparent;
    transition: opacity .25s ease, transform .25s ease;
}
.access-form.is-hidden-while-greeting {
    display: none;
}
.access-form h1 {
    margin: 0 0 14px;
    font-size: 52px;
    text-align: center;
    color: #fff;
    text-shadow: 0 3px 18px rgba(0, 0, 0, .55);
}
.access-logo {
    width: min(360px, 72vw);
    height: auto;
    justify-self: center;
    margin-bottom: 18px;
    filter: drop-shadow(0 0 18px rgba(255, 255, 255, .95)) drop-shadow(0 0 42px rgba(34, 211, 238, .55));
    animation: accessLogoBreath 3.4s ease-in-out infinite;
    transform-origin: center;
}
.access-form input {
    font-size: 34px;
    text-align: center;
    padding: 22px;
    border: 2px solid rgba(255, 255, 255, .76);
    border-radius: 8px;
    background: rgba(255, 255, 255, .14);
    color: #fff;
    box-shadow: 0 0 34px rgba(255, 255, 255, .18);
}
body.light-mode .access-form input {
    background: rgba(255, 255, 255, .2);
    border-color: rgba(255, 255, 255, .86);
    color: #fff;
}
.access-form input::placeholder {
    color: rgba(255, 255, 255, .82);
}
.access-form button {
    font-size: 25px;
    padding: 20px 22px;
    border-radius: 8px;
    background: linear-gradient(135deg, rgba(16, 185, 129, .96), rgba(8, 145, 178, .96));
    border: 1px solid rgba(255, 255, 255, .26);
    box-shadow: 0 18px 40px rgba(6, 182, 212, .22), 0 16px 36px rgba(0, 0, 0, .32);
    letter-spacing: .01em;
    transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}
.access-form button:hover {
    transform: translateY(-1px);
    filter: brightness(1.06);
    box-shadow: 0 22px 48px rgba(16, 185, 129, .28), 0 18px 40px rgba(0, 0, 0, .34);
}
.access-form button:active {
    transform: translateY(1px) scale(.995);
}
body.light-mode .access-form button {
    background: linear-gradient(135deg, rgba(5, 150, 105, .96), rgba(14, 116, 144, .96));
}
@keyframes accessLogoBreath {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.07); }
}
.access-result {
    position: fixed;
    left: 50%;
    bottom: clamp(26px, 6vh, 58px);
    z-index: 8;
    width: min(560px, calc(100vw - 32px));
    display: grid;
    gap: 8px;
    text-align: center;
    border-radius: 8px;
    padding: 20px 24px;
    color: #fff;
    transform: translateX(-50%);
    border: 1px solid rgba(103, 232, 249, .34);
    background: linear-gradient(135deg, rgba(3, 18, 26, .92), rgba(7, 42, 55, .84));
    box-shadow: 0 0 34px rgba(8, 145, 178, .22), 0 24px 56px rgba(0, 0, 0, .48), inset 0 1px 0 rgba(255, 255, 255, .12);
    backdrop-filter: blur(14px);
}
.access-result strong { font-size: clamp(27px, 2.6vw, 38px); line-height: 1.08; }
.access-result span { font-size: 24px; font-weight: 900; }
.access-result small { font-size: 17px; font-weight: 800; color: rgba(255, 255, 255, .86); }
.access-result.allowed {
    border-color: rgba(134, 239, 172, .42);
    background: linear-gradient(135deg, rgba(3, 45, 34, .92), rgba(6, 95, 70, .82));
}
.access-result.denied {
    border-color: rgba(251, 191, 36, .5);
    background: linear-gradient(135deg, rgba(3, 18, 26, .94), rgba(42, 35, 12, .86));
    box-shadow: 0 0 30px rgba(251, 191, 36, .16), 0 24px 56px rgba(0, 0, 0, .5), inset 0 1px 0 rgba(255, 255, 255, .12);
}
.access-status-pill {
    justify-self: start;
    width: fit-content;
    padding: 10px 16px;
    border-radius: 999px;
    font-size: 17px;
    line-height: 1;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0;
    color: #fff;
    text-shadow: 0 2px 10px rgba(0, 0, 0, .45);
}
.access-status-pill.allowed {
    background: linear-gradient(135deg, #16a34a, #22c55e);
    border: 1px solid rgba(187, 247, 208, .72);
    box-shadow: 0 0 28px rgba(34, 197, 94, .58), inset 0 1px 0 rgba(255, 255, 255, .28);
}
.access-status-pill.denied {
    justify-self: center;
    background: linear-gradient(135deg, #f59e0b, #06b6d4);
    border: 1px solid rgba(253, 224, 71, .54);
    box-shadow: 0 0 24px rgba(251, 191, 36, .34), inset 0 1px 0 rgba(255, 255, 255, .24);
}
.access-result .access-status-pill {
    justify-self: center;
    font-size: 17px;
}
.access-result .access-result-name {
    color: #67e8f9;
    text-shadow: 0 0 22px rgba(103, 232, 249, .82), 0 4px 18px rgba(0, 0, 0, .62);
}
.access-result-icon {
    justify-self: center;
    display: grid;
    place-items: center;
    width: 52px;
    height: 52px;
    border-radius: 999px;
    background: linear-gradient(135deg, #f59e0b, #67e8f9);
    color: #061821;
    font-size: 34px;
    font-weight: 900;
    line-height: 1;
    box-shadow: 0 0 26px rgba(251, 191, 36, .42);
}
.access-greeting {
    display: grid;
    grid-template-columns: minmax(560px, 56%) minmax(430px, 44%);
    gap: 18px;
    align-items: center;
    width: min(1320px, 96vw);
    min-height: 640px;
    padding: 14px 36px;
    border-radius: 0;
    background: transparent;
    border: 0;
    box-shadow: none;
    opacity: 0;
    transform: translateY(10px);
    transition: opacity .65s ease, transform .65s ease, filter .65s ease;
}
body.light-mode .access-greeting {
    color: #fff;
}
.access-greeting.is-visible {
    opacity: 1;
    transform: translateY(0);
}
.access-greeting.is-leaving {
    opacity: 0;
    transform: translateY(-16px) scale(.985);
    filter: blur(2px);
}
.greeting-media {
    position: relative;
    min-height: 650px;
    display: grid;
    place-items: center;
    border-radius: 8px;
    overflow: visible;
    background: transparent;
    transform: translateX(-24px);
}
.greeting-media::before {
    content: "";
    position: absolute;
    inset: 3%;
    border-radius: 999px;
    background: rgba(255, 255, 255, .78);
    filter: blur(76px);
    z-index: -1;
}
.greeting-media img {
    width: 100%;
    height: 100%;
    max-height: 690px;
    object-fit: contain;
    display: block;
    transform: scale(1.24);
    transform-origin: center bottom;
    filter: drop-shadow(0 34px 54px rgba(0, 0, 0, .46));
}
.greeting-placeholder {
    width: 100%;
    min-height: 420px;
    display: grid;
    place-items: center;
    background: linear-gradient(135deg, #155e75, #15803d);
    color: #fff;
    font-size: 34px;
    font-weight: 800;
    text-align: center;
    padding: 24px;
}
.greeting-copy {
    position: relative;
    display: grid;
    gap: 20px;
    color: #fff;
    max-width: 560px;
    text-shadow: 0 4px 22px rgba(0, 0, 0, .86), 0 0 2px rgba(0, 0, 0, .7);
}
.greeting-copy::before {
    content: "";
    position: absolute;
    inset: -36px -34px;
    z-index: -1;
    background: radial-gradient(circle at 38% 45%, rgba(0, 0, 0, .52), rgba(0, 0, 0, .2) 48%, transparent 72%);
    filter: blur(10px);
}
.greeting-copy p {
    margin: 0;
    font-size: 56px;
    line-height: 1.05;
    font-weight: 900;
    color: #fff;
    letter-spacing: 0;
}
.client-name-highlight {
    color: #67e8f9;
    text-shadow: 0 0 22px rgba(103, 232, 249, .85), 0 4px 22px rgba(0, 0, 0, .82);
}
.celebration-name-highlight {
    font-size: 1.12em;
    color: #86efac;
    text-shadow: 0 0 24px rgba(134, 239, 172, .9), 0 4px 22px rgba(0, 0, 0, .82);
}
.greeting-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}
.greeting-stats strong {
    padding: 13px 16px;
    border-radius: 8px;
    background: rgba(255, 255, 255, .16);
    border: 1px solid rgba(255, 255, 255, .22);
    color: #fff;
    backdrop-filter: blur(6px);
    font-size: 16px;
}
.level-card {
    display: grid;
    gap: 13px;
    width: min(100%, 560px);
    padding: 20px;
    border: 1px solid rgba(103, 232, 249, .44);
    border-radius: 8px;
    background: linear-gradient(135deg, rgba(3, 18, 26, .82), rgba(6, 45, 58, .56));
    box-shadow: 0 0 32px rgba(103, 232, 249, .2), 0 24px 55px rgba(0, 0, 0, .36), inset 0 1px 0 rgba(255, 255, 255, .16);
    backdrop-filter: blur(10px);
}
body.light-mode .level-card {
    background: linear-gradient(135deg, rgba(255, 255, 255, .78), rgba(224, 242, 254, .54));
    border-color: rgba(8, 145, 178, .48);
    color: #0f172a;
    box-shadow: 0 0 34px rgba(8, 145, 178, .18), 0 24px 55px rgba(0, 0, 0, .2), inset 0 1px 0 rgba(255, 255, 255, .38);
}
body.light-mode .attendance-total,
body.light-mode .progress-text {
    color: #0f172a;
    text-shadow: none;
}
body.light-mode .progress-track {
    background: rgba(15, 23, 42, .16);
    border-color: rgba(15, 23, 42, .18);
}
.level-pill {
    width: fit-content;
    padding: 10px 16px;
    border-radius: 999px;
    background: linear-gradient(135deg, rgba(34, 197, 94, .95), rgba(6, 182, 212, .95));
    color: #fff;
    font-weight: 900;
    font-size: 21px;
    line-height: 1;
    box-shadow: 0 0 28px rgba(34, 211, 238, .58), inset 0 1px 0 rgba(255, 255, 255, .28);
    text-shadow: 0 2px 10px rgba(0, 0, 0, .5);
}
.level-card .level-pill,
.badge-summary .level-pill {
    font-size: clamp(24px, 2.4vw, 34px);
    padding: 13px 20px;
    line-height: 1.05;
}
.level-card .level-pill {
    box-shadow: 0 0 34px rgba(34, 211, 238, .7), inset 0 1px 0 rgba(255, 255, 255, .3);
}
.attendance-total {
    color: #fff;
    font-weight: 900;
    font-size: 20px;
    text-shadow: 0 2px 12px rgba(0, 0, 0, .72);
}
.progress-track {
    position: relative;
    height: 26px;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(2, 12, 18, .84);
    border: 1px solid rgba(255, 255, 255, .32);
    box-shadow: inset 0 3px 10px rgba(0, 0, 0, .55), 0 0 22px rgba(103, 232, 249, .18);
    transition: transform .36s ease, box-shadow .36s ease;
}
.progress-track::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .72), transparent);
    opacity: 0;
    transform: translateX(-120%);
    pointer-events: none;
}
.progress-track.is-progressing {
    transform: scale(1.035);
    box-shadow: inset 0 3px 10px rgba(0, 0, 0, .48), 0 0 32px rgba(103, 232, 249, .46);
}
.progress-track.is-progressing::after {
    animation: progressFlash 1s ease forwards;
}
.progress-fill {
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #22c55e, #06b6d4, #67e8f9);
    box-shadow: 0 0 26px rgba(34, 211, 238, .9);
    transition: width 1.2s cubic-bezier(.2, .8, .2, 1);
}
.progress-text {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 8px 14px;
    color: #fff;
    font-size: 16px;
    font-weight: 900;
    text-shadow: 0 2px 10px rgba(0, 0, 0, .65);
}
.badge-celebration {
    display: grid;
    place-items: center;
    gap: 28px;
    width: min(980px, 94vw);
    min-height: min(720px, calc(100vh - 120px));
    text-align: center;
    color: #fff;
    opacity: 0;
    transform: translateY(14px) scale(.98);
    transition: opacity .65s ease, transform .65s ease, filter .65s ease;
}
body.light-mode .badge-celebration {
    color: #fff;
}
.badge-celebration.is-visible {
    opacity: 1;
    transform: translateY(0) scale(1);
}
.badge-celebration.is-leaving {
    opacity: 0;
    transform: translateY(-16px) scale(.985);
    filter: blur(2px);
}
.celebration-copy {
    display: grid;
    gap: 16px;
    max-width: 860px;
    text-shadow: 0 5px 24px rgba(0, 0, 0, .82), 0 0 2px rgba(0, 0, 0, .75);
}
.celebration-copy .access-status-pill {
    justify-self: center;
}
.celebration-kicker {
    justify-self: center;
    padding: 9px 15px;
    border-radius: 999px;
    background: rgba(251, 191, 36, .18);
    border: 1px solid rgba(253, 224, 71, .58);
    color: #fde68a;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0;
}
.celebration-copy h1 {
    margin: 6px 0 0;
    font-size: clamp(42px, 6.4vw, 76px);
    line-height: 1;
    color: #fff7c2;
}
.celebration-copy p {
    margin: 0;
    font-size: clamp(20px, 2.1vw, 28px);
    line-height: 1.34;
    font-weight: 900;
}
.celebration-message {
    display: grid;
    gap: 8px;
    justify-items: center;
}
.celebration-message-line {
    display: block;
}
.celebration-badge-wrap {
    position: relative;
    display: grid;
    place-items: center;
    width: min(390px, 72vw);
    aspect-ratio: 1;
    margin: 4px 0 0;
}
.golden-rays {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background:
        repeating-conic-gradient(from 0deg, rgba(253, 224, 71, .95) 0deg 9deg, transparent 9deg 18deg),
        radial-gradient(circle, rgba(251, 191, 36, .58) 0 22%, rgba(250, 204, 21, .22) 42%, transparent 68%);
    filter: blur(.3px) drop-shadow(0 0 30px rgba(250, 204, 21, .62));
    opacity: .82;
    animation: goldenSpin 7s linear infinite;
}
.celebration-badge {
    position: relative;
    z-index: 1;
    display: grid;
    place-items: center;
    width: 68%;
    filter: drop-shadow(0 24px 36px rgba(0, 0, 0, .48)) drop-shadow(0 0 28px rgba(253, 224, 71, .78));
    animation: badgePop .95s cubic-bezier(.18, .9, .2, 1.25) both;
}
.celebration-badge img {
    display: block;
    width: 100%;
    height: auto;
}
.celebration-badge strong {
    position: absolute;
    left: 50%;
    top: 48%;
    transform: translate(-50%, -50%);
    min-width: 42%;
    color: #fff7c2;
    font-size: clamp(54px, 9vw, 102px);
    line-height: 1;
    font-weight: 900;
    text-align: center;
    text-shadow: 0 4px 8px rgba(67, 20, 7, .7), 0 0 18px rgba(255, 247, 194, .68);
}
.celebration-level {
    display: grid;
    gap: 6px;
    padding: 15px 22px;
    border-radius: 8px;
    background: rgba(3, 18, 26, .62);
    border: 1px solid rgba(253, 224, 71, .48);
    box-shadow: 0 18px 42px rgba(0, 0, 0, .34), inset 0 1px 0 rgba(255, 255, 255, .15);
    backdrop-filter: blur(8px);
    text-shadow: 0 3px 16px rgba(0, 0, 0, .62);
}
body.light-mode .celebration-level {
    background: rgba(255, 255, 255, .22);
    border-color: rgba(253, 224, 71, .68);
}
.celebration-level strong {
    color: #fde68a;
    font-size: clamp(25px, 3.4vw, 38px);
    line-height: 1;
}
.celebration-level span {
    color: #fff;
    font-size: clamp(34px, 5.2vw, 68px);
    line-height: .98;
    font-weight: 900;
    color: #67e8f9;
    text-shadow: 0 0 28px rgba(103, 232, 249, .9), 0 5px 20px rgba(0, 0, 0, .72);
}
.celebration-level em {
    display: block;
    margin-top: 8px;
    color: #fde68a;
    font-size: clamp(14px, 1.7vw, 18px);
    line-height: 1.15;
    font-style: normal;
    font-weight: 900;
    opacity: .95;
}
.kiosk .access-greeting {
    min-height: calc(100vh - 84px);
}
.kiosk .access-screen {
    height: 100vh;
    min-height: 100vh;
}
.check { display: flex; align-items: center; gap: 8px; }
.check input { width: auto; }

@keyframes greetingFadeIn {
    to { opacity: 1; transform: translateY(0); }
}

@keyframes greetingFadeOut {
    to { opacity: 0; transform: translateY(-10px); }
}

@keyframes progressFlash {
    0% { opacity: 0; transform: translateX(-120%); }
    25% { opacity: .8; }
    100% { opacity: 0; transform: translateX(120%); }
}

@keyframes goldenSpin {
    to { transform: rotate(360deg); }
}

@keyframes badgePop {
    0% { opacity: 0; transform: scale(.72) rotate(-5deg); }
    68% { opacity: 1; transform: scale(1.08) rotate(2deg); }
    100% { opacity: 1; transform: scale(1) rotate(0deg); }
}

@media (min-width: 1600px) {
    .access-greeting {
        width: min(1500px, 96vw);
        grid-template-columns: minmax(680px, 58%) minmax(480px, 42%);
    }
    .greeting-media {
        min-height: 740px;
    }
    .greeting-media img {
        max-height: 780px;
        transform: scale(1.28);
    }
    .greeting-copy p {
        font-size: 64px;
    }
}

@media (max-height: 820px) and (min-width: 1000px) {
    .access-screen {
        padding-top: 8px;
        padding-bottom: 10px;
        min-height: 100vh;
    }
    .access-greeting {
        min-height: 0;
        height: calc(100vh - 22px);
        grid-template-columns: minmax(500px, 55%) minmax(390px, 45%);
        padding: 0 30px;
        align-items: center;
    }
    .greeting-media {
        min-height: 0;
        height: calc(100vh - 36px);
        align-self: center;
        place-items: end center;
        transform: translate(-28px, -10px);
    }
    .greeting-media img {
        height: auto;
        max-height: min(640px, calc(100vh - 28px));
        transform: scale(1.05);
        object-position: center bottom;
    }
    .greeting-copy {
        max-width: 520px;
        align-self: center;
        gap: 12px;
        transform: translateY(-8px);
    }
    .greeting-copy p {
        font-size: clamp(34px, 4vw, 44px);
        line-height: 1.04;
    }
    .level-card {
        padding: 15px;
        gap: 9px;
        width: min(100%, 520px);
    }
    .level-card .level-pill {
        font-size: clamp(20px, 2.2vw, 28px);
        padding: 10px 16px;
    }
    .attendance-total {
        font-size: 16px;
    }
    .progress-track {
        height: 20px;
    }
    .progress-text {
        font-size: 13px;
    }
    .badge-celebration {
        min-height: 0;
        height: calc(100vh - 18px);
        gap: 8px;
        align-content: center;
        width: min(840px, 92vw);
    }
    .celebration-copy {
        gap: 6px;
    }
    .celebration-kicker {
        padding: 6px 12px;
        font-size: 13px;
    }
    .celebration-badge-wrap {
        width: min(245px, 33vh);
        margin: 0;
    }
    .celebration-copy h1 {
        font-size: clamp(34px, 4.4vw, 48px);
        margin-top: 0;
    }
    .celebration-copy p {
        font-size: 17px;
        line-height: 1.22;
    }
    .celebration-message {
        gap: 4px;
    }
    .celebration-level {
        width: min(620px, 78vw);
        padding: 12px 18px;
        gap: 4px;
    }
    .celebration-level strong {
        font-size: clamp(23px, 3vw, 34px);
    }
    .celebration-level span {
        font-size: clamp(34px, 5vw, 58px);
        line-height: .94;
    }
    .celebration-level em {
        margin-top: 7px;
        font-size: 14px;
    }
    .celebration-badge strong {
        font-size: clamp(48px, 7vw, 84px);
    }
}

@media (max-height: 720px) and (min-width: 1000px) {
    .access-greeting {
        grid-template-columns: minmax(450px, 54%) minmax(360px, 46%);
    }
    .greeting-media {
        transform: translate(-24px, -4px);
    }
    .greeting-media img {
        max-height: min(600px, calc(100vh - 18px));
        transform: scale(1);
    }
    .greeting-copy {
        gap: 9px;
    }
    .greeting-copy p {
        font-size: clamp(30px, 3.6vw, 38px);
    }
    .greeting-stats strong {
        padding: 10px 12px;
        font-size: 14px;
    }
    .level-card {
        padding: 12px;
        gap: 7px;
    }
    .attendance-total {
        font-size: 14px;
    }
    .progress-text {
        font-size: 12px;
    }
    .badge-celebration {
        gap: 6px;
        height: calc(100vh - 10px);
    }
    .celebration-copy .access-status-pill {
        padding: 7px 12px;
        font-size: 13px;
    }
    .celebration-kicker {
        padding: 5px 10px;
        font-size: 12px;
    }
    .celebration-copy h1 {
        font-size: clamp(30px, 4vw, 42px);
    }
    .celebration-copy p {
        font-size: 15px;
    }
    .celebration-badge-wrap {
        width: min(205px, 30vh);
    }
    .celebration-level {
        padding: 10px 14px;
    }
    .celebration-level span {
        font-size: clamp(28px, 4.5vw, 48px);
    }
    .celebration-level em {
        margin-top: 6px;
    }
}

@media (max-width: 1180px) {
    .analytics-grid {
        grid-template-columns: 1fr;
    }
    .chart-panel canvas,
    .chart-panel-wide canvas {
        height: 340px !important;
        max-height: 340px;
    }
}

@media (max-width: 760px) {
    .payment-summary-grid,
    .payment-details-grid {
        grid-template-columns: 1fr;
    }

    .sidebar { position: static; width: auto; }
    .content { margin-left: 0; padding: 16px; }
    .topbar, .actions { align-items: stretch; flex-direction: column; }
    .form-grid, .form-grid.compact, .payment-sale-grid, .filters { grid-template-columns: 1fr; }
    .payment-sale-grid > label:first-child,
    .payment-sale-grid > label:nth-of-type(6) {
        grid-column: 1;
    }
    .dashboard-kpis,
    .analytics-cards,
    .analytics-grid { grid-template-columns: 1fr; }
    .comparison-item { grid-template-columns: 1fr; }
    .analytics-filters { display: grid; }
    .analytics-filters label { min-width: 0; }
    .dashboard-title h2 { font-size: 21px; }
    .kpi-card { min-height: 104px; }
    .chart-panel { padding: 16px; }
    .chart-panel canvas,
    .chart-panel-wide canvas {
        height: 300px !important;
        max-height: 300px;
    }
    .client-head { grid-template-columns: 1fr; }
    .client-profile-grid,
    .client-summary,
    .detail-grid,
    .guest-search-grid,
    .info-list,
    .client-meta-grid {
        grid-template-columns: 1fr;
    }
    .section-heading-row,
    .guest-form-actions,
    .guest-selected-card {
        align-items: stretch;
        flex-direction: column;
    }
    .client-record-tabbar {
        width: 100%;
    }
    .client-record-tab {
        flex: 1 1 120px;
    }
    .guest-counter {
        width: 100%;
    }
    .client-photo-large,
    .client-photo-placeholder {
        width: 140px;
        height: 140px;
    }
    .access-greeting { grid-template-columns: 1fr; min-height: auto; padding: 18px; }
    .greeting-media, .greeting-media img, .greeting-placeholder { min-height: 260px; }
    .greeting-copy h2 { font-size: 32px; }
    .greeting-copy p { font-size: 22px; }
    .level-card { width: 100%; }
    .badge-celebration {
        min-height: auto;
        padding: 18px;
    }
    .celebration-badge-wrap {
        width: min(300px, 78vw);
    }
    table { display: block; overflow-x: auto; }
}

/* Modern SaaS refresh */
body {
    --primary: #0891b2;
    --primary-strong: #0e7490;
    --primary-soft: rgba(8, 145, 178, .12);
    --accent: #14b8a6;
    --line: rgba(148, 163, 184, .24);
    --panel: var(--panel-bg);
    --shadow-soft: 0 18px 44px rgba(15, 23, 42, .08);
    --shadow-card: 0 10px 28px rgba(15, 23, 42, .07);
    --radius: 8px;
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
    background:
        linear-gradient(180deg, rgba(8, 145, 178, .06), transparent 280px),
        var(--bg);
}

body.light-mode {
    --bg: #f3f7fa;
    --text: #102033;
    --muted: #64748b;
    --panel-bg: rgba(255, 255, 255, .94);
    --panel-border: rgba(148, 163, 184, .26);
    --input-bg: #ffffff;
    --input-border: #d6e0ea;
    --button-bg: #0e7490;
    --sidebar-bg: #071923;
    --sidebar-text: #b8c7d8;
    --sidebar-active: rgba(8, 145, 178, .18);
    --topbar-text: #102033;
}

body.dark-mode {
    --bg: #0b1220;
    --text: #eef6ff;
    --muted: #9fb0c3;
    --panel-bg: rgba(17, 27, 44, .92);
    --panel-border: rgba(148, 163, 184, .18);
    --input-bg: rgba(9, 17, 30, .9);
    --input-border: rgba(148, 163, 184, .24);
    --button-bg: #0891b2;
    --sidebar-bg: #050f1c;
    --sidebar-text: #afbed0;
    --sidebar-active: rgba(34, 211, 238, .14);
    --topbar-text: #eef6ff;
    --shadow-soft: 0 18px 48px rgba(0, 0, 0, .28);
    --shadow-card: 0 12px 30px rgba(0, 0, 0, .22);
}

a {
    color: var(--primary);
    font-weight: 800;
}

button,
.button {
    border-radius: var(--radius);
    background: linear-gradient(135deg, var(--button-bg), #14b8a6);
    box-shadow: 0 10px 22px rgba(8, 145, 178, .18);
    transition: transform .16s ease, box-shadow .16s ease, filter .16s ease;
}

button:hover,
.button:hover {
    transform: translateY(-1px);
    filter: brightness(1.04);
    box-shadow: 0 14px 28px rgba(8, 145, 178, .24);
}

.button.secondary {
    background: rgba(100, 116, 139, .16);
    color: var(--text);
    border: 1px solid var(--panel-border);
    box-shadow: none;
}

.sidebar {
    width: 198px;
    padding: 18px 12px;
    background:
        linear-gradient(180deg, rgba(8, 145, 178, .16), transparent 260px),
        var(--sidebar-bg);
    border-right: 1px solid rgba(255, 255, 255, .08);
    box-shadow: 14px 0 34px rgba(2, 6, 23, .18);
}

.brand {
    min-height: 0;
    margin: 0 0 18px;
    padding: 6px 8px 16px;
    justify-content: center;
    flex-direction: column;
    gap: 8px;
    border-bottom: 1px solid rgba(255, 255, 255, .1);
    text-align: center;
}

.brand img {
    width: 76px;
    flex: 0 0 auto;
    filter: drop-shadow(0 0 14px rgba(34, 211, 238, .22));
}

.brand span {
    color: #f8fafc;
    font-size: 12px;
    line-height: 1.15;
    font-weight: 900;
    max-width: 120px;
}

.sidebar nav {
    min-height: calc(100vh - 106px);
    gap: 7px;
    align-content: start;
}

.sidebar nav a {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 48px;
    padding: 11px 12px;
    border-radius: var(--radius);
    color: var(--sidebar-text);
    font-size: 14px;
    font-weight: 850;
    border: 1px solid transparent;
    transition: background .18s ease, color .18s ease, border-color .18s ease, transform .18s ease;
}

.sidebar nav a:hover {
    transform: translateX(2px);
    background: rgba(255, 255, 255, .07);
    color: #ffffff;
}

.sidebar nav a.active {
    background: linear-gradient(135deg, rgba(8, 145, 178, .28), rgba(20, 184, 166, .16));
    color: #ffffff;
    border-color: rgba(103, 232, 249, .22);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .08), 0 10px 26px rgba(8, 145, 178, .13);
}

.sidebar nav a.active::before {
    content: "";
    position: absolute;
    left: -12px;
    top: 10px;
    bottom: 10px;
    width: 3px;
    border-radius: 999px;
    background: #67e8f9;
}

.nav-icon {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    border-radius: 9px;
    background: rgba(255, 255, 255, .09);
    color: #b9f2ff;
}

.nav-icon svg {
    width: 22px;
    height: 22px;
}

.sidebar-logout {
    margin-top: auto;
    color: #fecaca !important;
}

.content {
    margin-left: 198px;
    padding: 22px 26px 34px;
    max-width: 1780px;
}

.topbar {
    position: sticky;
    top: 0;
    z-index: 20;
    margin: -22px -26px 22px;
    padding: 18px 26px;
    background: color-mix(in srgb, var(--bg) 84%, transparent);
    border-bottom: 1px solid var(--line);
    backdrop-filter: blur(14px);
}

.topbar-title {
    display: grid;
    gap: 4px;
}

.topbar-title > span {
    color: var(--muted);
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
}

.topbar h1 {
    font-size: 26px;
    line-height: 1.1;
    font-weight: 900;
}

.topbar-actions {
    gap: 10px;
}

.theme-toggle {
    width: auto;
    min-width: 74px;
    height: 38px;
    padding: 0 13px;
    border-radius: var(--radius);
    background: var(--panel-bg);
    border: 1px solid var(--panel-border);
    color: var(--text);
    font-size: 13px;
    font-weight: 900;
    box-shadow: var(--shadow-card);
}

.theme-toggle::before {
    content: "";
    width: 8px;
    height: 8px;
    margin-right: 7px;
    display: inline-block;
    border-radius: 999px;
    background: var(--primary);
    box-shadow: 0 0 12px rgba(34, 211, 238, .72);
}

.user-chip {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 7px 10px 7px 12px;
    border: 1px solid var(--panel-border);
    border-radius: var(--radius);
    background: var(--panel-bg);
    color: var(--text);
    font-weight: 900;
    box-shadow: var(--shadow-card);
}

.user-chip small {
    padding: 4px 7px;
    border-radius: 999px;
    background: var(--primary-soft);
    color: var(--primary-strong);
    font-size: 11px;
    text-transform: uppercase;
}

.panel,
.card {
    border-radius: var(--radius);
    border-color: var(--panel-border);
    padding: 20px;
    box-shadow: var(--shadow-card);
}

.panel:hover,
.card:hover {
    box-shadow: var(--shadow-soft);
}

.kpi-card,
.metric-card {
    min-height: 116px;
    padding: 18px;
}

.kpi-card::before {
    width: 4px;
    border-radius: 999px;
}

.kpi-card::after {
    display: none;
}

.card span,
.kpi-card span,
.metric-card span {
    color: var(--muted);
    font-size: 13px;
    text-transform: uppercase;
}

.card strong,
.kpi-card strong,
.metric-card strong {
    color: var(--text);
    font-weight: 950;
}

.section-kicker {
    padding: 5px 10px;
    border: 1px solid rgba(8, 145, 178, .18);
    background: var(--primary-soft);
    color: var(--primary-strong);
    font-size: 11px;
}

input,
select,
textarea {
    min-height: 42px;
    border-radius: var(--radius);
    background: var(--input-bg);
    border-color: var(--input-border);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .04);
    transition: border-color .16s ease, box-shadow .16s ease, background .16s ease;
}

input:focus,
select:focus,
textarea:focus {
    outline: none;
    border-color: rgba(8, 145, 178, .72);
    box-shadow: 0 0 0 3px rgba(8, 145, 178, .14);
}

label {
    gap: 7px;
    color: var(--muted);
    font-size: 13px;
    font-weight: 900;
}

label input,
label select,
label textarea {
    color: var(--text);
    font-size: 14px;
    font-weight: 650;
}

fieldset {
    border-color: var(--panel-border);
    border-radius: var(--radius);
}

.actions {
    gap: 14px;
}

.inline-search {
    gap: 10px;
}

table {
    border-collapse: separate;
    border-spacing: 0;
}

th,
td {
    padding: 13px 14px;
    border-bottom: 1px solid var(--line);
}

th {
    background: rgba(148, 163, 184, .08);
    color: var(--muted);
    font-size: 12px;
    font-weight: 950;
    text-transform: uppercase;
}

th:first-child {
    border-top-left-radius: var(--radius);
}

th:last-child {
    border-top-right-radius: var(--radius);
}

.zebra-table tbody tr:nth-child(even) {
    background: rgba(148, 163, 184, .045);
}

.zebra-table tbody tr:hover {
    background: rgba(8, 145, 178, .075);
    box-shadow: inset 3px 0 0 var(--primary);
}

.table-actions a,
.table-actions button,
td > a {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 5px 8px;
    border-radius: 7px;
    background: rgba(8, 145, 178, .1);
    color: var(--primary-strong);
    font-size: 12px;
    font-weight: 900;
}

.client-name-link,
td > a.client-name-link {
    display: inline;
    min-height: 0;
    padding: 0;
    border-radius: 0;
    background: transparent;
    color: var(--primary);
    font-size: inherit;
}

.link-button,
.inline-form .link-button {
    min-height: 0;
    padding: 0;
    border-radius: 0;
    background: transparent;
    color: var(--primary);
    box-shadow: none;
    transform: none;
}

.link-button:hover,
.inline-form .link-button:hover {
    transform: none;
    box-shadow: none;
}

.danger-link,
.inline-form .danger-link {
    color: #dc2626;
}

.badge {
    padding: 5px 9px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 950;
}

.badge.activo {
    background: rgba(20, 184, 166, .14);
    color: #0f766e;
}

.badge.inactivo {
    background: rgba(245, 158, 11, .16);
    color: #92400e;
}

body.dark-mode .badge.activo {
    color: #5eead4;
}

body.dark-mode .badge.inactivo {
    color: #fbbf24;
}

body.dark-mode .client-action-primary {
    background: linear-gradient(135deg, #008fa1, #00d4c7);
    color: #fff;
    box-shadow: 0 12px 26px rgba(0, 183, 194, .24);
}

body.dark-mode .client-action-primary:hover {
    background: linear-gradient(135deg, #00a8bb, #17e6d9);
    box-shadow: 0 14px 32px rgba(0, 212, 199, .28);
}

body.dark-mode .client-action-modify.button.secondary {
    border-color: rgba(125, 211, 252, .22);
    background: #17445a;
    color: #eefbff;
    box-shadow: 0 10px 22px rgba(23, 68, 90, .32);
}

body.dark-mode .client-action-modify.button.secondary:hover {
    border-color: rgba(125, 211, 252, .38);
    background: #1d536d;
}

body.dark-mode .client-action-pass.button.secondary {
    border-color: rgba(0, 212, 199, .28);
    background: rgba(0, 183, 194, .14);
    color: #bffcff;
}

body.dark-mode .client-action-pass.button.secondary:hover {
    border-color: rgba(0, 212, 199, .46);
    background: rgba(0, 183, 194, .22);
}

body.dark-mode .client-action-edit.button.secondary {
    border-color: rgba(148, 214, 225, .2);
    background: #162f3d;
    color: #d7e7ee;
}

body.dark-mode .client-action-edit.button.secondary:hover {
    border-color: rgba(148, 214, 225, .32);
    background: #1d3a49;
}

body.dark-mode .client-action-delete.button.secondary {
    border-color: rgba(251, 113, 133, .28);
    background: rgba(190, 18, 60, .16);
    color: #fecdd3;
}

body.dark-mode .client-action-delete.button.secondary:hover {
    border-color: rgba(251, 113, 133, .46);
    background: rgba(190, 18, 60, .24);
    color: #fff1f2;
}

.alert {
    border-radius: var(--radius);
    border: 1px solid transparent;
    box-shadow: var(--shadow-card);
}

.alert.success {
    background: rgba(20, 184, 166, .13);
    color: #0f766e;
    border-color: rgba(20, 184, 166, .22);
}

.alert.error {
    background: rgba(239, 68, 68, .12);
    color: #b91c1c;
    border-color: rgba(239, 68, 68, .22);
}

.alert.warning {
    background: rgba(245, 158, 11, .13);
    color: #92400e;
    border-color: rgba(245, 158, 11, .24);
}

.client-photo-large,
.client-photo-placeholder,
.photo,
.current-photo-control img {
    border-radius: var(--radius);
}

.client-photo-placeholder {
    background: linear-gradient(135deg, #0e7490, #14b8a6);
}

.client-meta-grid span,
.info-list div,
.readonly-summary-field,
.distribution-item,
.comparison-item,
.payment-client-summary {
    border-radius: var(--radius);
    background: rgba(148, 163, 184, .07);
    border-color: var(--line);
}

.status-pill {
    background: var(--primary) !important;
    border-radius: 999px;
}

.status-expired,
.status-none {
    background: #f59e0b !important;
}

.plan-status-card.status-active {
    background: linear-gradient(135deg, #0e7490, #14b8a6);
}

.plan-status-card.status-expired,
.plan-status-card.status-none {
    background: linear-gradient(135deg, #92400e, #f59e0b);
}

.table-pagination {
    border-top-color: var(--line);
}

.table-pagination .button {
    min-height: 34px;
}

.settings-modal-card {
    border-radius: var(--radius);
}

.settings-section .report-card {
    padding: 16px;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: rgba(148, 163, 184, .055);
}

.badge-level-preview {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.badge-level-preview span,
.badge-level-preview em {
    padding: 7px 10px;
    border-radius: 999px;
    background: var(--primary-soft);
    color: var(--primary-strong);
    font-size: 12px;
    font-style: normal;
    font-weight: 900;
}

.badge-modal-card {
    width: min(780px, 100%);
}

.settings-badge-form {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    max-height: min(90vh, 820px);
    gap: 0;
    margin: 0;
    padding: 0;
}

.badge-level-editor {
    display: grid;
    gap: 10px;
    min-height: 0;
    max-height: min(56vh, 520px);
    overflow-y: auto;
    padding: 16px 20px 18px 26px;
    scrollbar-width: thin;
    scrollbar-color: rgba(8, 145, 178, .42) transparent;
}

.badge-level-editor::-webkit-scrollbar {
    width: 10px;
}

.badge-level-editor::-webkit-scrollbar-thumb {
    border: 3px solid #ffffff;
    border-radius: 999px;
    background: rgba(8, 145, 178, .42);
    background-clip: padding-box;
}

.badge-level-row {
    display: grid;
    grid-template-columns: 92px minmax(0, 1fr);
    gap: 10px;
    align-items: center;
}

.badge-level-row span {
    color: var(--muted);
    font-size: 13px;
    font-weight: 900;
}

.badge-level-actions {
    position: sticky;
    bottom: 0;
    z-index: 2;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: flex-end;
    padding: 16px 26px;
    border-top: 1px solid #e2e8f0;
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 -14px 30px rgba(15, 23, 42, .07);
    backdrop-filter: blur(10px);
}

.badge-level-actions button,
.badge-level-actions .button {
    min-height: 42px;
    border-radius: 9px;
    padding: 10px 16px;
}

.group-delete-panel {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 16px;
    border: 1px solid #fecaca;
    border-radius: 8px;
    background: #fff1f2;
}

.group-delete-panel strong {
    display: block;
    color: #991b1b;
}

.group-delete-panel p {
    margin: 4px 0 0;
    color: #7f1d1d;
}

@media (max-width: 680px) {
    .group-delete-panel {
        align-items: stretch;
        flex-direction: column;
    }
}

@media (max-width: 680px) {
    .settings-modal-card .settings-badge-form {
        max-height: calc(100vh - 20px);
    }

    .badge-level-editor {
        padding: 14px 14px 16px 18px;
    }

    .badge-level-row {
        grid-template-columns: 74px minmax(0, 1fr);
    }

    .badge-level-actions {
        flex-direction: column-reverse;
        padding: 12px 16px;
    }

    .badge-level-actions button,
    .badge-level-actions .button {
        width: 100%;
    }
}

#respaldos .reports-grid {
    grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
    align-items: start;
}

#respaldos .report-card {
    gap: 14px;
    min-width: 0;
}

.backup-export-form {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    align-items: end;
    margin: 0;
}

.backup-export-form label {
    min-width: 0;
}

.backup-export-form input,
.backup-export-form select {
    width: 100%;
}

.backup-export-action {
    grid-column: 1 / -1;
}

.backup-export-action button {
    width: 100%;
    min-height: 42px;
    white-space: normal;
    line-height: 1.15;
}

.dashboard-kpis .kpi-card,
.income-summary-cards .kpi-card {
    border-left: 0;
    border-top: 0;
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--kpi-accent, var(--primary)) 7%, transparent), transparent 58%),
        var(--panel-bg);
}

.dashboard-kpis .kpi-card::before,
.income-summary-cards .kpi-card::before {
    display: block;
    background: var(--kpi-accent, var(--primary));
}

.income-summary-cards .kpi-card span {
    color: var(--muted);
}

.income-summary-cards .kpi-card strong {
    color: var(--text);
}

.income-summary-cards .kpi-card small {
    color: var(--muted);
}

.theme-toggle {
    font-size: 0;
}

.theme-toggle::after {
    content: "Tema";
    font-size: 13px;
}

@media (max-width: 900px) {
    .sidebar {
        position: static;
        width: auto;
        padding: 12px;
    }

    .brand {
        padding-bottom: 10px;
        margin-bottom: 10px;
    }

    .sidebar nav {
        min-height: 0;
        grid-template-columns: repeat(auto-fit, minmax(142px, 1fr));
    }

    .sidebar-logout {
        margin-top: 0;
    }

    .content {
        margin-left: 0;
        padding: 18px;
    }

    .topbar {
        position: static;
        margin: -18px -18px 18px;
        padding: 16px 18px;
    }
}

@media (max-width: 760px) {
    .plan-picker-list {
        grid-template-columns: 1fr;
        max-height: 250px;
    }

    .topbar,
    .actions {
        align-items: stretch;
        flex-direction: column;
    }

    .topbar-actions,
    .inline-search,
    .clients-filter-form {
        width: 100%;
        flex-wrap: wrap;
    }

    .clients-filter-form select,
    .clients-filter-form input {
        max-width: none;
    }

    .user-chip {
        justify-content: space-between;
    }

    #respaldos .reports-grid,
    .backup-export-form {
        grid-template-columns: 1fr;
    }

    th,
    td {
        padding: 12px;
    }
}

/* Typography tuning: keep the brand strong, make small UI text calmer. */
body {
    font-weight: 500;
    line-height: 1.45;
    letter-spacing: 0;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

p,
td,
input,
select,
textarea,
.alert,
.muted-line,
.info-list div,
.group-member-chip small,
.group-member-result span {
    line-height: 1.45;
    letter-spacing: 0;
}

input,
select,
textarea,
td {
    font-weight: 500;
}

label,
.analytics-filters label,
.dashboard-filters label,
.backup-export-form label,
.payment-sale-grid label,
.settings-plan-form label,
.group-member-search label,
.day-checks label,
.checkbox-line {
    color: var(--muted);
    font-weight: 600;
    line-height: 1.34;
}

label input,
label select,
label textarea {
    color: var(--text);
    font-weight: 500;
}

small,
.card small,
.kpi-card small,
.metric-card small,
.payment-client-summary small,
.readonly-summary-field small,
.settings-admin-card p,
.settings-section p,
.section-title p,
.section-subhead p,
.plan-breakdown-heading p,
.immediate-plan-summary p,
.today-access-card small,
.badge-summary p,
.plan-active-toggle small,
.settings-plan-form-title p,
.distribution-item small,
.comparison-item small,
.muted-line {
    font-weight: 500;
    line-height: 1.45;
}

.section-kicker,
.topbar-title > span,
.card span,
.kpi-card span,
.metric-card span,
.readonly-summary-field span,
.immediate-plan-summary span,
.payment-client-summary span,
.today-access-card span,
th {
    font-weight: 700;
    letter-spacing: .02em;
}

.topbar h1 {
    font-weight: 800;
    line-height: 1.12;
}

h2,
.dashboard-title h2,
.section-title h2,
.settings-section h2,
.settings-plan-form-title h3,
.plan-breakdown-heading h3 {
    font-weight: 800;
    line-height: 1.18;
    letter-spacing: 0;
}

h3,
legend,
.section-subhead h3 {
    font-weight: 700;
    line-height: 1.22;
    letter-spacing: 0;
}

button,
.button,
.sidebar nav a,
.theme-toggle,
.user-chip,
.client-name-link,
td > a.client-name-link,
.table-actions a,
.table-actions button,
.link-button,
.inline-form .link-button {
    font-weight: 800;
}

.brand span,
.card strong,
.kpi-card strong,
.metric-card strong,
.payment-client-summary strong,
.plan-status-card strong,
.today-access-card p,
.access-result span,
.badge-celebration strong {
    font-weight: 850;
}

.readonly-summary-field strong,
.immediate-plan-summary strong,
.group-member-chip strong,
.group-member-result strong,
.settings-plan-table strong,
.client-meta-grid strong,
.info-list strong {
    font-weight: 700;
}

.badge,
.status-pill,
.badge-level-preview span,
.badge-level-preview em,
.badge-level-row span {
    font-weight: 700;
    letter-spacing: 0;
}

.plan-active-toggle strong,
.plan-breakdown-row,
.distribution-item strong,
.comparison-item strong {
    font-weight: 700;
}

th {
    font-size: 12px;
    line-height: 1.35;
}

td {
    font-size: 14px;
}

/* Payment form visual polish. */
.payment-focus {
    padding: 18px;
    background: color-mix(in srgb, var(--bg) 84%, #e0f7fb);
    border-color: rgba(6, 182, 212, .26);
}

body.dark-mode .payment-focus {
    background: rgba(8, 47, 73, .2);
}

.payment-sale-grid {
    row-gap: 18px;
}

.payment-operation-field,
.payment-plan-field {
    grid-column: 1 / -1;
    min-width: 0;
    padding: 16px;
    border: 1px solid rgba(148, 163, 184, .28);
    border-radius: 8px;
    background: color-mix(in srgb, var(--panel-bg) 90%, #ffffff);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5);
}

body.dark-mode .payment-operation-field,
body.dark-mode .payment-plan-field {
    background: rgba(15, 23, 42, .42);
    border-color: rgba(148, 163, 184, .2);
}

.payment-sale-grid > .payment-operation-field {
    display: none !important;
}

.form-grid > .payment-operation-field {
    margin-bottom: -8px;
    border-bottom: 0;
    border-radius: 8px 8px 0 0;
}

.form-grid > .payment-operation-field + .payment-focus {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
    padding-top: 24px;
}

.payment-operation-field {
    display: grid;
    gap: 10px;
    padding: 16px 16px 14px;
    background:
        linear-gradient(135deg, rgba(8, 145, 178, .12), rgba(20, 184, 166, .08)),
        color-mix(in srgb, var(--bg) 84%, #dff7fb);
}

body.dark-mode .payment-operation-field {
    background: linear-gradient(135deg, rgba(34, 211, 238, .15), rgba(20, 184, 166, .1)), rgba(8, 47, 73, .36);
}

.payment-operation-field > span,
.payment-section-title span {
    color: var(--muted);
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
}

.payment-operation-select {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    border: 0;
    opacity: 0;
    pointer-events: none;
}

.payment-operation-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    align-items: end;
}

.payment-operation-tab {
    position: relative;
    display: grid;
    gap: 4px;
    min-height: 74px;
    padding: 14px 16px;
    border: 1px solid rgba(8, 145, 178, .22);
    border-radius: 8px;
    background: rgba(255, 255, 255, .72);
    color: var(--text);
    box-shadow: none;
    text-align: left;
}

.payment-operation-tab:hover {
    transform: translateY(-1px);
    box-shadow: none;
}

.payment-operation-tab.is-active {
    z-index: 1;
    border-color: rgba(8, 145, 178, .54);
    background: linear-gradient(135deg, #0891b2, #14b8a6);
    color: #ffffff;
    box-shadow: 0 12px 24px rgba(8, 145, 178, .18);
}

body.dark-mode .payment-operation-tab {
    background: rgba(15, 23, 42, .62);
    border-color: rgba(34, 211, 238, .18);
    color: var(--text);
}

body.dark-mode .payment-operation-tab.is-active {
    border-color: rgba(34, 211, 238, .5);
    background: linear-gradient(135deg, #0e7490, #0f766e);
    color: #ffffff;
}

.payment-operation-tab:disabled {
    opacity: .48;
    cursor: not-allowed;
}

.payment-operation-tab strong,
.payment-operation-tab small {
    display: block;
}

.payment-operation-tab strong {
    font-size: 15px;
    line-height: 1.1;
}

.payment-operation-tab small {
    color: var(--muted);
    font-size: 12px;
    font-weight: 800;
}

.payment-operation-tab.is-active small {
    color: rgba(255, 255, 255, .86);
}

.payment-operation-field > small[data-renewal-only] {
    display: none !important;
}

.operation-mode-hint {
    display: block;
    margin-bottom: 12px;
    max-width: 980px;
}

.payment-section-title {
    display: grid;
    gap: 3px;
}

.payment-section-title strong {
    font-size: 17px;
    line-height: 1.2;
}

.payment-sale-grid > label,
.payment-plan-field > label,
.group-member-search label {
    gap: 8px;
}

.payment-sale-grid > label:not(.payment-comment-field),
.payment-date-field,
.payment-method-field,
.payment-comment-field {
    padding-top: 3px;
}

.payment-sale-grid small,
.payment-plan-field small,
.group-members-section small {
    margin-top: 2px;
}

.payment-summary-grid,
.payment-details-grid {
    gap: 14px;
}

.payment-summary-grid {
    margin-top: 0;
    padding: 14px;
    border: 1px solid rgba(148, 163, 184, .24);
    border-radius: 8px;
    background: color-mix(in srgb, var(--bg) 90%, #ffffff);
}

body.dark-mode .payment-summary-grid {
    background: rgba(2, 6, 23, .18);
    border-color: rgba(148, 163, 184, .16);
}

.payment-details-grid {
    padding: 14px;
    border: 1px solid rgba(148, 163, 184, .22);
    border-radius: 8px;
    background: color-mix(in srgb, var(--panel-bg) 86%, #f8fafc);
}

body.dark-mode .payment-details-grid {
    background: rgba(15, 23, 42, .32);
    border-color: rgba(148, 163, 184, .16);
}

.readonly-summary-field {
    min-height: 104px;
    padding: 18px;
    background: color-mix(in srgb, var(--panel-bg) 92%, #ffffff);
    border-color: rgba(148, 163, 184, .3);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .55);
}

body.dark-mode .readonly-summary-field {
    background: rgba(15, 23, 42, .5);
    border-color: rgba(148, 163, 184, .22);
}

.readonly-summary-field span {
    margin-bottom: 3px;
}

.readonly-summary-field strong {
    margin-top: 2px;
    font-size: 22px;
}

.group-members-section {
    padding: 18px;
    background: color-mix(in srgb, var(--bg) 88%, #e0f7fb);
    border-color: rgba(6, 182, 212, .24);
}

.group-member-chip {
    background: color-mix(in srgb, var(--panel-bg) 96%, #ffffff);
}

/* Collapsible sidebar. */
.sidebar,
.content,
.topbar {
    transition:
        transform .24s ease,
        opacity .2s ease,
        margin-left .24s ease,
        padding .24s ease,
        box-shadow .24s ease;
}

body.sidebar-collapsed .sidebar {
    transform: translateX(-102%);
    opacity: 0;
    pointer-events: none;
    box-shadow: none;
}

body.sidebar-collapsed .content {
    margin-left: 0;
    max-width: none;
}

.sidebar-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-width: 88px;
    height: 38px;
    padding: 0 12px;
    border-radius: var(--radius);
    background: var(--panel-bg);
    border: 1px solid var(--panel-border);
    color: var(--text);
    box-shadow: var(--shadow-card);
    font-size: 13px;
    line-height: 1;
}

.sidebar-toggle:hover {
    transform: translateY(-1px);
}

.sidebar-toggle-icon {
    position: relative;
    display: grid;
    gap: 4px;
    width: 18px;
    flex: 0 0 18px;
}

.sidebar-toggle-icon span {
    display: block;
    height: 2px;
    border-radius: 999px;
    background: currentColor;
    transition: transform .22s ease, opacity .18s ease, width .22s ease;
}

.sidebar-toggle-icon span:nth-child(2) {
    width: 13px;
}

.sidebar-toggle-icon span:nth-child(3) {
    width: 16px;
}

.sidebar-toggle-icon span:nth-child(1) {
    transform: translateY(6px) rotate(45deg);
}

.sidebar-toggle-icon span:nth-child(2) {
    opacity: 0;
}

.sidebar-toggle-icon span:nth-child(3) {
    width: 18px;
    transform: translateY(-6px) rotate(-45deg);
}

body.sidebar-collapsed .sidebar-toggle-icon span:nth-child(1),
body.sidebar-collapsed .sidebar-toggle-icon span:nth-child(3) {
    transform: none;
}

body.sidebar-collapsed .sidebar-toggle-icon span:nth-child(2) {
    opacity: 1;
}

body.sidebar-collapsed .sidebar-toggle-icon span:nth-child(3) {
    width: 16px;
}

.topbar .sidebar-toggle + .topbar-title {
    min-width: 0;
}

@media (min-width: 761px) {
    .payment-focus .payment-sale-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    }

    .payment-focus .payment-sale-grid > [data-duration-summary],
    .payment-focus .payment-sale-grid > [data-sale-value],
    .payment-focus .payment-sale-grid > [data-membership-period-summary],
    .payment-focus .payment-sale-grid > .payment-date-field,
    .payment-focus .payment-sale-grid > .payment-method-field,
    .payment-focus .payment-sale-grid > .payment-comment-field,
    .payment-focus .payment-sale-grid > .payment-amount-field {
        grid-column: span 1 !important;
    }

    .payment-focus .payment-sale-grid > label:first-child,
    .payment-focus .payment-sale-grid > .payment-plan-field,
    .payment-focus .payment-sale-grid > .payment-plan-payment-block,
    .payment-focus .payment-sale-grid > .payment-summary-grid,
    .payment-focus .payment-sale-grid > .payment-details-grid,
    .payment-focus .payment-sale-grid > .immediate-plan-summary,
    .payment-focus .payment-sale-grid > .alert.warning {
        grid-column: 1 / -1 !important;
    }
}

@media (max-width: 900px) {
    .payment-summary-grid,
    .payment-details-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .plan-picker-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .today-access-summary {
        grid-template-columns: 1fr;
        align-items: stretch;
    }

    body.sidebar-collapsed .sidebar {
        position: absolute;
        width: 100%;
    }

    body.sidebar-collapsed .content {
        margin-left: 0;
    }
}

/* Compact, high-contrast payment screen tuned for gym displays around 1360x768. */
.content:has(.payment-form) {
    background: #eaf2f6;
}

.content:has(.payment-form) .topbar {
    min-height: 52px;
    margin-bottom: 12px;
    padding: 0 4px;
}

.content:has(.payment-form) .topbar h1 {
    font-size: 25px;
    line-height: 1.1;
}

.payment-form {
    gap: 12px;
    padding: 14px;
    margin-bottom: 12px;
    border-color: #cbd9e5;
    background: #f8fbfd;
    box-shadow: 0 16px 42px rgba(15, 23, 42, .08);
}

.payment-form .payment-client-summary {
    min-height: 76px;
    padding: 12px 14px;
    border-color: #cbd9e5;
    background: #ffffff;
}

.payment-form .payment-client-summary span,
.payment-form .payment-section-title span,
.payment-form .payment-operation-field > span,
.payment-form label,
.payment-form legend,
.payment-form .readonly-summary-field span,
.payment-form .immediate-plan-summary span,
.payment-form .group-members-header strong {
    color: #42526a;
}

.payment-form .payment-client-summary strong {
    font-size: 22px;
    color: #0f172a;
}

.payment-form .payment-client-summary small,
.payment-form small,
.payment-form .readonly-summary-field small,
.payment-form .group-member-chip small,
.payment-form .group-member-result span {
    color: #52637a;
}

.payment-form > .payment-operation-field {
    margin-bottom: -6px;
    padding: 12px 14px 10px;
    border-color: #9bd8e3;
    background:
        linear-gradient(135deg, rgba(8, 145, 178, .18), rgba(20, 184, 166, .12)),
        #dff3f7;
    box-shadow: 0 10px 28px rgba(8, 145, 178, .08);
}

.payment-form > .payment-operation-field + .payment-focus {
    border-color: #9bd8e3;
    background: #eef7fa;
}

.payment-operation-tabs {
    gap: 8px;
}

.payment-operation-tab {
    min-height: 58px;
    padding: 10px 13px;
    border-color: #b8c8d7;
    background: #ffffff;
    color: #172033;
    transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease, background .16s ease;
}

.payment-operation-tab:hover,
.payment-operation-tab:focus {
    border-color: #0891b2;
    background: #f2fbfd;
    box-shadow: 0 8px 20px rgba(8, 145, 178, .1);
}

.payment-operation-tab.is-active {
    border-color: #07859f;
    background: linear-gradient(135deg, #0788a7, #10a99d);
    color: #ffffff;
    box-shadow: 0 12px 28px rgba(8, 145, 178, .26);
}

.payment-operation-tab strong {
    font-size: 15px;
}

.payment-operation-tab small {
    color: #5a6b80;
}

.payment-focus {
    padding: 14px;
}

.payment-focus legend {
    padding: 0 8px;
    font-size: 15px;
    color: #0f172a;
}

.payment-sale-grid {
    gap: 12px;
}

.payment-plan-field,
.payment-plan-payment-block,
.payment-summary-grid,
.payment-details-grid {
    border-color: #d4e0ea;
    background: #ffffff;
}

.payment-plan-field {
    gap: 9px;
    padding: 13px 14px;
    margin-bottom: 2px;
}

.payment-plan-field + .payment-plan-payment-block {
    margin-top: 4px;
}

.payment-plan-payment-block {
    grid-column: 1 / -1;
    display: grid;
    gap: 10px;
    padding: 13px 14px;
    border: 1px solid #d4e0ea;
    border-radius: 8px;
}

.payment-sale-grid > .payment-plan-payment-block {
    order: 3;
}

.payment-plan-payment-block > .payment-section-title {
    order: 1;
}

.payment-plan-payment-block > .payment-summary-grid {
    order: 2;
}

.payment-plan-payment-block > .payment-details-grid {
    order: 3;
}

.payment-plan-payment-block > .payment-amount-field {
    order: 4;
    width: min(420px, 100%);
}

.payment-plan-payment-block + .immediate-plan-summary,
.payment-plan-payment-block + .alert.warning {
    margin-top: 2px;
}

.payment-section-title {
    gap: 2px;
}

.payment-section-title strong {
    font-size: 16px;
    color: #0f172a;
}

.plan-quick-picks {
    gap: 7px;
}

.plan-quick-chip {
    min-height: 30px;
    padding: 0 12px;
    border-color: #9bd8e3;
    background: #e9f9fc;
    color: #075985;
    font-size: 12px;
}

.plan-quick-chip.is-selected,
.plan-quick-chip:hover {
    border-color: #0788a7;
    background: linear-gradient(135deg, #0788a7, #10a99d);
    color: #ffffff;
    box-shadow: 0 6px 16px rgba(8, 145, 178, .18);
}

.payment-form input,
.payment-form select,
.payment-form textarea {
    min-height: 38px;
    padding: 8px 10px;
    border-color: #b9c8d6;
    border-radius: 7px;
    background: #ffffff;
    color: #0f172a;
}

.payment-form input:focus,
.payment-form select:focus,
.payment-form textarea:focus,
.plan-search-control input:focus {
    outline: 0;
    border-color: #0891b2;
    box-shadow: 0 0 0 3px rgba(8, 145, 178, .14);
}

.plan-search-control input {
    min-height: 38px;
    border-color: #b9c8d6;
}

.payment-summary-grid {
    padding: 10px;
    gap: 10px;
    border: 0;
    border-bottom: 1px solid #dce6ee;
    border-radius: 0;
    background: transparent;
    padding: 0 0 11px;
}

.readonly-summary-field {
    min-height: 86px;
    padding: 13px 15px;
    border-color: #d1dbe7;
    background: #ffffff;
    box-shadow: 0 1px 0 rgba(15, 23, 42, .03);
}

.readonly-summary-field span {
    font-size: 11px;
}

.readonly-summary-field strong {
    font-size: 21px;
    color: #06192f;
}

#paymentValueDisplay {
    color: #04766e;
}

.readonly-summary-field small {
    font-size: 11px;
    line-height: 1.25;
}

.payment-details-grid {
    padding: 0;
    gap: 10px;
    border: 0;
    background: transparent;
}

.payment-details-grid > label {
    grid-template-rows: auto 38px minmax(15px, auto);
}

.payment-form label {
    gap: 6px;
    font-size: 12px;
    font-weight: 800;
}

.payment-form small {
    font-size: 11px;
    line-height: 1.25;
}

.immediate-plan-summary {
    padding: 12px 14px;
    gap: 9px;
    border-color: #f3bd67;
    background: #fff8e8;
}

.immediate-plan-summary strong {
    color: #0f172a;
}

.immediate-plan-summary p {
    color: #6f4d17;
}

.group-members-section {
    padding: 13px 14px;
    border-color: #9bd8e3;
    background: #eef7fa;
}

.group-members-section legend {
    padding: 0 8px;
    color: #0f172a;
}

.group-members-header {
    gap: 6px;
}

.group-members-header > div {
    display: flex;
    align-items: baseline;
    gap: 6px;
    flex-wrap: wrap;
}

.group-member-list {
    gap: 7px;
}

.group-member-chip,
.group-member-result {
    min-height: 48px;
    padding: 8px 10px;
    border-color: #d1dbe7;
    background: #ffffff;
}

.group-member-chip strong,
.group-member-result strong {
    font-size: 14px;
    color: #0f172a;
}

.group-member-chip .badge {
    padding: 5px 9px;
    background: #d9f7ef;
    color: #087466;
    border: 1px solid #a9e7d8;
}

.group-member-chip .danger-link {
    padding: 6px 10px;
    border-radius: 7px;
    background: #fff1f2;
    color: #be123c;
    text-decoration: none;
}

.group-member-search {
    gap: 8px;
    margin-top: 9px;
}

.group-member-search input:disabled {
    background: #eef2f7;
    color: #6b7280;
    border-style: dashed;
}

.payment-form > .actions {
    margin: 0;
    padding-top: 2px;
}

.payment-form > .actions button[type="submit"] {
    min-height: 40px;
    padding: 10px 18px;
    border-radius: 8px;
    background: linear-gradient(135deg, #0788a7, #10a99d);
    box-shadow: 0 10px 22px rgba(8, 145, 178, .22);
}

.payment-form > .actions .button.secondary {
    min-height: 40px;
    padding: 10px 16px;
    border: 1px solid #cbd5e1;
    background: #e5eaf0;
    color: #0f172a;
    box-shadow: none;
}

.payment-form .group-delete-panel {
    padding: 12px 14px;
    border-color: #fecb8b;
    background: #fff7ed;
}

.payment-form .group-delete-panel strong {
    color: #9a3412;
}

.payment-form .group-delete-panel p {
    color: #7c2d12;
}

.payment-form .payment-focus + .group-members-section {
    margin-top: 4px;
}

@media (max-height: 820px) and (min-width: 1000px) {
    .content:has(.payment-form) {
        padding-top: 14px;
        padding-bottom: 12px;
    }

    .content:has(.payment-form) .topbar {
        min-height: 44px;
        margin-bottom: 8px;
    }

    .content:has(.payment-form) .topbar h1 {
        font-size: 23px;
    }

    .payment-form {
        gap: 9px;
        padding: 12px;
    }

    .payment-form .payment-client-summary {
        min-height: 64px;
        padding: 10px 12px;
    }

    .payment-form .payment-client-summary strong {
        font-size: 20px;
    }

    .payment-form > .payment-operation-field {
        padding: 9px 12px 8px;
        margin-bottom: -5px;
    }

    .payment-operation-tab {
        min-height: 50px;
        padding: 8px 12px;
    }

    .payment-operation-tab strong {
        font-size: 14px;
    }

    .payment-focus,
    .group-members-section {
        padding: 11px 12px;
    }

    .payment-sale-grid {
        gap: 9px;
    }

    .payment-plan-field {
        padding: 10px 12px;
    }

    .payment-plan-payment-block {
        padding: 10px 12px;
        gap: 8px;
    }

    .payment-summary-grid,
    .payment-details-grid {
        padding: 0;
    }

    .payment-summary-grid {
        padding-bottom: 9px;
    }

    .readonly-summary-field {
        min-height: 72px;
        padding: 10px 12px;
        gap: 5px;
    }

    .readonly-summary-field strong {
        font-size: 19px;
    }

    .payment-form input,
    .payment-form select,
    .payment-form textarea,
    .plan-search-control input {
        min-height: 36px;
    }

    .payment-details-grid > label {
        grid-template-rows: auto 36px minmax(13px, auto);
    }

    .immediate-plan-summary {
        padding: 10px 12px;
    }

    .group-member-chip,
    .group-member-result {
        min-height: 42px;
        padding: 7px 9px;
    }
}

@media (max-width: 1100px) {
    .payment-details-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .payment-operation-tabs,
    .payment-summary-grid {
        grid-template-columns: 1fr;
    }

    .payment-details-grid {
        grid-template-columns: 1fr;
    }
}

/* Dark payment screen: navy surfaces, turquoise focus, strong readability. */
body.dark-mode .content:has(.payment-form) {
    --dark-bg: #071923;
    --dark-surface: #0f2430;
    --dark-card: #162f3d;
    --dark-card-soft: #1d3a49;
    --dark-border: rgba(148, 214, 225, .22);
    --dark-border-strong: rgba(148, 214, 225, .34);
    --dark-text: #f3f8fb;
    --dark-muted: #b8cbd4;
    --primary: #00b7c2;
    --primary-strong: #00d4c7;
    background: radial-gradient(circle at 30% 0, rgba(0, 183, 194, .12), transparent 34%), var(--dark-bg);
}

body.dark-mode .content:has(.payment-form) .topbar {
    min-height: 62px;
    margin-bottom: 12px;
    padding-top: 10px;
    padding-bottom: 10px;
    background: rgba(7, 25, 35, .86);
    border-bottom-color: rgba(148, 214, 225, .16);
}

body.dark-mode .content:has(.payment-form) .topbar h1 {
    color: var(--dark-text);
    line-height: 1.2;
}

body.dark-mode .payment-form {
    border-color: var(--dark-border);
    background: linear-gradient(180deg, rgba(15, 36, 48, .98), rgba(10, 29, 39, .98));
    box-shadow: 0 18px 48px rgba(0, 0, 0, .32);
}

body.dark-mode .payment-form .payment-client-summary,
body.dark-mode .payment-plan-field,
body.dark-mode .payment-plan-payment-block,
body.dark-mode .payment-summary-grid,
body.dark-mode .payment-details-grid,
body.dark-mode .group-members-section {
    border-color: var(--dark-border);
    background: var(--dark-surface);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .035), 0 10px 28px rgba(0, 0, 0, .14);
}

body.dark-mode .payment-form .payment-client-summary strong,
body.dark-mode .payment-form .payment-section-title strong,
body.dark-mode .payment-form legend,
body.dark-mode .readonly-summary-field strong,
body.dark-mode .immediate-plan-summary strong,
body.dark-mode .group-member-chip strong,
body.dark-mode .group-member-result strong {
    color: var(--dark-text);
}

body.dark-mode .payment-form .payment-client-summary span,
body.dark-mode .payment-form .payment-section-title span,
body.dark-mode .payment-form .payment-operation-field > span,
body.dark-mode .payment-form label,
body.dark-mode .readonly-summary-field span,
body.dark-mode .immediate-plan-summary span,
body.dark-mode .group-members-header strong {
    color: #d7e7ee;
}

body.dark-mode .payment-form .payment-client-summary small,
body.dark-mode .payment-form small,
body.dark-mode .payment-form .readonly-summary-field small,
body.dark-mode .payment-form .group-member-chip small,
body.dark-mode .payment-form .group-member-result span {
    color: var(--dark-muted);
}

body.dark-mode .payment-form > .payment-operation-field {
    border-color: rgba(0, 212, 199, .28);
    background:
        linear-gradient(135deg, rgba(0, 183, 194, .18), rgba(0, 212, 199, .1)),
        var(--dark-surface);
    box-shadow: 0 14px 34px rgba(0, 0, 0, .24), inset 0 1px 0 rgba(255, 255, 255, .04);
}

body.dark-mode .payment-form > .payment-operation-field + .payment-focus {
    border-color: rgba(0, 212, 199, .24);
    background: #0b202b;
}

body.dark-mode .payment-operation-tab {
    border-color: var(--dark-border);
    background: var(--dark-card);
    color: var(--dark-text);
}

body.dark-mode .payment-operation-tab small {
    color: var(--dark-muted);
}

body.dark-mode .payment-operation-tab:hover,
body.dark-mode .payment-operation-tab:focus {
    border-color: rgba(0, 212, 199, .48);
    background: var(--dark-card-soft);
    box-shadow: 0 10px 24px rgba(0, 183, 194, .12);
}

body.dark-mode .payment-operation-tab.is-active {
    border-color: rgba(0, 212, 199, .62);
    background: linear-gradient(135deg, #008fa1, #00c2b3);
    color: #ffffff;
    box-shadow: 0 12px 32px rgba(0, 183, 194, .26), 0 0 0 1px rgba(255, 255, 255, .04) inset;
}

body.dark-mode .payment-operation-tab.is-active small {
    color: rgba(255, 255, 255, .88);
}

body.dark-mode .payment-focus {
    border-color: rgba(0, 212, 199, .22);
    background: #0b202b;
}

body.dark-mode .plan-quick-chip {
    border-color: rgba(0, 212, 199, .28);
    background: rgba(0, 183, 194, .12);
    color: #bffcff;
}

body.dark-mode .plan-quick-chip.is-selected,
body.dark-mode .plan-quick-chip:hover {
    border-color: rgba(0, 212, 199, .7);
    background: linear-gradient(135deg, #008fa1, #00c2b3);
    color: #ffffff;
    box-shadow: 0 8px 20px rgba(0, 183, 194, .22);
}

body.dark-mode .payment-form input,
body.dark-mode .payment-form select,
body.dark-mode .payment-form textarea,
body.dark-mode .plan-search-control input {
    border-color: var(--dark-border-strong);
    background: #0b1f2a;
    color: var(--dark-text);
}

body.dark-mode .payment-form input::placeholder,
body.dark-mode .payment-form textarea::placeholder,
body.dark-mode .plan-search-control input::placeholder {
    color: #90a9b5;
}

body.dark-mode .payment-form input:focus,
body.dark-mode .payment-form select:focus,
body.dark-mode .payment-form textarea:focus,
body.dark-mode .plan-search-control input:focus {
    border-color: var(--primary-strong);
    box-shadow: 0 0 0 3px rgba(0, 212, 199, .16);
}

body.dark-mode .plan-search-clear {
    color: #a9c4cf;
}

body.dark-mode .plan-picker-list {
    border-color: var(--dark-border-strong);
    background: #0b1f2a;
    box-shadow: 0 18px 44px rgba(0, 0, 0, .42);
}

body.dark-mode .plan-picker-option {
    color: var(--dark-text);
}

body.dark-mode .plan-picker-option:hover,
body.dark-mode .plan-picker-option:focus,
body.dark-mode .plan-picker-option.is-selected {
    border-color: rgba(0, 212, 199, .34);
    background: rgba(0, 183, 194, .12);
}

body.dark-mode .plan-picker-option small,
body.dark-mode .plan-picker-empty {
    color: var(--dark-muted);
}

body.dark-mode .readonly-summary-field {
    border-color: var(--dark-border);
    background: var(--dark-card);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .035);
}

body.dark-mode #paymentValueDisplay {
    color: var(--primary-strong);
}

body.dark-mode .payment-details-grid {
    background: var(--dark-surface);
}

body.dark-mode .payment-plan-payment-block {
    border-color: var(--dark-border);
    background: var(--dark-surface);
}

body.dark-mode .payment-plan-payment-block .payment-summary-grid {
    border-bottom-color: rgba(148, 214, 225, .18);
    background: transparent;
}

body.dark-mode .payment-plan-payment-block .payment-details-grid {
    background: transparent;
}

body.dark-mode .immediate-plan-summary {
    border-color: rgba(251, 191, 36, .42);
    background: rgba(120, 73, 20, .28);
}

body.dark-mode .immediate-plan-summary p {
    color: #f6d99d;
}

body.dark-mode .group-members-section {
    background: #0b202b;
}

body.dark-mode .group-member-chip,
body.dark-mode .group-member-result {
    border-color: var(--dark-border);
    background: var(--dark-card);
}

body.dark-mode .group-member-chip .badge {
    border-color: rgba(0, 212, 199, .3);
    background: rgba(0, 183, 194, .18);
    color: #bffcff;
}

body.dark-mode .group-member-chip .danger-link {
    background: rgba(190, 18, 60, .18);
    color: #fecdd3;
}

body.dark-mode .group-member-search input:disabled {
    border-color: rgba(148, 214, 225, .15);
    background: rgba(11, 31, 42, .68);
    color: #8eabb7;
}

body.dark-mode .payment-form > .actions button[type="submit"] {
    background: linear-gradient(135deg, #008fa1, #00d4c7);
    box-shadow: 0 12px 28px rgba(0, 183, 194, .28);
}

body.dark-mode .payment-form > .actions button[type="submit"]:hover {
    background: linear-gradient(135deg, #00a8bb, #17e6d9);
    box-shadow: 0 14px 34px rgba(0, 212, 199, .32);
}

body.dark-mode .payment-form > .actions .button.secondary {
    border-color: var(--dark-border);
    background: var(--dark-card);
    color: var(--dark-text);
}

body.dark-mode .payment-form > .actions .button.secondary:hover {
    border-color: rgba(0, 212, 199, .34);
    background: var(--dark-card-soft);
}

body.dark-mode .payment-form .group-delete-panel {
    border-color: rgba(251, 113, 133, .32);
    background: rgba(88, 28, 35, .36);
}

body.dark-mode .payment-form .group-delete-panel strong {
    color: #fecdd3;
}

body.dark-mode .payment-form .group-delete-panel p {
    color: #fda4af;
}

@media (max-height: 820px) and (min-width: 1000px) {
    body.dark-mode .content:has(.payment-form) .topbar {
        min-height: 54px;
        padding-top: 8px;
        padding-bottom: 8px;
    }
}

/* Keep the plan editor independent from the global dark/light surface rules. */
.settings-modal-card .settings-plan-form,
.settings-modal-card .settings-plan-form-title,
.settings-modal-card .settings-plan-form-body,
.settings-modal-card .settings-plan-form-footer {
    background-color: #ffffff;
    color: #1f2933;
}

.settings-modal-card .settings-plan-card {
    background: #f8fafc;
}

.settings-modal-card .settings-plan-form label,
.settings-modal-card .settings-plan-form legend {
    color: #475569;
}

.settings-modal-card .settings-plan-form small,
.settings-modal-card .settings-plan-form-title p {
    color: #64748b;
}

.settings-modal-card .settings-plan-form input,
.settings-modal-card .settings-plan-form select,
.settings-modal-card .settings-plan-form textarea {
    height: 44px;
    min-height: 44px;
    background: #ffffff;
    color: #1f2933;
}

.settings-modal-card .plan-code-field input {
    background: #eef2f7;
    color: #64748b;
}
