/* ===========================================================================
   home.css - House of Canopies homepage. Depends on brand.css + chrome.css.

   Owns ONLY the homepage sections: featured product card primitive, hero,
   live spec finder, visual range grid, most-specified band, trust strip,
   audience router and the specifier deep-dive band. The util bar, masthead,
   search, sticky cat nav and footer live in chrome.css; tokens, .wrap,
   .eyebrow, .btn, .chip and .price live in brand.css.

   2024 redesign: the range is now a photo-led family grid; product visuals
   land in the first scroll; sections animate in via .rv (reduced-motion safe);
   dark/light bands give the page rhythm. Hero + finder are unchanged.
   =========================================================================== */

/* ---- scroll reveal ------------------------------------------------------- */
.rv{opacity:0;transform:translateY(20px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}
.rv.d1{transition-delay:.07s}
.rv.d2{transition-delay:.14s}
.rv.d3{transition-delay:.21s}
@media(prefers-reduced-motion:reduce){.rv{transition:none;opacity:1;transform:none}}

/* ---- featured product card (also a reusable card primitive) -------------- */
.pcard{border:1px solid var(--line);background:var(--card);display:flex;flex-direction:column;transition:border-color .18s,transform .24s cubic-bezier(.2,.7,.2,1),box-shadow .24s}
.pcard:hover{border-color:var(--ink-3);transform:translateY(-5px);box-shadow:0 20px 44px rgba(20,20,20,.12)}
.pcard .ph{background:var(--card);border-bottom:1px solid var(--line);aspect-ratio:1/1;overflow:hidden;display:block}
.pcard .ph img{width:100%;height:100%;object-fit:cover;transition:transform .4s cubic-bezier(.2,.7,.2,1)}
.pcard:hover .ph img{transform:scale(1.04)}
.pcard .bd{padding:20px 20px 22px;display:flex;flex-direction:column;gap:12px;flex:1}
.pcard .rng{font-size:10.5px;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-4)}
.pcard h3{font-size:16.5px;font-weight:700;letter-spacing:-.01em}
.pcard .chips{display:flex;gap:6px;flex-wrap:wrap}
.pcard .foot{margin-top:auto;display:flex;justify-content:space-between;align-items:end;gap:10px}
.pcard .price .ex{font-size:20px}
.pcard .add{display:inline-flex;align-items:center;gap:7px;background:var(--green);color:#fff;border:0;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;padding:12px 18px;cursor:pointer;text-decoration:none;transition:background .16s}
.pcard .add:hover{background:var(--green-deep)}

/* ---- hero (unchanged) ---------------------------------------------------- */
.hero{display:grid;grid-template-columns:46% 54%;background:var(--night);min-height:560px}
.hero .copy{padding:84px 64px 64px;display:flex;flex-direction:column;justify-content:center;color:#f4f4f4}
.hero .eyebrow{color:#8a8a8a;margin-bottom:26px}
.hero h1{font-size:clamp(44px,5.4vw,72px);font-weight:800;line-height:1.02;letter-spacing:-.02em}
.hero h1 .g{color:var(--green-on-dark)}
.hero p{margin:26px 0 36px;font-size:16px;color:#b9b9b9;max-width:42ch;line-height:1.6}
.hero .ctas{display:flex;gap:14px;flex-wrap:wrap}
.hero .pic{position:relative;overflow:hidden}
.hero .pic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 30%}
.hero .pic::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--night) 0%,transparent 18%)}
.hero .plate{position:absolute;left:28px;bottom:24px;background:rgba(32,32,32,.86);color:#f4f4f4;padding:12px 16px;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;backdrop-filter:blur(2px)}
.hero .plate b{color:var(--green-on-dark);display:block;font-size:10px;margin-bottom:3px;letter-spacing:.16em}

/* ---- spec finder (unchanged) --------------------------------------------- */
.finder{background:#161616;border-top:1px solid #2e2e2e;color:#a8a8a8}
.finder .wrap{display:flex;align-items:center;gap:22px;min-height:72px;flex-wrap:wrap;padding-top:12px;padding-bottom:12px}
.finder .lab{display:flex;align-items:center;gap:8px;font-size:10.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:#6e6e6e}
.finder .lab::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--green-on-dark);animation:blink 2.4s infinite}
@keyframes blink{50%{opacity:.35}}
.finder .group{display:flex;gap:6px}
.finder .f{background:transparent;border:1px solid #3a3a3a;color:#cfcfcf;font-size:11.5px;font-weight:600;letter-spacing:.06em;padding:8px 13px;cursor:pointer;transition:.14s}
.finder .f:hover{border-color:#6e6e6e}
.finder .f.on{background:#f4f4f4;color:var(--night);border-color:#f4f4f4}
.finder .tally{margin-left:auto;display:flex;align-items:center;gap:26px}
.finder .stat{text-align:right;line-height:1.1}
.finder .stat b{display:block;font-size:20px;font-weight:800;color:#f4f4f4}
.finder .stat span{font-size:9.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:#6e6e6e}
.finder .btn{padding:12px 22px}

/* section headings share a scale */
.range h2,.feat h2,.aud h2{font-size:clamp(26px,3.2vw,34px);font-weight:800;letter-spacing:-.018em;margin-top:10px}
.range h2 .g,.feat h2 .g,.aud h2 .g{color:var(--green-text)}

/* ---- range: visual family grid (the browse anchor) ----------------------- */
.range{padding:88px 0}
.range .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:38px}
.range .fcard{position:relative;display:flex;aspect-ratio:1/1;overflow:hidden;background:var(--night);color:#fff}
.range .fcard{transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s}
.range .fcard:hover{transform:translateY(-6px);box-shadow:0 24px 50px rgba(20,20,20,.22)}
.range .fcard .img{position:absolute;inset:0;background:#eef1ec;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.range .fcard .img img{width:100%;height:100%;object-fit:cover;display:block}
.range .fcard .img .ph{position:absolute;inset:0;display:block}
.range .fcard .img .ph svg{width:100%;height:100%;display:block}
.range .fcard:hover .img{transform:scale(1.05)}
.range .fcard .scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(18,18,18,0) 30%,rgba(18,18,18,.32) 54%,rgba(18,18,18,.9) 100%)}
.range .fcard .bd{position:relative;z-index:2;margin-top:auto;padding:22px;width:100%}
.range .fcard h3{font-size:22px;font-weight:800;letter-spacing:-.01em;margin-bottom:6px;color:#fff}
.range .fcard .meta{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:#d7ddd7;line-height:1.3}
.range .fcard .meta b{color:#fff;font-weight:700}
.range .fcard .soon-tag{color:var(--green-on-dark);font-weight:700}
.range .fcard .arrow{position:absolute;top:16px;right:16px;z-index:2;width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.16);display:flex;align-items:center;justify-content:center;font-size:16px;transition:.2s}
.range .fcard:hover .arrow{background:var(--green);transform:translateX(3px)}
.range .fcard.soon{filter:saturate(.55)}
.range .fcard.soon .scrim{background:linear-gradient(180deg,rgba(18,18,18,.2) 0%,rgba(18,18,18,.5) 60%,rgba(18,18,18,.86) 100%)}

/* ---- most specified (tinted band) ---------------------------------------- */
.feat{background:var(--paper-2);padding:88px 0}
.feat .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:38px}

/* ---- trust strip --------------------------------------------------------- */
.strip{background:var(--night);color:#f4f4f4}
.strip .wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;padding-top:56px;padding-bottom:56px}
.strip .s b{display:block;font-size:34px;font-weight:800;letter-spacing:-.02em}
.strip .s b small{font-size:16px;font-weight:700;color:var(--green-on-dark)}
.strip .s span{font-size:11px;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:#8a8a8a;display:block;margin-top:6px}

/* ---- who's asking (router) ----------------------------------------------- */
.aud{padding:88px 0}
.aud .head{margin-bottom:38px}
.aud .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.aud .card{position:relative;overflow:hidden;border:1px solid var(--line);background:var(--card);padding:30px 28px;display:flex;flex-direction:column;gap:12px;min-height:230px;transition:transform .22s cubic-bezier(.2,.7,.2,1),box-shadow .22s,border-color .22s}
.aud .card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--green);transform:scaleY(0);transform-origin:top;transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.aud .card:hover{transform:translateY(-5px);box-shadow:0 20px 44px rgba(20,20,20,.1)}
.aud .card:hover::before{transform:scaleY(1)}
.aud .who{font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-4)}
.aud h3{font-size:19px;font-weight:700;letter-spacing:-.01em}
.aud p{font-size:13.5px;color:var(--ink-2);flex:1}
.aud .go{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--green-text)}
.aud .card:hover .go{text-decoration:underline;text-underline-offset:4px}

/* ---- specifier deep-dive band (single specifier section) ------------------ */
.specband{background:radial-gradient(120% 130% at 15% 0%,#1f2a20 0%,var(--night) 58%);color:#f4f4f4}
.specband .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;padding-top:84px;padding-bottom:84px;align-items:center}
.specband .eyebrow.green{color:var(--green-on-dark)}
.specband h2{font-size:clamp(24px,2.8vw,30px);font-weight:800;letter-spacing:-.015em;margin:10px 0 16px;color:#fff}
.specband p{color:#b9c2ba;max-width:44ch;margin-bottom:24px}
.specband ul{list-style:none}
.specband li{display:grid;grid-template-columns:160px 1fr;gap:16px;padding:16px 0;border-top:1px solid rgba(255,255,255,.12);font-size:14px;color:#b9c2ba;align-items:baseline}
.specband li:last-child{border-bottom:1px solid rgba(255,255,255,.12)}
.specband li::before{display:none}
.specband li b{color:#fff;font-weight:700}

/* ---- responsive ---------------------------------------------------------- */
@media(max-width:900px){
  .hero{grid-template-columns:1fr}
  .hero .pic{min-height:300px;order:-1}
  .hero .pic img{object-position:center 60%}
  .hero .pic::after{background:linear-gradient(0deg,var(--night) 0%,transparent 22%)}
  .hero .copy{padding:44px 24px}
  .range .grid,.feat .grid,.aud .grid{grid-template-columns:1fr 1fr}
  .strip .wrap{grid-template-columns:1fr 1fr}
  .specband .wrap{grid-template-columns:1fr;gap:32px}
}
@media(max-width:600px){
  .range .grid,.feat .grid,.aud .grid,.strip .wrap{grid-template-columns:1fr}
  .specband li{grid-template-columns:1fr;gap:2px}
}
/* tablet: let the stacked hero image scale with the viewport so 'cover' doesn't
   over-zoom into a wide, short band between phone and desktop. */
@media(min-width:551px) and (max-width:900px){
  .hero .pic{min-height:0;aspect-ratio:2/1}
  .hero .pic img{object-position:center 45%}
}
