/* ============================================================
   BUMS — Bright United Men's Shed · shared brand stylesheet
   Tokens + components (matches BUMS Brand System.html)
   ============================================================ */
:root{
  --timber-900:#3a2617; --timber-700:#6b4423; --timber-500:#97632f; --timber-300:#c79a5f;
  --amber-600:#c4761f; --amber-500:#d98a2b; --amber-300:#f0c277;
  --alpine-800:#244a30; --alpine-600:#2f6340; --alpine-500:#3a7a4d; --alpine-300:#7aa985;
  --ink:#241c14; --ink-soft:#574b3e; --ink-faint:#8a7c6c;
  --paper:#f6efe2; --paper-2:#fbf6ec; --card:#fffdf8; --line:#e4d8c3; --line-strong:#d2c2a4;
  --brand:var(--timber-700); --accent:var(--alpine-600); --highlight:var(--amber-500);
  --font-display:"Hanken Grotesk", system-ui, sans-serif;
  --font-body:"Source Sans 3", system-ui, sans-serif;
  --font-mono:"Spline Sans Mono", ui-monospace, monospace;
  --r-sm:8px; --r-md:14px; --r-lg:22px; --r-pill:999px;
  --shadow-sm:0 1px 2px rgba(58,38,23,.08), 0 2px 6px rgba(58,38,23,.06);
  --shadow-md:0 6px 18px rgba(58,38,23,.10), 0 2px 6px rgba(58,38,23,.07);
  --shadow-lg:0 18px 48px rgba(58,38,23,.16);
}
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);
  font-size:19px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:800;line-height:1.05;letter-spacing:-.01em;margin:0;color:var(--ink);}
p{margin:0 0 1em;text-wrap:pretty;}
a{color:var(--alpine-600);}
img{max-width:100%;display:block;}
.mono{font-family:var(--font-mono);}
.wrap{max-width:1180px;margin:0 auto;padding:0 28px;}
.section{padding:84px 0;}
.eyebrow{font-family:var(--font-mono);font-size:13px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;
  color:var(--amber-600);margin:0 0 14px;display:inline-flex;align-items:center;gap:12px;}
.eyebrow::before{content:"";width:26px;height:2px;background:var(--amber-500);border-radius:2px;}
.eyebrow.center{display:flex;justify-content:center;}
.sec-title{font-size:clamp(30px,4vw,46px);margin:0 0 16px;}
.sec-lede{font-size:21px;color:var(--ink-soft);max-width:64ch;margin:0 0 8px;}
.center{text-align:center;}
.center .sec-lede{margin-left:auto;margin-right:auto;}

/* buttons */
.btn{font-family:var(--font-display);font-weight:700;font-size:18px;border:0;border-radius:var(--r-pill);
  padding:15px 28px;cursor:pointer;display:inline-flex;align-items:center;gap:10px;text-decoration:none;line-height:1;
  transition:transform .12s ease, box-shadow .15s ease, background .15s ease;min-height:52px;}
.btn:active{transform:translateY(1px);}
.btn-primary{background:var(--alpine-600);color:#fff;box-shadow:0 2px 0 var(--alpine-800), var(--shadow-sm);}
.btn-primary:hover{background:var(--alpine-500);box-shadow:0 2px 0 var(--alpine-800), var(--shadow-md);}
.btn-amber{background:var(--amber-500);color:#2c1c08;box-shadow:0 2px 0 var(--amber-600), var(--shadow-sm);}
.btn-amber:hover{background:var(--amber-300);}
.btn-outline{background:transparent;color:var(--timber-700);box-shadow:inset 0 0 0 2px var(--timber-500);}
.btn-outline:hover{background:var(--timber-700);color:#fff;box-shadow:inset 0 0 0 2px var(--timber-700);}
.btn-light{background:#fbf6ec;color:var(--timber-700);box-shadow:var(--shadow-sm);}
.btn-light:hover{background:#fff;}
.btn-ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-strong);}
.btn-ghost:hover{background:var(--paper-2);}
.btn-lg{font-size:21px;padding:18px 34px;min-height:60px;}
.btn-sm{font-size:15px;padding:11px 18px;min-height:44px;}

/* badges */
.badge{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-display);font-weight:700;font-size:14px;
  padding:7px 14px;border-radius:var(--r-pill);}
.badge.wood{background:#f0e2cb;color:var(--timber-700);}
.badge.green{background:#dcebde;color:var(--alpine-800);}
.badge.amber{background:#f8e6c4;color:var(--amber-600);}
.badge .dot{width:8px;height:8px;border-radius:50%;background:currentColor;}

/* risk + induction status badges (equipment) */
.risk{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-display);font-weight:800;font-size:13px;
  letter-spacing:.02em;padding:6px 13px;border-radius:var(--r-pill);color:#fff;text-transform:uppercase;}
.risk .dot{width:8px;height:8px;border-radius:50%;background:#fff;}
.risk.low{background:var(--alpine-600);}   /* white on #2f6340 = 6.5:1 AA */
.risk.med{background:#b4541c;}              /* white on #b4541c = 4.6:1 AA */
.induction{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-display);font-weight:700;font-size:13px;
  padding:6px 12px;border-radius:var(--r-pill);background:#f0e2cb;color:var(--timber-700);}
.induction svg{width:14px;height:14px;}

/* photo placeholder */
.ph{background:
    repeating-linear-gradient(135deg, rgba(107,68,35,.10) 0 12px, rgba(107,68,35,.04) 12px 24px),
    var(--paper-2);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;text-align:center;
  color:var(--timber-700);border:1px dashed var(--line-strong);position:relative;}
.ph .cam{width:34px;height:34px;opacity:.55;}
.ph .lab{font-family:var(--font-mono);font-size:12.5px;letter-spacing:.03em;color:var(--timber-700);max-width:86%;line-height:1.45;}
.ph.dark{color:#f0e3cb;border-color:rgba(255,255,255,.25);
  background:repeating-linear-gradient(135deg, rgba(0,0,0,.18) 0 12px, rgba(0,0,0,.30) 12px 24px), #2c1d11;}
.ph.dark .lab{color:#e9dcc4;}

/* brand mark (circle + shed + mountain) */
.emblem-mark{color:var(--timber-700);}

/* ============================================================
   SHARED SITE CHROME — header / nav / footer
   (used across all pages: homepage, equipment, detail, etc.)
   ============================================================ */
.topbar{position:fixed;top:0;left:0;right:0;z-index:61;background:var(--timber-900);color:#e9dcc4;font-family:var(--font-mono);font-size:13px;letter-spacing:.04em;}
.topbar .wrap{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:42px;padding-top:6px;padding-bottom:6px;}
.topbar a{color:#f0c277;text-decoration:none;}
.topbar .left{display:flex;align-items:center;gap:22px;flex-wrap:wrap;}
.topbar .left span,.topbar .left .loc{display:inline-flex;align-items:center;gap:8px;}
.topbar .left .loc{text-decoration:none;}
.topbar .left svg{width:15px;height:15px;color:#c79a5f;}
.topbar .right{display:inline-flex;align-items:center;gap:8px;}

.siteheader{position:fixed;top:var(--tb-h);left:0;right:0;z-index:60;background:#fbf6ec;
  border-bottom:1px solid var(--line);}
/* Fixed topbar + header → offset the page. The heights are known in CSS so the header sits
   correctly on the very first paint (no overlap/gap/jump while the page loads). The topbar
   grows to 50px at <=560px because the address collapses to a tappable pin. JS still
   fine-tunes the exact value on scroll/resize, but it now matches, so nothing shifts. */
:root{ --tb-h:42px; --nav-h:79px; }
@media (max-width:560px){ :root{ --tb-h:50px; } }
body{padding-top:calc(var(--tb-h) + var(--nav-h));}
/* On scroll-down the brown topbar slides up out of view + the nav fades; on
   scroll-up / at the top the topbar slides back and the nav is solid. */
.topbar{transition:opacity .3s ease, transform .3s ease;}
.siteheader{transition:opacity .35s ease, top .3s ease;}
body.nav-faded .siteheader{opacity:.55;}
.siteheader .wrap{display:flex;align-items:center;gap:18px;min-height:78px;}
.logo{display:flex;align-items:center;gap:13px;text-decoration:none;color:var(--ink);flex:0 0 auto;}
.logo .mark{width:46px;height:46px;color:var(--timber-700);flex:0 0 auto;}
.logo .txt{font-family:var(--font-display);font-weight:900;font-size:19px;line-height:1.05;letter-spacing:-.01em;}
.logo .txt small{display:block;font-family:var(--font-mono);font-weight:400;font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-faint);margin-top:2px;}
.mainnav{display:flex;align-items:center;gap:3px;margin-left:auto;}
.mainnav a:not(.btn){font-family:var(--font-display);font-weight:600;font-size:15px;color:var(--ink-soft);text-decoration:none;
  padding:9px 11px;border-radius:var(--r-sm);line-height:1;white-space:nowrap;}
.mainnav a:not(.btn):hover{color:var(--ink);background:var(--paper-2);}
.mainnav a.active:not(.btn){color:var(--alpine-600);font-weight:800;}
.header-cta{margin-left:10px;flex:0 0 auto;}
.menu-btn{display:none;margin-left:auto;align-items:center;justify-content:center;background:transparent;
  border:0;padding:6px;color:var(--ink);cursor:pointer;border-radius:var(--r-sm);min-height:44px;min-width:44px;}
.menu-btn:hover{background:var(--paper-2);}
.menu-btn svg{width:30px;height:30px;display:block;}

.foot{background:#1c1209;color:#cbb38c;padding:64px 0 0;}
.foot-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.4fr;gap:40px;padding-bottom:48px;border-bottom:1px solid rgba(255,255,255,.10);}
.foot h4{font-family:var(--font-display);font-weight:800;font-size:16px;color:#f0e3cb;margin-bottom:16px;letter-spacing:.02em;}
.foot a{color:#cbb38c;text-decoration:none;}
.foot a:hover{color:#f0c277;}
.foot ul{list-style:none;margin:0;padding:0;}
.foot li{padding:6px 0;font-size:15.5px;}
.foot .fbrand .logo .txt{color:#f0e3cb;}
.foot .fbrand .logo .txt small{color:#9a8a6c;}
.foot .fbrand p{font-size:15px;color:#a8946f;margin:16px 0 0;max-width:34ch;line-height:1.55;}
.foot .mono-line{font-family:var(--font-mono);font-size:13px;display:flex;align-items:flex-start;gap:10px;padding:6px 0;line-height:1.5;}
.foot .mono-line svg{width:16px;height:16px;color:#c79a5f;flex:0 0 auto;margin-top:3px;}
.foot .subform{display:flex;gap:10px;flex-wrap:wrap;}
.foot .subform .input{min-width:0;flex:1;}
.foot .social{display:flex;gap:10px;margin-top:14px;}
.foot .social a{width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.18);display:grid;place-items:center;}
.foot .social svg{width:18px;height:18px;}
.foot-sup{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:24px 0;border-bottom:1px solid rgba(255,255,255,.10);font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:#9a8a6c;}
.foot-sup .chips{display:flex;gap:10px;flex-wrap:wrap;}
.foot-sup .chips span{border:1px solid rgba(255,255,255,.16);border-radius:var(--r-pill);padding:6px 14px;color:#cbb38c;}
.acknow{padding:26px 0;font-size:14.5px;color:#a8946f;line-height:1.6;display:flex;gap:14px;align-items:flex-start;}
.acknow .gum{width:30px;height:30px;flex:0 0 auto;color:#6b8a5a;margin-top:2px;}
.foot-bottom{padding:22px 0 40px;display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;
  font-family:var(--font-mono);font-size:12.5px;color:#8a7656;}
.foot-bottom a{color:#a8946f;}

/* NOTE: high-specificity (.siteheader-prefixed) so these win even if a page
   carries a duplicate inline copy of the header CSS. */
@media (max-width:1080px){
  .siteheader .mainnav{display:none;}
  .siteheader .menu-btn{display:inline-flex;}
  .siteheader .header-cta{display:none;}      /* CTA moves into the menu on mobile */
  .siteheader .logo .txt{font-size:17px;}
  .siteheader .logo .logo-img{height:42px;}
}
@media (max-width:480px){
  .siteheader .logo .txt{font-size:14.5px;line-height:1.1;}
  .siteheader .logo .txt small{font-size:9.5px;letter-spacing:.1em;}  /* keep subtitle, just smaller */
  .siteheader .logo .logo-img{height:36px;}
}
@media (max-width:860px){
  .foot-top{grid-template-columns:1fr 1fr;gap:30px;}
}
@media (max-width:560px){
  .topbar .left span.hide-sm{display:none;}
  .topbar .left .loc .loc-text{display:none;}      /* collapse address to a tappable pin */
  .topbar .left .loc{min-height:38px;min-width:38px;justify-content:center;}
  .foot-top{grid-template-columns:1fr;}
}

/* ============================================================
   FOOTER v2 — shared across all pages (brand+newsletter / explore /
   visit / bottom bar). Appended so it supersedes the legacy .foot-top
   block above. Lifted from the homepage so every page matches.
   ============================================================ */
.foot{background:#1c1209;color:#cbb38c;padding:0;}
.foot-inner{max-width:1100px;margin:0 auto;padding:0 28px;}
.foot a{color:#cbb38c;text-decoration:none;}
.foot a:hover{color:#f0c277;}
.foot ul{list-style:none;margin:0;padding:0;}
.foot h4{font-family:var(--font-display);font-weight:800;font-size:21px;color:#f0e3cb;margin:0 0 18px;letter-spacing:.01em;}
/* ROW 1 — brand (left) + newsletter (right), 50/50 */
.foot-row1{border-bottom:1px solid rgba(255,255,255,.10);}
.foot-row1 .foot-inner{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;padding-top:52px;padding-bottom:52px;}
.fbrand .logo{display:flex;align-items:center;gap:14px;margin-bottom:18px;text-decoration:none;}
.fbrand .logo .mark{width:56px;height:56px;color:#c79a5f;flex:0 0 auto;}
.fbrand .logo .name{font-family:var(--font-display);font-weight:900;font-size:24px;color:#f0e3cb;letter-spacing:-.01em;line-height:1.1;}
.fbrand p{font-size:18px;color:#a8946f;margin:0;max-width:48ch;line-height:1.55;}
.foot-news h3{font-family:var(--font-display);font-weight:800;font-size:25px;color:#f0e3cb;margin:0 0 6px;letter-spacing:-.01em;}
.foot-news p{font-size:18px;color:#a8946f;margin:0 0 18px;}
.fn-form{display:flex;gap:12px;align-items:center;}
.fn-form .input{flex:1 1 320px;max-width:320px;min-width:0;min-height:54px;font-size:18px;font-family:var(--font-body);
  border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:14px 18px;background:#fff;color:var(--ink);}
.fn-form .input::placeholder{color:#9a8a74;}
.fn-form .input:focus{outline:3px solid var(--amber-300);outline-offset:1px;border-color:var(--amber-500);}
.fn-form .btn{min-height:54px;flex:0 0 auto;white-space:nowrap;}
/* ROW 2 — Explore links in a single horizontal row */
.foot-explore{border-bottom:1px solid rgba(255,255,255,.10);}
.foot-explore .foot-inner{padding-top:26px;padding-bottom:26px;display:flex;align-items:center;justify-content:center;gap:10px 18px;flex-wrap:wrap;}
.foot-explore .lbl{font-family:var(--font-mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:#9a8a6c;}
.foot-explore nav{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 6px;}
.foot-explore nav a{display:inline-flex;align-items:center;min-height:48px;padding:0 16px;font-family:var(--font-display);
  font-weight:700;font-size:18px;color:#e9dcc4;border-radius:var(--r-sm);white-space:nowrap;}
.foot-explore nav a:hover{color:#f0c277;background:rgba(255,255,255,.05);}
/* ROW 3 — Visit & Hours, centered */
.foot-visit{border-bottom:1px solid rgba(255,255,255,.10);}
.foot-visit .foot-inner{max-width:760px;padding-top:46px;padding-bottom:46px;text-align:center;}
.foot-visit h4{margin-bottom:20px;}
.foot-visit .hours{display:flex;flex-direction:column;max-width:430px;width:100%;margin:0 auto 24px;text-align:left;}
.foot-visit .hours li{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding:12px 0;
  border-bottom:1px solid rgba(255,255,255,.08);font-size:18px;}
.foot-visit .hours li .d{font-family:var(--font-display);font-weight:700;color:#e9dcc4;}
.foot-visit .hours li .h{font-family:var(--font-mono);font-size:15.5px;color:#a8946f;text-align:right;white-space:nowrap;}
.foot-visit .addr{display:block;font-size:18px;color:#e9dcc4;line-height:1.5;margin:0 0 16px;}
.foot-visit .addr .sub{color:#a8946f;}
.foot-visit .fphone{display:inline-flex;align-items:center;gap:11px;font-family:var(--font-display);font-weight:800;
  font-size:23px;color:#f0e3cb;min-height:44px;text-decoration:none;}
.foot-visit .fphone:hover{color:#f0c277;}
.foot-visit .fphone svg{width:23px;height:23px;color:#c79a5f;flex:0 0 auto;}
/* BOTTOM BAR */
.foot-bar .foot-inner{padding-top:30px;padding-bottom:38px;}
.foot-sup{display:flex;flex-direction:column;align-items:flex-start;gap:16px;padding-bottom:24px;border-bottom:1px solid rgba(255,255,255,.10);}
.foot-sup .lbl{font-family:var(--font-mono);font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:#9a8a6c;flex:0 0 auto;}
.foot-sup .logos{display:flex;gap:12px;flex-wrap:wrap;align-items:center;}
.foot-sup .lchip{background:#fff;border-radius:10px;padding:9px 14px;height:56px;display:inline-flex;align-items:center;justify-content:center;}
.foot-sup .lchip img{max-height:36px;max-width:130px;width:auto;height:auto;display:block;}
.foot-sup .social{display:flex;gap:10px;margin-top:4px;}
.foot-sup .social a{width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.18);display:grid;place-items:center;}
.foot-sup .social svg{width:18px;height:18px;}
.foot-visit .addr strong{color:#f0e3cb;}
/* supporter logos: tidy 2-up grid on phones instead of an uneven wrap */
@media (max-width:560px){
  .foot-inner{padding:0 18px;}
  .foot-sup .logos{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;}
  .foot-sup .lchip{width:100%;height:60px;}
  .fbrand .logo .name{font-size:19px;}        /* was 24px — overflowed narrow phones */
  .fbrand p{font-size:16px;}
  .fn-form{flex-wrap:wrap;}                    /* stack: input full width, button below */
  .fn-form .input{flex:1 1 100%;max-width:none;}
  .fn-form .btn{width:100%;}
}
.acknow{padding:24px 0;font-size:16px;color:#a8946f;line-height:1.6;display:flex;gap:14px;align-items:flex-start;border-bottom:1px solid rgba(255,255,255,.10);}
.acknow .gum{width:30px;height:30px;flex:0 0 auto;color:#6b8a5a;margin-top:2px;}
.foot-bottom{padding-top:22px;display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;font-family:var(--font-mono);font-size:13.5px;color:#8a7656;}
.foot-bottom a{color:#a8946f;}
@media (max-width:860px){ .foot-row1 .foot-inner{grid-template-columns:1fr;gap:38px;} }

/* ============================================================
   MOBILE NAV — the .menu-btn toggles .nav-open on the header
   ============================================================ */
@media (max-width:1080px){
  /* Full-height overlay: the panel is fixed and fills from just under the header
     (bums.js sets `top` to the live header bottom on open) down to the bottom of
     the screen. Opaque, so no page content bleeds through; links are centred in
     the space and the panel scrolls internally if they ever outgrow it. */
  .siteheader.nav-open .mainnav{display:flex;flex-direction:column;justify-content:center;gap:4px;
    position:fixed;left:0;right:0;bottom:0;top:120px;z-index:55;
    background:var(--paper-2);box-shadow:var(--shadow-md);padding:24px 28px 32px;margin-left:0;
    overflow-y:auto;overscroll-behavior:contain;}
  .siteheader.nav-open .mainnav a:not(.btn){padding:15px 8px;font-size:20px;text-align:center;}
  .siteheader.nav-open .mainnav a.active::after{display:none;}
  /* hamburger becomes an ✕ while the menu is open (glyph swap, markup unchanged) */
  .siteheader.nav-open .menu-btn i::before{content:"\f00d";}
  /* Join + Login sit side by side as the last row of the open menu. They are
     real design-system buttons (.btn-primary / .btn-outline) — the :not(.btn)
     exemptions above keep the nav-link colour/padding off them — so here we
     only handle layout: split the row evenly and tighten for two-across. */
  .siteheader.nav-open .mainnav .nav-actions{display:flex;flex-direction:row;justify-content:center;gap:12px;
    margin-top:20px;padding-top:20px;border-top:1px solid var(--line);}
  /* Size each button to its own content (not forced-equal) so the longer "Member Login"
     isn't squeezed against its edges; comfortable padding, kept on one line. */
  .siteheader.nav-open .mainnav .nav-actions .btn{flex:0 1 auto;min-width:0;margin:0;white-space:nowrap;
    justify-content:center;padding:14px 22px;font-size:15px;min-height:54px;}
  .siteheader.nav-open .mainnav .nav-actions .nav-login i{margin-right:4px;}
}
/* The Join/Login pair only exists inside the open mobile menu — hidden otherwise
   (desktop keeps Join in the topbar CTA and Login in the brown topbar). */
.siteheader .mainnav .nav-actions{display:none;}

/* Real logo image (replaces the inline SVG mark when present) */
.logo .logo-img{height:46px;width:auto;display:block;flex:0 0 auto;}
.fbrand .logo .logo-img{height:56px;}
/* Header brand: full lockup on desktop, compact BUMS mark on small screens. */
.logo .logo-lockup{height:52px;width:auto;display:block;flex:0 0 auto;}
/* Full lockup at every size; just scaled down a touch on small phones. */
@media (max-width:620px){ .logo .logo-lockup{height:44px;} }
@media (max-width:380px){ .logo .logo-lockup{height:38px;} }

/* Filled photo slots — stock images dropped into the placeholder boxes
   (temporary Pexels imagery; swap for authentic BUMS photos later) */
.ph{overflow:hidden;}
.ph .ph-fill{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.ph:has(.ph-fill){border:0;background:none;}

/* ===== Font Awesome icon sizing (replaces the old inline SVG sizes) ===== */
.topbar .left i{font-size:13px;color:#c79a5f;}
.foot-visit .fphone i{font-size:19px;color:#c79a5f;}
.foot-sup .social a i{font-size:17px;color:#cbb38c;}
.foot-sup .social a:hover i{color:#f0c277;}
.menu-btn i{font-size:24px;line-height:1;}
.qcard .ic i{font-size:22px;}
.hero .phone i{font-size:20px;color:var(--amber-300);}
.mainnav .nav-login i{font-size:.85em;margin-right:5px;}
/* Topbar is desktop-only — on mobile only the white nav pins (Chrome-safe). */
/* On desktop the topbar shows Member Login, so hide the nav copy there. */
@media (min-width:1081px){ .siteheader .mainnav .nav-login{display:none;} }

/* ============================================================
   SCROLL REVEALS — blocks rise + fade in once as they enter view.
   bums.js adds .is-visible via IntersectionObserver; group children
   get a staggered transition-delay for a cascade. Content is never
   left hidden: reduced-motion users skip it (rule below), no-JS users
   get the <noscript> override in the page <head>, and bums.js reveals
   everything outright if IntersectionObserver is unavailable.
   Only opacity/transform on normal-flow blocks — never the fixed
   header — so this stays clear of the Chrome sticky-header bug.
   ============================================================ */
.reveal, .reveal-item{
  opacity:0;
  transform:translateY(24px);
  transition:opacity .7s ease, transform .7s cubic-bezier(.34,1.12,.45,1);
  will-change:opacity, transform;
}
.reveal.is-visible,
.reveal-group.is-visible .reveal-item{
  opacity:1;
  transform:none;
}
@media (prefers-reduced-motion: reduce){
  .reveal, .reveal-item{ opacity:1; transform:none; transition:none; }
}

/* Newsletter signup (Get The BUMS Drum -> FluentCRM) */
.hpot{ position:absolute !important; left:-9999px; width:1px; height:1px; overflow:hidden; }
.subnote{ border-radius:10px; padding:11px 15px; margin:0 0 14px; font-size:15px; line-height:1.4; }
.subnote.ok{ background:#e7f3ea; border:1px solid #bcd3bf; color:#2f5d3a; }
.subnote.err{ background:#fbeeee; border:1px solid #e6c4c0; color:#9a4030; }

/* News cards: whole card clickable; emblem fallback when a post has no photo. */
.ncard{position:relative;}
.ncard .more::after{content:"";position:absolute;inset:0;}
.ncard:focus-within{outline:3px solid var(--alpine-600);outline-offset:3px;}
.ncard .ph .ph-fill{width:100%;height:100%;object-fit:cover;display:block;}
.ncard .ph.ncard-fallback{display:grid;place-items:center;background:#f3ecd9;}
.ncard .ph.ncard-fallback img{width:96px;height:auto;opacity:.92;}

/* Shown in place of the signup form for logged-in members. */
.subnote-member{font-size:16.5px;margin:0;opacity:.95;}
.subnote-member a{color:inherit;font-weight:700;text-decoration:underline;}

/* Breadcrumb bar (machine pages, posts, Drum editions). */
.crumbbar{background:var(--paper-2);border-bottom:1px solid var(--line);}
.crumbbar .wrap{padding:16px 28px;font-family:var(--font-mono);font-size:13.5px;letter-spacing:.03em;color:var(--ink-faint);}
.crumbbar a{color:var(--timber-700);text-decoration:none;}
.crumbbar a:hover{text-decoration:underline;}
.crumbbar .here{color:var(--ink);}

/* Fullscreen media lightbox (machine decks + article galleries), built by JS. */
.bums-lb{position:fixed;inset:0;z-index:99999;background:rgba(20,13,7,.94);display:flex;align-items:center;justify-content:center;}
.bums-lb .lb-media{display:contents;}
.bums-lb img,.bums-lb video{max-width:calc(100vw - 130px);max-height:88vh;border-radius:10px;box-shadow:0 24px 70px rgba(0,0,0,.55);display:block;}
.bums-lb .lb-btn{position:absolute;display:grid;place-items:center;border:0;cursor:pointer;border-radius:50%;
  background:rgba(255,255,255,.1);color:#f0e3cb;width:48px;height:48px;transition:background .15s;}
.bums-lb .lb-btn:hover{background:var(--amber-500);color:#2c1c08;}
.bums-lb .lb-prev{left:14px;top:50%;transform:translateY(-50%);}
.bums-lb .lb-next{right:14px;top:50%;transform:translateY(-50%);}
.bums-lb .lb-close{top:14px;right:14px;width:42px;height:42px;}
.bums-lb .lb-count{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);
  font-family:var(--font-mono);font-size:13px;letter-spacing:.06em;color:#e8d9bd;}
@media (max-width:620px){
  .bums-lb img,.bums-lb video{max-width:100vw;max-height:78vh;border-radius:0;}
  .bums-lb .lb-prev{left:8px;} .bums-lb .lb-next{right:8px;}
}
.post-gallery img{cursor:zoom-in;}

/* Card-surcharge note on the membership checkout. */
.bums-fee-note{margin:8px 0 0;font-size:14.5px;color:var(--ink-soft);line-height:1.5;}
