/* Reusable hero/title-band template parts: the part wrapper must not add layout. */
.wp-site-blocks > .tv2-hero-part + * { margin-block-start: 0 !important; }
.wp-site-blocks > .tv2-hero-part > .echo { margin: 0; }
picture.tv2-pic { display: contents; }
/* Live footer part (DB 982) began with a stray U+FEFF that rendered one blank line above the footer.
   The BOM is stripped; this reproduces that line so v2 is pixel-identical. Remove only with Chris approval. */
footer.wp-block-template-part::before { content: "\200B"; display: block; }
/* Same for the front-page template (DB 1242): its leading U+FEFF rendered one blank line at the top of the home page. */
body.home .wp-site-blocks::before { content: "\200B"; display: block; }

/* === layoutfix-20261026: Playwright audit fixes (layout only) === */
/* Step Inside gallery: the inline <style> in the /about/ page content is not reaching the page, so the rail rendered as 1600px blocks. Same rules, from patterns/step-inside.php. */

  .stepinside,.si-lb{
    --evergreen:var(--t-teal-legacy); --deep:var(--t-ink-legacy); --sage:var(--t-sage-pop); --sage-light:var(--t-mist);
    --ivory:var(--t-ivory-pop); --gold:var(--t-gold-amber); --charcoal:var(--t-graphite); --stone:var(--t-slate);
    --ease:cubic-bezier(.22,.61,.36,1);
  }
  .stepinside *{box-sizing:border-box}

  /* ---- section shell ---- */
  .stepinside{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);padding:clamp(4rem,8vw,7rem) 0 clamp(3.5rem,6vw,5.5rem);overflow:hidden;background:var(--ivory)}
  .si-wrap{max-width:1240px;margin:0 auto;padding:0 clamp(1.25rem,4vw,2.5rem)}
  .si-head{max-width:640px}
  .si-eyebrow{display:inline-flex;align-items:center;gap:.6rem;
    font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;
    font-weight:600;color:var(--gold)}
  .si-eyebrow::before{content:"";width:26px;height:1px;background:var(--gold);opacity:.7}
  .si-title{font-family:Fraunces,serif;font-weight:400;
    font-size:clamp(1.7rem,5vw,3.4rem);line-height:1.06;letter-spacing:-.01em;
    color:var(--evergreen);margin:1.1rem 0 0;text-wrap:balance;overflow-wrap:break-word}
  .si-title em{font-style:italic;color:var(--gold)}
  .si-lead{margin:1.15rem 0 0;font-size:clamp(.98rem,1.4vw,1.12rem);
    line-height:1.6;color:var(--stone);max-width:52ch;overflow-wrap:break-word}

  /* ---- the walk-through rail ---- */
  .si-rail{margin-top:clamp(2.25rem,4vw,3rem);display:flex;gap:clamp(1rem,1.8vw,1.5rem);
    overflow-x:auto;scroll-snap-type:x mandatory;padding:.5rem clamp(1.25rem,4vw,2.5rem) 1.75rem;
    scrollbar-width:none;-ms-overflow-style:none}
  .si-rail::-webkit-scrollbar{display:none}
  .si-room{scroll-snap-align:start;flex:0 0 auto;position:relative;
    width:clamp(240px,24vw,300px);height:clamp(360px,56vh,468px);
    border-radius:14px;overflow:hidden;
    background:var(--deep);box-shadow:0 1px 0 rgb(var(--t-teal-legacy-rgb) / .06);
    text-decoration:none;color:inherit;isolation:isolate}
  .si-room::after{content:"";position:absolute;inset:0;z-index:1;
    background:linear-gradient(to top,rgb(var(--t-ink-legacy-rgb) / .78) 0%,rgb(var(--t-ink-legacy-rgb) / .18) 38%,rgb(var(--t-ink-legacy-rgb) / 0) 62%);
    transition:opacity .5s var(--ease)}
  .si-room img{display:block;width:100%;height:100%;object-fit:cover;
    transition:transform .9s var(--ease);will-change:transform}
  .si-room:hover img,.si-room:focus-visible img{transform:scale(1.045)}
  .si-room:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
  /* wayfinding tag */
  .si-tag{position:absolute;z-index:2;left:1rem;bottom:1rem;right:1rem;
    display:flex;flex-direction:column;gap:.15rem}
  .si-no{font-size:.7rem;letter-spacing:.2em;font-weight:600;color:var(--gold)}
  .si-name{font-family:Fraunces,serif;font-size:1.18rem;font-weight:500;color:var(--t-white);letter-spacing:.01em}
  /* height reveal via grid-template-rows (no layout-thrash) */
  .si-note-wrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--ease)}
  .si-note{overflow:hidden;min-height:0;font-size:.8rem;color:rgb(var(--t-white-rgb) / .72);
    line-height:1.35;opacity:0;transition:opacity .4s var(--ease)}
  .si-room:hover .si-note-wrap,.si-room:focus-visible .si-note-wrap{grid-template-rows:1fr}
  .si-room:hover .si-note,.si-room:focus-visible .si-note{opacity:1;padding-top:.3rem}
  /* first tile a touch wider — the "entrance" */
  .si-room--lead{width:clamp(260px,30vw,380px)}

  /* progress hairline */
  .si-progress{max-width:1240px;margin:0 auto;padding:0 clamp(1.25rem,4vw,2.5rem)}
  .si-track{height:2px;background:var(--sage-light);border-radius:2px;position:relative;overflow:hidden}
  .si-track::after{content:"";position:absolute;left:0;top:0;height:100%;width:26%;
    background:var(--gold);border-radius:2px}
  .si-foot{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;
    gap:.5rem 1.5rem;margin-top:1.1rem}
  .si-hint{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--stone)}
  .si-cta{font-size:.95rem;font-weight:600;color:var(--evergreen);text-decoration:none;
    display:inline-flex;align-items:center;gap:.5rem}
  .si-cta .arw{transition:transform .35s var(--ease)}
  .si-cta:hover{color:var(--gold)}
  .si-cta:hover .arw{transform:translateX(4px)}

  /* reveal */
  @media (prefers-reduced-motion:no-preference){
    .si-room{opacity:0;transform:translateY(14px);animation:rise .7s var(--ease) forwards}
    .si-rail .si-room:nth-child(1){animation-delay:.02s}
    .si-rail .si-room:nth-child(2){animation-delay:.06s}
    .si-rail .si-room:nth-child(3){animation-delay:.10s}
    .si-rail .si-room:nth-child(4){animation-delay:.14s}
    .si-rail .si-room:nth-child(5){animation-delay:.18s}
    @keyframes rise{to{opacity:1;transform:none}}
  }

  /* ---- lightbox (PIP viewer) ---- */
  .si-lb{position:fixed;inset:0;z-index:99999;display:none;place-items:center;
    background:rgb(var(--t-ink-legacy-rgb) / .86);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);
    padding:clamp(1rem,4vw,3rem)}
  .si-lb.open{display:grid;animation:si-fade .25s var(--ease)}
  @keyframes si-fade{from{opacity:0}to{opacity:1}}
  .si-lb-fig{margin:0;max-width:min(1080px,92vw);display:flex;flex-direction:column;
    align-items:center;gap:.85rem}
  .si-lb-img{max-width:100%;max-height:80vh;width:auto;height:auto;object-fit:contain;
    border-radius:12px;box-shadow:0 30px 90px rgb(var(--t-black-rgb) / .55);background:var(--deep)}
  .si-lb-cap{text-align:center}
  .si-lb-no{display:block;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;
    font-weight:600;color:var(--gold);margin-bottom:.2rem}
  .si-lb-name{font-family:Fraunces,serif;font-size:1.15rem;color:var(--t-white)}
  .si-lb button{position:fixed;border:0;cursor:pointer;color:var(--t-white);
    background:rgb(var(--t-white-rgb) / .12);border-radius:50%;line-height:1;transition:background .25s var(--ease)}
  .si-lb button:hover{background:rgb(var(--t-white-rgb) / .24)}
  .si-lb button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
  .si-lb-close{top:1.1rem;right:1.2rem;width:46px;height:46px;font-size:1.5rem}
  .si-lb-prev,.si-lb-next{top:50%;transform:translateY(-50%);width:50px;height:50px;font-size:1.7rem}
  .si-lb-prev{left:clamp(.75rem,3vw,2rem)} .si-lb-next{right:clamp(.75rem,3vw,2rem)}
  @media (max-width:640px){.si-lb-prev,.si-lb-next{top:auto;bottom:1.1rem;transform:none;width:44px;height:44px}
    .si-lb-prev{left:30%} .si-lb-next{right:30%}}


.stepinside .si-rail{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory}
.stepinside{overflow-x:clip}
.si-lb-img[src=""]{display:none}
.stepinside .si-cta{display:inline-flex;align-items:center;min-height:44px}
/* Tap targets >= 44px */
.wp-block-post-terms a{display:inline-flex;align-items:center;min-height:44px}
.echo .q-footer-col a[href^="tel:"],.echo .q-footer-col a[href*="maps.google"]{display:inline-flex;align-items:center;min-height:44px}
.thrive-topbar-social a,.echo .q-footer a:has(> svg){display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}
/* Phone sideways scroll: long words/links in post lists, footer container width */
.entry-content li,.entry-content p{overflow-wrap:anywhere}
.echo .q-footer .container{box-sizing:border-box;max-width:100%}
/* /about/: invisible leftover width from the inline gallery markup; clip at the content wrapper (no visible content is cut). */
.wp-block-post-content:has(> .stepinside){overflow-x:clip}
