:root {
    --member-bg: #eef4f8;
    --member-surface: rgba(255, 255, 255, 0.86);
    --member-border: rgba(15, 23, 42, 0.08);
    --member-text: #0f172a;
    --member-muted: #64748b;
    --member-shadow: 0 20px 40px rgba(15, 23, 42, 0.08);
    --member-shadow-strong: 0 28px 60px rgba(15, 23, 42, 0.14);
    --member-radius: 24px;
}

body.member-body {
    margin: 0;
    min-height: 100vh;
    font-family: 'Manrope', sans-serif;
    background:
        radial-gradient(circle at top left, rgba(15,118,110,0.12), transparent 24%),
        radial-gradient(circle at top right, rgba(245,158,11,0.12), transparent 22%),
        var(--member-bg);
    color: var(--member-text);
}

a { text-decoration: none; }

.member-shell { display: flex; min-height: 100vh; }
.member-sidebar {
    width: 280px;
    padding: 1.25rem;
    border-right: 1px solid var(--member-border);
    background: rgba(255,255,255,0.55);
    backdrop-filter: blur(18px);
    flex-direction: column;
    gap: 1.25rem;
}
.member-brand { display:flex; align-items:center; gap:0.9rem; }
.member-brand-mark {
    width: 50px; height: 50px; border-radius: 18px; display:grid; place-items:center;
    color: #fff; font-weight: 800; background: linear-gradient(135deg, var(--member-primary), var(--member-accent));
}
.member-nav { display:grid; gap:0.55rem; }
.member-nav-link {
    display:flex; align-items:center; gap:0.85rem; padding:0.9rem 1rem; border-radius:18px; color:var(--member-text); font-weight:700;
}
.member-nav-link.active, .member-nav-link:hover {
    background: linear-gradient(135deg, rgba(15,118,110,0.12), rgba(245,158,11,0.10));
    color: var(--member-primary-strong);
}
.member-mobile-menu {
    border-top-right-radius: 28px;
    border-bottom-right-radius: 28px;
    background:
        radial-gradient(circle at top left, rgba(15,118,110,0.14), transparent 28%),
        rgba(255,255,255,0.97);
    backdrop-filter: blur(18px);
}
.member-mobile-menu__header {
    padding: 1rem 1rem 0.75rem;
}
.member-mobile-profile {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 1rem;
    border-radius: 22px;
    background: rgba(255,255,255,0.72);
    border: 1px solid var(--member-border);
    box-shadow: var(--member-shadow);
}
.member-mobile-profile__copy {
    min-width: 0;
}
.member-mobile-profile__copy strong,
.member-mobile-profile__copy small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.member-mobile-section {
    margin-top: 1rem;
    padding: 1rem;
    border-radius: 24px;
    background: linear-gradient(180deg, rgba(15,118,110,0.08), rgba(255,255,255,0.74));
    border: 1px solid rgba(15,23,42,0.06);
    box-shadow: 0 18px 36px rgba(15,23,42,0.06);
}
.member-mobile-section__header {
    margin-bottom: 0.85rem;
}
.member-mobile-section__header strong {
    font-size: 1rem;
}
.member-nav--mobile {
    gap: 0.65rem;
}
.member-nav--mobile .member-nav-link {
    background: rgba(255,255,255,0.58);
    border: 1px solid rgba(15,23,42,0.06);
    box-shadow: 0 12px 24px rgba(15,23,42,0.04);
}
.member-nav-link--danger {
    color: #b91c1c;
    background: rgba(239,68,68,0.08) !important;
    border-color: rgba(239,68,68,0.16) !important;
}
.member-main { flex: 1; min-width: 0; }
.member-topbar {
    display:flex; justify-content:space-between; align-items:center; gap:1rem;
    padding:1.25rem 1rem 1rem;
}
.member-topbar__left {
    display: flex;
    align-items: center;
    gap: 0.9rem;
}
.member-menu-toggle {
    width: 46px;
    height: 46px;
    border: 1px solid var(--member-border);
    border-radius: 16px;
    background: rgba(255,255,255,0.86);
    box-shadow: var(--member-shadow);
    color: var(--member-text);
}
.member-eyebrow { color: var(--member-muted); text-transform: uppercase; letter-spacing: .08em; font-size:.76rem; }
.member-title { font-size: clamp(1.4rem, 3vw, 2rem); font-weight: 800; }
.member-chip {
    display:flex; align-items:center; gap:.75rem; padding:.55rem .8rem;
    background: var(--member-surface); border:1px solid var(--member-border); border-radius:999px; box-shadow: var(--member-shadow);
}
.member-date-time-chip {
    display:flex;
    align-items:center;
    gap:.55rem;
    padding:.55rem .85rem;
    background: var(--member-surface);
    border:1px solid var(--member-border);
    border-radius:999px;
    box-shadow: var(--member-shadow);
    font-weight:700;
}
.member-date-time-chip__text {
    white-space: nowrap;
}
.member-date-time-chip--auth {
    display: inline-flex !important;
}
.avatar-circle {
    width: 2.4rem;
    height: 2.4rem;
    display: grid;
    place-items: center;
    border-radius: 999px;
    color: #fff;
    font-weight: 800;
    background: linear-gradient(135deg, var(--member-primary), var(--member-accent));
    box-shadow: 0 12px 26px rgba(15,118,110,0.22);
}
.member-card {
    background: var(--member-surface);
    border: 1px solid var(--member-border);
    border-radius: var(--member-radius);
    box-shadow: var(--member-shadow);
    backdrop-filter: blur(18px);
    padding: 1.25rem;
    margin-bottom: 1.25rem;
    position: relative;
    overflow: hidden;
    transform: translateZ(0);
}
.member-card::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(145deg, rgba(255,255,255,0.28), transparent 46%);
    pointer-events: none;
}
.member-card--hero,
.member-spotlight-card,
.member-metric {
    box-shadow: var(--member-shadow-strong);
}
.member-attendance-focus {
    background:
        radial-gradient(circle at top right, rgba(245,158,11,0.16), transparent 28%),
        radial-gradient(circle at top left, rgba(15,118,110,0.18), transparent 34%),
        rgba(255,255,255,0.92);
    border-color: rgba(15,118,110,0.18);
}
.member-attendance-banner {
    background: linear-gradient(135deg, rgba(15,118,110,0.10), rgba(245,158,11,0.12));
    border-color: rgba(15,118,110,0.12) !important;
}
.member-attendance-analytics {
    background:
        linear-gradient(160deg, rgba(15,118,110,0.10), rgba(255,255,255,0.92)),
        rgba(255,255,255,0.92);
    border-color: rgba(15,118,110,0.16);
}
.member-metric {
    padding: 1rem;
    border-radius: 22px;
    background: linear-gradient(135deg, rgba(15,118,110,0.12), rgba(245,158,11,0.12));
    border: 1px solid rgba(15,23,42,0.06);
}
.member-metric-value { font-size: 1.8rem; font-weight: 800; }
.member-auth {
    min-height: 100vh;
    display:grid; place-items:center;
    padding:1.25rem;
    background:
        linear-gradient(145deg, rgba(2,6,23,.82), rgba(15,118,110,.48)),
        url('https://images.unsplash.com/photo-1534438327276-14e5300c3a48?auto=format&fit=crop&w=1600&q=80') center/cover no-repeat;
}
.member-auth-card {
    width:min(980px,100%);
    display:grid; grid-template-columns: 1fr .9fr;
    gap:1.25rem;
}
.member-auth-hero, .member-auth-panel {
    background: rgba(255,255,255,0.12);
    border:1px solid rgba(255,255,255,0.14);
    border-radius: 32px;
    backdrop-filter: blur(10px);
    padding: 2rem;
}
.member-auth-panel { background: rgba(255,255,255,.92); color: var(--member-text); }
.member-install-hint {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.85rem 1rem;
    border-radius: 999px;
    background: rgba(255,255,255,0.14);
    border: 1px solid rgba(255,255,255,0.18);
    backdrop-filter: blur(10px);
}
.member-list { list-style:none; padding:0; margin:0; }
.member-list li + li { margin-top:.8rem; }
.member-table { --bs-table-bg: transparent; --bs-table-color: var(--member-text); }
.member-table th { color: var(--member-muted); font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.08em; }
.member-table td, .member-table th { vertical-align: middle; }
.gps-note { color: var(--member-muted); font-size: .88rem; }
.member-status-pill,
.member-mini-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.75rem 1rem;
    border-radius: 999px;
    background: rgba(15,118,110,0.10);
    color: var(--member-primary-strong);
    border: 1px solid rgba(15,118,110,0.12);
    font-weight: 700;
}
.member-status-pill.is-success {
    background: rgba(34,197,94,0.12);
    color: #166534;
    border-color: rgba(34,197,94,0.18);
}
.attendance-step-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}
.attendance-step-card {
    position: relative;
    padding: 1rem 1rem 1rem 3.8rem;
    border-radius: 22px;
    border: 1px solid var(--member-border);
    background: rgba(255,255,255,0.52);
}
.attendance-step-card strong,
.attendance-step-card small {
    display: block;
}
.attendance-step-card small {
    color: var(--member-muted);
    margin-top: 0.35rem;
}
.attendance-step-index {
    position: absolute;
    left: 1rem;
    top: 1rem;
    width: 2rem;
    height: 2rem;
    display: grid;
    place-items: center;
    border-radius: 14px;
    color: #fff;
    font-weight: 800;
    background: linear-gradient(135deg, var(--member-primary), var(--member-accent));
    box-shadow: 0 18px 34px rgba(15,118,110,0.22);
}
.attendance-map-wrap {
    border-radius: 24px;
    overflow: hidden;
    border: 1px solid var(--member-border);
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.6);
}
#attendanceMap {
    height: 320px;
    background:
        radial-gradient(circle at top left, rgba(15,118,110,0.12), transparent 32%),
        linear-gradient(135deg, #dbeafe, #f8fafc);
}
.attendance-coords {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}
.attendance-coords > div,
.member-summary-item {
    padding: 1rem;
    border-radius: 18px;
    background: rgba(255,255,255,0.58);
    border: 1px solid var(--member-border);
}
.attendance-coords small,
.member-summary-item span {
    display: block;
    color: var(--member-muted);
    margin-bottom: 0.35rem;
}
.member-summary-list {
    display: grid;
    gap: 0.9rem;
}
.chart-panel {
    padding: 1rem;
    border-radius: 22px;
    background: linear-gradient(180deg, rgba(255,255,255,0.55), rgba(15,118,110,0.04));
    border: 1px solid var(--member-border);
}
.chart-panel--highlight {
    background:
        radial-gradient(circle at top left, rgba(15,118,110,0.14), transparent 30%),
        linear-gradient(180deg, rgba(255,255,255,0.78), rgba(245,158,11,0.08));
    border-color: rgba(15,118,110,0.14);
    box-shadow: 0 22px 46px rgba(15,23,42,0.10);
}
.member-chart-wrap {
    position: relative;
    width: 100%;
    height: 320px;
}
.member-chart-wrap--dashboard {
    height: 280px;
}
.member-chart-wrap canvas {
    width: 100% !important;
    height: 100% !important;
    display: block;
}
.install-sheet {
    position: fixed;
    inset: 0;
    z-index: 2000;
}
.install-sheet__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.5);
    opacity: 0;
    transition: opacity 0.2s ease;
}
.install-sheet__dialog {
    position: absolute;
    left: 50%;
    bottom: 1rem;
    width: min(440px, calc(100% - 1.5rem));
    transform: translateX(-50%) translateY(18px);
    opacity: 0;
    transition: opacity 0.22s ease, transform 0.22s ease;
    padding: 1.35rem;
    border-radius: 28px;
    background: rgba(255,255,255,0.97);
    border: 1px solid rgba(15,23,42,0.08);
    box-shadow: 0 30px 65px rgba(15,23,42,0.26);
}
.install-sheet.is-visible .install-sheet__backdrop,
.install-sheet.is-visible .install-sheet__dialog {
    opacity: 1;
}
.install-sheet.is-visible .install-sheet__dialog {
    transform: translateX(-50%) translateY(0);
}
.install-sheet__close {
    position: absolute;
    right: 0.85rem;
    top: 0.85rem;
    width: 2rem;
    height: 2rem;
    border: 0;
    border-radius: 999px;
    background: rgba(15,23,42,0.06);
}
.install-sheet__icon {
    width: 56px;
    height: 56px;
    display: grid;
    place-items: center;
    border-radius: 18px;
    margin-bottom: 1rem;
    font-weight: 800;
    color: #fff;
    background: linear-gradient(135deg, var(--member-primary), var(--member-accent));
    box-shadow: 0 16px 34px rgba(15,118,110,0.2);
}
.install-sheet__actions {
    display: flex;
    gap: 0.75rem;
}

@media (max-width: 991.98px) {
    .member-auth-card { grid-template-columns: 1fr; }
    .member-topbar {
        padding: 1rem 1rem .5rem;
        align-items: flex-start;
    }
    .member-title {
        font-size: 1.55rem;
        line-height: 1.15;
    }
    .member-chip {
        padding: 0.45rem 0.65rem;
        gap: 0.6rem;
        border-radius: 22px;
    }
    .member-date-time-chip:not(.member-date-time-chip--auth) {
        display: none !important;
    }
    .member-chip strong {
        max-width: 104px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    .member-card {
        padding: 1rem;
        border-radius: 22px;
        margin-bottom: 1rem;
    }
    .member-metric {
        border-radius: 18px;
    }
    .attendance-step-grid { grid-template-columns: 1fr; }
    .attendance-coords { grid-template-columns: 1fr; }
    #attendanceMap { height: 260px; }
    .member-chart-wrap { height: 240px; }
    .member-chart-wrap--dashboard { height: 230px; }
}

@media (max-width: 575.98px) {
    .member-topbar {
        gap: 0.85rem;
        padding: 0.9rem 0.9rem 0.4rem;
    }
    .member-topbar__left {
        min-width: 0;
        flex: 1;
    }
    .member-chip {
        display: none;
    }
    .member-menu-toggle {
        width: 42px;
        height: 42px;
        border-radius: 14px;
    }
    .member-mobile-menu {
        width: min(88vw, 340px);
    }
    .member-mobile-menu__header {
        padding: 0.9rem 0.9rem 0.7rem;
    }
    .member-mobile-profile,
    .member-mobile-section {
        padding: 0.9rem;
        border-radius: 20px;
    }
    .member-nav--mobile .member-nav-link {
        padding: 0.85rem 0.9rem;
        border-radius: 16px;
    }
}
