:root {
    --app-bg: #eef6f3;
    --app-surface: #ffffff;
    --app-elevated: #e5e7eb;
    --app-border: #d1d5db;
    --app-text: #1c1917;
    --app-text-muted: #57534e;
    --app-accent: #2cc5a0;
    --app-accent-hover: #239e80;
    --app-accent-soft: #7ee0c4;
    --app-accent-tint: #d8f5ec;
    --app-on-accent: #111827;
}
.dark {
    --app-elevated: color-mix(in srgb, var(--app-surface) 78%, #ffffff);
}

/* ==========================================================================
   Fixed Semantic Status Indicators — NEVER change with brand theme
   ========================================================================== */
.status-badge-active,
.badge-active {
    background-color: #dcfce7 !important;
    color: #15803d !important;
    border: 1px solid #bbf7d0 !important;
}
.dark .status-badge-active,
.dark .badge-active {
    background-color: rgba(20, 83, 45, 0.45) !important;
    color: #86efac !important;
    border: 1px solid rgba(34, 197, 94, 0.3) !important;
}

.status-badge-pending,
.badge-pending {
    background-color: #fef3c7 !important;
    color: #b45309 !important;
    border: 1px solid #fde68a !important;
}
.dark .status-badge-pending,
.dark .badge-pending {
    background-color: rgba(180, 83, 9, 0.35) !important;
    color: #fde68a !important;
    border: 1px solid rgba(245, 158, 11, 0.3) !important;
}

.status-badge-expired,
.status-badge-error,
.badge-expired,
.badge-error {
    background-color: #fee2e2 !important;
    color: #b91c1c !important;
    border: 1px solid #fecaca !important;
}
.dark .status-badge-expired,
.dark .status-badge-error,
.dark .badge-expired,
.dark .badge-error {
    background-color: rgba(185, 28, 28, 0.35) !important;
    color: #fca5a5 !important;
    border: 1px solid rgba(239, 68, 68, 0.3) !important;
}

.status-badge-neutral,
.badge-neutral {
    background-color: #f1f5f9 !important;
    color: #475569 !important;
    border: 1px solid #e2e8f0 !important;
}
.dark .status-badge-neutral,
.dark .badge-neutral {
    background-color: rgba(51, 65, 85, 0.4) !important;
    color: #cbd5e1 !important;
    border: 1px solid rgba(100, 116, 139, 0.3) !important;
}

.status-dot-active {
    background-color: #16a34a !important;
}
.status-dot-pending {
    background-color: #d97706 !important;
}
.status-dot-expired,
.status-dot-error {
    background-color: #dc2626 !important;
}

.status-border-active {
    border-left-color: #16a34a !important;
}
.status-border-pending {
    border-left-color: #d97706 !important;
}
.status-border-expired,
.status-border-error {
    border-left-color: #dc2626 !important;
}

.status-text-active {
    color: #15803d !important;
}
.dark .status-text-active {
    color: #86efac !important;
}

.status-text-pending {
    color: #b45309 !important;
}
.dark .status-text-pending {
    color: #fde68a !important;
}

.status-text-expired,
.status-text-error {
    color: #b91c1c !important;
}
.dark .status-text-expired,
.dark .status-text-error {
    color: #fca5a5 !important;
}

.alert-success {
    background-color: #f0fdf4 !important;
    border: 1px solid #bbf7d0 !important;
    color: #166534 !important;
}
.dark .alert-success {
    background-color: rgba(20, 83, 45, 0.3) !important;
    border: 1px solid rgba(34, 197, 94, 0.3) !important;
    color: #86efac !important;
}

.alert-error {
    background-color: #fef2f2 !important;
    border: 1px solid #fecaca !important;
    color: #991b1b !important;
}
.dark .alert-error {
    background-color: rgba(127, 29, 29, 0.3) !important;
    border: 1px solid rgba(239, 68, 68, 0.3) !important;
    color: #fca5a5 !important;
}

/* ==========================================================================
   Brand Buttons & Controls — Follow the dynamic brand palette
   ========================================================================== */
.btn-primary,
.btn-brand,
.bg-green-600,
.bg-green-700 {
    background-color: var(--app-accent) !important;
    color: var(--app-on-accent) !important;
}
.btn-primary:hover,
.btn-brand:hover,
.hover\:bg-green-700:hover {
    background-color: var(--app-accent-hover) !important;
    color: var(--app-on-accent) !important;
}
.btn-primary svg,
.btn-brand svg,
.bg-green-600 svg,
.bg-green-700 svg {
    color: inherit;
    stroke: currentColor;
}

/* App-specific overrides (Tailwind handles most styling) */
:root {
    --touch-min-height: 44px;
    --chip-h: 32px;
    --chip-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%239ca3af' stroke-width='2.4'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19 9l-7 7-7-7'/%3E%3C/svg%3E");
}

input, button, select {
    min-height: var(--touch-min-height);
}

.sub-card-btn {
    min-height: 30px !important;
    height: 30px;
    box-sizing: border-box;
}

/* Dense toolbars / plan editors — allow sub-44px controls (mobile lists stay readable via row tap targets) */
.ui-dense button,
.ui-dense a.btn-brand,
.ui-dense summary {
    min-height: 0 !important;
}
.ui-dense input:not([type="checkbox"]):not([type="radio"]),
.ui-dense select,
.ui-dense textarea {
    min-height: 0 !important;
}

@media (min-width: 640px) {
    .plan-info-disclosure > summary {
        display: none;
    }
    .plan-info-disclosure {
        border: 0;
    }
}

/* Subscription action buttons & load more: follow active brand theme tokens */
.sub-card-btn,
.sub-edit-btn,
.sub-load-more-btn {
    background-color: var(--app-surface);
    border: 1px solid var(--app-border);
    color: var(--app-text);
    cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.sub-card-btn:hover,
.sub-edit-btn:hover,
.sub-load-more-btn:hover {
    background-color: color-mix(in srgb, var(--app-accent) 12%, var(--app-surface));
    border-color: var(--app-accent);
    color: var(--app-accent-hover, var(--app-accent));
}

.dark .sub-card-btn,
.dark .sub-edit-btn,
.dark .sub-load-more-btn {
    background-color: var(--app-elevated);
    border: 1px solid var(--app-border);
    color: var(--app-text);
}

.dark .sub-card-btn:hover,
.dark .sub-edit-btn:hover,
.dark .sub-load-more-btn:hover {
    background-color: color-mix(in srgb, var(--app-accent) 18%, var(--app-elevated));
    border-color: var(--app-accent);
    color: var(--app-accent-soft, var(--app-accent));
}

.sub-card-btn svg,
.sub-edit-btn svg,
.sub-load-more-btn svg {
    color: inherit;
    stroke: currentColor;
}

/* Subscriptions action dropdown menu items */
.sub-actions-dropdown {
    background-color: var(--app-surface) !important;
    border-color: var(--app-border) !important;
}

.sub-actions-dropdown button,
.sub-actions-dropdown a {
    color: var(--app-text) !important;
}

.sub-actions-dropdown button:hover,
.sub-actions-dropdown a:hover {
    background-color: color-mix(in srgb, var(--app-accent) 12%, var(--app-surface)) !important;
    color: var(--app-accent-hover, var(--app-accent)) !important;
}

.dark .sub-actions-dropdown {
    background-color: var(--app-surface) !important;
    border-color: var(--app-border) !important;
}

.dark .sub-actions-dropdown button:hover,
.dark .sub-actions-dropdown a:hover {
    background-color: color-mix(in srgb, var(--app-accent) 16%, var(--app-elevated)) !important;
    color: var(--app-accent-soft, var(--app-accent)) !important;
}

.class-card:has(.class-card-menu[open]) {
    position: relative;
    z-index: 40;
}

.class-card-menu[open] {
    z-index: 50;
}

.class-card-menu-panel {
    z-index: 60;
}

/* ==========================================================================
   Classes & Events Page Theme Styling
   ========================================================================== */
.classes-group {
    background-color: var(--app-surface);
    border: 1px solid var(--app-border);
    border-radius: 0.75rem;
    overflow: visible;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.classes-group.is-active {
    border-color: color-mix(in srgb, var(--app-accent) 26%, var(--app-border));
}
.classes-group.is-archive {
    border-color: var(--app-border);
    opacity: 0.95;
}
.dark .classes-group {
    background-color: var(--app-surface);
    border-color: var(--app-border);
}
.dark .classes-group.is-active {
    border-color: color-mix(in srgb, var(--app-accent) 32%, var(--app-border));
    box-shadow: 0 4px 20px -2px color-mix(in srgb, var(--app-accent) 6%, transparent);
}
.dark .classes-group.is-archive {
    border-color: var(--app-border);
}

.classes-group-header {
    background-color: color-mix(in srgb, var(--app-accent) 6%, var(--app-surface));
    border-bottom: 1px solid transparent;
    color: var(--app-text);
    cursor: pointer;
    border-top-left-radius: 0.75rem;
    border-top-right-radius: 0.75rem;
    transition: background-color 0.15s ease, border-color 0.15s ease;
}
.classes-group:not([open]) > .classes-group-header {
    border-bottom-left-radius: 0.75rem;
    border-bottom-right-radius: 0.75rem;
}
.classes-group[open] > .classes-group-header {
    border-bottom-color: var(--app-border);
}
.classes-group-header:hover {
    background-color: color-mix(in srgb, var(--app-accent) 11%, var(--app-surface));
}
.classes-group.is-archive .classes-group-header {
    background-color: var(--app-elevated);
}
.classes-group.is-archive .classes-group-header:hover {
    background-color: color-mix(in srgb, var(--app-text) 6%, var(--app-elevated));
}

.dark .classes-group-header {
    background-color: color-mix(in srgb, var(--app-accent) 12%, var(--app-surface));
    color: var(--app-text);
}
.dark .classes-group[open] > .classes-group-header {
    border-bottom-color: color-mix(in srgb, var(--app-accent) 24%, var(--app-border));
}
.dark .classes-group-header:hover {
    background-color: color-mix(in srgb, var(--app-accent) 18%, var(--app-surface));
}
.dark .classes-group.is-archive .classes-group-header {
    background-color: color-mix(in srgb, var(--app-surface) 82%, #000000);
}
.dark .classes-group.is-archive .classes-group-header:hover {
    background-color: color-mix(in srgb, var(--app-surface) 68%, #000000);
}

.classes-group.is-active .classes-group-kicker {
    color: var(--app-accent-hover, var(--app-accent)) !important;
}
.dark .classes-group.is-active .classes-group-kicker {
    color: var(--app-accent-soft, #cbd5e1) !important;
}
.classes-group.is-archive .classes-group-kicker {
    color: var(--app-text-muted);
}

.classes-group-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.4rem;
    height: 1.25rem;
    padding: 0 0.45rem;
    font-size: 0.75rem;
    font-weight: 700;
    border-radius: 9999px;
    line-height: 1;
    background-color: color-mix(in srgb, var(--app-accent) 15%, var(--app-surface));
    color: var(--app-accent-hover, var(--app-accent));
    border: 1px solid color-mix(in srgb, var(--app-accent) 30%, transparent);
}
.dark .classes-group-count {
    background-color: color-mix(in srgb, var(--app-accent) 30%, var(--app-surface));
    color: #ffffff !important;
    border-color: color-mix(in srgb, var(--app-accent) 55%, transparent);
}
.classes-group.is-archive .classes-group-count {
    background-color: var(--app-elevated);
    color: var(--app-text-muted);
    border-color: var(--app-border);
}
.dark .classes-group.is-archive .classes-group-count {
    background-color: color-mix(in srgb, var(--app-elevated) 35%, var(--app-surface));
    color: var(--app-text-muted);
    border-color: var(--app-border);
}

.classes-group-chevron {
    color: var(--app-text-muted);
    transition: transform 0.2s ease, color 0.15s ease;
}
.classes-group-header:hover .classes-group-chevron {
    color: var(--app-accent);
}

.app-page .class-card {
    background-color: var(--app-surface);
    border: 1px solid var(--app-border) !important;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
.app-page .class-card:hover {
    box-shadow: 0 4px 14px -2px rgba(0, 0, 0, 0.07);
}
.dark .app-page .class-card {
    background-color: color-mix(in srgb, var(--app-elevated) 38%, var(--app-surface));
    border-color: var(--app-border) !important;
}
.dark .app-page .class-card:hover {
    border-color: color-mix(in srgb, var(--app-accent) 40%, var(--app-border)) !important;
    box-shadow: 0 4px 16px -2px color-mix(in srgb, var(--app-accent) 12%, transparent);
}

.class-card-stripe-brand {
    border-left-color: var(--app-accent) !important;
}

.class-badge-brand {
    background-color: color-mix(in srgb, var(--app-accent) 12%, var(--app-surface)) !important;
    color: var(--app-accent-hover, var(--app-accent)) !important;
    border: 1px solid color-mix(in srgb, var(--app-accent) 25%, transparent) !important;
}
.dark .class-badge-brand {
    background-color: color-mix(in srgb, var(--app-accent) 20%, var(--app-surface)) !important;
    color: var(--app-accent-soft, var(--app-accent)) !important;
    border: 1px solid color-mix(in srgb, var(--app-accent) 35%, transparent) !important;
}

.class-card-menu-panel {
    background-color: var(--app-surface) !important;
    border-color: var(--app-border) !important;
}
.class-card-menu-panel button,
.class-card-menu-panel a {
    color: var(--app-text) !important;
    transition: background-color 0.15s ease;
}
.class-card-menu-panel button:hover,
.class-card-menu-panel a:hover {
    background-color: color-mix(in srgb, var(--app-accent) 12%, var(--app-surface)) !important;
}
.dark .class-card-menu-panel {
    background-color: var(--app-elevated) !important;
    border-color: var(--app-border) !important;
}
.dark .class-card-menu-panel button:hover,
.dark .class-card-menu-panel a:hover {
    background-color: color-mix(in srgb, var(--app-accent) 18%, var(--app-elevated)) !important;
}
.class-card-menu-brand-icon {
    color: var(--app-accent) !important;
}

.plan-row:has(.plan-row-menu[open]) {
    position: relative;
    z-index: 40;
}

.plan-list:has(.plan-row-menu[open]) {
    z-index: 30;
}

.plan-row-menu[open] {
    z-index: 50;
}

.toolbar-kicker {
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #4b5563;
    line-height: 1;
    margin-bottom: 0.35rem;
}

.dark .toolbar-kicker {
    color: #cbd5e1 !important;
}

/* Rounded filter pills — strip native select chrome so they stay readable when small */
select.chip,
button.chip,
a.chip,
span.chip {
    appearance: none;
    -webkit-appearance: none;
    min-height: var(--chip-h) !important;
    height: var(--chip-h);
    padding: 0 0.7rem;
    border-radius: 999px;
    border: 1px solid rgb(229 231 235);
    background-color: rgb(243 244 246);
    color: rgb(17 24 39);
    font-size: 12px;
    font-weight: 500;
    line-height: var(--chip-h);
    max-width: 100%;
    box-shadow: none;
}

select.chip {
    padding-right: 1.55rem;
    background-image: var(--chip-chevron);
    background-repeat: no-repeat;
    background-position: right 0.5rem center;
    background-size: 11px;
    text-overflow: ellipsis;
}

button.chip,
a.chip,
span.chip {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: 0.3rem;
    line-height: 1;
    padding-right: 0.65rem;
}

button.chip.has-caret {
    padding-right: 1.55rem;
    background-image: var(--chip-chevron);
    background-repeat: no-repeat;
    background-position: right 0.5rem center;
    background-size: 11px;
}

.dark select.chip,
.dark button.chip,
.dark a.chip,
.dark span.chip {
    background-color: var(--app-surface);
    border-color: var(--app-border);
    color: rgb(243 244 246);
}

a.chip:hover,
button.chip:hover {
    background-color: rgb(229 231 235);
}

.dark a.chip:hover,
.dark button.chip:hover {
    background-color: var(--app-elevated);
}

select.chip.chip-on,
button.chip.chip-on,
a.chip.chip-on,
span.chip.chip-on {
    border-color: rgb(34 197 94);
    background-color: rgb(220 252 231);
    color: rgb(22 101 52);
}

.dark select.chip.chip-on,
.dark button.chip.chip-on,
.dark a.chip.chip-on,
.dark span.chip.chip-on {
    background-color: rgb(20 83 45 / 0.45);
    border-color: rgb(74 222 128);
    color: rgb(187 247 208);
}


/* Sort is one connected control — brand-tinted so it matches the palette */
.sort-cluster {
    display: inline-flex;
    align-items: stretch;
    height: var(--chip-h);
    border-radius: 999px;
    overflow: hidden;
    background: var(--app-accent-tint);
    border: 1px solid color-mix(in srgb, var(--app-accent) 28%, var(--app-border));
}

.dark .sort-cluster {
    background: var(--app-elevated);
    border-color: var(--app-border);
}

.sort-cluster select.sort-chip {
    appearance: none;
    -webkit-appearance: none;
    min-height: var(--chip-h) !important;
    height: var(--chip-h);
    border: 0;
    border-radius: 0;
    background-color: transparent;
    background-image: var(--chip-chevron);
    background-repeat: no-repeat;
    background-position: right 0.45rem center;
    background-size: 11px;
    color: var(--app-accent-hover);
    font-size: 12px;
    font-weight: 600;
    padding: 0 1.5rem 0 0.75rem;
    min-width: 7.25rem;
    max-width: 9.5rem;
}

.dark .sort-cluster select.sort-chip {
    color: var(--app-accent-soft);
}

.sort-cluster .sort-dir {
    width: var(--chip-h);
    min-width: var(--chip-h);
    min-height: var(--chip-h) !important;
    height: var(--chip-h);
    border: 0;
    border-left: 1px solid color-mix(in srgb, var(--app-accent) 40%, transparent);
    border-radius: 0;
    background: transparent;
    color: var(--app-accent);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    text-decoration: none;
}

.dark .sort-cluster .sort-dir {
    border-left-color: var(--app-border);
    color: var(--app-accent-soft);
}

/* Members status filter — same 32px pill language */
.seg {
    display: inline-flex;
    align-items: center;
    height: var(--chip-h);
    padding: 2px;
    border-radius: 999px;
    background: rgb(243 244 246);
    border: 1px solid rgb(229 231 235);
}

.dark .seg {
    background: var(--app-surface);
    border-color: var(--app-border);
}

.seg a,
.seg button {
    min-height: 0 !important;
    height: 26px;
    padding: 0 0.7rem;
    border: 0;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 500;
    display: inline-flex;
    align-items: center;
    color: rgb(75 85 99);
    text-decoration: none;
    background: transparent;
    cursor: pointer;
}

.dark .seg a,
.dark .seg button {
    color: rgb(156 163 175);
}

.seg a.is-on,
.seg button.is-on {
    background: #fff;
    color: rgb(17 24 39);
    box-shadow: 0 1px 2px rgb(0 0 0 / 0.08);
}

.dark .seg a.is-on,
.dark .seg button.is-on {
    background: var(--app-elevated);
    color: rgb(243 244 246);
    box-shadow: none;
}

.seg-count {
    margin-left: 0.3rem;
    font-variant-numeric: tabular-nums;
    font-weight: 650;
    opacity: 0.72;
    font-size: 11px;
}

.members-filters {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    flex-wrap: nowrap;
    min-width: 0;
}
.members-filters .seg {
    flex: 1 1 auto;
    min-width: 0;
}
.members-filters .seg button {
    padding: 0 0.5rem;
}
.members-filters #sortWrap {
    flex: 0 0 auto;
}

/* Members list */
.members-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    background: transparent;
    border: 0;
    border-radius: 0;
    overflow: visible;
}
.dark .members-list {
    background: transparent;
    border-color: transparent;
}
.members-row {
    display: flex;
    align-items: stretch;
    gap: 0.15rem;
    background: var(--app-surface);
    border: 1px solid rgb(229 231 235);
    border-radius: 0.75rem;
    overflow: hidden;
    box-shadow: 0 1px 2px rgb(15 23 42 / 0.04);
}
.dark .members-row {
    background: var(--app-surface);
    border-color: var(--app-border);
    box-shadow: none;
}
.members-row:last-child { border-bottom: 1px solid rgb(229 231 235); }
.dark .members-row:last-child { border-bottom-color: var(--app-border); }
.members-row-main {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 0.7rem;
    padding: 0.7rem 0.8rem;
    text-decoration: none;
    color: inherit;
}
.members-row-main:hover { background: rgb(249 250 251); }
.dark .members-row-main:hover { background: rgb(55 65 81 / 0.45); }
.members-avatar {
    flex-shrink: 0;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    background: rgb(243 244 246);
    color: rgb(75 85 99);
}
.dark .members-avatar {
    background: var(--app-elevated);
    color: rgb(209 213 219);
}
.members-avatar.is-active {
    background: rgb(220 252 231);
    color: rgb(21 128 61);
}
.dark .members-avatar.is-active {
    background: rgb(20 83 45 / 0.45);
    color: rgb(134 239 172);
}
.members-avatar.is-inactive {
    background: rgb(254 226 226);
    color: rgb(185 28 28);
}
.dark .members-avatar.is-inactive {
    background: rgb(127 29 29 / 0.35);
    color: rgb(252 165 165);
}
.members-row-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.12rem;
}
.members-row-top {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    min-width: 0;
}
.members-name {
    font-size: 0.9rem;
    font-weight: 650;
    color: rgb(17 24 39);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.dark .members-name { color: rgb(243 244 246); }
.members-status {
    flex-shrink: 0;
    font-size: 0.65rem;
    font-weight: 700;
    padding: 0.1rem 0.45rem;
    border-radius: 999px;
    line-height: 1.35;
}
.members-status.is-active {
    background: rgb(220 252 231);
    color: rgb(21 128 61);
}
.dark .members-status.is-active {
    background: rgb(20 83 45 / 0.45);
    color: rgb(134 239 172);
}
.members-status.is-inactive {
    background: rgb(254 226 226);
    color: rgb(185 28 28);
}
.dark .members-status.is-inactive {
    background: rgb(127 29 29 / 0.35);
    color: rgb(252 165 165);
}
.members-row-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 0.55rem;
    font-size: 0.72rem;
    color: rgb(107 114 128);
    line-height: 1.3;
}
.dark .members-row-meta { color: rgb(156 163 175); }
.members-contact {
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}
.members-plan { font-weight: 600; color: rgb(55 65 81); }
.dark .members-plan { color: rgb(209 213 219); }
.members-plan-info { font-weight: 500; color: rgb(107 114 128); }
.dark .members-plan-info { color: rgb(156 163 175); }
.members-expiry {
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.3;
}
.members-row-side {
    display: none;
    flex-direction: column;
    align-items: flex-end;
    justify-content: center;
    gap: 0.15rem;
    text-align: right;
    flex-shrink: 0;
    max-width: 12rem;
    padding-right: 0.15rem;
}
.members-expiry-side {
    font-size: 0.78rem;
    font-weight: 650;
    line-height: 1.25;
}
.members-plan-side {
    font-size: 0.68rem;
    color: rgb(107 114 128);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}
.dark .members-plan-side { color: rgb(156 163 175); }
.members-row-actions {
    display: flex;
    align-items: center;
    gap: 0.1rem;
    padding: 0.35rem 0.45rem 0.35rem 0;
    flex-shrink: 0;
}
.members-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border: 0;
    border-radius: 0.55rem;
    background: transparent;
    color: rgb(107 114 128);
    cursor: pointer;
    text-decoration: none;
}
.members-action:hover {
    background: rgb(243 244 246);
    color: rgb(17 24 39);
}
.dark .members-action { color: rgb(156 163 175); }
.dark .members-action:hover {
    background: var(--app-elevated);
    color: rgb(243 244 246);
}
.members-action svg { width: 1.05rem; height: 1.05rem; }
.members-empty {
    padding: 2rem 1rem;
    text-align: center;
    background: #fff;
    border: 1px solid rgb(229 231 235);
    border-radius: 0.85rem;
    color: rgb(107 114 128);
}
.dark .members-empty {
    background: var(--app-surface);
    border-color: var(--app-border);
    color: rgb(156 163 175);
}
.members-more {
    text-align: center;
    margin-top: 0.85rem;
}
.members-more-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.55rem 1.1rem;
    border-radius: 0.65rem;
    border: 1px solid rgb(209 213 219);
    background: rgb(249 250 251);
    color: rgb(55 65 81);
    font-size: 0.82rem;
    font-weight: 600;
    cursor: pointer;
}
.dark .members-more-btn {
    border-color: rgb(75 85 99);
    background: var(--app-elevated);
    color: rgb(209 213 219);
}
.members-more-btn:hover { filter: brightness(0.97); }
.members-more-hint {
    margin-top: 0.4rem;
    font-size: 0.72rem;
    color: rgb(156 163 175);
}
.members-more-hint--solo {
    text-align: center;
    margin-top: 0.75rem;
}

@media (min-width: 640px) {
    .members-row-main { padding: 0.7rem 0.9rem; }
    .members-row-side { display: flex; }
    .members-expiry { display: none; }
    .members-row-meta .members-plan { display: none; }
    .members-avatar { width: 2.4rem; height: 2.4rem; font-size: 0.75rem; }
}

.seg.is-fill {
    display: flex;
    width: 100%;
}

.seg.is-fill a,
.seg.is-fill button {
    flex: 1;
    justify-content: center;
}

.sort-menu {
    min-width: 11.5rem;
    padding: 0.5rem;
}

.sort-menu-kicker {
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgb(156 163 175);
    padding: 0.15rem 0.4rem 0.4rem;
}

.sort-menu-group {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgb(156 163 175);
    padding: 0.2rem 0.5rem 0.2rem;
}

.sort-menu a + .sort-menu-group,
.sort-menu button + .sort-menu-group {
    margin-top: 0.35rem;
    padding-top: 0.5rem;
    border-top: 1px solid rgb(229 231 235);
}

.dark .sort-menu-group {
    color: rgb(107 114 128);
}

.dark .sort-menu a + .sort-menu-group,
.dark .sort-menu button + .sort-menu-group {
    border-top-color: var(--app-border);
}

.sort-menu a,
.sort-menu button {
    min-height: 0 !important;
    display: block;
    width: 100%;
    text-align: left;
    border: 0;
    background: transparent;
    border-radius: 0.4rem;
    padding: 0.35rem 0.5rem;
    font-size: 13px;
    font-weight: 500;
    color: rgb(55 65 81);
    text-decoration: none;
}

.dark .sort-menu a,
.dark .sort-menu button {
    color: rgb(209 213 219);
}

.sort-menu a:hover,
.sort-menu button:hover {
    background: rgb(243 244 246);
}

.dark .sort-menu a:hover,
.dark .sort-menu button:hover {
    background: var(--app-elevated);
}

.sort-menu a.is-on,
.sort-menu button.is-on {
    background: rgb(220 252 231);
    color: rgb(22 101 52);
}

.dark .sort-menu a.is-on,
.dark .sort-menu button.is-on {
    background: rgb(20 83 45 / 0.45);
    color: rgb(187 247 208);
}

/* Dark mode placeholder color for inputs without explicit dark styles */
.dark input::placeholder {
    color: rgb(156 163 175);
}

.share-link {
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
    padding: 0.85rem 0.95rem;
    border-radius: 0.9rem;
    border: 1px solid color-mix(in srgb, var(--app-accent) 28%, var(--app-border));
    background: linear-gradient(180deg, var(--app-accent-tint) 0%, var(--app-surface) 72%);
}

.dark .share-link {
    border-color: color-mix(in srgb, var(--app-accent) 35%, var(--app-border));
    background: linear-gradient(180deg, color-mix(in srgb, var(--app-accent) 22%, transparent) 0%, var(--app-surface) 78%);
}

.share-link-top {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
}

.share-link-icon {
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 0.7rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    background: var(--app-accent);
    color: var(--app-on-accent);
    box-shadow: 0 4px 10px color-mix(in srgb, var(--app-accent) 28%, transparent);
}

.dark .share-link-icon {
    background: var(--app-accent);
    box-shadow: none;
}

.share-link-title {
    font-size: 0.8125rem;
    font-weight: 650;
    color: var(--app-accent-hover);
    line-height: 1.25;
}

.dark .share-link-title {
    color: var(--app-accent-soft);
}

.share-link-hint {
    margin-top: 0.15rem;
    font-size: 11px;
    color: var(--app-text-muted);
    line-height: 1.35;
}

.dark .share-link-hint {
    color: var(--app-text-muted);
}

.share-link-url {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 11px;
    line-height: 1.4;
    padding: 0.45rem 0.65rem;
    border-radius: 0.55rem;
    background: color-mix(in srgb, var(--app-surface) 90%, transparent);
    border: 1px solid color-mix(in srgb, var(--app-accent) 28%, var(--app-border));
    color: var(--app-accent-hover);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    user-select: all;
}

.dark .share-link-url {
    background: color-mix(in srgb, var(--app-bg) 55%, transparent);
    border-color: var(--app-border);
    color: var(--app-accent-soft);
}

.share-link-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
}

.share-link-actions .btn-copy,
.share-link-actions .btn-open {
    min-height: 34px !important;
    height: 34px;
    padding: 0 0.85rem;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.share-link-actions .btn-copy {
    background: var(--app-accent);
    color: var(--app-on-accent);
    border: 0;
}

.share-link-actions .btn-copy:hover {
    background: var(--app-accent-hover);
}

.share-link-actions .btn-copy.is-copied {
    background: rgb(22 163 74);
}

.share-link-actions .btn-open {
    background: var(--app-surface);
    color: var(--app-accent-hover);
    border: 1px solid color-mix(in srgb, var(--app-accent) 28%, var(--app-border));
    text-decoration: none;
}

.share-link-actions .btn-open:hover {
    background: var(--app-accent-tint);
}

.dark .share-link-actions .btn-open {
    background: color-mix(in srgb, var(--app-bg) 40%, transparent);
    color: var(--app-accent-soft);
    border-color: var(--app-border);
}

.dark .share-link-actions .btn-open:hover {
    background: var(--app-elevated);
}

.share-link--compact {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.45rem 0.75rem;
    padding: 0.5rem 0.65rem;
    border-radius: 0.65rem;
    border-color: rgb(229 231 235);
    background: rgb(249 250 251);
}

.dark .share-link--compact {
    border-color: rgb(75 85 99);
    background: color-mix(in srgb, var(--app-surface) 55%, transparent);
}

.share-link--compact .share-link-label {
    margin: 0;
    font-size: 0.75rem;
    font-weight: 600;
    color: rgb(55 65 81);
    line-height: 1.2;
}

.dark .share-link--compact .share-link-label {
    color: rgb(209 213 219);
}

.share-link--compact .share-link-actions {
    gap: 0.35rem;
    margin-left: auto;
}

.share-link--compact .share-link-actions .btn-copy,
.share-link--compact .share-link-actions .btn-open {
    min-height: 30px !important;
    height: 30px;
    padding: 0 0.65rem;
    border-radius: 0.4rem;
    font-size: 11px;
    font-weight: 600;
}

.share-link--compact .share-link-actions .btn-copy {
    background: rgb(22 163 74);
    color: #fff;
    border: 0;
}

.share-link--compact .share-link-actions .btn-copy:hover {
    background: rgb(21 128 61);
}

.share-link--compact .share-link-actions .btn-copy.is-copied {
    background: rgb(21 128 61);
}

.share-link--compact .share-link-actions .btn-open {
    background: rgb(243 244 246);
    color: rgb(55 65 81);
    border: 1px solid rgb(229 231 235);
}

.share-link--compact .share-link-actions .btn-open:hover {
    background: rgb(229 231 235);
}

.dark .share-link--compact .share-link-actions .btn-open {
    background: var(--app-elevated);
    color: rgb(229 231 235);
    border-color: rgb(75 85 99);
}

.dark .share-link--compact .share-link-actions .btn-open:hover {
    background: rgb(75 85 99);
}

.people-chip {
    min-height: 30px !important;
    height: 30px;
    padding: 0 0.65rem;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    background: rgb(243 244 246);
    color: rgb(55 65 81);
    border: 0;
}

.dark .people-chip {
    background: var(--app-elevated);
    color: rgb(209 213 219);
}

.people-chip:hover {
    background: rgb(229 231 235);
}

.dark .people-chip:hover {
    background: rgb(75 85 99);
}

.people-panel {
    width: min(24rem, calc(100vw - 2rem));
    max-height: min(32rem, calc(100vh - 4rem));
    display: flex;
    flex-direction: column;
    border-radius: 1rem;
    background: #fff;
    border: 1px solid rgb(229 231 235);
    box-shadow: 0 20px 50px rgb(15 23 42 / 0.18);
}

.dark .people-panel {
    background: var(--app-surface);
    border-color: var(--app-border);
    box-shadow: none;
}

.people-row {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    padding: 0.55rem 0;
}

.people-avatar {
    width: 2rem;
    height: 2rem;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.02em;
    background: rgb(220 252 231);
    color: rgb(22 101 52);
}

.dark .people-avatar {
    background: rgb(20 83 45 / 0.5);
    color: rgb(187 247 208);
}

.people-empty {
    text-align: center;
    padding: 1.25rem 0.5rem;
    color: rgb(107 114 128);
    font-size: 0.875rem;
}

.dark .people-empty {
    color: rgb(156 163 175);
}

/* View class/event sessions — airy list, less nested chrome */
.sessions-view {
    display: flex;
    flex-direction: column;
    gap: 1.15rem;
}

.sessions-view-dates {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
}

.sessions-week {
    border: 1px solid rgb(229 231 235);
    border-radius: 1rem;
    overflow: hidden;
    background: #fff;
}

.dark .sessions-week {
    border-color: var(--app-border);
    background: var(--app-surface);
}

.sessions-week > summary {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.9rem 1rem;
    background: rgb(249 250 251);
}

.dark .sessions-week > summary {
    background: color-mix(in srgb, var(--app-bg) 35%, transparent);
}

.sessions-week > summary::-webkit-details-marker,
.sessions-day > summary::-webkit-details-marker {
    display: none;
}

.sessions-week > summary:hover,
.sessions-day > summary:hover {
    background: rgb(243 244 246);
}

.dark .sessions-week > summary:hover,
.dark .sessions-day > summary:hover {
    background: color-mix(in srgb, var(--app-bg) 55%, transparent);
}

.sessions-week-title {
    font-size: 0.9375rem;
    font-weight: 600;
    color: rgb(17 24 39);
    line-height: 1.3;
}

.dark .sessions-week-title {
    color: rgb(243 244 246);
}

.sessions-week-meta,
.sessions-day-meta {
    font-size: 0.75rem;
    color: rgb(107 114 128);
    white-space: nowrap;
}

.dark .sessions-week-meta,
.dark .sessions-day-meta {
    color: rgb(156 163 175);
}

.sessions-week-body {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.35rem 0.45rem 0.65rem;
}

.sessions-day {
    border: 1px solid rgb(229 231 235);
    border-radius: 0.85rem;
    overflow: hidden;
    background: #fff;
}

.dark .sessions-day {
    border-color: var(--app-border);
    background: var(--app-surface);
}

.sessions-week .sessions-day {
    border: 0;
    background: rgb(249 250 251);
}

.dark .sessions-week .sessions-day {
    background: color-mix(in srgb, var(--app-bg) 40%, transparent);
}

.sessions-day > summary {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.75rem 0.9rem;
    background: transparent;
}

.sessions-day > summary::-webkit-details-marker {
    display: none;
}

.sessions-day-title {
    font-size: 0.875rem;
    font-weight: 600;
    color: rgb(17 24 39);
}

.dark .sessions-day-title {
    color: rgb(243 244 246);
}

.sessions-slots {
    list-style: none;
    margin: 0;
    padding: 0 0.35rem 0.45rem;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.sessions-slot {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    column-gap: 0.5rem;
    row-gap: 0.35rem;
    padding: 0.55rem 0.55rem;
    border-radius: 0.7rem;
    background: #fff;
}

.dark .sessions-slot {
    background: color-mix(in srgb, var(--app-surface) 65%, transparent);
}

.sessions-week .sessions-slot {
    background: #fff;
}

.dark .sessions-week .sessions-slot {
    background: color-mix(in srgb, var(--app-surface) 85%, transparent);
}

.sessions-slot-main {
    min-width: 0;
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.4rem 0.65rem;
}

.sessions-slot-time {
    font-size: 0.875rem;
    font-weight: 600;
    color: rgb(17 24 39);
    font-variant-numeric: tabular-nums;
}

.dark .sessions-slot-time {
    color: rgb(243 244 246);
}

.sessions-slot-count {
    font-size: 0.75rem;
    color: rgb(107 114 128);
    font-variant-numeric: tabular-nums;
}

.dark .sessions-slot-count {
    color: rgb(156 163 175);
}

.sessions-slot-names {
    grid-column: 1 / -1;
    margin: 0;
    font-size: 11px;
    color: rgb(107 114 128);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.dark .sessions-slot-names {
    color: rgb(156 163 175);
}

.sessions-slot-bar {
    grid-column: 1 / -1;
    height: 3px;
    border-radius: 999px;
    background: rgb(229 231 235);
    overflow: hidden;
}

.dark .sessions-slot-bar {
    background: var(--app-elevated);
}

.sessions-slot-bar > span {
    display: block;
    height: 100%;
    border-radius: inherit;
}

.sessions-slot.is-empty .sessions-slot-bar,
.sessions-slot.is-cancelled .sessions-slot-bar {
    display: none;
}

.sessions-slot-actions {
    display: flex;
    align-items: center;
    gap: 0.15rem;
}

.sessions-slot-actions button,
.sessions-slot-actions .people-chip {
    min-height: 32px !important;
    width: 32px;
    height: 32px;
    padding: 0;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.people-chip--icon .people-chip-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.people-chip--icon.has-people {
    width: auto;
    padding: 0 0.5rem 0 0.35rem;
    gap: 0.25rem;
}

.people-chip-count {
    font-size: 11px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.view-class-modal-footer {
    padding: 0.75rem 1rem 1rem;
}

@media (max-width: 480px) {
    .view-class-modal-footer {
        display: none;
    }
}

/* Calendar page */
.cal-page {
    max-width: 44rem;
    margin: 0 auto;
}

.cal-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}

.cal-month-nav {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    flex: 1;
    margin-bottom: 0.5rem;
}

.cal-month-nav a,
.cal-today {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 32px !important;
    height: 32px;
    padding: 0 0.65rem;
    border-radius: 999px;
    color: rgb(75 85 99);
    background: transparent;
}

.dark .cal-month-nav a,
.dark .cal-today {
    color: rgb(156 163 175);
}

.cal-month-nav a:hover,
.cal-today:hover {
    background: rgb(243 244 246);
    color: rgb(17 24 39);
}

.dark .cal-month-nav a:hover,
.dark .cal-today:hover {
    background: var(--app-elevated);
    color: rgb(243 244 246);
}

.cal-month-label {
    min-width: 10.5rem;
    text-align: center;
    font-size: 1.05rem;
    font-weight: 700;
    color: rgb(17 24 39);
}

.dark .cal-month-label {
    color: rgb(243 244 246);
}

.cal-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-bottom: 0.5rem;
}

.cal-legend span {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    background: rgb(243 244 246);
    color: rgb(75 85 99);
    font-size: 11px;
    font-weight: 600;
}

.dark .cal-legend span {
    background: var(--app-surface);
    color: rgb(156 163 175);
}

.cal-dot {
    width: 0.45rem;
    height: 0.45rem;
    border-radius: 999px;
    flex-shrink: 0;
}

.cal-grid {
    border: 1px solid rgb(229 231 235);
    border-radius: 1rem;
    overflow: hidden;
    background: var(--app-surface);
    margin-bottom: 1rem;
}

.dark .cal-grid {
    border-color: var(--app-border);
    background: var(--app-surface);
}

.cal-weekdays,
.cal-weeks {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
}

.cal-weekdays {
    border-bottom: 1px solid rgb(229 231 235);
    background: rgb(249 250 251);
}

.dark .cal-weekdays {
    border-color: var(--app-border);
    background: color-mix(in srgb, var(--app-bg) 35%, transparent);
}

.cal-weekdays > span {
    padding: 0.45rem 0;
    text-align: center;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: rgb(156 163 175);
}

.cal-cell {
    min-height: 3.15rem;
    padding: 0.15rem;
    border-right: 1px solid rgb(243 244 246);
    border-bottom: 1px solid rgb(243 244 246);
}

.dark .cal-cell {
    border-color: rgb(55 65 81 / 0.7);
}

.cal-cell:nth-child(7n) {
    border-right: 0;
}

.cal-day {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.2rem;
    height: 100%;
    min-height: 2.85rem;
    padding: 0.25rem 0.1rem 0.3rem;
    border-radius: 0.7rem;
    text-decoration: none;
    position: relative;
}

.cal-day:hover {
    background: rgb(249 250 251);
}

.dark .cal-day:hover {
    background: color-mix(in srgb, var(--app-bg) 45%, transparent);
}

.cal-day-num {
    width: 1.7rem;
    height: 1.7rem;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 600;
    color: rgb(17 24 39);
}

.dark .cal-day-num {
    color: rgb(243 244 246);
}

.cal-day.is-today .cal-day-num {
    background: rgb(22 163 74);
    color: #fff;
}

.cal-day.is-selected {
    background: rgb(220 252 231);
}

.dark .cal-day.is-selected {
    background: rgb(20 83 45 / 0.4);
}

.cal-day.is-selected .cal-day-num {
    background: rgb(22 163 74);
    color: #fff;
}

.cal-day.is-past:not(.is-selected):not(.is-today) {
    opacity: 0.45;
}

.cal-day.is-closed {
    opacity: 1;
    background:
        repeating-linear-gradient(
            -52deg,
            transparent 0 5px,
            rgb(245 158 11 / 0.14) 5px 6px
        );
}

.dark .cal-day.is-closed {
    background:
        repeating-linear-gradient(
            -52deg,
            transparent 0 5px,
            rgb(251 191 36 / 0.12) 5px 6px
        );
}

.cal-day.is-closed .cal-day-num {
    background: rgb(253 230 138);
    color: rgb(146 64 14);
}

.dark .cal-day.is-closed .cal-day-num {
    background: rgb(120 53 15 / 0.7);
    color: rgb(253 230 138);
}

.cal-day.is-closed:hover {
    background:
        repeating-linear-gradient(
            -52deg,
            rgb(255 251 235) 0 5px,
            rgb(245 158 11 / 0.2) 5px 6px
        );
}

.dark .cal-day.is-closed:hover {
    background:
        repeating-linear-gradient(
            -52deg,
            rgb(69 26 3 / 0.35) 0 5px,
            rgb(251 191 36 / 0.18) 5px 6px
        );
}

.cal-day.is-closed.is-selected {
    background:
        repeating-linear-gradient(
            -52deg,
            rgb(255 251 235) 0 5px,
            rgb(245 158 11 / 0.22) 5px 6px
        );
    box-shadow: inset 0 0 0 1.5px rgb(245 158 11);
}

.dark .cal-day.is-closed.is-selected {
    background:
        repeating-linear-gradient(
            -52deg,
            rgb(69 26 3 / 0.4) 0 5px,
            rgb(251 191 36 / 0.2) 5px 6px
        );
}

.cal-day.is-closed.is-selected .cal-day-num,
.cal-day.is-closed.is-today .cal-day-num {
    background: rgb(217 119 6);
    color: #fff;
}

.dark .cal-day.is-closed.is-selected .cal-day-num,
.dark .cal-day.is-closed.is-today .cal-day-num {
    background: rgb(245 158 11);
    color: rgb(69 26 3);
}

button.chip.chip-closed,
a.chip.chip-closed,
span.chip.chip-closed {
    border-color: rgb(251 191 36);
    background-color: rgb(254 243 199);
    color: rgb(146 64 14);
}

button.chip.chip-closed:hover {
    background-color: rgb(253 230 138);
    color: rgb(120 53 15);
}

.dark button.chip.chip-closed,
.dark a.chip.chip-closed,
.dark span.chip.chip-closed {
    border-color: rgb(180 83 9);
    background-color: rgb(120 53 15 / 0.45);
    color: rgb(253 230 138);
}

.dark button.chip.chip-closed:hover {
    background-color: rgb(146 64 14 / 0.55);
    color: rgb(254 243 199);
}

.cal-day.is-closed .cal-marks {
    display: none;
}

.cal-day.is-closed::after {
    content: "";
    width: 0.55rem;
    height: 0.55rem;
    background: currentColor;
    color: rgb(180 83 9);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 018 0v3'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 018 0v3'/%3E%3C/svg%3E") center / contain no-repeat;
}

.dark .cal-day.is-closed::after {
    color: rgb(252 211 77);
}

.cal-marks {
    display: flex;
    gap: 0.15rem;
    min-height: 0.4rem;
}

@media (min-width: 640px) {
    .cal-cell {
        min-height: 3.6rem;
    }
}

.cal-day-panel {
    border: 1px solid rgb(229 231 235);
    border-radius: 1rem;
    background: var(--app-surface);
    padding: 1rem 1rem 1.1rem;
}

.dark .cal-day-panel {
    border-color: var(--app-border);
    background: var(--app-surface);
}

.cal-day-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.9rem;
}

.cal-day-title {
    font-size: 1.05rem;
    font-weight: 700;
    color: rgb(17 24 39);
    line-height: 1.25;
}

.dark .cal-day-title {
    color: rgb(243 244 246);
}

.cal-section + .cal-section {
    margin-top: 1rem;
}

.cal-section-title {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #4b5563;
}

.dark .cal-section-title {
    color: #e2e8f0 !important;
}

.cal-section-title .count {
    margin-left: auto;
    letter-spacing: 0;
    font-variant-numeric: tabular-nums;
}

.cal-items {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.cal-item {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
    padding: 0.7rem 0.75rem;
    border-radius: 0.8rem;
    background: rgb(249 250 251);
}

.dark .cal-item {
    background: color-mix(in srgb, var(--app-bg) 40%, transparent);
}

.sessions-week + .sessions-week {
    margin-top: 0.75rem;
}

.mb-week:has([data-booking-dropdown][open]) {
    overflow: visible;
    position: relative;
    z-index: 30;
}

.mb-week-body {
    padding: 0.2rem 0.7rem 0.85rem;
}

.mb-day + .mb-day {
    margin-top: 0.85rem;
}

.mb-day-label {
    margin: 0 0.15rem 0.4rem;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: rgb(107 114 128);
}

.dark .mb-day-label {
    color: rgb(156 163 175);
}

.cal-item-actions {
    display: flex;
    align-items: center;
    gap: 0.15rem;
    flex-shrink: 0;
}

.cal-item-actions button {
    min-height: 32px !important;
    width: 32px;
    height: 32px;
    padding: 0;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.cal-date-group + .cal-date-group {
    margin-top: 1.1rem;
}

.cal-item-time {
    flex-shrink: 0;
    min-width: 3.1rem;
    font-size: 0.75rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: rgb(22 163 74);
    padding-top: 0.1rem;
}

.dark .cal-item-time {
    color: rgb(134 239 172);
}

.cal-item-body {
    min-width: 0;
    flex: 1;
}

.cal-item-name {
    font-size: 0.875rem;
    font-weight: 600;
    color: rgb(17 24 39);
}

.dark .cal-item-name {
    color: rgb(243 244 246);
}

.cal-item-meta {
    margin: 0.15rem 0 0;
    font-size: 0.75rem;
    color: rgb(107 114 128);
}

.dark .cal-item-meta {
    color: rgb(156 163 175);
}

.cal-empty {
    margin: 0;
    padding: 0.55rem 0.15rem;
    font-size: 0.8125rem;
    color: rgb(156 163 175);
}

.cal-bday {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.55rem 0.75rem;
    border-radius: 0.8rem;
    background: color-mix(in srgb, var(--app-accent) 12%, var(--app-surface));
    border: 1px solid color-mix(in srgb, var(--app-accent) 24%, var(--app-border));
    color: var(--app-text) !important;
    font-size: 0.875rem;
    font-weight: 600;
}

.dark .cal-bday {
    background: color-mix(in srgb, var(--app-accent) 22%, var(--app-surface));
    border: 1px solid color-mix(in srgb, var(--app-accent) 40%, var(--app-border));
    color: #ffffff !important;
}

.cal-dot--bday {
    background: var(--app-accent);
}

.cal-class-card {
    border-radius: 0.8rem;
    background: rgb(253 242 248);
}

.dark .cal-class-card {
    background: rgb(80 7 36 / 0.28);
}

.cal-class-card + .cal-class-card {
    margin-top: 0.45rem;
}

.cal-class-card > summary {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.6rem;
    padding: 0.7rem 0.75rem;
}

.cal-class-card > summary::-webkit-details-marker {
    display: none;
}

.cal-class-name {
    margin: 0;
    font-size: 0.875rem;
    font-weight: 600;
    color: rgb(17 24 39);
}

.dark .cal-class-name {
    color: rgb(243 244 246);
}

.cal-class-name span {
    font-weight: 500;
    color: rgb(107 114 128);
    margin-left: 0.35rem;
}

.dark .cal-class-name span {
    color: rgb(156 163 175);
}

.cal-class-meta {
    flex-shrink: 0;
    font-size: 0.75rem;
    font-variant-numeric: tabular-nums;
    color: rgb(107 114 128);
}

.dark .cal-class-meta {
    color: rgb(249 168 212);
}

.cal-class-card .sessions-slots {
    padding: 0 0.4rem 0.45rem;
    gap: 0.25rem;
}

.cal-class-card .sessions-slot {
    padding: 0.4rem 0.5rem;
    border-radius: 0.65rem;
    background: #fff;
}

.dark .cal-class-card .sessions-slot {
    background: color-mix(in srgb, var(--app-surface) 85%, transparent);
}

.qr-page,
.acct-page,
.hours-page {
    max-width: 28rem;
    margin: 0 auto;
}

.hours-page {
    max-width: 36rem;
}

.qr-card,
.hours-panel {
    border: 1px solid rgb(229 231 235);
    border-radius: 1.1rem;
    background: #fff;
    padding: 1.15rem 1.15rem 1.25rem;
}

.dark .qr-card,
.dark .hours-panel {
    border-color: var(--app-border);
    background: var(--app-surface);
}

.qr-card {
    padding: 1.25rem 1.2rem 1.2rem;
}

.qr-card .toolbar-kicker,
.hours-panel .toolbar-kicker {
    margin-bottom: 0.45rem;
}

.qr-identity {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    margin-bottom: 0.85rem;
}

.qr-avatar {
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 0.85rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    background: rgb(220 252 231);
    color: rgb(21 128 61);
    font-size: 0.92rem;
    font-weight: 700;
    letter-spacing: 0.02em;
}

.dark .qr-avatar {
    background: rgb(20 83 45 / 0.45);
    color: rgb(187 247 208);
}

.qr-name {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 700;
    line-height: 1.25;
    color: rgb(17 24 39);
}

.dark .qr-name {
    color: rgb(243 244 246);
}

.qr-joined {
    margin: 0.15rem 0 0;
    font-size: 0.78rem;
    color: rgb(107 114 128);
}

.dark .qr-joined {
    color: rgb(156 163 175);
}

.qr-plan {
    margin: 0 0 1rem;
    padding: 0.55rem 0.7rem;
    border-radius: 0.8rem;
    background: rgb(249 250 251);
    color: rgb(55 65 81);
    font-size: 0.78rem;
    font-weight: 600;
    line-height: 1.4;
}

.dark .qr-plan {
    background: color-mix(in srgb, var(--app-bg) 45%, transparent);
    color: rgb(209 213 219);
}

.qr-inactive {
    margin: 0 0 1rem;
    padding: 0.6rem 0.75rem;
    border-radius: 0.8rem;
    background: rgb(249 250 251);
    color: rgb(75 85 99);
    font-size: 0.82rem;
    line-height: 1.4;
}

.dark .qr-inactive {
    background: color-mix(in srgb, var(--app-bg) 45%, transparent);
    color: rgb(156 163 175);
}

.qr-frame {
    background: #fff;
    border-radius: 1.15rem;
    padding: 0.85rem;
    max-width: 15.5rem;
    margin: 0 auto;
    box-shadow: inset 0 0 0 1px rgb(229 231 235);
}

.qr-frame img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 0.45rem;
}

.qr-hint {
    margin: 0.85rem 0 1rem;
    text-align: center;
    font-size: 0.8rem;
    color: rgb(107 114 128);
}

.dark .qr-hint {
    color: rgb(156 163 175);
}

.qr-checkin {
    width: 100%;
    min-height: 48px !important;
    border-radius: 0.9rem;
    background: rgb(22 163 74);
    color: #fff;
    font-size: 1rem;
    font-weight: 650;
}

.qr-checkin:hover {
    background: rgb(21 128 61);
}

.qr-checkin:disabled {
    opacity: 0.7;
}

.qr-secondary,
.qr-download {
    width: 100%;
    margin-top: 0.55rem;
    justify-content: center;
    height: auto !important;
    min-height: 42px !important;
    border-radius: 0.85rem;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    border: 1px solid rgb(229 231 235);
    background: #fff;
    color: rgb(55 65 81);
    font-size: 0.86rem;
    font-weight: 600;
}

.qr-secondary:hover,
.qr-download:hover {
    background: rgb(249 250 251);
}

.dark .qr-secondary,
.dark .qr-download {
    border-color: var(--app-border);
    background: color-mix(in srgb, var(--app-bg) 35%, transparent);
    color: rgb(229 231 235);
}

.dark .qr-secondary:hover,
.dark .qr-download:hover {
    background: var(--app-elevated);
}

.qr-browse {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 0.75rem;
    padding: 0.95rem 1.05rem;
    border-radius: 1.1rem;
    border: 1px solid rgb(229 231 235);
    background: #fff;
    text-decoration: none;
    color: inherit;
}

.qr-browse:hover {
    border-color: rgb(187 247 208);
    background: rgb(240 253 244);
}

.qr-browse strong {
    display: block;
    font-size: 0.92rem;
    font-weight: 650;
    color: rgb(17 24 39);
}

.qr-browse em {
    display: block;
    margin-top: 0.15rem;
    font-style: normal;
    font-size: 0.75rem;
    color: rgb(107 114 128);
}

.qr-browse svg {
    flex-shrink: 0;
    color: rgb(22 163 74);
}

.dark .qr-browse {
    border-color: var(--app-border);
    background: var(--app-surface);
}

.dark .qr-browse:hover {
    border-color: rgb(74 222 128 / 0.45);
    background: rgb(20 83 45 / 0.28);
}

.dark .qr-browse strong {
    color: rgb(243 244 246);
}

.dark .qr-browse em {
    color: rgb(156 163 175);
}

.qr-result {
    margin: 0.7rem 0 0;
    text-align: center;
    font-size: 0.85rem;
}

.qr-result.is-ok {
    color: rgb(22 163 74);
}

.qr-result.is-err {
    color: rgb(220 38 38);
}

.dark .qr-result.is-ok {
    color: rgb(74 222 128);
}

.dark .qr-result.is-err {
    color: rgb(252 165 165);
}

.qr-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.45rem;
    margin-top: 1.15rem;
}

.acct-card {
    margin-top: 0.75rem;
}

.acct-section {
    margin: 0 0 0.75rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgb(107 114 128);
}

.dark .acct-section {
    color: rgb(156 163 175);
}

.acct-fields {
    margin: 0;
    display: grid;
    gap: 0.45rem;
}

.acct-fields > div {
    display: grid;
    grid-template-columns: 5.5rem 1fr;
    gap: 0.6rem;
    align-items: baseline;
}

.acct-fields dt {
    font-size: 0.75rem;
    font-weight: 600;
    color: rgb(107 114 128);
}

.acct-fields dd {
    margin: 0;
    font-size: 0.9rem;
    font-weight: 600;
    color: rgb(17 24 39);
    overflow-wrap: anywhere;
}

.dark .acct-fields dt {
    color: rgb(156 163 175);
}

.dark .acct-fields dd {
    color: rgb(243 244 246);
}

.acct-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.55rem;
    font-size: 0.85rem;
    color: rgb(75 85 99);
}

.dark .acct-row {
    color: rgb(156 163 175);
}

.acct-mono,
.acct-password-tools code {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.88rem;
    font-weight: 650;
    color: rgb(17 24 39);
}

.dark .acct-mono,
.dark .acct-password-tools code {
    color: rgb(243 244 246);
}

.acct-form {
    display: flex;
    gap: 0.45rem;
    margin: 0 0 0.7rem;
}

.acct-form input {
    flex: 1;
    min-width: 0;
    height: 40px;
    padding: 0 0.75rem;
    border-radius: 0.75rem;
    border: 1px solid rgb(209 213 219);
    background: #fff;
    color: rgb(17 24 39);
    font-size: 0.88rem;
}

.dark .acct-form input {
    border-color: var(--app-border);
    background: color-mix(in srgb, var(--app-bg) 45%, transparent);
    color: rgb(243 244 246);
}

.acct-save {
    height: 40px;
    padding: 0 0.95rem;
    border-radius: 0.75rem;
    background: rgb(22 163 74);
    color: #fff;
    font-size: 0.86rem;
    font-weight: 650;
}

.acct-save:hover {
    background: rgb(21 128 61);
}

.acct-msg {
    margin: -0.35rem 0 0.65rem;
    font-size: 0.8rem;
}

.acct-msg.is-err {
    color: rgb(220 38 38);
}

.acct-msg.is-ok {
    color: rgb(22 163 74);
}

.acct-password {
    margin-top: 0.35rem;
}

.acct-password-tools {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.acct-password-tools button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 999px;
    color: rgb(22 163 74);
}

.acct-password-tools button:hover {
    background: rgb(240 253 244);
}

.dark .acct-password-tools button:hover {
    background: rgb(20 83 45 / 0.35);
}

.acct-link {
    display: inline-flex;
    margin-top: 0.15rem;
    padding: 0;
    background: none;
    border: 0;
    color: rgb(22 163 74);
    font-size: 0.84rem;
    font-weight: 650;
}

.acct-link:hover {
    color: rgb(21 128 61);
}

.acct-stats {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem;
}

.acct-stats > div {
    padding: 0.65rem 0.7rem;
    border-radius: 0.8rem;
    background: rgb(249 250 251);
}

.dark .acct-stats > div {
    background: color-mix(in srgb, var(--app-bg) 45%, transparent);
}

.acct-stats span {
    display: block;
    font-size: 0.7rem;
    font-weight: 600;
    color: rgb(107 114 128);
}

.acct-stats strong {
    display: block;
    margin-top: 0.2rem;
    font-size: 1.05rem;
    font-weight: 700;
    color: rgb(17 24 39);
}

.dark .acct-stats strong {
    color: rgb(243 244 246);
}

.acct-visits {
    list-style: none;
    margin: 0.85rem 0 0;
    padding: 0;
}

.acct-visits li {
    padding: 0.45rem 0;
    border-top: 1px solid rgb(243 244 246);
    font-size: 0.82rem;
    color: rgb(55 65 81);
}

.dark .acct-visits li {
    border-top-color: var(--app-border);
    color: rgb(209 213 219);
}

.acct-empty {
    margin: 0.7rem 0 0;
    font-size: 0.82rem;
    color: rgb(107 114 128);
}

.hours-panel + .hours-panel {
    margin-top: 0.75rem;
}

.hours-today {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem 0.45rem;
    margin: 0 0 0.5rem;
    padding: 0.35rem 0.75rem;
    min-height: 2.4rem;
    border: 1px solid rgb(229 231 235);
    border-radius: 0.85rem;
    background: #fff;
}

.dark .hours-today {
    border-color: var(--app-border);
    background: var(--app-surface);
}

.hours-today-kicker {
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgb(156 163 175);
    line-height: 1;
}

.dark .hours-today-kicker {
    color: rgb(107 114 128);
}

.hours-today-sep {
    color: rgb(156 163 175);
    line-height: 1;
}

.hours-today-title {
    margin: 0;
    font-size: 0.9rem;
    font-weight: 650;
    line-height: 1.2;
    color: rgb(17 24 39);
}

.dark .hours-today-title {
    color: rgb(243 244 246);
}

.hours-today-meta,
.hours-today .chip {
    margin-left: auto;
}

.hours-today-meta {
    font-size: 0.8rem;
    font-variant-numeric: tabular-nums;
    color: rgb(75 85 99);
}

.dark .hours-today-meta {
    color: rgb(209 213 219);
}


.hours-days {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.hours-day {
    padding: 0.7rem 0.75rem;
    border-radius: 0.85rem;
    background: rgb(249 250 251);
}

.dark .hours-day {
    background: color-mix(in srgb, var(--app-bg) 40%, transparent);
}

.hours-day.is-today {
    box-shadow: inset 0 0 0 1.5px rgb(34 197 94);
}

.hours-day.is-closed {
    opacity: 0.78;
}

.hours-day-top {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
}

.hours-day-name {
    font-size: 0.9rem;
    font-weight: 650;
    color: rgb(17 24 39);
}

.dark .hours-day-name {
    color: rgb(243 244 246);
}

.hours-day-time {
    font-size: 0.8rem;
    font-variant-numeric: tabular-nums;
    color: rgb(75 85 99);
}

.dark .hours-day-time {
    color: rgb(209 213 219);
}

.hours-bar {
    position: relative;
    height: 6px;
    margin-top: 0.5rem;
    border-radius: 999px;
    background: rgb(229 231 235);
    overflow: hidden;
}

.dark .hours-bar {
    background: var(--app-elevated);
}

.hours-bar-fill {
    position: absolute;
    top: 0;
    bottom: 0;
    border-radius: 999px;
    background: rgb(34 197 94);
}

.hours-day.is-closed .hours-bar-fill {
    display: none;
}

.hours-break {
    margin: 0.35rem 0 0;
    font-size: 0.72rem;
    color: rgb(107 114 128);
}

.dark .hours-break {
    color: rgb(156 163 175);
}

.hours-empty {
    margin: 0;
    font-size: 0.85rem;
    color: rgb(107 114 128);
}

.dark .hours-empty {
    color: rgb(156 163 175);
}

/* ── Brand title looks (toolbar + public hero) — graphic treatments ── */
.brand-title {
    display: inline-block;
    max-width: 100%;
    line-height: 1.15;
    letter-spacing: normal;
    text-transform: none;
    vertical-align: baseline;
}

.brand-title--clean {
    font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif !important;
    font-weight: 700 !important;
    letter-spacing: -0.01em !important;
}

.brand-title--gradient {
    font-family: "Outfit", ui-sans-serif, system-ui, sans-serif !important;
    font-weight: 800 !important;
    letter-spacing: -0.015em !important;
    background: linear-gradient(110deg, var(--app-accent-hover, var(--app-accent)) 0%, var(--app-accent) 55%, var(--app-accent-soft, var(--app-accent)) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
    text-shadow: none !important;
}

.dark .brand-title--gradient {
    background: linear-gradient(110deg, #ffffff 0%, var(--app-accent-soft, #cbd5e1) 50%, var(--app-accent) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
    text-shadow: none !important;
}

.brand-title--pop {
    font-family: "Anton", Impact, Haettenschweiler, sans-serif !important;
    font-weight: 400 !important;
    letter-spacing: 0.01em !important;
    color: var(--app-accent-hover, var(--app-accent)) !important;
    -webkit-text-fill-color: var(--app-accent-hover, var(--app-accent)) !important;
    text-shadow: 2px 2px 0 color-mix(in srgb, var(--app-text) 85%, #000000) !important;
}

.dark .brand-title--pop {
    color: var(--app-accent-soft, var(--app-accent)) !important;
    -webkit-text-fill-color: var(--app-accent-soft, var(--app-accent)) !important;
    text-shadow: 2px 2px 0 #000000, 3px 3px 0 color-mix(in srgb, var(--app-accent) 45%, #000000) !important;
}

.brand-title--chrome {
    font-family: "Orbitron", ui-sans-serif, system-ui, sans-serif !important;
    font-weight: 800 !important;
    letter-spacing: 0.02em !important;
    background: linear-gradient(180deg, color-mix(in srgb, var(--app-accent) 40%, #1e293b) 0%, color-mix(in srgb, var(--app-accent-hover, var(--app-accent)) 65%, #0f172a) 46%, color-mix(in srgb, var(--app-accent-soft) 60%, #ffffff) 52%, color-mix(in srgb, var(--app-accent) 50%, #334155) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.25));
    text-shadow: none !important;
}

.dark .brand-title--chrome {
    background: linear-gradient(180deg, #ffffff 0%, color-mix(in srgb, var(--app-accent-soft) 65%, #f1f5f9) 44%, color-mix(in srgb, var(--app-accent) 55%, #0f172a) 50%, color-mix(in srgb, var(--app-accent-soft) 85%, #ffffff) 56%, color-mix(in srgb, var(--app-accent) 40%, #ffffff) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.45));
    text-shadow: none !important;
}

.brand-title--editorial {
    font-family: "Fraunces", Georgia, "Times New Roman", serif !important;
    font-weight: 700 !important;
    letter-spacing: -0.01em !important;
    font-optical-sizing: auto;
    font-style: italic;
    background-image: linear-gradient(currentColor, currentColor);
    background-position: 0 100%;
    background-repeat: no-repeat;
    background-size: 100% 2px;
    padding-bottom: 0.08em;
}

.brand-title--classic {
    font-family: "Libre Baskerville", Georgia, "Times New Roman", serif !important;
    font-weight: 700 !important;
    letter-spacing: normal !important;
    position: relative;
    padding: 0 0.55em;
}

.brand-title--classic::before,
.brand-title--classic::after {
    content: "·";
    position: absolute;
    top: 50%;
    transform: translateY(-55%);
    opacity: 0.6;
    font-size: 0.9em;
    color: var(--app-accent);
}

.brand-title--classic::before { left: 0; }
.brand-title--classic::after { right: 0; }

.brand-title--script {
    font-family: "Caveat", "Segoe Script", cursive !important;
    font-weight: 700 !important;
    letter-spacing: normal !important;
    font-size: 1.18em !important;
    line-height: 1 !important;
}

.brand-title--echo {
    font-family: "Rajdhani", ui-sans-serif, system-ui, sans-serif !important;
    font-weight: 700 !important;
    letter-spacing: 0.02em !important;
    text-shadow:
        1px 1px 0 color-mix(in srgb, var(--app-accent) 70%, transparent),
        2px 2px 0 color-mix(in srgb, var(--app-accent-hover, var(--app-accent)) 50%, transparent),
        3px 3px 0 color-mix(in srgb, var(--app-accent-hover, var(--app-accent)) 30%, transparent) !important;
}

.dark .brand-title--echo {
    text-shadow:
        1px 1px 0 var(--app-accent),
        2px 2px 0 color-mix(in srgb, var(--app-accent-soft) 70%, #ffffff),
        3px 3px 0 color-mix(in srgb, var(--app-accent) 35%, transparent) !important;
}

/* Style picker sample tiles */
.business-title-style-btn {
    min-height: 0 !important;
    height: auto;
    overflow: hidden;
}

.business-title-style-btn .style-sample {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 1.85rem;
    border-radius: 0.35rem;
    background: linear-gradient(145deg, #0f172a, #1e293b 55%, #312e81);
}

.dark .business-title-style-btn .style-sample {
    background: linear-gradient(145deg, #020617, #111827 55%, #1e1b4b);
}

.business-title-style-btn .style-sample .brand-title {
    font-size: 0.78rem !important;
    max-width: 95%;
    line-height: 1 !important;
}

.business-title-style-btn .style-sample .brand-title--gradient {
    background: linear-gradient(110deg, #ffffff 0%, var(--app-accent-soft, #cbd5e1) 50%, var(--app-accent) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
}

.business-title-style-btn .style-sample .brand-title--chrome {
    background: linear-gradient(180deg, #ffffff 0%, color-mix(in srgb, var(--app-accent-soft) 65%, #ffffff) 44%, color-mix(in srgb, var(--app-accent) 60%, #0f172a) 50%, color-mix(in srgb, var(--app-accent-soft) 85%, #ffffff) 56%, color-mix(in srgb, var(--app-accent) 40%, #ffffff) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
}

.business-title-style-btn .style-sample .brand-title--pop {
    color: var(--app-accent-soft, #ffffff) !important;
    -webkit-text-fill-color: var(--app-accent-soft, #ffffff) !important;
    text-shadow: 1.5px 1.5px 0 #000000 !important;
}

.business-title-style-btn .style-sample .brand-title--classic::before,
.business-title-style-btn .style-sample .brand-title--classic::after {
    opacity: 0.7;
    color: var(--app-accent);
}

.business-title-style-btn .style-sample .brand-title--script {
    font-size: 0.95rem !important;
}

button.public-theme-preset {
    min-height: 0 !important;
    height: auto;
}

#currencyQuickForm select {
    min-height: 32px !important;
}

/* Public / book hero: larger presence */
.page-header h1.brand-title,
.class-header h1.brand-title {
    margin-bottom: 8px;
}

.page-header h1.brand-title--clean,
.class-header h1.brand-title--clean,
.page-header h1.brand-title--echo,
.class-header h1.brand-title--echo {
    font-size: clamp(1.7rem, 4.8vw, 2.35rem) !important;
    text-shadow: 0 2px 10px rgb(0 0 0 / .22);
}

.page-header h1.brand-title--gradient,
.class-header h1.brand-title--gradient,
.page-header h1.brand-title--chrome,
.class-header h1.brand-title--chrome,
.page-header h1.brand-title--pop,
.class-header h1.brand-title--pop {
    font-size: clamp(1.85rem, 5.4vw, 2.55rem) !important;
}

.page-header h1.brand-title--editorial,
.class-header h1.brand-title--editorial,
.page-header h1.brand-title--classic,
.class-header h1.brand-title--classic {
    font-size: clamp(1.8rem, 5vw, 2.45rem) !important;
}

.page-header h1.brand-title--script,
.class-header h1.brand-title--script {
    font-size: clamp(2.1rem, 6vw, 2.9rem) !important;
}

.page-header h1.brand-title--gradient,
.class-header h1.brand-title--gradient {
    background: linear-gradient(105deg, #ffffff 0%, var(--app-accent-soft, #fde68a) 48%, var(--app-accent) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
    text-shadow: none !important;
}

.page-header h1.brand-title--pop,
.class-header h1.brand-title--pop {
    color: var(--app-accent-soft, #ffffff) !important;
    -webkit-text-fill-color: var(--app-accent-soft, #ffffff) !important;
    text-shadow: 3px 3px 0 #0f172a !important;
}

.page-header h1.brand-title--chrome,
.class-header h1.brand-title--chrome {
    background: linear-gradient(180deg, #ffffff 0%, color-mix(in srgb, var(--app-accent-soft) 65%, #ffffff) 44%, color-mix(in srgb, var(--app-accent) 60%, #0f172a) 50%, color-mix(in srgb, var(--app-accent-soft) 85%, #ffffff) 56%, color-mix(in srgb, var(--app-accent) 40%, #ffffff) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
}

.page-header h1.brand-title--echo,
.class-header h1.brand-title--echo {
    text-shadow:
        1px 1px 0 rgb(255 255 255 / 0.35),
        2px 2px 0 var(--app-accent),
        3px 3px 0 color-mix(in srgb, var(--app-accent-hover, var(--app-accent)) 65%, transparent),
        4px 4px 0 color-mix(in srgb, var(--app-accent-hover, var(--app-accent)) 40%, transparent) !important;
}

/* Bright hero: keep business name readable (dark ink) */
.page-header.hero-fg-dark h1.brand-title {
    color: var(--hero-fg, #0f172a);
}
.page-header.hero-fg-dark h1.brand-title--clean,
.page-header.hero-fg-dark h1.brand-title--editorial,
.page-header.hero-fg-dark h1.brand-title--classic,
.page-header.hero-fg-dark h1.brand-title--script {
    color: var(--hero-fg, #0f172a) !important;
    text-shadow: var(--hero-title-shadow, none) !important;
}
.page-header.hero-fg-dark h1.brand-title--pop {
    color: var(--app-accent-hover, var(--app-accent)) !important;
    -webkit-text-fill-color: var(--app-accent-hover, var(--app-accent)) !important;
    text-shadow: 3px 3px 0 color-mix(in srgb, var(--app-accent-soft) 60%, #ffffff) !important;
}
.page-header.hero-fg-dark h1.brand-title--gradient {
    background: linear-gradient(105deg, #0f172a 0%, color-mix(in srgb, var(--app-accent) 70%, #0f172a) 50%, var(--app-accent-hover, var(--app-accent)) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
    text-shadow: none !important;
}
.page-header.hero-fg-dark h1.brand-title--chrome {
    background: linear-gradient(180deg, color-mix(in srgb, var(--app-accent) 40%, #0f172a) 0%, color-mix(in srgb, var(--app-accent-hover, var(--app-accent)) 65%, #0f172a) 46%, color-mix(in srgb, var(--app-accent-soft) 60%, #ffffff) 52%, color-mix(in srgb, var(--app-accent) 50%, #1e293b) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
}
.page-header.hero-fg-dark h1.brand-title--echo {
    color: #0f172a !important;
    text-shadow:
        1px 1px 0 rgb(255 255 255 / 0.45),
        2px 2px 0 var(--app-accent),
        3px 3px 0 color-mix(in srgb, var(--app-accent-hover, var(--app-accent)) 65%, transparent) !important;
}

