@font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 300;
    font-display: swap;
    src: url('../poppins%20font/Poppins-Light.ttf') format('truetype');
}

@font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../poppins%20font/Poppins-Regular.ttf') format('truetype');
}

@font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('../poppins%20font/Poppins-Medium.ttf') format('truetype');
}

@font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../poppins%20font/Poppins-SemiBold.ttf') format('truetype');
}

@font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../poppins%20font/Poppins-Bold.ttf') format('truetype');
}

@font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 800;
    font-display: swap;
    src: url('../poppins%20font/Poppins-ExtraBold.ttf') format('truetype');
}

:root {
    --font-family: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    --font-sans: var(--font-family);
    --bg: #f4f7fb;
    --surface: #ffffff;
    --surface-strong: #ffffff;
    --surface-contrast: #0f172a;
    --line: #e6ebf2;
    --text: #172033;
    --muted: #7b869c;
    --accent: #21693A;
    --accent-dark: #185830;
    --accent-soft: #EAF4ED;
    --success: #166534;
    --danger: #b42318;
    --shadow: 0 14px 32px rgba(15, 23, 42, 0.05);
    --radius-lg: 20px;
    --radius-md: 14px;
    --radius-sm: 10px;
}

html {
    scroll-behavior: smooth;
}

body {
    margin: 0;
    font-family: var(--font-sans);
    font-weight: 400;
    line-height: 1.5;
    background: var(--bg);
    color: var(--text);
}

.page-loader-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 9999;
    background: rgba(255, 255, 255, 0.6);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition: opacity 0.22s ease, visibility 0.22s ease;
}

.page-loader-overlay.is-hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.page-loader-overlay__content {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.65rem;
}

.page-loader-overlay__dots {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
}

.page-loader-overlay__dot {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #2e7d32;
    animation: page-loader-bounce 1s infinite ease-in-out;
}

.page-loader-overlay__dot:nth-child(2) {
    background: #43a047;
    animation-delay: 0.12s;
}

.page-loader-overlay__dot:nth-child(3) {
    background: #66bb6a;
    animation-delay: 0.24s;
}

.page-loader-overlay__text {
    margin: 0;
    color: #1f5d33;
    font-size: 0.86rem;
    font-weight: 600;
    min-height: 1.2em;
}

@keyframes page-loader-bounce {
    0%,
    80%,
    100% {
        transform: translateY(0) scale(0.82);
        opacity: 0.72;
    }

    40% {
        transform: translateY(-8px) scale(1.08);
        opacity: 1;
    }
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-weight: 600;
    letter-spacing: -0.015em;
    line-height: 1.2;
}

a {
    color: inherit;
    text-decoration: none;
}

button,
input,
select,
textarea {
    font: inherit;
}

/* Filament-style dropdown baseline */
select {
    font-family: var(--font-family);
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns="http://www.w3.org/2000/svg"%20width="16"%20height="16"%20viewBox="0%200%2024%2024"%3E%3Cpath%20fill="none"%20stroke="%2321693A"%20stroke-linecap="round"%20stroke-linejoin="round"%20stroke-width="2"%20d="m6%209%206%206%206-6"/%3E%3C/svg%3E');
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
    background-size: 1rem;
    padding-right: 2.3rem;
    transition: border-color 0.18s ease, box-shadow 0.18s ease, background-color 0.18s ease;
}

select:hover:not(:disabled) {
    border-color: #cbd5e1;
    background-color: #f8fafc;
}

select:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(33, 105, 58, 0.1);
}

select:disabled {
    background-color: #f9fafb;
    color: var(--muted);
    cursor: not-allowed;
}


/* ── Auth page hero spacing fix ── */
.login-page__hero,
.registration-page__hero {
    padding-bottom: 0;
    margin-bottom: 0;
}

.login-page__hero .auth-card__header,
.registration-page__hero .auth-card__header {
    padding-bottom: 1.25rem;
    margin-bottom: 0;
}

.login-page__hero .auth-card__header h1,
.registration-page__hero .auth-card__header h1 {
    font-weight: 800;
    margin-bottom: 0.35rem;
}

.login-page__hero .auth-card__header p,
.registration-page__hero .auth-card__header p {
    margin-top: 0;
    margin-bottom: 0;
}




/* Keep native dropdown items aligned with system font and gray hover */
select option {
    font-family: var(--font-family);
    background-color: #ffffff;
    color: var(--text);
}

select option:hover {
    background: linear-gradient(#e5e7eb, #e5e7eb);
    background-color: #e5e7eb;
}

select option:checked {
    background: linear-gradient(#e2e8f0, #e2e8f0);
    background-color: #e2e8f0;
}

/* Filament-like select component (Tom Select) */
.ts-wrapper {
    width: 100%;
    font-family: var(--font-family);
    position: relative;
}

.ts-wrapper.dropdown-active {
    z-index: 60;
}

.ts-wrapper.single .ts-control,
.ts-wrapper.multi .ts-control {
    min-height: 46px;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: #ffffff;
    box-shadow: none;
    padding: 0.56rem 2.25rem 0.56rem 0.9rem;
    font-family: var(--font-family);
    font-size: 0.98rem;
    font-weight: 500;
    color: var(--text);
    display: flex;
    align-items: center;
    position: relative;
}

.ts-wrapper.focus .ts-control {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(33, 105, 58, 0.1);
}

.ts-wrapper .ts-control input {
    font-family: var(--font-family);
    color: var(--text);
    font-size: 0.98rem;
    line-height: 1.3;
}

.ts-wrapper .ts-control input::placeholder {
    color: #94a3b8;
}

.ts-wrapper.single .ts-control > .item {
    font-size: 0.98rem;
    line-height: 1.3;
}

.ts-wrapper.single .ts-control:after {
    content: '';
    position: absolute;
    right: 0.72rem;
    top: calc(50% - 8px);
    border: 0;
    background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"%3E%3Cpath fill="none" stroke="%2364758b" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6 9 6 6 6-6"/%3E%3C/svg%3E');
    background-repeat: no-repeat;
    background-size: 16px 16px;
    background-position: center;
    pointer-events: none;
    width: 16px;
    height: 16px;
    margin: 0;
}

.ts-wrapper.single.dropdown-active .ts-control:after {
    content: '';
}

/* Guard against native select leaking under TomSelect (double dropdown UI). */
select.ts-hidden-accessible,
select.time-select.ts-hidden-accessible {
    display: none !important;
}

select.is-tomselect-native-hidden {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    opacity: 0 !important;
    pointer-events: none !important;
    overflow: hidden !important;
    clip: rect(0 0 0 0) !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
}

.ts-dropdown {
    z-index: 9999;
    border: 1px solid #dbe2ec;
    border-radius: 12px;
    box-shadow: 0 16px 34px rgba(15, 23, 42, 0.12);
    margin-top: 6px;
    overflow: hidden;
    font-family: var(--font-family);
}

.ts-dropdown .dropdown-input-wrap {
    padding: 0.55rem;
    border-bottom: 1px solid #eef2f7;
    background: #ffffff;
}

.ts-dropdown .dropdown-input {
    width: 100%;
    min-height: 38px;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    padding: 0 0.75rem;
    font-family: var(--font-family);
    color: var(--text);
}

.ts-dropdown .dropdown-input:focus {
    border-color: var(--accent);
    outline: none;
}

.ts-dropdown .option,
.ts-dropdown .optgroup-header,
.ts-dropdown .no-results,
.ts-dropdown .create {
    font-family: var(--font-family);
}

.ts-dropdown .option {
    padding: 0.68rem 0.9rem;
    font-size: 0.97rem;
    line-height: 1.32;
    color: var(--text);
    background: #ffffff;
}

.ts-dropdown .option:hover,
.ts-dropdown .option.active {
    background: #e5e7eb;
    color: var(--text);
}

.ts-dropdown .option.selected {
    background: #e2e8f0;
    color: var(--text);
}

.ts-dropdown .no-results {
    padding: 0.65rem 0.85rem;
    color: #64748b;
}

.ts-dropdown--compact-3 .ts-dropdown-content {
    max-height: 136px;
    overflow-y: auto;
}

.page-church-filter .ts-wrapper {
    width: var(--page-church-filter-select-width, 210px);
    min-width: var(--page-church-filter-select-width, 210px);
    max-width: var(--page-church-filter-select-width, 210px);
    flex-shrink: 0;
}

.page-church-filter .ts-wrapper.single .ts-control {
    min-height: 36px;
    border-radius: 10px;
    font-size: 0.88rem;
    font-weight: 600;
    padding: 0.34rem 2.2rem 0.34rem 0.6rem;
    overflow: hidden;
}

.page-church-filter .ts-wrapper.single .ts-control > .item {
    display: block;
    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.field-group--compact-select .ts-wrapper.single .ts-control,
.toolbar-form .field-group--compact-select .ts-wrapper.single .ts-control {
    border-radius: 12px;
    font-size: 0.98rem;
}

.attendance-status-select + .ts-wrapper.single .ts-control,
.time-select + .ts-wrapper.single .ts-control {
    border-radius: 10px;
}

.ts-dropdown.ts-dropdown--time .ts-dropdown-content {
    max-height: 222px;
    overflow-y: auto;
}

.ts-dropdown.ts-dropdown--time {
    z-index: 10020 !important;
}

.ts-dropdown.ts-dropdown--time .option {
    min-height: 36px;
    display: flex;
    align-items: center;
}

/* Remove redundant outer indicator for time dropdown wrappers. */
.time-select + .ts-wrapper::before,
.time-select + .ts-wrapper::after {
    content: none !important;
    display: none !important;
}


.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    min-height: 36px;
    padding: 0.5rem 0.9rem;
    border: 1px solid transparent;
    border-radius: 10px;
    background: var(--accent);
    color: #fff;
    font-weight: 500;
    font-size: 0.9rem;
    line-height: 1.1;
    box-sizing: border-box;
    white-space: nowrap;
    max-width: 100%;
    cursor: pointer;
    transition: transform 0.18s ease, background 0.18s ease;
}

.button:hover {
    transform: translateY(-1px);
    background: var(--accent-dark);
    color: #fff;
}

.button:disabled {
    opacity: 0.55;
    cursor: not-allowed;
    transform: none;
}

.button--secondary {
    background: #1d4ed8;
}

.button--ghost {
    background: #fff;
    border-color: var(--line);
    color: var(--text);
}

.button--primary {
    background: var(--accent);
    color: #fff;
}

.button--small {
    min-height: 32px;
    padding: 0.38rem 0.75rem;
    font-size: 0.84rem;
}

.button-group {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.landing-page {
    min-height: 100vh;
    background:
        radial-gradient(1200px 380px at 50% -8%, rgba(255, 255, 255, 0.95) 0%, rgba(244, 247, 251, 0) 65%),
        linear-gradient(180deg, #f7f8fb 0%, #eef3f8 100%);
}

.hero-section,
.marketing-section,
.auth-layout,
.page-content {
    width: min(1180px, calc(100% - 2rem));
    margin-inline: auto;
}

.landing-showcase {
    width: 100%;
    max-width: none;
    margin-inline: 0;
    padding: 1.15rem 0 2.3rem;
}

.landing-showcase__shell {
    width: min(1560px, calc(100% - 1.5rem));
    margin-inline: auto;
    border: 1px solid #dce3ef;
    background: #ffffff;
    border-radius: 28px;
    box-shadow: 0 26px 54px rgba(18, 35, 77, 0.12);
    padding: 1.1rem 1.1rem 1.3rem;
}

.landing-showcase__top {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 0.8rem;
    border: 1px solid #edf1f8;
    background: #fbfcff;
    border-radius: 16px;
    padding: 0.58rem 0.78rem;
}

.landing-showcase__brand {
    font-size: 1rem;
    font-weight: 800;
    letter-spacing: -0.02em;
    color: #141c2d;
}

.landing-showcase__menu {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    gap: 0.95rem;
}

.landing-showcase__menu a {
    color: #52627d;
    font-size: 0.82rem;
    font-weight: 600;
}

.landing-showcase__actions {
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
    color: #6d7b93;
    font-size: 0.76rem;
    font-weight: 600;
}

.landing-showcase__center {
    max-width: 820px;
    margin: 1.7rem auto 1.25rem;
    text-align: center;
    display: grid;
    justify-items: center;
    gap: 0.85rem;
}

.landing-showcase__kicker {
    margin: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
    padding: 0.2rem 0.6rem;
    border-radius: 999px;
    border: 1px solid #e2e8f4;
    background: #f7f9ff;
    color: #5f6f8a;
    font-size: 0.74rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.landing-showcase__center h1 {
    margin: 0;
    max-width: 860px;
    color: #141a2a;
    font-size: clamp(2rem, 5.5vw, 4.15rem);
    line-height: 1.02;
    font-weight: 600;
    letter-spacing: -0.04em;
}

.landing-showcase__lead {
    margin: 0;
    max-width: 640px;
    color: #56657f;
    font-size: 0.98rem;
    line-height: 1.6;
}

.landing-showcase__cta {
    margin-top: 0.25rem;
}

.landing-strip {
    margin-top: 1rem;
    padding: 0.65rem 0.6rem 0.82rem;
    border-radius: 18px;
    border: 1px solid #e7edf8;
    background: linear-gradient(180deg, #f8faff 0%, #f4f7ff 100%);
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 0.35rem;
    align-items: center;
}

.landing-strip__stage {
    position: relative;
    min-height: 142px;
    perspective: 1100px;
    transform-style: preserve-3d;
}

.landing-strip__item {
    position: absolute;
    left: 50%;
    top: 8px;
    width: 84px;
    height: 122px;
    border: 0;
    border-radius: 16px;
    padding: 0;
    background: transparent;
    transform-origin: center center;
    transform: translateX(-50%);
    transition: transform 0.45s ease, opacity 0.3s ease;
    cursor: pointer;
}

.landing-strip__item.is-active {
    width: 92px;
    height: 128px;
}

.landing-strip__image {
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 16px;
    background-size: cover;
    background-position: center;
    box-shadow: 0 12px 20px rgba(28, 42, 73, 0.22);
    border: 1px solid rgba(255, 255, 255, 0.72);
}

.landing-strip__item.is-active .landing-strip__image {
    box-shadow: 0 14px 28px rgba(19, 32, 67, 0.32);
}

.landing-strip__nav {
    width: 36px;
    height: 36px;
    border-radius: 12px;
    border: 1px solid #dbe4f4;
    background: #fff;
    color: #425373;
    cursor: pointer;
}

.landing-strip__dots {
    margin-top: 0.82rem;
    display: inline-flex;
    justify-content: center;
    gap: 0.35rem;
    width: 100%;
}

.landing-strip__dot {
    width: 8px;
    height: 8px;
    border: 0;
    border-radius: 999px;
    background: #d2dbeb;
    cursor: pointer;
}

.landing-strip__dot.is-active {
    width: 22px;
    background: #111827;
}

.landing-showcase__hint {
    margin-top: 0.45rem;
    text-align: center;
    color: #7a869d;
    font-size: 0.78rem;
}

.hero-panel__card,
.feature-card,
.role-card,
.module-pill-grid span,
.panel-card,
.stat-card,
.status-card,
.auth-card,
.sidebar,
.topbar,
.table-shell,
.timeline-list article {
    background: var(--surface);
    border: 1px solid var(--line);
    box-shadow: var(--shadow);
}

.hero-panel__card,
.feature-card,
.role-card,
.panel-card,
.stat-card,
.status-card,
.auth-card,
.table-shell,
.timeline-list article {
    border-radius: var(--radius-lg);
}

.hero-panel__card,
.feature-card,
.role-card,
.panel-card,
.stat-card,
.status-card,
.auth-card,
.timeline-list article {
    padding: 1.4rem;
}

.hero-panel__card span,
.stat-card p,
.detail-grid span {
    color: var(--muted);
}

.marketing-section {
    padding: 2rem 0 1rem;
}

.marketing-section--alt {
    padding-block: 2.5rem;
}

.section-heading {
    max-width: 62ch;
    margin-bottom: 1.25rem;
}

.section-heading h2,
.panel-card h2,
.auth-card h1 {
    margin: 0;
    font-size: clamp(1.5rem, 3vw, 2.2rem);
    font-weight: 600;
    letter-spacing: -0.02em;
}

.feature-grid,
.role-grid,
.module-pill-grid,
.dashboard-grid,
.dashboard-panels,
.detail-grid {
    display: grid;
    gap: 1rem;
}

.feature-grid,
.dashboard-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.role-grid,
.dashboard-panels {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.dashboard-panels--single {
    grid-template-columns: 1fr;
}

.module-pill-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.module-pill-grid span {
    display: inline-flex;
    justify-content: center;
    padding: 1rem;
    border-radius: 999px;
    font-weight: 700;
}

.inline-errors {
    margin: 0.7rem 0 1rem;
    padding: 0.8rem 0.95rem;
    border: 1px solid #fecaca;
    border-radius: 12px;
    background: #fff1f2;
}

.inline-errors p {
    margin: 0;
    color: #9f1239;
    font-size: 0.9rem;
}

.website-carousel-layout {
    display: grid;
    grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
    gap: 0.95rem;
}

.website-carousel-limit {
    margin: 0 0 0.9rem;
    color: #64748b;
    font-size: 0.9rem;
}

.website-slide-list {
    display: grid;
    gap: 0.8rem;
}

.website-slide-item {
    position: relative;
    z-index: 1;
    border: 1px solid #dbe4f3;
    border-radius: 14px;
    background: #fbfcff;
    overflow: visible;
}

.website-slide-item.is-editing {
    z-index: 25;
}

.website-slide-item__preview {
    min-height: 126px;
    background-size: cover;
    background-position: center;
    position: relative;
    overflow: hidden;
    border-radius: 14px 14px 0 0;
}

.website-slide-item__preview::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(110deg, rgba(8, 18, 41, 0.68) 0%, rgba(13, 32, 75, 0.18) 100%);
}

.website-slide-item__theme {
    position: absolute;
    top: 0.7rem;
    right: 0.7rem;
    z-index: 1;
    border-radius: 999px;
    padding: 0.22rem 0.5rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    background: rgba(255, 255, 255, 0.85);
    color: #1e2b48;
}

.website-slide-item__fields {
    padding: 0.8rem;
}

.website-slide-item__summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.72rem 0.8rem;
    border-top: 1px solid #dbe4f3;
    border-bottom: 1px solid #e4eaf4;
    background: #f8faff;
}

.website-slide-item__summary strong {
    display: block;
    font-size: 0.98rem;
}

.website-slide-item__summary small {
    display: block;
    margin-top: 0.2rem;
    color: #66758f;
    font-size: 0.82rem;
}

.website-slide-item__fields[hidden] {
    display: none !important;
}

.website-slide-item__actions {
    margin-top: 0.7rem;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: 0.65rem;
}

.website-slide-item__actions .button {
    margin-left: auto;
}

.website-slide-item__delete {
    display: flex;
    justify-content: flex-end;
    margin-top: -0.3rem;
    margin-bottom: 0.6rem;
}

.website-slide-modal__checks {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    flex-wrap: wrap;
}

.muted {
    color: #64748b;
}

.app-shell {
    display: grid;
    grid-template-columns: 248px minmax(0, 1fr);
    min-height: 100vh;
    gap: 1.25rem;
    padding: 1.25rem;
}

.sidebar {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    padding: 1rem 0.9rem;
    border-radius: 18px;
    position: sticky;
    top: 1.25rem;
    height: fit-content;
    max-height: calc(100vh - 2.5rem);
    overflow: hidden;
}

.sidebar__brand {
    padding: 0.1rem 0.25rem 0.45rem;
    display: flex;
    justify-content: flex-start;
}

.brand-mark--sidebar {
    display: block;
}

.brand-mark__logo {
    display: block;
    width: 100%;
    max-width: 130px;
    height: auto;
    object-fit: contain;
}

.sidebar__footer {
    margin-top: auto;
    padding-top: 0.75rem;
    display: flex;
    flex-direction: column;
    min-height: 0;
    padding-top: 0.15rem;
    gap: 0.55rem;
}

.sidebar__section-label {
    padding: 0.5rem 0.9rem 0;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--muted);
}

.sidebar__nav {
    display: grid;
    gap: 0.25rem;
    margin: 0.75rem 0 1.25rem;
    flex: 0 0 auto;
    max-height: calc((3.15rem * 6) + (0.25rem * 5));
    overflow-y: auto;
    overscroll-behavior: contain;
    padding-right: 0.2rem;
}

.sidebar__link {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 0.85rem 0.9rem;
    border-radius: 12px;
    color: var(--muted);
    font-weight: 500;
}

.sidebar__link.is-active,
.sidebar__link:hover {
    background: #f3f5fb;
    color: var(--surface-contrast);
}

.sidebar__group {
    display: grid;
    gap: 0.28rem;
}

.sidebar__group-toggle {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.85rem 0.9rem;
    border: 0;
    border-radius: 12px;
    background: transparent;
    color: var(--muted);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
}

.sidebar__group-toggle:hover,
.sidebar__group-toggle.is-active {
    background: #f3f5fb;
    color: var(--surface-contrast);
}

.sidebar__group-toggle-main {
    display: inline-flex;
    align-items: center;
    gap: 0.85rem;
    min-width: 0;
}

.sidebar__group-chevron {
    font-size: 0.96rem;
    color: #8a95ab;
    transition: transform 0.18s ease;
    flex-shrink: 0;
}

.sidebar__group.is-open .sidebar__group-chevron {
    transform: rotate(180deg);
}

.sidebar__subnav {
    display: grid;
    gap: 0.22rem;
    margin: 0 0.15rem 0.2rem 1.55rem;
    padding-left: 0.62rem;
    border-left: 1px solid #e3e9f3;
}

.sidebar__sublink {
    display: inline-flex;
    align-items: center;
    gap: 0.68rem;
    padding: 0.7rem 0.78rem;
    border-radius: 10px;
    color: #6d7892;
    font-weight: 500;
    font-size: 0.9rem;
    transition: background 0.16s ease, color 0.16s ease;
}

.sidebar__sublink ion-icon {
    font-size: 0.95rem;
    color: #8c97ad;
    flex-shrink: 0;
}

.sidebar__sublink:hover,
.sidebar__sublink.is-active {
    background: #f3f5fb;
    color: var(--surface-contrast);
}

.sidebar__sublink:hover ion-icon,
.sidebar__sublink.is-active ion-icon {
    color: #727f99;
}

.sidebar__user-card {
    display: grid;
    gap: 0.2rem;
    padding: 0.95rem;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #fafbff;
}

.sidebar__user-card--link {
    transition: border-color 0.16s ease, background 0.16s ease;
}

.sidebar__user-card--link:hover {
    border-color: #d4dced;
    background: #f5f7ff;
}

.sidebar__user-avatar {
    width: 40px;
    height: 40px;
    border-radius: 999px;
    border: 1px solid #d7dfeb;
    background: linear-gradient(135deg, #21693A, #5b8f6a);
    color: #ffffff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    overflow: hidden;
    margin-bottom: 0.15rem;
}

.sidebar__user-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.sidebar__user-card strong {
    font-size: 0.95rem;
}

.sidebar__user-card span {
    color: var(--muted);
    font-size: 0.88rem;
}

.sidebar__logout {
    width: 100%;
    align-self: stretch;
    justify-content: center;
    box-sizing: border-box;
    min-height: 34px;
    padding: 0.42rem 0.8rem;
    font-size: 0.84rem;
    margin-top: 0;
}

.sidebar__logout ion-icon {
    font-size: 0.95rem;
}

.app-shell__content {
    display: grid;
    grid-template-rows: auto 1fr;
    gap: 1.25rem;
    min-width: 0;
}

.topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.25rem;
    padding: 1rem 1.25rem;
    border-radius: 18px;
    position: sticky;
    top: 1rem;
    z-index: 40;
}

.topbar__intro {
    min-width: 0;
}

.topbar__breadcrumb {
    margin: 0 0 0.3rem;
    color: var(--muted);
    font-size: 0.86rem;
}

.topbar__title {
    margin: 0;
    font-size: 1.9rem;
    font-weight: 600;
    letter-spacing: -0.02em;
}

.topbar__actions {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.topbar__user {
    display: inline-flex;
    align-items: center;
    padding-left: 0.25rem;
}

.topbar__user--link {
    border-radius: 10px;
    padding: 0.2rem 0.35rem;
    transition: background 0.16s ease;
}

.topbar__user--link:hover {
    background: #f3f6fd;
}

.topbar__user-avatar {
    width: 40px;
    height: 40px;
    border-radius: 999px;
    border: 1px solid #d7dfeb;
    background: linear-gradient(135deg, #21693A, #5b8f6a);
    color: #ffffff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    overflow: hidden;
    flex: 0 0 40px;
}

.topbar__user-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.icon-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: #fff;
    color: var(--text);
    cursor: pointer;
}

.notif-trigger {
    position: relative;
}

.notif-trigger__count {
    position: absolute;
    top: -6px;
    right: -4px;
    min-width: 18px;
    height: 18px;
    border-radius: 999px;
    background: #eff6ff;
    color: #1d4ed8;
    border: 1px solid #bfdbfe;
    font-size: 0.68rem;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 0.25rem;
}

.notif-trigger__count[hidden] {
    display: none !important;
}

[hidden] {
    display: none !important;
}

.notif-overlay {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.34);
    z-index: 125;
}

.notif-overlay[hidden] {
    display: none !important;
}

.notif-drawer {
    position: fixed;
    top: 0;
    right: 0;
    height: 100vh;
    width: min(370px, calc(100% - 0.5rem));
    background: #fff;
    border-left: 1px solid var(--line);
    z-index: 130;
    display: grid;
    grid-template-rows: auto auto 1fr;
}

.notif-drawer[hidden] {
    display: none !important;
}

.notif-drawer__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.65rem;
    padding: 0.9rem 0.85rem 0.45rem;
}

.notif-drawer__title-wrap {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
}

.notif-drawer__title-wrap h2 {
    margin: 0;
    font-size: 1.9rem;
    font-weight: 700;
    letter-spacing: -0.015em;
}

.notif-drawer__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    border-radius: 999px;
    background: #eff6ff;
    color: #1d4ed8;
    border: 1px solid #bfdbfe;
    font-size: 0.66rem;
    font-weight: 700;
}

.notif-drawer__badge[hidden] {
    display: none !important;
}

.notif-drawer__actions {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0 0.85rem 0.95rem;
    border-bottom: 1px solid #e7edf6;
}

.notif-drawer__actions .text-button {
    font-size: 0.92rem;
    font-weight: 600;
    padding: 0;
}

.notif-drawer__list {
    overflow-y: auto;
    padding: 0.55rem 0.85rem 0.85rem;
}

.notif-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.55rem;
    padding: 0.66rem 0.2rem;
    margin-top: 0;
    border: 0;
    border-bottom: 1px solid #edf1f7;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.notif-item.is-unread {
    background: transparent;
    border-bottom-color: #e3eaf6;
}

.notif-item.is-read {
    opacity: 1;
}

.notif-item:first-child {
    margin-top: 0;
}

.notif-item__main {
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
    min-width: 0;
    flex: 1;
}

.notif-item__body {
    display: grid;
    gap: 0.12rem;
    min-width: 0;
}

.notif-item__meta-row {
    display: flex;
    align-items: baseline;
    gap: 0.4rem;
}

.notif-item__body strong {
    font-size: 0.94rem;
    line-height: 1.32;
    margin: 0;
    letter-spacing: -0.01em;
    white-space: normal;
}

.notif-item__body small {
    color: #72809a;
    font-size: 0.74rem;
    white-space: nowrap;
}

.notif-item__body p {
    margin: 0;
    color: #43506a;
    line-height: 1.3;
    font-size: 0.86rem;
    line-clamp: 2;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
}

.notif-item__time {
    display: inline-block;
    margin-top: 0.08rem;
}

.notif-item .icon-action {
    width: 30px;
    height: 30px;
    border-radius: 999px;
    margin-top: 0;
}

.notif-item .icon-action ion-icon {
    font-size: 0.95rem;
}

.notif-item__status {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 42px;
    height: 24px;
    padding: 0 0.45rem;
    border-radius: 999px;
    border: 1px solid #d7e0ef;
    background: #f7f9fc;
    color: #6b7890;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.01em;
}

.notif-item--empty {
    justify-content: flex-start;
    background: #fbfcff;
}

.notif-item--empty strong {
    font-size: 0.86rem;
}

.notif-item--empty p {
    margin-top: 0.2rem;
    font-size: 0.8rem;
}

@media (max-width: 640px) {
    .notif-drawer {
        width: min(350px, calc(100% - 0.3rem));
    }

    .notif-drawer__title-wrap h2 {
        font-size: 1.65rem;
    }

    .notif-item__body strong {
        font-size: 0.9rem;
    }

    .notif-item__meta-row {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.1rem;
    }
}

body.is-notif-open {
    overflow: hidden;
}

.topbar__toggle {
    display: none;
    border: 0;
    background: transparent;
    font-size: 1.6rem;
    color: var(--text);
    cursor: pointer;
}

.page-content {
    padding-bottom: 2rem;
    min-width: 0;
    overflow-x: hidden;
}

.dashboard-toolbar {
    margin-bottom: 1rem;
}

.dashboard-toolbar__banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.25rem;
    border-radius: 16px;
    background: linear-gradient(135deg, #665cf6 0%, #7d6dff 100%);
    color: #fff;
}

.dashboard-toolbar__eyebrow {
    margin: 0 0 0.25rem;
    font-size: 0.74rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    opacity: 0.75;
}

.dashboard-toolbar__banner strong {
    font-size: 1rem;
    font-weight: 600;
}

.dashboard-toolbar__actions {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.stat-card strong {
    display: block;
    margin-top: 0.55rem;
    font-size: 2rem;
    letter-spacing: -0.03em;
}

.stat-card small {
    display: block;
    margin-top: 0.6rem;
    color: var(--success);
    font-size: 0.86rem;
}

.stat-cards-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.stat-card__label {
    margin: 0;
    font-size: 0.86rem;
    font-weight: 600;
    color: #7a8797;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.stat-card__value {
    display: block;
    margin-top: 0.4rem;
    font-size: 1.8rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: #1f2a37;
}

.stat-card__meta {
    display: block;
    margin-top: 0.4rem;
    font-size: 0.78rem;
    color: #9ca6b5;
}

.resources-drive {
    display: grid;
    grid-template-columns: minmax(250px, 320px) minmax(0, 1fr);
    gap: 1rem;
    align-items: start;
}

.resources-drive__sidebar {
    border: 1px solid #dfe6f1;
    border-radius: 14px;
    background: #f8fafc;
    padding: 0.85rem;
    display: grid;
    gap: 0.8rem;
    align-content: start;
    min-width: 0;
}

.resources-drive__content {
    border: 1px solid #dfe6f1;
    border-radius: 14px;
    background: #fff;
    padding: 0.95rem;
    min-height: 320px;
    min-width: 0;
}

.resources-drive__sidebar .toolbar-form {
    grid-template-columns: 1fr;
    gap: 0.6rem;
    margin-bottom: 0;
    padding: 0.65rem;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    background: #fff;
}

.resources-drive__sidebar .toolbar-form__actions {
    justify-content: flex-start;
    flex-wrap: wrap;
}

.resources-drive__sidebar .toolbar-form__actions .button {
    width: auto;
}

.resources-drive__sidebar .field-group {
    min-width: 0;
}

.resources-drive__sidebar .field-group input,
.resources-drive__sidebar .field-group select,
.resources-drive__sidebar .field-group textarea {
    width: 100%;
    min-width: 0;
}

.resources-drive__sidebar .field-group input[type="file"] {
    max-width: 100%;
    overflow: hidden;
}

.resources-drive__header {
    position: relative;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.9rem;
    padding: 0.15rem 0;
}

.resources-drive__header h3 {
    margin: 0;
    font-size: 1.1rem;
}

.resources-drive__header p {
    margin: 0;
    color: #64748b;
    font-size: 0.86rem;
}

.resources-drive-nav {
    display: grid;
    gap: 0.45rem;
}

.resources-drive-nav__row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 0.45rem;
    align-items: center;
}

.resources-drive-nav__row:first-child {
    grid-template-columns: 1fr;
}

.resources-drive-nav__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #fff;
    color: #334155;
    text-decoration: none;
    padding: 0.48rem 0.62rem;
    min-width: 0;
}

.resources-drive-nav__item span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.resources-drive-nav__item small {
    color: #64748b;
    font-size: 0.78rem;
}

.resources-drive-nav__quick-add {
    width: 34px;
    height: 34px;
    border-radius: 10px;
}

.resources-drive-nav__actions {
    display: flex;
    align-items: center;
    gap: 0.35rem;
}

.resources-drive-nav__actions form {
    margin: 0;
}

.resources-drive-nav__empty {
    margin: 0.2rem 0 0;
    color: #64748b;
    font-size: 0.84rem;
    line-height: 1.35;
}

.resources-drive-nav__item.is-active {
    border-color: #cdd9ef;
    background: #eef4ff;
    color: #1e293b;
}

.resources-drive__manage h4 {
    margin: 0 0 0.45rem;
    font-size: 0.88rem;
    color: #475569;
}

.resources-drive-folder-row {
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #fff;
    padding: 0.55rem;
    display: grid;
    gap: 0.4rem;
    margin-bottom: 0.5rem;
}

.resources-drive-folder-row strong {
    font-size: 0.9rem;
    color: #1f2937;
}

.resources-drive-folder-row small {
    color: #64748b;
}

.resources-drive-folder-row__rename {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 0.4rem;
    align-items: center;
}

.resources-drive-folder-row__rename input {
    min-width: 0;
    flex: 1;
}

.resources-drive-grid {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    max-height: min(58vh, 680px);
    overflow-y: auto;
    padding-right: 0.15rem;
    padding-bottom: 0.35rem;
    align-content: start;
    align-items: start;
}

.resources-drive-card {
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    background: #fff;
    padding: 0.9rem;
    box-shadow: none;
    display: grid;
    gap: 0.5rem;
    position: relative;
    overflow: hidden;
    min-height: 162px;
}

.resources-drive-card__body {
    display: grid;
    grid-template-rows: auto auto 1fr;
    gap: 0.45rem;
    min-height: 132px;
}

.resources-drive-card__top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
}

.resources-drive-card__type {
    border: 1px solid #dbe4f5;
    border-radius: 999px;
    padding: 0.12rem 0.46rem;
    font-size: 0.7rem;
    font-weight: 700;
    color: #2563eb;
    background: #eff6ff;
}

.resources-drive-card__top small {
    color: #64748b;
    font-size: 0.74rem;
}

.resources-drive-card h4 {
    margin: 0;
    font-size: 0.9rem;
    color: #1f2937;
    line-height: 1.25;
    white-space: normal;
    display: -webkit-box;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    min-height: 2.5em;
}

.resources-drive-card p {
    margin: 0;
    font-size: 0.78rem;
    color: #64748b;
}

.resources-drive-card__description {
    margin: -0.04rem 0 0;
    font-size: 0.76rem;
    color: #64748b;
    line-height: 1.28;
    display: -webkit-box;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    min-height: 2.2em;
}

.resources-drive-card__description--empty {
    visibility: hidden;
}

.resources-drive-card__actions {
    display: flex;
    gap: 0.4rem;
    flex-wrap: nowrap;
    justify-content: flex-end;
    align-items: center;
    margin-top: 0.15rem;
}

.resources-drive-card__actions form {
    margin: 0;
}

.resources-drive-card__action {
    width: 34px;
    height: 34px;
    border-radius: 9px;
}

.resources-drive-card__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 0.15rem;
}

.resources-drive-card__footer p {
    margin: 0;
    flex: 1 1 auto;
    color: #49566b;
    font-size: 0.72rem;
    line-height: 1.25;
}

.resources-drive-card__details {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.95rem;
    background: rgba(255, 255, 255, 0.98);
    border-radius: 12px;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 160ms ease, transform 160ms ease;
    pointer-events: none;
    z-index: 2;
}

.resources-drive-card:hover .resources-drive-card__details,
.resources-drive-card:focus-within .resources-drive-card__details {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.resources-drive-card__details-label {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #7b8794;
}

.resources-drive-card__details h5 {
    margin: 0;
    font-size: 0.92rem;
    line-height: 1.2;
    color: #111827;
    display: -webkit-box;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
}

.resources-drive-card__details-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.45rem;
    margin-top: auto;
    padding-top: 0.4rem;
}

.resources-drive-card__details p {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.45;
    color: #4b5563;
}

.resources-drive-card__details p:not(.resources-drive-card__details-meta) {
    max-height: 6.2em;
    overflow: auto;
}

.resources-drive-card__details-meta {
    font-size: 0.74rem;
    line-height: 1.3;
    color: #667085;
}

.resources-drive-card__body,
.resources-drive-card__details {
    transition: opacity 160ms ease, transform 160ms ease;
}

.resources-drive-empty {
    border: 1px dashed #d3dce9;
    border-radius: 12px;
    padding: 1.1rem;
    color: #64748b;
    text-align: center;
}

.resources-modal-panel {
    width: min(760px, calc(100% - 2rem));
    border-radius: 16px;
    border: 1px solid #dfe6f1;
    padding: 0;
}

.resources-modal-note {
    margin: 0;
    color: #64748b;
    font-size: 0.86rem;
}

.resources-modal-header {
    padding: 1rem 1.1rem;
    border-bottom: 1px solid #e6ebf2;
    margin: 0;
}

.resources-modal-header h2 {
    margin: 0;
    font-size: 1.08rem;
    letter-spacing: -0.01em;
}

.resources-modal-body {
    display: grid;
    gap: 0.95rem;
    padding: 1rem 1.1rem 1.15rem;
}

.resources-modal-body .modal-dialog__footer {
    margin-top: 0.25rem;
}

@media (max-width: 640px) {
    .resources-modal-panel {
        width: calc(100% - 1rem);
    }

    .resources-modal-header,
    .resources-modal-body {
        padding-left: 0.8rem;
        padding-right: 0.8rem;
    }

    .resources-modal-body .modal-dialog__footer {
        flex-direction: column-reverse;
    }

    .resources-modal-body .modal-dialog__footer .button {
        width: 100%;
    }
}

@media (max-width: 1100px) {
    .resources-drive {
        grid-template-columns: 1fr;
    }

    .resources-drive__sidebar,
    .resources-drive__content {
        width: 100%;
    }
}

@media (max-width: 640px) {
    .resources-drive__header {
        flex-direction: column;
        align-items: flex-start;
    }

    .resources-drive-nav__item {
        padding: 0.55rem 0.6rem;
    }

    .resources-drive-folder-row__rename {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 980px) {
    .resources-drive {
        grid-template-columns: 1fr;
    }
}

.savings-summary-strip {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    border: 1px solid #e2e8f0;
    border-radius: 14px;
    overflow: hidden;
    margin-bottom: 1.25rem;
    background: #fff;
}

.savings-summary-metric {
    padding: 1rem 1.1rem;
}

.savings-summary-metric + .savings-summary-metric {
    border-left: 1px solid #e2e8f0;
}

.savings-summary-metric__label {
    margin: 0;
    font-size: 0.79rem;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    font-weight: 600;
    color: #7b8798;
}

.savings-summary-metric__value {
    display: block;
    margin-top: 0.38rem;
    font-size: 1.45rem;
    font-weight: 700;
    color: #1f2937;
    letter-spacing: -0.015em;
}

.savings-summary-metric__meta {
    display: block;
    margin-top: 0.35rem;
    font-size: 0.77rem;
    color: #64748b;
}

.savings-print-report {
    display: none;
}

.savings-print-report__header h2 {
    margin: 0;
    font-size: 1.12rem;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: #111827;
}

.savings-print-report__meta {
    margin-top: 0.75rem;
    display: grid;
    gap: 0.3rem;
}

.savings-print-report__meta p {
    margin: 0;
    font-size: 0.95rem;
    color: #111827;
}

.savings-print-report__title {
    margin: 1rem 0 0.6rem;
    font-size: 0.96rem;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: #1f2937;
}

.savings-print-report__table {
    width: 100%;
    border-collapse: collapse;
}

.savings-print-report__table th,
.savings-print-report__table td {
    border: 1px solid #d1d5db;
    padding: 0.45rem 0.5rem;
    text-align: left;
    font-size: 0.82rem;
    color: #111827;
}

.savings-print-report__table th {
    background: #f3f4f6;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

@media (max-width: 780px) {
    .savings-summary-strip {
        grid-template-columns: 1fr;
    }

    .savings-summary-metric + .savings-summary-metric {
        border-left: none;
        border-top: 1px solid #e2e8f0;
    }
}

.panel-card__header,
.panel-card__header--spread {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.75rem;
}

.panel-card__header > div:first-child,
.panel-card__header--spread > div:first-child {
    display: grid;
    gap: 0.3rem;
}

.panel-card__header .eyebrow,
.panel-card__header--spread .eyebrow {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.2;
    color: #5f6d88;
}

.panel-card__header > .button,
.panel-card__header--spread > .button,
.panel-card__header > .button-group,
.panel-card__header--spread > .button-group {
    margin-top: 0.25rem;
}

.panel-card__header > .button-group,
.panel-card__header--spread > .button-group {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
}

.panel-card__subtext {
    display: block;
    margin-top: 0.2rem;
    color: var(--muted);
    font-size: 0.92rem;
}

.page-church-filter {
    --page-church-filter-select-width: 210px;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.35rem 0.45rem;
    border: 1px solid #dde5f2;
    border-radius: 10px;
    background: #f9fbff;
    margin-top: 0.25rem;
    flex-shrink: 0;
}

.page-church-filter label {
    color: #66758f;
    font-size: 0.76rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    white-space: nowrap;
    flex-shrink: 0;
}

.page-church-filter select {
    width: var(--page-church-filter-select-width);
    min-width: var(--page-church-filter-select-width);
    max-width: var(--page-church-filter-select-width);
    border: 1px solid #d3dded;
    border-radius: 9px;
    background: #ffffff;
    color: #1f2d45;
    font-size: 0.82rem;
    font-weight: 600;
    padding: 0.42rem 2rem 0.42rem 0.58rem;
    cursor: pointer;
    flex-shrink: 0;
}

.page-header-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.75rem;
    flex-wrap: wrap;
}


.panel-card--form {
    max-width: 960px;
}

.panel-card--form-wide {
    max-width: none;
}

.member-form {
    display: grid;
    gap: 0.9rem;
}

.form-section {
    padding: 0.95rem 1rem 1rem;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #ffffff;
    box-shadow: 0 1px 0 rgba(14, 27, 53, 0.02);
}

.form-section__title {
    margin: 0;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.55rem;
    font-size: 0.84rem;
    font-weight: 700;
    letter-spacing: 0.11em;
    text-transform: uppercase;
    color: #4f5d77;
}

.form-section__title-icon {
    width: 24px;
    height: 24px;
    min-width: 24px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(180deg, #f3f7ff 0%, #e8f0ff 100%);
    border: 1px solid #d7e3f8;
    color: #4f67a6;
}

.form-section__title-icon ion-icon {
    font-size: 0.82rem;
}

.form-section__title::after {
    content: '';
    display: block;
    flex-basis: 100%;
    height: 1px;
    margin-top: 0.58rem;
    margin-bottom: 0.82rem;
    background: linear-gradient(90deg, rgba(183, 195, 218, 0.95) 0%, rgba(183, 195, 218, 0.1) 100%);
}

.form-section__subtitle {
    margin: 0;
    padding-bottom: 0.62rem;
    border-bottom: 1px solid #dfe7f3;
    color: #5f6d88;
    font-size: 0.88rem;
    line-height: 1.45;
    margin-bottom: 0.82rem;
}

.form-section__title + .form-section__subtitle {
    margin-top: 0.28rem;
}

.form-section:has(.form-section__subtitle) > .form-section__title::after {
    display: none;
}

.form-grid--compact {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.85rem 1rem;
}

.form-grid--compact .field-group {
    gap: 0.35rem;
}

.form-grid--compact .field-group span {
    font-size: 0.88rem;
    font-weight: 600;
}

.form-grid--compact .field-group .field-helper {
    font-size: 0.74rem;
    line-height: 1.35;
    color: #5f6b7a;
}

.form-grid--compact .field-group input,
.form-grid--compact .field-group select,
.form-grid--compact .field-group textarea {
    min-height: 42px;
    padding: 0.72rem 0.9rem;
    border-radius: 12px;
    background: #fff;
}

/* Registration Wizard Styles */
.panel-card--registration-wizard {
    max-width: 800px;
}

.registration-wizard__progress {
    padding: 1.1rem 1.25rem;
    background: #f8fbff;
    border-bottom: 1px solid #e1e8f0;
    margin: -1.25rem -1.25rem 1.2rem;
    border-radius: 14px 14px 0 0;
}

.wizard-step-indicator {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.8rem;
    position: relative;
}

.wizard-step-indicator::before {
    content: '';
    position: absolute;
    top: 18px;
    left: 0;
    right: 0;
    height: 2px;
    background: #d8dfe8;
    z-index: 0;
    pointer-events: none;
}

.wizard-step-indicator__step {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    position: relative;
    z-index: 1;
}

.wizard-step-indicator__circle {
    width: 36px;
    height: 36px;
    min-width: 36px;
    border-radius: 50%;
    background: #ffffff;
    border: 2px solid #cbd5e1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 700;
    color: #64748b;
    transition: all 0.28s ease;
}

.wizard-step-indicator__label {
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: #64748b;
    text-transform: uppercase;
    text-align: center;
}

.wizard-step-indicator__step.is-completed .wizard-step-indicator__circle {
    background: #166534;
    border-color: #166534;
    color: #ffffff;
}

.wizard-step-indicator__step.is-active .wizard-step-indicator__circle {
    background: #21693A;
    border-color: #21693A;
    color: #ffffff;
    box-shadow: 0 0 0 4px rgba(33, 105, 58, 0.12);
}

.wizard-step-indicator__step.is-active .wizard-step-indicator__label {
    color: #21693A;
    font-weight: 700;
}

.panel-card--registration-wizard .wizard-step-indicator::before {
    background: #e8ecef;
}

.panel-card--registration-wizard .wizard-step-indicator__step.is-active .wizard-step-indicator__circle {
    background: var(--accent);
    border-color: var(--accent);
    box-shadow: 0 0 0 4px rgba(33, 105, 58, 0.2);
}

.panel-card--registration-wizard .wizard-step-indicator__step.is-active .wizard-step-indicator__label {
    color: var(--accent);
}

.panel-card--registration-wizard .wizard-step-indicator__label {
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: none;
}

.panel-card--registration-wizard .wizard-step-indicator__circle {
    min-width: 36px;
    max-width: 36px;
    aspect-ratio: 1 / 1;
    flex-shrink: 0;
    line-height: 1;
}

.panel-card--registration-wizard .wizard-step-indicator__step.is-completed .wizard-step-indicator__circle {
    background: var(--accent-soft);
    border-color: #c7c5ff;
    color: var(--accent);
}

.registration-wizard__form {
    display: grid;
    gap: 0;
}

.wizard-step {
    padding: 1.2rem 0 0;
}

.wizard-step h3 {
    margin: 0 0 0.9rem;
    padding-bottom: 0.7rem;
    border-bottom: 2px solid #eef2f8;
    font-size: 1rem;
    font-weight: 700;
    color: #1a2844;
}

.wizard-navigation {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 1.8rem;
    padding-top: 1.5rem;
    border-top: 1px solid #e1e8f0;
}

.wizard-navigation__status {
    font-size: 0.85rem;
    font-weight: 600;
    color: #64748b;
}

.wizard-navigation__actions {
    display: flex;
    gap: 0.7rem;
    flex-wrap: wrap;
}

.wizard-navigation__actions .button {
    min-height: 44px;
}

.button--registration-primary {
    background: var(--accent);
    border-color: var(--accent);
    color: #ffffff;
    font-weight: 600;
}

.button--registration-primary:hover {
    background: var(--accent-dark);
    border-color: var(--accent-dark);
}

.panel-card--registration-wizard .wizard-navigation__actions [data-wizard-previous]:disabled {
    opacity: 0.55;
    cursor: not-allowed;
    pointer-events: none;
}

.panel-card--registration-wizard,
.panel-card--registration-wizard input,
.panel-card--registration-wizard select,
.panel-card--registration-wizard textarea,
.panel-card--registration-wizard button {
    font-family: 'Poppins', var(--font-family);
}

.panel-card--registration-wizard h2,
.panel-card--registration-wizard .form-section__title {
    letter-spacing: -0.012em;
    font-weight: 700;
}

.panel-card--registration-wizard .form-section__title {
    margin: 0;
    padding: 0;
    border-bottom: none;
    text-transform: none;
    display: block;
}

.panel-card--registration-wizard .form-section__title::after {
    content: none;
    display: none;
}

.panel-card--registration-wizard .form-section__title-icon {
    display: none !important;
}

.panel-card--registration-wizard .form-section__subtitle {
    margin: 0.35rem 0 0.95rem;
    padding: 0 0 0.75rem;
    border-bottom: 1px solid #e6ebf2;
}

.schedule-composer {
    background: linear-gradient(180deg, #ffffff 0%, #f8faff 100%);
    display: grid;
    gap: 0.85rem;
}

.schedule-composer__hint {
    margin: 0;
}

.schedule-composer__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.9rem;
    margin-top: 0.1rem;
}

.schedule-composer__grid--event {
    gap: 0.85rem;
}

.schedule-composer__grid--service {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.schedule-composer__slot {
    padding: 0.95rem;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #fff;
    display: grid;
    gap: 0.55rem;
}

.schedule-composer__slot--event {
    padding: 0.8rem 0.9rem;
    border-color: #d8e1ef;
    background: #ffffff;
    gap: 0.45rem;
}

.schedule-composer__slot-label {
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    color: #6a7690;
}

.schedule-composer__slot--event .schedule-composer__slot-label {
    font-size: 0.78rem;
    letter-spacing: 0.08em;
}

.schedule-composer__inputs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.55rem;
}

.schedule-composer__all-day-toggle {
    grid-column: 1 / -1;
    margin-top: 0.15rem;
    padding: 0.9rem 1rem;
    border: 1px dashed #ccd6e8;
    border-radius: 12px;
    background: #f7faff;
    gap: 0.5rem;
}

.schedule-composer__all-day-toggle small {
    color: #5b6984;
    font-size: 0.82rem;
}

.checkbox-field {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-weight: 600;
    color: #31405d;
}

.checkbox-field input[type='checkbox'] {
    width: 16px;
    height: 16px;
}

.schedule-composer__grid--service .schedule-composer__inputs {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.schedule-composer__inputs input {
    min-height: 44px;
    padding: 0.72rem 0.9rem;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: #fff;
}

.schedule-availability {
    grid-column: 1 / -1;
    padding: 0.9rem 1rem;
    border: 1px solid #d8e1f0;
    border-radius: 14px;
    background: #f8fbff;
    display: grid;
    gap: 0.42rem;
    margin-top: 0.2rem;
}

.schedule-availability__header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.8rem;
    padding-bottom: 0.12rem;
}

.schedule-availability strong {
    font-size: 0.93rem;
}

.schedule-availability__range {
    color: #586786;
    font-size: 0.83rem;
    font-weight: 600;
    white-space: nowrap;
}

.schedule-availability p {
    margin: 0;
    font-size: 0.88rem;
    color: #586680;
}

.schedule-availability[data-state='available'] {
    border-color: rgba(22, 101, 52, 0.28);
    background: rgba(22, 101, 52, 0.08);
}

.schedule-availability[data-state='conflict'] {
    border-color: rgba(180, 35, 24, 0.28);
    background: rgba(180, 35, 24, 0.08);
}

.schedule-availability[data-state='loading'] {
    border-color: rgba(33, 105, 58, 0.28);
    background: rgba(33, 105, 58, 0.08);
}

.schedule-availability[data-state='error'] {
    border-color: rgba(194, 65, 12, 0.32);
    background: rgba(194, 65, 12, 0.08);
}

.schedule-availability__list {
    margin: 0.2rem 0 0;
    padding-left: 1.1rem;
    color: #41506d;
    font-size: 0.84rem;
    display: grid;
    gap: 0.2rem;
}

.schedule-availability__list:empty {
    display: none;
}

.schedule-composer .info-tile {
    grid-column: 1 / -1;
}

.form-actions--sticky {
    position: sticky;
    bottom: 0.75rem;
    margin-top: 0.25rem;
    padding: 0.85rem;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.94);
    backdrop-filter: blur(6px);
}

.placeholder-list,
.timeline-list {
    display: grid;
    gap: 1rem;
}

.placeholder-list strong,
.timeline-list strong {
    display: block;
    margin-bottom: 0.35rem;
}

.toolbar-form--members {
    display: grid;
    grid-template-columns: minmax(260px, 1.45fr) minmax(120px, 0.68fr) minmax(120px, 0.68fr) minmax(150px, 0.82fr) auto !important;
    align-items: end;
    gap: 0.5rem;
    padding: 0.7rem;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: #fbfcff;
}

.toolbar-form--members .field-group {
    margin: 0;
    min-width: 0;
}

.toolbar-form--members .field-group--search {
    min-width: 0;
}

.toolbar-form--members .field-group--compact-select {
    min-width: 0;
}

.toolbar-form--members .toolbar-form__actions {
    display: flex;
    align-items: end;
    justify-content: flex-end;
    flex: 0 0 auto;
}

.toolbar-form--members .toolbar-form__actions .button {
    min-width: 84px;
}

.toolbar-form--members .field-group--search input,
.toolbar-form--members .field-group--compact-select select {
    width: 100%;
    min-width: 0;
}

.toolbar-form--members .toolbar-form__actions .button--danger {
    background: #dc2626;
    border-color: #dc2626;
    color: #ffffff;
}

.toolbar-form--members .toolbar-form__actions .button--danger:hover {
    background: #b91c1c;
    border-color: #b91c1c;
}

.table-meta {
    margin: 0 0 0.9rem;
    color: var(--muted);
    font-size: 0.9rem;
}

.table-shell {
    overflow-x: auto;
    overflow-y: hidden;
    max-width: 100%;
    border-radius: var(--radius-lg);
}

.panel-card {
    min-width: 0;
}

.toolbar-form {
    display: grid;
    grid-template-columns: 1.5fr 1fr auto;
    gap: 0.8rem;
    margin-bottom: 1rem;
}

.toolbar-form .field-group {
    margin: 0;
}

.toolbar-form .field-group input,
.toolbar-form .field-group select,
.toolbar-form .field-group textarea {
    min-height: 44px;
    box-sizing: border-box;
}

.toolbar-form__actions {
    display: flex;
    align-items: stretch;
    justify-content: flex-end;
    flex-wrap: nowrap;
    gap: 0.5rem;
}

.toolbar-form__actions .button {
    min-height: 44px;
    padding: 0.55rem 0.9rem;
    font-size: 0.9rem;
    flex: 0 0 auto;
}

.toolbar-form--services {
    grid-template-columns: minmax(260px, 1.8fr) minmax(180px, 1fr) minmax(150px, 0.8fr) auto;
    align-items: end;
    padding: 0.75rem;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: #fbfcff;
}

.toolbar-form--attendance {
    grid-template-columns: minmax(240px, 1.6fr) minmax(180px, 0.9fr) minmax(180px, 0.9fr) auto;
    align-items: end;
    padding: 0.75rem;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: #fbfcff;
}

.toolbar-form--finances {
    grid-template-columns: minmax(220px, 1.5fr) repeat(4, minmax(150px, 0.9fr)) auto;
    align-items: end;
    padding: 0.75rem;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: #fbfcff;
}

.toolbar-form--finances-clean {
    grid-template-columns: minmax(220px, 1.5fr) repeat(4, minmax(150px, 0.85fr)) auto;
    gap: 0.72rem;
    margin-bottom: 0;
}

.toolbar-form--finances-clean .toolbar-form__actions {
    justify-content: flex-start;
}

.reports-summary-grid {
    margin-bottom: 1rem;
}

.reports-stat-card {
    min-height: 132px;
    display: grid;
    align-content: center;
}

.reports-panel-card {
    padding: 1.25rem;
}

.reports-panel-card .panel-card__header--spread {
    flex-wrap: wrap;
}

.reports-panel-card .panel-card__header--spread > div:first-child {
    flex: 1 1 360px;
    min-width: 0;
}

.reports-panel-card .page-header-actions {
    flex: 1 1 360px;
    min-width: 0;
}

.reports-table-shell {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: auto;
}

.reports-table-shell--district {
    overflow-x: auto;
}

.reports-table-shell--district .data-table {
    width: 100%;
    min-width: 1520px;
}

.reports-type-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
    margin-bottom: 0.9rem;
}

.reports-type-tab {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 34px;
    padding: 0.42rem 0.75rem;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: #fff;
    color: #40506d;
    font-size: 0.85rem;
    font-weight: 700;
    transition: border-color 0.18s ease, color 0.18s ease, background 0.18s ease;
}

.reports-type-tab:hover {
    border-color: #cad3e6;
    color: var(--surface-contrast);
    background: #f8faff;
}

.reports-type-tab.is-active {
    border-color: rgba(33, 105, 58, 0.35);
    background: rgba(33, 105, 58, 0.12);
    color: #185830;
}

.toolbar-form--reports {
    grid-template-columns: minmax(200px, 1.5fr) repeat(4, minmax(110px, 0.8fr)) auto;
    align-items: end;
    padding: 0.75rem;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: #fbfcff;
}

body.reports-page {
    overflow-x: hidden;
}

body.reports-page .app-shell,
body.reports-page .app-shell__content,
body.reports-page .page-content,
body.reports-page .reports-summary-grid,
body.reports-page .reports-panel-card {
    min-width: 0;
}

.reports-meta-time {
    margin-left: 0.55rem;
    color: #95a0b6;
}

body.reports-print-preview-page {
    margin: 0;
    padding: 1.2rem;
    background: #eef2f8;
}

.reports-print-preview-panel {
    max-width: 1200px;
    margin: 0 auto;
    border: 1px solid #d8dde8;
    background: #fff;
}

.reports-print-preview-toolbar {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.8rem;
    flex-wrap: wrap;
    margin-bottom: 0.9rem;
}

.reports-print-sheet-header {
    margin-bottom: 0.65rem;
}

.reports-print-sheet-header__brand {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.4rem;
    margin-bottom: 0.45rem;
}

.reports-print-sheet-logo {
    width: 88px;
    height: 68px;
    object-fit: contain;
    flex: 0 0 auto;
}

.reports-print-sheet-title-wrap {
    text-align: center;
    min-width: 300px;
}

.reports-print-sheet-title-wrap h1 {
    margin: 0;
    font-size: 1.02rem;
    line-height: 1.22;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    color: #131b2f;
}

.reports-print-sheet-title-wrap p {
    margin: 0.2rem 0 0;
    font-size: 0.92rem;
    font-weight: 700;
    color: #2f3b57;
}

.reports-print-sheet-filters {
    margin: 0.5rem 0 0;
    text-align: center;
    font-size: 0.76rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: #33405c;
}

.reports-print-sheet-divider {
    border: 0;
    border-top: 2px solid #111827;
    margin: 0.7rem auto 0.35rem;
    width: min(620px, 90%);
}

.reports-print-sheet-footer {
    margin-top: 0.7rem;
    padding-top: 0.5rem;
    border-top: 1px solid #d8dde8;
    text-align: center;
}

.reports-print-sheet-footer p {
    margin: 0;
    font-size: 0.76rem;
    color: #5b6780;
}

.monthly-report-summary {
    margin-top: 0.7rem;
    display: grid;
    grid-template-columns: repeat(3, minmax(190px, 1fr));
    gap: 0.55rem;
}

.monthly-report-summary__item {
    border: 1px solid #d8dde8;
    border-radius: 12px;
    background: #f8fbff;
    padding: 0.55rem 0.65rem;
}

.monthly-report-summary__item h4 {
    margin: 0;
    font-size: 0.8rem;
    color: #26324a;
}

.monthly-report-summary__item p {
    margin: 0.24rem 0 0;
    font-size: 0.68rem;
    color: #65718b;
}

.monthly-report-summary__item strong {
    display: block;
    margin-top: 0.3rem;
    font-size: 0.92rem;
    color: #0f172a;
}

body.reports-print-preview-page .table-shell,
body.reports-print-preview-page .reports-table-shell,
body.reports-print-preview-page .reports-table-shell--district {
    overflow-x: visible;
}

body.reports-print-preview-page .reports-table-shell--district .data-table {
    min-width: 0;
}

body.reports-print-preview-page .data-table {
    width: 100%;
    table-layout: fixed;
}

body.reports-print-preview-page .data-table th,
body.reports-print-preview-page .data-table td {
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
}

body.reports-print-preview-page .data-table th:first-child,
body.reports-print-preview-page .data-table td:first-child {
    width: 34px;
    text-align: center;
}

.report-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.18rem 0.45rem;
    border-radius: 999px;
    font-size: 0.66rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    border: 1px solid transparent;
}

.report-pill--service,
.report-pill--income,
.report-pill--status-present,
.report-pill--status-active {
    background: #ecfdf3;
    color: #166534;
    border-color: #bbf7d0;
}

.report-pill--event,
.report-pill--expense,
.report-pill--status-absent,
.report-pill--status-inactive {
    background: #fff1f2;
    color: #be123c;
    border-color: #fecdd3;
}

.report-pill--status-late,
.report-pill--status-unmarked,
.report-pill--status-visitor,
.report-pill--status-excused {
    background: #eff6ff;
    color: #1d4ed8;
    border-color: #bfdbfe;
}

.report-pill--status-paid {
    background: #ecfdf3;
    color: #166534;
    border-color: #bbf7d0;
}

.report-pill--status-approved {
    background: #ecfdf3;
    color: #166534;
    border-color: #bbf7d0;
}

.report-pill--status-declined {
    background: #fff1f2;
    color: #be123c;
    border-color: #fecdd3;
}

.report-pill--status-pending {
    background: #fff7ed;
    color: #9a3412;
    border-color: #fed7aa;
}

.report-pill--status-partial {
    background: #eff6ff;
    color: #1d4ed8;
    border-color: #bfdbfe;
}

.finance-stats-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1rem;
}

.finance-overview-stats {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.75rem;
    margin-bottom: 0.85rem;
}

.finance-stat-card {
    min-height: 148px;
    display: grid;
    align-content: center;
}

.finance-overview-stats .finance-stat-card {
    min-height: 118px;
    padding: 1rem 1.05rem;
}

.finance-overview-stats .finance-stat-card p {
    margin: 0 0 0.38rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.finance-overview-stats .finance-stat-card strong {
    font-size: clamp(1.5rem, 2.1vw, 1.95rem);
    line-height: 1.08;
}

.finance-panel-card {
    padding: 1.3rem;
}

.finance-filter-card {
    margin-top: 0.35rem;
    margin-bottom: 1.35rem;
    padding: 1rem;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: #fbfcff;
}

.finance-filter-card__topline {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.9rem;
    margin-bottom: 0.75rem;
}

.finance-table-meta {
    margin: 0;
    font-weight: 600;
}

.finance-toolbar-actions {
    justify-content: flex-end;
}

.finance-table-shell {
    margin-top: 0.45rem;
}

.finance-entry-card {
    max-width: min(1080px, 100%);
}

.finance-entry-grid {
    row-gap: 1rem;
}

.finance-reference-hint {
    color: var(--muted);
    font-size: 0.82rem;
}

.savings-monitoring-stats {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.75rem;
    margin-bottom: 0.85rem;
}

.savings-monitoring-stats .finance-stat-card {
    min-height: 120px;
    padding: 1rem 1.1rem;
    align-content: center;
}

.savings-monitoring-stats .finance-stat-card p {
    margin: 0 0 0.4rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.savings-monitoring-stats .finance-stat-card strong {
    font-size: clamp(1.72rem, 2.35vw, 2.1rem);
    line-height: 1.08;
}

.toolbar-form--savings-monitoring {
    grid-template-columns: minmax(340px, 1.7fr) minmax(200px, 0.85fr) auto;
    align-items: end;
    gap: 0.65rem;
    padding: 0.72rem;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: #fbfcff;
}

.toolbar-form--savings-monitoring .toolbar-form__actions {
    justify-content: flex-end;
}

.toolbar-form--savings-monitoring .toolbar-form__actions .button {
    min-width: 88px;
}

.panel-card .page-header-actions .page-church-filter {
    margin-top: 0;
}

.panel-card .page-header-actions .button {
    min-height: 38px;
}

.finance-tithe-preview {
    grid-column: 1 / -1;
    margin-top: 0.25rem;
    padding: 0.78rem 0.85rem;
    border: 1px solid #c7d2fe;
    border-radius: 12px;
    background: #eef2ff;
}

.finance-tithe-preview strong {
    display: block;
    margin: 0 0 0.22rem;
    color: #3730a3;
    font-size: 0.84rem;
}

.finance-tithe-preview p {
    margin: 0;
    color: #373f7a;
    font-size: 0.8rem;
    font-weight: 600;
}

.finance-tithe-preview small {
    display: block;
    margin-top: 0.3rem;
    color: #59629c;
    font-size: 0.75rem;
}

.calendar-summary-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1rem;
}

.calendar-summary-card {
    min-height: 132px;
    display: grid;
    align-content: center;
}

.calendar-panel-card,
.calendar-events-panel {
    padding: 1.25rem;
}

.calendar-grid-shell {
    overflow-x: auto;
}

.calendar-weekdays,
.calendar-month-grid {
    min-width: 0;
}

.calendar-weekdays {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 0.6rem;
    margin-bottom: 0.75rem;
}

.calendar-weekdays span {
    padding: 0.7rem 0.85rem;
    border-radius: 12px;
    background: #f7f9fd;
    border: 1px solid var(--line);
    color: #5b6983;
    font-size: 0.84rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.calendar-weekdays span:nth-child(1) {
    background: #f1f8f3;
    border-color: #d7ebde;
    color: #215b36;
}

.calendar-weekdays span:nth-child(2) {
    background: #eef8f1;
    border-color: #d2e9da;
    color: #1d6538;
}

.calendar-weekdays span:nth-child(3) {
    background: #ebf6f0;
    border-color: #cfe7d9;
    color: #1f6a3b;
}

.calendar-weekdays span:nth-child(4) {
    background: #e9f5ef;
    border-color: #cae5d6;
    color: #1f7040;
}

.calendar-weekdays span:nth-child(5) {
    background: #e7f3ed;
    border-color: #c6e2d4;
    color: #1f7444;
}

.calendar-weekdays span:nth-child(6) {
    background: #f0f8f5;
    border-color: #d4e9df;
    color: #2f6f4a;
}

.calendar-weekdays span:nth-child(7) {
    background: #ecf6f2;
    border-color: #cde6da;
    color: #2b6644;
}

.calendar-month-grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 0.6rem;
}

.calendar-day-card {
    min-height: 220px;
    padding: 0.9rem;
    border: 1px solid var(--line);
    display: grid;
    grid-template-rows: auto 1fr;
    gap: 0.8rem;
    overflow: visible;
    position: relative;
}

.calendar-day-card.is-outside-month {
    opacity: 0.58;
    background: #f7f9fc;
}

.calendar-day-card.is-today {
    border-color: rgba(33, 105, 58, 0.3);
    box-shadow: 0 0 0 3px rgba(33, 105, 58, 0.08);
}

.calendar-day-card.is-occupied {
    border-color: rgba(33, 105, 58, 0.2);
    background:
        linear-gradient(180deg, rgba(33, 105, 58, 0.04) 0%, rgba(33, 105, 58, 0.01) 55%, #fcfdff 100%),
        #fcfdff;
}

.calendar-day-card__header {
    display: flex;
    align-items: start;
    justify-content: space-between;
    gap: 0.75rem;
}

.calendar-day-card__header strong {
    display: block;
    font-size: 1.1rem;
}

.calendar-day-card__header span {
    color: var(--muted);
    font-size: 0.8rem;
}

/* ── Stat card buttons ───────────────────────────────────── */
.calendar-summary-card--btn {
    display: block;
    cursor: pointer;
    text-align: left;
    border: none;
    width: 100%;
    box-sizing: border-box;
    color: inherit;
    text-decoration: none;
    font-family: inherit;
    transition: box-shadow 0.18s ease, transform 0.14s ease;
}

.calendar-summary-card--btn:hover {
    box-shadow: 0 4px 20px rgba(33, 105, 58, 0.13);
    transform: translateY(-2px);
}

.calendar-summary-card--btn small {
    display: block;
    margin-top: 0.35rem;
    color: var(--accent);
    font-size: 0.78rem;
    font-weight: 600;
    opacity: 0.72;
}

/* ── Add link ────────────────────────────────────────────── */
.calendar-add-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 999px;
    background: var(--accent-soft);
    color: var(--accent);
    font-weight: 700;
}

.calendar-add-link ion-icon {
    font-size: 1rem;
}

.calendar-add-link--disabled {
    background: var(--line);
    color: var(--muted);
    cursor: not-allowed;
    opacity: 0.5;
}

.calendar-day-card.is-past .calendar-day-card__header {
    opacity: 0.65;
}

/* ── Day card events area ────────────────────────────────── */
.calendar-day-card__events {
    display: flex;
    align-items: flex-end;
    gap: -0.5rem;
    min-width: 0;
    flex-wrap: wrap;
    padding-bottom: 0.3rem;
    margin: 0;
}

.calendar-span-stack {
    display: none;
}

.calendar-span-item {
    display: grid;
    gap: 0.22rem;
    padding: 0.32rem 0.42rem;
    border: 1px solid rgba(33, 105, 58, 0.24);
    border-radius: 10px;
    background: rgba(33, 105, 58, 0.08);
    min-width: 0;
}

.calendar-span-item__bar {
    display: block;
    height: 4px;
    border-radius: 999px;
    background: linear-gradient(90deg, #6f67ff 0%, #4f46e5 100%);
}

.calendar-span-item__meta {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    min-width: 0;
    flex-wrap: wrap;
}

.calendar-span-item__tag {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.08rem 0.38rem;
    border-radius: 999px;
    border: 1px solid rgba(15, 23, 42, 0.12);
    background: #eef2ff;
    color: #185830;
    font-size: 0.64rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.calendar-span-item__tag--end {
    background: #ecfdf3;
    color: #166534;
    border-color: #bbf7d0;
}

.calendar-span-item__title {
    min-width: 0;
    font-size: 0.74rem;
    font-weight: 700;
    color: #21693A;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.calendar-day-card__empty,
.calendar-more-indicator {
    margin: 0;
    color: var(--muted);
    font-size: 0.86rem;
}

.calendar-day-card__occupied-note {
    margin: 0;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    color: #be185d;
    font-size: 0.82rem;
    font-weight: 600;
}

.calendar-day-card__occupied-note ion-icon {
    font-size: 0.95rem;
}

.calendar-birthday-stack {
    display: grid;
    gap: 0.35rem;
    width: 100%;
    margin-bottom: 0.1rem;
}

.calendar-birthday-chip {
    display: flex;
    align-items: flex-start;
    gap: 0.35rem;
    padding: 0.36rem 0.5rem;
    border: 1px solid #f4c2d6;
    border-radius: 10px;
    background: #fff5f9;
    color: #9d174d;
    min-width: 0;
}

.calendar-birthday-chip ion-icon {
    font-size: 0.82rem;
    flex: 0 0 auto;
}

.calendar-birthday-chip strong {
    min-width: 0;
    font-size: 0.72rem;
    font-weight: 700;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.calendar-birthday-chip__content {
    min-width: 0;
    display: grid;
    gap: 0.08rem;
}

.calendar-birthday-chip__content small {
    min-width: 0;
    display: block;
    font-size: 0.65rem;
    font-weight: 600;
    color: #be185d;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ── Chip + hover popup wrapper ───────────────────────────── */
.cal-chip-wrap {
    position: relative;
    margin-right: -0.5rem;
    z-index: auto;
}

.cal-chip-wrap:hover {
    z-index: 55;
}

.calendar-event-chip {
    display: grid;
    gap: 0.35rem;
    padding: 0.54rem 0.5rem 0.64rem;
    border: 1.5px solid var(--accent);
    border-radius: 8px 8px 6px 6px;
    background: var(--accent);
    color: #fff;
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s, filter 0.15s, transform 0.15s;
    min-width: 108px;
    max-width: 148px;
    overflow: hidden;
    position: relative;
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 8px), 55% 100%, 45% 100%, 0 calc(100% - 8px));
    margin-bottom: 6px;
}

.calendar-event-chip--event {
    border-color: #21693A;
    background: #21693A;
}

.calendar-event-chip--service {
    border-color: #0ea5a3;
    background: #0ea5a3;
}

.calendar-event-chip__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.35rem;
    min-width: 0;
}

.calendar-event-chip:hover,
.cal-chip-wrap:focus-within .calendar-event-chip {
    border-color: rgba(33, 105, 58, 0.8);
    box-shadow: 0 4px 16px rgba(33, 105, 58, 0.25);
    filter: brightness(1.1);
}

.calendar-event-chip__type {
    color: rgba(255, 255, 255, 0.85);
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    line-height: 1.1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.calendar-event-chip strong {
    font-size: 0.78rem;
    line-height: 1.2;
    color: #fff;
    display: -webkit-box;
    line-clamp: 2;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    word-break: break-word;
}

.calendar-event-chip small {
    color: rgba(255, 255, 255, 0.9);
    font-size: 0.71rem;
    line-height: 1.1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.calendar-event-chip__position-badge {
    display: inline-block;
    position: absolute;
    top: 0.25rem;
    right: 0.25rem;
    padding: 0.15rem 0.32rem;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.3);
    color: #fff;
    font-size: 0.5rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    line-height: 1;
    z-index: 10;
}

.calendar-event-chip .cal-status-badge {
    padding: 0.12rem 0.34rem;
    font-size: 0.5rem;
    letter-spacing: 0.04em;
    line-height: 1;
}

.calendar-event-chip__position-badge--inline {
    position: static;
    margin-left: 0.35rem;
    background: rgba(33, 105, 58, 0.18);
    color: #185830;
    border: 1px solid rgba(33, 105, 58, 0.28);
    vertical-align: middle;
}

/* ── Chip hover popup ─────────────────────────────────────── */
.cal-chip-popup {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 100;
    width: 320px;
    padding: 1.1rem;
    border-radius: 18px;
    border: 1px solid var(--line);
    background: #fff;
    box-shadow: 0 12px 40px rgba(15, 23, 42, 0.2);
    animation: cal-popup-in 0.18s ease;
    pointer-events: auto;
    white-space: normal;
}

@keyframes cal-popup-in {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

.cal-chip-popup.is-open,
.cal-chip-popup.is-pinned {
    display: grid;
    gap: 0.7rem;
}

.cal-chip-popup__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.cal-chip-popup__head > div:first-child {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.cal-chip-popup__close {
    color: var(--muted);
    font-size: 0.85rem;
    cursor: pointer;
    line-height: 1;
}

.cal-chip-popup__title {
    font-size: 1.1rem;
    letter-spacing: -0.02em;
    line-height: 1.3;
}

.cal-chip-popup__meta {
    display: grid;
    gap: 0.3rem;
}

.cal-chip-popup__meta span {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.84rem;
    color: var(--muted);
}

.cal-chip-popup__meta ion-icon {
    font-size: 1rem;
    flex-shrink: 0;
}

.cal-chip-popup__desc {
    margin: 0;
    font-size: 0.86rem;
    color: #5b6983;
    line-height: 1.55;
    border-top: 1px solid var(--line);
    padding-top: 0.65rem;
}

.cal-chip-popup__actions {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding-top: 0.55rem;
    border-top: 1px solid var(--line);
}

/* ── Stat card modal panels ───────────────────────────────── */
.cal-modal-panel {
    width: min(640px, calc(100% - 1rem));
}

.cal-modal-list {
    display: grid;
    gap: 0.85rem;
    max-height: calc(80vh - 120px);
    overflow-y: auto;
    padding-right: 0.25rem;
}

.cal-modal-empty {
    color: var(--muted);
    font-size: 0.95rem;
    margin: 0;
}

.cal-modal-row {
    display: grid;
    gap: 0.55rem;
    padding: 1rem 1.1rem;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: #fcfdff;
}

.cal-modal-row__top {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.cal-modal-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.22rem 0.6rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
}

.cal-modal-badge--service {
    background: #e0f2fe;
    color: #075985;
}

.cal-modal-badge--event {
    background: var(--accent-soft);
    color: var(--accent);
}

.cal-modal-type {
    font-size: 0.8rem;
    color: var(--muted);
    font-weight: 500;
}

.cal-modal-row__title {
    font-size: 1.05rem;
    letter-spacing: -0.02em;
}

.cal-modal-row__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
}

.cal-modal-row__meta span {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.82rem;
    color: #5b6983;
    background: #f4f7fc;
    padding: 0.22rem 0.55rem;
    border-radius: 999px;
}

.cal-modal-row__meta ion-icon {
    font-size: 0.9rem;
    flex-shrink: 0;
}

.cal-modal-row__actions {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding-top: 0.5rem;
    border-top: 1px solid var(--line);
}

.cal-status-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.18rem 0.5rem;
    border-radius: 999px;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    border: 1px solid transparent;
}

.cal-status-badge--finished {
    background: #ecfdf3;
    color: #166534;
    border-color: #bbf7d0;
}

.cal-status-badge--ongoing {
    background: #fff7ed;
    color: #b45309;
    border-color: #fed7aa;
}

.cal-status-badge--tomorrow {
    background: #eff6ff;
    color: #1d4ed8;
    border-color: #bfdbfe;
}

.is-hidden {
    display: none !important;
}

.field-group--search input {
    min-height: 46px;
    border-radius: 999px;
    background: #fff;
}

.field-group--compact-select select,
.field-group--compact-select input {
    display: block !important;
    min-height: 44px;
    border-radius: 999px;
    background: #fff;
    width: 100%;
}


.field-group--compact-select input {
    font-size: 0.92rem;
    border: 1px solid var(--line);
    padding: 0 0.85rem;
}

.range-quick-actions {
    display: flex;
    align-items: end;
    gap: 0.45rem;
    flex-wrap: wrap;
}

.range-quick-actions .button {
    min-height: 32px;
    padding-inline: 0.72rem;
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.inline-actions {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.icon-actions {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.icon-actions form {
    margin: 0;
}

.icon-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: #fff;
    color: #3a4a67;
    cursor: pointer;
    transition: border-color 0.18s ease, color 0.18s ease, background 0.18s ease;
}

.icon-action:hover {
    border-color: #cfd8ea;
    color: var(--surface-contrast);
    background: #f8faff;
}

.icon-action ion-icon {
    font-size: 1rem;
}

.icon-action--danger {
    color: var(--danger);
}

.icon-action--danger:hover {
    border-color: rgba(180, 35, 24, 0.25);
    background: rgba(180, 35, 24, 0.08);
    color: var(--danger);
}

.members-directory-table th:first-child,
.members-directory-table td:first-child,
.verify-members-table th:first-child,
.verify-members-table td:first-child {
    width: 64px;
    min-width: 64px;
    text-align: center;
}

.verify-members-table th:nth-child(2),
.verify-members-table td:nth-child(2) {
    width: 210px;
    min-width: 210px;
}

.verify-members-table th:nth-child(3),
.verify-members-table td:nth-child(3) {
    width: 170px;
    min-width: 170px;
}

.verify-members-table th:nth-child(4),
.verify-members-table td:nth-child(4) {
    width: 145px;
    min-width: 145px;
}

.verify-members-table th:nth-child(5),
.verify-members-table td:nth-child(5) {
    width: 132px;
    min-width: 132px;
}

.verify-members-table th:nth-child(6),
.verify-members-table td:nth-child(6) {
    width: 170px;
    min-width: 170px;
}

.verify-members-table th:nth-child(7),
.verify-members-table td:nth-child(7) {
    width: 134px;
    min-width: 134px;
}

.verify-members-table th:nth-child(8),
.verify-members-table td:nth-child(8) {
    width: 145px;
    min-width: 145px;
}

.verify-members-table th:nth-child(9),
.verify-members-table td:nth-child(9) {
    width: 110px;
    min-width: 110px;
}

.member-mini-identity {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    min-width: 0;
}

.member-mini-avatar {
    width: 34px;
    height: 34px;
    border-radius: 999px;
    background: linear-gradient(135deg, #21693A, #5b8f6a);
    border: 1px solid #d7dfeb;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 34px;
    overflow: hidden;
}

.member-mini-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.member-mini-avatar__fallback {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #ffffff;
}

.member-mini-name,
.member-mini-name-block strong {
    display: block;
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.verify-member-cell .member-mini-name-block strong {
    display: block;
    max-width: 210px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.member-avatar-cell {
    text-align: center;
}

.member-avatar-cell .member-mini-avatar {
    margin: 0 auto;
}

.verify-actions-cell {
    width: 110px;
    min-width: 110px;
}

.verify-actions-inline {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
}

.verify-actions-inline form {
    margin: 0;
}

.icon-action--success {
    color: #16794a;
}

.icon-action--success:hover {
    border-color: rgba(22, 121, 74, 0.35);
    background: rgba(22, 121, 74, 0.1);
    color: #0f6b3d;
}

.row-actions-menu {
    position: relative;
    display: inline-block;
}

.row-actions-menu summary {
    list-style: none;
}

.row-actions-menu summary::-webkit-details-marker {
    display: none;
}

.row-actions-menu__panel {
    position: absolute;
    right: 0;
    top: auto;
    bottom: calc(100% + 0.4rem);
    display: grid;
    gap: 0.45rem;
    min-width: 132px;
    padding: 0.55rem;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 12px 24px rgba(15, 23, 42, 0.14);
    z-index: 12;
}

.row-actions-menu__panel form {
    margin: 0;
}

.row-actions-menu__button {
    width: 100%;
    justify-content: center;
}

.inline-actions form {
    margin: 0;
}

.text-button {
    border: 0;
    background: transparent;
    color: #3a4a67;
    font: inherit;
    padding: 0;
    cursor: pointer;
}

.text-button--danger {
    color: #b42318;
}

.member-dashboard-summary {
    display: grid;
    grid-template-columns: minmax(220px, 2fr) repeat(3, minmax(170px, 1fr));
    gap: 0.7rem;
    margin-bottom: 1rem;
}

.member-dashboard-calendar-section {
    margin-top: 1.15rem;
}

.info-tile {
    display: grid;
    gap: 0.3rem;
    padding: 0.85rem 0.95rem;
    border: 1px dashed #d6dcef;
    border-radius: 12px;
    background: #f8faff;
}

.info-tile span {
    color: var(--muted);
    font-size: 0.84rem;
    font-weight: 600;
}

.info-tile strong {
    color: var(--text);
    font-size: 0.98rem;
}

.info-tile small {
    color: var(--muted);
    font-size: 0.82rem;
    line-height: 1.5;
}

@media (max-width: 980px) {
    .member-dashboard-summary {
        grid-template-columns: 1fr;
    }
}

table {
    width: 100%;
    border-collapse: collapse;
}

.data-table tbody tr {
    transition: background 0.16s ease;
}

.data-table tbody tr:hover {
    background: #fbfcff;
}

th,
td {
    padding: 1rem;
    text-align: left;
    border-bottom: 1px solid var(--line);
}

th {
    font-size: 0.82rem;
    text-transform: none;
    letter-spacing: 0.01em;
    color: var(--muted);
}

.table-sort {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    color: inherit;
}

.table-sort span {
    color: #99a3b8;
    font-size: 0.88rem;
}

.table-sort.is-active {
    color: var(--surface-contrast);
}

.table-sort.is-active span {
    color: var(--accent);
}

.form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    align-items: start;
}

.field-group {
    display: grid;
    gap: 0.45rem;
}

.field-group--inline {
    display: block;
    gap: 0;
}

.field-group span {
    font-weight: 600;
}

.field-group input,
.field-group select,
.field-group textarea {
    width: 100%;
    padding: 0.85rem 1rem;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: var(--surface-strong);
    color: var(--text);
    box-sizing: border-box;
}

.form-grid > *,
.form-grid--compact > * {
    min-width: 0;
}

.field-group--wide {
    grid-column: 1 / -1;
}

.field-help {
    color: #6d7b90;
    font-size: 0.78rem;
    line-height: 1.45;
}

.attendance-status-select {
    min-width: 160px;
}

.attendance-summary-grid {
    margin-bottom: 1rem;
}

.attendance-layout {
    display: grid;
    gap: 1rem;
    margin-bottom: 1rem;
}

.attendance-add-card {
    padding: 1.1rem 1.15rem;
}

.attendance-bulk-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
    padding: 0.8rem 0.9rem;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #fbfcff;
}

.attendance-bulk-controls {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    flex-wrap: wrap;
}

.attendance-bulk-controls select {
    min-width: 160px;
    min-height: 40px;
    padding: 0.65rem 0.8rem;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: #fff;
}

.attendance-table td:first-child,
.attendance-table th:first-child {
    width: 52px;
}

.attendance-table input[type='checkbox'] {
    width: 18px;
    height: 18px;
}

.app-modal {
    position: fixed;
    inset: 0;
    z-index: 120;
    display: grid;
    place-items: center;
    padding: 1rem;
}

.app-modal[hidden] {
    display: none;
}

.app-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.38);
}

.app-modal__panel {
    position: relative;
    width: min(780px, calc(100% - 1rem));
    max-height: calc(100vh - 2rem);
    overflow: auto;
    border-radius: 18px;
    border: 1px solid var(--line);
    background: #fff;
    box-shadow: 0 20px 46px rgba(15, 23, 42, 0.25);
    padding: 1.2rem;
}

.app-modal__header {
    display: flex;
    align-items: start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

.app-modal__header h3 {
    margin: 0;
    font-size: 1.45rem;
}

.app-modal__form {
    display: grid;
    gap: 0.85rem;
}

body.is-modal-open {
    overflow: hidden;
}

.form-actions {
    grid-column: 1 / -1;
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.detail-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.detail-grid div {
    display: grid;
    gap: 0.4rem;
    padding: 1rem;
    background: rgba(255, 255, 255, 0.4);
    border-radius: 16px;
}

.profile-layout {
    display: grid;
    gap: 1rem;
}

.profile-hero-card,
.profile-section-card {
    padding: 1.25rem;
}

.profile-hero {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 1rem;
    align-items: center;
}

.profile-hero__avatar {
    display: grid;
    place-items: center;
    width: 72px;
    height: 72px;
    border-radius: 50%;
    background: linear-gradient(135deg, #21693A, #5b8f6a);
    color: #fff;
    font-size: 1.4rem;
    font-weight: 700;
    overflow: hidden;
}

.profile-hero__avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.profile-hero__content h2 {
    margin: 0;
    font-size: 2rem;
    letter-spacing: -0.03em;
}

.profile-hero__meta {
    margin: 0.35rem 0 0;
    color: var(--muted);
    display: flex;
    gap: 0.55rem;
    flex-wrap: wrap;
    align-items: center;
}

.profile-section-card__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}

.profile-section-card__header h3 {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    color: #2f3b52;
}

.profile-section-card__header--stacked {
    align-items: flex-end;
    gap: 0.85rem;
    flex-wrap: wrap;
}

.profile-section-card__subtitle {
    margin: 0.3rem 0 0;
    color: var(--muted);
    font-size: 0.88rem;
}

.profile-id-card-section {
    display: grid;
    gap: 1rem;
}

.profile-id-card-actions {
    display: flex;
    gap: 0.55rem;
    flex-wrap: wrap;
}

.profile-id-card-actions .button {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
}

.profile-id-card-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.member-id-card {
    position: relative;
    min-width: 0;
    aspect-ratio: 1.586 / 1;
    font-family: 'Poppins', var(--font-sans);
    border: 1px solid #cfe0d0;
    border-radius: 24px;
    background:
        linear-gradient(135deg, rgba(255, 255, 255, 0.92), rgba(245, 250, 246, 0.96)),
        #f7fbf8;
    box-shadow: 0 18px 42px rgba(19, 55, 28, 0.1);
    overflow: hidden;
    isolation: isolate;
}

.member-id-card::before,
.member-id-card::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    height: 18px;
    background: linear-gradient(90deg, #0e8f43 0%, #19a94f 46%, #0d7a39 100%);
    z-index: 1;
}

.member-id-card::before {
    top: 0;
}

.member-id-card::after {
    bottom: 0;
}

.member-id-card__top-band,
.member-id-card__bottom-band {
    display: none;
}

.member-id-card__header,
.member-id-card__body {
    position: relative;
    z-index: 2;
}

.member-id-card__header {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 0.75rem;
    align-items: start;
    padding: 1.05rem 1.1rem 0.75rem;
}

.member-id-card__header--back {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.85rem;
    padding-top: 0.95rem;
    padding-bottom: 0.35rem;
}

.member-id-card--front .member-id-card__header {
    display: block;
    min-height: 86px;
    padding-right: 1.1rem;
    padding-top: 1.02rem;
    position: static;
}

.member-id-card--front .member-id-card__body {
    padding-right: 214px;
    padding-top: 0;
    gap: 0.5rem;
}

.member-id-card__brand {
    display: inline-flex;
    align-items: center;
    min-height: 64px;
}

.member-id-card__brand img {
    display: block;
    width: 200px;
    max-width: 100%;
    height: auto;
    object-fit: contain;
}

.member-id-card__brand--stacked img {
    width: 210px;
}

.member-id-card__back-top-left {
    width: 120px;
    max-width: 36%;
    height: auto;
    object-fit: contain;
}

.member-id-card__back-top-right {
    width: 170px;
    max-width: 36%;
    height: auto;
    object-fit: contain;
}

.member-id-card__photo {
    width: 198px;
    height: 214px;
    border-radius: 16px;
    overflow: hidden;
    border: 5px solid #f0f7f1;
    box-shadow: 0 10px 20px rgba(17, 72, 31, 0.18);
    background: linear-gradient(135deg, #1f7c43, #0f5d30);
    display: grid;
    place-items: center;
    color: #fff;
    font-size: 2rem;
    font-weight: 800;
}

.member-id-card--front .member-id-card__photo {
    position: static;
    margin-top: 0;
}

.member-id-card--front .member-id-card__photo-column {
    position: absolute;
    bottom: 2.5rem;
    right: 1.50rem;
    width: 178px;
    display: grid;
    gap: 0.4rem;
}

.member-id-card--front .member-id-card__photo {
    width: 178px;
    height: 188px;
    border-width: 4px;
}

.member-id-card__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.member-id-card__front-signature {
    height: 60px;
    border: 1px solid #d8e3d6;
    border-radius: 9px;
    background: #ffffff;
    padding: 0.25rem 0.42rem;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.member-id-card__front-signature img {
    width: auto;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    object-position: center;
    display: block;
}

.member-id-card__front-signature span {
    color: #7b869c;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.01em;
}

.member-id-card__body {
    display: grid;
    gap: 0.8rem;
    padding: 0 1.15rem 1rem;
}

.member-id-card__body--back {
    display: grid;
    grid-template-rows: auto 1fr;
    gap: 0.7rem;
    padding-top: 0.2rem;
    min-height: 0;
}

.member-id-card__eyebrow {
    margin: 0;
    color: #0d7a39;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: none;
}

.member-id-card--front .member-id-card__eyebrow {
    font-size: 1.42rem;
    font-weight: 800;
    letter-spacing: -0.01em;
    line-height: 1.05;
    color: #111827;
    margin-top: -0.18rem;
    text-transform: none;
}

.member-id-card__body h4 {
    margin: 0;
    color: #0f7b38;
    font-size: 1.58rem;
    line-height: 1.05;
    letter-spacing: -0.03em;
    text-transform: uppercase;
}

.member-id-card--front .member-id-card__body h4 {
    font-size: clamp(1.12rem, 2.0vw, 1.52rem);
    line-height: 1.04;
    margin-bottom: -0.05rem;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
    overflow-wrap: anywhere;
    word-break: break-word;
    min-height: calc(1.04em * 2);
}

.member-id-card--front .member-id-card__field-list {
    margin-top: 0;
}

.member-id-card__field-list {
    display: grid;
    gap: 0.48rem;
}

.member-id-card__detail {
    display: flex;
    align-items: baseline;
    gap: 0.35rem;
    min-width: 0;
}

.member-id-card__field span,
.member-id-card__detail span {
    color: #556579;
    font-size: 0.9rem;
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0.01em;
    flex: 0 0 auto;
}

.member-id-card__field strong,
.member-id-card__detail strong {
    color: #101828;
    font-size: 0.98rem;
    font-weight: 600;
    line-height: 1.35;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.member-id-card--front .member-id-card__field {
    display: grid;
    grid-template-columns: 132px minmax(0, 1fr);
    align-items: baseline;
    gap: 0.4rem;
}

.member-id-card--front .member-id-card__field span {
    color: #59667a;
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0.01em;
}

.member-id-card--front .member-id-card__field strong {
    color: #111f37;
    font-size: 0.98rem;
    font-weight: 700;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.member-id-card__detail-grid {
    display: grid;
    gap: 0.8rem;
}

.member-id-card__detail--full {
    min-height: 0;
}

.member-id-card--back .member-id-card__body {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    position: relative;
    min-height: 0;
    padding-bottom: 3.2rem;
}

.member-id-card__back-certification {
    margin: 0;
    color: #1f2a3c;
    font-size: 0.9rem;
    line-height: 1.42;
    text-align: center;
}

.member-id-card__back-certification strong {
    font-weight: 700;
    display: block;
    white-space: nowrap;
    font-size: 0.86rem;
    letter-spacing: -0.008em;
}

.member-id-card__back-lower {
    position: relative;
    margin-top: 0.45rem;
    min-height: 165px;
}

.member-id-card__back-emergency,
.member-id-card__back-signature {
    min-width: 0;
}
.member-id-card__back-emergency {
    display: grid;
    gap: 0;
    max-width: 58%;
    padding-bottom: 2.4rem;
}

.member-id-card__back-emergency h5 {
    margin: 0;
    color: #111827;
    font-size: 0.85rem;
    font-weight: 700;
    line-height: 1.1;
}

.member-id-card__back-emergency p {
    margin: 0;
    color: #111827;
    font-size: 0.86rem;
    line-height: 1.1;
}

.member-id-card__back-emergency p span {
    color: #475467;
    font-weight: 600;
}

.member-id-card__back-signature {
    position: absolute;
    right: 0;
    bottom: 1.75rem;
    display: flex;
    align-items: flex-end;
    justify-content: flex-end;
    width: 40%;
    min-width: 150px;
}

.member-id-card__signature-image {
    display: block;
    width: 158px;
    max-width: 100%;
    height: auto;
    object-fit: contain;
    margin-bottom: 0;
    filter: contrast(1.08);
}

.member-id-card__back-note {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0.9rem;
    margin: 0;
    padding: 0;
    text-align: center;
    color: #1f2a3c;
    font-size: 0.82rem;
    line-height: 1.25;
    font-weight: 600;
}

@media (max-width: 980px) {
    .profile-id-card-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 640px) {
    .member-id-card {
        aspect-ratio: auto;
        min-height: 360px;
    }

    .member-id-card__header {
        grid-template-columns: 1fr;
    }

    .member-id-card--front .member-id-card__header {
        display: grid;
        min-height: 0;
        padding-right: 1.1rem;
    }

    .member-id-card--front .member-id-card__body {
        padding-right: 1.15rem;
    }

    .member-id-card--front .member-id-card__photo {
        position: static;
        margin-top: 0;
    }

    .member-id-card--front .member-id-card__photo-column {
        position: static;
        width: 128px;
        justify-self: start;
        gap: 0.24rem;
    }

    .member-id-card--front .member-id-card__photo {
        width: 128px;
        height: 156px;
        border-width: 3px;
    }

    .member-id-card__back-lower {
        min-height: 200px;
        padding-bottom: 0;
    }

    .member-id-card__back-emergency {
        max-width: 100%;
        padding-bottom: 5.1rem;
    }

    .member-id-card__back-signature {
        left: 0;
        right: auto;
        bottom: 2.55rem;
        width: auto;
        min-width: 0;
        justify-content: flex-start;
    }

    .member-id-card__signature-image {
        width: 140px;
    }

    .member-id-card__back-note {
        left: 0;
        right: 0;
        bottom: 0.95rem;
        text-align: left;
    }

    .member-id-card__photo {
        width: 128px;
        height: 164px;
    }

    .member-id-card__front-signature {
        height: 34px;
        padding: 0.14rem 0.25rem;
    }
}

.profile-uploader {
    display: grid;
    justify-items: center;
    gap: 0.5rem;
    padding: 0.75rem 0.85rem;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #f8fbff;
    text-align: center;
}

.profile-uploader--top {
    margin-bottom: 1rem;
}

.profile-signature-pad {
    margin: 0.85rem 0 1rem;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #f8fbff;
    padding: 0.75rem 0.85rem;
    display: grid;
    justify-items: center;
}

.profile-signature-pad__stage {
    width: min(260px, 100%);
    aspect-ratio: 1 / 1;
}

.profile-signature-pad__header {
    margin-bottom: 0.45rem;
    text-align: center;
}

.profile-signature-pad__header h4 {
    margin: 0;
    font-size: 0.95rem;
    color: #1f2a37;
}

.profile-signature-pad__header p {
    margin: 0.15rem 0 0;
    color: #6d7b90;
    font-size: 0.8rem;
}

.profile-signature-pad__canvas {
    width: 100%;
    height: 100%;
    border: 1px dashed #c8d3e3;
    border-radius: 10px;
    background: #ffffff;
    touch-action: none;
    cursor: crosshair;
    display: block;
}

.profile-signature-pad__actions {
    margin-top: 0.5rem;
    display: flex;
    justify-content: center;
}

.profile-signature-pad .field-help {
    text-align: center;
}

.profile-uploader__input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

.profile-uploader__avatar {
    position: relative;
    width: 82px;
    height: 82px;
    min-width: 82px;
    border-radius: 50%;
    overflow: visible;
    border: 2px solid #d7dfeb;
    background: linear-gradient(135deg, #21693A, #5b8f6a);
    color: #ffffff;
    display: grid;
    place-items: center;
    cursor: pointer;
}

.profile-uploader__avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
}

.profile-uploader__initials {
    font-size: 1.3rem;
    font-weight: 700;
}

.profile-uploader__camera {
    position: absolute;
    right: -2px;
    bottom: -2px;
    width: 23px;
    height: 23px;
    border-radius: 50%;
    border: 2px solid #fff;
    background: var(--accent);
    color: #ffffff;
    display: grid;
    place-items: center;
    box-shadow: 0 4px 10px rgba(15, 23, 42, 0.24);
    font-size: 0.78rem;
}

.profile-uploader__meta {
    display: grid;
    gap: 0;
    justify-items: center;
}

.profile-uploader__meta p {
    margin: 0;
    font-size: 0.84rem;
    font-weight: 700;
    color: #223146;
}

.profile-uploader__meta small {
    font-size: 0.72rem;
    color: #6d7b90;
}

.profile-info-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.9rem 1rem;
}

.profile-info-item {
    display: grid;
    gap: 0.35rem;
    padding: 0.95rem 1rem;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #fcfdff;
}

.profile-info-item span {
    color: var(--muted);
    font-size: 0.88rem;
}

.profile-info-item strong {
    font-size: 1rem;
    color: var(--text);
    word-break: break-word;
}

.profile-info-item--wide {
    grid-column: 1 / -1;
}

.profile-note-box {
    min-height: 84px;
    padding: 1rem;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #fcfdff;
    line-height: 1.7;
    color: #334155;
}

.alert-banner {
    padding: 0.95rem 1rem;
    margin-bottom: 1rem;
    border-radius: 14px;
}

.alert-banner--error {
    background: rgba(180, 35, 24, 0.12);
    color: var(--danger);
}

.status-page {
    display: grid;
    place-items: center;
    min-height: 100vh;
}

.status-card {
    width: min(540px, calc(100% - 2rem));
    text-align: center;
}

@media (max-width: 980px) {
    .hero-section,
    .feature-grid,
    .role-grid,
    .module-pill-grid,
    .dashboard-grid,
    .dashboard-panels,
    .detail-grid,
    .form-grid,
    .app-shell {
        grid-template-columns: 1fr;
    }

    .landing-showcase__top {
        grid-template-columns: 1fr;
        justify-items: center;
        gap: 0.55rem;
    }

    .landing-showcase__menu {
        flex-wrap: wrap;
    }

    .landing-showcase__center {
        margin-top: 1.35rem;
    }

    .website-carousel-layout {
        grid-template-columns: 1fr;
    }

    .topbar__toggle {
        display: inline-flex;
    }

    .topbar {
        align-items: flex-start;
        flex-wrap: wrap;
        top: 0.5rem;
    }

    .topbar__actions {
        width: 100%;
        justify-content: space-between;
    }

    .toolbar-form {
        grid-template-columns: 1fr;
    }

    .toolbar-form--members {
        display: grid;
        grid-template-columns: 1fr;
        padding: 0;
        border: 0;
        background: transparent;
    }

    .toolbar-form--services,
    .toolbar-form--attendance,
    .toolbar-form--finances,
    .toolbar-form--reports,
    .toolbar-form--savings-monitoring {
        grid-template-columns: 1fr;
        padding: 0;
        border: 0;
        background: transparent;
    }

    .toolbar-form--finances-clean {
        grid-template-columns: 1fr;
    }

    .calendar-summary-grid {
        grid-template-columns: 1fr;
    }

    .finance-stats-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .finance-overview-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .savings-monitoring-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .finance-filter-card__topline {
        flex-direction: column;
        align-items: flex-start;
    }

    .calendar-event-list__item {
        flex-direction: column;
        align-items: flex-start;
    }

    .calendar-event-chip {
        flex-direction: column;
        align-items: stretch;
    }

    .calendar-event-chip__actions {
        opacity: 1;
        max-height: none;
        transform: none;
    }

    .finance-toolbar-actions {
        justify-content: flex-start;
    }

    .range-quick-actions {
        align-items: center;
    }

    .attendance-bulk-bar {
        flex-direction: column;
        align-items: stretch;
    }

    .attendance-bulk-controls {
        width: 100%;
    }

    .form-grid--compact {
        grid-template-columns: 1fr;
    }

    .schedule-composer__grid,
    .schedule-composer__grid--service,
    .schedule-composer__inputs,
    .schedule-composer__grid--service .schedule-composer__inputs {
        grid-template-columns: 1fr;
    }

    .toolbar-form__actions {
        align-items: center;
        justify-content: flex-start;
        flex-wrap: wrap;
    }

    .toolbar-form__actions .button {
        min-height: 40px;
    }

    .profile-hero {
        grid-template-columns: 1fr;
        justify-items: start;
    }

    .profile-hero__actions {
        width: 100%;
    }

    .profile-info-grid {
        grid-template-columns: 1fr;
    }

    .dashboard-toolbar__banner {
        flex-direction: column;
        align-items: flex-start;
    }

    .app-shell {
        padding: 0.75rem;
    }

    .sidebar {
        display: none;
        position: static;
        height: auto;
        max-height: none;
        overflow: visible;
    }

    .sidebar.is-open {
        display: flex;
        max-height: calc(100dvh - 1.5rem);
        overflow: hidden;
        padding-bottom: 0.35rem;
    }

    .sidebar__nav {
        flex: 0 0 auto;
        max-height: calc((3.15rem * 6) + (0.25rem * 5));
        overflow-y: auto;
        overscroll-behavior: contain;
        margin-bottom: 0.75rem;
    }

    .sidebar__footer {
        margin-top: auto;
        flex-shrink: 0;
    }
}

@media print {
    @page {
        margin: 10mm;
    }

    body.reports-page .sidebar,
    body.reports-page .topbar,
    body.reports-page .reports-actions,
    body.reports-page .toolbar-form,
    body.reports-page .reports-type-tabs {
        display: none !important;
    }

    body.reports-page .app-shell,
    body.reports-page .app-shell__content,
    body.reports-page .page-content {
        display: block !important;
        width: 100% !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    body.reports-page .panel-card,
    body.reports-page .stat-card {
        box-shadow: none !important;
        border: 1px solid #d8dde8 !important;
        break-inside: avoid;
    }

    body.reports-page .data-table {
        font-size: 12px;
    }

    body.reports-page th,
    body.reports-page td {
        padding: 0.45rem;
    }

    body.reports-print-preview-page {
        background: #fff;
        padding: 0;
    }

    body.reports-print-preview-page .reports-print-preview-toolbar {
        display: none !important;
    }

    body.reports-print-preview-page .reports-print-preview-panel {
        max-width: none;
        margin: 0;
        border: 0;
        box-shadow: none;
        padding: 33mm 0 16mm;
    }

    body.reports-print-preview-page .reports-print-sheet-header {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        background: #fff;
        padding: 5mm 10mm 3mm;
        margin: 0;
        z-index: 20;
    }

    body.reports-print-preview-page .reports-print-sheet-footer {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        background: #fff;
        padding: 2.5mm 10mm 3mm;
        margin: 0;
        z-index: 20;
    }

    body.reports-print-preview-page .table-shell,
    body.reports-print-preview-page .reports-table-shell,
    body.reports-print-preview-page .reports-table-shell--district {
        overflow: visible !important;
    }

    body.reports-print-preview-page .reports-table-shell--district .data-table {
        min-width: 0 !important;
    }

    body.reports-print-preview-page .data-table {
        width: 100%;
        table-layout: fixed;
        font-size: 10.5px;
    }

    body.reports-print-preview-page th,
    body.reports-print-preview-page td {
        padding: 0.3rem;
        white-space: normal;
        overflow-wrap: anywhere;
        word-break: break-word;
    }

    body.reports-print-preview-page .data-table th:first-child,
    body.reports-print-preview-page .data-table td:first-child {
        width: 28px;
        text-align: center;
    }

    body.reports-print-preview-page .reports-print-sheet-filters {
        font-size: 0.7rem;
    }

    body.reports-print-preview-page .reports-print-sheet-footer {
        margin-top: 0.6rem;
        padding-top: 0.4rem;
    }

    .monthly-report-summary {
        margin-top: 0.55rem;
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
        gap: 0;
        border-top: 1px solid #cbd5e1;
        border-bottom: 1px solid #cbd5e1;
    }

    .monthly-report-summary__item {
        background: #fff;
        padding: 0.4rem 0.5rem;
        border: 0;
        border-radius: 0;
    }

    .monthly-report-summary__item + .monthly-report-summary__item {
        border-left: 1px solid #cbd5e1;
    }

    .monthly-report-summary__item h4 {
        font-size: 0.72rem;
    }

    .monthly-report-summary__item p {
        font-size: 0.62rem;
    }

    .monthly-report-summary__item strong {
        font-size: 0.8rem;
    }
}

@media print {
    body.savings-page .sidebar,
    body.savings-page .topbar,
    body.savings-page .panel-card > :not(.savings-print-report) {
        display: none !important;
    }

    body.savings-page .app-shell,
    body.savings-page .app-shell__content,
    body.savings-page .page-content,
    body.savings-page .panel-card {
        display: block !important;
        width: 100% !important;
        margin: 0 !important;
        padding: 0 !important;
        border: 0 !important;
        box-shadow: none !important;
        background: #fff !important;
    }

    body.savings-page .savings-print-report {
        display: block !important;
    }

    body.savings-page .savings-print-report__header h2 {
        font-size: 15px;
    }

    body.savings-page .savings-print-report__meta p {
        font-size: 12px;
    }

    body.savings-page .savings-print-report__title {
        font-size: 12px;
        margin-top: 12px;
    }

    body.savings-page .savings-print-report__table th,
    body.savings-page .savings-print-report__table td {
        font-size: 11px;
        padding: 5px 6px;
    }
}

@media (max-width: 840px) {
    .monthly-report-summary {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 640px) {
    .landing-showcase__shell {
        border-radius: 20px;
        padding: 0.8rem 0.75rem 1rem;
    }

    .landing-showcase__menu {
        gap: 0.72rem;
    }

    .landing-showcase__menu a {
        font-size: 0.76rem;
    }

    .landing-showcase__center h1 {
        font-size: clamp(1.72rem, 8vw, 2.4rem);
    }

    .landing-showcase__lead {
        font-size: 0.9rem;
    }

    .landing-strip {
        grid-template-columns: 1fr;
        padding: 0.72rem 0.45rem 0.72rem;
    }

    .landing-strip__nav {
        display: none;
    }

    .landing-strip__stage {
        min-height: 126px;
    }

    .landing-strip__item {
        width: 70px;
        height: 104px;
    }

    .landing-strip__item.is-active {
        width: 76px;
        height: 110px;
    }

    .landing-carousel__viewport,
    .landing-carousel__track {
        min-height: 268px;
    }

    .landing-carousel__content h3 {
        font-size: 1.12rem;
    }

    .finance-stats-grid {
        grid-template-columns: 1fr;
    }

    .finance-overview-stats {
        grid-template-columns: 1fr;
    }

    .savings-monitoring-stats {
        grid-template-columns: 1fr;
    }

    .finance-panel-card {
        padding: 1rem;
    }
}

@media (max-width: 980px) {
    .schedule-composer__datetime-inputs,
    .schedule-composer__time-inputs {
        grid-template-columns: 1fr;
    }
}

/* ── Modern Calendar Picker & Form Styling ─────────────────── */

.date-picker-wrapper {
    position: relative;
    width: 100%;
    min-width: 0;
}

.date-picker-input {
    width: 100% !important;
    box-sizing: border-box !important;
    max-width: 100% !important;
    padding: 0.64rem 0.82rem !important;
    border: 1px solid var(--line) !important;
    border-radius: 12px !important;
    background: var(--surface-strong) !important;
    color: var(--text) !important;
    font-size: 0.9rem !important;
    min-height: 38px !important;
    cursor: pointer !important;
    transition: border-color 0.2s ease, box-shadow 0.2s ease !important;
}

.date-picker-input:hover {
    border-color: #c5cee1;
}

.date-picker-input:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(33, 105, 58, 0.1);
}

.flatpickr-calendar {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 12px;
    box-shadow: 0 10px 40px rgba(15, 23, 42, 0.18);
    font-family: var(--font-family);
    width: 312px;
    min-width: 312px;
    max-width: calc(100vw - 24px);
    overflow: hidden;
    z-index: 9999;
}

.date-picker-wrapper .flatpickr-calendar {
    position: absolute !important;
    top: calc(100% + 8px) !important;
    left: 0 !important;
    bottom: auto !important;
    right: auto !important;
}

.date-picker-wrapper .flatpickr-calendar.is-flipped {
    top: auto !important;
    bottom: calc(100% + 8px) !important;
}

.date-picker-wrapper .flatpickr-calendar.open {
    display: block !important;
}

.flatpickr-month {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.flatpickr-innerContainer,
.flatpickr-rContainer {
    width: 100%;
    min-width: 100%;
}

.flatpickr-weekdays {
    background: transparent;
    width: 100%;
    padding: 0.45rem 0.35rem 0.3rem;
    box-sizing: border-box;
    display: flex;
    font-size: 0.74rem;
    font-weight: 600;
    color: var(--muted);
    text-transform: capitalize;
}

.flatpickr-weekdaycontainer {
    display: flex;
    flex: 1 1 100%;
    width: 100%;
    min-width: 100%;
    margin: 0;
    padding: 0;
}

.flatpickr-weekday {
    flex: 0 0 14.2857143%;
    width: 14.2857143% !important;
    max-width: none !important;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.flatpickr-week {
    padding: 0.1rem 0.75rem;
    display: flex;
    gap: 0;
}

.flatpickr-days {
    width: 100%;
    padding: 0.1rem 0.35rem 0.55rem;
    box-sizing: border-box;
}

.flatpickr-days .dayContainer {
    box-sizing: border-box;
    width: 100% !important;
    min-width: 100% !important;
    max-width: 100% !important;
    display: flex !important;
    flex-wrap: wrap;
}

.flatpickr-day {
    box-sizing: border-box;
    flex: 0 0 14.2857143%;
    width: 14.2857143% !important;
    max-width: 14.2857143%;
    min-width: 0;
    height: 32px;
    line-height: 32px;
    padding: 0;
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--text);
    background: transparent;
    border: 1px solid transparent;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.flatpickr-day:hover {
    background: #f0f4ff;
    border-color: var(--accent) !important;
}

.flatpickr-day.selected {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
    font-weight: 600;
}

.flatpickr-day.today {
    border-color: var(--accent);
    color: var(--accent);
    font-weight: 600;
}

.flatpickr-day.prevMonthDay,
.flatpickr-day.nextMonthDay {
    color: var(--line);
}

.flatpickr-day.disabled {
    color: #e6ebf2;
    cursor: not-allowed;
    background: #fbfcff;
}

.flatpickr-day.is-scheduled-day {
    position: relative;
    font-weight: 600;
}

.flatpickr-day.is-scheduled-day::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: 4px;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #21693A;
    transform: translateX(-50%);
}

.flatpickr-day.is-scheduled-day:hover {
    border-color: #21693A !important;
}

.flatpickr-day.is-scheduled-day.scheduled-day--event::after {
    background: #0ea5a3;
}

.flatpickr-day.is-scheduled-day.scheduled-day--service::after {
    background: #f4b63d;
}

.flatpickr-day.is-scheduled-day.scheduled-day--mixed::after {
    background: linear-gradient(90deg, #0ea5a3 0 50%, #f4b63d 50% 100%);
}

.flatpickr-day.is-scheduled-day.scheduled-day--multi {
    background: rgba(33, 105, 58, 0.16);
    border-color: rgba(33, 105, 58, 0.12) !important;
}

.flatpickr-day.is-scheduled-day.scheduled-day--multi.scheduled-day--multi-middle {
    border-radius: 0;
}

.flatpickr-day.is-scheduled-day.scheduled-day--multi.scheduled-day--multi-start {
    border-radius: 999px 0 0 999px;
}

.flatpickr-day.is-scheduled-day.scheduled-day--multi.scheduled-day--multi-end {
    border-radius: 0 999px 999px 0;
}

.flatpickr-day.is-scheduled-day.scheduled-day--multi.scheduled-day--multi-single {
    border-radius: 999px;
}

.flatpickr-day.is-scheduled-day.scheduled-day--multi:hover {
    background: rgba(33, 105, 58, 0.24);
    border-color: rgba(33, 105, 58, 0.35) !important;
}

.flatpickr-day.selected.is-scheduled-day::after {
    background: #ffffff;
}

.flatpickr-day.selected.is-scheduled-day.scheduled-day--event::after,
.flatpickr-day.selected.is-scheduled-day.scheduled-day--service::after,
.flatpickr-day.selected.is-scheduled-day.scheduled-day--mixed::after {
    background: #ffffff;
}

/* ── Modern Time Input Styling ────────────────────────────── */

.schedule-composer__time-inputs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.8rem;
    align-items: start;
}

.schedule-composer__datetime-inputs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem;
    align-items: start;
}

.schedule-composer__datetime-inputs .date-picker-wrapper,
.schedule-composer__datetime-inputs .time-input-group,
.schedule-composer__time-inputs .time-input-group {
    width: 100%;
    min-width: 0;
    overflow: visible;
}

.time-input-group {
    display: grid;
    gap: 0.4rem;
    position: relative;
    z-index: 1;
}

.time-input-group--compact {
    gap: 0;
    align-items: end;
}

.time-input-label {
    font-size: 0.85rem;
    font-weight: 600;
    color: #7b869c;
}

.time-input {
    width: 100%;
    box-sizing: border-box;
    max-width: 100%;
    min-height: 42px;
    padding: 0.72rem 0.9rem;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: var(--surface-strong);
    color: var(--text);
    font-size: 0.93rem;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.time-input:hover {
    border-color: #c5cee1;
}

.time-input:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(33, 105, 58, 0.1);
}

/* Time select dropdown styling */
.time-select {
    width: 100%;
    box-sizing: border-box;
    max-width: 100%;
    min-height: 38px;
    padding: 0.64rem 2.1rem 0.64rem 0.82rem;
    border: 1px solid var(--line);
    border-radius: 12px;
    background-color: var(--surface-strong);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2321693A' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.8rem center;
    background-size: 12px;
    color: var(--text);
    font-size: 0.9rem;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    max-height: 260px;
    overflow-y: auto;
}

.time-select:hover {
    border-color: #c5cee1;
}

.time-select:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(33, 105, 58, 0.1);
}

.time-select option {
    background: var(--surface-strong);
    color: var(--text);
    padding: 10px;
    line-height: 26px;
}
/* ── Modern Select/Dropdown Styling ───────────────────────── */

select {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2321693A' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.8rem center;
    background-size: 12px;
    padding-right: 2.4rem;
    cursor: pointer;
}

.field-group select {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2321693A' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.8rem center;
    background-size: 12px;
    padding-right: 2.4rem;
}

.field-group select:hover {
    border-color: #c5cee1;
}

.field-group select:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(33, 105, 58, 0.1);
}

select option {
    padding: 0.8rem;
}

select option:checked {
    background: linear-gradient(var(--accent), var(--accent));
    background-color: var(--accent);
    color: white;
}

/* ── Form input focus states ──────────────────────────────── */

.field-group input:hover {
    border-color: #c5cee1;
}

.field-group input:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(33, 105, 58, 0.1);
}

.field-group textarea:hover {
    border-color: #c5cee1;
}

.field-group textarea:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(33, 105, 58, 0.1);
}

.notif-drawer__header .icon-button {
    width: 34px;
    height: 34px;
    border-radius: 10px;
}

.notif-drawer__header .icon-button ion-icon {
    font-size: 1.05rem;
}

