/* ============================================================
   Bowron Lake Canoe — "Cariboo" design system.
   Core tokens first: change --primary / --secondary / --base
   and the rest of the palette follows.
   ============================================================ */

@font-face{font-family:Sora;src:url(../fonts/sora-var.woff2)format("woff2");font-weight:600 800;font-style:normal;font-display:swap}
@font-face{font-family:"Public Sans";src:url(../fonts/public-sans-var.woff2)format("woff2");font-weight:400 600;font-style:normal;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url(../fonts/jetbrains-mono-var.woff2)format("woff2");font-weight:500 700;font-style:normal;font-display:swap}

:root{
  /* ---- CORE: the three-line palette edit ---- */
  --primary:#2AA5D8;
  --secondary:#10312B;
  --base:#4E5348;

  /* ---- derived from --primary ---- */
  --primary-hover:#4DB8E2;
  --primary-deep:#1E8FC0;
  --primary-light:#7FD0EE;
  --on-primary:#07222C;

  /* ---- derived from --secondary ---- */
  --secondary-dark:#0B2420;
  --secondary-darker:#0A211C;
  --secondary-darkest:#071D19;
  --heading:#14342C;
  --heading-soft:#1F332C;
  --heading-muted:#3E5049;

  /* ---- surfaces ---- */
  --surface:#F2EDE2;
  --surface-deep:#EDE6D8;
  --surface-tint:#F5F1E6;
  --surface-shade:#E7E0CF;
  --surface-soft:#EFE9DD;
  --surface-cream:#FBF8F1;
  --card:#fff;
  --white:#fff;
  --line:#E0D8C6;
  --line-strong:#CFC6B0;
  --sky:#D0E5EC;

  /* ---- text support ---- */
  --base-muted:#75705F;
  --caption:#8A7F6B;
  --caption-soft:#B0A78F;

  /* ---- text on dark (1 = brightest) ---- */
  --on-dark-1:#E5EEEB;
  --on-dark-2:#D9E5E1;
  --on-dark-3:#C4D6D0;
  --on-dark-4:#9FC3B8;
  --on-dark-5:#7FB8A9;
  --on-dark-6:#57A08F;
  --on-dark-7:#6E8B81;

  /* ---- callouts ---- */
  --info-bg:#E9F5FB;--info-line:#C6E4F2;--info-text:#17789F;--info-ink:#33454F;
  --warn-bg:#FCF4E2;--warn-line:#EDDDB3;--warn-text:#8A6410;--warn-ink:#4E4530;
  --danger-bg:#FBEBE8;--danger-line:#EFC9C0;--danger-text:#A5341F;--danger-ink:#4E332E;

  /* ---- type ---- */
  --font-display:Sora,sans-serif;
  --font-body:"Public Sans",Arial,sans-serif;
  --font-mono:"JetBrains Mono",monospace;

  /* ---- layout ---- */
  --container:1200px;
  --container-wide:1240px;
  --container-narrow:1140px;
  --section-pad:84px;
  --hero-min-tall:580px;
  --hero-min:460px;
  --hero-min-short:400px;

  /* ---- effects ---- */
  --radius:2px;
  --shadow-card:0 1px 2px rgb(20 52 44/.04),0 10px 28px rgb(20 52 44/.06);
  --texture-light:url(../img/parks-pattern-light.svg);
  --texture-dark:url(../img/parks-pattern-dark.svg);
}

/* ---- reset: only what the design actually needs ---- */
*,::before,::after{box-sizing:border-box}
/* The [hidden] attribute is a UA rule, so ANY author `display` beats it — and
   .gcard sets display:flex. Without this, the guides hub filter marks cards
   hidden and they stay on screen. Keep this above every component. */
[hidden]{display:none!important}
/* The header is sticky and ~75px tall, so anything jumped to via a #hash must
   reserve room for it or it lands underneath. Applies to the guide TOCs, the
   camping page's anchor pills and the pins on the route map. */
:where(h2,h3,section,div,article)[id]{scroll-margin-top:96px}
body{margin:0;font:400 16px/1.75 var(--font-body);color:var(--base);background:var(--surface);-webkit-font-smoothing:antialiased}
img{max-width:100%}
h1,h2,h3,p,figure{margin:0}
a{color:var(--primary-deep);
  &:hover{color:var(--primary)}
}
summary::-webkit-details-marker{display:none}

/* Skip link — keyboard users land here first. */
.skip{position:absolute;left:-9999px;
  &:focus{left:8px;top:8px;z-index:200;background:var(--white);color:var(--heading);padding:10px 16px;border-radius:var(--radius)}
}

:where(a,button,summary,input,textarea,select):focus-visible{outline:2px solid var(--primary);outline-offset:2px}

.wrap{max-width:var(--container);margin:0 auto}
.wrap-wide{max-width:var(--container-wide);margin:0 auto}
.wrap-narrow{max-width:var(--container-narrow);margin:0 auto}

/* ---- kicker + section heading, used on every page ---- */
.kicker{font:600 12px var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--primary)}
.h-sec{margin:14px 0 0;font:700 38px/1.15 var(--font-display);color:var(--heading);letter-spacing:-.01em}

/* ---- buttons ---- */
.btn{display:inline-block;text-decoration:none;font:700 14px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;padding:17px 30px;border-radius:var(--radius);
  &.-fill{background:var(--primary);color:var(--on-primary);
    &:hover{background:var(--primary-hover);color:var(--on-primary)}
  }
  &.-ghost{border:1px solid var(--heading);color:var(--heading);
    &:hover{color:var(--heading)}
  }
  &.-on-dark{border:1px solid rgb(255 255 255/.5);color:var(--white);
    &:hover{color:var(--white);border-color:var(--white)}
  }
  &.-sm{font-size:13px;padding:13px 22px}
}

/* ============================================================
   HEADER
   ============================================================ */
.util{background:var(--secondary-darkest);
  & .wrap-wide{padding:9px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;font:500 13px var(--font-mono);letter-spacing:.08em;color:var(--on-dark-5)}
  & .util__where{text-transform:uppercase}
  & .util__meta{display:flex;gap:24px}
  & a{color:var(--primary-light);text-decoration:none}
}

.nav{position:sticky;top:0;z-index:100;background:var(--secondary-darker);border-bottom:1px solid rgb(255 255 255/.12);
  & .wrap-wide{padding:12px 24px;display:flex;align-items:center;justify-content:space-between;gap:18px}
}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;flex-shrink:0;
  & img{height:50px;width:auto;display:block}
  & b{font:700 16px/1.15 var(--font-display);color:var(--white);font-weight:700}
  & span{display:block;font:500 9.5px/1.7 var(--font-mono);color:var(--on-dark-5);letter-spacing:.16em;text-transform:uppercase}
}
.nav__links{display:flex;align-items:center;gap:28px;
  & a{text-decoration:none;font:600 15px var(--font-display);color:var(--on-dark-1);padding:6px 0;border-bottom:2px solid transparent;
    &:hover{color:var(--primary-light)}
    &[aria-current]{color:var(--primary-light);border-bottom-color:var(--primary)}
  }
}
.nav__end{display:flex;align-items:center;gap:12px}
.navcta{background:var(--primary);color:var(--on-primary);text-decoration:none;border-radius:var(--radius);padding:9px 18px;text-align:center;display:block;
  &:hover{background:var(--primary-hover);color:var(--on-primary)}
  & b{display:block;font:700 14px var(--font-display)}
  & span{display:block;margin-top:3px;font:600 9px var(--font-mono);letter-spacing:.14em;text-transform:uppercase}
}

/* Mobile menu — native <details>, no JS. */
.mmenu{display:none;position:relative;
  & > summary{list-style:none;cursor:pointer;width:46px;height:46px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;border:1px solid rgb(255 255 255/.3);border-radius:var(--radius);
    & i{width:18px;height:2px;background:var(--white);display:block}
  }
  & .mmenu__panel{position:fixed;inset:0;background:var(--secondary-dark);z-index:-1;padding:150px 26px 40px;overflow:auto}
  & .mmenu__panel a{display:flex;align-items:baseline;gap:16px;padding:17px 2px;border-bottom:1px solid rgb(255 255 255/.14);text-decoration:none;font:700 28px var(--font-display);color:var(--white);
    &[aria-current]{color:var(--primary-light)}
  }
}
.bookbar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--primary);color:var(--on-primary);text-decoration:none;padding:15px 20px;text-align:center;font:700 19px var(--font-display);box-shadow:0 -6px 18px rgb(7 29 25/.3);
  &:hover{color:var(--on-primary)}
}

/* ============================================================
   FOOTER
   ============================================================ */
.foot{background:var(--secondary-dark);padding:64px 24px 0}
.foot__cols{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:44px;padding-bottom:52px;
  & img{height:76px;width:auto;display:block}
  & p{margin:18px 0 0;font:400 16px/1.75 var(--font-body);color:var(--on-dark-4);max-width:320px}
  & h2{font:600 12px var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--primary-light);margin:0}
  & ul{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:10px;font:500 16px var(--font-body);color:var(--on-dark-2)}
  & a{font:500 16px var(--font-body);color:var(--on-dark-2);text-decoration:none;
    &:hover{color:var(--white)}
  }
}
.foot__bar{border-top:1px solid rgb(255 255 255/.1);
  & div{max-width:var(--container);margin:0 auto;padding:18px 0;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font:500 12px var(--font-mono);letter-spacing:.08em;color:var(--on-dark-7)}
  & a{color:var(--on-dark-7);text-decoration:none;
    &:hover{color:var(--on-dark-4)}
  }
}
/* The mountain band lives in its own block directly under the CTA.
   Its background is --sky, the exact colour of the image's top row, so the
   gradient, the wrapper and the first pixel of the photo are one continuous
   tone — no hairline where they meet. line-height:0 kills the inline
   descender gap that would otherwise show a 1px strip. */
.footart{background:var(--sky);line-height:0;font-size:0}
.foot__art{width:100%;height:auto;display:block}

/* ============================================================
   CALLOUTS — tip / warning / danger
   ============================================================ */
.callout{border-radius:6px;padding:16px 20px;border:1px solid;margin:26px 0;
  & b{display:block;font:700 11px var(--font-mono);text-transform:uppercase;letter-spacing:.1em;margin-bottom:6px}
  & p{font:400 16px/1.7 var(--font-body)}
  &.-tip{background:var(--info-bg);border-color:var(--info-line);color:var(--info-ink);& b{color:var(--info-text)}}
  &.-warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-ink);& b{color:var(--warn-text)}}
  &.-danger{background:var(--danger-bg);border-color:var(--danger-line);color:var(--danger-ink);& b{color:var(--danger-text)}}
}

/* ============================================================
   RESPONSIVE — the design's own breakpoints
   ============================================================ */
@media (max-width:960px){
  .nav__links{display:none}
  .navcta{display:none}
  .mmenu{display:block}
  .bookbar{display:block}
  .foot__cols{grid-template-columns:1fr}
  .util .util__meta{display:none}
  .foot__bar{padding-bottom:62px}
  :root{--section-pad:56px}
  .h-sec{font-size:30px}
}
@media (max-width:640px){
  .h-sec{font-size:26px}
}

/* ============================================================
   SECTION BANDS — the page rhythm, shared by every route
   ============================================================ */
.band{padding:var(--section-pad) 24px;
  &.-texture{background:var(--surface) var(--texture-light);background-size:520px}
  &.-cream{background:var(--surface-cream);border-top:1px solid var(--line);
    &.-texture{background:var(--surface-cream) var(--texture-light);background-size:520px}
  }
  &.-card{background:var(--card);border-top:1px solid var(--line)}
  &.-plain{background:var(--surface);padding:70px 24px}
  &.-dark{background:var(--secondary) var(--texture-dark);background-size:520px;color:var(--on-dark-2);
    & .h-sec{color:var(--white)}
    & .lede{color:var(--on-dark-4)}
  }
}
.kicker{
  &.-light{color:var(--primary-light)}
  &.-deep{color:var(--primary-deep)}
}
.lede{margin:14px 0 0;font:400 17px/1.8 var(--font-body);
  /* The home intro runs a notch larger, as the design draws it. */
  &.-intro{margin-top:20px;font-size:18px;line-height:1.85}
}
.grid2{display:grid;grid-template-columns:1.05fr .95fr;gap:60px;align-items:center;
  &.-legal{align-items:start;
    & p{margin:16px 0 0;font:400 16px/1.8 var(--font-body)}
  }
}
.h-legal{margin:0 0 16px;font:700 18px var(--font-display);color:var(--heading);letter-spacing:.02em;text-transform:uppercase}
.link-out{display:inline-block;margin-top:18px;font:600 14px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;text-decoration:none}

/* Offset photo frame with the rule behind it. */
.shot{margin:0;position:relative;padding:16px 16px 0 0;
  &::before{content:"";position:absolute;top:0;right:0;width:82%;height:82%;border:1px solid var(--heading);border-radius:var(--radius);opacity:.5}
  & .shot__frame{position:relative}
  & img{width:100%;height:420px;object-fit:cover;display:block;border-radius:var(--radius)}
  & .shot__tag{position:absolute;left:14px;bottom:14px;background:rgb(11 36 32/.85);color:var(--primary-light);font:600 11px var(--font-mono);letter-spacing:.12em;padding:8px 12px;border-radius:var(--radius)}
  & figcaption{margin-top:10px;display:flex;justify-content:space-between;font:500 12px var(--font-mono);letter-spacing:.08em;color:var(--caption)}
  &.-map img{height:auto;object-fit:contain;background:var(--white)}
}

/* ---- closing CTA, on every route ---- */
.endcta{background:linear-gradient(180deg,var(--surface) 0%,var(--sky) 78%);
  & .endcta__inner{padding:100px 24px 64px;text-align:center}
  & h2{margin:16px 0 0;font:800 clamp(32px,4.5vw,48px)/1.1 var(--font-display);color:var(--heading);letter-spacing:-.015em}
  & p{margin:18px auto 0;max-width:560px;font:400 18px/1.7 var(--font-body);color:var(--heading-muted)}
  & .endcta__btns{margin-top:30px;display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
}

/* ---- breadcrumbs ---- */
.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px;font:500 12px var(--font-mono);letter-spacing:.08em;
  & li+li::before{content:"/";margin-right:8px;opacity:.5}
}

@media (max-width:900px){
  .grid2{grid-template-columns:1fr;gap:36px}
  .shot img{height:300px}
  .endcta .endcta__inner{padding:64px 20px 44px}
}

/* ============================================================
   SHARED PAGE FURNITURE — interior hero, anchor pills, the
   directions timeline. Used by home, camping, contact and
   getting-here, so it lives here rather than in three files.
   ============================================================ */
.chero{position:relative;background:var(--secondary-dark);overflow:hidden;
  & .chero__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
  & .chero__veil{position:absolute;inset:0;background:linear-gradient(180deg,rgb(11 36 32/.7) 0%,rgb(11 36 32/.3) 45%,rgb(11 36 32/.75) 100%)}
  & .chero__inner{position:relative;box-sizing:content-box;padding:110px 24px 0;min-height:var(--hero-min);display:flex;flex-direction:column;justify-content:center}
  &.-short .chero__inner{padding-bottom:90px}
  & .chero__meta{display:flex;align-items:baseline;justify-content:space-between;gap:20px;flex-wrap:wrap}
  & .chero__coords{font:500 12px var(--font-mono);letter-spacing:.1em;color:rgb(255 255 255/.65)}
  & h1{margin:18px 0 0;font:800 clamp(38px,5vw,58px)/1.06 var(--font-display);color:var(--white);letter-spacing:-.02em}
  & .chero__deck{margin:18px 0 0;max-width:620px;font:400 18px/1.7 var(--font-body);color:var(--on-dark-2)}
}
.pills{margin-top:26px;display:flex;gap:10px;flex-wrap:wrap;
  & a{border:1px solid rgb(255 255 255/.4);color:var(--white);text-decoration:none;font:600 12px var(--font-mono);letter-spacing:.1em;text-transform:uppercase;padding:10px 16px;border-radius:var(--radius);
    &:hover{color:var(--white);border-color:var(--white)}
    &.-fill{background:var(--primary);border-color:var(--primary);color:var(--on-primary);font-weight:700;font-size:11px}
  }
}

.grid2.-top{align-items:start}
.grid2.-dirs{grid-template-columns:.9fr 1.1fr}

/* Directions timeline. */
.legs{margin:26px 0 0;padding:0;list-style:none;display:grid;border-left:1px solid rgb(255 255 255/.2);
  & li{padding:14px 0 14px 22px;position:relative}
  & .legs__dot{position:absolute;left:-5px;top:20px;width:9px;height:9px;border-radius:50%;background:var(--primary)}
  & .legs__road{font:600 13px var(--font-mono);letter-spacing:.1em;color:var(--primary-light)}
  & .legs__note{margin-top:3px;font:400 17px/1.65 var(--font-body);color:var(--on-dark-2)}
}


.legs.-light{border-left-color:var(--line-strong);
  & .legs__road{color:var(--primary-deep)}
  & .legs__note{color:var(--base)}
}

@media (max-width:960px){
  .chero .chero__inner{padding-top:80px}
  .chero .chero__coords{display:none}
  .grid2.-dirs{grid-template-columns:1fr}
}

/* ---- BC Parks pointer: the facts this site deliberately does not own ---- */
.bcparks{margin:20px 0 0;background:var(--surface-tint);border:1px solid var(--line);border-left:3px solid var(--primary);border-radius:var(--radius);padding:16px 20px;
  & p{margin:0;font:400 15px/1.65 var(--font-body);color:var(--base)}
  & .bcparks__link{display:inline-block;margin-top:10px;font:600 12px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;text-decoration:none;color:var(--primary-deep);
    &:hover{color:var(--primary)}
  }
}
