/* ── PROFILE PAGE (R3-profile — v2 system, ported from the approved
   profile-v3 mockup). Core surface (app column, silhouette hero, identity
   card, about/teaches) is restyled here where the old profile rules lived;
   the new booking components (lesson cards, day rail, slot grid, docked bar,
   scorecard sheet) live in the R3-PROFILE block at the END of this file.
   The .review/.rev-* rules below are legacy but left untouched — .hub-row's
   "Review" chip currently inherits from them. ── */
.pf-app{max-width:480px;margin:0 auto;background:var(--paper);min-height:100%;padding-bottom:10px;}
/* Preview strip (#preview/<slug>) — a page we built for a coach out of public
   information. Deliberately NOT brand green: it must read as a note pinned to the
   page rather than part of it, so the coach can never mistake the example diary
   below for a listing that already exists. Amber is the codebase's "read this
   before you act" colour (under-review, waitlist), which is exactly the job. */
.pf-prev{display:flex;gap:10px;align-items:flex-start;padding:12px 16px;
  background:var(--amber-bg);border-bottom:1px solid rgba(169,120,26,.28);}
.pf-prev-tag{flex:none;font:600 var(--fs-eyebrow)/1 var(--sans);letter-spacing:.09em;
  text-transform:uppercase;color:var(--paper);background:var(--amber);
  padding:5px 8px;border-radius:var(--r-sm);}
.pf-prev-txt{margin:0;font:400 var(--fs-meta)/1.45 var(--sans);color:#6b4d12;}
.pf-prev-txt b{font-weight:600;}
/* Same job, next to the diary grid. */
.pf-prev-note{margin:0 0 10px;font:400 var(--fs-meta)/1.4 var(--sans);color:var(--amber);}
.pf-hero{position:relative;height:170px;overflow:hidden;background:var(--ink);}
/* No-cover fallback: the story-card treatment (brand gradient + radial green
   glow) under the course silhouette, so a coverless page reads as designed
   rather than as a missing photo. */
.pf-hero-fallback{position:absolute;inset:0;background:
  radial-gradient(ellipse 90% 130% at 82% -10%, rgba(67,193,130,.30), transparent 58%),
  linear-gradient(155deg,#1E4D3B 0%,#15241D 82%);}
.pf-hero-fallback svg{position:absolute;bottom:0;left:0;width:100%;height:70%;opacity:.9;}
/* coach_profiles.cover_url — painted over the always-rendered silhouette
   fallback (same behind-the-absolute-img pattern as avatars, §9); a broken
   URL onerror-removes the img and the quiet fallback simply shows through */
.pf-cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
/* main/rail wrappers: pure grouping on mobile — display:contents + order keep
   today's one-column reading order (identity → about → teaches → lessons →
   week → posts → reviews → foot) exactly as it was before the split; at ≥980
   (end of this file) they become the two real columns. gacct precedent. */
.pf-cols{display:flex;flex-direction:column;}
.pf-main,.pf-rail{display:contents;}
.pf-identity{order:1;}
#pfAbout{order:2;}
#pfTeaches{order:3;}
#pfLessonsBlock{order:4;}
#pfWeekBlock{order:5;}
/* #pfVideoReview had no order, so it fell to the flex default of 0 and sorted
   ABOVE the identity card — a coach who switched swing reviews on would have
   opened their own profile to the offer card sitting above their name. Latent
   only because the feature is still dark (it needs video_reviews_enabled AND
   live Stripe payouts). Ordered explicitly here, after the booking block and
   before posts, which is where it sits in the desktop column too. */
#pfVideoReview{order:6;}
#pfPostsBlock{order:7;}
#pfReviewsBlock{order:8;}
.pf-foot{order:9;}
.pf-identity{margin:-46px 18px 0;position:relative;z-index:2;background:var(--paper);
  border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:16px 18px 18px;}
.pf-identity:empty{display:none;}
.pf-id-head{display:flex;gap:14px;align-items:flex-end;}
.pf-avatar{width:76px;height:76px;border-radius:12px;flex:0 0 auto;overflow:hidden;position:relative;
  background:var(--mint);border:1px solid var(--line);color:var(--fairway);display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-size:1.7rem;font-weight:500;border:3px solid var(--paper);box-shadow:var(--shadow);margin-top:-40px;}
.pf-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.pf-id-name{flex:1;min-width:0;}
.pf-id-name h1{font-family:var(--serif);font-size:1.45rem;font-weight:500;line-height:1.1;letter-spacing:-.01em;color:var(--ink);}
.pf-role{font-size:.84rem;font-weight:600;color:var(--slate);margin-top:3px;}
.pf-loc{display:inline-flex;align-items:center;gap:5px;font-size:.84rem;font-weight:600;color:var(--fairway);margin-top:6px;}
.pf-loc svg{width:14px;height:14px;flex:0 0 auto;}
.pf-share{align-self:flex-start;flex:0 0 auto;width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--line);border-radius:30px;background:var(--paper);color:var(--fairway);cursor:pointer;transition:border-color .15s;}
.pf-share:hover{border-color:var(--slate);}
.pf-share svg{width:15px;height:15px;}
.pf-trust{display:flex;align-items:center;gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line);flex-wrap:wrap;}
.pf-titem{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:600;color:var(--ink);}
.pf-titem svg{width:15px;height:15px;color:var(--fairway);flex:0 0 auto;}
.pf-titem.v{color:var(--fairway);}
.pf-titem.warn{color:var(--amber);background:var(--amber-bg);border-radius:30px;padding:3px 10px;}
.pf-titem.warn svg{color:var(--amber);}
.pf-dot{width:3px;height:3px;border-radius:50%;background:var(--line);}
.pf-block{padding:22px 20px;border-top:1px solid var(--line);}
.pf-block[hidden]{display:none;}
.pf-identity + .pf-block{border-top:none;padding-top:24px;}
.pf-eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);margin-bottom:10px;}
.pf-eyebrow-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px;}
.pf-eyebrow-row .pf-eyebrow{margin-bottom:0;}
.pf-count{font-size:.72rem;font-weight:600;color:var(--slate);white-space:nowrap;}
.pf-count .mono{font-size:.72rem;color:var(--ink);}
.pf-bio{font-size:.9rem;line-height:1.7;color:var(--ink);}
.pf-chips{display:flex;flex-wrap:wrap;gap:8px;}
.pf-chip{font-size:.78rem;font-weight:600;border:1px solid var(--line);border-radius:30px;padding:7px 14px;color:var(--ink);background:var(--paper);}
/* legacy .review base — nothing on the profile emits it any more, but the
   coach hub's "Review" chip (.hub-row.pend .review) still inherits from it,
   so the base pair stays exactly as it was. The dead .rev-* card rules
   (including the --gold star colour) are gone with the old reviews UI. */
.review{padding:13px 0;border-bottom:2px solid var(--mint);}
.review:last-child{border-bottom:none;}

/* ── COACH POSTS (profile feed v1) — pf-post* on pg-profile, post-* in the
   composer modal. Ledger language: dashed row rules, mono dates, Mist
   avatar tiles, quiet chips. ── */
.pf-post{padding:16px 0;border-bottom:1px dashed var(--line);}
.pf-post:first-child{padding-top:2px;}
.pf-post:last-child{border-bottom:none;padding-bottom:2px;}
.pf-post-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.pf-post-ava{width:34px;height:34px;border-radius:50%;background:var(--mint);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:560;font-size:.72rem;color:var(--fairway);flex-shrink:0;position:relative;overflow:hidden;}
.pf-post-ava img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.pf-post-who{flex:1;min-width:0;}
.pf-post-name{font-family:var(--serif);font-weight:600;font-size:.9rem;color:var(--ink);line-height:1.25;}
.pf-post-when{font-size:.68rem;color:var(--slate);}
.pf-post-aud{font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;background:var(--mint);color:var(--fairway);border-radius:30px;padding:3px 10px;flex-shrink:0;white-space:nowrap;}
.pf-post-act{display:inline-flex;align-items:center;gap:4px;background:none;border:none;color:var(--slate);font-family:var(--sans);font-size:.72rem;font-weight:600;cursor:pointer;padding:4px 6px;flex-shrink:0;white-space:nowrap;}
.pf-post-act:hover{color:var(--red);}
.pf-post-body{font-size:.9rem;font-weight:450;line-height:1.7;color:var(--ink);white-space:pre-line;overflow-wrap:break-word;}
.pf-post-media{margin-top:10px;}
.pf-post-media img{display:block;width:100%;max-height:440px;object-fit:cover;border-radius:var(--r);border:1px solid var(--line);background:var(--fog);}
.pf-post-media video{display:block;width:100%;max-height:440px;border-radius:var(--r);border:1px solid var(--line);background:var(--ink);}
.pf-post-new{background:var(--paper);border:1px solid var(--line);border-radius:30px;padding:6px 14px;font-family:var(--sans);font-size:.72rem;font-weight:600;color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s;white-space:nowrap;}
.pf-post-new:hover{border-color:var(--fairway-2);background:var(--mint);}
.pf-posts-empty{font-size:.84rem;font-weight:450;color:var(--slate);line-height:1.65;padding:6px 0 2px;}

/* composer modal internals */
.post-media-btn{display:inline-flex;align-items:center;gap:8px;background:var(--paper);border:1px solid var(--line);border-radius:30px;padding:9px 16px;font-family:var(--sans);font-size:.78rem;font-weight:600;color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s;}
.post-media-btn:hover{border-color:var(--fairway-2);background:var(--mint);}
.post-media-preview{margin-top:4px;}
.post-media-preview img,.post-media-preview video{display:block;width:100%;max-height:240px;object-fit:contain;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--fog);}
.post-media-preview video{background:var(--ink);}
.post-media-remove{margin-top:8px;background:none;border:none;color:var(--slate);font-family:var(--sans);font-size:.74rem;font-weight:600;cursor:pointer;padding:2px 0;}
.post-media-remove:hover{color:var(--red);}
.post-aud{display:flex;gap:8px;margin-top:2px;}
.post-aud-chip{background:var(--paper);border:1px solid var(--line);border-radius:30px;padding:8px 16px;font-family:var(--sans);font-size:.78rem;font-weight:600;color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s;}
.post-aud-chip.on{background:var(--fairway);border-color:var(--fairway);color:#fff;}
.post-aud-chip[disabled]{opacity:.45;cursor:not-allowed;}
.post-hint{font-size:.72rem;color:var(--slate);font-weight:450;line-height:1.55;margin-top:7px;}

/* ── MESSAGES (v2, R3-messages) — class names unchanged (the <700px legacy
   rules still collapse the sidebar); dead demo classes (.booking-ctx, the
   .ctx- set, .attach-btn/.online-dot/.unread/.chat-shell) deleted with the
   demo UI. NB: never write a glob like "ctx-(star)(slash)" in this comment —
   that exact byte pair closed the comment early and the resulting garbage
   selector swallowed the .thread-sidebar rule below on the live site (the
   sidebar shipped with no background or divider for weeks). ── */
.thread-sidebar{width:300px;flex-shrink:0;background:var(--paper);border-right:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden;}
.sidebar-head{padding:16px 16px 12px;border-bottom:1px solid var(--line);}
.sidebar-head h2{font-family:var(--serif);font-size:1.1rem;font-weight:600;color:var(--ink);margin-bottom:10px;}
.search-msg{display:flex;align-items:center;gap:7px;background:var(--fog);border:1px solid var(--line);border-radius:30px;padding:7px 12px;color:var(--slate);}
.search-msg svg{width:13px;height:13px;flex-shrink:0;}
.search-msg input{border:none;outline:none;background:transparent;font-family:var(--sans);font-size:.84rem;font-weight:500;color:var(--ink);flex:1;min-width:0;}
.search-msg input::placeholder{color:var(--slate);}
.thread-list{flex:1;overflow-y:auto;}
.msg-quiet{padding:22px 16px;text-align:center;color:var(--slate);font-size:.78rem;font-weight:450;line-height:1.6;}
.thread{display:flex;align-items:center;gap:11px;padding:13px 16px;cursor:pointer;border-bottom:1px solid var(--line);transition:background .15s;position:relative;}
.thread:hover{background:var(--fog);}
.thread.active{background:var(--mint);}
.th-avatar{width:42px;height:42px;border-radius:50%;background:var(--mint);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:560;font-size:.84rem;color:var(--fairway);flex-shrink:0;}
.th-info{flex:1;min-width:0;}
.th-name{font-weight:600;font-size:.84rem;color:var(--ink);margin-bottom:2px;}
.th-preview{font-size:.72rem;color:var(--slate);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.th-meta{text-align:right;flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:3px;}
.th-time{font-size:.68rem;color:var(--slate);}
.th-preview.unread{color:var(--ink);font-weight:600;}
.th-unread{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;
  padding:0 5px;border-radius:30px;background:var(--amber);color:#fff;font-size:.64rem;font-weight:500;font-feature-settings:"tnum";}
.chat-area{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--fog);}
.chat-none{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--slate);}
.chat-none p{font-weight:600;font-size:.9rem;}
.chat-header{padding:13px 20px;background:var(--paper);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;flex-shrink:0;}
.ch-avatar{width:40px;height:40px;border-radius:50%;background:var(--mint);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:560;color:var(--fairway);font-size:.84rem;flex-shrink:0;}
.ch-name{font-weight:600;font-size:.9rem;color:var(--ink);}
.ch-status{font-size:.72rem;color:var(--slate);font-weight:600;}
.messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;}
.sys-msg{text-align:center;font-size:.72rem;color:var(--slate);font-weight:700;letter-spacing:.08em;text-transform:uppercase;}
.sys-pill{background:var(--mint);color:var(--fairway);padding:4px 12px;border-radius:30px;display:inline-block;}
.msg-row{display:flex;align-items:flex-end;gap:8px;}
.msg-row.me{flex-direction:row-reverse;}
.msg-avatar{width:28px;height:28px;border-radius:50%;background:var(--mint);border:1px solid var(--line);color:var(--fairway);font-family:var(--serif);font-size:.68rem;font-weight:500;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.bubble{max-width:66%;padding:9px 13px;border-radius:16px;font-size:.84rem;font-weight:450;line-height:1.55;}
.bubble.them{background:var(--paper);border:1px solid var(--line);border-bottom-left-radius:4px;color:var(--ink);}
.bubble.me{background:var(--fairway);color:#fff;border-bottom-right-radius:4px;}
.msg-time{font-size:.68rem;color:var(--slate);padding:0 3px;}
.msg-time.me{text-align:right;}
.quick-replies{padding:6px 16px 0;display:flex;gap:7px;flex-wrap:wrap;flex-shrink:0;}
.qr{padding:7px 13px;border:1px solid var(--line);border-radius:30px;font-size:.72rem;font-weight:600;cursor:pointer;background:var(--paper);color:var(--ink);transition:border-color .15s,background .15s;white-space:nowrap;}
.qr:hover{border-color:var(--fairway-2);background:var(--mint);}
.input-row{padding:12px 16px;background:var(--paper);border-top:1px solid var(--line);display:flex;align-items:center;gap:9px;flex-shrink:0;}
.msg-input{flex:1;min-width:0;border:1px solid var(--line);border-radius:30px;padding:10px 16px;font-family:var(--sans);font-size:.84rem;font-weight:500;color:var(--ink);outline:none;transition:border-color .15s;background:var(--fog);}
.msg-input::placeholder{color:var(--slate);}
.msg-input:focus{border-color:var(--fairway);background:var(--paper);}
.send-btn{width:40px;height:40px;border-radius:50%;background:var(--fairway);border:none;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .18s;}
.send-btn svg{width:16px;height:16px;}
.send-btn:hover{background:var(--fairway-2);}
.locked-msg{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--slate);padding:40px;}
.lock-chip{width:48px;height:48px;border-radius:var(--r-sm);background:var(--mint);color:var(--fairway);display:inline-flex;align-items:center;justify-content:center;}
.lock-chip svg{width:22px;height:22px;}
.locked-msg p{font-weight:600;font-size:.95rem;text-align:center;}
.locked-msg button{background:var(--fairway);color:#fff;border:none;padding:11px 26px;border-radius:30px;font-family:var(--sans);font-size:.9rem;font-weight:600;cursor:pointer;transition:background .18s;}
.locked-msg button:hover{background:var(--fairway-2);}

/* ── CALENDAR (v2, rebrand R3-calendar) — class names unchanged; the JS
   renderers emit them. New additions are cal-* prefixed. ── */
.cal-page-wrap{max-width:1180px;margin:0 auto;padding:22px 18px;}
.cal-page-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;gap:16px;flex-wrap:wrap;}
.cal-page-head h1{font-family:var(--serif);font-size:1.5rem;font-weight:600;color:var(--ink);letter-spacing:-.01em;}
.cal-page-head p{color:var(--slate);font-size:.84rem;font-weight:500;margin-top:4px;}
.head-btns{display:flex;gap:9px;flex-shrink:0;}
.btn-save{background:var(--fairway);color:#fff;border:none;padding:10px 22px;border-radius:30px;font-family:var(--sans);font-size:.84rem;font-weight:600;cursor:pointer;transition:background .18s;}
.btn-save:hover{background:var(--fairway-2);}
.btn-outline2{background:var(--paper);color:var(--ink);border:1px solid var(--line);padding:10px 18px;border-radius:30px;font-family:var(--sans);font-size:.84rem;font-weight:600;cursor:pointer;transition:border-color .15s;}
.btn-outline2:hover{border-color:var(--slate);}
.cal-layout{display:grid;grid-template-columns:1fr;gap:16px;align-items:start;}

/* ── controls sidebar ── */
.side-col-cal{display:flex;flex-direction:column;gap:14px;}
.side-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--shadow);}
.side-card h3{font-family:var(--sans);font-size:.9rem;font-weight:600;color:var(--ink);margin-bottom:12px;display:flex;align-items:center;gap:9px;}
.cal-chip{width:30px;height:30px;border-radius:var(--r-sm);background:var(--mint);color:var(--fairway);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;}
.cal-chip svg{width:15px;height:15px;}
.side-hint{font-size:.72rem;color:var(--slate);font-weight:450;margin-bottom:12px;line-height:1.55;}
.day-chips{display:flex;flex-wrap:wrap;gap:7px;}
.day-chip{font-family:var(--sans);font-size:.78rem;font-weight:600;padding:7px 0;width:calc(25% - 6px);text-align:center;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:var(--r-sm);cursor:pointer;transition:border-color .15s,background .15s,color .15s;}
.day-chip:hover{border-color:var(--fairway-2);}
.day-chip.on{background:var(--fairway);border-color:var(--fairway);color:#fff;}
.day-chip .dc-n{display:block;font-family:var(--mono);font-feature-settings:"tnum";font-size:.64rem;font-weight:500;color:var(--slate);margin-top:1px;}
.day-chip.on .dc-n{color:rgba(255,255,255,.8);}
.day-chip.past{opacity:.45;cursor:default;}
.day-chip.past:hover{border-color:var(--line);}
.btn-repeat-week{width:100%;margin-top:10px;}
.wh-row{display:flex;align-items:center;gap:10px;margin-top:8px;}
.wh-row:first-of-type{margin-top:0;}
.wh-row label{font-weight:700;color:var(--slate);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;width:44px;}
.wh-row select{flex:1;border:1px solid var(--line);border-radius:var(--r-sm);padding:9px 10px;font-family:var(--sans);font-size:.84rem;font-weight:600;color:var(--ink);background:var(--paper);outline:none;transition:border-color .15s;}
.wh-row select:focus{border-color:var(--fairway);}
.btn-block-off{width:100%;padding:10px;font-size:.84rem;}
.cal-legend{display:flex;flex-direction:column;gap:10px;}
.leg{display:flex;align-items:flex-start;gap:10px;font-size:.78rem;font-weight:450;color:var(--slate);line-height:1.4;}
.leg b{font-weight:700;color:var(--ink);}
.leg-box{width:34px;height:24px;border-radius:6px;flex-shrink:0;display:flex;align-items:center;justify-content:center;margin-top:1px;}
.leg-avail{background:var(--mint);border:1px solid var(--line);}
.leg-avail::after{content:"Open";color:var(--fairway);font-size:.48rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;}
.leg-unavail{background:var(--fog);border:1px solid var(--line);}
.leg-booked{background:var(--fairway);}
.leg-offday{background:repeating-linear-gradient(45deg,var(--fog),var(--fog) 6px,var(--line) 6px,var(--line) 7.5px);border:1px solid var(--line);}
.leg-past{background:var(--fog);border:1px solid var(--line);opacity:.5;}
.cal-block-dot{width:9px;height:9px;border-radius:50%;background:var(--amber);flex-shrink:0;}

/* ── week grid card ── */
.cal-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden;}
.cal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);gap:14px;flex-wrap:wrap;}
.cal-week-meta{display:flex;flex-direction:column;gap:2px;}
.cal-week-summary{font-weight:600;font-size:.9rem;color:var(--ink);}
.cal-week-sub{font-size:.72rem;font-weight:600;color:var(--slate);}
.cal-nav{display:flex;align-items:center;gap:10px;}
.cal-btn{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:var(--paper);cursor:pointer;font-size:.95rem;display:flex;align-items:center;justify-content:center;color:var(--ink);transition:border-color .15s;}
.cal-btn:hover{border-color:var(--fairway);}
.cal-month{font-family:var(--mono);font-feature-settings:"tnum";font-size:.9rem;font-weight:500;min-width:158px;text-align:center;color:var(--ink);}
.week-grid{padding:0 16px 16px;overflow-x:auto;}
.week-grid .day-labels,.week-grid .time-grid{min-width:620px;}
.day-labels{display:grid;grid-template-columns:68px repeat(7,1fr);padding:12px 0 8px;}
.day-col-head{text-align:center;padding:4px 2px;border-radius:9px;transition:opacity .15s;}
.day-col-head.offday{opacity:.4;}
.day-col-head.past{opacity:.45;}
.day-lbl-cell{text-align:center;font-size:.68rem;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.08em;}
.day-col-head.today{background:var(--mint);}
.day-col-head.today .day-lbl-cell,.day-col-head.today .day-num{color:var(--fairway);}
.day-num{font-family:var(--mono);font-size:.72rem;font-weight:500;text-align:center;margin-top:2px;color:var(--ink);}
.time-grid{display:grid;grid-template-columns:68px repeat(7,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;}
.cal-bucket-head{grid-column:1 / -1;font-size:.76rem;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.08em;padding:9px 14px;background:var(--fog);display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line);}
.cbh-range{font-family:var(--mono);font-size:.76rem;font-weight:500;color:var(--slate);text-transform:none;letter-spacing:0;}
.time-lbl{font-family:var(--mono);font-feature-settings:"tnum";font-size:.68rem;color:var(--slate);font-weight:500;text-align:right;padding:0 12px 0 8px;height:44px;display:flex;align-items:center;justify-content:flex-end;border-bottom:1px solid var(--line);border-right:1px solid var(--line);background:var(--paper);}
.slot-cell{height:44px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);cursor:pointer;transition:background .12s,box-shadow .12s;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--paper);}
.slot-cell.unavail{background:var(--fog);}
.slot-cell.unavail:hover{background:var(--mint);box-shadow:inset 0 0 0 1.5px var(--fairway-2);}
.slot-cell.avail{background:var(--mint);}
.slot-cell.avail:hover{box-shadow:inset 0 0 0 1.5px var(--fairway-2);}
.slot-word{color:var(--fairway);font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;line-height:1.15;}
.slot-cell.booked{background:var(--fairway);}
.slot-cell.booked:hover{background:var(--fairway-2);}
.slot-tag{color:#fff;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;line-height:1.15;}
.slot-sub{color:rgba(255,255,255,.85);font-size:.68rem;font-weight:600;line-height:1.15;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 3px;}
/* An unanswered request holds the slot but isn't a lesson yet — amber, and
   ringed so it reads as "needs you" rather than "done". Without this a pending
   request was pixel-identical to a confirmed booking. */
.slot-cell.booked.pending-req{background:var(--amber);box-shadow:inset 0 0 0 1.5px rgba(0,0,0,.14);}
.slot-cell.booked.pending-req:hover{background:var(--amber);filter:brightness(.95);}
.slot-cell.offday{background:repeating-linear-gradient(45deg,var(--fog),var(--fog) 6px,var(--line) 6px,var(--line) 7.5px);cursor:default;}
.slot-cell.offday .slot-sub{color:var(--slate);}
/* Past cells — the hour is gone; a quiet record, not a control. Booked past
   cells (.bk-past) stay tappable — they open the lesson's details. */
.slot-cell.past{opacity:.5;cursor:default;}
.slot-cell.unavail.past:hover{background:var(--fog);box-shadow:none;}
.slot-cell.bk-past{opacity:.7;}
.stats-row-cal{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.mini-stat{background:var(--mint);border-radius:var(--r-sm);padding:10px;text-align:center;}
.ms-val{font-family:var(--mono);font-feature-settings:"tnum";font-size:1.2rem;font-weight:500;color:var(--fairway);}
.ms-lbl{font-size:.68rem;color:var(--slate);font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-top:1px;}
.mini-booking{display:flex;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line);}
.mini-booking:last-child{border-bottom:none;}
.mb-dot{width:8px;height:8px;border-radius:50%;background:var(--fairway);flex-shrink:0;margin-top:4px;}
.mb-name{font-weight:600;font-size:.78rem;color:var(--ink);}
/* Marks an unanswered request in the upcoming-bookings list, which otherwise
   presented requests and agreed lessons identically. */
.mb-req{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  color:#fff;background:var(--amber);border-radius:20px;padding:1px 7px;margin-left:5px;vertical-align:1px;}
.mb-detail{font-size:.72rem;color:var(--slate);font-weight:500;}
.mb-time{font-family:var(--mono);font-size:.72rem;font-weight:500;color:var(--fairway);text-align:right;flex-shrink:0;}
@media(min-width:768px){
  .cal-page-wrap{padding:28px 28px;}
  .cal-layout{grid-template-columns:250px 1fr;gap:22px;}
  .day-chip{width:calc(33.333% - 5px);}
}
@media(min-width:980px){
  .cal-page-wrap{padding:28px 36px;}
}

/* ── CHECKOUT — the booking-request flow (R3) ── */
.checkout-page-wrap{max-width:620px;margin:0 auto;padding:22px 18px 56px;}
.checkout-steps{display:flex;justify-content:center;gap:0;margin-bottom:24px;}
.cs-step{display:flex;align-items:center;flex:1;max-width:170px;}
.cs-dot{width:29px;height:29px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-feature-settings:"tnum";font-size:.78rem;font-weight:500;transition:background .2s,border-color .2s,color .2s;flex-shrink:0;border:1.5px solid var(--line);color:var(--slate);background:var(--paper);}
.cs-dot.done{background:var(--mint);border-color:var(--fairway);color:var(--fairway);}
.cs-dot.active{background:var(--fairway);border-color:var(--fairway);color:#fff;}
.cs-lbl{font-size:.68rem;font-weight:700;color:var(--slate);margin-left:8px;white-space:nowrap;text-transform:uppercase;letter-spacing:.08em;}
.cs-lbl.active{color:var(--ink);}
.cs-line{flex:1;height:0;border-top:2px dotted var(--line);margin:0 8px;transition:border-color .3s;}
.cs-line.done{border-top-color:var(--fairway);}
.checkout-layout{display:block;}
.form-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:20px;box-shadow:var(--shadow);margin-bottom:14px;}
.form-card h3{font-family:var(--serif);font-size:1.3rem;font-weight:600;letter-spacing:-.01em;line-height:1.2;margin-bottom:4px;}
.frow{margin-bottom:14px;}
.frow label{display:block;font-size:.72rem;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;}
.frow input,.frow select,.frow textarea{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:var(--r-sm);font-family:var(--sans);font-size:.9rem;font-weight:600;color:var(--ink);background:var(--paper);outline:none;transition:border-color .2s;}
.frow input::placeholder,.frow textarea::placeholder{color:var(--slate);font-weight:500;}
.frow input:focus,.frow select:focus,.frow textarea:focus{border-color:var(--fairway);}
.frow-2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.session-opts{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:6px;}
.sess-opt{display:flex;gap:12px;align-items:flex-start;text-align:left;border:1.5px solid var(--line);border-radius:var(--r);padding:13px 14px;background:var(--paper);cursor:pointer;transition:border-color .15s,background .15s;}
.sess-opt:hover{border-color:var(--fairway-2);}
.sess-opt.sel{border-color:var(--fairway);background:var(--mint);}
.mini-cal-wrap{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:8px;}
.mc-lbl{text-align:center;font-size:.68rem;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.08em;padding:3px 0;}
.mc-day{text-align:center;padding:9px 3px;border-radius:var(--r-sm);font-family:var(--mono);font-feature-settings:"tnum";font-size:.84rem;font-weight:500;color:var(--ink);cursor:pointer;border:1px solid transparent;transition:border-color .12s,background .12s,color .12s;}
.mc-day:hover{border-color:var(--fairway);color:var(--fairway);}
.mc-day.sel{background:var(--fairway);border-color:var(--fairway);color:#fff;}
.mc-day.today-cal{font-weight:600;color:var(--fairway);}
.mc-day.sel.today-cal{color:#fff;}
/* .none = the coach offers nothing on that date. Same disabled treatment as a
   past day (checkout.js renders it with no handler) — never invite a tap into
   an empty day. */
.mc-day.empty,.mc-day.past,.mc-day.none{color:var(--line);cursor:default;border-color:transparent;background:none;}
.mc-day.empty:hover,.mc-day.past:hover,.mc-day.none:hover{border-color:transparent;color:var(--line);}
.time-slots-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
.ts{padding:9px 13px;border:1px solid var(--line);border-radius:var(--r-sm);font-family:var(--mono);font-feature-settings:"tnum";font-size:.78rem;font-weight:500;cursor:pointer;transition:border-color .12s,background .12s,color .12s;color:var(--ink);background:var(--paper);}
.ts:hover,.ts.sel{background:var(--fairway);color:#fff;border-color:var(--fairway);}
.ts.taken{background:var(--fog);color:var(--slate);cursor:not-allowed;text-decoration:line-through;border-color:var(--line);opacity:.6;}
.ts.taken:hover{background:var(--fog);color:var(--slate);border-color:var(--line);}
/* NOT OFFERED — an hour the coach never opened. Deliberately NOT a .ts: no
   border, no fill, no strike-through, no handler, so it reads as "nothing
   here" and can never be mistaken for .ts.taken ("someone has this"). Same
   geometry as .ts so the bands still line up. */
.ts-none{padding:9px 13px;border:1px solid transparent;border-radius:var(--r-sm);font-family:var(--mono);font-feature-settings:"tnum";font-size:.78rem;font-weight:500;color:var(--slate);opacity:.5;background:none;cursor:default;-webkit-user-select:none;user-select:none;}
/* A whole date with nothing in the diary — shown in place of a grid of dead
   cells, which read as "fully booked". */
.ck-empty-day{flex-basis:100%;width:100%;border:1px dashed var(--line);border-radius:var(--r-sm);background:var(--fog);padding:14px 15px;}
.ck-empty-day .t{font-size:.84rem;font-weight:600;color:var(--ink);margin:0;}
.ck-empty-day .s{font-size:.78rem;font-weight:450;color:var(--slate);line-height:1.5;margin:4px 0 0;}
/* Why every date in this month is greyed out. */
.ck-month-note{font-size:.78rem;font-weight:450;color:var(--slate);line-height:1.5;margin:10px 2px 0;}
.ts-bucket{flex-basis:100%;width:100%;}
.ts-bucket + .ts-bucket{margin-top:12px;}
.ts-bucket-head{font-size:.68rem;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.08em;margin-bottom:7px;}
.ts-bucket-row{display:flex;flex-wrap:wrap;gap:8px;}
.ts-bucket-row.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
.confirm-btn{width:100%;background:var(--fairway);color:#fff;border:none;padding:14px;border-radius:30px;font-family:var(--sans);font-size:.95rem;font-weight:600;cursor:pointer;transition:background .2s,transform .08s;display:flex;align-items:center;justify-content:center;gap:7px;}
.confirm-btn:hover{background:var(--fairway-2);}
.confirm-btn:active{transform:translateY(1px);}
.confirm-btn:disabled{background:var(--line);color:var(--slate);cursor:not-allowed;transform:none;}
.back-link-pay{text-align:center;margin-top:10px;font-size:.78rem;color:var(--slate);cursor:pointer;font-weight:600;}
.back-link-pay:hover{color:var(--fairway);}
/* legacy — the request flow no longer renders these; grep before removing
   (.li/.summary-card/.trust-list may be shared by other page regions) */
.summary-card{background:var(--white);border:2px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);position:sticky;top:16px;}
.summary-card h3{font-family:var(--serif);font-size:1.05rem;margin-bottom:14px;}
.li{display:flex;justify-content:space-between;font-size:.84rem;padding:6px 0;border-bottom:1px solid var(--mint);}
.li:last-child{border-bottom:none;}
.li-lbl{color:var(--muted);}
.li.total{font-weight:700;font-size:.95rem;padding-top:10px;border-top:2px solid var(--border);border-bottom:none;}
.trust-list{list-style:none;display:flex;flex-direction:column;gap:5px;margin-top:12px;}
.trust-list li{font-size:.72rem;color:var(--muted);display:flex;align-items:center;gap:6px;font-weight:600;}
/* coach context strip (top of the request page) */
.coach-summary{display:flex;align-items:center;gap:12px;padding:13px 16px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);margin-bottom:16px;}
.coach-summary:empty{display:none;}
.cs-av{width:44px;height:44px;border-radius:12px;background:var(--fairway);color:#fff;font-family:var(--serif);font-weight:500;font-size:1rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;overflow:hidden;}
.cs-av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.cs-info{flex:1;min-width:0;}
.cs-name{font-family:var(--serif);font-weight:600;font-size:1rem;letter-spacing:-.01em;}
.cs-role{font-size:.72rem;font-weight:500;color:var(--slate);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cs-step-screen{display:none;}
.cs-step-screen.active{display:block;}
.success-screen-pay{display:none;text-align:center;padding:34px 0 8px;}
.success-screen-pay.show{display:block;}
.success-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:22px;}
.sa-btn{padding:12px 22px;border-radius:30px;font-family:var(--sans);font-size:.84rem;font-weight:600;cursor:pointer;transition:background .2s,border-color .2s,color .2s;}
.sa-primary{background:var(--fairway);color:#fff;border:none;}
.sa-primary:hover{background:var(--fairway-2);}
.sa-secondary{background:var(--paper);color:var(--ink);border:1px solid var(--line);}
.sa-secondary:hover{border-color:var(--fairway);color:var(--fairway);}

/* ── SIGNUP ── */
.signup-page-wrap{max-width:500px;margin:0 auto;padding:32px 20px;}
.prog-steps{display:flex;align-items:center;gap:0;}
.prog-dot{width:30px;height:30px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:600;color:var(--muted);background:var(--white);flex-shrink:0;transition:all .3s;z-index:1;}
.prog-dot.done{background:var(--green);border-color:var(--green);color:#fff;}
.prog-dot.active{background:var(--green);border-color:var(--green);color:#fff;box-shadow:0 0 0 4px rgba(30,77,59,.18);}
.prog-line{flex:1;height:2px;background:var(--border);transition:background .3s;}
.prog-line.done{background:var(--green);}
.prog-labels{display:flex;justify-content:space-between;font-size:.68rem;color:var(--muted);font-weight:600;margin-bottom:22px;}
.signup-card{background:var(--white);border:2px solid var(--border);border-radius:20px;padding:30px;box-shadow:0 4px 24px rgba(30,77,59,.08);}
.step-emoji{font-size:2.2rem;margin-bottom:12px;display:block;}
.step-title{font-family:var(--serif);font-size:1.55rem;margin-bottom:6px;}
.step-sub{color:var(--muted);font-size:.9rem;line-height:1.65;margin-bottom:22px;}
.type-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:22px;}
.type-btn{border:2px solid var(--border);border-radius:var(--radius);padding:18px 14px;cursor:pointer;text-align:center;transition:all .2s;background:var(--white);}
.type-btn:hover,.type-btn.sel{border-color:var(--green);background:var(--mint);}
.type-icon{font-size:1.8rem;margin-bottom:6px;}
.type-label{font-weight:600;font-size:.9rem;}
.type-desc{font-size:.72rem;color:var(--muted);margin-top:3px;}
.goals{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px;}
.goal{padding:8px 15px;border-radius:30px;border:2px solid var(--border);background:var(--white);font-size:.78rem;cursor:pointer;transition:all .2s;font-weight:600;color:var(--muted);}
.goal:hover,.goal.sel{background:var(--green);color:#fff;border-color:var(--green);}
.county-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:20px;max-height:200px;overflow-y:auto;}
.county-opt{padding:7px 8px;border:2px solid var(--border);border-radius:9px;font-size:.72rem;font-weight:600;cursor:pointer;text-align:center;transition:all .2s;color:var(--muted);}
.county-opt:hover,.county-opt.sel{background:var(--green);color:#fff;border-color:var(--green);}
.btn-next{width:100%;background:var(--green);color:#fff;border:none;padding:13px;border-radius:30px;font-family:var(--sans);font-size:.9rem;font-weight:600;cursor:pointer;transition:background .2s;margin-top:4px;}
.btn-next:hover{background:var(--green2);}
.btn-back2{display:block;text-align:center;margin-top:10px;font-size:.78rem;color:var(--muted);cursor:pointer;font-weight:600;}
.btn-back2:hover{color:var(--green);}
.success-signup{text-align:center;padding:8px 0;}
.or-row{display:flex;align-items:center;gap:10px;margin:14px 0;}
.or-line{flex:1;height:1px;background:var(--border);}
.or-txt{font-size:.72rem;color:var(--muted);font-weight:600;}
.social-btn{width:100%;border:2px solid var(--border);background:var(--white);border-radius:30px;padding:10px;font-family:var(--sans);font-size:.84rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;margin-bottom:8px;transition:border-color .2s;}
.social-btn:hover{border-color:var(--green);}

/* ── ACCOUNT PAGE ── */
.account-wrap{max-width:900px;margin:0 auto;padding:28px 36px;}
/* R3-ACCOUNT-GOLFER: .account-hero / .acct-avatar / .acct-name removed —
   their only consumer was the old golfer dark-gradient hero, replaced by
   the .gacct-id paper card (see the R3-ACCOUNT-GOLFER block at the end of
   this file). .acct-email is golfer-only (spec 01 asserts on it) and is
   restyled in place for the paper card. */
.acct-email{color:var(--slate);font-size:.72rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;}
.acct-type{display:inline-flex;align-items:center;gap:5px;background:var(--mint);color:var(--fairway);font-size:.72rem;font-weight:600;padding:4px 11px;border-radius:30px;margin-top:6px;}
.acct-tabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin-bottom:22px;overflow-x:auto;scrollbar-width:none;}
.acct-tabs::-webkit-scrollbar{display:none;}
.acct-tab{padding:11px 18px;font-size:.84rem;font-weight:600;color:var(--slate);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s;white-space:nowrap;}
.acct-tab:hover{color:var(--green);}
.acct-tab.active{color:var(--green);border-bottom-color:var(--green);}
.acct-panel{display:none;}
.acct-panel.active{display:block;animation:fadeIn .25s ease both;}
/* ── coach Dashboard tab + Payments tab (v2, R3-settings) ── */
.acct-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin-bottom:14px;box-shadow:var(--shadow);}
.acct-card h3{font-family:var(--sans);font-size:.9rem;font-weight:600;color:var(--ink);margin-bottom:12px;}
.cdash-sub{font-size:.78rem;color:var(--slate);font-weight:500;margin-bottom:14px;}
.cdash-none{font-size:.78rem;color:var(--slate);font-weight:450;text-align:center;padding:22px 0;line-height:1.6;}
.cdash-bars{display:flex;align-items:flex-end;gap:4px;height:80px;}
.cdash-bars .bar{flex:1;background:var(--mint);border-radius:9px 9px 0 0;min-height:4px;transition:height .3s;}
.cdash-bars .bar.has{background:var(--fairway);}
.cdash-axis{display:flex;justify-content:space-between;font-size:.68rem;color:var(--slate);margin-top:5px;}
.cdash-kpis{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:14px;}
.cdash-kpis .kpi{background:var(--fog);border-radius:var(--r-sm);padding:10px;text-align:center;}
.cdash-kpis .kpi .v{display:block;font-size:1.15rem;color:var(--ink);}
.cdash-kpis .kpi .k{display:block;font-size:.68rem;color:var(--slate);font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-top:2px;}
.cdash-kpis .kpi.owed{background:var(--amber-bg);}
.cdash-kpis .kpi.owed .v{color:var(--amber);}
.cdash-qa{display:flex;flex-direction:column;gap:8px;}
.qa-row{display:flex;align-items:center;gap:11px;padding:11px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);cursor:pointer;font-family:var(--sans);text-align:left;transition:border-color .15s,background .15s;width:100%;}
.qa-row:hover{border-color:var(--fairway-2);background:var(--mint);}
.qa-row .ic{width:32px;height:32px;border-radius:var(--r-sm);background:var(--mint);color:var(--fairway);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}
.qa-row .ic svg{width:15px;height:15px;}
.qa-row .tx{flex:1;min-width:0;}
.qa-row .t1{display:block;font-weight:600;font-size:.84rem;color:var(--ink);}
.qa-row .t2{display:block;font-size:.72rem;color:var(--slate);font-weight:500;margin-top:1px;}
.qa-row .chev{width:14px;height:14px;color:var(--slate);flex-shrink:0;}
.pay-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px dashed var(--line);}
.pay-row:last-of-type{border-bottom:none;}
.pay-row.dim .tx{opacity:.6;}
.pay-row .t1{font-weight:600;font-size:.84rem;color:var(--ink);}
.pay-row .t2{font-size:.72rem;color:var(--slate);font-weight:450;margin-top:2px;line-height:1.5;}
.pay-row .tg:disabled{cursor:not-allowed;opacity:.55;}
.pay-radios{display:flex;gap:18px;margin-top:4px;}
.pay-radios label{display:flex;align-items:center;gap:6px;cursor:pointer;font-weight:600;font-size:.84rem;color:var(--ink);}
.pay-radios input{accent-color:var(--fairway);}
.pay-err{color:var(--red);font-size:.78rem;font-weight:600;margin:-4px 0 10px;}
.pay-note{background:var(--mint);border-radius:var(--r-sm);padding:10px 12px;font-size:.72rem;color:var(--fairway);font-weight:600;line-height:1.55;margin-top:6px;}
.acct-quiet{border:1.5px dashed var(--line);border-radius:var(--r);padding:26px 20px;text-align:center;}
.acct-quiet p{font-size:.84rem;color:var(--slate);font-weight:450;line-height:1.65;max-width:400px;margin:0 auto;}
/* ── Clients CRM (v2, R3-clients) ── */
.cl-loading{font-size:.78rem;color:var(--slate);font-weight:450;padding:8px 0;line-height:1.6;}
.cl-loading.err{color:var(--red);}
.cl-inline-link{background:none;border:none;color:var(--fairway);font-family:var(--sans);font-weight:600;cursor:pointer;text-decoration:none;padding:0;font-size:inherit;}
.cl-inline-link:hover{text-decoration:underline;}
.cl-upsell{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:34px 24px;text-align:center;box-shadow:var(--shadow);}
.cl-upsell h3{font-family:var(--serif);font-size:1.2rem;font-weight:600;color:var(--ink);margin-bottom:8px;}
.cl-upsell p{font-size:.84rem;color:var(--slate);font-weight:450;max-width:420px;margin:0 auto 18px;line-height:1.65;}
.cl-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:12px;flex-wrap:wrap;}
.cl-head h3{font-family:var(--serif);font-size:1.15rem;font-weight:600;color:var(--ink);margin:0;}
.cl-head p{font-size:.72rem;color:var(--slate);margin-top:2px;}
.cl-head-acts{display:flex;gap:8px;flex-wrap:wrap;}
.cl-empty{border:1.5px dashed var(--line);border-radius:var(--r);padding:30px 20px;text-align:center;}
.cl-empty p{font-size:.84rem;color:var(--slate);font-weight:450;line-height:1.65;max-width:420px;margin:0 auto 16px;}
.cl-empty .acts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;}
.cl-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 14px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);margin-bottom:8px;cursor:pointer;font-family:var(--sans);box-shadow:var(--shadow);transition:border-color .15s,transform .12s;}
.cl-row:hover{border-color:var(--fairway-2);transform:translateY(-1px);}
.cl-row.archived{cursor:default;opacity:.85;box-shadow:none;}
.cl-row.archived:hover{border-color:var(--line);transform:none;}
.cl-row .ava,.cl-id .ava{width:42px;height:42px;border-radius:50%;background:var(--mint);border:1px solid var(--line);color:var(--fairway);font-family:var(--serif);font-size:.84rem;font-weight:500;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}
.cl-id .ava.lg{width:60px;height:60px;font-size:1.1rem;}
.cl-row .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.cl-row .nm{font-weight:600;font-size:.9rem;color:var(--ink);}
.cl-row .ct{font-size:.72rem;color:var(--slate);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cl-row .nt{font-size:.72rem;color:var(--slate);font-style:italic;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cl-row .chev{width:14px;height:14px;color:var(--slate);flex-shrink:0;}
.cl-arch{margin-top:20px;}
.cl-arch-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--fog);border:1px solid var(--line);border-radius:var(--r-sm);padding:11px 14px;cursor:pointer;font-family:var(--sans);font-weight:600;font-size:.84rem;color:var(--ink);}
.cl-arch-toggle svg{width:15px;height:15px;color:var(--slate);transition:transform .18s;}
.cl-arch-list{margin-top:10px;}
.btn-outline2.sm{padding:7px 13px;font-size:.72rem;flex-shrink:0;}
.cl-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:20px;box-shadow:var(--shadow);}
.cl-id{display:flex;align-items:center;gap:14px;margin-bottom:18px;}
.cl-id h2{font-family:var(--serif);font-size:1.35rem;font-weight:600;color:var(--ink);margin:0;word-wrap:break-word;}
.cl-linked{font-size:.72rem;color:var(--slate);font-weight:600;margin-top:4px;display:flex;align-items:center;gap:5px;}
.cl-linked.v{color:var(--fairway);font-weight:600;}
.cl-linked svg{width:12px;height:12px;}
/* Invite-email hint under the Add/Edit Client email field */
.cl-email-hint{font-size:.72rem;color:var(--slate);font-weight:450;line-height:1.55;margin:-6px 0 14px;}
/* Client-book status + merge prompt inside the lesson-details modal */
.ld-book{margin-top:12px;}
.ld-chip{display:inline-flex;align-items:center;font-size:.68rem;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--fairway);background:var(--mint);border-radius:20px;padding:4px 10px;}
.ld-chip.off{color:var(--slate);background:var(--fog);}
.ld-q{font-family:var(--serif);font-size:1rem;font-weight:600;color:var(--ink);margin-bottom:8px;line-height:1.45;}
.ld-note{font-size:.82rem;color:var(--slate);font-weight:450;line-height:1.65;}
/* "Due a follow-up" — lapsed-client nudge list above the active client rows */
.cl-nudge{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin-bottom:14px;box-shadow:var(--shadow);}
.cl-nudge .t1{font-weight:700;font-size:.9rem;}
.cl-nudge .t2{font-size:.75rem;color:var(--slate);font-weight:450;line-height:1.55;margin:4px 0 4px;}
.cl-nudge-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line);}
.cl-nudge-row .tx{display:flex;flex-direction:column;min-width:0;flex:1;}
.cl-nudge-row .nm{font-weight:600;font-size:.85rem;}
.cl-nudge-row .ct{font-size:.72rem;color:var(--slate);font-weight:450;}
.cl-arch-banner{background:var(--amber-bg);border:1px solid #e8d9b8;border-radius:var(--r-sm);padding:12px 14px;margin-bottom:16px;}
.cl-arch-banner .t1{font-weight:600;font-size:.84rem;color:var(--amber);}
.cl-arch-banner .t2{font-size:.78rem;color:var(--amber);margin-top:3px;font-weight:500;}
.cl-arch-banner .t3{font-size:.72rem;color:var(--slate);margin-top:5px;font-weight:450;line-height:1.5;}
.cl-qa{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px;}
.cl-kv{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px;}
.cl-kv .cell{background:var(--fog);border-radius:var(--r-sm);padding:11px 12px;min-width:0;}
.cl-kv .k,.cl-sec .k{display:block;font-size:.68rem;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px;}
.cl-kv .v{font-weight:600;font-size:.84rem;color:var(--ink);word-break:break-all;}
.cl-kv .v i,.cl-notes i{color:var(--slate);font-weight:500;}
.cl-sec{margin-bottom:18px;}
.cl-notes{background:var(--fog);border-radius:var(--r-sm);padding:13px 14px;min-height:56px;font-size:.84rem;line-height:1.6;white-space:pre-wrap;color:var(--ink);font-weight:450;}
.cl-bk{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm);margin-bottom:8px;}
.cl-bk .tx{flex:1;min-width:0;}
.cl-bk .t1{font-weight:600;font-size:.84rem;color:var(--ink);}
.cl-bk .t2{font-size:.72rem;color:var(--slate);margin-top:2px;}
.cl-bk .rt{text-align:right;flex-shrink:0;}
.cl-bk .fee{font-size:.84rem;color:var(--fairway);margin-bottom:3px;}
.cl-detail-acts{display:flex;gap:9px;flex-wrap:wrap;}
.cl-detail-acts>*{flex:1;min-width:120px;}
.cl-mkt-lock{padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--fog);font-size:.84rem;font-weight:600;color:var(--ink);}
/* cancel / reschedule / lesson-details modal bits (R3) */
.modal-sum{background:var(--mint);border-radius:var(--r-sm);padding:12px 14px;margin-bottom:16px;font-size:.84rem;line-height:1.5;}
.modal-sum .k{font-size:.68rem;color:var(--slate);font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px;}
.modal-sum .t{font-weight:600;color:var(--ink);}
.modal-sum .d{font-size:.78rem;color:var(--ink);margin-top:3px;}
.modal-sum.danger{background:var(--red-bg);}
.modal-sum.danger .k,.modal-sum.danger .t,.modal-sum.danger .d{color:var(--red);}
.ld-grid{display:grid;grid-template-columns:auto 1fr;gap:9px 18px;font-size:.84rem;}
.ld-grid .k{color:var(--slate);font-weight:600;}
.ld-grid .v{font-weight:600;color:var(--ink);}
/* own-book modal bits */
.bl-legend{font-size:.68rem;color:var(--slate);font-weight:600;margin-bottom:6px;display:flex;align-items:center;gap:5px;}
.bl-legend .dot{width:8px;height:8px;border-radius:50%;display:inline-block;}
.bl-legend .dot.free{background:var(--fairway);}
.bl-legend .dot.taken{background:var(--red);}
.bl-legend .dot.off{background:var(--line);}
.ts.off{opacity:.4;cursor:not-allowed;pointer-events:none;}
.bl-pms{display:flex;gap:10px;flex-wrap:wrap;}
.pm{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:96px;padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);font-family:var(--sans);font-size:.78rem;font-weight:600;color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s;}
.pm:hover{border-color:var(--fairway-2);}
.pm.sel{border-color:var(--fairway);background:var(--mint);}
.pm.off{opacity:.55;cursor:not-allowed;}
.pm-icon{display:flex;color:var(--fairway);}
.pm-icon svg{width:18px;height:18px;}
.pm-sub{font-size:.68rem;font-weight:600;color:var(--slate);line-height:1.2;text-align:center;}
.req{color:var(--red);}
/* coach booking rows (v2, R3-settings) — .booking-item / .bi-status / .bi-date
   are frozen names the e2e flows read; golfer cards override under .gacct. */
.booking-item{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin-bottom:10px;display:flex;align-items:center;gap:14px;box-shadow:var(--shadow);flex-wrap:wrap;}
.bi-avatar{width:44px;height:44px;border-radius:50%;color:#fff;font-family:var(--serif);font-weight:500;font-size:.9rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.bi-info{flex:1;min-width:180px;}
.bi-name{font-weight:600;font-size:.9rem;color:var(--ink);margin-bottom:2px;}
.bi-detail{font-size:.78rem;color:var(--slate);font-weight:500;}
.bi-date{font-size:.72rem;color:var(--slate);margin-top:3px;}
.bi-status{padding:3px 10px;border-radius:20px;font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;}
.bi-status.confirmed{background:var(--mint);color:var(--fairway);}
.bi-status.pending{background:var(--amber-bg);color:var(--amber);}
.bi-status.completed{background:var(--fog);color:var(--slate);}
.bi-status.no_show{background:var(--red-bg);color:var(--red);}
.bi-status.denied{background:var(--red-bg);color:var(--red);}
.bi-status.cancelled{background:var(--fog);color:var(--slate);}
.bi-denied-msg{margin-top:6px;background:var(--red-bg);border-left:3px solid var(--red);border-radius:9px;padding:7px 10px;font-size:.72rem;color:var(--red);font-weight:600;line-height:1.5;}
.bi-actions{display:flex;gap:7px;flex-wrap:wrap;}
.bi-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 13px;border-radius:30px;font-family:var(--sans);font-size:.72rem;font-weight:600;cursor:pointer;border:1px solid var(--line);background:var(--paper);color:var(--ink);transition:border-color .15s,background .15s,color .15s;}
.bi-btn svg{width:13px;height:13px;}
.bi-btn:hover{border-color:var(--slate);}
.bi-btn.primary{background:var(--fairway);color:#fff;border-color:var(--fairway);}
.bi-btn.primary:hover{background:var(--fairway-2);border-color:var(--fairway-2);}
.bi-btn.danger{color:var(--red);}
.bi-btn.danger:hover{border-color:var(--red);background:var(--red-bg);}
/* settings cards (v2, R3-editor) — shared by the editor Account tab and the
   account page's settings/payments panels. Mobile-first: 1-col, 2-col ≥768. */
.settings-grid{display:grid;grid-template-columns:1fr;gap:14px;}
@media(min-width:768px){.settings-grid{grid-template-columns:1fr 1fr;}}
.settings-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:18px;box-shadow:var(--shadow);}
.settings-card h3{font-family:var(--sans);font-size:.9rem;font-weight:600;color:var(--ink);margin-bottom:14px;display:flex;align-items:center;gap:9px;}
.btn-update{background:var(--fairway);color:#fff;border:none;padding:10px 20px;border-radius:30px;font-family:var(--sans);font-size:.84rem;font-weight:600;cursor:pointer;margin-top:8px;transition:background .18s;}
.btn-update:hover{background:var(--fairway-2);}
.btn-update:disabled{opacity:.6;cursor:default;}
/* Client-detail quick-action row — big, thumb-friendly, used mid-lesson on a
   phone (v2, R3-clients). One filled primary look + ghost .qa-alt. */
.qa-btn{flex:1;min-width:96px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:13px 8px;border-radius:var(--r);border:1px solid var(--fairway);background:var(--fairway);color:#fff;font-family:var(--sans);font-weight:600;font-size:.78rem;line-height:1.15;text-align:center;text-decoration:none;cursor:pointer;transition:background .18s,border-color .18s;}
.qa-btn:hover{background:var(--fairway-2);border-color:var(--fairway-2);}
.qa-btn .qa-ico{display:flex;}
.qa-btn .qa-ico svg{width:18px;height:18px;}
.qa-btn.qa-alt{background:var(--paper);color:var(--ink);border-color:var(--line);}
.qa-btn.qa-alt:hover{background:var(--mint);border-color:var(--fairway-2);color:var(--ink);}
.btn-danger{display:inline-block;background:var(--paper);color:var(--red);border:1px solid var(--line);padding:10px 20px;border-radius:30px;font-family:var(--sans);font-size:.84rem;font-weight:600;cursor:pointer;margin-top:8px;transition:border-color .15s,background .15s;text-decoration:none;}
.btn-danger:hover{border-color:var(--red);background:var(--red-bg);}
.empty-state{text-align:center;padding:40px 20px;color:var(--muted);}
.empty-state .es-icon{font-size:2.8rem;margin-bottom:10px;}
.empty-state p{font-weight:600;margin-bottom:14px;}
.empty-state button{background:var(--green);color:#fff;border:none;padding:11px 24px;border-radius:30px;font-family:var(--sans);font-size:.84rem;font-weight:600;cursor:pointer;}
/* R3-ACCOUNT-GOLFER: .card-display / .cd-* removed — only consumer was the
   golfer "Saved Card" mock UI, deleted with the Payment Details tab (no
   online payments exist to manage). */


/* ══════════════════════════════════════════════════════════════
   HOME v2 (rebrand R3) — ported from home-v2b.html, trust-first.
   Mobile-first; canonical breakpoints 480/768/980 (see tokens.css).
   ══════════════════════════════════════════════════════════════ */
.hm-eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);}
.hm-eyebrow-dark{color:var(--green3);}
.hm-in{max-width:1120px;margin:0 auto;}
.hm-section{padding:56px 18px 8px;}
.hm-h2{font-family:var(--serif);font-size:clamp(1.6rem,3.4vw,1.9rem);font-weight:600;letter-spacing:-.012em;margin:10px 0 22px;color:var(--ink);text-wrap:balance;}

/* hero — horizon line ("Well kept" signature #2) sits on the baseline */
.hm-hero{background:var(--paper) var(--horizon-light) bottom center / 100% 58px no-repeat;border-bottom:1px solid var(--line);padding:44px 18px 52px;}
.hm-hero-in{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:1fr;gap:30px;align-items:start;}
.hm-hero-in>*{min-width:0;} /* ledger rows truncate inside the card; min-content never widens the mobile track */
.hm-hero h1{font-family:var(--serif);font-optical-sizing:auto;font-weight:600;font-size:2.3rem;line-height:1.12;letter-spacing:-.015em;color:var(--ink);margin-top:10px;}
.hm-hero h1 em{font-style:italic;color:var(--fairway);font-weight:480;}
.hm-sub{font-size:1.05rem;font-weight:450;color:var(--slate);margin-top:16px;max-width:50ch;line-height:1.7;}
.hm-ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px;}
.hm-btn-solid{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-weight:600;font-size:.9rem;
  padding:13px 24px;border-radius:30px;border:none;cursor:pointer;background:var(--fairway);color:#fff;transition:background .18s,transform .08s;}
.hm-btn-solid:hover{background:var(--fairway-2);}
.hm-btn-solid:active{transform:translateY(1px);}
.hm-btn-solid svg{width:16px;height:16px;}
.hm-btn-ghost{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-weight:600;font-size:.9rem;
  padding:13px 24px;border-radius:30px;border:1px solid var(--line);cursor:pointer;background:var(--paper);color:var(--ink);transition:border-color .18s;}
.hm-btn-ghost:hover{border-color:var(--slate);}

/* hero ledger — "Taking bookings" (rendered by js/pages/home.js from
   coachesCache + availability_slots). Each row's "next free" is computed;
   the wrapper stays hidden until there is a coach with published hours. */
.hm-ledger-wrap[hidden]{display:none;}
.hm-ledger{background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden;}
.hm-lhead{display:flex;align-items:baseline;gap:10px;padding:15px 16px 11px;}
.hm-lcount{margin-left:auto;font-size:.72rem;font-weight:600;color:var(--slate);text-align:right;}
.hm-lcount b{font-family:var(--mono);font-feature-settings:"tnum";font-weight:500;font-size:.9rem;color:var(--ink);}
.hm-fchips{display:flex;flex-wrap:wrap;gap:8px;padding:0 16px 13px;}
.hm-fchip{border:1px solid var(--line);background:var(--paper);border-radius:30px;padding:7px 13px;
  font-family:var(--sans);font-size:.72rem;font-weight:600;color:var(--ink);cursor:pointer;transition:background .15s,border-color .15s;}
.hm-fchip.on{background:var(--ink);border-color:var(--ink);color:#fff;}
.hm-fchip:not(.on):hover{border-color:var(--slate);}
.hm-lrow{display:flex;align-items:center;gap:12px;width:100%;text-align:left;
  padding:13px 16px;border:none;border-top:1px solid var(--line);background:none;cursor:pointer;transition:background .12s;}
.hm-lrow:hover{background:var(--fog);}
.hm-lav{position:relative;width:40px;height:40px;border-radius:12px;overflow:hidden;flex:0 0 auto;
  background:var(--mint);border:1px solid var(--line);}
.hm-lav .fb{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-size:.84rem;font-weight:560;color:var(--fairway);}
.hm-lav img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.hm-lwho{min-width:0;}
.hm-lnm{display:flex;align-items:center;gap:6px;font-family:var(--serif);font-weight:500;font-size:.95rem;line-height:1.25;color:var(--ink);}
.hm-lnm .vf{display:inline-flex;color:var(--fairway);flex:0 0 auto;}
.hm-lnm .vf svg{width:13px;height:13px;}
.hm-lcl{display:block;font-size:.72rem;font-weight:600;color:var(--slate);margin-top:1px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hm-lcl b{font-family:var(--mono);font-feature-settings:"tnum";font-weight:500;color:var(--ink);}
.hm-nf{margin-left:auto;text-align:right;flex:0 0 auto;padding-left:8px;}
.hm-nf .t{display:block;font-family:var(--mono);font-feature-settings:"tnum";font-weight:500;font-size:.9rem;color:var(--ink);}
.hm-nf .l{display:block;font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);margin-top:1px;}
.hm-nf.none .t{color:var(--slate);}
.hm-lfoot{display:flex;justify-content:center;padding:12px 16px 14px;border-top:1px solid var(--line);}
.hm-lfoot .hm-link{margin-top:0;}
.hm-ledger-note{font-size:.78rem;font-weight:450;color:var(--slate);margin-top:11px;line-height:1.6;padding:0 4px;}

/* the Verdis standard — scorecard signature */
.hm-standard{padding:36px 18px 6px;}
.hm-standard-in{max-width:560px;margin:0 auto;}
.hm-scard{border:1.5px solid var(--ink);border-radius:var(--r-sm);overflow:hidden;background:var(--paper);}
.hm-scard-h{background:var(--ink);color:#fff;font-family:var(--serif);font-size:.84rem;font-weight:500;
  letter-spacing:.14em;text-transform:uppercase;padding:10px 16px;text-align:center;}
.hm-srow{display:flex;align-items:baseline;gap:8px;padding:13px 16px;border-bottom:1px dashed var(--line);}
.hm-srow:last-of-type{border-bottom:none;}
.hm-srow .k{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);flex:0 0 96px;}
.hm-srow .lead{flex:1;border-bottom:1px dotted var(--line);transform:translateY(-3px);}
.hm-srow .v{font-weight:600;font-size:.84rem;color:var(--ink);text-align:right;}
.hm-srow .v em{font-style:normal;color:var(--fairway);}
.hm-fine{font-size:.78rem;font-weight:450;color:var(--slate);text-align:center;margin-top:12px;line-height:1.6;}

/* how it works — a ruled ledger list, not cards: the numbers are a real sequence */
.hm-steps{display:block;margin-top:4px;border-top:1px solid var(--line);}
.hm-step{display:grid;grid-template-columns:40px 1fr;column-gap:16px;
  padding:20px 0 22px;border-bottom:1px dashed var(--line);}
.hm-step .n{grid-row:1 / span 2;font-family:var(--mono);font-feature-settings:"tnum";font-size:.9rem;font-weight:500;color:var(--fairway);padding-top:3px;}
.hm-step .n::before{content:"0";}  /* 1 → 01: ledger figures are two-digit */
.hm-step h4{font-family:var(--serif);font-size:1.15rem;font-weight:600;color:var(--ink);}
.hm-step p{font-size:.9rem;font-weight:450;color:var(--slate);margin-top:5px;line-height:1.65;max-width:60ch;}
.hm-link{display:inline-flex;align-items:center;gap:6px;margin-top:16px;font-size:.84rem;font-weight:600;color:var(--fairway);cursor:pointer;
  background:none;border:none;padding:0;font-family:var(--sans);}  /* also used on <button> — kill UA chrome */
.hm-link svg{width:14px;height:14px;}

/* why no star ratings — an editorial moment, not a coupon */
.hm-nr-wrap{padding-top:56px;}
.hm-nr{max-width:1120px;margin:0 auto;}
.hm-nr h2{font-family:var(--serif);font-size:1.45rem;font-weight:600;letter-spacing:-.012em;margin-top:8px;color:var(--ink);}
.hm-nr p{font-size:.95rem;font-weight:450;color:var(--slate);margin-top:12px;line-height:1.7;max-width:62ch;}

/* find a coach */
.hm-search .search-box{margin-top:4px;}
.hm-pin{width:17px;height:17px;color:var(--fairway);flex:0 0 auto;}

/* meet the coaches */
.hm-meet{padding-bottom:14px;}

/* for coaches — the page's one dark moment; sage horizon on its lower edge */
.hm-forcoaches{background:var(--horizon-dark) bottom center / 100% 64px no-repeat, linear-gradient(155deg,#1E4D3B,#15241D);color:#fff;padding:56px 18px 72px;margin-top:40px;}
.hm-forcoaches h2{font-family:var(--serif);font-size:clamp(1.6rem,3.4vw,1.9rem);font-weight:600;letter-spacing:-.012em;margin-top:10px;line-height:1.2;color:#fff;}
.hm-fc-sub{font-size:.95rem;font-weight:450;color:rgba(255,255,255,.72);margin-top:12px;max-width:52ch;line-height:1.65;}
.hm-tiles{display:grid;grid-template-columns:1fr;gap:22px;margin:28px 0 30px;}
.hm-tile{border-top:1px solid rgba(255,255,255,.22);padding:16px 0 0;}
.hm-tile svg{width:20px;height:20px;color:var(--green3);margin-bottom:10px;}
.hm-tile h4{font-size:.9rem;font-weight:600;color:#fff;}
.hm-tile p{font-size:.78rem;font-weight:450;color:rgba(255,255,255,.7);margin-top:5px;line-height:1.6;}
.hm-cta-white{display:inline-flex;align-items:center;gap:8px;background:#fff;color:var(--ink);border:none;cursor:pointer;
  font-family:var(--sans);font-weight:600;font-size:.95rem;padding:14px 26px;border-radius:30px;transition:transform .08s;}
.hm-cta-white:active{transform:translateY(1px);}
.hm-cta-white svg{width:16px;height:16px;color:var(--fairway);}

@media(min-width:768px){
  .hm-hero{padding:72px 28px 64px;}
  .hm-hero-in{grid-template-columns:1.05fr .95fr;gap:44px;}
  .hm-hero h1{font-size:3rem;}
  .hm-section{padding:72px 28px 8px;}
  .hm-standard{padding:72px 28px 8px;}
  .hm-nr-wrap{padding-top:72px;}
  .hm-step{grid-template-columns:40px 240px 1fr;column-gap:24px;}
  .hm-step .n{grid-row:1;}
  .hm-step p{grid-column:3;grid-row:1;margin-top:2px;}
  .hm-tiles{grid-template-columns:1fr 1fr 1fr;gap:28px;}
  .hm-forcoaches{padding:72px 28px 88px;margin-top:56px;}
}
@media(min-width:980px){
  .hm-hero h1{font-size:3.4rem;}
  .hm-hero{padding:88px 36px 72px;}
  .hm-section{padding:88px 36px 10px;}
}


/* ══════════════════════════════════════════════════════════════
   COACH DAILY HUB (rebrand R3-dashboard) — the coach view of
   pg-account, ported from the approved dashboard-v3 mockup.
   Golfer account view untouched; shared .acct-* classes only get
   scoped overrides here. Mobile-first at 480/768/980.
   ══════════════════════════════════════════════════════════════ */
.hub-head{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  padding:14px 16px;display:flex;align-items:center;gap:13px;margin-bottom:14px;}
.hub-ava{width:46px;height:46px;border-radius:12px;background:var(--fairway);color:#fff;display:flex;align-items:center;
  justify-content:center;font-family:var(--serif);font-weight:500;font-size:1.05rem;flex:0 0 auto;}
.hub-hello{flex:1;min-width:0;}
.hub-hello .g{font-family:var(--serif);font-size:1.12rem;font-weight:600;line-height:1.15;color:var(--ink);}
.hub-hello .d{font-size:.78rem;font-weight:600;color:var(--slate);margin-top:2px;display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.hub-head .acct-type{background:var(--mint);color:var(--fairway);font-size:.68rem;font-weight:600;padding:3px 10px;margin-top:0;}
.hub-pill{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;font-size:.72rem;font-weight:600;
  color:var(--amber);background:var(--amber-bg);border:1px solid #e8d9b8;border-radius:20px;padding:7px 12px;cursor:pointer;transition:transform .08s;}
.hub-pill:active{transform:translateY(1px);}
.hub-pill .mono{font-weight:500;}
.hub-pill svg{width:12px;height:12px;}

/* action strip — the coach's standing verbs as icon tiles under the header
   (the share sheet's .act tile shape). Equal columns whatever the count:
   tiles are plan- and approval-gated in account.js (hubActsHTML), so the
   strip renders anywhere from 1-up to 4-up — and not at all when no tile
   applies. ~70px tall = comfortably over the 40px tap-target floor (DS §a11y). */
.hub-acts{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:9px;margin-bottom:14px;}
.hub-acts .act{display:flex;flex-direction:column;align-items:center;gap:7px;padding:11px 4px 10px;background:var(--paper);
  border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);cursor:pointer;font-family:var(--sans);
  transition:border-color .15s,background .15s;}
.hub-acts .act:hover{border-color:var(--fairway-2);background:var(--mint);}
.hub-acts .act:active{transform:translateY(1px);}
.hub-acts .act .ic{position:relative;width:34px;height:34px;border-radius:var(--r-sm);background:var(--mint);color:var(--fairway);
  display:flex;align-items:center;justify-content:center;}
.hub-acts .act .ic svg{width:16px;height:16px;}
.hub-acts .act .lb{font-size:.7rem;font-weight:600;color:var(--ink);line-height:1.1;}

/* day rail */
.hub-rail{display:flex;gap:8px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
.hub-rail::-webkit-scrollbar{display:none;}
.hub-day{flex:0 0 auto;min-width:62px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);
  padding:9px 6px 8px;text-align:center;cursor:pointer;position:relative;transition:border-color .15s,background .15s;}
.hub-day:hover{border-color:var(--fairway-2);}
.hub-day.on{border-color:var(--fairway);background:var(--fairway);color:#fff;}
.hub-day .dn{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--slate);}
.hub-day.on .dn{color:rgba(255,255,255,.85);}
.hub-day .dd{font-family:var(--mono);font-size:.9rem;font-weight:500;margin-top:2px;}
.hub-day .cnt{margin-top:5px;font-family:var(--mono);font-size:.68rem;font-weight:500;color:var(--fairway);white-space:nowrap;}
.hub-day.on .cnt{color:var(--green3);}
.hub-day .cnt.zero{color:var(--line);}
.hub-day.on .cnt.zero{color:rgba(255,255,255,.4);}
.hub-day .pdot{position:absolute;top:6px;right:6px;width:7px;height:7px;border-radius:50%;background:var(--amber);}

/* the sheet */
.hub-card{border:1.5px solid var(--ink);border-radius:var(--r-sm);overflow:hidden;background:var(--paper);box-shadow:var(--shadow);margin-bottom:14px;}
.hub-card-h{background:var(--ink);color:#fff;font-family:var(--serif);font-size:.78rem;font-weight:500;
  letter-spacing:.12em;text-transform:uppercase;padding:9px 16px;text-align:center;display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;}
.hub-card-h .sum{font-family:var(--mono);font-size:.68rem;letter-spacing:0;text-transform:none;color:var(--green3);}
.hub-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px dashed var(--line);}
.hub-row:last-of-type{border-bottom:none;}
.hub-row .t{font-family:var(--mono);font-size:.78rem;font-weight:500;flex:0 0 62px;color:var(--ink);
  border-right:1px solid var(--line);padding-right:10px;}
.hub-row.past{background:var(--fog);}
.hub-row.past .t,.hub-row.past .nm{color:var(--slate);}
.hub-row .who{flex:1;min-width:0;}
.hub-row .nm{font-weight:600;font-size:.9rem;color:var(--ink);}
.hub-row .ls{font-size:.72rem;color:var(--slate);font-weight:500;}
.hub-row .fee{font-family:var(--mono);font-size:.78rem;color:var(--ink);}
/* Booked rows open the lesson sheet — the only entry to "Add to my clients". */
.hub-row.tap{cursor:pointer;transition:background .15s;}
.hub-row.tap:hover{background:var(--mint);}
.hub-row.tap.past:hover{background:var(--fog);}
.hub-row.tap:focus-visible{outline:2px solid var(--fairway);outline-offset:-2px;}
.hub-chev{flex:0 0 auto;color:var(--slate);display:flex;align-items:center;}
.hub-chev svg{width:13px;height:13px;}
.hub-tick{width:22px;height:22px;border-radius:50%;background:var(--mint);color:var(--fairway);
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.hub-tick svg{width:13px;height:13px;}
.hub-done{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--fairway);
  background:var(--mint);border-radius:20px;padding:3px 8px;flex:0 0 auto;}
.hub-row.free{background:linear-gradient(90deg,var(--mint) 0%,var(--paper) 60%);}
.hub-row.free .t{color:var(--fairway);}
.hub-row.free .txt{flex:1;font-size:.78rem;font-weight:600;color:var(--fairway);}
.hub-row.free .book{font-size:.72rem;font-weight:600;color:var(--fairway);border:1px solid var(--sage);border-radius:20px;
  padding:7px 12px;background:var(--paper);cursor:pointer;transition:background .15s;white-space:nowrap;}
.hub-row.free .book:hover{background:var(--mint);}
.hub-row.free .share1{width:32px;height:32px;border-radius:9px;border:1px solid var(--sage);background:var(--paper);color:var(--fairway);
  display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s;flex:0 0 auto;}
.hub-row.free .share1:hover{background:var(--mint);}
.hub-row.free .share1 svg{width:15px;height:15px;}
.hub-row.pend{background:var(--amber-bg);border-left:3px solid var(--amber);padding-left:11px;}
.hub-row.pend .t{color:var(--amber);border-right-color:#e8d9b8;}
.hub-row.pend .wants{font-weight:600;color:var(--amber);font-size:.72rem;}
.hub-row.pend .review{margin-left:auto;font-size:.72rem;font-weight:600;color:var(--amber);border:1px solid #e8d9b8;
  border-radius:20px;padding:7px 12px;background:var(--paper);cursor:pointer;white-space:nowrap;}
.hub-loading,.hub-closed{padding:22px 16px;text-align:center;color:var(--slate);font-size:.84rem;font-weight:600;}
.hub-closed .h{font-family:var(--serif);font-size:1rem;font-weight:600;color:var(--ink);margin-bottom:3px;}
.hub-closed .open-link{display:inline-flex;align-items:center;gap:5px;margin-top:10px;font-size:.78rem;font-weight:600;color:var(--fairway);cursor:pointer;}
.hub-total{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--mint);border-top:1.5px solid var(--ink);}
.hub-total .k{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--fairway);}
.hub-total .k small{display:block;font-size:.68rem;font-weight:600;letter-spacing:.03em;color:var(--slate);text-transform:none;margin-top:1px;}
.hub-total .v{font-family:var(--mono);font-size:1.35rem;font-weight:500;color:var(--fairway);}

/* share lever + owed strip */
.hub-lever{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  padding:14px 16px;display:flex;align-items:center;gap:13px;margin-bottom:10px;}
.hub-lever .ic{width:40px;height:40px;border-radius:12px;background:var(--mint);color:var(--fairway);
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.hub-lever .ic svg{width:19px;height:19px;}
.hub-lever .tx{flex:1;min-width:0;}
.hub-lever .t1{font-weight:600;font-size:.9rem;color:var(--ink);}
.hub-lever .t1 .mono{color:var(--fairway);}
.hub-lever .t2{font-size:.72rem;font-weight:500;color:var(--slate);margin-top:1px;}
.hub-lever .go{flex:0 0 auto;background:var(--fairway);color:#fff;font-weight:600;font-size:.78rem;border:none;cursor:pointer;
  padding:10px 16px;border-radius:20px;transition:background .15s;}
.hub-lever .go:hover{background:var(--fairway-2);}
.hub-owed{display:flex;align-items:center;gap:11px;background:var(--paper);border:1px solid var(--line);
  border-left:3px solid var(--amber);border-radius:var(--r);box-shadow:var(--shadow);padding:13px 15px;margin-bottom:14px;}
.hub-owed .k{font-size:.78rem;font-weight:600;color:var(--ink);}
.hub-owed .s{font-size:.72rem;font-weight:500;color:var(--slate);}
.hub-owed .v{margin-left:auto;font-family:var(--mono);font-size:1.1rem;font-weight:500;color:var(--amber);}
.hub-owed .go{font-size:.72rem;font-weight:600;color:var(--fairway);border:1px solid var(--line);border-radius:20px;
  padding:7px 12px;background:var(--paper);cursor:pointer;}
.hub-owed .go:hover{border-color:var(--fairway-2);}

/* no-availability alert — coach has zero weekly hours, so golfers can't book */
.hub-noavail{display:flex;align-items:center;gap:12px;background:var(--amber-bg);border:1px solid #e8d9b8;
  border-radius:var(--r);padding:14px 16px;margin-bottom:16px;text-align:left;}
.hub-noavail .tx{flex:1;min-width:0;}
.hub-noavail .t1{font-weight:700;font-size:.92rem;color:var(--amber);}
.hub-noavail .t2{font-size:.78rem;font-weight:500;color:var(--slate);line-height:1.6;margin-top:2px;}
.hub-noavail .go{flex:0 0 auto;background:var(--fairway);color:#fff;border:none;padding:9px 16px;border-radius:20px;
  font-family:var(--sans);font-size:.78rem;font-weight:600;cursor:pointer;transition:background .15s;}
.hub-noavail .go:hover{background:var(--fairway-2);}

/* getting-set-up checklist — approved first-run; dashed rows echo the ledger.
   Ticks: hairline circle → mint seal when done (DS §8 quiet positivity). */
.hub-getset{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  padding:14px 16px 6px;margin-bottom:16px;text-align:left;}
.gs-head{display:flex;align-items:center;gap:10px;padding-bottom:8px;}
.gs-kicker{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);}
.gs-count{font-size:.78rem;color:var(--fairway);}
.gs-hide{margin-left:auto;background:none;border:none;font-family:var(--sans);font-size:.72rem;font-weight:600;
  color:var(--slate);cursor:pointer;padding:4px 2px;}
.gs-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;border:none;
  border-top:1px dashed var(--line);padding:11px 2px;cursor:pointer;font-family:var(--sans);}
.gs-tick{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line);flex-shrink:0;
  display:flex;align-items:center;justify-content:center;color:var(--fairway);}
.gs-tick.done{background:var(--mint);border-color:var(--mint);}
.gs-tick svg{width:13px;height:13px;}
.gs-tx{flex:1;min-width:0;}
.gs-t1{display:block;font-weight:600;font-size:.9rem;color:var(--ink);}
.gs-tick.done + .gs-tx .gs-t1{color:var(--slate);}
.gs-t2{display:block;font-size:.72rem;font-weight:500;color:var(--slate);line-height:1.5;margin-top:1px;}
.gs-chev{width:14px;height:14px;color:var(--slate);flex-shrink:0;}

/* requests (spec-08 ids live inside these cards) */
.hub-reqs{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  padding:16px;margin-bottom:16px;}
.hub-reqs h3{font-family:var(--serif);font-size:1rem;font-weight:600;color:var(--ink);margin-bottom:12px;display:flex;align-items:center;}
.hub-reqs h3 span{background:var(--amber);color:#fff;border-radius:20px;padding:2px 10px;font-size:.72rem;
  font-family:var(--mono);font-weight:500;margin-left:8px;}
.hub-req{border:1px solid var(--line);border-left:3px solid var(--amber);border-radius:var(--r);padding:13px 14px;margin-bottom:11px;}
.hub-req:last-child{margin-bottom:0;}
.hub-req .top-line{display:flex;align-items:flex-start;gap:11px;}
.hub-req .avx{width:38px;height:38px;border-radius:12px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-weight:500;font-size:.84rem;color:#fff;background:var(--fairway);}
.hub-req .who{flex:1;min-width:0;}
.hub-req .nm{font-weight:600;font-size:.9rem;color:var(--ink);}
.hub-req .ls{font-size:.78rem;color:var(--slate);font-weight:500;margin-top:1px;}
.hub-req .msg{background:var(--mint);border-radius:9px;padding:7px 10px;margin-top:8px;font-size:.78rem;color:var(--ink);font-style:italic;line-height:1.5;}
.hub-req .acts{display:flex;gap:8px;margin-top:11px;}
.hub-req .acts button{flex:1;padding:10px;border-radius:9px;font-weight:600;font-size:.84rem;cursor:pointer;border:none;
  text-align:center;transition:background .15s,border-color .15s;}
.hub-req .b-confirm{background:var(--fairway);color:#fff;}
.hub-req .b-confirm:hover{background:var(--fairway-2);}
.hub-req .b-deny{background:var(--paper);color:var(--red);border:1px solid var(--line);}
.hub-req .b-deny:hover{border-color:var(--red);background:var(--red-bg);}
.hub-req .deny-wrap textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:var(--r-sm);
  padding:9px;font-size:.78rem;min-height:58px;resize:vertical;margin-top:10px;background:var(--paper);color:var(--ink);}
.hub-req .deny-wrap textarea:focus{outline:none;border-color:var(--fairway);}
.hub-req .deny-row{display:flex;gap:8px;margin-top:8px;}
.hub-req .deny-row .send{flex:1;background:var(--red);color:#fff;font-weight:600;font-size:.78rem;padding:9px;border-radius:9px;border:none;cursor:pointer;text-align:center;}
.hub-req .deny-row .back{background:var(--paper);color:var(--slate);border:1px solid var(--line);font-weight:600;font-size:.78rem;padding:9px 13px;border-radius:9px;cursor:pointer;}
.hub-req-empty{text-align:center;padding:14px 10px;color:var(--slate);font-size:.84rem;font-weight:600;}

/* share sheet */
.hub-scrim{position:fixed;inset:0;background:rgba(21,36,29,.55);z-index:900;opacity:0;pointer-events:none;transition:opacity .25s;}
.hub-scrim.open{opacity:1;pointer-events:auto;}
.hub-sheet{position:fixed;left:0;right:0;bottom:0;z-index:910;background:var(--fog);border-radius:20px 20px 0 0;
  max-width:560px;margin:0 auto;transform:translateY(100%);transition:transform .32s cubic-bezier(.2,.8,.2,1);
  padding:8px 16px calc(20px + env(safe-area-inset-bottom));max-height:92dvh;overflow-y:auto;}
.hub-sheet.open{transform:translateY(0);}
.hub-sheet .grab{width:38px;height:4px;border-radius:9px;background:var(--line);margin:8px auto;}
.hub-sheet .t{text-align:center;font-family:var(--serif);font-size:1.15rem;font-weight:600;color:var(--ink);}
.hub-sheet .sub{text-align:center;font-size:.78rem;color:var(--slate);font-weight:500;margin:4px 0 14px;}
.hub-scope{display:flex;gap:8px;margin:0 auto 14px;max-width:360px;}
.hub-scope button{flex:1;font-size:.78rem;font-weight:600;padding:9px;border:1px solid var(--line);border-radius:20px;
  background:var(--paper);color:var(--ink);cursor:pointer;transition:background .15s,border-color .15s,color .15s;}
.hub-scope button.on{background:var(--fairway);border-color:var(--fairway);color:#fff;}
.hub-slotlist{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;}
.hub-slot-day{display:flex;gap:10px;align-items:baseline;padding:11px 14px;border-bottom:1px dashed var(--line);}
.hub-slot-day:last-child{border-bottom:none;}
.hub-slot-day .d{font-size:.68rem;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.08em;flex:0 0 64px;}
.hub-slot-day .ts{font-family:var(--mono);font-size:.78rem;color:var(--ink);line-height:1.6;}
.hub-slot-empty{padding:16px;text-align:center;font-size:.78rem;font-weight:600;color:var(--slate);}
/* the booking link on its own row — what goes in the story link sticker */
.hub-linkrow{display:flex;align-items:center;gap:10px;background:var(--paper);border:1px solid var(--line);
  border-radius:var(--r);padding:11px 11px 11px 14px;margin-top:12px;}
.hub-linkrow .k{font-size:.68rem;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.08em;
  flex:0 0 auto;}
.hub-linkrow .u{font-family:var(--mono);font-size:.78rem;color:var(--ink);flex:1 1 auto;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;}
.hub-linkrow .copy{flex:0 0 auto;font-size:.72rem;font-weight:600;color:var(--fairway);background:var(--mint);
  border:1px solid var(--sage);border-radius:20px;padding:4px 10px;cursor:pointer;}
.hub-link-hint{font-size:.72rem;font-weight:600;color:var(--slate);line-height:1.4;margin-top:6px;}
.hub-caption{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:13px 64px 13px 14px;
  margin-top:12px;font-size:.78rem;line-height:1.55;color:var(--ink);white-space:pre-wrap;position:relative;}
.hub-caption .copy{position:absolute;top:10px;right:10px;font-size:.72rem;font-weight:600;color:var(--fairway);background:var(--mint);
  border:1px solid var(--sage);border-radius:20px;padding:4px 10px;cursor:pointer;}
.hub-share-acts{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:12px;}
.hub-share-acts .act{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 4px;background:var(--paper);
  border:1px solid var(--line);border-radius:var(--r);font-size:.68rem;font-weight:600;color:var(--ink);cursor:pointer;}
.hub-share-acts .act:hover{border-color:var(--fairway);}
.hub-share-acts .act .ic{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;}
.hub-share-acts .act .ic svg{width:17px;height:17px;}
.hub-share-acts .act.wa .ic{background:#25d366;}
.hub-share-acts .act.cp .ic{background:var(--fairway);}
.hub-share-acts .act.dl .ic{background:var(--fairway);}
.hub-share-acts .act.lk .ic{background:var(--ink);}

/* visual story card preview + format toggle */
.hub-card-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;margin:2px 0 4px;}
#hubCard{width:230px;height:auto;border-radius:16px;box-shadow:0 16px 40px rgba(20,33,27,.35);background:#15241D;}
#hubCard.square{width:270px;}
#hubCard.land{width:300px;}
/* transparent export previews over a checker so the see-through-ness is
   unmistakable — dark under the ink panel, light under the paper one, which is
   also the honest preview of the photo each is built for */
#hubCard.clear{background:conic-gradient(#232B26 25%,#1B2220 0 50%,#232B26 0 75%,#1B2220 0) 0 0/26px 26px;}
#hubCard.clear.onpaper{background:conic-gradient(#D8E2DA 25%,#C7D4CA 0 50%,#D8E2DA 0 75%,#C7D4CA 0) 0 0/26px 26px;}
.hub-fmt{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;}
.hub-fmt-hint{font-size:.72rem;font-weight:600;color:var(--slate);text-align:center;max-width:270px;line-height:1.4;}
.hub-fmt button{font-size:.78rem;font-weight:600;color:var(--slate);border:1px solid var(--line);background:var(--paper);
  border-radius:30px;padding:6px 14px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;transition:.15s;}
.hub-fmt button svg{width:14px;height:14px;}
.hub-fmt button[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink);}
/* Instagram primary action */
.hub-ig-btn{width:100%;margin-top:14px;border-radius:30px;padding:14px;font-weight:600;font-size:.95rem;color:#fff;
  display:inline-flex;align-items:center;justify-content:center;gap:9px;cursor:pointer;border:none;font-family:var(--sans);
  background:linear-gradient(75deg,#f09433,#e6683c 25%,#dc2743 50%,#cc2366 75%,#bc1888);transition:filter .15s,transform .08s;}
.hub-ig-btn:hover{filter:brightness(1.04);}
.hub-ig-btn:active{transform:translateY(1px);}
.hub-ig-btn svg{width:20px;height:20px;}

@media(min-width:768px){
  .hub-head{padding:16px 18px;}
  .hub-row .t{flex-basis:70px;}
}


/* ── mobile single-day view (<768px) — cal-* additions ── */
.cal-daywrap{padding:0 14px 16px;}
.cal-daystrip{display:flex;gap:7px;overflow-x:auto;padding:12px 2px 10px;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
.cal-daystrip::-webkit-scrollbar{display:none;}
.cal-sday{flex:0 0 auto;min-width:64px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);
  padding:8px 6px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;font-family:var(--sans);}
.cal-sday .dn{display:block;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--slate);}
.cal-sday .dd{display:block;font-family:var(--mono);font-size:.78rem;font-weight:500;margin-top:2px;color:var(--ink);}
.cal-sday.off .dd{color:var(--slate);text-decoration:line-through;opacity:.6;}
.cal-sday.on{border-color:var(--fairway);background:var(--fairway);}
.cal-sday.on .dn{color:rgba(255,255,255,.85);}
.cal-sday.on .dd{color:#fff;opacity:1;text-decoration:none;}
.cal-sday.past{opacity:.55;}
.cal-dv-bucket{font-size:.68rem;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.08em;
  padding:12px 2px 7px;border-bottom:1px solid var(--line);margin-bottom:2px;}
.cal-dv-row{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:8px 12px;margin-top:7px;
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);cursor:pointer;font-family:var(--sans);
  text-align:left;transition:border-color .15s,background .15s;}
.cal-dv-row .t{font-family:var(--mono);font-feature-settings:"tnum";font-size:.78rem;font-weight:500;flex:0 0 62px;color:var(--ink);}
.cal-dv-row .state{display:inline-flex;align-items:center;gap:6px;font-size:.84rem;font-weight:600;}
.cal-dv-row .state svg{width:14px;height:14px;}
.cal-dv-row .hint{margin-left:auto;font-size:.68rem;font-weight:600;color:var(--slate);}
.cal-dv-row.open{background:var(--mint);}
.cal-dv-row.open .state{color:var(--fairway);}
.cal-dv-row.open:hover{border-color:var(--fairway-2);}
.cal-dv-row.closed{background:var(--fog);}
.cal-dv-row.closed .state,.cal-dv-row.closed .t{color:var(--slate);}
.cal-dv-row.closed:hover{border-color:var(--slate);}
.cal-dv-row.booked{background:var(--fairway);border-color:var(--fairway);}
.cal-dv-row.booked .t{color:rgba(255,255,255,.85);}
.cal-dv-row.booked .who{display:flex;flex-direction:column;min-width:0;}
.cal-dv-row.booked .nm{color:#fff;font-weight:600;font-size:.84rem;}
.cal-dv-row.booked .ls{color:rgba(255,255,255,.8);font-size:.72rem;font-weight:500;}
.cal-dv-row.booked .tag{margin-left:auto;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
  color:var(--fairway);background:#fff;border-radius:20px;padding:3px 9px;}
/* Mobile day view, same distinction as the desktop grid: amber = waiting on
   the coach, green = agreed. */
.cal-dv-row.booked.pending-req{background:var(--amber);border-color:var(--amber);}
.cal-dv-row.booked.pending-req .tag{color:var(--ink);}
/* Past rows — inert record of a gone hour; booked past rows (.bk-past)
   stay tappable to open the lesson's details. */
.cal-dv-row.past{opacity:.55;pointer-events:none;cursor:default;}
.cal-dv-row.bk-past{opacity:.7;}
.cal-dayoff{text-align:center;padding:26px 16px;border:1px dashed var(--line);border-radius:var(--r);margin-top:12px;}
.cal-dayoff .h{font-family:var(--serif);font-size:1rem;font-weight:600;color:var(--ink);}
.cal-dayoff p{font-size:.78rem;font-weight:450;color:var(--slate);margin-top:5px;line-height:1.55;}
.cal-dayoff .warn{color:var(--amber);}
.cal-dayoff button{margin-top:12px;background:var(--fairway);color:#fff;border:none;padding:10px 20px;border-radius:20px;
  font-family:var(--sans);font-size:.78rem;font-weight:600;cursor:pointer;transition:background .15s;}
.cal-dayoff button:hover{background:var(--fairway-2);}

/* view switch: day view below 768, full week grid above */
.week-grid{display:none;}
.cal-daywrap{display:block;}
@media(min-width:768px){
  .week-grid{display:block;}
  .cal-daywrap{display:none;}
}


/* ═══ R3-PROFILE ═══
   New components for the public coach profile / booking-request page
   (pg-profile), ported from the approved profile-v3 mockup. Everything is
   pf- prefixed; core identity/hero rules live in the PROFILE PAGE block at
   the top of this file. Mobile-first; app-frame column per design-system §5;
   scorecard per §7; amber strictly as pending status per §8. */

/* numerals utility — mockup-canonical .mono; hub/fc markup already carries
   the class but no global rule existed. Every number in mono + tnum (§3). */
.mono{font-family:var(--mono);font-feature-settings:"tnum";font-weight:500;}

/* ── lesson types: radio cards, each with its own £ ── */
.pf-lessons{display:flex;flex-direction:column;gap:9px;}
.pf-lesson{display:flex;align-items:center;gap:12px;width:100%;text-align:left;cursor:pointer;
  border:1.5px solid var(--line);border-radius:var(--r);background:var(--paper);color:var(--ink);
  font-family:var(--sans);padding:12px 15px;transition:border-color .15s,background .15s;}
.pf-lesson:hover{border-color:var(--fairway-2);}
.pf-lesson.on{border-color:var(--fairway);background:var(--mint);}
.pf-lesson .tick{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line);flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;color:transparent;background:var(--paper);
  transition:background .15s,border-color .15s;}
.pf-lesson.on .tick{background:var(--fairway);border-color:var(--fairway);color:#fff;}
.pf-lesson .tick svg{width:11px;height:11px;}
.pf-lesson .l-t{display:flex;flex-direction:column;flex:1;min-width:0;}
.pf-lesson .l-n{font-weight:600;font-size:.9rem;line-height:1.3;}
.pf-lesson .l-d{font-size:.78rem;font-weight:500;color:var(--slate);margin-top:2px;}
.pf-lesson .l-d .mono{font-size:.78rem;}
.pf-lesson .l-p{font-family:var(--mono);font-feature-settings:"tnum";font-weight:500;font-size:1rem;margin-left:4px;}
/* One lesson type is not a choice — it states what the lesson is instead of
   asking the golfer to select the only option (renderProfileLessons). */
.pf-lesson-one{display:flex;align-items:center;justify-content:space-between;gap:10px;
  border:1px solid var(--line);border-radius:var(--r);background:var(--paper);padding:13px 14px;}
.pf-lesson-one .l-t{display:flex;flex-direction:column;min-width:0;}
.pf-lesson-one .l-n{font-size:.9rem;font-weight:550;color:var(--ink);line-height:1.35;}
.pf-lesson-one .l-d{font-family:var(--mono);font-feature-settings:"tnum";font-size:.72rem;color:var(--slate);margin-top:2px;}
.pf-lesson-one .l-p{font-family:var(--mono);font-feature-settings:"tnum";font-weight:500;font-size:1rem;color:var(--fairway);}

/* Prompt chips above the (now optional) note — they write a real sentence into
   the textarea rather than being a separate field. */
.pf-msgchips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:9px;}
.pf-msgchip{border:1px solid var(--line);border-radius:30px;background:var(--paper);color:var(--slate);
  font-family:var(--sans);font-size:.78rem;font-weight:500;padding:7px 12px;min-height:40px;cursor:pointer;
  transition:border-color .15s,background .15s,color .15s;}
.pf-msgchip:hover{border-color:var(--fairway);color:var(--fairway);}
.pf-msgchip.on{background:var(--mint);border-color:var(--fairway);color:var(--fairway);font-weight:550;}

/* ── the week navigator ──
   The diary runs to PF_HORIZON_WEEKS (profile.js) and pages a week at a time.
   Range label is mono (it is a date), the arrows disable at the ends of the
   horizon so the control never lies about where you can go. */
.pf-weeknav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;}
.pf-weekrange{font-size:.84rem;font-weight:500;color:var(--ink);}
.pf-weekbtns{display:flex;gap:6px;flex:0 0 auto;}
.pf-weekbtn{width:40px;height:40px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);cursor:pointer;
  transition:border-color .15s,color .15s;}
.pf-weekbtn:hover:not(:disabled){border-color:var(--fairway);color:var(--fairway);}
.pf-weekbtn:disabled{opacity:.35;cursor:not-allowed;}
.pf-weekbtn svg{width:15px;height:15px;}

/* ── the week: day rail + hourly slot grid ── */
.pf-days{display:flex;gap:9px;overflow-x:auto;margin:0 -20px 16px;padding:2px 20px 8px;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;}
.pf-days::-webkit-scrollbar{display:none;}
.pf-day{flex:0 0 auto;min-width:58px;position:relative;border:1px solid var(--line);cursor:pointer;
  border-radius:var(--r-sm);background:var(--paper);padding:8px 4px 7px;text-align:center;font-family:var(--sans);
  transition:border-color .15s,background .15s,color .15s;}
.pf-day:hover{border-color:var(--fairway-2);}
.pf-day.on{background:var(--fairway);border-color:var(--fairway);color:#fff;}
.pf-day.none{opacity:.55;}
.pf-day .dn{display:block;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--slate);}
.pf-day.on .dn{color:rgba(255,255,255,.85);}
.pf-day .dd{display:block;font-family:var(--mono);font-feature-settings:"tnum";font-size:.9rem;font-weight:500;margin-top:2px;}
.pf-day .dc{display:block;font-family:var(--mono);font-feature-settings:"tnum";font-size:.68rem;color:var(--slate);margin-top:2px;}
.pf-day.on .dc{color:rgba(255,255,255,.8);}
.pf-pdot{position:absolute;top:5px;right:5px;width:6px;height:6px;border-radius:50%;background:var(--amber);}
.pf-day.on .pf-pdot{background:var(--amber-bg);}
.pf-bucket{margin-bottom:16px;}
.pf-bucket:last-child{margin-bottom:0;}
.pf-bucket-h{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);margin-bottom:9px;}
.pf-slotgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
.pf-slot{font-family:var(--mono);font-feature-settings:"tnum";font-size:.84rem;font-weight:500;
  padding:10px 6px;min-height:42px;text-align:center;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);
  transition:border-color .12s,background .12s,color .12s;}
button.pf-slot{cursor:pointer;}
button.pf-slot:hover:not(.pend){border-color:var(--fairway);color:var(--fairway);}
.pf-slot.sel{background:var(--fairway);border-color:var(--fairway);color:#fff;}
button.pf-slot.sel:hover{color:#fff;border-color:var(--fairway);}
.pf-slot.booked{color:var(--slate);text-decoration:line-through;opacity:.5;cursor:not-allowed;background:var(--fog);}
.pf-slot.pend{background:var(--amber-bg);border-color:var(--amber);color:var(--amber);}
.pf-noday{border:1px dashed var(--line);border-radius:var(--r-sm);padding:20px 16px;text-align:center;
  font-size:.84rem;font-weight:450;color:var(--slate);line-height:1.55;}
.pf-noday b{font-weight:600;color:var(--ink);}
/* An empty day is never a dead end while the horizon still holds hours: the
   signpost names the next open day and this jumps straight onto it. */
/* A pick made in another week stays live while the golfer looks around. */
.pf-held{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line);font-size:.8rem;color:var(--slate);}
.pf-jump{margin-top:11px;min-height:40px;padding:9px 16px;border:1px solid var(--line);border-radius:30px;
  background:var(--paper);color:var(--fairway);font-family:var(--sans);font-size:.84rem;font-weight:600;cursor:pointer;
  transition:border-color .15s,background .15s;}
.pf-jump:hover{border-color:var(--fairway);background:var(--mint);}

/* ── reviews placeholder — honesty, not absence ── */
.pf-revnote{display:flex;gap:11px;align-items:flex-start;border:1px dashed var(--line);
  border-radius:var(--r);padding:14px 15px;font-size:.84rem;font-weight:450;color:var(--slate);line-height:1.55;}
.pf-revnote svg{width:17px;height:17px;flex:0 0 auto;margin-top:2px;}

/* ── page foot line ── */
.pf-foot{text-align:center;padding:24px 20px 26px;font-size:.72rem;font-weight:500;color:var(--slate);border-top:1px solid var(--line);}
.pf-foot[hidden]{display:none;}
.pf-foot-link{font-family:var(--mono);font-feature-settings:"tnum";font-size:.68rem;font-weight:400;margin-top:6px;word-break:break-all;color:var(--slate);}

/* ── loading + not-found states ── */
.pf-loading{padding:26px 16px;text-align:center;font-size:.84rem;font-weight:600;color:var(--slate);}
.pf-nf{max-width:440px;margin:64px auto;padding:0 24px;text-align:center;}
.pf-nf-ic{width:52px;height:52px;border-radius:50%;background:var(--mint);color:var(--fairway);
  display:flex;align-items:center;justify-content:center;margin:0 auto 16px;}
.pf-nf-ic svg{width:22px;height:22px;}
.pf-nf h2{font-family:var(--serif);font-size:1.4rem;font-weight:500;color:var(--ink);margin-bottom:10px;}
.pf-nf p{color:var(--slate);font-size:.9rem;font-weight:450;line-height:1.65;margin-bottom:22px;}

/* ── docked booking bar (flex child of #pg-profile — never position:fixed:
   .page.active retains a transform from its fadeIn, which would re-anchor
   fixed descendants anyway) ── */
.pf-bar{flex:0 0 auto;position:relative;z-index:30;background:var(--paper);box-shadow:var(--bar-shadow);
  padding:12px 18px calc(12px + env(safe-area-inset-bottom));}
.pf-bar[hidden]{display:none;}
.pf-bar-in{max-width:480px;margin:0 auto;display:flex;align-items:center;gap:14px;}
.pf-bar-price{flex:1;min-width:0;}
.pf-bar-price .lbl{font-size:.72rem;font-weight:600;color:var(--slate);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pf-bar-price .lbl.mono{font-size:.72rem;color:var(--ink);}
.pf-bar-price .val{font-family:var(--mono);font-feature-settings:"tnum";font-size:1.15rem;font-weight:500;white-space:nowrap;color:var(--ink);}
.pf-cta{background:var(--fairway);color:#fff;font-weight:600;font-size:.95rem;font-family:var(--sans);border:none;cursor:pointer;
  padding:14px 22px;border-radius:30px;transition:background .18s,transform .08s;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;}
.pf-cta:hover:not(:disabled){background:var(--fairway-2);}
.pf-cta:active{transform:translateY(1px);}
.pf-cta:disabled{background:var(--line);color:var(--slate);cursor:not-allowed;}
.pf-cta svg{width:16px;height:16px;}
.pf-cta.pend{background:var(--amber-bg);color:var(--amber);}
.pf-cta.pend:hover:not(:disabled){background:var(--amber-bg);}
.pf-bar .pf-cta{flex:0 0 auto;}

/* ── scorecard request sheet ── */
.pf-scrim{position:fixed;inset:0;background:rgba(21,36,29,.55);z-index:940;opacity:0;pointer-events:none;transition:opacity .25s;}
.pf-scrim.open{opacity:1;pointer-events:auto;}
.pf-sheet{position:fixed;left:0;right:0;bottom:0;z-index:950;background:var(--fog);border-radius:20px 20px 0 0;
  max-width:480px;margin:0 auto;transform:translateY(102%);visibility:hidden;
  transition:transform .32s cubic-bezier(.2,.8,.2,1),visibility 0s linear .32s;
  padding:8px 20px calc(22px + env(safe-area-inset-bottom));max-height:92dvh;overflow-y:auto;}
.pf-sheet.open{transform:translateY(0);visibility:visible;transition:transform .32s cubic-bezier(.2,.8,.2,1);}
.pf-grab{width:38px;height:4px;border-radius:9px;background:var(--line);margin:8px auto 14px;}
.pf-sheet-title{font-family:var(--serif);font-size:1.15rem;font-weight:500;letter-spacing:-.01em;
  text-align:center;margin-bottom:16px;color:var(--ink);}
.pf-field{margin:16px 0 4px;}
.pf-field label{display:block;font-size:.72rem;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--slate);margin-bottom:7px;}
.pf-field textarea{width:100%;font-family:var(--sans);font-size:.9rem;font-weight:500;color:var(--ink);
  padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);
  resize:vertical;min-height:84px;line-height:1.5;outline:none;transition:border-color .15s;}
.pf-field textarea:focus{border-color:var(--fairway);}
.pf-field textarea::placeholder{color:var(--slate);font-weight:500;}
.pf-hint{display:flex;align-items:center;gap:6px;font-size:.72rem;font-weight:600;color:var(--amber);margin-top:7px;}
.pf-hint[hidden]{display:none;}
.pf-hint svg{width:13px;height:13px;flex:0 0 auto;}
.pf-sheet-cta{width:100%;background:var(--fairway);color:#fff;font-weight:600;font-size:1rem;font-family:var(--sans);
  border:none;cursor:pointer;padding:15px;border-radius:30px;margin-top:16px;transition:background .18s;}
.pf-sheet-cta .mono{font-size:.95rem;}
.pf-sheet-cta:hover:not(:disabled){background:var(--fairway-2);}
.pf-sheet-cta:disabled{background:var(--line);color:var(--slate);cursor:not-allowed;}
.pf-sheet-note{text-align:center;font-size:.78rem;font-weight:600;color:var(--slate);margin-top:12px;line-height:1.5;}

/* the scorecard itself (§7) */
.pf-card{border:1.5px solid var(--ink);border-radius:var(--r-sm);overflow:hidden;background:var(--paper);}
.pf-card-h{background:var(--ink);color:#fff;font-family:var(--serif);font-size:.84rem;font-weight:500;
  letter-spacing:.14em;text-transform:uppercase;padding:9px 16px;text-align:center;}
.pf-card-row{display:flex;align-items:baseline;gap:8px;padding:11px 16px;border-bottom:1px dashed var(--line);}
.pf-card-row .k{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);flex:0 0 62px;}
.pf-card-row .lead{flex:1;border-bottom:1px dotted var(--line);transform:translateY(-3px);}
.pf-card-row .v{font-family:var(--mono);font-feature-settings:"tnum";font-size:.9rem;font-weight:500;text-align:right;color:var(--ink);}
.pf-card-row.empty .v{color:var(--slate);font-family:var(--sans);font-weight:600;font-size:.84rem;}
.pf-card-total{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--mint);}
.pf-card-total .k{font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--fairway);}
.pf-card-total .v{font-family:var(--mono);font-feature-settings:"tnum";font-size:1.45rem;font-weight:500;color:var(--fairway);}

/* request-sent (pending — amber is status, never decoration) */
.pf-done{text-align:center;padding:6px 4px 16px;}
.pf-seal{width:58px;height:58px;border-radius:50%;background:var(--amber-bg);color:var(--amber);
  display:flex;align-items:center;justify-content:center;margin:0 auto 14px;border:2px solid var(--amber);}
.pf-seal svg{width:26px;height:26px;}
.pf-done h3{font-family:var(--serif);font-size:1.25rem;font-weight:500;color:var(--ink);margin-bottom:10px;}
.pf-stchip{display:inline-flex;align-items:center;gap:5px;background:var(--amber-bg);color:var(--amber);
  font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  padding:4px 11px;border-radius:30px;margin-bottom:10px;}
.pf-done p{font-size:.9rem;color:var(--slate);font-weight:450;line-height:1.6;}
.pf-echo{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);
  padding:11px 13px;margin:14px 0 0;text-align:left;font-size:.84rem;font-weight:450;color:var(--slate);line-height:1.55;}
.pf-echo b{display:block;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px;font-weight:700;color:var(--slate);}
.pf-ghost{width:100%;border:1px solid var(--line);border-radius:30px;padding:13px;font-weight:600;font-family:var(--sans);
  font-size:.95rem;background:var(--paper);color:var(--ink);cursor:pointer;margin-top:16px;transition:border-color .15s;}
.pf-ghost:hover{border-color:var(--slate);}

/* ── responsive: app column becomes an elevated card ≥480 (§5) ── */
@media(min-width:480px){
  .pf-app{margin:20px auto 24px;border:1px solid var(--line);border-radius:20px;overflow:hidden;
    box-shadow:0 12px 48px rgba(21,36,29,.12);min-height:0;}
  .pf-bar{border-top:1px solid var(--line);}
}
@media(min-width:768px){
  .pf-app{margin:28px auto 32px;max-width:560px;}
  .pf-hero{height:200px;}
  .pf-bar-in{max-width:560px;}
}
/* ↑ that ≥768 block (and the ≥980 .gacct block further down) shipped with a
   missing closing brace, silently nesting EVERYTHING below it — golfer
   account, R3-checkout and waitlist rules only applied at ≥768/≥980px.
   Closed on 2026-07-13 with the profile responsive pass. */

/* ── ≥980: the profile becomes a real two-column laptop layout ──
   One paper card, cover hero spanning the full card width, content in the
   main column, and the whole booking flow (lessons + week + price/CTA bar,
   which profile.js re-docks into #pfRail) as a sticky right-hand rail.
   .pf-app loses overflow:hidden here — a clipping ancestor would kill the
   rail's position:sticky — so the hero rounds its own top corners. */
@media(min-width:980px){
  .pf-app{max-width:1080px;width:calc(100% - 48px);margin:28px auto 44px;overflow:visible;padding-bottom:0;}
  .pf-hero{height:240px;border-radius:19px 19px 0 0;}
  .pf-cols{display:grid;grid-template-columns:minmax(0,1fr) 380px;}
  .pf-main,.pf-rail{display:block;}
  .pf-main{min-width:0;border-right:1px solid var(--line);padding-bottom:10px;}
  .pf-rail{align-self:start;position:sticky;top:16px;display:flex;flex-direction:column;
    max-height:calc(100dvh - 110px);overflow-y:auto;border-radius:0 0 19px 0;}
  .pf-rail .pf-block:first-of-type{border-top:none;}
  /* the booking bar, re-homed in the rail: quiet card footer, sticky at the
     rail's own bottom edge so the £ + CTA never scroll away */
  .pf-rail .pf-bar{order:9;position:sticky;bottom:0;margin-top:auto;box-shadow:0 -1px 0 var(--line);
    border-top:none;padding:14px 20px 18px;border-radius:0 0 19px 0;}
  .pf-rail .pf-bar-in{max-width:none;}
  /* the request sheet reads as a centred modal, not a phone bottom sheet */
  .pf-sheet{left:50%;right:auto;bottom:auto;top:50%;width:min(480px,92vw);margin:0;
    border-radius:20px;max-height:min(86dvh,720px);padding:14px 24px 24px;
    transform:translate(-50%,calc(-50% + 18px));opacity:0;
    transition:transform .32s cubic-bezier(.2,.8,.2,1),opacity .25s,visibility 0s linear .32s;}
  .pf-sheet.open{transform:translate(-50%,-50%);opacity:1;
    transition:transform .32s cubic-bezier(.2,.8,.2,1),opacity .25s;}
  .pf-grab{display:none;}
}

/* ═══ R3-ACCOUNT-GOLFER ═══
   Golfer view of pg-account, ported from the approved account-golfer-v3
   mockup: v2 paper identity card + counted pill tabs + next-lesson
   scorecard (§7 signature) + status-storied booking cards + honest empty
   states + "How booking works" rail card. Everything is scoped under
   .gacct so the coach hub and the shared .acct-* / .bi-* / .booking-item
   base rules stay untouched for the coach view. Frozen e2e hooks:
   .acct-tab "My Bookings", .acct-email, .acct-type "Golfer Account",
   .booking-item / .bi-status / .bi-date. Mobile-first; 768/980. */

/* layout: on mobile the rail dissolves so its cards interleave with the
   main column (id card → tabs+list → how-it-works) */
.gacct{display:flex;flex-direction:column;gap:14px;}
.gacct-rail{display:contents;}
.gacct-id{order:1;}
.gacct-main{order:2;display:flex;flex-direction:column;gap:14px;min-width:0;}
.gacct-how{order:3;}
.gacct-main #acctPanelWrap{display:flex;flex-direction:column;gap:14px;}
.gacct-eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);}

/* identity card — the paper card that replaced the dark hero */
.gacct-id{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:15px 16px;display:flex;align-items:center;gap:13px;}
.gacct-ava{width:50px;height:50px;border-radius:12px;background:var(--fairway);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:500;font-size:1.1rem;flex:0 0 auto;}
.gacct-tx{flex:1;min-width:0;}
.gacct-hi{font-family:var(--serif);font-size:1.16rem;font-weight:600;line-height:1.15;color:var(--ink);}
.gacct-sub{font-size:.72rem;font-weight:600;color:var(--slate);margin-top:3px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;}
.gacct-id .acct-type{background:var(--mint);color:var(--fairway);font-size:.68rem;font-weight:600;padding:3px 10px;margin-top:0;gap:0;flex:0 0 auto;}
.gacct-gear{width:38px;height:38px;border-radius:12px;border:1px solid var(--line);background:var(--paper);color:var(--slate);display:flex;align-items:center;justify-content:center;flex:0 0 auto;cursor:pointer;transition:border-color .15s,color .15s;}
.gacct-gear:hover{border-color:var(--fairway-2);color:var(--fairway);}
.gacct-gear svg{width:17px;height:17px;}

/* tabs — quick-filter chip rule: active = ink (base .acct-tab is the coach
   underline strip; overridden into pills inside .gacct only) */
.gacct .acct-tabs{border-bottom:none;margin-bottom:0;gap:8px;}
.gacct .acct-tab{flex:1 1 auto;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:.78rem;font-weight:600;padding:10px 10px;border:1px solid var(--line);border-radius:30px;background:var(--paper);color:var(--ink);margin-bottom:0;transition:background .15s,border-color .15s,color .15s;}
.gacct .acct-tab:hover{color:var(--ink);border-color:var(--fairway-2);}
.gacct .acct-tab.active{background:var(--ink);border-color:var(--ink);color:#fff;}
.gacct .acct-tab .n{font-family:var(--mono);font-feature-settings:"tnum";font-size:.72rem;font-weight:500;color:var(--slate);}
.gacct .acct-tab.active .n{color:var(--green3);}

/* booking cards — .booking-item keeps its frozen name; its old flat-row
   look is rebuilt as the mockup's stacked card inside .gacct only */
.gacct .booking-item{display:block;padding:0;margin-bottom:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden;}
.gacct .gbk-main{display:flex;gap:12px;padding:13px 14px;align-items:flex-start;}
.gacct .gbk-date{flex:0 0 54px;text-align:center;border-right:1px solid var(--line);padding-right:11px;padding-top:1px;}
.gacct .gbk-date .dn{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);}
.gacct .gbk-date .dd{font-family:var(--mono);font-feature-settings:"tnum";font-size:1.12rem;font-weight:500;line-height:1.2;color:var(--ink);}
.gacct .gbk-date .mo{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);}
.gacct .gbk-body{flex:1;min-width:0;}
.gacct .gbk-body .sess{font-weight:600;font-size:.9rem;line-height:1.3;color:var(--ink);}
.gacct .gbk-body .sub{font-size:.72rem;color:var(--slate);font-weight:500;margin-top:2px;}
.gacct .booking-item .bi-date{font-family:var(--mono);font-feature-settings:"tnum";font-size:.72rem;font-weight:500;color:var(--slate);margin-top:3px;}
.gacct .gbk-right{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:6px;}
.gacct .gbk-right .fee{font-family:var(--mono);font-feature-settings:"tnum";font-size:.9rem;font-weight:500;color:var(--ink);}
.gacct .bi-status{padding:3px 9px;border-radius:20px;font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;}
.gacct .bi-status.confirmed{background:var(--mint);color:var(--fairway);}
.gacct .bi-status.pending{background:var(--amber-bg);color:var(--amber);}
.gacct .bi-status.completed,.gacct .bi-status.cancelled,.gacct .bi-status.no_show{background:var(--fog);color:var(--slate);}
.gacct .bi-status.denied{background:var(--red-bg);color:var(--red);}

/* pending storytelling — amber = semantic waiting status only */
.gacct .gbk-pend{border-left:3px solid var(--amber);}
.gacct .gbk-wait{display:flex;gap:9px;align-items:flex-start;margin:0 14px 11px;background:var(--amber-bg);border-radius:var(--r-sm);padding:9px 11px;}
.gacct .gbk-wait svg{width:15px;height:15px;color:var(--amber);flex:0 0 auto;margin-top:2px;}
.gacct .gbk-wait .t{font-size:.78rem;font-weight:600;color:var(--amber);line-height:1.45;}
.gacct .gbk-yournote{margin:0 14px 12px;background:var(--fog);border-radius:var(--r-sm);padding:8px 11px;font-size:.78rem;color:var(--slate);font-style:italic;line-height:1.5;}
.gacct .gbk-yournote b{font-style:normal;font-weight:700;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);display:block;margin-bottom:2px;}

/* the coach's reply on a declined request */
.gacct .gbk-note{margin:0 14px 12px;background:var(--fog);border-radius:var(--r-sm);padding:9px 11px;font-size:.78rem;color:var(--slate);line-height:1.55;}
.gacct .gbk-note b{font-weight:700;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;display:block;margin-bottom:2px;color:var(--slate);}
.gacct .gbk-note em{font-style:italic;color:var(--ink);}

/* history rows stay quiet */
.gacct .gbk-past .gbk-date .dd{color:var(--slate);}
.gacct .gbk-past .fee{color:var(--slate);}

/* actions row + ghost buttons */
.gacct .gbk-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center;border-top:1px solid var(--line);padding:9px 12px;background:var(--fog);}
.gacct .gbtn{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:.78rem;font-weight:600;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:8px 13px;cursor:pointer;transition:border-color .15s,background .15s;}
.gacct .gbtn:hover{border-color:var(--fairway-2);}
.gacct .gbtn svg{width:13px;height:13px;color:var(--fairway);flex:0 0 auto;}
.gacct .gbtn.danger{color:var(--red);}
.gacct .gbtn.danger svg{color:var(--red);}
.gacct .gbtn.danger:hover{border-color:var(--red);background:var(--red-bg);}
.gacct .gbtn.primary{background:var(--fairway);border-color:var(--fairway);color:#fff;}
.gacct .gbtn.primary svg{color:#fff;}
.gacct .gbtn.primary:hover{background:var(--fairway-2);border-color:var(--fairway-2);}

/* next-lesson scorecard (§7) — the wrapper stays borderless; the .gsc box
   carries the signature 1.5px ink frame, actions sit beneath it */
.gacct .gbk-next{border:none;box-shadow:none;background:transparent;border-radius:0;overflow:visible;}
.gacct .gsc{border:1.5px solid var(--ink);border-radius:var(--r-sm);overflow:hidden;background:var(--paper);box-shadow:var(--shadow);}
.gacct .gsc-h{background:var(--ink);color:#fff;font-family:var(--serif);font-size:.78rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;padding:9px 16px;display:flex;align-items:center;justify-content:space-between;gap:10px;}
.gacct .gsc-hr{display:inline-flex;align-items:center;gap:8px;letter-spacing:0;text-transform:none;font-family:var(--sans);}
.gacct .gsc-h .bi-status.confirmed{background:transparent;color:var(--green3);padding:0;border-radius:0;font-family:var(--mono);font-feature-settings:"tnum";font-size:.68rem;font-weight:500;letter-spacing:.06em;}
.gacct .gsc-h .sum{font-family:var(--mono);font-feature-settings:"tnum";font-size:.68rem;color:rgba(255,255,255,.75);}
.gacct .gsc-row{display:flex;align-items:baseline;gap:8px;padding:11px 16px;border-bottom:1px dashed var(--line);}
.gacct .gsc-row .k{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);flex:0 0 62px;}
.gacct .gsc-row .lead{flex:1;border-bottom:1px dotted var(--line);transform:translateY(-3px);min-width:14px;}
.gacct .gsc-row .v{font-family:var(--mono);font-feature-settings:"tnum";font-size:.84rem;font-weight:500;color:var(--ink);text-align:right;max-width:70%;}
.gacct .gsc-row .v.sans{font-family:var(--sans);font-weight:600;font-size:.84rem;}
.gacct .gsc-row .bi-date{margin-top:0;font-size:.84rem;color:var(--ink);}
.gacct .gsc-total{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 16px;background:var(--mint);border-top:1.5px solid var(--ink);}
.gacct .gsc-total .k{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--fairway);}
.gacct .gsc-total .k small{display:block;font-size:.68rem;font-weight:600;letter-spacing:.02em;color:var(--slate);text-transform:none;margin-top:2px;}
.gacct .gsc-total .v{font-family:var(--mono);font-feature-settings:"tnum";font-size:1.42rem;font-weight:500;color:var(--fairway);}
.gacct .gbk-next .gbk-acts{border-top:none;background:transparent;padding:10px 0 0;}

/* list eyebrow + "nothing confirmed yet" strip */
.gacct .gacct-list-eyebrow{display:flex;align-items:baseline;gap:8px;margin:4px 2px -4px;}
.gacct .gacct-list-eyebrow .n{font-family:var(--mono);font-feature-settings:"tnum";font-size:.68rem;font-weight:500;color:var(--fairway);}
.gacct .gacct-soft{font-size:.78rem;font-weight:600;color:var(--slate);background:var(--paper);border:1px dashed var(--line);border-radius:var(--r);padding:10px 14px;}

/* honest empty states */
.gacct .gacct-empty{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);text-align:center;padding:34px 20px 30px;}
.gacct .gacct-empty .seal{width:56px;height:56px;border-radius:50%;background:var(--mint);color:var(--fairway);display:flex;align-items:center;justify-content:center;margin:0 auto 13px;border:2px solid var(--fairway);}
.gacct .gacct-empty .seal svg{width:26px;height:26px;}
.gacct .gacct-empty h3{font-family:var(--serif);font-size:1.18rem;font-weight:600;color:var(--ink);}
.gacct .gacct-empty p{font-size:.84rem;font-weight:450;color:var(--slate);margin-top:5px;margin-bottom:0;line-height:1.55;}
.gacct .gacct-empty .cta{display:inline-flex;align-items:center;gap:7px;margin-top:15px;background:var(--fairway);color:#fff;border:none;cursor:pointer;font-family:var(--sans);font-weight:600;font-size:.84rem;padding:11px 20px;border-radius:30px;transition:background .15s;}
.gacct .gacct-empty .cta:hover{background:var(--fairway-2);}
.gacct .gacct-empty .cta svg{width:15px;height:15px;}
.gacct .gacct-empty.quiet{padding:24px 20px;box-shadow:none;}
.gacct .gacct-empty.quiet p{margin-top:0;}

/* the settings tab now lives in the narrower main column — stack its
   cards (coach payments renders .settings-grid outside .gacct, untouched) */
.gacct .settings-grid{grid-template-columns:1fr;}

/* how booking works — request → confirm → pay at the lesson */
.gacct-how{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:16px;}
.gacct-how .gacct-eyebrow{margin-bottom:12px;}
.gacct-how .step{display:flex;gap:11px;align-items:flex-start;padding:8px 0;}
.gacct-how .step + .step{border-top:1px dashed var(--line);}
.gacct-how .num{width:26px;height:26px;border-radius:50%;background:var(--mint);color:var(--fairway);font-family:var(--mono);font-feature-settings:"tnum";font-size:.78rem;display:flex;align-items:center;justify-content:center;flex:0 0 auto;margin-top:1px;}
.gacct-how .t1{font-weight:600;font-size:.84rem;color:var(--ink);}
.gacct-how .t2{font-size:.72rem;font-weight:450;color:var(--slate);line-height:1.5;margin-top:1px;}

@media(min-width:768px){
  .gacct-id{padding:18px 20px;}
  .gacct-hi{font-size:1.3rem;}
  .gacct .gbk-body .sess{font-size:.9rem;}
  .gacct .gsc-total .v{font-size:1.5rem;}
}
@media(min-width:980px){
  .gacct{display:grid;grid-template-columns:300px 1fr;gap:20px;align-items:start;}
  .gacct-rail{display:flex;flex-direction:column;gap:16px;position:sticky;top:20px;}
  .gacct-main{order:0;}
}
/* ↑ closing brace added 2026-07-13 — see the note above the profile ≥980 block. */

/* ═══ R3-CHECKOUT ═══
   New classes for the booking-request flow (steps, scorecard review,
   payment-truth, request-pending). Tokens per docs/design-system.md §2;
   scorecard per §7; amber = semantic pending only. */
.ck-nav-tag{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);list-style:none;}
.ck-sub{font-size:.84rem;font-weight:450;color:var(--slate);margin:0 0 16px;line-height:1.55;}
/* step 1 — lesson cards + required note */
.so-tick{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line);flex:0 0 auto;margin-top:2px;display:flex;align-items:center;justify-content:center;background:var(--paper);color:transparent;transition:background .15s,border-color .15s;}
.sess-opt.sel .so-tick{background:var(--fairway);border-color:var(--fairway);color:#fff;}
.so-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.so-name{font-weight:600;font-size:.9rem;color:var(--ink);}
.so-dur{font-size:.72rem;font-weight:500;color:var(--slate);}
.so-price{font-family:var(--mono);font-feature-settings:"tnum";font-size:1rem;font-weight:500;color:var(--ink);flex:0 0 auto;}
.ck-note-row{margin-top:18px;margin-bottom:0;}
.ck-note-row label{text-transform:none;letter-spacing:0;font-size:.84rem;color:var(--ink);margin-bottom:4px;}
.ck-req{color:var(--slate);font-weight:600;font-size:.72rem;}
.ck-help{font-size:.78rem;font-weight:500;color:var(--slate);margin:0 0 8px;}
.ck-count{display:block;text-align:right;font-family:var(--mono);font-feature-settings:"tnum";font-size:.68rem;color:var(--slate);margin-top:5px;}
/* step 2 — mini calendar header + slot label */
.ck-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.ck-cal-month{font-family:var(--serif);font-size:.95rem;font-weight:500;}
.ck-slots-label{font-size:.72rem;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.08em;margin:14px 0 7px;}
/* coach strip verified mark */
.ck-vf{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:600;color:var(--fairway);flex:0 0 auto;}
.ck-vf svg{flex:0 0 auto;}
/* step 3 — "Your round" scorecard (design-system §7) */
.ck-scorecard{border:1.5px solid var(--ink);border-radius:var(--r-sm);overflow:hidden;margin-bottom:14px;background:var(--paper);}
.ck-sc-h{background:var(--ink);color:#fff;font-family:var(--serif);font-size:.84rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;padding:9px 16px;text-align:center;}
.ck-sc-row{display:flex;align-items:baseline;gap:8px;padding:11px 14px;border-bottom:1px dashed var(--line);}
.ck-sc-row .k{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);flex:0 0 58px;}
.ck-sc-row .lead{flex:1;min-width:14px;border-bottom:1px dotted var(--line);transform:translateY(-3px);}
.ck-sc-row .v{font-family:var(--mono);font-feature-settings:"tnum";font-size:.84rem;font-weight:500;color:var(--ink);text-align:right;}
.ck-sc-total{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--mint);}
.ck-sc-total .k{font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--fairway);}
.ck-sc-total .v{font-family:var(--mono);font-feature-settings:"tnum";font-size:1.45rem;font-weight:500;color:var(--fairway);}
/* your note, quoted back (the golfer's own voice) */
.ck-note-card{border:1px solid var(--line);border-radius:var(--r);padding:13px 15px;margin-bottom:14px;}
.ck-eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);margin-bottom:6px;}
.ck-note-q{font-family:var(--serif);font-style:italic;font-weight:500;font-size:.95rem;line-height:1.6;color:var(--ink);}
.ck-note-edit{display:inline-block;margin-top:8px;font-size:.78rem;font-weight:600;color:var(--fairway);background:none;border:none;padding:0;cursor:pointer;font-family:var(--sans);}
.ck-note-edit:hover{text-decoration:underline;}
/* payment truth — the plain fact, no padlock theatre */
.ck-pay-truth{display:flex;gap:12px;align-items:flex-start;background:var(--fog);border:1px solid var(--line);border-radius:var(--r);padding:13px 15px;}
.ck-pt-ic{width:34px;height:34px;border-radius:50%;background:var(--mint);color:var(--fairway);flex:0 0 auto;display:flex;align-items:center;justify-content:center;}
.ck-pt-t{font-size:.9rem;font-weight:600;}
.ck-pt-b{font-size:.78rem;font-weight:450;color:var(--slate);line-height:1.55;margin-top:2px;}
.ck-pt-road{font-size:.72rem;font-weight:450;color:var(--slate);margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);line-height:1.5;}
/* request pending — amber is the semantic pending status, never decoration */
.ck-seal{width:58px;height:58px;border-radius:50%;background:var(--amber-bg);color:var(--amber);border:2px solid var(--amber);display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px;}
.ck-pend-title{font-family:var(--serif);font-size:1.55rem;font-weight:600;letter-spacing:-.01em;margin-bottom:10px;}
.ck-pend-chips{display:flex;justify-content:center;gap:8px;margin:0 0 14px;flex-wrap:wrap;}
.ck-chip-ref{font-family:var(--mono);font-feature-settings:"tnum";font-size:.78rem;font-weight:500;border:1px solid var(--line);border-radius:30px;padding:6px 13px;color:var(--ink);}
.ck-chip-status{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:var(--amber-bg);color:var(--amber);border-radius:30px;padding:7px 13px;}
.ck-pend-body{font-size:.9rem;font-weight:450;color:var(--slate);line-height:1.65;max-width:380px;margin:0 auto 22px;}
.ck-pend-body .ck-when{color:var(--ink);font-family:var(--mono);font-feature-settings:"tnum";font-weight:500;white-space:nowrap;}
.ck-pend-body strong{color:var(--ink);}
.ck-next-wrap{max-width:420px;margin:0 auto;text-align:left;}
.ck-next{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--paper);}
.ck-next-row{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-bottom:1px dashed var(--line);}
.ck-next-row:last-child{border-bottom:none;}
.ck-nx-ic{width:30px;height:30px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;}
.ck-nx-ic.is-done{background:var(--mint);color:var(--fairway);}
.ck-nx-ic.is-now{background:var(--amber-bg);color:var(--amber);}
.ck-nx-ic.is-later{background:var(--fog);color:var(--slate);}
.ck-nx-t{font-size:.84rem;font-weight:600;}
.ck-nx-b{font-size:.78rem;font-weight:450;color:var(--slate);line-height:1.5;margin-top:1px;}
@media(min-width:480px){
  .checkout-page-wrap{padding:28px 24px 60px;}
}
@media(min-width:768px){
  .checkout-page-wrap{padding:36px 24px 68px;}
  .form-card{padding:24px;}
}

/* ── WAITLIST (Phase 4E, Slice 1) ─────────────────────────────
   Checkout: taken-but-joinable slots + the join/manage panel under the grid.
   Coach calendar: per-slot waiter-count badges (+ the cancel-modal note).
   Golfer account: the "Your waitlist" section on My Bookings. */
.ts.taken.wl{cursor:pointer;text-decoration:none;border-style:dashed;opacity:.8;}
.ts.taken.wl:hover{background:var(--mint);color:var(--ink);border-color:var(--fairway);}
.ts.taken.wl-on{position:relative;border-style:solid;border-color:var(--fairway);color:var(--fairway);opacity:1;background:var(--mint);}
.ts.taken.wl-on::after{content:'';position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;background:var(--fairway);}
.ck-wl-hint{font-size:.72rem;font-weight:500;color:var(--slate);margin:10px 2px 0;}
.ck-wl-box{margin-top:12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--fog);padding:12px 14px;}
.ck-wl-box.joined{background:var(--mint);border-color:var(--fairway);}
.ck-wl-box .t{font-size:.84rem;font-weight:600;color:var(--ink);margin:0;}
.ck-wl-box .s{font-size:.78rem;font-weight:450;color:var(--slate);line-height:1.5;margin:4px 0 0;}
.ck-wl-box .acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
.ck-wl-btn{font-family:var(--sans);font-size:.78rem;font-weight:600;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:8px 14px;cursor:pointer;transition:border-color .15s,background .15s;}
.ck-wl-btn:hover{border-color:var(--fairway);}
.ck-wl-btn.primary{background:var(--fairway);border-color:var(--fairway);color:#fff;}
.ck-wl-btn.primary:hover{background:var(--fairway-2);}
.ck-wl-btn:disabled{opacity:.6;cursor:default;}
.slot-cell{position:relative;}
.slot-waiters{position:absolute;top:3px;right:3px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:var(--fairway);color:#fff;font-size:.68rem;font-weight:600;display:inline-flex;align-items:center;justify-content:center;line-height:1;}
.slot-cell.booked .slot-waiters{background:var(--paper);color:var(--fairway);}
.cal-dv-row .dv-waiters{font-size:.68rem;font-weight:600;color:var(--fairway);white-space:nowrap;}
.cancel-wl-note{margin-top:8px;font-size:.78rem;font-weight:600;color:var(--fairway);line-height:1.45;}
.gacct .gwl{margin-top:18px;}
.gacct .gwl-sub{font-size:.78rem;font-weight:450;color:var(--slate);line-height:1.5;margin:6px 2px 10px;}
.gacct .gwl-row{display:grid;grid-template-columns:auto 1fr auto;gap:4px 12px;align-items:center;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px 14px;margin-bottom:10px;}
.gacct .gwl-row.is-open{border-color:var(--fairway);}
.gacct .gwl-when{display:flex;flex-direction:column;min-width:86px;}
.gacct .gwl-when .t{font-size:.84rem;font-weight:600;color:var(--ink);}
.gacct .gwl-when .d{font-size:.72rem;font-weight:600;color:var(--slate);}
.gacct .gwl-body .who{font-size:.84rem;font-weight:600;color:var(--ink);}
.gacct .gwl-body .sub{font-size:.72rem;font-weight:500;color:var(--slate);line-height:1.45;margin-top:1px;}
.gacct .gwl-right{justify-self:end;}
.gacct .gwl-chip{display:inline-block;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--slate);background:var(--fog);border:1px solid var(--line);border-radius:12px;padding:3px 9px;}
.gacct .gwl-chip.open{color:#fff;background:var(--fairway);border-color:var(--fairway);}
.gacct .gwl-acts{grid-column:1 / -1;display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;padding-top:9px;border-top:1px solid var(--line);}
