/* =========================================================
   MASTERCRETE HOME - 2026-10 redesign (homepage sections)
   Loaded AFTER site.css, which holds everything the pages
   share: font, colour tokens, base, buttons, header, menu,
   proof strip, photo panel, photo viewer, footer, call bar,
   text-us and motion. Rebrand = change tokens in site.css.
   ========================================================= */

/* ── HERO ── */
/* Big banner: job photo (or video) almost the full width, headline over it bottom-left.
   Height leaves the proof strip peeking in on a laptop so people know to scroll. */
.hero{padding:12px 0 0}
.banner{position:relative;isolation:isolate;overflow:hidden;margin:0 12px;border-radius:var(--r-media);
  display:flex;align-items:flex-end;color:var(--photo-ink);
  min-height:clamp(520px,calc(100vh - var(--header-h) - 132px),860px);
  min-height:clamp(520px,calc(100svh - var(--header-h) - 132px),860px)}
.banner-media{position:absolute;inset:0;z-index:-2;background:#2a2622}
.banner-media img,.banner-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:50% 50%}
.banner-media video{opacity:0;transition:opacity .8s var(--ease)}
.banner-media video.on{opacity:1}
.vid-toggle{position:absolute;right:16px;bottom:16px;z-index:2;width:40px;height:40px;border:0;border-radius:999px;
  display:none;align-items:center;justify-content:center;cursor:pointer;color:var(--photo-ink);
  background:rgba(14,12,10,.55);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.vid-toggle .ico{width:18px;height:18px}
.banner.has-video .vid-toggle{display:flex}
.banner::before{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(to top,rgba(14,12,10,.86) 0%,rgba(14,12,10,.5) 40%,rgba(14,12,10,.08) 72%),
             linear-gradient(to right,rgba(14,12,10,.5) 0%,rgba(14,12,10,0) 62%)}
.hero-copy{width:100%;padding-top:120px;padding-bottom:64px}
.hero h1{font-size:clamp(2.2rem,4.1vw,4.2rem);margin-bottom:18px;max-width:20ch;color:var(--photo-ink)}
.hero .sub{font-size:clamp(1.06rem,.5vw + .9rem,1.3rem);color:rgba(246,243,238,.88);max-width:42ch;margin-bottom:32px}
@media (max-width:959px){
  .hero{padding:0}
  .banner{margin:0;border-radius:0;
    min-height:calc(100vh - var(--header-h) - 58px);   /* 58px = mobile call bar */
    min-height:calc(100svh - var(--header-h) - 58px)}
  .vid-toggle{top:12px;bottom:auto;right:12px}
  .banner::before{background:linear-gradient(to top,rgba(14,12,10,.92) 0%,rgba(14,12,10,.7) 45%,rgba(14,12,10,.25) 80%)}
  .hero-copy{padding-top:72px;padding-bottom:104px}   /* clears the floating Text us button */
}

/* ── SERVICES BENTO ── 7 services = 7 cells (4x3 grid, no gaps) */
.bento{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:250px;gap:16px}
.tile{position:relative;display:block;overflow:hidden;border-radius:var(--r-media);background:var(--surface-2);
  isolation:isolate;color:var(--photo-ink)}
.tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;
  transition:transform .7s var(--ease)}
.tile::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(to top,rgba(14,12,10,.88) 0%,rgba(14,12,10,.45) 42%,rgba(14,12,10,0) 72%)}
.tile-body{position:absolute;left:0;right:0;bottom:0;padding:20px 22px}
.tile h3{display:flex;align-items:center;gap:8px;font-size:21px;margin-bottom:4px}
.tile h3 .ico{width:20px;height:20px;transition:transform .3s var(--ease)}
.tile p{font-size:15px;line-height:1.45;color:rgba(246,243,238,.86);max-width:42ch}
.tile:hover img{transform:scale(1.045)}
.tile:hover h3 .ico{transform:translateX(4px)}
.t-drive{grid-column:span 2;grid-row:span 2}
.t-drive h3{font-size:clamp(1.6rem,2.2vw,2rem)}
.t-drive p{font-size:17px}
.t-pads,.t-comm{grid-column:span 2}
@media (max-width:1023px){
  .bento{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:230px}
}
@media (max-width:639px){
  .bento{grid-auto-rows:170px;gap:10px}
  .t-drive{grid-row:span 1;grid-column:span 2}
  .tile-body{padding:14px 16px}
  .tile h3{font-size:18px}
  .tile:not(.t-drive):not(.t-pads):not(.t-comm) p{display:none}
  .tile p{font-size:14px}
}

/* ── WHY MASTERCRETE ── */
.why{background:var(--surface);border-block:1px solid var(--line)}
.why-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:64px;align-items:center}
.why-photo img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 50%;border-radius:var(--r-media)}
.why h2{font-size:clamp(2rem,3.3vw,3rem)}
.points{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 36px;margin-top:40px}
.point .well{width:48px;height:48px;border-radius:var(--r-ctl);background:var(--surface-2);display:flex;
  align-items:center;justify-content:center;margin-bottom:16px;color:var(--accent-ink)}
.point .well .ico{width:26px;height:26px}
.point h3{font-size:19px;font-stretch:100%;letter-spacing:-.012em;margin-bottom:6px}
.point p{font-size:16px;color:var(--ink-2)}
@media (max-width:959px){
  .why-grid{grid-template-columns:1fr;gap:36px}
  .why-photo img{aspect-ratio:16/10}
}
@media (max-width:599px){.points{grid-template-columns:1fr;gap:28px}}

/* ── BUILDERS PANEL ── (panel styles live in site.css) */
.builders{padding-bottom:0}

/* ── OUR WORK (masonry; the photo viewer lives in site.css) ── */
.masonry{columns:4 240px;column-gap:14px}
.masonry button{display:block;width:100%;margin:0 0 14px;padding:0;border:0;background:var(--surface-2);
  border-radius:var(--r-media);overflow:hidden;cursor:zoom-in;break-inside:avoid}
.masonry img{width:100%;transition:transform .7s var(--ease)}
.masonry button:hover img{transform:scale(1.035)}
@media (max-width:639px){.masonry{columns:2;column-gap:10px}.masonry button{margin-bottom:10px}}

/* ── REVIEWS ── */
.reviews-grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:64px;align-items:start}
.stat-big{font-size:clamp(5rem,10vw,8.5rem);font-weight:800;font-stretch:112%;line-height:.9;letter-spacing:-.045em;
  color:var(--accent-ink);margin-bottom:16px}
.stat-cap{font-size:clamp(1.25rem,1.6vw,1.5rem);font-stretch:100%;line-height:1.2;margin-bottom:24px;max-width:22ch}
.quotes blockquote{border-top:1px solid var(--line);padding-top:24px}
.quotes .featured{border-top:0;padding-top:0;margin-bottom:40px}
.quotes .featured p{font-size:clamp(1.5rem,2.5vw,2.15rem);font-weight:600;line-height:1.28;letter-spacing:-.015em;
  margin-bottom:16px}
.quotes-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}
.quotes-pair p{font-size:19px;line-height:1.45;margin-bottom:12px}
.quotes cite{font-style:normal;font-size:15px;color:var(--ink-3)}
.quotes cite b{color:var(--ink);font-weight:700}
@media (max-width:959px){
  .reviews-grid{grid-template-columns:1fr;gap:40px}
  .stat-cap{max-width:none}
}
@media (max-width:599px){.quotes-pair{grid-template-columns:1fr;gap:24px}}

/* ── FREE ESTIMATE (steps + area + form) ── */
.estimate{background:var(--surface);border-top:1px solid var(--line)}
.estimate-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:64px;align-items:start}
.estimate .sec-head{margin-bottom:36px}
.estimate .sec-head a{color:var(--accent-ink);font-weight:700;white-space:nowrap}
.how{list-style:none;display:grid;gap:24px;margin-bottom:44px}
.how li{display:grid;grid-template-columns:48px 1fr;gap:16px;align-items:start}
.how .well{width:48px;height:48px;border-radius:var(--r-ctl);background:var(--surface-2);display:flex;
  align-items:center;justify-content:center;color:var(--accent-ink)}
.how .well .ico{width:24px;height:24px}
.how h3{font-size:18px;font-stretch:100%;letter-spacing:-.01em;margin:2px 0 4px}
.how p{font-size:16px;color:var(--ink-2)}
.area h3{display:flex;align-items:center;gap:8px;font-size:18px;font-stretch:100%;margin-bottom:12px}
.area h3 .ico{color:var(--accent-ink)}
.towns{display:flex;flex-wrap:wrap;gap:8px;list-style:none}
.towns li{padding:6px 14px;border:1px solid var(--line);border-radius:999px;font-size:14px;font-weight:600;
  background:var(--bg);color:var(--ink-2)}
.qform{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-media);padding:36px}
.qgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}
.field{display:grid;gap:8px;margin-bottom:20px}
.field > span{font-size:15px;font-weight:700}
.qform input,.qform select,.qform textarea{width:100%;min-height:50px;padding:12px 14px;font:inherit;font-size:16px;
  color:var(--ink);background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-ctl);
  transition:border-color .2s,box-shadow .2s}
.qform textarea{min-height:120px;resize:vertical}
.qform input::placeholder,.qform textarea::placeholder{color:var(--ink-3);opacity:1}
.qform input:focus,.qform select:focus,.qform textarea:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.qform input[type=file]{min-height:0;padding:10px;border-style:dashed;cursor:pointer;color:var(--ink-2);font-size:15px}
.qform input[type=file]::file-selector-button{margin-right:12px;padding:8px 14px;border:1.5px solid var(--ink);
  border-radius:8px;background:transparent;color:var(--ink);font:inherit;font-weight:700;cursor:pointer}
.qform input[type=file]::file-selector-button:hover{background:var(--ink);color:var(--bg)}
.qform .btn{width:100%;margin-top:4px;border:0}
.form-note{margin-top:14px;font-size:14px;color:var(--ink-3);text-align:center}
@media (max-width:959px){.estimate-grid{grid-template-columns:1fr;gap:48px}}
@media (max-width:599px){.qgrid{grid-template-columns:1fr}.qform{padding:22px 18px}}

/* ── MOTION ── (shared rise/reveal lives in site.css) */
@media (prefers-reduced-motion:reduce){
  .tile img,.masonry img{transition:none}
}

/* ── HERO PHOTO CROP ── 2026-11-07: video pulled, approved driveway photo. Phones show the driveway + garage side. */
.banner-media img{object-position:60% 70%}
@media (max-width:959px){.banner-media img{object-position:80% 100%}}
