:root{--green:#064831;--green-dark:#022d1d;--green-soft:#e8f1ec;--gold:#e5c45f;--bg:#f4f6f3;--card:#fff;--text:#14251f;--muted:#69736e;--border:#dce3dd;--danger:#a23c3c;--success:#2f8651;--nav:72px}*{box-sizing:border-box}html{background:var(--bg)}body{min-height:100vh;margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}button,input,select,textarea{font:inherit}[hidden]{display:none!important}.member-app{width:min(100%,520px);min-height:100vh;margin:auto;padding:max(16px,env(safe-area-inset-top)) 16px calc(var(--nav) + 28px + env(safe-area-inset-bottom));background:var(--bg)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;margin-bottom:16px}.brand{display:flex;align-items:center;gap:10px}.brand img{width:36px;height:36px;object-fit:contain}.brand strong{color:var(--green);font-size:1rem}.pill{display:inline-flex;align-items:center;min-height:30px;padding:0 11px;border:1px solid #d9e5dd;border-radius:999px;background:#fff;color:var(--green);font-size:.74rem;font-weight:800}.hero{margin:4px 0 18px}.eyebrow{margin:0 0 4px;color:var(--muted);font-size:.76rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.title{margin:0;color:var(--green-dark);font-size:clamp(1.7rem,8vw,2.2rem);line-height:1.05;letter-spacing:-.04em}.subtitle{margin:8px 0 0;color:var(--muted);font-size:.92rem;line-height:1.45}.section{margin-top:22px}.section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:10px}.section-head h2{margin:0;color:var(--green-dark);font-size:1.08rem}.section-head a,.link-btn{border:0;background:transparent;color:var(--green);font-size:.82rem;font-weight:800;text-decoration:none;cursor:pointer}.card{padding:16px;border:1px solid var(--border);border-radius:19px;background:var(--card);box-shadow:0 8px 22px rgba(20,50,38,.055)}.card+.card{margin-top:10px}.card.accent{border-color:rgba(6,72,49,.2);background:linear-gradient(145deg,#fff,#edf5f0)}.card.locked{border-color:rgba(229,196,95,.45);background:linear-gradient(145deg,#fff,#fbf6e7)}.kicker{margin:0 0 5px;color:var(--muted);font-size:.76rem;font-weight:700}.card h3{margin:0;color:var(--green-dark);font-size:1rem}.meta{margin:5px 0 0;color:var(--muted);font-size:.82rem;line-height:1.4}.actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.action{min-height:108px;padding:15px;border:1px solid var(--border);border-radius:18px;background:#fff;color:var(--green-dark);text-decoration:none}.action b{display:block;margin-top:18px}.action span{display:block;margin-top:4px;color:var(--muted);font-size:.75rem}.club-list{display:grid;gap:10px}.club{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:11px;width:100%;padding:12px;border:1px solid var(--border);border-radius:16px;background:#fff;text-align:left}.club-logo{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--green-soft);color:var(--green);font-weight:900}.club strong,.club span{display:block}.club span{margin-top:2px;color:var(--muted);font-size:.76rem}.badge{display:inline-flex!important;align-items:center;min-height:26px!important;padding:0 9px!important;border-radius:999px;background:var(--green-soft);color:var(--green)!important;font-size:.7rem!important;font-weight:800}.button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 16px;border:1px solid var(--green);border-radius:14px;background:var(--green);color:#fff;font-weight:800;text-decoration:none;cursor:pointer}.button.secondary{background:#fff;color:var(--green)}.button.danger{border-color:#f0d1d1;background:#fff5f5;color:var(--danger)}.button.full{width:100%}.button:disabled{opacity:.55;cursor:not-allowed}.field{display:grid;gap:6px}.field span{color:var(--muted);font-size:.76rem;font-weight:700}.field input,.field select,.field textarea{width:100%;min-height:46px;padding:0 12px;border:1px solid var(--border);border-radius:13px;background:#fff;color:var(--text)}.field textarea{min-height:90px;padding-top:12px}.stack{display:grid;gap:12px}.notice{margin:12px 0;padding:12px 14px;border-radius:14px;background:var(--green-soft);color:var(--green-dark);font-size:.82rem;line-height:1.45}.notice.error{background:#fff0f0;color:#7f2f2f}.notice.success{background:#edf8f1;color:#24633d}.empty{padding:22px 16px;border:1px dashed #cbd7cf;border-radius:16px;color:var(--muted);text-align:center;font-size:.84rem}.bottom-nav{position:fixed;z-index:100;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));width:min(100%,520px);min-height:calc(var(--nav) + env(safe-area-inset-bottom));margin:auto;padding:7px 6px calc(7px + env(safe-area-inset-bottom));border-top:1px solid rgba(6,72,49,.12);background:rgba(255,255,255,.96);backdrop-filter:blur(14px)}.bottom-nav a{display:grid;place-items:center;align-content:center;gap:2px;min-height:54px;border-radius:14px;color:var(--muted);font-size:.68rem;font-weight:700;text-decoration:none}.bottom-nav a.active{background:var(--green-soft);color:var(--green)}.bottom-nav i{font-style:normal;font-size:1.2rem}.date-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(68px,1fr);gap:8px;overflow-x:auto;margin:0 -16px;padding:2px 16px 8px;scrollbar-width:none}.date-strip::-webkit-scrollbar{display:none}.date{min-height:62px;padding:7px;border:1px solid var(--border);border-radius:15px;background:#fff;color:var(--muted)}.date strong,.date span{display:block}.date strong{color:var(--green-dark);font-size:.9rem}.date span{margin-top:2px;font-size:.7rem}.date.active{border-color:var(--green);background:var(--green);color:#dceae4}.date.active strong{color:#fff}.tee-list{display:grid;gap:9px}.tee{display:grid;grid-template-columns:70px minmax(0,1fr) auto;align-items:center;gap:11px;padding:12px;border:1px solid var(--border);border-radius:17px;background:#fff}.tee-time{color:var(--green-dark);font-size:1.15rem;font-weight:900}.tee strong,.tee span{display:block}.tee span{margin-top:2px;color:var(--muted);font-size:.73rem}.tee button{min-width:66px;min-height:38px;padding:0 10px;border:1px solid var(--green);border-radius:12px;background:var(--green);color:#fff;font-size:.76rem;font-weight:800}.tee button.secondary{background:#fff;color:var(--green)}.tee button:disabled{border-color:#dfe5e1;background:#f4f6f4;color:#8a948f}.dialog{width:min(460px,calc(100vw - 24px));max-height:calc(100vh - 24px);padding:0;overflow:auto;border:0;border-radius:22px;box-shadow:0 24px 70px rgba(0,0,0,.22)}.dialog::backdrop{background:rgba(3,25,17,.55)}.dialog-panel{padding:18px}.dialog-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:16px}.dialog-head h2{margin:0}.dialog-head p{margin:4px 0 0;color:var(--muted);font-size:.78rem}.close{width:38px;height:38px;border:0;border-radius:12px;background:#eff3f0;color:var(--green);font-size:1.3rem}.dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}.booking-top{display:flex;justify-content:space-between;gap:12px}.booking-time{color:var(--green-dark);font-size:1.2rem;font-weight:900}.booking-actions{display:flex;gap:8px;margin-top:10px}.booking-actions button{flex:1;min-height:40px}.calendar-event{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;padding:13px 0;border-bottom:1px solid #e8ece9}.calendar-event:last-child{border-bottom:0}.calendar-date{color:var(--green);font-size:.76rem;font-weight:900;text-transform:uppercase}.calendar-event h3{margin:0;font-size:.9rem}.calendar-event p{margin:4px 0 0;color:var(--muted);font-size:.76rem}.segments{display:grid;grid-template-columns:repeat(5,minmax(62px,1fr));gap:5px;overflow-x:auto;padding:4px;border-radius:14px;background:#e9efeb}.segments button{min-height:34px;border:0;border-radius:10px;background:transparent;color:var(--muted);font-size:.72rem;font-weight:800}.segments button.active{background:#fff;color:var(--green)}.auth-page{display:grid;place-items:center;min-height:100vh;padding:22px 18px;background:radial-gradient(circle at 50% 0,#0b6045,var(--green) 44%,var(--green-dark))}.auth-panel{width:min(100%,420px);padding:24px 19px;border-radius:26px;background:#fff;box-shadow:0 24px 70px rgba(0,0,0,.2)}.auth-logo{display:block;width:min(230px,72%);margin:0 auto 10px}.auth-tag{margin:0 0 20px;color:var(--muted);text-align:center;font-size:.84rem}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:16px;padding:4px;border-radius:14px;background:#edf2ee}.auth-tabs button{min-height:38px;border:0;border-radius:11px;background:transparent;color:var(--muted);font-weight:800}.auth-tabs button.active{background:#fff;color:var(--green)}.profile-row{display:flex;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid #e9ecea}.profile-row:last-child{border-bottom:0}.profile-row span{color:var(--muted);font-size:.78rem}.profile-row strong{max-width:62%;text-align:right;font-size:.8rem}@media(min-width:700px){body:not(.auth-page){background:#e7ebe8}.member-app{border-left:1px solid #d6ddd8;border-right:1px solid #d6ddd8}}


/* =========================================================
   PLAYER CALENDAR BASELINE
   ========================================================= */

.calendar-club-control {
    margin-top: 18px;
}

.calendar-month-toolbar {
    display: grid;
    grid-template-columns: 46px minmax(0, 1fr) 46px;
    align-items: center;
    gap: 10px;
    margin-top: 14px;
}

.calendar-month-button {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    padding: 0;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: #fff;
    color: var(--green);
    font-size: 1.55rem;
    line-height: 1;
    font-weight: 800;
    cursor: pointer;
}

.calendar-month-heading {
    min-width: 0;
    text-align: center;
}

.calendar-month-heading span,
.calendar-month-heading strong {
    display: block;
}

.calendar-month-heading span {
    color: var(--muted);
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.calendar-month-heading strong {
    margin-top: 2px;
    color: var(--green-dark);
    font-size: 1.05rem;
}

.calendar-filter-section {
    margin-top: 14px;
}

.calendar-status {
    min-height: 1rem;
    margin: 0 2px 8px;
    color: var(--muted);
    font-size: 0.72rem;
    font-weight: 700;
}

.calendar-events-card {
    padding-top: 4px;
    padding-bottom: 4px;
}

.calendar-event {
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 12px;
    padding: 14px 0;
}

.calendar-date {
    display: grid;
    align-content: start;
    justify-items: center;
    gap: 1px;
    min-height: 48px;
    padding: 7px 4px;
    border-radius: 13px;
    background: var(--green-soft);
    color: var(--green);
    text-align: center;
}

.calendar-date strong {
    font-size: 1rem;
    line-height: 1;
}

.calendar-date span {
    font-size: 0.64rem;
    font-weight: 800;
    text-transform: uppercase;
}

.calendar-event__body {
    min-width: 0;
}

.calendar-event__heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
}

.calendar-event__heading h3 {
    min-width: 0;
    line-height: 1.3;
}

.calendar-event__section {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    min-height: 23px;
    padding: 0 7px;
    border-radius: 999px;
    background: #edf2ee;
    color: var(--green);
    font-size: 0.62rem;
    font-weight: 800;
}

.calendar-event__section[data-section="mens"] {
    background: #edf3fa;
    color: #315f8b;
}

.calendar-event__section[data-section="seniors"] {
    background: #f1eef8;
    color: #65518b;
}

.calendar-event__section[data-section="ladies"] {
    background: #f9eef4;
    color: #8a4c6d;
}

.calendar-event__secondary {
    margin-top: 2px !important;
    font-size: 0.7rem !important;
}

@media (max-width: 360px) {
    .calendar-event__heading {
        display: grid;
    }

    .calendar-event__section {
        justify-self: start;
    }
}


/* =========================================================
   PLAYER PLAY — ENTITLEMENT GATE
   ========================================================= */

.play-access-card {
    margin-top: 18px;
    text-align: left;
}

.play-access-card h2 {
    margin: 4px 0 7px;
    color: var(--green-dark);
    font-size: 1.22rem;
    line-height: 1.25;
}

.play-access-icon {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    margin-bottom: 13px;
    border-radius: 15px;
    background: var(--green-soft);
    color: var(--green);
    font-size: 1.15rem;
    font-weight: 900;
}

.play-access-icon--locked {
    background: #f5f1e5;
    color: #7a631f;
    font-size: 1rem;
}

.play-access-icon--active {
    background: #e2f2e7;
    color: #17673d;
}

.play-access-summary {
    display: grid;
    grid-template-columns: repeat(
        2,
        minmax(0, 1fr)
    );
    gap: 9px;
    margin-top: 16px;
}

.play-access-summary > div {
    min-width: 0;
    padding: 12px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: rgba(
        255,
        255,
        255,
        0.76
    );
}

.play-access-summary span,
.play-access-summary strong {
    display: block;
}

.play-access-summary span {
    color: var(--muted);
    font-size: 0.65rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.play-access-summary strong {
    margin-top: 4px;
    color: var(--green-dark);
    font-size: 0.82rem;
    line-height: 1.35;
    overflow-wrap: anywhere;
}

.play-access-actions {
    display: grid;
    gap: 8px;
    margin-top: 16px;
}

.play-access-footnote {
    margin: 12px 0 0;
    color: var(--muted);
    font-size: 0.7rem;
    line-height: 1.45;
    text-align: center;
}

.play-access-ready {
    margin: 16px 0;
    padding: 13px;
    border-radius: 14px;
    background: rgba(
        255,
        255,
        255,
        0.76
    );
}

.play-access-ready span,
.play-access-ready strong {
    display: block;
}

.play-access-ready span {
    color: var(--muted);
    font-size: 0.65rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.play-access-ready strong {
    margin-top: 3px;
    color: var(--green-dark);
    font-size: 0.95rem;
}

.play-access-ready p {
    margin: 5px 0 0;
    color: var(--muted);
    font-size: 0.75rem;
    line-height: 1.45;
}

@media (max-width: 360px) {
    .play-access-summary {
        grid-template-columns: 1fr;
    }
}


/* =========================================================
   PLAYER PROFILE BASELINE
   ========================================================= */

.profile-hero {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 14px;
}

.profile-avatar {
    display: grid;
    place-items: center;
    width: 58px;
    height: 58px;
    border-radius: 18px;
    background: var(--green);
    color: #fff;
    font-size: 1rem;
    font-weight: 900;
    letter-spacing: 0.02em;
}

.profile-hero__content {
    min-width: 0;
}

.profile-hero__content .title {
    overflow-wrap: anywhere;
}

.profile-details-card {
    padding-top: 2px;
    padding-bottom: 2px;
}

.profile-detail-row {
    display: grid;
    grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
    align-items: start;
    gap: 12px;
    padding: 13px 0;
    border-bottom: 1px solid var(--border);
}

.profile-detail-row:last-child {
    border-bottom: 0;
}

.profile-detail-row span {
    color: var(--muted);
    font-size: 0.7rem;
    font-weight: 800;
    letter-spacing: 0.035em;
    text-transform: uppercase;
}

.profile-detail-row strong {
    min-width: 0;
    color: var(--green-dark);
    font-size: 0.82rem;
    line-height: 1.4;
    text-align: right;
    overflow-wrap: anywhere;
}

.profile-access-card {
    padding-top: 15px;
}

.profile-access-grid {
    display: grid;
    grid-template-columns: repeat(
        2,
        minmax(0, 1fr)
    );
    gap: 9px;
}

.profile-access-grid > div {
    min-width: 0;
    padding: 12px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: var(--green-soft);
}

.profile-access-grid span,
.profile-access-grid strong,
.profile-access-expiry span,
.profile-access-expiry strong {
    display: block;
}

.profile-access-grid span,
.profile-access-expiry span {
    color: var(--muted);
    font-size: 0.65rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.profile-access-grid strong,
.profile-access-expiry strong {
    margin-top: 4px;
    color: var(--green-dark);
    font-size: 0.85rem;
    line-height: 1.35;
}

.profile-access-expiry {
    margin-top: 9px;
    padding: 12px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: #fff;
}

.profile-access-note {
    margin: 12px 1px 0;
    color: var(--muted);
    font-size: 0.7rem;
    line-height: 1.45;
}

.profile-section-meta {
    margin: 3px 0 0;
    color: var(--muted);
    font-size: 0.7rem;
    font-weight: 700;
}

.profile-club-list {
    gap: 9px;
}

.profile-club {
    align-items: center;
}

.profile-club__body {
    min-width: 0;
}

.profile-club__body strong,
.profile-club__body span {
    display: block;
}

.profile-club__body strong {
    overflow-wrap: anywhere;
}

.profile-club__body span {
    margin-top: 2px;
}

.profile-club__badges {
    display: grid;
    justify-items: end;
    gap: 4px;
}

.profile-badge-primary {
    background: #fbf1d5;
    color: #785b05;
}

.profile-signout-section {
    padding-bottom:
        calc(
            28px +
            env(safe-area-inset-bottom)
        );
}

@media (max-width: 360px) {
    .profile-access-grid {
        grid-template-columns: 1fr;
    }

    .profile-club {
        grid-template-columns:
            auto
            minmax(0, 1fr);
    }

    .profile-club__badges {
        grid-column: 2;
        justify-items: start;
        grid-auto-flow: column;
        justify-content: start;
    }
}


/* =========================================================
   PLAYER MEMBERSHIP RENEWAL NOTIFICATIONS
   ========================================================= */

.profile-renewal-notices {
    display: grid;
    gap: 9px;
}

.profile-renewal-notice {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
    gap: 11px;
    padding: 13px;
    border: 1px solid var(--border);
    border-radius: 15px;
    background: #fffaf0;
}

.profile-renewal-notice--expired {
    background: #fff6f6;
    border-color: #e7baba;
}

.profile-renewal-notice__icon {
    display: grid;
    place-items: center;
    width: 30px;
    height: 30px;
    border-radius: 10px;
    background: #fbf1d5;
    color: #785b05;
    font-size: .78rem;
    font-weight: 900;
}

.profile-renewal-notice--expired
.profile-renewal-notice__icon {
    background: #f8eaea;
    color: #8d3434;
}

.profile-renewal-notice strong {
    display: block;
    color: var(--green-dark);
    font-size: .8rem;
    line-height: 1.35;
}

.profile-renewal-notice p {
    margin: 4px 0 0;
    color: var(--muted);
    font-size: .71rem;
    line-height: 1.45;
}


/* =========================================================
   PLAYER ACCOUNT DETAILS
   ========================================================= */

.profile-account-link {
    display: grid;
    grid-template-columns:
        auto
        minmax(0, 1fr)
        auto;
    align-items: center;
    gap: 12px;
    color: inherit;
    text-decoration: none;
}

.profile-account-link__icon {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 13px;
    background: var(--green-soft);
    color: var(--green-dark);
    font-size: 1rem;
    font-weight: 900;
}

.profile-account-link__body {
    min-width: 0;
}

.profile-account-link__body strong,
.profile-account-link__body span {
    display: block;
}

.profile-account-link__body strong {
    color: var(--green-dark);
    font-size: .84rem;
}

.profile-account-link__body span {
    margin-top: 3px;
    color: var(--muted);
    font-size: .7rem;
    overflow-wrap: anywhere;
}

.profile-account-link__chevron {
    color: var(--muted);
    font-size: 1.45rem;
    line-height: 1;
}

.account-page-brand {
    gap: 9px;
}

.account-back-button {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    margin-left: -5px;
    border-radius: 11px;
    color: var(--green-dark);
    text-decoration: none;
    font-size: 1.65rem;
    line-height: 1;
}

.account-details-hero {
    display: block;
}

.account-details-form {
    padding-bottom:
        calc(
            30px +
            env(safe-area-inset-bottom)
        );
}

.account-details-card {
    display: grid;
    gap: 14px;
}

.account-details-field {
    display: grid;
    gap: 6px;
}

.account-details-field > span {
    color: var(--muted);
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.account-details-field input {
    width: 100%;
    min-height: 46px;
    box-sizing: border-box;
    padding: 10px 12px;
    border: 1px solid var(--border);
    border-radius: 13px;
    background: #fff;
    color: var(--text);
    font: inherit;
    font-size: .86rem;
}

.account-details-field input:focus {
    outline: 2px solid
        rgba(
            6,
            72,
            49,
            .12
        );
    border-color: var(--green);
}

.account-details-field small {
    color: var(--muted);
    font-size: .68rem;
    line-height: 1.4;
}

.account-details-login-heading {
    margin-top: 18px;
}

.account-login-card {
    display: grid;
    gap: 11px;
}

.account-login-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.account-login-row > div {
    min-width: 0;
}

.account-login-row span,
.account-login-row strong {
    display: block;
}

.account-login-row > div > span {
    color: var(--muted);
    font-size: .66rem;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.account-login-row strong {
    margin-top: 3px;
    color: var(--green-dark);
    font-size: .82rem;
    overflow-wrap: anywhere;
}

.account-login-card p {
    margin: 0;
    color: var(--muted);
    font-size: .7rem;
    line-height: 1.45;
}

.account-details-success {
    margin: 0 14px 14px;
    border-color: #b9dec7;
    background: #edf8f1;
    color: #17673d;
}


/* =========================================================
   MEMBER CLUB CREDIT
   ========================================================= */

.profile-credit-list {
    display: grid;
    gap: 10px;
}

.profile-credit-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
}

.profile-credit-card__club {
    min-width: 0;
}

.profile-credit-card__club strong,
.profile-credit-card__club span {
    display: block;
}

.profile-credit-card__club strong {
    color: var(--green-dark);
    font-size: .84rem;
}

.profile-credit-card__club span {
    margin-top: 3px;
    color: var(--muted);
    font-size: .7rem;
}

.profile-credit-card__balance {
    text-align: right;
}

.profile-credit-card__balance strong {
    display: block;
    color: var(--green-dark);
    font-size: 1.05rem;
    font-variant-numeric: tabular-nums;
}

.profile-credit-card__balance button {
    margin-top: 5px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--green);
    font: inherit;
    font-size: .68rem;
    font-weight: 800;
    cursor: pointer;
}

.profile-credit-dialog {
    width: min(430px, calc(100vw - 24px));
    padding: 0;
    border: 0;
    border-radius: 18px;
    background: transparent;
}

.profile-credit-dialog::backdrop {
    background: rgba(7, 29, 21, .55);
}

.member-dialog__panel {
    max-height: 78vh;
    overflow-y: auto;
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 24px 60px rgba(7, 29, 21, .22);
}

.member-dialog__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 16px;
    border-bottom: 1px solid var(--border);
}

.member-dialog__header h2 {
    margin: 3px 0 0;
    color: var(--green-dark);
    font-size: 1.05rem;
}

.dialog-close {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border: 1px solid var(--border);
    border-radius: 50%;
    background: #fff;
    color: var(--muted);
    font-size: 1.2rem;
}

.profile-credit-transactions {
    display: grid;
}

.profile-credit-transaction {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    padding: 13px 16px;
    border-bottom: 1px solid var(--border);
}

.profile-credit-transaction:last-child {
    border-bottom: 0;
}

.profile-credit-transaction strong,
.profile-credit-transaction span,
.profile-credit-transaction small {
    display: block;
}

.profile-credit-transaction strong {
    color: var(--green-dark);
    font-size: .78rem;
}

.profile-credit-transaction span,
.profile-credit-transaction small {
    margin-top: 2px;
    color: var(--muted);
    font-size: .66rem;
}

.profile-credit-transaction__amount {
    text-align: right;
    font-size: .8rem !important;
    font-weight: 900;
    font-variant-numeric: tabular-nums;
}

.profile-credit-transaction__amount--credit {
    color: #20703e !important;
}

.profile-credit-transaction__amount--debit {
    color: #983434 !important;
}

/* =========================================================
   v0.26.0 — Player membership & club services
   ========================================================= */

.home-feature-card,
.home-club-link,
.profile-club {
    color: inherit;
    text-decoration: none;
}

.player-home-actions .action div {
    font-size: 1.15rem;
    font-weight: 900;
}

.profile-service-links {
    display: grid;
    gap: 10px;
}

.club-services-list,
.results-list,
.credit-page-accounts,
.leaderboard-list,
.result-awards {
    display: grid;
    gap: 10px;
}

.club-service-card {
    display: grid;
    gap: 12px;
}

.club-service-card__top {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) auto;
    align-items: center;
    gap: 11px;
}

.club-service-card__identity {
    min-width: 0;
}

.club-service-card__identity strong,
.club-service-card__identity span {
    display: block;
}

.club-service-card__identity strong {
    color: var(--green-dark);
    font-size: .9rem;
}

.club-service-card__identity span {
    margin-top: 3px;
    color: var(--muted);
    font-size: .72rem;
    line-height: 1.4;
}

.club-service-card__actions {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 7px;
}

.club-service-card__actions .button {
    min-height: 40px;
    padding: 0 8px;
    font-size: .68rem;
}

.club-search-results {
    max-height: 520px;
    overflow: auto;
}

.club-search-row {
    grid-template-columns: 44px minmax(0, 1fr) auto;
}

.club-search-link {
    min-height: 38px;
    padding: 0 10px;
    font-size: .68rem;
}

.membership-claim-note {
    margin: 0;
}

.membership-card-dialog {
    overflow: visible;
}

.digital-membership-card {
    position: relative;
    overflow: hidden;
    padding: 20px;
    border-radius: 24px;
    background:
        radial-gradient(circle at 100% 0, rgba(255,255,255,.18), transparent 34%),
        linear-gradient(145deg, var(--card-primary), #022d1d);
    color: #fff;
    box-shadow: 0 20px 50px rgba(2,45,29,.24);
}

.digital-membership-card::after {
    content: "";
    position: absolute;
    right: -40px;
    bottom: -58px;
    width: 150px;
    height: 150px;
    border: 18px solid rgba(229,196,95,.38);
    border-radius: 50%;
    opacity: .65;
}

.digital-membership-card__brand {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
}

.digital-membership-card__brand span {
    color: var(--card-accent);
    font-size: 1.05rem;
    font-weight: 900;
    letter-spacing: .04em;
}

.digital-membership-card__brand small {
    color: rgba(255,255,255,.72);
    font-size: .62rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
}

.digital-membership-card__club {
    margin-top: 30px;
    color: rgba(255,255,255,.76);
    font-size: .72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .06em;
}

.digital-membership-card__name {
    margin-top: 5px;
    font-size: 1.35rem;
    font-weight: 900;
}

.digital-membership-card__grid {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-top: 22px;
}

.digital-membership-card__grid div,
.digital-membership-card__reference {
    padding: 10px 11px;
    border: 1px solid rgba(255,255,255,.16);
    border-radius: 13px;
    background: rgba(255,255,255,.08);
}

.digital-membership-card__grid span,
.digital-membership-card__grid strong,
.digital-membership-card__reference span,
.digital-membership-card__reference strong {
    display: block;
}

.digital-membership-card__grid span,
.digital-membership-card__reference span {
    color: rgba(255,255,255,.66);
    font-size: .6rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
}

.digital-membership-card__grid strong,
.digital-membership-card__reference strong {
    margin-top: 3px;
    color: #fff;
    font-size: .82rem;
}

.digital-membership-card__reference {
    position: relative;
    z-index: 1;
    margin-top: 10px;
}

.club-info-line {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 9px 0;
    border-bottom: 1px solid #e8ece9;
}

.club-info-line:last-child {
    border-bottom: 0;
}

.club-info-line strong {
    color: var(--green-dark);
    font-size: .78rem;
}

.club-info-line span {
    color: var(--muted);
    font-size: .7rem;
    text-align: right;
}

.result-card {
    width: 100%;
    text-align: left;
    cursor: pointer;
}

.result-card__top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.result-card__player {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 12px;
    padding: 10px 11px;
    border-radius: 12px;
    background: #f3f6f4;
    color: var(--muted);
    font-size: .75rem;
}

.result-card__player--matched {
    background: var(--green-soft);
    color: var(--green-dark);
}

.result-card__player strong {
    color: #20703e;
    font-size: .78rem;
}

.result-card__player small {
    color: var(--muted);
    font-size: .68rem;
}

.result-dialog-section {
    margin-top: 20px;
}

.result-dialog-section .section-head {
    margin-bottom: 8px;
}

.result-dialog-section .section-head h3 {
    margin: 0;
    color: var(--green-dark);
    font-size: .9rem;
}

.result-player-summary {
    margin-bottom: 16px;
}

.result-player-summary__credit {
    display: block;
    margin-top: 8px;
    color: #20703e;
    font-size: .88rem;
}

.leaderboard-row {
    display: grid;
    grid-template-columns: 52px minmax(0,1fr);
    align-items: center;
    gap: 10px;
    padding: 11px 12px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: #fff;
}

.leaderboard-row--me {
    border-color: rgba(6,72,49,.28);
    background: var(--green-soft);
}

.leaderboard-row__place {
    color: var(--green);
    font-size: .9rem;
    font-weight: 900;
}

.leaderboard-row strong,
.leaderboard-row span {
    display: block;
}

.leaderboard-row strong {
    color: var(--green-dark);
    font-size: .78rem;
}

.leaderboard-row div span {
    margin-top: 2px;
    color: var(--muted);
    font-size: .7rem;
}

.result-award {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 11px 12px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: #fff;
}

.result-award--me {
    border-color: rgba(229,196,95,.7);
    background: #fffaf0;
}

.result-award strong,
.result-award span {
    display: block;
}

.result-award div strong {
    color: var(--green-dark);
    font-size: .78rem;
}

.result-award div span {
    margin-top: 2px;
    color: var(--muted);
    font-size: .68rem;
}

.result-award > strong {
    color: #20703e;
    font-size: .76rem;
}

.credit-page-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    width: 100%;
    text-align: left;
    cursor: pointer;
}

.credit-page-card strong,
.credit-page-card span {
    display: block;
}

.credit-page-card > div > strong {
    color: var(--green-dark);
    font-size: 1.3rem;
    font-variant-numeric: tabular-nums;
}

.credit-page-card > div > span {
    margin-top: 4px;
    color: var(--muted);
    font-size: .68rem;
}

.credit-page-card__action {
    color: var(--green) !important;
    font-size: .72rem !important;
    font-weight: 800;
}

@media (max-width: 420px) {
    .club-service-card__actions {
        grid-template-columns: 1fr;
    }

    .club-service-card__actions .button {
        min-height: 42px;
    }
}

/* =========================================================
   v0.28.0 — Player notifications + tee-time alerts
   ========================================================= */

.notification-fab {
    position: fixed;
    z-index: 120;
    right: max(14px, calc((100vw - 520px) / 2 + 14px));
    bottom: calc(var(--nav) + 14px + env(safe-area-inset-bottom));
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border: 1px solid rgba(6, 72, 49, .16);
    border-radius: 50%;
    background: #fff;
    color: var(--green);
    text-decoration: none;
    box-shadow: 0 10px 28px rgba(20, 50, 38, .16);
}

.notification-fab > span {
    font-size: 1.05rem;
    line-height: 1;
}

.notification-fab > b {
    position: absolute;
    top: -5px;
    right: -4px;
    display: grid;
    place-items: center;
    min-width: 21px;
    height: 21px;
    padding: 0 5px;
    border: 2px solid #fff;
    border-radius: 999px;
    background: #a23c3c;
    color: #fff;
    font-size: .61rem;
    line-height: 1;
}

.notification-list,
.tee-alert-list {
    display: grid;
    gap: 9px;
}

.notification-card {
    position: relative;
    display: grid;
    grid-template-columns: 40px minmax(0, 1fr) auto;
    align-items: start;
    gap: 11px;
    width: 100%;
    padding: 13px;
    border: 1px solid var(--border);
    border-radius: 17px;
    background: #fff;
    color: inherit;
    text-align: left;
    cursor: pointer;
}

.notification-card--unread {
    border-color: rgba(6, 72, 49, .24);
    background: linear-gradient(145deg, #fff, #edf5f0);
}

.notification-card__icon {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    background: var(--green-soft);
    color: var(--green);
    font-size: 1rem;
    font-weight: 900;
}

.notification-card__body {
    min-width: 0;
}

.notification-card__body > span,
.notification-card__body > small,
.notification-card__topline strong,
.notification-card__topline small {
    display: block;
}

.notification-card__topline {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
}

.notification-card__topline strong {
    color: var(--green-dark);
    font-size: .82rem;
    line-height: 1.3;
}

.notification-card__topline small,
.notification-card__body > small {
    color: var(--muted);
    font-size: .64rem;
    white-space: nowrap;
}

.notification-card__body > span:not(.notification-card__topline) {
    margin-top: 4px;
    color: var(--muted);
    font-size: .72rem;
    line-height: 1.42;
}

.notification-card__body > small {
    margin-top: 4px;
}

.notification-card__dot {
    align-self: center;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--green);
}

.tee-alert-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 12px;
}

.tee-alert-card--notified {
    background: #f8faf8;
}

.tee-alert-card__actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 7px;
    flex-wrap: wrap;
}

.tee-alert-card__actions .button {
    min-height: 36px;
    padding: 0 10px;
    font-size: .68rem;
}

.notification-footnote {
    margin: 10px 0 0;
    color: var(--muted);
    font-size: .7rem;
    line-height: 1.45;
}

@media (max-width: 390px) {
    .tee-alert-card {
        grid-template-columns: 1fr;
    }

    .tee-alert-card__actions {
        justify-content: flex-start;
    }
}


/* =========================================================
   v0.28.1 — Compact Player booking UI + mobile home card fix
   ========================================================= */

/* Home feature cards are anchors. Make them true block cards rather than
   inline anchors containing block children; mobile browsers otherwise split
   the border/background into fragmented inline boxes. */
.home-feature-card {
    display: block;
    width: 100%;
    min-width: 0;
    overflow: hidden;
}

.home-feature-card .kicker,
.home-feature-card h3,
.home-feature-card .meta {
    max-width: 100%;
    overflow-wrap: anywhere;
}

.player-availability-head {
    align-items: flex-start;
    margin-bottom: 8px;
}

.player-availability-head .eyebrow {
    margin-bottom: 3px;
}

.player-availability-summary {
    margin: 4px 0 0;
    color: var(--muted);
    font-size: .7rem;
    line-height: 1.35;
}

.player-availability-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 10px;
}

.player-period-tabs {
    display: inline-grid;
    grid-auto-flow: column;
    grid-auto-columns: minmax(0, auto);
    gap: 4px;
    padding: 4px;
    border-radius: 13px;
    background: #e9efeb;
}

.player-period-tab {
    min-height: 34px;
    padding: 0 10px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: var(--muted);
    font-size: .7rem;
    font-weight: 800;
    white-space: nowrap;
    cursor: pointer;
}

.player-period-tab span {
    display: inline-grid;
    place-items: center;
    min-width: 18px;
    height: 18px;
    margin-left: 3px;
    padding: 0 4px;
    border-radius: 999px;
    background: rgba(6,72,49,.08);
    color: inherit;
    font-size: .6rem;
}

.player-period-tab.active {
    background: #fff;
    color: var(--green);
    box-shadow: 0 2px 8px rgba(20,50,38,.06);
}

.player-availability-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--muted);
    font-size: .68rem;
    font-weight: 700;
    white-space: nowrap;
    cursor: pointer;
}

.player-availability-toggle input {
    accent-color: var(--green);
}

.player-time-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
}

.player-time-slot {
    min-width: 0;
    min-height: 70px;
    padding: 9px 6px;
    border: 1px solid var(--border);
    border-radius: 13px;
    background: #fff;
    color: var(--text);
    text-align: center;
    cursor: pointer;
}

.player-time-slot strong,
.player-time-slot span {
    display: block;
}

.player-time-slot strong {
    color: var(--green-dark);
    font-size: .94rem;
    font-weight: 900;
    font-variant-numeric: tabular-nums;
}

.player-time-slot span {
    margin-top: 4px;
    color: var(--muted);
    font-size: .61rem;
    font-weight: 700;
    line-height: 1.2;
}

.player-time-slot--joinable {
    border-color: rgba(6,72,49,.28);
    background: var(--green-soft);
}

.player-time-slot--mine {
    border-color: rgba(229,196,95,.65);
    background: #fffaf0;
}

.player-time-slot--mine span {
    color: #79621c;
}

.player-time-slot--unavailable {
    background: #f7f8f7;
}

.player-time-slot--alertable {
    border-style: dashed;
    color: var(--green);
}

.player-time-slot--watching,
.player-time-slot:disabled {
    cursor: default;
    opacity: .72;
}

.player-time-slot--watching {
    border-color: rgba(6,72,49,.18);
    background: #f1f5f2;
}

.player-more-times {
    grid-column: 1 / -1;
    min-height: 48px;
    padding: 8px 12px;
    border: 1px dashed #cbd7cf;
    border-radius: 13px;
    background: #fff;
    color: var(--green);
    font-size: .72rem;
    font-weight: 800;
    cursor: pointer;
}

.player-more-times span {
    display: block;
    margin-top: 2px;
    color: var(--muted);
    font-size: .61rem;
    font-weight: 700;
}

.player-time-grid__empty {
    grid-column: 1 / -1;
}

@media (max-width: 500px) {
    .player-availability-toolbar {
        align-items: stretch;
        flex-direction: column;
        gap: 7px;
    }

    .player-period-tabs {
        width: 100%;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        grid-auto-flow: row;
    }

    .player-period-tab {
        padding: 0 5px;
    }

    .player-availability-toggle {
        padding: 2px 4px;
    }

    .player-time-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 360px) {
    .player-time-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* =========================================================
   v0.29.0 — Competition entry + Find a Game
   ========================================================= */

.calendar-event--focus {
    margin: 0 -10px;
    padding: 13px 10px;
    border-radius: 14px;
    background: #f2f7f4;
    box-shadow: inset 0 0 0 1px rgba(6,72,49,.14);
}

.competition-entry-panel {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid #e8ece9;
}

.competition-entry-panel__meta {
    min-width: 0;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.competition-entry-panel__meta > span:first-child {
    color: var(--muted);
    font-size: .66rem;
    font-weight: 700;
}

.competition-entry-badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 0 8px;
    border-radius: 999px;
    background: #f0f3f1;
    color: var(--muted);
    font-size: .62rem;
    font-weight: 800;
}

.competition-entry-badge--entered {
    background: var(--green-soft);
    color: var(--green);
}

.competition-entry-action {
    flex: 0 0 auto;
    min-height: 36px;
    padding: 0 11px;
    border-radius: 11px;
    font-size: .66rem;
}

.find-game-filters {
    display: grid;
    gap: 10px;
}

.find-game-filter-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(120px, .8fr);
    gap: 10px;
}

.find-game-range {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    overflow: visible;
}

.find-game-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 9px;
}

.find-game-grid__empty,
.find-game-more {
    grid-column: 1 / -1;
}

.find-game-card {
    min-width: 0;
    padding: 13px;
    border: 1px solid var(--border);
    border-radius: 17px;
    background: #fff;
    color: var(--text);
    text-align: left;
    cursor: pointer;
    box-shadow: 0 6px 16px rgba(20,50,38,.035);
}

.find-game-card:hover,
.find-game-card:focus-visible {
    border-color: rgba(6,72,49,.36);
    outline: none;
}

.find-game-card__time {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.find-game-card__time strong {
    color: var(--green-dark);
    font-size: 1.18rem;
    font-weight: 900;
    font-variant-numeric: tabular-nums;
}

.find-game-card__time span {
    padding: 4px 7px;
    border-radius: 999px;
    background: var(--green-soft);
    color: var(--green);
    font-size: .6rem;
    font-weight: 800;
    white-space: nowrap;
}

.find-game-card__date,
.find-game-card__course {
    margin: 5px 0 0;
    color: var(--muted);
    font-size: .68rem;
    line-height: 1.35;
}

.find-game-card h3 {
    margin: 10px 0 0;
    color: var(--green-dark);
    font-size: .83rem;
    line-height: 1.25;
}

.find-game-card__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
    margin-top: 11px;
    padding-top: 9px;
    border-top: 1px solid #edf0ee;
}

.find-game-card__footer > span:not(.badge) {
    color: var(--muted);
    font-size: .62rem;
    font-weight: 700;
}

.find-game-card__footer strong {
    color: var(--green);
    font-size: .66rem;
    font-weight: 900;
}

.find-game-card__footer .badge {
    min-height: 22px !important;
    padding: 0 6px !important;
    font-size: .58rem !important;
}

@media (max-width: 390px) {
    .find-game-filter-grid {
        grid-template-columns: 1fr;
    }

    .competition-entry-panel {
        align-items: stretch;
        flex-direction: column;
    }

    .competition-entry-action {
        width: 100%;
    }
}
.find-game-card__footer-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 5px;
}
