/* ── NAV — v2 chrome (spec §5/§6; reference: home-v2b.html) ──
   Mobile-first: burger + dropdown panel below 768px, inline links above. */
nav{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:12px 16px;
  background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);
  flex-shrink:0;position:relative;z-index:50;}
/* Wordmark — Verdis logotype (design-system.md §1): Fraunces soft-serif at a refined
   logotype weight, base Fairway green, leading letter in Verdis-green via ::first-letter
   (no markup dependency — colours whichever letter renders first). */
.logo{font-family:var(--serif);font-size:1.35rem;font-weight:560;letter-spacing:-.02em;color:var(--fairway);cursor:pointer;white-space:nowrap;}
.logo b{font-weight:inherit;color:inherit;}   /* neutralise legacy <b> split — wordmark is now one Fairway tone */
.logo::first-letter{color:var(--verdis);}     /* leading V in Verdis-green #2F9E67 */
.nav-burger{display:flex;align-items:center;justify-content:center;width:40px;height:40px;flex:0 0 auto;
  border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);cursor:pointer;}
.nav-burger svg{width:20px;height:20px;}
nav ul{display:none;list-style:none;}
nav.menu-open ul{display:flex;flex-direction:column;align-items:stretch;gap:2px;
  position:absolute;top:100%;left:0;right:0;background:var(--paper);
  border-bottom:1px solid var(--line);box-shadow:var(--shadow);padding:10px 16px 16px;z-index:60;}
nav ul li{cursor:pointer;font-size:.84rem;font-weight:600;color:var(--slate);transition:color .15s;padding:11px 2px;}
nav.menu-open ul li{border-bottom:1px dashed var(--line);}
nav.menu-open ul li:last-child{border-bottom:none;}
nav ul li:hover{color:var(--ink);}
nav ul li.active-nav{color:var(--fairway);}
.nav-cta{background:var(--fairway)!important;color:#fff!important;padding:10px 18px;border-radius:30px;
  font-size:.84rem;font-weight:600!important;transition:background .18s;text-align:center;}
.nav-cta:hover{background:var(--fairway-2)!important;}
nav.menu-open .nav-cta{margin-top:8px;}
.nav-cta-ghost{border:none!important;color:var(--ink)!important;padding:10px 2px!important;
  border-radius:30px!important;font-weight:600!important;transition:color .15s!important;}
.nav-cta-ghost:hover{color:var(--fairway)!important;}
/* Nav avatar prefers the user's photo: initials behind an absolutely-
   positioned cover img (DS §9) — onerror removes a broken photo and the
   initials tile shows through. */
.nav-avatar{width:36px;height:36px;border-radius:12px;background:var(--fairway);color:#fff;font-weight:600;
  font-size:.78rem;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;
  position:relative;overflow:hidden;}
.nav-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
/* Installed to the home screen there is no address bar and no reload button,
   so this is the only way to restart the app. Quiet until you look for it. */
.nav-refresh{width:30px;height:30px;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  background:transparent;border:1px solid var(--line);border-radius:50%;color:var(--slate);cursor:pointer;
  padding:0;transition:color .15s,border-color .15s;}
.nav-refresh svg{width:15px;height:15px;}
.nav-refresh:hover{color:var(--fairway);border-color:var(--fairway);}
.nav-refresh:active{transform:scale(.94);}
/* Offline notice — the app still opens from the service-worker cache, so
   without this it just looks empty and broken. Pinned to the bottom so it
   never covers the nav or a sheet's actions. */
#offlineBar{position:fixed;left:12px;right:12px;bottom:12px;z-index:9999;
  background:var(--ink);color:#fff;border-radius:12px;padding:11px 14px;
  font-size:.78rem;font-weight:500;line-height:1.45;text-align:center;
  box-shadow:0 6px 24px rgba(0,0,0,.22);}
@media(min-width:768px){#offlineBar{left:auto;right:20px;bottom:20px;max-width:360px;text-align:left;}}
/* Unread-messages count on the Messages nav item — amber mono badge, the
   same "pending / needs action" language the tee sheet uses. */
.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;
  padding:0 5px;margin-left:7px;border-radius:30px;background:var(--amber);color:#fff;
  font-family:var(--mono);font-size:.66rem;font-weight:500;font-feature-settings:"tnum";vertical-align:1px;}
.nav-locked{opacity:.4;cursor:not-allowed!important;pointer-events:none;}
@media(min-width:768px){
  nav{padding:13px 28px;}
  .nav-burger{display:none;}
  nav ul, nav.menu-open ul{display:flex;flex-direction:row;align-items:center;gap:20px;
    position:static;background:none;border-bottom:none;box-shadow:none;padding:0;}
  nav.menu-open ul li{border-bottom:none;}
  nav ul li{padding:4px 0;}
  nav.menu-open .nav-cta{margin-top:0;}
  .nav-cta-ghost{padding:10px 12px!important;}
}
@media(min-width:980px){
  nav{padding:13px 36px;}
}

/* ── FOOTER — v2 chrome (ink band; markup normalised to .site-footer) ── */
.site-footer{background:var(--ink);color:rgba(255,255,255,.65);padding:30px 16px;font-size:.78rem;font-weight:500;}
.site-footer span[onclick]{cursor:pointer;transition:color .15s;}
.site-footer span[onclick]:hover{color:#fff;}
/* E-commerce identity small print (Trading Disclosures Regs) — full-width row
   inside each footer's flex container, one per .site-footer. */
.footer-legal{width:100%;margin-top:10px;padding-top:12px;border-top:1px solid rgba(255,255,255,.12);font-size:.68rem;font-weight:500;color:rgba(255,255,255,.45);}
/* Footer wordmark on the dark ink band — same Fraunces logotype, but reads in Paper
   with the leading V in Bright #43C182 for on-dark contrast (design-system.md §1). */
.footer-brand{font-family:var(--serif);font-size:1.3rem;font-weight:560;letter-spacing:-.02em;color:var(--fog);margin-bottom:4px;}
.footer-brand b{font-weight:inherit;color:inherit;}   /* neutralise legacy <b> split */
.footer-brand::first-letter{color:var(--bright);}     /* leading V in Bright #43C182 on dark */
@media(min-width:768px){
  .site-footer{padding:36px 28px;}
}

.hero-badge{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.2);color:var(--sage);font-size:.78rem;font-weight:600;padding:6px 14px;border-radius:30px;margin-bottom:18px;}
.btn-white{background:#fff;color:var(--ink);padding:13px 26px;border:none;border-radius:30px;font-family:var(--sans);font-size:.9rem;font-weight:600;cursor:pointer;transition:transform .08s,box-shadow .2s;box-shadow:0 4px 16px rgba(21,36,29,.18);}
.btn-white:hover{box-shadow:0 8px 24px rgba(21,36,29,.24);}
.btn-white:active{transform:translateY(1px);}
.btn-ghost{background:transparent;color:#fff;padding:12px 26px;border:1px solid rgba(255,255,255,.45);border-radius:30px;font-family:var(--sans);font-size:.9rem;font-weight:600;cursor:pointer;transition:border-color .2s;}
.btn-ghost:hover{border-color:#fff;}

/* ── SEARCH BOX + CHIPS (shared; used by #homeSearch) ── */
.search-box{display:flex;gap:10px;flex-wrap:wrap;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:12px 16px;box-shadow:var(--shadow);margin-bottom:14px;align-items:center;}
.search-box input,.search-box select{border:none;outline:none;font-family:var(--sans);font-size:.9rem;font-weight:600;color:var(--ink);background:transparent;flex:1;min-width:120px;}
.search-box input::placeholder{color:var(--slate);font-weight:500;}
.sdiv{width:1px;background:var(--line);align-self:stretch;}
.search-go{background:var(--fairway);color:#fff;border:none;padding:11px 22px;border-radius:30px;font-family:var(--sans);font-size:.84rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .18s;}
.search-go:hover{background:var(--fairway-2);}
.chips{display:flex;gap:8px;flex-wrap:wrap;}
.chip{padding:8px 15px;border-radius:30px;border:1px solid var(--line);background:var(--paper);font-size:.78rem;color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s,color .15s;font-weight:600;}
.chip:hover{border-color:var(--slate);}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink);}

/* ── LEDGER RULE — "Well kept" signature #1: a section header set as a scorecard
   entry. <div class="led"><span class="k">Kicker</span><span class="rule"></span>
   <span class="n">figure</span></div>. The .n figure is OPTIONAL and must be
   computed from the page's own data (§10) — never typed as copy. ── */
.led{display:flex;align-items:baseline;gap:14px;margin-bottom:6px;}
.led .k{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);white-space:nowrap;}
.led .rule{flex:1;border-bottom:1px solid var(--line);transform:translateY(-4px);}
.led .n{font-family:var(--mono);font-feature-settings:"tnum";font-size:.78rem;color:var(--fairway);white-space:nowrap;}
.led--dark .k{color:var(--sage);}
.led--dark .rule{border-color:rgba(255,255,255,.18);}
.led--dark .n{color:var(--bright);}

/* ── COACH CARDS (shared grid; #coachGrid) ──
   "Well kept": the green gradient slab + dot-matrix are gone. Card tops are a
   Mist ground carrying the horizon line (Mist, not fog — fog matches the page
   background and reads as a hole); the avatar tile on it is white with
   Fraunces initials in Fairway — typographic, honest about having no photo. */
.sec-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:22px;}
.sec-head h3{font-family:var(--serif);font-size:1.45rem;letter-spacing:-.012em;}
.sec-head a{color:var(--fairway);font-size:.84rem;font-weight:600;cursor:pointer;}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:20px;}
.card{background:var(--paper);border:1px solid var(--line);border-radius:16px;overflow:hidden;cursor:pointer;box-shadow:var(--shadow);transition:transform .12s,box-shadow .12s;}
.card:hover{transform:translateY(-2px);box-shadow:0 2px 4px rgba(21,36,29,.05),0 14px 32px rgba(21,36,29,.1);}
.card-top{height:64px;position:relative;background:var(--mint) var(--horizon-light) bottom left / 130% 44px no-repeat;border-bottom:1px solid var(--line);}
  /* 130% width crops the flag off-canvas: cards get the contour only — the
     flag stays reserved for hero grounds, dark bands and empty states. */
.avatar{width:48px;height:48px;border-radius:12px;border:1px solid var(--line);background:var(--paper);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:560;font-size:1.05rem;color:var(--fairway);position:absolute;bottom:-18px;left:16px;overflow:hidden;background-clip:padding-box;}
/* .badge (gold card corner) deleted in R3-pricing — R3-search removed the last markup that emitted it; --gold stays ratings-only per the design system. */
.card-body{padding:28px 16px 14px;}
.cname{font-family:var(--serif);font-weight:600;font-size:1.1rem;margin-bottom:3px;}
.ctitle{font-size:.78rem;color:var(--slate);font-weight:500;margin-bottom:8px;}
.cloc{font-size:.78rem;color:var(--ink);font-weight:600;margin-bottom:9px;}
.tags{display:flex;flex-wrap:wrap;gap:6px;}
.tag{font-size:.72rem;padding:4px 10px;border-radius:20px;border:1px solid var(--line);color:var(--slate);font-weight:600;}
.card-foot{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;border-top:1px solid var(--line);}
.stars{font-size:.78rem;color:var(--slate);display:flex;align-items:center;gap:3px;}
.s{color:var(--flag);}
.price{font-family:var(--mono);font-feature-settings:"tnum";font-weight:500;font-size:1rem;}
.price small{font-family:var(--sans);font-size:.72rem;color:var(--slate);font-weight:600;}
.book-btn{background:var(--fairway);color:#fff;border:none;padding:8px 16px;border-radius:30px;font-family:var(--sans);font-size:.78rem;font-weight:600;cursor:pointer;transition:background .18s;}
.book-btn:hover{background:var(--fairway-2);}

