/* ==========================================================
   SUNNY RIDGE — 2026 PROTOTYPE DESIGN SYSTEM  "Expedition"
   Dark, cinematic, travel-first. Vanilla CSS, no build step.
   ========================================================== */
:root{
  --ink:#0b1416;          /* near-black teal */
  --ink-2:#102026;
  --ink-3:#16303a;
  --sand:#f4ede2;         /* warm paper */
  --sand-dim:#cfc4b2;
  --teal:#2aa198;
  --teal-bright:#3ed6c5;
  --amber:#f2a541;        /* desert sun */
  --rust:#c4622d;         /* owyhee rock */
  --sky:#7fb7c9;
  --ok:#34d399;
  --radius:18px;
  --font-display:"Fraunces", Georgia, serif;
  --font-body:"Inter", system-ui, -apple-system, sans-serif;
  --shadow-lg:0 30px 80px -20px rgba(0,0,0,.55);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:var(--font-body);
  background:var(--ink);
  color:var(--sand);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  padding-top:var(--annbar-h,0px);   /* make room for the announcement bar */
}

/* ---------- announcement bar (full-width strip above the header) ---------- */
:root{--annbar-h:40px}
html.ann-off{--annbar-h:0px}
.annbar{position:fixed;top:0;left:0;right:0;height:var(--annbar-h);z-index:100;
  display:flex;align-items:center;justify-content:center;
  background:#070e10;border-bottom:1px solid rgba(242,165,65,.5);
  font-size:.85rem;font-weight:600;color:var(--sand);padding:0 46px 0 100px;overflow:hidden}
html.ann-off .annbar{display:none}
.annbar-link{display:inline-flex;align-items:center;gap:.5em;color:var(--sand);white-space:nowrap}
.annbar-link:hover{color:var(--amber)}
.annbar .ab-arrow{color:var(--amber);transition:transform .2s}
.annbar-link:hover .ab-arrow{transform:translateX(3px)}
/* responsive copy swap — exactly one message per viewport (full on desktop, short below 600px) */
.annbar .ab-full{display:inline}
.annbar .ab-short{display:none}
.annbar-x{position:absolute;right:8px;top:50%;transform:translateY(-50%);
  background:none;border:none;color:var(--sand-dim);font-size:1.35rem;line-height:1;cursor:pointer;padding:.15em .45em}
.annbar-x:hover{color:var(--amber)}
@media(max-width:600px){
  .annbar{font-size:.8rem;padding:0 36px 0 88px}
  .annbar .ab-full{display:none}
  .annbar .ab-short{display:inline}
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
.wrap{max-width:1200px;margin:0 auto;padding:0 clamp(18px,4vw,40px)}

/* ---------- typography ---------- */
h1,h2,h3,.display{font-family:var(--font-display);font-weight:600;line-height:1.05;letter-spacing:-.01em}
.h-xl{font-size:clamp(2.6rem,7vw,5.4rem)}
.h-lg{font-size:clamp(2rem,4.5vw,3.4rem)}
.h-md{font-size:clamp(1.35rem,2.5vw,1.9rem)}
.eyebrow{
  display:inline-flex;align-items:center;gap:.7em;
  font-size:.78rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;
  color:var(--amber);
}
.eyebrow::before{content:"";width:34px;height:1px;background:var(--amber)}
.lead{font-size:clamp(1.02rem,1.5vw,1.2rem);color:var(--sand-dim);max-width:62ch}

/* ---------- header ---------- */
.hdr{
  position:fixed;inset:0 0 auto 0;top:var(--annbar-h,0px);z-index:90;
  transition:background .35s,box-shadow .35s,backdrop-filter .35s,top .25s;
}
.hdr.scrolled{background:rgba(11,20,22,.82);backdrop-filter:blur(14px);box-shadow:0 1px 0 rgba(244,237,226,.08)}
.hdr-in{display:flex;align-items:center;justify-content:space-between;height:84px;transition:height .3s}
.hdr.scrolled .hdr-in{height:72px}
@media(max-width:880px){.hdr-in{height:72px}}

/* header left slot — holds the promo chip and/or the compact RV There Yet badge */
.hdr-left{position:relative;display:flex;align-items:center;min-width:0}

/* compact circular badge (sticky-header brand, 2026 RV There Yet rebrand) */
.mini-brand{display:inline-flex;align-items:center;gap:.7rem;font-family:var(--font-display)}
.mini-brand img{width:52px;height:52px;border-radius:50%;background:#fff;padding:3px;
  box-shadow:0 4px 16px rgba(0,0,0,.45);transition:transform .25s}
.mini-brand:hover img{transform:scale(1.06) rotate(-2deg)}
.mini-brand small{display:block;font-family:var(--font-body);font-size:.62rem;letter-spacing:.26em;text-transform:uppercase;color:var(--sand-dim)}
.mini-brand b{font-size:1.05rem;font-weight:600}

/* promo carousel chip — solid dark pill so it reads over any hero photo */
.promo-chip{display:inline-flex;align-items:center;gap:.55em;
  padding:.5em 1.05em;border-radius:999px;
  font-size:.82rem;font-weight:600;line-height:1.25;
  color:var(--sand);background:rgba(11,20,22,.85);
  border:1px solid rgba(242,165,65,.55);backdrop-filter:blur(6px);
  box-shadow:0 6px 20px rgba(0,0,0,.4);
  max-width:min(72vw,560px);
  transition:opacity .35s,transform .35s,border-color .2s,background .2s}
.promo-chip:hover{border-color:var(--amber);background:rgba(11,20,22,.92);transform:translateY(-1px)}
.promo-chip:empty{display:none}
.promo-chip.pc-fade{opacity:0}
.promo-chip.pc-review{cursor:default}
.promo-chip .pc-stars{flex:0 0 auto;color:var(--amber);letter-spacing:.04em}
.promo-chip .pc-q{flex:1;min-width:0;font-weight:500;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.promo-chip .pc-q em{font-style:normal;font-weight:600;color:var(--sand-dim)}

/* HOME header: cross-fade promo chip <-> mini badge on scroll (no reflow jump) */
.hdr-home .mini-brand{position:absolute;left:0;top:50%;transform:translateY(-50%) translateX(-8px) scale(.92);
  opacity:0;pointer-events:none;transition:opacity .35s,transform .35s}
.hdr-home.scrolled .mini-brand{transform:translateY(-50%);opacity:1;pointer-events:auto}
.hdr-home.scrolled .promo-chip{opacity:0;transform:translateX(-8px);pointer-events:none}
@media(max-width:700px){.promo-chip{display:none}}
.nav{display:flex;align-items:center;gap:clamp(.9rem,2vw,1.8rem);font-size:.92rem}
.nav a{opacity:.85;transition:opacity .2s,color .2s}
.nav a:hover,.nav a.on{opacity:1;color:var(--teal-bright)}
.nav-toggle{display:none;background:none;border:0;color:var(--sand);font-size:1.6rem;cursor:pointer}
@media(max-width:880px){
  .nav{position:fixed;inset:calc(var(--annbar-h,0px) + 72px) 0 auto 0;flex-direction:column;align-items:flex-start;
    background:rgba(11,20,22,.97);backdrop-filter:blur(18px);padding:1.4rem clamp(18px,4vw,40px) 2rem;
    gap:1.1rem;transform:translateY(-130%);transition:transform .35s;border-bottom:1px solid rgba(244,237,226,.1)}
  .nav.open{transform:none}
  .nav-toggle{display:block}
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:.55em;
  padding:.85em 1.6em;border-radius:999px;font-weight:600;font-size:.95rem;
  border:1px solid transparent;cursor:pointer;transition:transform .2s,box-shadow .2s,background .2s;
}
.btn:hover{transform:translateY(-2px)}
.btn-sun{background:linear-gradient(120deg,var(--amber),#e8842e);color:#231303;box-shadow:0 10px 30px -8px rgba(242,165,65,.5)}
.btn-ghost{border-color:rgba(244,237,226,.35);color:var(--sand)}
.btn-ghost:hover{border-color:var(--teal-bright);color:var(--teal-bright)}
.btn-lg{padding:1.05em 2em;font-size:1.02rem}

/* ---------- hero ---------- */
.hero{position:relative;min-height:calc(100svh - var(--annbar-h,0px));display:flex;align-items:flex-end;isolation:isolate}
.hero-bg{position:absolute;inset:0;z-index:-2;overflow:hidden}
.hero-bg img{width:100%;height:100%;object-fit:cover;animation:kenburns 26s ease-in-out infinite alternate}
@keyframes kenburns{from{transform:scale(1) translateY(0)}to{transform:scale(1.12) translateY(-2.5%)}}
.hero::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(11,20,22,.35) 0%,rgba(11,20,22,.05) 35%,rgba(11,20,22,.92) 92%)}
.hero-in{padding:9rem 0 5rem;width:100%}
.hero .lead{margin:1.2rem 0 2rem}
.hero-foot{
  display:flex;gap:clamp(1rem,4vw,3rem);flex-wrap:wrap;
  margin-top:3.2rem;padding-top:1.6rem;border-top:1px solid rgba(244,237,226,.18);
}
.stat b{font-family:var(--font-display);font-size:clamp(1.5rem,3vw,2.2rem);color:var(--sand);display:block;line-height:1.1}
.stat span{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--sand-dim)}
.scroll-cue{position:absolute;right:clamp(18px,4vw,40px);bottom:2rem;writing-mode:vertical-rl;
  font-size:.7rem;letter-spacing:.3em;text-transform:uppercase;color:var(--sand-dim);animation:bob 2.4s infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(8px)}}

/* ---------- sections ---------- */
.sec{padding:clamp(4rem,9vw,7.5rem) 0;position:relative}
.sec-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1.2rem;margin-bottom:clamp(2rem,5vw,3.4rem)}
.sec-alt{background:var(--ink-2)}

/* reveal on scroll */
.rv{opacity:0;transform:translateY(26px);transition:opacity .8s ease,transform .8s ease}
.rv.in{opacity:1;transform:none}
.rv.d1{transition-delay:.12s}.rv.d2{transition-delay:.24s}.rv.d3{transition-delay:.36s}
@media(prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none}
  .hero-bg img{animation:none}
  html{scroll-behavior:auto}
}

/* ---------- guide rail (horizontal snap) ---------- */
.rail{display:flex;gap:1.2rem;overflow-x:auto;scroll-snap-type:x mandatory;
  padding:0 clamp(18px,4vw,40px) 1.4rem;scrollbar-width:thin;scrollbar-color:var(--ink-3) transparent}
.rail::after{content:"";flex:0 0 1px}
.gcard{
  position:relative;flex:0 0 clamp(240px,28vw,330px);aspect-ratio:3/4;
  border-radius:var(--radius);overflow:hidden;scroll-snap-align:start;
  background:var(--ink-3);transition:transform .35s;
}
.gcard:hover{transform:translateY(-6px)}
.gcard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s}
.gcard:hover img{transform:scale(1.07)}
.gcard .ov{position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(11,20,22,.92));}
.gcard .tx{position:absolute;inset:auto 0 0 0;padding:1.3rem}
.gcard .tx em{font-style:normal;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--amber)}
.gcard .tx h3{font-size:1.3rem;margin:.25rem 0 .2rem}
.gcard .tx p{font-size:.85rem;color:var(--sand-dim)}

/* ---------- grids & cards ---------- */
.grid{display:grid;gap:1.4rem}
.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr))}
.grid-3{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr))}
.card{
  background:var(--ink-2);border:1px solid rgba(244,237,226,.08);
  border-radius:var(--radius);overflow:hidden;
}
.card-pad{padding:clamp(1.3rem,3vw,2rem)}
.card .ph{aspect-ratio:16/10;overflow:hidden}
.card .ph img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.card:hover .ph img{transform:scale(1.05)}

/* ---------- stay/unit cards ---------- */
.unit{display:grid;grid-template-columns:1fr;border-radius:var(--radius);overflow:hidden;
  background:var(--ink-2);border:1px solid rgba(244,237,226,.08)}
@media(min-width:920px){.unit{grid-template-columns:5fr 6fr}}
.unit .uph{min-height:280px;position:relative}
.unit .uph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.unit .ubody{padding:clamp(1.4rem,3vw,2.2rem)}
.price{font-family:var(--font-display);font-size:1.7rem;color:var(--amber)}
.price small{font-family:var(--font-body);font-size:.85rem;color:var(--sand-dim)}
.tagrow{display:flex;flex-wrap:wrap;gap:.45rem;margin:.9rem 0 1.1rem}
.tag{font-size:.74rem;letter-spacing:.04em;padding:.32em .85em;border-radius:999px;
  border:1px solid rgba(244,237,226,.2);color:var(--sand-dim)}

/* ---------- availability note (muted) ---------- */
.cal-src{font-size:.7rem;color:var(--sand-dim);margin-top:.55rem;opacity:.8}

/* ---------- split feature ---------- */
.split{display:grid;gap:clamp(1.6rem,4vw,3.5rem);align-items:center}
@media(min-width:920px){.split{grid-template-columns:1fr 1fr}.split.flip>:first-child{order:2}}
.split .ph{border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-lg)}
.split .ph img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3}

/* ---------- big CTA band ---------- */
.cta-band{position:relative;padding:clamp(5rem,11vw,9rem) 0;text-align:center;isolation:isolate;overflow:hidden}
.cta-band img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover}
.cta-band::after{content:"";position:absolute;inset:0;z-index:-1;background:rgba(11,20,22,.72)}

/* ---------- footer ---------- */
.ftr{background:#070e10;padding:3.5rem 0 2.5rem;font-size:.9rem;color:var(--sand-dim)}
.ftr-grid{display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:2.4rem}
.ftr h5{font-family:var(--font-body);font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--sand);margin-bottom:.9rem}
.ftr a:hover{color:var(--teal-bright)}
.ftr ul{list-style:none}.ftr li{margin:.45rem 0}
.ftr-base{border-top:1px solid rgba(244,237,226,.08);padding-top:1.6rem;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;font-size:.78rem}

/* ---------- proto ribbon ---------- */
