:root{
  --ink:#050505;
  --ink-2:#0b0909;
  --paper:#ebe8e2;
  --paper-2:#d8d2c9;
  --white:#f7f4ef;
  --muted:#a29b96;
  --red:#ec001d;
  --red-dark:#7c0010;
  --line:rgba(255,255,255,.16);
  --ease-out:cubic-bezier(.23,1,.32,1);
  --ease-in-out:cubic-bezier(.77,0,.175,1);
  --display:"Oswald","Arial Narrow","Arial",sans-serif;
  --body:"Inter",Arial,sans-serif;
  --serif:"Oswald","Arial Narrow","Arial",sans-serif;
  --gutter:clamp(1.1rem,4vw,4.5rem);
  --section:clamp(3.75rem,5.4vw,5.75rem);
  --max:1380px;

  /* Production tokens, imported verbatim from texasshyboy.com so the hero
     rendered here is byte-for-byte the hero the client already approved. */
  --tsb-black:#030303;
  --tsb-deep:#080808;
  --tsb-panel:rgba(8,8,8,.78);
  --tsb-red:#d00016;
  --tsb-red-bright:#ff1b34;
  --tsb-red-dark:#65000a;
  --tsb-silver:#d8d8d8;
  --tsb-white:#f4f4f4;
  --tsb-muted:#9b9b9b;
  --tsb-line:rgba(255,255,255,.12);
  --tsb-red-line:rgba(208,0,22,.45);
  --tsb-glow-red:0 0 24px rgba(255,0,36,.45);
  --tsb-font-display:"Oswald","Bebas Neue","Anton","Impact","Arial Black",sans-serif;
  --tsb-font-body:"Inter","Montserrat",Arial,sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--ink);color-scheme:dark}
body{margin:0;background:var(--ink);color:var(--white);font-family:var(--body);font-size:16px;line-height:1.65;overflow-x:clip}
body.menu-open{overflow:hidden}
img,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
button{color:inherit}
::selection{background:var(--red);color:#fff}

.skip-link{position:fixed;left:1rem;top:-8rem;z-index:1000;background:#fff;color:#000;padding:.8rem 1rem}
.skip-link:focus{top:1rem}
.grain{position:fixed;inset:0;z-index:90;pointer-events:none;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E")}
.scroll-progress{position:fixed;left:0;right:0;top:0;height:2px;z-index:160;background:transparent}
.scroll-progress i{display:block;width:100%;height:100%;background:var(--red);transform:scaleX(0);transform-origin:left center}
.page-transition{position:fixed;inset:0;z-index:400;display:grid;place-items:center;overflow:hidden;background:#050505;clip-path:inset(0 0 0 0);pointer-events:none;transition:clip-path 760ms var(--ease-in-out)}
.page-transition::before,.page-transition::after,.page-transition>div{content:"";position:absolute;inset:0}
.page-transition::before{background:var(--red);transform:translateX(-66%);opacity:.95}
.page-transition::after{background:#220006;transform:translateX(66%);opacity:.8}
.page-transition>div{background:linear-gradient(90deg,transparent,rgba(255,255,255,.05),transparent);animation:transition-scan 1.6s linear infinite}
.page-transition span{position:relative;z-index:2;font-family:var(--display);font-size:clamp(4rem,10vw,10rem);line-height:.8;letter-spacing:-.02em;text-transform:uppercase}
.page-transition span b{display:block;color:var(--red);font-weight:400}
.page-transition>i{position:absolute;right:2rem;bottom:1.5rem;font-style:normal;font-size:.56rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase}
body.is-ready .page-transition{clip-path:inset(0 0 100% 0)}
body.is-leaving .page-transition{clip-path:inset(0 0 0 0);transition-duration:460ms;pointer-events:all}
@keyframes transition-scan{from{transform:translateX(-100%)}to{transform:translateX(100%)}}

.site-header{position:fixed;left:0;right:0;top:0;z-index:120;height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 var(--gutter);border-bottom:1px solid rgba(255,255,255,.1);background:linear-gradient(to bottom,rgba(0,0,0,.8),rgba(0,0,0,.2));transition:height 220ms var(--ease-out),background-color 220ms ease,backdrop-filter 220ms ease}
.site-header.is-scrolled{height:66px;background:rgba(3,3,3,.88);backdrop-filter:blur(18px)}
.brand{display:flex;align-items:center;gap:.8rem;min-width:255px}
.brand img{width:54px;height:54px;object-fit:contain}
.brand span{display:grid;line-height:1}
.brand strong{font-family:var(--display);font-size:1.35rem;letter-spacing:.045em}
.brand small{margin-top:.35rem;color:#9b9693;text-transform:uppercase;font-size:.56rem;font-weight:700;letter-spacing:.2em}
.main-nav{display:flex;align-items:center;gap:clamp(1.25rem,2.4vw,2.8rem)}
.main-nav a{position:relative;font-size:.7rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.main-nav a::after{content:"";position:absolute;left:0;right:0;bottom:-.65rem;height:1px;background:var(--red);transform:scaleX(0);transform-origin:right;transition:transform 220ms var(--ease-out)}
.main-nav a[aria-current="page"]::after{transform:scaleX(1)}
.header-tools{display:flex;align-items:center;gap:1rem}
.language-link{font-size:.65rem;font-weight:700;letter-spacing:.16em;padding:.7rem}
.nav-toggle{display:none;border:0;background:none;width:44px;height:44px;padding:10px}
.nav-toggle span{display:block;width:100%;height:1px;background:#fff;margin:7px 0;transition:transform 180ms var(--ease-out)}
.nav-toggle[aria-expanded="true"] span:first-child{transform:translateY(4px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:last-child{transform:translateY(-4px) rotate(-45deg)}

.button{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:.9rem 1.45rem;border:1px solid transparent;font-family:var(--display);font-size:1rem;line-height:1;letter-spacing:.07em;text-transform:uppercase;transition:transform 150ms var(--ease-out),background-color 200ms ease,color 200ms ease,border-color 200ms ease;cursor:pointer}
.button:active{transform:scale(.97)}
.button--red{background:var(--red);color:#fff}
.button--ghost{border-color:rgba(255,255,255,.42);background:rgba(0,0,0,.18);color:#fff;backdrop-filter:blur(6px)}
.actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}

.eyebrow{margin:0 0 1.25rem;color:var(--red);font-size:.68rem;font-weight:700;line-height:1.3;letter-spacing:.23em;text-transform:uppercase}
.eyebrow::before{content:"";display:inline-block;width:2.2rem;height:1px;margin:0 .9rem .25rem 0;background:currentColor}
h1,h2,h3{overflow-wrap:normal;word-break:normal}
p{overflow-wrap:break-word}
h2 em,h1 em{font-family:var(--serif);font-style:normal;font-weight:600;text-transform:inherit}

/* The homepage hero lives in its own verbatim block at the end of this file.
   Nothing above may declare .hero rules, or the imported cascade breaks. */

.word-reel{position:relative;z-index:5;overflow:hidden;border-block:1px solid rgba(255,255,255,.15);background:var(--red);color:#fff}
.word-reel div{display:flex;width:max-content;animation:reel 32s linear infinite}
.word-reel span{display:flex;align-items:center;min-height:66px;padding:0 2.2rem;font-family:var(--display);font-size:1.25rem;letter-spacing:.08em;text-transform:uppercase}
.word-reel span::after{content:"✦";margin-left:4.4rem;font-size:.7rem}
@keyframes reel{to{transform:translateX(-50%)}}

.manifesto{max-width:var(--max);margin:auto;padding:var(--section) var(--gutter);display:grid;grid-template-columns:minmax(260px,.8fr) minmax(480px,1.25fr);gap:clamp(3rem,7vw,8rem)}
.manifesto__title{position:sticky;top:120px;align-self:start}
.manifesto h2,.experience-index h2,.price-scene h2,.process-scene h2,.film-break h2,.faq-scene h2,.service-catalog h2,.decision-grid h2,.city-pulse h2,.logistics-ledger h2,.service-orbit h2,.moment-sequence h2,.booking-facts h2,.profile-story h2,.values-stage h2,.proof-grid h2,.trust-callout h2,.contact-stage h2,.end-frame h2{margin:0;font-family:var(--display);font-weight:400;line-height:.92;letter-spacing:-.018em;text-transform:uppercase}
.manifesto h2{font-size:clamp(3.15rem,4.7vw,5.2rem)}
.statement-rows{border-top:1px solid var(--line)}
.statement-rows article{display:grid;grid-template-columns:3.2rem minmax(150px,.45fr) 1fr;gap:1.5rem;padding:2.2rem 0;border-bottom:1px solid var(--line);align-items:start}
.statement-rows b{font-size:.62rem;letter-spacing:.14em;color:var(--red)}
.statement-rows h3{margin:0;font-family:var(--display);font-size:clamp(1.45rem,2.4vw,2.2rem);font-weight:400;line-height:1;text-transform:uppercase}
.statement-rows p{margin:0;color:#aaa4a0;font-size:.92rem;line-height:1.7}

.film-break{position:relative;min-height:86svh;overflow:hidden;display:flex;align-items:flex-end;isolation:isolate}
.film-break__media{position:absolute;inset:-7%;z-index:-2}
.film-break__media img{width:100%;height:115%;object-fit:cover;object-position:center 38%;filter:saturate(.72) contrast(1.12)}
.film-break::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(0,0,0,.08),rgba(0,0,0,.1) 35%,rgba(0,0,0,.92)),linear-gradient(90deg,rgba(0,0,0,.75),transparent 64%)}
.film-break__copy{width:min(840px,90vw);padding:var(--section) var(--gutter)}
.film-break h2{font-size:clamp(4rem,8.4vw,8.6rem)}
.film-break__copy>p:last-child{max-width:580px;margin:1.6rem 0 0;color:#d2ccc7;font-size:1rem}

.experience-index{display:grid;grid-template-columns:minmax(260px,.72fr) minmax(520px,1.28fr);gap:clamp(3rem,7vw,8rem);padding:var(--section) var(--gutter);max-width:var(--max);margin:auto}
.experience-index__heading{position:sticky;top:120px;align-self:start}
.experience-index h2{font-size:clamp(3.2rem,5.6vw,5.6rem)}
.experience-index__list{border-top:1px solid var(--line)}
.experience-index__list a{display:grid;grid-template-columns:3rem 1fr minmax(180px,.65fr) 2rem;align-items:center;gap:1.2rem;padding:2rem 0;border-bottom:1px solid var(--line);transition:color 220ms ease,transform 220ms var(--ease-out)}
.experience-index__list b{font-size:.6rem;color:var(--red)}
.experience-index__list h3{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(1.8rem,3vw,3rem);line-height:1;text-transform:uppercase}
.experience-index__list p{margin:0;color:#99938f;font-size:.84rem;line-height:1.6}
.experience-index__list i{font-style:normal;color:var(--red);font-size:1.2rem}

.price-scene{position:relative;display:grid;grid-template-columns:minmax(320px,.86fr) minmax(460px,1.14fr);min-height:850px;background:var(--paper);color:#111}
.price-scene__portrait{min-height:780px;overflow:hidden}
.price-scene__portrait img{width:100%;height:100%;object-fit:cover;object-position:center 18%;filter:saturate(.78) contrast(1.06)}
.price-scene__content{align-self:center;padding:var(--section) clamp(2rem,7vw,8rem)}
.price-scene h2{font-size:clamp(3.6rem,6.4vw,6.8rem)}
.price-scene dl{margin:3rem 0;border-top:1px solid rgba(0,0,0,.2)}
.price-scene dl div{display:grid;grid-template-columns:1fr 1fr;gap:1rem;padding:1.4rem 0;border-bottom:1px solid rgba(0,0,0,.2)}
.price-scene dt{font-family:var(--display);font-size:1.8rem;text-transform:uppercase}
.price-scene dd{display:flex;justify-content:space-between;gap:1rem;margin:0;color:#5b5652;font-size:.76rem;text-transform:uppercase;letter-spacing:.08em}
.price-scene dd strong{color:#111}
.price-scene .button--ghost{color:#111;border-color:rgba(0,0,0,.4);background:transparent}
.fine-print{color:#605b57;font-size:.75rem;line-height:1.7}

.process-scene{max-width:var(--max);margin:auto;padding:var(--section) var(--gutter);display:grid;grid-template-columns:minmax(280px,.7fr) minmax(520px,1.3fr);gap:clamp(3rem,7vw,8rem)}
.process-scene__heading{position:sticky;top:120px;align-self:start}
.process-scene h2{font-size:clamp(3.3rem,5.7vw,5.8rem)}

.faq-scene{max-width:var(--max);margin:auto;padding:var(--section) var(--gutter);display:grid;grid-template-columns:minmax(280px,.72fr) minmax(520px,1.28fr);gap:clamp(3rem,7vw,8rem);border-top:1px solid var(--line)}
.faq-scene__intro{position:sticky;top:120px;align-self:start}
.faq-scene h2{font-size:clamp(3.4rem,6vw,6rem)}
.faq-scene__intro>p:last-child{max-width:370px;color:#96908c}
.accordion{border-top:1px solid var(--line)}
.accordion__item{border-bottom:1px solid var(--line)}
.accordion button{display:flex;width:100%;align-items:center;justify-content:space-between;gap:2rem;padding:1.7rem 0;border:0;background:transparent;text-align:left;font-weight:600;cursor:pointer}
.accordion button span{max-width:620px}
.accordion button i{position:relative;width:20px;height:20px;flex:0 0 auto}
.accordion button i::before,.accordion button i::after{content:"";position:absolute;left:2px;right:2px;top:9px;height:1px;background:var(--red);transition:transform 180ms var(--ease-out)}
.accordion button i::after{transform:rotate(90deg)}
.accordion button[aria-expanded="true"] i::after{transform:rotate(0)}
.accordion__item>div{overflow:hidden;padding:0 3rem 1.6rem 0;color:#a8a19d}
.accordion__item>div p{margin:0;max-width:680px}

.scene-hero{position:relative;min-height:78svh;display:flex;align-items:flex-end;overflow:hidden;padding:clamp(8rem,10vw,9.5rem) var(--gutter) clamp(3.25rem,5vw,4.75rem);isolation:isolate}
.scene-hero__media{position:absolute;inset:-6%;z-index:-3}
.scene-hero__media img{width:100%;height:112%;object-fit:cover;filter:saturate(.72) contrast(1.12)}
.scene-hero__shade{position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,rgba(0,0,0,.93) 0%,rgba(0,0,0,.72) 41%,rgba(0,0,0,.12) 78%),linear-gradient(0deg,rgba(0,0,0,.82),transparent 65%)}
.scene-hero__content{width:min(850px,72vw)}
.scene-hero h1{margin:0;font-family:var(--display);font-size:clamp(3.9rem,6.2vw,6.6rem);font-weight:400;line-height:.87;letter-spacing:-.018em;text-transform:uppercase}
.scene-hero__intro{max-width:650px;margin:1.6rem 0;color:#d0cbc7;font-size:clamp(.92rem,1.2vw,1.08rem)}
.scene-hero .actions{margin-top:1.6rem}
.scene-hero__note{position:absolute;right:var(--gutter);bottom:clamp(3.25rem,5vw,4.75rem);width:min(280px,22vw);padding:1.4rem;border-left:1px solid var(--red);background:rgba(0,0,0,.35);backdrop-filter:blur(12px)}
.scene-hero__note span{color:var(--red);font-size:.62rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase}
.scene-hero__note p{margin:.6rem 0 0;color:#c4bdb9;font-size:.76rem;line-height:1.6}
.scene-number{position:absolute;right:var(--gutter);top:110px;color:rgba(255,255,255,.15);font-family:var(--display);font-size:clamp(4rem,8vw,8rem);line-height:1}
.breadcrumbs{display:flex;align-items:center;gap:.6rem;margin-top:1.8rem;color:#817b77;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase}
.breadcrumbs i{font-style:normal;color:var(--red)}
.scene-hero--portrait{background:
  radial-gradient(circle at 74% 44%,rgba(236,0,29,.16),transparent 32%),
  linear-gradient(115deg,#050505 0%,#080606 55%,#170407 100%)}
.scene-hero--portrait .scene-hero__media{inset:76px 0 0 44%;display:flex;align-items:flex-end;justify-content:center}
.scene-hero--portrait .scene-hero__media::before{content:"";position:absolute;inset:6% 8% 0;background:radial-gradient(circle,rgba(236,0,29,.18),transparent 62%);filter:blur(30px)}
.scene-hero--portrait .scene-hero__media img{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;filter:saturate(.82) contrast(1.08);transform-origin:center bottom}
.scene-hero--portrait .scene-hero__shade{background:linear-gradient(90deg,rgba(0,0,0,.98) 0%,rgba(0,0,0,.85) 39%,rgba(0,0,0,.16) 69%,rgba(0,0,0,.35) 100%),linear-gradient(0deg,rgba(0,0,0,.75),transparent 42%)}
.scene-hero--portrait .scene-hero__content{width:min(800px,62vw)}

.lookbook{position:relative;padding:var(--section) 0 var(--section) var(--gutter);overflow:hidden;background:#080707;border-block:1px solid var(--line)}
.lookbook::before{content:"LOOK ARCHIVE";position:absolute;right:-.02em;top:-.08em;color:rgba(255,255,255,.025);font-family:var(--display);font-size:clamp(8rem,22vw,24rem);line-height:.8;white-space:nowrap;pointer-events:none}
.lookbook__intro{position:relative;z-index:2;display:grid;grid-template-columns:minmax(280px,.72fr) minmax(520px,1.28fr);gap:clamp(3rem,7vw,8rem);max-width:calc(var(--max) - var(--gutter));padding-right:var(--gutter);margin:0 auto 3.5rem 0}
.lookbook__intro h2,.portrait-triptych h2{margin:0;font-family:var(--display);font-size:clamp(3.7rem,6.6vw,6.9rem);font-weight:400;line-height:.9;letter-spacing:-.02em;text-transform:uppercase}
.lookbook__intro>div:first-child>p:last-child{max-width:540px;color:#9f9894}
.lookbook__controls{display:flex;align-items:end;justify-content:flex-end;gap:1rem;padding-bottom:.7rem}
.lookbook__controls button{display:grid;place-items:center;width:48px;height:48px;border:1px solid var(--line);border-radius:50%;background:transparent;color:#fff;font-size:1.05rem;cursor:pointer;transition:transform 150ms var(--ease-out),background-color 180ms ease,color 180ms ease}
.lookbook__controls button:active{transform:scale(.94)}
.lookbook__controls span{position:relative;width:min(180px,18vw);height:1px;background:rgba(255,255,255,.2)}
.lookbook__controls span i{position:absolute;left:0;top:0;width:100%;height:1px;background:var(--red);transform:scaleX(.2);transform-origin:left center;transition:transform 180ms ease-out}
.lookbook__track{display:flex;gap:clamp(1rem,2vw,2rem);overflow-x:auto;overflow-y:hidden;padding:0 max(var(--gutter),calc((100vw - var(--max))/2)) 1rem 0;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;cursor:grab}
.lookbook__track:active{cursor:grabbing}
.lookbook__track::-webkit-scrollbar{display:none}
.lookbook__card{position:relative;flex:0 0 clamp(270px,28vw,410px);margin:0;scroll-snap-align:start;transition:transform 240ms var(--ease-out)}
.lookbook__card:nth-child(2),.lookbook__card:nth-child(5){padding-top:4.5rem}
.lookbook__card:nth-child(3){flex-basis:clamp(330px,35vw,520px)}
.lookbook__image{position:relative;aspect-ratio:.72;overflow:hidden;background:#151111}
.lookbook__card:nth-child(3) .lookbook__image{aspect-ratio:.9}
.lookbook__image::after{content:"";position:absolute;inset:0;border:1px solid rgba(255,255,255,.15);box-shadow:inset 0 0 80px rgba(0,0,0,.18);pointer-events:none}
.lookbook__image img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,center 15%);filter:saturate(.82) contrast(1.05);transition:transform 900ms var(--ease-out),filter 300ms ease}
.lookbook__card figcaption{display:grid;grid-template-columns:1fr auto;gap:.8rem;align-items:center;padding:1rem 0;border-bottom:1px solid var(--line);text-transform:uppercase}
.lookbook__card figcaption span{color:var(--red);font-size:.57rem;font-weight:800}
.lookbook__card figcaption strong{font-family:var(--display);font-size:1.5rem;font-weight:400;line-height:1}
.lookbook__card figcaption i{color:#716b67;font-size:.5rem;font-style:normal;letter-spacing:.13em}

.portrait-triptych{position:relative;display:grid;grid-template-columns:minmax(280px,.62fr) minmax(600px,1.38fr);gap:clamp(3rem,7vw,8rem);min-height:900px;padding:var(--section) var(--gutter);overflow:hidden;background:var(--paper);color:#111}
.portrait-triptych::before{content:"TSB";position:absolute;left:-.03em;bottom:-.18em;color:rgba(0,0,0,.035);font-family:var(--display);font-size:clamp(14rem,32vw,34rem);line-height:.8;pointer-events:none}
.portrait-triptych__copy{position:sticky;top:120px;align-self:start;z-index:3}
.portrait-triptych__copy>p:last-child{max-width:440px;color:#5f5955}
.portrait-triptych__images{position:relative;z-index:2;display:grid;grid-template-columns:repeat(6,1fr);gap:1rem;align-items:start;min-height:720px}
.portrait-triptych__frame{position:relative;margin:0;overflow:hidden;background:#171414;box-shadow:0 28px 70px rgba(0,0,0,.18);transition:transform 260ms var(--ease-out)}
.portrait-triptych__frame img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,center 12%);filter:saturate(.83) contrast(1.04);transition:transform 1.1s var(--ease-out),filter 300ms ease}
.portrait-triptych__frame figcaption{position:absolute;left:0;bottom:0;padding:.8rem 1rem;background:#050505;color:#fff;font-size:.52rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase}
.lookbook__image::after,.portrait-triptych__frame::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(circle at var(--pointer-x,50%) var(--pointer-y,38%),rgba(255,255,255,.14),transparent 34%);mix-blend-mode:soft-light;opacity:.35;transition:opacity 300ms ease}
.lookbook__card:hover .lookbook__image::after,.portrait-triptych__frame:hover::after{opacity:.85}
.portrait-triptych__frame--1{grid-column:1/4;height:640px}
.portrait-triptych__frame--2{grid-column:4/7;height:560px;margin-top:7rem}
.portrait-triptych__frame--3{grid-column:2/6;height:500px;margin-top:-10rem}
.portrait-triptych--overlap{background:#080707;color:#fff}
.portrait-triptych--overlap::before{color:rgba(255,255,255,.03)}
.portrait-triptych--overlap .portrait-triptych__copy>p:last-child{color:#9d9692}
.portrait-triptych--overlap .portrait-triptych__frame--1{grid-column:1/5;height:700px}
.portrait-triptych--overlap .portrait-triptych__frame--2{grid-column:4/7;height:590px;margin-top:10rem;z-index:2}
.portrait-triptych--frames .portrait-triptych__images{grid-template-columns:repeat(3,1fr);align-items:center}
.portrait-triptych--frames .portrait-triptych__frame{grid-column:auto;height:590px;margin:0}
.portrait-triptych--frames .portrait-triptych__frame:nth-child(2){height:700px}
.portrait-triptych--frames .portrait-triptych__frame:nth-child(3){height:540px}
.portrait-triptych--offset .portrait-triptych__frame--1{grid-column:1/4;height:590px;margin-top:7rem}
.portrait-triptych--offset .portrait-triptych__frame--2{grid-column:4/7;height:700px;margin:0}
.portrait-triptych--poster{grid-template-columns:1fr;background:var(--red);color:#fff}
.portrait-triptych--poster::before{color:rgba(0,0,0,.08)}
.portrait-triptych--poster .portrait-triptych__copy{position:relative;top:auto;display:grid;grid-template-columns:.4fr 1.2fr .7fr;gap:3rem;align-items:end}
.portrait-triptych--poster .portrait-triptych__copy>p:last-child{color:#fff}
.portrait-triptych--poster .portrait-triptych__images{grid-template-columns:repeat(3,1fr);min-height:620px}
.portrait-triptych--poster .portrait-triptych__frame{grid-column:auto;height:620px;margin:0;box-shadow:0 30px 90px rgba(0,0,0,.25)}
.portrait-triptych--poster .portrait-triptych__frame:nth-child(2){transform:translateY(3rem)}

.service-catalog{max-width:var(--max);margin:auto;padding:var(--section) var(--gutter)}
.service-catalog__intro{display:grid;grid-template-columns:.65fr 1.35fr;gap:4rem;margin-bottom:4rem}
.service-catalog h2{font-size:clamp(3.5rem,6.7vw,6.8rem)}
.service-catalog__cards{border-top:1px solid var(--line)}
.service-catalog__cards a{display:grid;grid-template-columns:3rem 1fr 130px;gap:2rem;align-items:center;padding:2.3rem 0;border-bottom:1px solid var(--line)}
.service-catalog__cards span{color:var(--red);font-size:.62rem;font-weight:700}
.service-catalog__cards h3{margin:0 0 .35rem;font-family:var(--display);font-size:clamp(2rem,3vw,3.2rem);font-weight:400;line-height:1;text-transform:uppercase}
.service-catalog__cards p{max-width:600px;margin:0;color:#9d9692;font-size:.86rem}
.service-catalog__cards b{font-family:var(--display);font-size:2.6rem;font-weight:400;text-align:right}
.service-catalog__cards small{display:block;font-family:var(--body);font-size:.5rem;letter-spacing:.16em}

.decision-grid,.logistics-ledger,.moment-sequence,.values-stage,.proof-grid{max-width:var(--max);margin:auto;padding:var(--section) var(--gutter);display:grid;grid-template-columns:minmax(280px,.72fr) minmax(520px,1.28fr);gap:clamp(3rem,7vw,8rem)}
.decision-grid>div:first-child,.logistics-ledger__title,.moment-sequence__intro,.values-stage>div:first-child,.proof-grid__title{position:sticky;top:120px;align-self:start}
.decision-grid h2,.logistics-ledger h2,.moment-sequence h2,.values-stage h2,.proof-grid h2{font-size:clamp(3.3rem,5.8vw,5.9rem)}

.city-pulse{min-height:730px;display:grid;grid-template-columns:1fr 1fr;background:var(--paper);color:#111}
.city-pulse__map{position:relative;display:grid;place-items:center;overflow:hidden;background:
  linear-gradient(rgba(0,0,0,.08) 1px,transparent 1px),
  linear-gradient(90deg,rgba(0,0,0,.08) 1px,transparent 1px);
  background-size:40px 40px}
.city-pulse__map::after,.city-pulse__map::before,.city-pulse__map i{content:"";position:absolute;left:50%;top:50%;border:1px solid rgba(0,0,0,.2);border-radius:50%;transform:translate(-50%,-50%)}
.city-pulse__map::before{width:52%;aspect-ratio:1}
.city-pulse__map::after{width:78%;aspect-ratio:1}
.city-pulse__map i:nth-of-type(1){width:24%;aspect-ratio:1;border-color:rgba(236,0,29,.6)}
.city-pulse__map i:nth-of-type(2){width:104%;aspect-ratio:1;border-color:rgba(0,0,0,.12)}
.city-pulse__map i:nth-of-type(3){width:9px;height:9px;border:0;background:var(--red);box-shadow:0 0 0 20px rgba(236,0,29,.12),0 0 70px var(--red)}
.city-pulse__map span{position:relative;z-index:2;padding:1.5rem 2rem;background:var(--red);border-radius:50%;color:#fff;font-family:var(--display);font-size:clamp(2.4rem,4vw,4rem);line-height:1;text-transform:uppercase}
.city-pulse__copy{align-self:center;padding:var(--section) clamp(2rem,7vw,8rem)}
.city-pulse h2{font-size:clamp(3.5rem,6vw,6.2rem)}
.city-pulse__copy>p:nth-of-type(2){max-width:560px;color:#5a5551}
.city-pulse .button--ghost{color:#111;border-color:rgba(0,0,0,.38);background:transparent}

.service-orbit{min-height:680px;display:grid;grid-template-columns:1fr 1fr;align-items:center;overflow:hidden;background:var(--paper);color:#111}
.service-orbit__number{display:grid;place-items:center;min-height:680px;background:var(--red);color:#fff;font-family:var(--display);font-size:clamp(5rem,12vw,13rem);line-height:.8;letter-spacing:-.04em;text-align:center}
.service-orbit__copy{padding:var(--section) clamp(2rem,7vw,8rem)}
.service-orbit h2{font-size:clamp(3.3rem,5.7vw,5.8rem)}
.service-orbit__copy>p:last-child{color:#5a5551}

.booking-facts{max-width:var(--max);margin:auto;padding:var(--section) var(--gutter);display:grid;grid-template-columns:1fr 1fr;gap:clamp(3rem,8vw,9rem);align-items:start}
.booking-facts h2{font-size:clamp(3.5rem,6.4vw,6.6rem)}
.booking-facts ul{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}
.booking-facts li{padding:1.2rem 0;border-bottom:1px solid var(--line);font-family:var(--display);font-size:1.7rem;text-transform:uppercase}
.booking-facts .actions{grid-column:2}

.profile-story{display:grid;grid-template-columns:1fr 1fr;min-height:850px;background:var(--paper);color:#111}
.profile-story__image{overflow:hidden}
.profile-story__image img{width:100%;height:110%;object-fit:cover;object-position:center 34%}
.profile-story__copy{align-self:center;padding:var(--section) clamp(2rem,7vw,8rem)}
.profile-story h2{font-size:clamp(3.5rem,6vw,6.2rem)}
.profile-story__copy>p:nth-of-type(2){color:#5f5955}
.profile-story blockquote{margin:2.5rem 0 0;padding:1.5rem 0;border-block:1px solid rgba(0,0,0,.25);font-family:var(--serif);font-size:clamp(1.5rem,2.6vw,2.5rem);line-height:1.25}

.trust-callout{padding:var(--section) var(--gutter);text-align:center;background:var(--red)}
.trust-callout p{margin:0 0 1rem;font-size:.67rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase}
.trust-callout h2{max-width:850px;margin:0 auto 2rem;font-size:clamp(4rem,8vw,8rem)}
.trust-callout .button{background:#050505}

.contact-stage{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(3rem,8vw,9rem);max-width:var(--max);margin:auto;padding:var(--section) var(--gutter)}
.contact-stage__aside{position:sticky;top:120px;align-self:start}
.contact-stage h2{font-size:clamp(3.8rem,6.7vw,6.8rem)}
.contact-stage ul{margin:2rem 0;padding:0;list-style:none;color:#aaa29d}
.contact-stage li{padding:.7rem 0;border-bottom:1px solid var(--line)}
.direct-lines{display:grid;gap:.6rem}
.direct-lines a{display:flex;justify-content:space-between;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line)}
.direct-lines span{color:#8f8985;font-size:.66rem;text-transform:uppercase;letter-spacing:.13em}
.booking-form{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
.booking-form label{display:grid;gap:.55rem}
.booking-form label span{font-size:.63rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#aaa39f}
.booking-form input,.booking-form select,.booking-form textarea{width:100%;border:1px solid rgba(255,255,255,.23);border-radius:0;background:#0c0a0a;color:#fff;padding:1rem;outline:none;transition:border-color 180ms ease,background-color 180ms ease}
.booking-form input:focus,.booking-form select:focus,.booking-form textarea:focus{border-color:var(--red);background:#100b0c}
.booking-form textarea{resize:vertical}
.booking-form .wide{grid-column:1/-1}
.form-note{margin:0;color:#77716e;font-size:.72rem}

.legal-hero{padding:clamp(10rem,17vw,14rem) var(--gutter) clamp(4rem,7vw,7rem);max-width:var(--max);margin:auto;border-bottom:1px solid var(--line)}
.legal-hero h1{margin:0;font-family:var(--display);font-size:clamp(4.6rem,9vw,9rem);font-weight:400;line-height:.9;text-transform:uppercase}
.legal-hero>p:nth-of-type(2){max-width:680px;color:#9f9894}
.legal-body{display:grid;grid-template-columns:minmax(180px,.35fr) minmax(600px,1.3fr);gap:clamp(3rem,8vw,9rem);max-width:var(--max);margin:auto;padding:var(--section) var(--gutter)}
.legal-body aside{position:sticky;top:120px;align-self:start}
.legal-body aside>span{font-family:var(--display);font-size:6rem;line-height:1;color:var(--red)}
.legal-body aside p{color:#88817d;text-transform:uppercase;font-size:.6rem;letter-spacing:.16em}
.legal-body aside a{font-weight:700}
.legal-body article{display:grid;grid-template-columns:2.5rem minmax(180px,.4fr) 1fr;gap:1.6rem;padding:2rem 0;border-top:1px solid var(--line)}
.legal-body article b{font-size:.62rem;color:var(--red)}
.legal-body article h2{margin:0;font-family:var(--display);font-size:2rem;font-weight:400;line-height:1;text-transform:uppercase}
.legal-body article p{margin:0;color:#a59e9a;font-size:.9rem}

.end-frame{position:relative;min-height:620px;display:grid;place-items:center;overflow:hidden;padding:var(--section) var(--gutter);text-align:center;background:
  radial-gradient(circle at 50% 35%,rgba(236,0,29,.22),transparent 34%),
  linear-gradient(rgba(0,0,0,.86),rgba(0,0,0,.96)),
  url("/assets/texas-shyboy/master/city-bg-green-white.webp") center/cover}
.end-frame__copy{position:relative;z-index:2;max-width:900px}
.end-frame h2{font-size:clamp(4.5rem,9.5vw,9.5rem)}
.end-frame__copy>p:nth-of-type(2){max-width:650px;margin:1.5rem auto;color:#aaa29e}
.end-frame .actions{justify-content:center;margin-top:2rem}
.end-frame__line{position:absolute;left:50%;top:0;width:1px;height:76px;background:linear-gradient(var(--red),transparent)}
.end-frame__stamp{position:absolute;right:var(--gutter);bottom:2rem;display:grid;text-align:right}
.end-frame__stamp span{font-family:var(--display);font-size:3.5rem;line-height:1;color:rgba(255,255,255,.18)}
.end-frame__stamp small{font-size:.52rem;letter-spacing:.15em;text-transform:uppercase;color:#777}

.site-footer{position:relative;background:#030303;border-top:1px solid var(--line);padding:2.5rem var(--gutter) 1.1rem;overflow:hidden}
.footer-mark{position:absolute;left:var(--gutter);top:50%;width:130px;transform:translateY(-55%);opacity:.82;mix-blend-mode:screen}
.footer-mark video{width:100%;aspect-ratio:1;object-fit:contain}
.footer-main{min-height:150px;display:grid;grid-template-columns:1fr 1.2fr;gap:4rem;align-items:center;max-width:var(--max);margin:auto;padding-left:180px}
.footer-statement p{max-width:440px;margin:0 0 .7rem;font-family:var(--display);font-size:clamp(1.8rem,3vw,3rem);line-height:.95;text-transform:uppercase}
.footer-statement>a{color:var(--red);font-size:.72rem;font-weight:700;letter-spacing:.12em}
.footer-links{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.8rem 1.4rem}
.footer-links a{font-size:.65rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:#aaa39f}
.footer-bottom{display:flex;justify-content:space-between;gap:1.5rem;max-width:var(--max);margin:auto;padding-top:1rem;border-top:1px solid var(--line);color:#625d5a;font-size:.58rem;letter-spacing:.06em}
.footer-bottom a{color:#918986}
.mobile-book{display:none}

.not-found{min-height:100svh;display:grid;place-content:center;justify-items:center;text-align:center;padding:8rem var(--gutter);background:radial-gradient(circle,rgba(236,0,29,.2),transparent 42%)}
.not-found span{font-family:var(--display);font-size:clamp(8rem,22vw,20rem);line-height:.7;color:rgba(255,255,255,.08)}
.not-found h1{margin:1rem 0;font-family:var(--display);font-size:clamp(3rem,7vw,7rem);font-weight:400;text-transform:uppercase}
.not-found p{color:#9e9793}

[data-reveal]{opacity:0;transform:translate3d(0,26px,0);clip-path:inset(0 0 14% 0);transition:opacity 850ms var(--ease-out),transform 850ms var(--ease-out),clip-path 900ms var(--ease-out)}
[data-reveal].is-visible{opacity:1;transform:translate3d(0,0,0);clip-path:inset(0 0 0 0)}
[data-reveal="image"]{opacity:1;transform:none;clip-path:none;overflow:hidden}
[data-reveal="image"] img{clip-path:inset(0 0 100% 0);transform:scale(1.075);transition:clip-path 1050ms var(--ease-in-out),transform 1350ms var(--ease-out),filter 300ms ease}
[data-reveal="image"].is-visible img{clip-path:inset(0 0 0 0);transform:scale(1)}

@supports (animation-timeline:view()){
  .film-break__media img,.profile-story__image img{animation:cinema-breathe linear both;animation-timeline:view();animation-range:entry 0% exit 100%}
  @keyframes cinema-breathe{from{transform:scale(1.08) translate3d(0,-1.5%,0)}to{transform:scale(1.01) translate3d(0,1.5%,0)}}
}

@media (hover:hover) and (pointer:fine){
  .button--red:hover{background:#fff;color:#080808;transform:translateY(-2px)}
  .button--ghost:hover{border-color:#fff;background:#fff;color:#070707;transform:translateY(-2px)}
  .experience-index__list a:hover,.service-catalog__cards a:hover{transform:translateX(8px);color:var(--red)}
  .footer-links a:hover,.main-nav a:hover{color:#fff}
  .lookbook__card:hover .lookbook__image img,.portrait-triptych__frame:hover img{transform:scale(1.035);filter:saturate(1) contrast(1.02)}
  .lookbook__controls button:hover{background:#fff;color:#070707}
}

@media (max-width:1100px){
  .main-nav{gap:1.2rem}
  .header-book{display:none}
  .scene-hero__content{width:76vw}
  .scene-hero__note{display:none}
  .scene-hero--portrait .scene-hero__content{width:68vw}
  .portrait-triptych{grid-template-columns:minmax(250px,.5fr) minmax(560px,1.5fr);gap:3rem}
  .manifesto,.experience-index,.process-scene,.faq-scene,.decision-grid,.logistics-ledger,.moment-sequence,.values-stage,.proof-grid{grid-template-columns:.8fr 1.2fr;gap:3rem}
  .statement-rows article{grid-template-columns:2.5rem 160px 1fr}
  .footer-main{grid-template-columns:1fr;padding-left:160px;gap:1rem}
  .footer-links{justify-content:flex-start}
}

@media (max-width:820px){
  :root{--section:clamp(4.5rem,15vw,7rem)}
  .site-header{height:68px}
  .brand{min-width:0}
  .brand img{width:47px;height:47px}
  .brand strong{font-size:1.18rem}
  .brand small{font-size:.48rem}
  .language-link{margin-left:auto}
  .nav-toggle{display:block}
  .main-nav{position:fixed;inset:68px 0 0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:0;padding:2rem var(--gutter);background:rgba(3,3,3,.97);backdrop-filter:blur(20px);opacity:0;visibility:hidden;transform:translateY(-12px);transition:opacity 220ms ease,transform 220ms var(--ease-out),visibility 0s linear 220ms}
  .main-nav.is-open{opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s}
  .main-nav a{width:100%;padding:.7rem 0;font-family:var(--display);font-size:clamp(2.5rem,10vw,5rem);font-weight:400;line-height:1;border-bottom:1px solid var(--line)}
  .main-nav a::after{display:none}

  .manifesto,.experience-index,.process-scene,.faq-scene,.decision-grid,.logistics-ledger,.moment-sequence,.values-stage,.proof-grid{grid-template-columns:1fr;gap:2.5rem}
  .manifesto__title,.experience-index__heading,.process-scene__heading,.faq-scene__intro,.decision-grid>div:first-child,.logistics-ledger__title,.moment-sequence__intro,.values-stage>div:first-child,.proof-grid__title{position:static}
  .statement-rows article{grid-template-columns:2.2rem 1fr;gap:1rem}
  .statement-rows p{grid-column:2}
  .experience-index__list a{grid-template-columns:2.4rem 1fr 1.5rem}
  .experience-index__list p{grid-column:2}
  .price-scene,.city-pulse,.service-orbit,.profile-story,.contact-stage{grid-template-columns:1fr}
  .price-scene__portrait,.profile-story__image{min-height:66svh}
  .price-scene__content,.city-pulse__copy,.service-orbit__copy,.profile-story__copy{padding:var(--section) var(--gutter)}
  .city-pulse__map,.service-orbit__number{min-height:64svh}
  .scene-hero{min-height:78svh;padding-top:9rem}
  .scene-hero__content{width:100%}
  .scene-hero h1{font-size:clamp(3.7rem,14vw,7rem)}
  .scene-number{top:88px}
  .scene-hero--portrait .scene-hero__media{inset:68px 0 0;opacity:.78;align-items:flex-start}
  .scene-hero--portrait .scene-hero__media img{object-position:center top!important}
  .scene-hero--portrait .scene-hero__shade{background:linear-gradient(0deg,rgba(0,0,0,.98) 0%,rgba(0,0,0,.76) 49%,rgba(0,0,0,.06) 82%),linear-gradient(90deg,rgba(0,0,0,.48),transparent)}
  .scene-hero--portrait .scene-hero__content{width:100%}
  .lookbook{padding-left:var(--gutter)}
  .lookbook__intro{grid-template-columns:1fr;gap:1.4rem}
  .lookbook__controls{justify-content:flex-start}
  .lookbook__track{padding-right:var(--gutter)}
  .portrait-triptych{grid-template-columns:1fr;min-height:0}
  .portrait-triptych__copy{position:static}
  .portrait-triptych__images{min-height:650px}
  .portrait-triptych--poster .portrait-triptych__copy{grid-template-columns:1fr;gap:1rem}
  .service-catalog__intro{grid-template-columns:1fr;gap:1rem}
  .service-catalog__cards a{grid-template-columns:2.5rem 1fr 90px;gap:1rem}
  .booking-facts{grid-template-columns:1fr}
  .booking-facts .actions{grid-column:1}
  .contact-stage__aside{position:static}
  .legal-body{grid-template-columns:1fr}
  .legal-body aside{position:static;display:flex;align-items:end;gap:1rem}
  .legal-body article{grid-template-columns:2rem 1fr}
  .legal-body article p{grid-column:2}
  .footer-mark{position:static;width:90px;transform:none;margin-bottom:1rem}
  .footer-main{min-height:0;padding:0;grid-template-columns:1fr}
  .footer-bottom{flex-direction:column;gap:.35rem;margin-top:1.5rem}
  .mobile-book{position:fixed;z-index:110;left:50%;bottom:.8rem;display:block;transform:translateX(-50%);width:calc(100% - 2rem);max-width:420px;padding:.85rem 1rem;background:var(--red);box-shadow:0 12px 35px rgba(0,0,0,.55);font-family:var(--display);font-size:1rem;letter-spacing:.08em;text-align:center;text-transform:uppercase}
  .site-footer{padding-bottom:5.5rem}
}

@media (max-width:540px){
  .header-tools{gap:.25rem}
  .brand span small{display:none}
  .word-reel span{min-height:54px;font-size:1.05rem}
  .scene-hero{min-height:86svh}
  .scene-hero__shade{background:linear-gradient(0deg,rgba(0,0,0,.96),rgba(0,0,0,.18) 75%),linear-gradient(90deg,rgba(0,0,0,.6),transparent)}
  .scene-hero__media img{object-position:center!important}
  .scene-hero h1{font-size:clamp(3.5rem,17vw,5.6rem)}
  .scene-hero__intro{font-size:.86rem}
  .scene-number{font-size:4rem}
  .button{min-height:48px;font-size:.92rem}
  .actions{width:100%}
  .actions .button{flex:1;min-width:145px}
  .price-scene dl div{grid-template-columns:1fr}
  .price-scene dd{justify-content:flex-start}
  .experience-index__list a{grid-template-columns:2rem 1fr 1rem}
  .service-catalog__cards a{grid-template-columns:2rem 1fr}
  .service-catalog__cards b{grid-column:2;text-align:left;font-size:2rem;color:var(--red)}
  .booking-form{grid-template-columns:1fr}
  .booking-form .wide{grid-column:1}
  .film-break{min-height:76svh}
  .film-break h2{font-size:clamp(3.6rem,17vw,6.5rem)}
  .city-pulse__map,.service-orbit__number{min-height:52svh}
  .service-orbit__number{font-size:clamp(5rem,27vw,9rem)}
  .lookbook__intro h2,.portrait-triptych h2{font-size:clamp(3.6rem,16vw,5.4rem)}
  .lookbook__controls span{width:120px}
  .lookbook__card{flex-basis:78vw}
  .lookbook__card:nth-child(2),.lookbook__card:nth-child(5){padding-top:2.5rem}
  .lookbook__card:nth-child(3){flex-basis:84vw}
  .portrait-triptych{padding-inline:var(--gutter)}
  .portrait-triptych__images{display:flex;overflow-x:auto;min-height:0;gap:.8rem;padding-bottom:1rem;scroll-snap-type:x mandatory;scrollbar-width:none}
  .portrait-triptych__frame,.portrait-triptych--overlap .portrait-triptych__frame--1,.portrait-triptych--overlap .portrait-triptych__frame--2,.portrait-triptych--frames .portrait-triptych__frame,.portrait-triptych--offset .portrait-triptych__frame--1,.portrait-triptych--offset .portrait-triptych__frame--2,.portrait-triptych--poster .portrait-triptych__frame{flex:0 0 80vw;height:70svh;max-height:650px;margin:0;transform:none;scroll-snap-align:start}
  .portrait-triptych__frame--3{margin:0}
  .portrait-triptych--poster .portrait-triptych__images{display:flex;min-height:0}
  .page-transition span{font-size:22vw}
  .legal-body article{grid-template-columns:1fr}
  .legal-body article p{grid-column:1}
  .end-frame{min-height:560px}
  .end-frame__stamp{display:none}
  .footer-links{display:grid;grid-template-columns:1fr 1fr}
  .site-footer{padding:1.6rem var(--gutter) 4.8rem}
  .footer-mark{width:68px;margin-bottom:.2rem}
  .footer-main{gap:.55rem}
  .footer-statement p{font-size:1.75rem}
  .footer-links{gap:.45rem .8rem}
  .footer-bottom{margin-top:.9rem;gap:.2rem}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  [data-reveal]{opacity:1;transform:none;clip-path:none}
  .film-break__media,.scene-hero__media,.profile-story__image{transform:none!important}
  .page-transition{display:none}
}

/* 2026-07-23 proportional and cinematic correction layer */
html,body{width:100%;max-width:100%}
main{overflow:clip}
main>section{position:relative}
main>section+section{border-top:1px solid rgba(255,255,255,.1)}
h1,h2,h3{max-width:100%;text-wrap:balance}
h1 em,h2 em{color:var(--red)}
.page-transition{clip-path:inset(0 0 100% 0);transition-duration:560ms}
body.is-leaving .page-transition{transition-duration:300ms}
.button{min-height:48px;padding:.82rem 1.3rem;font-weight:600}

.word-reel span{min-height:56px;font-size:1.05rem}

/* Dense editorial sections: readable in one visual beat, without dead floors. */
.manifesto,.experience-index,.process-scene,.faq-scene,
.decision-grid,.logistics-ledger,.moment-sequence,.values-stage,.proof-grid,
.booking-facts,.contact-stage,.service-catalog{min-height:0}
.manifesto,.experience-index,.process-scene,.faq-scene,
.decision-grid,.logistics-ledger,.moment-sequence,.values-stage,.proof-grid{gap:clamp(2.5rem,5vw,5.5rem)}
.statement-rows article{gap:1.15rem;padding:1.45rem 0}
.experience-index__list a{padding:1.45rem 0}
.service-catalog__intro{margin-bottom:2.25rem}
.service-catalog__cards a{padding:1.6rem 0}
.booking-facts li{padding:.92rem 0;font-size:1.42rem}
.booking-facts .service-area-links{grid-column:2;margin:0;color:#817a76;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase}
.booking-facts .service-area-links a{color:var(--red);font-weight:700}
.booking-facts .service-area-links span{margin:0 .35rem}

/* Portrait scenes keep the subject complete and the copy in its own lane. */
.scene-hero{
  height:clamp(570px,92svh,760px);
  min-height:0;
  align-items:flex-end;
  padding:110px var(--gutter) clamp(2.5rem,4vw,3.5rem);
  background:#050505
}
.scene-hero--backdrop{
  background-image:
    linear-gradient(90deg,rgba(2,2,2,.96) 0%,rgba(2,2,2,.78) 42%,rgba(2,2,2,.18) 75%,rgba(2,2,2,.42) 100%),
    linear-gradient(0deg,rgba(0,0,0,.88),transparent 54%),
    var(--scene-backdrop);
  background-size:cover;
  background-position:center
}
.scene-hero__media{inset:76px 0 0 51%;display:flex;align-items:flex-end;justify-content:center;overflow:hidden}
.scene-hero__media img{
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:center top;
  filter:saturate(.84) contrast(1.07);
  transform-origin:center bottom
}
.scene-hero__shade{background:linear-gradient(90deg,rgba(0,0,0,.98) 0%,rgba(0,0,0,.86) 43%,rgba(0,0,0,.08) 71%),linear-gradient(0deg,rgba(0,0,0,.82),transparent 55%)}
.scene-hero__content,.scene-hero--portrait .scene-hero__content{position:relative;z-index:3;width:min(700px,50vw)}
.scene-hero h1{font-size:clamp(3.15rem,5vw,5.35rem);font-weight:600;line-height:.93}
.scene-hero__intro{max-width:580px;margin:1rem 0;font-size:clamp(.82rem,1vw,.98rem);line-height:1.55}
.scene-hero .actions{margin-top:1rem}
.scene-hero .breadcrumbs{margin-top:1rem}
.scene-hero__note{z-index:4;bottom:2.7rem;width:min(245px,20vw);padding:1.1rem}
.scene-number{top:92px;font-size:clamp(3.5rem,6.5vw,6.5rem)}
.scene-hero--portrait .scene-hero__media{inset:76px 0 0 51%}
.scene-hero--portrait .scene-hero__media::before{inset:6% 0 0}
.scene-hero--portrait .scene-hero__media img{width:100%;height:100%;object-fit:contain;object-position:center top}
.scene-hero__media::after{content:"";position:absolute;z-index:2;inset:-1px;background:linear-gradient(90deg,rgba(0,0,0,.96),transparent 17%,transparent 92%,rgba(0,0,0,.32)),linear-gradient(0deg,rgba(0,0,0,.9),transparent 22%);pointer-events:none}
.scene-hero--portrait .scene-hero__shade{background:linear-gradient(90deg,rgba(0,0,0,.99) 0%,rgba(0,0,0,.88) 44%,rgba(0,0,0,.12) 72%),linear-gradient(0deg,rgba(0,0,0,.82),transparent 56%)}

/* Film breaks are split scenes, not low-resolution wallpaper. */
.film-break{
  height:clamp(540px,76svh,700px);
  min-height:0;
  display:grid;
  grid-template-columns:minmax(0,1.08fr) minmax(380px,.92fr);
  align-items:stretch;
  background:linear-gradient(115deg,#060505,#140507 78%,#050505)
}
.film-break__media{position:relative;inset:auto;z-index:0;display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at 50% 35%,rgba(236,0,29,.16),transparent 54%),#090707}
.film-break__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center top;filter:saturate(.84) contrast(1.06)}
.film-break::after{z-index:1;background:linear-gradient(90deg,transparent 35%,rgba(0,0,0,.12) 52%,rgba(0,0,0,.68))}
.film-break__copy{position:relative;z-index:2;align-self:center;width:auto;max-width:650px;padding:var(--section) clamp(2.5rem,5vw,5.5rem)}
.film-break h2{font-size:clamp(3.15rem,5.2vw,5.7rem)}
.film-break__copy>p:last-child{margin-top:1.1rem;font-size:.9rem;line-height:1.65}
.film-break__rule{position:absolute;z-index:3;right:1.2rem;bottom:1rem;color:rgba(255,255,255,.38);font-size:.52rem;font-weight:700;letter-spacing:.2em;writing-mode:vertical-rl}

/* The archive becomes a brisk, usable catalog. */
.lookbook{padding-top:clamp(2.6rem,3.6vw,3.9rem);padding-bottom:clamp(2.6rem,3.6vw,3.9rem)}
.lookbook__intro{grid-template-columns:minmax(0,1.45fr) minmax(260px,.55fr);gap:clamp(2rem,4vw,4.5rem);margin-bottom:2rem}
.lookbook__intro h2{font-size:clamp(3rem,4.5vw,4.8rem)}
.portrait-triptych h2{font-size:clamp(3rem,5.3vw,5.6rem)}
.lookbook__intro>div:first-child>p:last-child{max-width:680px;margin-bottom:0}
.lookbook__card{flex-basis:clamp(235px,20vw,300px)}
.lookbook__card:nth-child(2),.lookbook__card:nth-child(5){padding-top:2.3rem}
.lookbook__card:nth-child(3){flex-basis:clamp(275px,24vw,340px)}
.lookbook__image{max-height:400px}

/* Every gallery composition has a bounded canvas; photos overlap each other, never the text. */
.portrait-triptych{
  grid-template-columns:minmax(250px,.58fr) minmax(0,1.42fr);
  gap:clamp(2.5rem,5vw,5.5rem);
  min-height:0;
  padding-top:clamp(3.75rem,5.2vw,5.5rem);
  padding-bottom:clamp(3.75rem,5.2vw,5.5rem)
}
.portrait-triptych__copy{top:96px}
.portrait-triptych__images{min-width:0;min-height:clamp(470px,62svh,590px)}
.portrait-triptych__frame{grid-row:1}
.portrait-triptych__frame img{object-fit:var(--fit,cover);object-position:var(--pos,center top)}
.portrait-triptych__frame--1{height:min(58svh,550px)}
.portrait-triptych__frame--2{height:min(52svh,500px);margin-top:3.5rem}
.portrait-triptych__frame--3{height:min(40svh,390px);margin-top:-5rem}
.portrait-triptych--overlap .portrait-triptych__frame--1{height:min(61svh,570px)}
.portrait-triptych--overlap .portrait-triptych__frame--2{height:min(53svh,500px);margin-top:4.5rem}
.portrait-triptych--frames .portrait-triptych__images{min-height:min(62svh,590px)}
.portrait-triptych--frames .portrait-triptych__frame,
.portrait-triptych--frames .portrait-triptych__frame:nth-child(2),
.portrait-triptych--frames .portrait-triptych__frame:nth-child(3){height:min(58svh,550px)}
.portrait-triptych--frames .portrait-triptych__frame:nth-child(1){height:min(50svh,480px)}
.portrait-triptych--frames .portrait-triptych__frame:nth-child(3){height:min(46svh,440px)}
.portrait-triptych--offset .portrait-triptych__frame--1{height:min(51svh,490px);margin-top:3.5rem}
.portrait-triptych--offset .portrait-triptych__frame--2{height:min(61svh,570px)}
.portrait-triptych--poster{grid-template-columns:1fr}
.portrait-triptych--poster .portrait-triptych__copy{grid-template-columns:.45fr 1.1fr .65fr;gap:2rem}
.portrait-triptych--poster .portrait-triptych__images{min-height:min(58svh,550px)}
.portrait-triptych--poster .portrait-triptych__frame{height:min(55svh,520px)}

/* Packages use the official transparent performance artwork at its native role. */
.price-scene{grid-template-columns:minmax(330px,.86fr) minmax(460px,1.14fr);min-height:0;height:clamp(650px,82svh,760px);overflow:hidden}
.price-scene__portrait{min-height:0;height:100%;display:grid;place-items:end center;background:radial-gradient(circle at 50% 38%,rgba(236,0,29,.18),transparent 48%),linear-gradient(155deg,#080707,#170507)}
.price-scene__portrait img{width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:saturate(.9) contrast(1.04)}
.price-scene__content{padding:clamp(2.25rem,3.5vw,3.5rem) clamp(2.5rem,6vw,6.5rem)}
.price-scene h2{font-size:clamp(3.1rem,5.2vw,5.6rem)}
.price-scene dl{margin:1.7rem 0}
.price-scene dl div{padding:1rem 0}
.price-scene dt{font-size:1.5rem}

/* City sections now use the client as the location anchor. */
.city-pulse{min-height:0;height:clamp(590px,78svh,720px);grid-template-columns:1.05fr .95fr}
.city-pulse__visual{position:relative;min-width:0;overflow:hidden;display:grid;place-items:end center;background:radial-gradient(circle at 50% 35%,rgba(236,0,29,.18),transparent 45%),#080707}
.city-pulse__visual::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.88),transparent 48%),linear-gradient(90deg,rgba(0,0,0,.2),transparent);pointer-events:none}
.city-pulse__visual img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center top;filter:saturate(.85) contrast(1.06)}
.city-pulse__visual span{position:absolute;z-index:2;left:clamp(1.5rem,4vw,4rem);bottom:2.5rem;color:#fff;font-family:var(--display);font-size:clamp(3.4rem,7vw,7rem);font-weight:600;line-height:.8;text-transform:uppercase}
.city-pulse__visual small{position:absolute;z-index:2;left:clamp(1.5rem,4vw,4rem);bottom:1rem;color:#a39c98;font-size:.55rem;letter-spacing:.16em}
.city-pulse__copy{padding:clamp(3rem,5vw,5rem) clamp(2.5rem,5vw,5.5rem)}
.city-pulse h2{font-size:clamp(3rem,5vw,5.2rem)}
.city-pulse__map{min-height:0}
.local-service-rail{display:grid;grid-template-columns:1.35fr repeat(4,1fr);border-block:1px solid var(--line);background:#080707}
.local-service-rail>p,.local-service-rail>a{min-width:0;margin:0;padding:1.35rem clamp(1rem,2vw,2rem);border-right:1px solid var(--line)}
.local-service-rail>p{display:grid;gap:.25rem;color:#89827e;font-size:.58rem;letter-spacing:.11em;text-transform:uppercase}
.local-service-rail>p span{color:var(--red);font-family:var(--display);font-size:1.45rem;font-weight:600;letter-spacing:.03em}
.local-service-rail>a{display:flex;align-items:center;justify-content:space-between;gap:.6rem;font-family:var(--display);font-size:1rem;font-weight:600;line-height:1.1;text-transform:uppercase;transition:background-color 180ms ease,color 180ms ease}
.local-service-rail>a:last-child{border-right:0}
.local-service-rail>a i{color:var(--red);font-style:normal}
@media (hover:hover) and (pointer:fine){.local-service-rail>a:hover{background:var(--red);color:#fff}.local-service-rail>a:hover i{color:#fff}}
.service-orbit{min-height:0;height:clamp(500px,68svh,620px)}
.service-orbit__number{min-height:100%;font-size:clamp(4rem,9vw,9rem)}
.service-orbit__copy{padding:clamp(3rem,5vw,5rem) clamp(2.5rem,5vw,5.5rem)}
.service-orbit--bachelorette{grid-template-columns:.82fr 1.18fr}
.service-orbit--bachelorette .service-orbit__number{background:linear-gradient(145deg,#ef0020,#8b0012)}
.service-orbit--stripogram{background:#070606;color:#fff}
.service-orbit--stripogram .service-orbit__number{background:var(--paper);color:#111}
.service-orbit--stripogram .service-orbit__copy>p:last-child{color:#a49d99}
.service-orbit--birthday{grid-template-columns:1.2fr .8fr}
.service-orbit--birthday .service-orbit__number{grid-column:2;grid-row:1;background:#111;color:var(--red)}
.service-orbit--birthday .service-orbit__copy{grid-column:1;grid-row:1}
.service-orbit--revue{background:var(--red);color:#fff}
.service-orbit--revue .service-orbit__number{background:#080707;color:transparent;-webkit-text-stroke:2px rgba(255,255,255,.85);font-size:clamp(3rem,7vw,7rem)}
.service-orbit--revue .service-orbit__copy>p:last-child{color:#fff}
.moment-sequence--bachelorette{background:#080707}
.moment-sequence--stripogram{background:var(--paper);color:#111}
.moment-sequence--stripogram .statement-rows{border-color:rgba(0,0,0,.2)}
.moment-sequence--stripogram .statement-rows article{border-color:rgba(0,0,0,.2)}
.moment-sequence--stripogram .statement-rows p{color:#5e5854}
.moment-sequence--revue{max-width:none;background:#080707;padding-inline:max(var(--gutter),calc((100vw - var(--max))/2))}
.booking-facts--birthday{max-width:none;background:var(--red);padding-inline:max(var(--gutter),calc((100vw - var(--max))/2))}
.booking-facts--birthday .eyebrow{color:#fff}
.booking-facts--birthday li{border-color:rgba(255,255,255,.35)}
.booking-facts--birthday .button--red{background:#080707}
.booking-facts--birthday .service-area-links,.booking-facts--birthday .service-area-links a{color:#fff}
.booking-facts--revue{border-block:1px solid var(--line)}
.profile-story{min-height:0;height:clamp(620px,80svh,740px)}
.profile-story__image{min-height:0}
.profile-story__image img{height:100%;object-fit:contain;object-position:center top;background:#090707}
.profile-story__copy{padding:clamp(3rem,5vw,5rem) clamp(2.5rem,5vw,5.5rem)}
.profile-story blockquote{margin-top:1.6rem;font-family:var(--display);font-style:normal}
.trust-callout{padding:clamp(3.5rem,5.5vw,5.5rem) var(--gutter)}
.trust-callout h2{font-size:clamp(3.3rem,6vw,6.2rem)}
.legal-hero{padding:clamp(7.5rem,11vw,9.5rem) var(--gutter) clamp(3rem,5vw,4.5rem)}
.legal-hero h1{font-size:clamp(3.6rem,7vw,6.8rem);font-weight:600}
.legal-body{padding-top:clamp(3.5rem,5vw,5.5rem);padding-bottom:clamp(3.5rem,5vw,5.5rem)}
.trust-ribbon{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--paper);color:#111}
.trust-ribbon article{min-width:0;padding:clamp(2.25rem,4vw,4rem) clamp(1.3rem,2.8vw,2.8rem);border-right:1px solid rgba(0,0,0,.17)}
.trust-ribbon article:last-of-type{border-right:0}
.trust-ribbon article span{color:var(--red);font-size:.58rem;font-weight:800;letter-spacing:.15em}
.trust-ribbon article h2{margin:1rem 0 .65rem;font-family:var(--display);font-size:clamp(1.55rem,2.3vw,2.4rem);font-weight:600;line-height:1;text-transform:uppercase}
.trust-ribbon article p{margin:0;color:#625c57;font-size:.77rem;line-height:1.55}
.trust-ribbon__coverage{grid-column:1/-1;margin:0;padding:1rem var(--gutter);border-top:1px solid rgba(0,0,0,.17);background:#111;color:#8e8782;font-size:.6rem;font-weight:700;letter-spacing:.17em;text-align:center;text-transform:uppercase}
.trust-ribbon__coverage i{margin:0 .7rem;color:var(--red);font-style:normal}

/* A compact final conversion scene replaces the oversized repeated pre-footer. */
.end-frame{
  min-height:0;
  height:clamp(340px,48svh,450px);
  grid-template-columns:minmax(0,1.15fr) minmax(330px,.85fr);
  place-items:center start;
  gap:clamp(2.5rem,6vw,7rem);
  padding:clamp(3rem,5vw,5rem) var(--gutter);
  text-align:left;
  background:
    linear-gradient(90deg,rgba(0,0,0,.96),rgba(0,0,0,.82) 58%,rgba(38,0,5,.7)),
    url("/assets/texas-shyboy/master/city-bg-green-white.webp") center/cover
}
.end-frame__copy{max-width:690px}
.end-frame h2{font-size:clamp(3rem,5.2vw,5.5rem)}
.end-frame__copy>p:nth-of-type(2){max-width:590px;margin:.9rem 0 0;font-size:.86rem;line-height:1.6}
.end-frame__action{position:relative;z-index:2}
.end-frame__action .actions{justify-content:flex-start;margin:0}
.end-frame__action>p{display:flex;align-items:center;gap:.7rem;margin:1rem 0 0;color:#7e7773;font-size:.55rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.end-frame__action i{color:var(--red);font-style:normal}
.end-frame__line{display:none}
.end-frame__stamp{right:var(--gutter);bottom:1rem}
.end-frame__stamp span{font-size:2.5rem}
.end-frame--services,.end-frame--bachelorette,.end-frame--stripogram,.end-frame--birthday,.end-frame--revue{
  background:linear-gradient(118deg,#1a0205 0%,#090707 47%,#330008 100%)
}
.end-frame--services::before,.end-frame--bachelorette::before,.end-frame--stripogram::before,.end-frame--birthday::before,.end-frame--revue::before{
  content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,var(--red) 0 5px,transparent 5px),radial-gradient(circle at 78% 50%,rgba(236,0,29,.25),transparent 28%)
}
.end-frame--about,.end-frame--faq{background:var(--paper);color:#111}
.end-frame--about .end-frame__copy>p:nth-of-type(2),.end-frame--faq .end-frame__copy>p:nth-of-type(2){color:#625c57}
.end-frame--about .button--ghost,.end-frame--faq .button--ghost{border-color:rgba(0,0,0,.4);background:transparent;color:#111}
.end-frame--about .end-frame__action>p,.end-frame--faq .end-frame__action>p{color:#77716d}

.site-footer{padding:1.35rem var(--gutter) 1rem}
.footer-mark{width:88px;opacity:.92}
.footer-main{min-height:105px;grid-template-columns:.85fr 1.15fr;gap:1.5rem;padding-left:120px}
.footer-statement p{font-size:clamp(1.4rem,2vw,2rem);line-height:1}
.footer-links{gap:.55rem 1.15rem}
.footer-coverage{grid-column:1/-1;margin:.25rem 0 0;color:#6f6965;font-size:.55rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase}
.footer-bottom{align-items:center;flex-wrap:wrap;gap:.55rem 1.2rem;padding-top:.75rem}
.footer-credit{color:var(--red)!important;font-weight:700;text-transform:uppercase}

/* ============================================================
   MOTION — one named choreography per section type
   ------------------------------------------------------------
   Before this layer every section entered the same way: fade up,
   wipe image, next. Reading the page felt like scrolling one
   very long component. Each name below moves on a different
   axis, at a different speed, with a different accent, so the
   page reads as a sequence of scenes instead of a list of rows.
   ============================================================ */

/* --- rule: editorial rows that draw their own divider --- */
[data-motion="rule"] .eyebrow,
[data-motion="rule"] h2,
[data-motion="rule"] > div > p{
  opacity:0;transform:translate3d(0,14px,0);
  transition:opacity 560ms var(--ease-out),transform 640ms var(--ease-out)
}
[data-motion="rule"] h2{transition-delay:70ms}
[data-motion="rule"] > div > p{transition-delay:130ms}
[data-motion="rule"].is-inview .eyebrow,
[data-motion="rule"].is-inview h2,
[data-motion="rule"].is-inview > div > p{opacity:1;transform:none}
[data-motion="rule"] [data-motion-item]{
  opacity:0;transform:translate3d(-26px,0,0);
  transition:opacity 520ms var(--ease-out),transform 620ms var(--ease-out);
  transition-delay:calc(var(--i,0) * 85ms + 120ms)
}
[data-motion="rule"] [data-motion-item]::before{
  content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--red);
  transform:scaleX(0);transform-origin:left center;
  transition:transform 720ms var(--ease-out);
  transition-delay:calc(var(--i,0) * 85ms + 180ms)
}
[data-motion="rule"] [data-motion-item]{position:relative}
[data-motion="rule"].is-inview [data-motion-item]{opacity:1;transform:none}
[data-motion="rule"].is-inview [data-motion-item]::before{transform:scaleX(1)}

/* --- march: a numbered rail that fills as the section passes --- */
[data-motion="march"] .statement-rows{position:relative}
[data-motion="march"] .statement-rows::before{
  content:"";position:absolute;left:.9rem;top:0;bottom:0;width:1px;
  background:linear-gradient(var(--red),rgba(236,0,29,.15));
  transform:scaleY(var(--march,0));transform-origin:top center
}
[data-motion="march"] [data-motion-item]{
  opacity:0;transform:translate3d(0,22px,0);
  transition:opacity 500ms var(--ease-out),transform 620ms var(--ease-out);
  transition-delay:calc(var(--i,0) * 110ms)
}
[data-motion="march"] [data-motion-item] b{
  transform:scale(.6);opacity:0;
  transition:transform 520ms var(--ease-out),opacity 380ms ease;
  transition-delay:calc(var(--i,0) * 110ms + 140ms);
  display:inline-block
}
[data-motion="march"].is-inview [data-motion-item]{opacity:1;transform:none}
[data-motion="march"].is-inview [data-motion-item] b{transform:none;opacity:1}

/* --- curtain: the film break drops its image like a stage curtain --- */
[data-motion="curtain"] .film-break__media img{
  clip-path:inset(0 0 100% 0);transform:scale(1.09) translate3d(0,-2%,0);
  transition:clip-path 1050ms var(--ease-in-out),transform 1500ms var(--ease-out)
}
[data-motion="curtain"].is-inview .film-break__media img{clip-path:inset(0 0 0 0);transform:none}
[data-motion="curtain"] .film-break__copy>*{
  opacity:0;transform:translate3d(0,26px,0);
  transition:opacity 620ms var(--ease-out),transform 760ms var(--ease-out)
}
[data-motion="curtain"] .film-break__copy>*:nth-child(2){transition-delay:110ms}
[data-motion="curtain"] .film-break__copy>*:nth-child(3){transition-delay:200ms}
[data-motion="curtain"].is-inview .film-break__copy>*{opacity:1;transform:none}
[data-motion="curtain"] .film-break__rule{
  opacity:0;transform:translate3d(0,-30px,0);
  transition:opacity 700ms ease 400ms,transform 900ms var(--ease-out) 400ms
}
[data-motion="curtain"].is-inview .film-break__rule{opacity:1;transform:none}

/* --- deal: lookbook cards are dealt in from the right --- */
[data-motion="deal"] .lookbook__intro>div>*{
  opacity:0;transform:translate3d(0,18px,0);
  transition:opacity 540ms var(--ease-out),transform 640ms var(--ease-out)
}
[data-motion="deal"] .lookbook__intro>div>*:nth-child(2){transition-delay:80ms}
[data-motion="deal"] .lookbook__intro>div>*:nth-child(3){transition-delay:150ms}
[data-motion="deal"].is-inview .lookbook__intro>div>*{opacity:1;transform:none}
[data-motion="deal"] [data-motion-item]{
  opacity:0;transform:translate3d(48px,26px,0) rotate(2.2deg);
  transition:opacity 560ms var(--ease-out),transform 780ms var(--ease-out);
  transition-delay:calc(var(--i,0) * 95ms)
}
[data-motion="deal"].is-inview [data-motion-item]{opacity:1;transform:none}

/* --- gallery-*: each triptych variant arrives on its own axis --- */
.portrait-triptych__copy>*{
  opacity:0;transform:translate3d(0,16px,0);
  transition:opacity 560ms var(--ease-out),transform 660ms var(--ease-out)
}
.portrait-triptych__copy>*:nth-child(2){transition-delay:70ms}
.portrait-triptych__copy>*:nth-child(3){transition-delay:140ms}
.is-inview .portrait-triptych__copy>*{opacity:1;transform:none}
.portrait-triptych__frame{opacity:0;transition:opacity 620ms var(--ease-out),transform 900ms var(--ease-out);transition-delay:calc(var(--i,0) * 130ms)}
.portrait-triptych__frame img{transition:transform 1200ms var(--ease-out),filter 300ms ease,clip-path 900ms var(--ease-in-out)}
[data-motion="gallery-stagger"] .portrait-triptych__frame{transform:translate3d(0,64px,0)}
[data-motion="gallery-overlap"] .portrait-triptych__frame{transform:translate3d(0,0,0) scale(.88)}
[data-motion="gallery-overlap"] .portrait-triptych__frame:nth-child(even){transform:translate3d(0,0,0) scale(1.12)}
[data-motion="gallery-frames"] .portrait-triptych__frame img{clip-path:inset(0 0 100% 0)}
[data-motion="gallery-frames"] .portrait-triptych__frame:nth-child(even) img{clip-path:inset(100% 0 0 0)}
[data-motion="gallery-offset"] .portrait-triptych__frame{transform:translate3d(-56px,0,0)}
[data-motion="gallery-offset"] .portrait-triptych__frame:nth-child(even){transform:translate3d(56px,0,0)}
[data-motion="gallery-poster"] .portrait-triptych__frame{transform:translate3d(0,0,0) rotate(-3deg) scale(.92);transform-origin:bottom center}
[data-motion="gallery-poster"] .portrait-triptych__frame:nth-child(even){transform:translate3d(0,0,0) rotate(3deg) scale(.92)}
.is-inview .portrait-triptych__frame{opacity:1;transform:none}
.is-inview .portrait-triptych__frame img{clip-path:inset(0 0 0 0)}
[data-motion="gallery-poster"].is-inview .portrait-triptych__frame:nth-child(2){transform:translateY(3rem)}

/* --- ledger: rows wipe open left-to-right, values land last --- */
[data-motion="ledger"] .eyebrow,
[data-motion="ledger"] h2,
[data-motion="ledger"] .coverage-ledger__distance,
[data-motion="ledger"] .faq-scene__intro>p:last-child{
  opacity:0;transform:translate3d(0,14px,0);
  transition:opacity 540ms var(--ease-out),transform 640ms var(--ease-out)
}
[data-motion="ledger"] h2{transition-delay:70ms}
[data-motion="ledger"] .coverage-ledger__distance,
[data-motion="ledger"] .faq-scene__intro>p:last-child{transition-delay:140ms}
[data-motion="ledger"].is-inview .eyebrow,
[data-motion="ledger"].is-inview h2,
[data-motion="ledger"].is-inview .coverage-ledger__distance,
[data-motion="ledger"].is-inview .faq-scene__intro>p:last-child{opacity:1;transform:none}
[data-motion="ledger"] [data-motion-item]{
  opacity:0;clip-path:inset(0 100% 0 0);
  transition:opacity 380ms ease,clip-path 720ms var(--ease-in-out);
  transition-delay:calc(var(--i,0) * 80ms + 100ms)
}
[data-motion="ledger"].is-inview [data-motion-item]{opacity:1;clip-path:inset(0 0 0 0)}
[data-motion="ledger"] .price-scene__portrait img,
[data-motion="ledger"] dl,
[data-motion="ledger"] .fine-print,
[data-motion="ledger"] .actions{
  opacity:0;transform:translate3d(0,20px,0);
  transition:opacity 620ms var(--ease-out) 120ms,transform 760ms var(--ease-out) 120ms
}
[data-motion="ledger"] .price-scene__portrait img{transform:translate3d(0,42px,0) scale(1.04);transition-delay:0ms}
[data-motion="ledger"].is-inview .price-scene__portrait img,
[data-motion="ledger"].is-inview dl,
[data-motion="ledger"].is-inview .fine-print,
[data-motion="ledger"].is-inview .actions{opacity:1;transform:none}

/* --- split: two halves close toward the seam --- */
[data-motion="split"]>*:first-child{
  opacity:0;transform:translate3d(-4%,0,0);
  transition:opacity 700ms var(--ease-out),transform 900ms var(--ease-out)
}
[data-motion="split"]>*:last-child{
  opacity:0;transform:translate3d(4%,0,0);
  transition:opacity 700ms var(--ease-out) 90ms,transform 900ms var(--ease-out) 90ms
}
[data-motion="split"].is-inview>*{opacity:1;transform:none}
[data-motion="split"] .city-pulse__visual img,
[data-motion="split"] .profile-story__image img,
[data-motion="split"] .service-orbit__number{transition:transform 1400ms var(--ease-out)}
[data-motion="split"] .city-pulse__visual img,
[data-motion="split"] .profile-story__image img{transform:scale(1.07)}
[data-motion="split"].is-inview .city-pulse__visual img,
[data-motion="split"].is-inview .profile-story__image img{transform:none}

/* --- blinds: columns lift in sequence --- */
[data-motion="blinds"] [data-motion-item],
[data-motion="blinds"] a,
[data-motion="blinds"] span[aria-current]{
  opacity:0;transform:translate3d(0,34px,0);
  transition:opacity 480ms var(--ease-out),transform 620ms var(--ease-out);
  transition-delay:calc(var(--i,0) * 90ms)
}
[data-motion="blinds"] div>a,[data-motion="blinds"] div>span{--i:0}
[data-motion="blinds"] div>*:nth-child(2){--i:1}
[data-motion="blinds"] div>*:nth-child(3){--i:2}
[data-motion="blinds"] div>*:nth-child(4){--i:3}
[data-motion="blinds"].is-inview [data-motion-item],
[data-motion="blinds"].is-inview a,
[data-motion="blinds"].is-inview span[aria-current]{opacity:1;transform:none}
[data-motion="blinds"] .trust-ribbon__coverage,[data-motion="blinds"]>p{
  opacity:0;transition:opacity 600ms ease 380ms
}
[data-motion="blinds"].is-inview .trust-ribbon__coverage,[data-motion="blinds"].is-inview>p{opacity:1}

/* --- stamp: the closing frame lands like a pressed mark --- */
[data-motion="stamp"] .end-frame__copy>*,[data-motion="stamp"]>p,[data-motion="stamp"]>h2{
  opacity:0;transform:translate3d(0,20px,0);
  transition:opacity 560ms var(--ease-out),transform 680ms var(--ease-out)
}
[data-motion="stamp"] .end-frame__copy>*:nth-child(2){transition-delay:80ms}
[data-motion="stamp"] .end-frame__copy>*:nth-child(3){transition-delay:160ms}
[data-motion="stamp"]>h2{transition-delay:80ms}
[data-motion="stamp"].is-inview .end-frame__copy>*,
[data-motion="stamp"].is-inview>p,[data-motion="stamp"].is-inview>h2{opacity:1;transform:none}
[data-motion="stamp"] .end-frame__action,[data-motion="stamp"]>.button{
  opacity:0;transform:translate3d(0,16px,0);
  transition:opacity 560ms var(--ease-out) 200ms,transform 680ms var(--ease-out) 200ms
}
[data-motion="stamp"].is-inview .end-frame__action,[data-motion="stamp"].is-inview>.button{opacity:1;transform:none}
[data-motion="stamp"] .end-frame__stamp{
  opacity:0;transform:rotate(-14deg) scale(1.5);
  transition:opacity 420ms ease 320ms,transform 620ms cubic-bezier(.2,1.5,.4,1) 320ms
}
[data-motion="stamp"].is-inview .end-frame__stamp{opacity:1;transform:none}

/* --- scene: interior page heroes settle rather than slide --- */
[data-motion="scene"] .scene-hero__media img{
  clip-path:inset(0 0 12% 0);transform:scale(1.06);
  transition:clip-path 1100ms var(--ease-in-out),transform 1600ms var(--ease-out)
}
[data-motion="scene"].is-inview .scene-hero__media img{clip-path:inset(0 0 0 0);transform:none}
[data-motion="scene"] .scene-hero__content>*{
  opacity:0;transform:translate3d(0,18px,0);
  transition:opacity 620ms var(--ease-out),transform 720ms var(--ease-out);
}
[data-motion="scene"] .scene-hero__content>*:nth-child(2){transition-delay:80ms}
[data-motion="scene"] .scene-hero__content>*:nth-child(3){transition-delay:150ms}
[data-motion="scene"] .scene-hero__content>*:nth-child(4){transition-delay:210ms}
[data-motion="scene"] .scene-hero__content>*:nth-child(5){transition-delay:270ms}
[data-motion="scene"].is-inview .scene-hero__content>*{opacity:1;transform:none}
[data-motion="scene"] .scene-hero__note{
  opacity:0;transform:translate3d(28px,0,0);
  transition:opacity 620ms var(--ease-out) 260ms,transform 760ms var(--ease-out) 260ms
}
[data-motion="scene"].is-inview .scene-hero__note{opacity:1;transform:none}

@media (min-width:821px) and (max-height:820px){
  .site-header{height:62px}
  .brand img{width:46px;height:46px}
  .scene-hero{height:100svh;padding-top:78px;padding-bottom:1.5rem}
  .scene-hero--portrait .scene-hero__media,.scene-hero__media{inset:62px 0 0 51%}
  .scene-hero h1{font-size:clamp(2.8rem,4.7vw,4.4rem)}
  .scene-hero__intro{margin:.7rem 0;font-size:.8rem}
  .scene-hero .actions{margin-top:.7rem}
  .scene-hero .breadcrumbs{margin-top:.65rem}
  .scene-hero__note{bottom:1.5rem}
  .film-break{height:100svh}
  .lookbook{padding-top:2.1rem;padding-bottom:2.1rem}
  .lookbook__image{max-height:310px}
  .service-catalog{padding-top:2.5rem;padding-bottom:2.5rem}
  .service-catalog__intro{margin-bottom:1.4rem}
  .service-catalog__cards a{padding:1.15rem 0}
  .portrait-triptych{padding-top:2.5rem;padding-bottom:2.5rem}
  .portrait-triptych__images{min-height:420px}
  .portrait-triptych__frame--1,.portrait-triptych--overlap .portrait-triptych__frame--1{height:390px}
  .portrait-triptych__frame--2,.portrait-triptych--overlap .portrait-triptych__frame--2{height:355px}
  .portrait-triptych--frames .portrait-triptych__frame,.portrait-triptych--frames .portrait-triptych__frame:nth-child(2){height:385px}
  .portrait-triptych--offset .portrait-triptych__frame--2{height:405px}
  .price-scene,.city-pulse,.profile-story{height:100svh}
  .service-orbit{height:88svh}
  .end-frame{height:380px}
}

@media (max-width:1100px){
  .scene-hero__content,.scene-hero--portrait .scene-hero__content{width:min(620px,55vw)}
  .scene-hero__note{display:none}
  .portrait-triptych{grid-template-columns:minmax(220px,.55fr) minmax(0,1.45fr)}
}

@media (max-width:820px){
  :root{--section:clamp(3.5rem,10vw,5rem)}
  .manifesto,.experience-index,.process-scene,.faq-scene,
  .decision-grid,.logistics-ledger,.moment-sequence,.values-stage,.proof-grid{gap:2rem}

  .scene-hero{
    height:auto;
    min-height:clamp(680px,94svh,820px);
    padding:82px var(--gutter) 2rem;
    align-items:flex-end
  }
  .scene-hero__media,.scene-hero--portrait .scene-hero__media{inset:68px 0 31%;display:flex;justify-content:flex-end;opacity:.9}
  .scene-hero__media img,.scene-hero--portrait .scene-hero__media img{width:74%;height:100%;object-fit:contain;object-position:right top!important}
  .scene-hero__shade,.scene-hero--portrait .scene-hero__shade{background:linear-gradient(0deg,rgba(0,0,0,.99) 0%,rgba(0,0,0,.93) 43%,rgba(0,0,0,.12) 78%),linear-gradient(90deg,rgba(0,0,0,.72),transparent)}
  .scene-hero__media::after{background:linear-gradient(0deg,rgba(0,0,0,.94),transparent 28%),linear-gradient(90deg,rgba(0,0,0,.7),transparent 32%)}
  .scene-hero__content,.scene-hero--portrait .scene-hero__content{width:100%}
  .scene-hero h1{font-size:clamp(3rem,12vw,5rem)}
  .scene-hero__intro{max-width:34rem}
  .scene-number{top:76px}

  .film-break{height:auto;min-height:0;grid-template-columns:1fr}
  .film-break__media{height:min(70svh,620px)}
  .film-break__media img{object-position:center top}
  .film-break::after{background:linear-gradient(0deg,rgba(0,0,0,.86),transparent 48%)}
  .film-break__copy{padding:3.25rem var(--gutter) 4rem}
  .film-break__rule{writing-mode:horizontal-tb}

  .lookbook__intro{grid-template-columns:1fr}
  .lookbook__card{flex-basis:clamp(235px,67vw,330px)}
  .portrait-triptych{grid-template-columns:1fr;gap:2rem}
  .portrait-triptych__copy{position:static}
  .portrait-triptych__images{min-height:clamp(460px,63svh,590px)}

  .price-scene,.city-pulse,.service-orbit,.profile-story{height:auto;grid-template-columns:1fr}
  .service-orbit--birthday .service-orbit__number,.service-orbit--birthday .service-orbit__copy{grid-column:auto;grid-row:auto}
  .price-scene__portrait,.profile-story__image{height:min(68svh,620px);min-height:0}
  .price-scene__content,.city-pulse__copy,.service-orbit__copy,.profile-story__copy{padding:3.5rem var(--gutter)}
  .city-pulse__visual{height:min(68svh,620px)}
  .service-orbit__number{min-height:44svh}
  .profile-story__image img{object-position:center top}

  .end-frame{height:auto;min-height:0;grid-template-columns:1fr;gap:1.5rem;padding:3.5rem var(--gutter)}
  .end-frame__action .actions{justify-content:flex-start}
  .end-frame__stamp{display:none}
  .footer-mark{position:static;width:72px;margin:0;transform:none}
  .footer-main{min-height:0;grid-template-columns:1fr;gap:.8rem;padding-left:0}
  .footer-coverage{grid-column:1}
  .booking-facts .service-area-links{grid-column:1}
  .trust-ribbon{grid-template-columns:1fr 1fr}
  .trust-ribbon article:nth-of-type(2){border-right:0}
  .trust-ribbon article:nth-of-type(-n+2){border-bottom:1px solid rgba(0,0,0,.17)}
  .local-service-rail{grid-template-columns:1fr 1fr}
  .local-service-rail>p{grid-column:1/-1}
  .local-service-rail>p,.local-service-rail>a{border-bottom:1px solid var(--line)}
  .local-service-rail>a:nth-of-type(even){border-right:0}
}

@media (max-width:540px){
  .scene-hero__media,.scene-hero--portrait .scene-hero__media{inset:68px 0 35%}
  .scene-hero__media img,.scene-hero--portrait .scene-hero__media img{width:88%}
  .lookbook__card{flex-basis:76vw}
  .portrait-triptych__images{display:flex;min-height:0;height:auto;overflow-x:auto;gap:.75rem}
  .portrait-triptych__frame,
  .portrait-triptych--overlap .portrait-triptych__frame--1,
  .portrait-triptych--overlap .portrait-triptych__frame--2,
  .portrait-triptych--frames .portrait-triptych__frame,
  .portrait-triptych--offset .portrait-triptych__frame--1,
  .portrait-triptych--offset .portrait-triptych__frame--2,
  .portrait-triptych--poster .portrait-triptych__frame{flex:0 0 76vw;height:min(42svh,400px);max-height:400px;margin:0;transform:none}
  .portrait-triptych--poster .portrait-triptych__copy{grid-template-columns:1fr}
  .price-scene__portrait,.profile-story__image,.city-pulse__visual{height:min(61svh,540px)}
  .end-frame h2{font-size:clamp(2.8rem,13vw,4.4rem)}
  .footer-links{grid-template-columns:1fr 1fr}
  .trust-ribbon{grid-template-columns:1fr}
  .trust-ribbon article{border-right:0;border-bottom:1px solid rgba(0,0,0,.17)}
  .trust-ribbon__coverage{text-align:left;line-height:1.8}
  .local-service-rail{grid-template-columns:1fr}
  .local-service-rail>p{grid-column:1}
  .local-service-rail>p,.local-service-rail>a{border-right:0}
}

@media (prefers-reduced-motion:reduce){
  [data-reveal="image"] img,
  [data-reveal="image"][data-reveal-direction="side"] img,
  [data-reveal="image"][data-reveal-direction="up"] img,
  [data-reveal="image"][data-reveal-direction="scale"] img{clip-path:none;transform:none}
}

/* Mobile-first closure: compact short screens, safe booking access and keyboard clarity. */
:where(a,button,input,select,textarea,[tabindex]):focus-visible{
  outline:2px solid var(--red);
  outline-offset:4px
}
.button:focus-visible,.mobile-book:focus-visible{outline-color:#fff}

@media (max-width:820px){
  .main-nav{
    justify-content:flex-start;
    overflow-y:auto;
    overscroll-behavior:contain;
    padding-top:clamp(1.25rem,7svh,3rem);
    padding-bottom:calc(2rem + env(safe-area-inset-bottom))
  }
  .mobile-book{
    bottom:max(.75rem,env(safe-area-inset-bottom));
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transform:translate(-50%,calc(100% + 2rem));
    transition:opacity 180ms ease,transform 240ms var(--ease-out),visibility 0s linear 240ms
  }
  .mobile-book.is-visible{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transform:translate(-50%,0);
    transition-delay:0s
  }
  body.menu-open .mobile-book{
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transform:translate(-50%,calc(100% + 2rem))
  }
  .site-footer{padding-bottom:calc(6rem + env(safe-area-inset-bottom))}
  .footer-bottom{color:#aaa39f;font-size:.66rem;line-height:1.5}
  .footer-bottom a{color:#c7bfba}
  .footer-coverage{color:#aaa39f;font-size:.64rem;line-height:1.7}
}

@media (max-width:540px){
  .scene-hero{
    min-height:100svh;
    padding-top:76px;
    padding-bottom:1rem
  }
  .scene-hero h1{font-size:clamp(2.4rem,11.5vw,3.1rem);line-height:.92}
  .scene-hero .eyebrow{font-size:.58rem;line-height:1.4}
  .scene-hero__intro{margin:.65rem 0;font-size:.78rem;line-height:1.45}
  .scene-hero .actions{
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    gap:.45rem;
    margin-top:.65rem
  }
  .scene-hero .actions .button{
    width:100%;
    min-width:0;
    min-height:43px;
    padding:.65rem .42rem;
    font-size:.72rem;
    letter-spacing:.035em
  }
  .scene-hero .breadcrumbs{margin-top:.55rem}
  .scene-number{font-size:3.2rem}
  .portrait-triptych__frame,
  .portrait-triptych--overlap .portrait-triptych__frame--1,
  .portrait-triptych--overlap .portrait-triptych__frame--2,
  .portrait-triptych--frames .portrait-triptych__frame,
  .portrait-triptych--offset .portrait-triptych__frame--1,
  .portrait-triptych--offset .portrait-triptych__frame--2,
  .portrait-triptych--poster .portrait-triptych__frame{
    height:auto;
    max-height:none;
    aspect-ratio:3/4
  }
}

@media (max-width:540px) and (max-height:660px){
  .scene-hero{
    height:100svh;
    min-height:0;
    overflow:hidden
  }
  .scene-hero__media,.scene-hero--portrait .scene-hero__media{inset:62px 0 31%}
  .scene-hero__media img,.scene-hero--portrait .scene-hero__media img{width:78%}
  .scene-hero .eyebrow{margin-bottom:.45rem;font-size:.52rem}
  .scene-hero h1{font-size:clamp(2.25rem,11.5vw,2.65rem)}
  .scene-hero__intro{font-size:.72rem;line-height:1.38}
  .scene-hero .breadcrumbs{display:none}
}

@media (max-width:359px){
  :root{--gutter:.9rem}
  .brand img{width:43px;height:43px}
  .brand strong{font-size:1.08rem}
  .manifesto h2,.experience-index h2,.price-scene h2,.process-scene h2,
  .film-break h2,.faq-scene h2,.service-catalog h2,.decision-grid h2,
  .city-pulse h2,.logistics-ledger h2,.service-orbit h2,.moment-sequence h2,
  .booking-facts h2,.profile-story h2,.values-stage h2,.proof-grid h2,
  .trust-callout h2,.contact-stage h2,.end-frame h2,
  .lookbook__intro h2,.portrait-triptych h2{
    font-size:clamp(2.35rem,13.6vw,2.85rem);
    letter-spacing:-.025em
  }
  .legal-hero h1{font-size:clamp(2.6rem,14vw,3rem)}
  .mobile-book{width:calc(100% - 1.4rem)}
}

@media (min-width:821px) and (max-width:1100px){
  .portrait-triptych{
    grid-template-columns:minmax(280px,.7fr) minmax(0,1.3fr);
    gap:2rem
  }
  .portrait-triptych h2{font-size:clamp(2.55rem,4.4vw,3rem)}
  .legal-body{grid-template-columns:150px minmax(0,1fr);gap:2.5rem}
  .legal-body article{grid-template-columns:2rem minmax(230px,.55fr) 1fr;gap:1rem}
  .legal-body article h2{font-size:1.75rem}
}

@media (max-width:820px) and (max-height:500px) and (orientation:landscape){
  .site-header,.site-header.is-scrolled{height:54px}
  .brand img{width:40px;height:40px}
  .brand strong{font-size:1rem}
  .brand small{display:none}
  .main-nav{
    inset:54px 0 0;
    gap:0;
    padding:1rem var(--gutter) calc(1rem + env(safe-area-inset-bottom))
  }
  .main-nav a{padding:.32rem 0;font-size:clamp(1.55rem,5.2vw,2rem);line-height:1}

  .scene-hero{
    height:100svh;
    min-height:0;
    align-items:flex-start;
    padding:60px var(--gutter) 10px;
    overflow:hidden
  }
  .scene-hero__content,.scene-hero--portrait .scene-hero__content{width:61%}
  .scene-hero__media,.scene-hero--portrait .scene-hero__media{inset:54px 0 0 48%}
  .scene-hero__media img,.scene-hero--portrait .scene-hero__media img{width:100%;height:100%;object-fit:contain;object-position:right top!important}
  .scene-hero .eyebrow{margin:0 0 .35rem;font-size:.48rem}
  .scene-hero h1{font-size:clamp(1.85rem,5.8vw,2.3rem);line-height:.9}
  .scene-hero__intro,.scene-hero .breadcrumbs,.scene-number{display:none}
  .scene-hero .actions{display:grid;grid-template-columns:1fr 1fr;gap:.4rem;margin-top:.55rem}
  .scene-hero .actions .button{min-width:0;min-height:37px;padding:.5rem .35rem;font-size:.65rem}

  .legal-hero{
    display:grid;
    align-content:center;
    height:100svh;
    min-height:0;
    padding:62px var(--gutter) 10px;
    overflow:hidden
  }
  .legal-hero .eyebrow{margin-bottom:.4rem;font-size:.5rem}
  .legal-hero h1{font-size:clamp(2rem,6vw,2.6rem)}
  .legal-hero>p:nth-of-type(2){margin:.55rem 0 0;font-size:.7rem;line-height:1.4}
  .not-found{
    height:100svh;
    min-height:0;
    padding:58px var(--gutter) 8px
  }
  .not-found span{font-size:5rem}
  .not-found h1{margin:.25rem 0;font-size:2rem}
  .not-found p{margin:.25rem 0;font-size:.7rem}
  .not-found .button{min-height:37px;padding:.5rem .8rem;font-size:.7rem}

  .film-break{
    height:100svh;
    min-height:0;
    grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)
  }
  .film-break__media{height:auto}
  .film-break__copy{align-self:center;padding:1.2rem}
  .film-break h2{font-size:clamp(1.9rem,5.8vw,2.4rem)}
  .film-break__copy>p:last-child{margin-top:.55rem;font-size:.68rem;line-height:1.4}

  .lookbook{padding-top:1.25rem;padding-bottom:1.25rem}
  .lookbook__intro{grid-template-columns:1.25fr .75fr;gap:1rem;margin-bottom:.8rem}
  .lookbook__intro h2{font-size:2rem}
  .lookbook__intro>div:first-child>p:last-child{display:none}
  .lookbook__controls{justify-content:flex-end}
  .lookbook__card,.lookbook__card:nth-child(3){flex-basis:27vw}
  .lookbook__card:nth-child(2),.lookbook__card:nth-child(5){padding-top:1rem}
  .lookbook__image{max-height:165px}
  .lookbook__card figcaption{padding:.55rem 0}
  .lookbook__card figcaption strong{font-size:1rem}

  .portrait-triptych{grid-template-columns:.7fr 1.3fr;gap:1rem;padding:1.4rem var(--gutter)}
  .portrait-triptych__copy{align-self:center}
  .portrait-triptych h2{font-size:2rem}
  .portrait-triptych__copy>p:last-child{font-size:.68rem;line-height:1.4}
  .portrait-triptych__images{display:flex;height:220px;min-height:0;overflow-x:auto;gap:.65rem;scroll-snap-type:x mandatory}
  .portrait-triptych__frame,
  .portrait-triptych--overlap .portrait-triptych__frame--1,
  .portrait-triptych--overlap .portrait-triptych__frame--2,
  .portrait-triptych--frames .portrait-triptych__frame,
  .portrait-triptych--offset .portrait-triptych__frame--1,
  .portrait-triptych--offset .portrait-triptych__frame--2,
  .portrait-triptych--poster .portrait-triptych__frame{
    flex-basis:42vw;
    height:220px;
    max-height:220px;
    aspect-ratio:auto;
    margin:0;
    transform:none;
    scroll-snap-align:start
  }
  .portrait-triptych__frame img{object-fit:contain;background:#090707}

  .price-scene,.city-pulse,.service-orbit,.profile-story{
    height:100svh;
    min-height:0;
    grid-template-columns:1fr 1fr
  }
  .price-scene__portrait,.profile-story__image,.city-pulse__visual,.service-orbit__number{
    height:100%;
    min-height:0
  }
  .price-scene__content,.city-pulse__copy,.service-orbit__copy,.profile-story__copy{
    align-self:center;
    max-height:100%;
    overflow:auto;
    padding:1.15rem
  }
  .price-scene h2,.city-pulse h2,.service-orbit h2,.profile-story h2{font-size:2rem}

  .end-frame{
    height:100svh;
    min-height:0;
    grid-template-columns:1.15fr .85fr;
    gap:1rem;
    padding:1.35rem var(--gutter)
  }
  .end-frame h2{font-size:2.2rem}
  .end-frame__copy>p:nth-of-type(2){font-size:.68rem;line-height:1.4}
  .end-frame__action .actions{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}
  .end-frame__action .button{min-width:0;min-height:37px;padding:.5rem .35rem;font-size:.65rem}
  .end-frame__action>p{margin-top:.55rem}
}

/* ============================================================
   OFFICIAL HERO — imported verbatim from texasshyboy.com
   Source: production /styles.css + /assets/texas-shyboy/css/
   texas-shyboy-tokens.css. Layer order: bg > glow > performer >
   emblem > particles > text. Nothing above this block may
   declare .hero rules; every value the client already approved
   lives here and must win the cascade.
   ============================================================ */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-family: var(--tsb-font-display);
  font-weight: 600;
  font-size: 15px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 15px 30px;
  border-radius: 4px;
  border: 1px solid transparent;
  transition:
    transform 0.35s cubic-bezier(0.32, 0.72, 0, 1),
    box-shadow 0.35s cubic-bezier(0.32, 0.72, 0, 1),
    background-color 0.35s cubic-bezier(0.32, 0.72, 0, 1),
    border-color 0.35s cubic-bezier(0.32, 0.72, 0, 1);
}
.btn:active { transform: scale(0.98); }
.btn--solid {
  background: linear-gradient(180deg, var(--tsb-red-bright), var(--tsb-red) 55%, #9c0011);
  color: #fff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 6px 24px rgba(208, 0, 22, 0.35);
}
.btn--solid:hover {
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.35), 0 8px 34px rgba(255, 27, 52, 0.55);
  transform: translateY(-1px);
}
.btn--ghost {
  background: rgba(3, 3, 3, 0.55);
  border-color: var(--tsb-line);
  color: var(--tsb-white);
}
.btn--ghost:hover {
  border-color: var(--tsb-red-line);
  background: rgba(208, 0, 22, 0.08);
}

.flag {
  display: inline-flex;
  align-items: center;
  padding: 6px 11px;
  border: 1px solid rgba(255, 27, 52, 0.42);
  border-radius: 3px;
  background: rgba(208, 0, 22, 0.16);
  font-family: var(--tsb-font-display);
  font-weight: 700;
  font-size: 12px;
  line-height: 1;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--tsb-white);
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.12);
  white-space: nowrap;
}
.flag--strong {
  padding: 8px 14px;
  font-size: 13px;
  border-color: rgba(255, 27, 52, 0.62);
  background: rgba(208, 0, 22, 0.2);
  box-shadow: 0 0 20px rgba(208, 0, 22, 0.22);
}

.hero {
  position: relative;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  padding: 128px clamp(16px, 4vw, 64px) 48px;
  overflow: hidden;
  isolation: isolate;
  background: var(--tsb-black);
}

.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -7;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(3, 3, 3, 0.9) 0%, rgba(3, 3, 3, 0.68) 26%, rgba(3, 3, 3, 0.22) 52%, rgba(3, 3, 3, 0.08) 74%, rgba(3, 3, 3, 0.26) 100%),
    linear-gradient(180deg, rgba(3, 3, 3, 0.14) 0%, transparent 42%, rgba(3, 3, 3, 0.58) 100%);
}

/* Layer 1 — Dallas night background */
.hero__bg { position: absolute; inset: 0; z-index: -8; }
.hero__bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  opacity: 1;
  filter: saturate(1.2) contrast(1.12) brightness(1.02);
}

/* Layer 2 — the performer: real photo, cut out with alpha.
   No CSS mask here: the transparency lives in the asset itself. */
.hero__visual {
  position: absolute;
  z-index: -1;
  right: clamp(34px, 4.2vw, 70px);
  top: 88px;
  transform: translateY(calc(var(--sy, 0) * 0.05px));
  width: min(calc((100dvh - 88px) * 0.72), calc(100vw - 780px), 640px);
  pointer-events: none;
  -webkit-mask-image: none;
  mask-image: none;
}
.hero__visual img {
  position: relative;
  z-index: 1;
  width: 100%;
  height: auto;
  filter:
    brightness(1.17) contrast(1.09) saturate(0.96)
    drop-shadow(0 0 48px rgba(255, 27, 52, 0.34))
    drop-shadow(0 18px 26px rgba(0, 0, 0, 0.46));
  transform-origin: 52% 42%;
}

/* Layer 3 — the rendered 3D logo video, blended into the city. */
.hero__emblem {
  position: absolute;
  z-index: -2;
  top: 51%;
  left: 55%;
  width: clamp(285px, 29vw, 420px);
  transform: translate(-50%, -50%) translateY(calc(var(--sy, 0) * 0.11px));
  mix-blend-mode: normal;
  opacity: 0.96;
  pointer-events: none;
  -webkit-mask-image: radial-gradient(closest-side, #000 68%, rgba(0, 0, 0, 0.62) 84%, transparent 97%);
  mask-image: radial-gradient(closest-side, #000 68%, rgba(0, 0, 0, 0.62) 84%, transparent 97%);
}
.hero__emblem-video {
  width: 100%;
  aspect-ratio: 1;
  display: block;
  height: auto;
  object-fit: cover;
  mix-blend-mode: screen;
  filter:
    brightness(1.06) contrast(1.16) saturate(0.94)
    drop-shadow(0 0 28px rgba(255, 27, 52, 0.3));
}

@media (prefers-reduced-motion: no-preference) {
  .hero__emblem { animation: logo-pulse 7s cubic-bezier(0.45, 0, 0.55, 1) infinite; will-change: opacity, filter; }
  .hero__visual img { animation: character-breathe 18s cubic-bezier(0.45, 0, 0.55, 1) infinite; will-change: transform; }
  .hero__bg img { animation: city-drift 24s cubic-bezier(0.45, 0, 0.55, 1) infinite; will-change: transform; }

  @keyframes logo-pulse {
    0%, 100% { opacity: 0.94; filter: brightness(0.98); }
    50% { opacity: 1; filter: brightness(1.08); }
  }
  @keyframes character-breathe {
    0%, 100% { transform: scale(1) translate3d(0, 0, 0); }
    50% { transform: scale(1.014) translate3d(0, -2px, 0); }
  }
  @keyframes city-drift {
    0%, 100% { transform: scale(1.015) translate3d(0, 0, 0); }
    50% { transform: scale(1.035) translate3d(-10px, -4px, 0); }
  }
}

/* Layer 4 — particles */
.hero__particles { position: absolute; inset: 0; z-index: -2; mix-blend-mode: screen; pointer-events: none; }
.hero__particles img { width: 100%; height: 100%; object-fit: cover; }

/* Layer 5 — text block */
.hero__content { position: relative; z-index: 1; max-width: 620px; }

.hero__eyebrow {
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 0 0 18px;
  font-family: var(--tsb-font-display);
  font-weight: 500;
  font-size: clamp(13px, 1.1vw, 16px);
  letter-spacing: 0.42em;
  text-transform: uppercase;
  color: var(--tsb-silver);
}
.hero__eyebrow span { flex: 0 0 34px; height: 1px; background: var(--tsb-red); }

.hero__title {
  margin: 0;
  font-family: var(--tsb-font-display);
  font-weight: 700;
  text-transform: uppercase;
  line-height: 0.92;
  letter-spacing: 0.01em;
  display: flex;
  flex-direction: column;
}
/* Service + locality string for search engines; invisible to the layout,
   so the approved hero composition is untouched. */
.hero__title i {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
.hero__title-texas {
  font-size: clamp(60px, 9.2vw, 140px);
  background: linear-gradient(178deg, #ffffff 0%, #e8e8e8 28%, #9a9a9a 52%, #6f6f6f 62%, #d6d6d6 84%, #f2f2f2 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  filter: drop-shadow(0 4px 2px rgba(0, 0, 0, 0.85)) drop-shadow(0 0 22px rgba(0, 0, 0, 0.6));
}
.hero__title-shyboy {
  font-size: clamp(60px, 9.2vw, 140px);
  background: linear-gradient(178deg, #ff4257 0%, var(--tsb-red-bright) 30%, var(--tsb-red) 58%, #7c000d 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  filter: drop-shadow(0 3px 2px rgba(0, 0, 0, 0.9)) drop-shadow(0 0 30px rgba(255, 27, 52, 0.38));
}

.hero__state {
  margin: 26px 0 0;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--tsb-line);
  font-family: var(--tsb-font-display);
  font-weight: 500;
  font-size: clamp(14px, 1.4vw, 20px);
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: var(--tsb-white);
}

.hero__copy {
  margin: 18px 0 0;
  max-width: 46ch;
  color: var(--tsb-muted);
  font-size: clamp(15px, 1.2vw, 17px);
}

.hero__actions { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 30px; }
.hero__flag { margin: 24px 0 16px; }
.hero__flag + .hero__actions { margin-top: 0; }

/* Call / text line under the CTAs */
.hero__phone {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 10px 0 0;
  font-family: var(--tsb-font-display);
  font-weight: 500;
  font-size: 14px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--tsb-muted);
}
.hero__phone-numbers { display: grid; gap: 5px; }
.hero__phone-numbers a { width: max-content; }
.hero__phone a {
  color: var(--tsb-white);
  font-weight: 600;
  letter-spacing: 0.16em;
  border-bottom: 1px solid var(--tsb-red-line);
  padding-bottom: 1px;
  transition: color 0.3s cubic-bezier(0.32, 0.72, 0, 1), border-color 0.3s cubic-bezier(0.32, 0.72, 0, 1);
}
.hero__phone a:hover { color: var(--tsb-red-bright); border-color: var(--tsb-red-bright); }

@media (prefers-reduced-motion: no-preference) {
  .hero__content { animation: hero-in 0.9s cubic-bezier(0.32, 0.72, 0, 1) both; }
  @keyframes hero-in {
    from { opacity: 0; transform: translateY(18px); }
    to { opacity: 1; transform: translateY(0); }
  }
  .hero__visual { animation: none; }
}

/* --- Official hero breakpoints --- */
@media (max-width: 1280px) {
  .hero__visual {
    right: clamp(24px, 3.4vw, 54px);
    width: min(calc((100dvh - 88px) * 0.72), calc(100vw - 600px));
  }
  .hero__emblem { width: clamp(280px, 29vw, 395px); }
}

@media (max-width: 1024px) {
  .hero__visual {
    right: 14px;
    width: min(calc((100dvh - 88px) * 0.72), max(310px, calc(100vw - 505px)));
    opacity: 0.98;
  }
  .hero__emblem { display: block; top: 48%; left: 56%; width: clamp(150px, 20vw, 190px); opacity: 0.84; }
  .hero__content { max-width: 460px; }
}

@media (min-width: 769px) and (max-width: 1024px) and (orientation: portrait) {
  .hero { min-height: min(100dvh, 900px); align-items: flex-start; padding-top: 150px; }
}

@media (max-width: 768px) {
  .hero {
    padding-top: 94px;
    padding-bottom: 72px;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
  }
  .hero__bg img { object-position: 70% center; }
  .hero__visual {
    top: auto;
    bottom: -18px;
    right: -32px;
    left: auto;
    width: clamp(190px, 64vw, 365px);
    transform: none;
    opacity: 1;
    z-index: -3;
    -webkit-mask-image: none;
    mask-image: none;
  }
  .hero__visual img {
    width: 100%;
    height: auto;
    filter:
      brightness(1.18) contrast(1.09) saturate(0.96)
      drop-shadow(0 0 34px rgba(255, 27, 52, 0.34))
      drop-shadow(0 12px 18px rgba(0, 0, 0, 0.4));
  }
  .hero__copy { max-width: 62%; margin-top: 12px; }
  .hero__phone { max-width: 66%; margin-top: 12px; }
  .hero__eyebrow { margin-bottom: 10px; }
  .hero__emblem {
    top: 128px;
    right: 4px;
    left: auto;
    width: clamp(70px, 26vw, 118px);
    transform: none;
    opacity: 0.9;
    z-index: -1;
  }
  .hero__content { max-width: 100%; }
  .hero__title-texas,
  .hero__title-shyboy { font-size: clamp(58px, 18.5vw, 88px); }
  .hero__state { margin-top: 18px; padding-bottom: 10px; letter-spacing: 0.18em; }
  .hero__flag { margin: 16px 0 12px; }
  .hero__actions { margin-top: 26px; flex-direction: column; align-items: flex-start; gap: 10px; }
  .hero__actions .btn { flex: 0 0 auto; min-width: 220px; }
}

@media (max-width: 560px) {
  .hero__copy,
  .hero__phone { max-width: min(100%, 320px); }
}

@media (max-width: 430px) {
  .hero { padding-left: 18px; padding-right: 18px; }
  .hero__eyebrow { letter-spacing: 0.28em; font-size: 12px; }
  .hero__eyebrow span { flex-basis: 22px; }
  .hero__phone { gap: 8px; font-size: 12px; letter-spacing: 0.16em; }
}

@media (max-width: 360px) {
  .hero { padding-top: 88px; padding-bottom: 58px; }
  .hero__eyebrow { font-size: 11px; }
  .hero__state { font-size: 13px; }
  .hero__copy { font-size: 14px; line-height: 1.45; }
  .hero__phone { font-size: 11.5px; }
  .hero__actions .btn {
    width: clamp(144px, 48vw, 166px);
    min-width: 0;
    padding-inline: 14px;
    font-size: 13px;
    letter-spacing: 0.14em;
  }
  .hero__visual { right: -44px; bottom: -58px; width: clamp(188px, 64vw, 230px); }
}

@media (min-width: 321px) and (max-width: 360px) {
  .hero__copy { max-width: 54%; }
}

@media (max-width: 320px) {
  .hero__visual { right: -54px; bottom: -74px; }
}

/* Two shell differences are reconciled here and nowhere else: the 2.0 header
   is 76px where production is 88px, and touch viewports carry a fixed booking
   bar that would otherwise sit on top of the phone line. */
@media (max-width: 820px) {
  .hero { padding-bottom: 104px; }
}
@media (prefers-reduced-motion: reduce) {
  .hero__content { animation: none; }
}

/* ============================================================
   ART-DIRECTED CROPS
   Every photographic slot reads its fit and focal point from the
   frame that produced it, so a cropped-only photograph stays
   cropped in a layout that would otherwise show it whole.
   ============================================================ */
.scene-hero__media img,
.scene-hero--portrait .scene-hero__media img{
  object-fit:var(--fit,contain);
  object-position:var(--pos,center top)
}
.scene-hero__media:has(img[style]) img{object-position:var(--pos,center top)}
.film-break__media img{object-fit:var(--fit,contain);object-position:var(--pos,center top)}
.city-pulse__visual img{object-fit:var(--fit,contain);object-position:var(--pos,center top)}

/* A cover crop needs a slightly wider stage than a cut-out figure. */
.scene-hero[style*="--fit:cover"] .scene-hero__media{inset:76px 0 0 42%}
.film-break[style*="--fit:cover"] .film-break__media img{height:100%}

/* ============================================================
   CITY RAIL — lateral links between the four city pages
   ============================================================ */
.city-rail{
  display:grid;
  grid-template-columns:minmax(220px,.9fr) minmax(0,2.1fr);
  gap:clamp(1.5rem,4vw,4rem);
  align-items:center;
  padding:clamp(1.75rem,3vw,2.75rem) var(--gutter);
  border-block:1px solid var(--line);
  background:linear-gradient(100deg,#080707,#120406 78%,#080707)
}
.city-rail>p{
  margin:0;
  max-width:34ch;
  color:#8f8884;
  font-size:.62rem;
  font-weight:700;
  letter-spacing:.14em;
  line-height:1.7;
  text-transform:uppercase
}
.city-rail>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}
.city-rail a,.city-rail span[aria-current]{
  display:grid;
  gap:.3rem;
  padding:1rem 1.1rem;
  border:1px solid var(--line);
  background:rgba(255,255,255,.02);
  transition:background-color 200ms ease,border-color 200ms ease,transform 200ms var(--ease-out)
}
.city-rail b{
  font-family:var(--display);
  font-size:clamp(1.15rem,1.8vw,1.65rem);
  font-weight:600;
  line-height:1;
  text-transform:uppercase
}
.city-rail i{
  color:#8b8480;
  font-style:normal;
  font-size:.53rem;
  font-weight:700;
  letter-spacing:.15em;
  text-transform:uppercase
}
.city-rail span[aria-current]{border-color:var(--red);background:rgba(236,0,29,.1)}
.city-rail span[aria-current] i{color:var(--red)}
@media (hover:hover) and (pointer:fine){
  .city-rail a:hover{background:var(--red);border-color:var(--red);transform:translateY(-2px)}
  .city-rail a:hover i{color:#fff}
}

/* ============================================================
   COVERAGE LEDGER — the honest per-city logistics block
   ============================================================ */
.coverage-ledger{
  display:grid;
  grid-template-columns:minmax(280px,.78fr) minmax(0,1.22fr);
  gap:clamp(2.5rem,5vw,5.5rem);
  max-width:var(--max);
  margin:auto;
  padding:var(--section) var(--gutter)
}
.coverage-ledger__head{position:sticky;top:120px;align-self:start}
.coverage-ledger h2{
  margin:0;
  font-family:var(--display);
  font-size:clamp(2.6rem,4.6vw,4.6rem);
  font-weight:400;
  line-height:.94;
  letter-spacing:-.018em;
  text-transform:uppercase
}
.coverage-ledger__distance{
  display:grid;
  gap:.2rem;
  margin:1.5rem 0 0;
  padding-top:1.1rem;
  border-top:1px solid var(--line)
}
.coverage-ledger__distance b{
  font-family:var(--display);
  font-size:1.35rem;
  font-weight:600;
  letter-spacing:.02em;
  text-transform:uppercase
}
.coverage-ledger__distance i{
  color:var(--red);
  font-style:normal;
  font-size:.62rem;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase
}
.coverage-ledger dl{margin:0;border-top:1px solid var(--line)}
.coverage-ledger dl div{
  display:grid;
  grid-template-columns:minmax(150px,.4fr) 1fr;
  gap:1.5rem;
  padding:1.45rem 0;
  border-bottom:1px solid var(--line)
}
.coverage-ledger dt{
  font-family:var(--display);
  font-size:1.15rem;
  font-weight:600;
  line-height:1.15;
  text-transform:uppercase
}
.coverage-ledger dd{margin:0;color:#a49d99;font-size:.88rem;line-height:1.68}

/* ============================================================
   HEADER — four cities now share the bar with three site links
   ============================================================ */
.main-nav__cities{
  display:flex;
  align-items:center;
  gap:clamp(.9rem,1.6vw,1.6rem);
  padding-right:clamp(.9rem,1.6vw,1.6rem);
  border-right:1px solid var(--line)
}

@media (max-width:1240px) and (min-width:821px){
  .brand{min-width:0}
  .brand small{display:none}
  .main-nav{gap:.9rem}
  .main-nav__cities{gap:.75rem;padding-right:.75rem}
  .main-nav a{font-size:.63rem;letter-spacing:.1em}
}

@media (max-width:820px){
  .main-nav__cities{
    display:contents
  }
  .coverage-ledger{grid-template-columns:1fr;gap:2rem}
  .coverage-ledger__head{position:static}
  .coverage-ledger dl div{grid-template-columns:1fr;gap:.4rem}
  .city-rail{grid-template-columns:1fr;gap:1.25rem}
  .city-rail>div{grid-template-columns:1fr 1fr}
  .scene-hero[style*="--fit:cover"] .scene-hero__media{inset:68px 0 31%}
}

@media (max-width:540px){
  .city-rail>div{grid-template-columns:1fr}
  .coverage-ledger h2{font-size:clamp(2.35rem,12vw,2.85rem)}
}

/* ============================================================
   REDUCED MOTION
   Choreography is decoration. With motion reduced every scene
   is fully painted from the first frame; nothing is hidden.
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  [data-motion] *,
  [data-motion] *::before,
  [data-motion] *::after{
    opacity:1!important;
    transform:none!important;
    clip-path:none!important;
    transition:none!important
  }
  [data-motion="march"] .statement-rows::before{display:none}
}

/* ============================================================
   ART-DIRECTION CORRECTIONS
   ============================================================ */

/* 1. The per-variant entry clips are more specific than the shared
   .is-inview reset, so an even-numbered frame in a "frames" gallery stayed
   clipped to nothing forever. These rules restate the reveal at matching
   specificity, after the entry states, so every frame resolves. */
[data-motion^="gallery-"].is-inview .portrait-triptych__frame,
[data-motion^="gallery-"].is-inview .portrait-triptych__frame:nth-child(even){
  opacity:1;
  transform:none
}
[data-motion^="gallery-"].is-inview .portrait-triptych__frame img,
[data-motion^="gallery-"].is-inview .portrait-triptych__frame:nth-child(even) img{
  clip-path:inset(0 0 0 0)
}
[data-motion="gallery-poster"].is-inview .portrait-triptych__frame:nth-child(2){
  transform:translateY(3rem)
}

/* 2. Gallery frames crop rather than letterbox — see portraitTriptych() in
   build.mjs. The --src custom property is still emitted so a future variant
   can reintroduce a bled backdrop without another markup change. */

/* 3. Interior heroes place a studio photograph on the night background. The
   photograph carries its own opaque backdrop, so without a top feather its
   upper edge cut a visible horizontal seam across the hero. */
.scene-hero__media::after{
  background:
    linear-gradient(180deg,rgba(0,0,0,.92),rgba(0,0,0,.35) 9%,transparent 20%),
    linear-gradient(90deg,rgba(0,0,0,.96),transparent 17%,transparent 92%,rgba(0,0,0,.32)),
    linear-gradient(0deg,rgba(0,0,0,.9),transparent 22%)
}

/* A film break is the darkest beat on the page, but several archive frames were
   shot on a pale studio backdrop. Left untreated, that backdrop punches a
   bright panel through an otherwise black composition. Lowering exposure and
   pulling saturation lets any frame — pale studio or night exterior — sit
   inside the same grade. */
.film-break__media{background:#070606}
.film-break__media img{filter:saturate(.58) contrast(1.14) brightness(.74)}
.film-break__media::before{
  content:"";
  position:absolute;
  z-index:1;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(120% 90% at 50% 42%,transparent 32%,rgba(0,0,0,.55) 78%,rgba(0,0,0,.85) 100%),
    linear-gradient(200deg,rgba(124,0,16,.28),transparent 58%)
}

/* ============================================================
   TOP CROP — enforced framing for the cropped-only archive
   ------------------------------------------------------------
   Two archive frames are competition shots in briefs. Shown from
   the shoulders up they are the strongest images on the site;
   shown whole they cheapen it. object-position cannot enforce
   that on its own — in a portrait slot, `cover` trims the sides
   and leaves the full height visible. Over-sizing the image and
   anchoring it to the top removes the lower third in every slot
   shape, so the crop is a property of the photograph rather than
   a property of the layout that happens to hold it.
   ============================================================ */
[data-crop="top"]{overflow:hidden}
[data-crop="top"] img{
  height:152%!important;
  min-height:152%;
  object-fit:cover!important;
  object-position:center top!important
}
.portrait-triptych__frame[data-crop="top"] img{height:150%!important}

/* ============================================================
   WEB INTERFACE GUIDELINES — compliance layer
   Fixes found in the pre-ship audit against the Vercel Web
   Interface Guidelines. Each rule notes what it protects.
   ============================================================ */

/* MUST: scroll-margin-top on anchor targets. The header is fixed at 76px, so
   without this the hero "View Events" jump parks its destination underneath
   the header and the section looks skipped. */
:target,
[id]{scroll-margin-top:calc(76px + 1.5rem)}
@media (max-width:820px){[id]{scroll-margin-top:calc(68px + 1rem)}}

/* MUST: touch-action on every interactive control, so a double tap fires the
   control instead of zooming the page. */
a,button,input,select,textarea,summary,[tabindex]{touch-action:manipulation}

/* SHOULD: the default blue-grey tap flash is off-brand on a black page. */
html{-webkit-tap-highlight-color:rgba(236,0,29,.22)}

/* MUST: figures that compare numbers are tabular. Prices sit in a column and
   phone numbers stack, so proportional digits made both ragged. */
.hero__phone,
.direct-lines strong,
.footer-bottom,
.footer-statement>a,
.price-scene dd,
.price-scene dd strong,
.city-pulse__visual small,
.coverage-ledger__distance b{font-variant-numeric:tabular-nums}

/* MUST: hit targets. The footer and breadcrumb links render at .58–.65rem, so
   their boxes fell under the 24px minimum without extra padding. */
.footer-links a,
.footer-bottom a,
.breadcrumbs a,
.language-link{display:inline-flex;align-items:center;min-height:24px}
@media (pointer:coarse){
  .footer-links a,
  .footer-bottom a,
  .breadcrumbs a,
  .main-nav a,
  .language-link{min-height:44px}
  .city-rail a{min-height:44px}
}

/* MUST: the horizontally scrollable lookbook is keyboard focusable, so it needs
   a visible focus ring of its own — the default one lands on the wrong edge. */
.lookbook__track:focus-visible{outline:2px solid var(--red);outline-offset:6px}

/* SHOULD: interaction states must gain contrast, not just change colour. */
.footer-links a:hover,.footer-bottom a:hover,.breadcrumbs a:hover{color:#fff}

.form-status{margin:0;min-height:1.2em;color:var(--red);font-size:.75rem;font-weight:600}
.form-status:empty{min-height:0}

/* The first hit-target pass missed three link groups that render at 11–18px.
   These are the remaining sub-24px targets on desktop. */
.main-nav a,
.footer-statement>a,
.footer-coverage a,
.service-area-links a,
.footer-credit{display:inline-flex;align-items:center;min-height:24px}
.main-nav a::after{bottom:-.35rem}
.footer-coverage{display:flex;flex-wrap:wrap;align-items:center;gap:0 .35rem}
@media (pointer:coarse){
  .footer-statement>a,
  .footer-coverage a,
  .service-area-links a{min-height:44px}
}

/* MUST: meet contrast. Measured against the actual painted backgrounds, four
   grey values fell between 3.1:1 and 4.3:1 at 9–12px — under the 4.5:1 floor
   for small text. These are the lightest values that keep the same recessive
   role in the hierarchy while clearing it. */
.footer-bottom{color:#8f8884;font-size:.62rem}
.footer-coverage{color:#948d89}
.form-note{color:#96908c}
.end-frame__stamp small{color:#9a9490}
.city-rail i{font-size:.58rem;color:#9a938f}
.lookbook__card figcaption i{color:#8d8682}

/* ============================================================
   ACCENT CONTRAST
   ------------------------------------------------------------
   #ec001d is the fill red: white on it clears 4.5:1, so buttons,
   ribbons and poster panels keep it. As *text* it fails in both
   directions — 4.45:1 on the black surfaces and 3.75:1 on the
   cream ones, and almost every red string on this site is an
   eyebrow, an index number or a rule label rendered at 9–12px.
   Red text therefore resolves through --accent, which each
   surface sets to the lightest (on dark) or darkest (on light)
   variant of the same hue. The brand colour is unchanged; only
   the small type moves far enough to be readable.
   ============================================================ */
:root{--accent:#ff1b34}

.portrait-triptych,
.price-scene,
.city-pulse,
.service-orbit,
.profile-story,
.trust-ribbon,
.moment-sequence--stripogram,
.booking-facts--birthday,
.end-frame--about,
.end-frame--faq{--accent:#c60016}

/* Panels that flip back to a dark or saturated ground inside a light block. */
.portrait-triptych--overlap,
.portrait-triptych--poster,
.service-orbit--stripogram,
.service-orbit--revue,
.moment-sequence--bachelorette,
.moment-sequence--revue{--accent:#ff1b34}
.portrait-triptych--poster,
.booking-facts--birthday,
.trust-callout{--accent:#fff}

.eyebrow,
.statement-rows b,
.experience-index__list b,
.experience-index__list i,
.service-catalog__cards span,
.lookbook__card figcaption span,
.breadcrumbs i,
.scene-hero__note span,
.local-service-rail>p span,
.local-service-rail>a i,
.trust-ribbon article span,
.trust-ribbon__coverage i,
.legal-body article b,
.legal-body aside>span,
.end-frame__action i,
.coverage-ledger__distance i,
.city-rail span[aria-current] i,
.form-status,
.footer-statement>a,
.service-area-links a{color:var(--accent)}
.footer-credit{color:var(--accent)!important}

/* The revue orbit paints the panel itself red, so its accent has to be white
   rather than a lighter red — red-on-red measured 1.19:1. */
.service-orbit--revue{--accent:#fff}

/* .booking-facts .service-area-links a is more specific than the shared accent
   rule and was still resolving to the fill red at 10px. */
.booking-facts .service-area-links a{color:var(--accent)}

/* The coverage strip is a dark bar sitting inside the cream trust ribbon, so it
   inherited the on-light accent and its separators dropped to 3.07:1. */
.trust-ribbon__coverage{--accent:#ff1b34}

/* The stagger gallery pulled its third frame up by 5rem, which dropped an
   opaque plate straight across the faces in the two frames behind it. On a
   page whose entire argument is "the person you see is the person who
   arrives", covering the face is the one thing the composition must not do.
   The frame now sits low and breaks the bottom edge instead. */
.portrait-triptych--stagger .portrait-triptych__frame--3{
  margin-top:16rem;
  z-index:2
}
.portrait-triptych--stagger .portrait-triptych__images{min-height:min(74svh,690px)}
@media (max-width:820px){
  .portrait-triptych--stagger .portrait-triptych__frame--3{margin-top:0}
  .portrait-triptych--stagger .portrait-triptych__images{min-height:0}
}

/* With the third frame moved down it now covers the second frame's caption in
   the bottom-left corner, so that one caption moves to the free edge. */
.portrait-triptych--stagger .portrait-triptych__frame--2 figcaption{left:auto;right:0}

/* ============================================================
   NAV MARK — the wordmark in the header now turns
   The header used a still frame while the hero played the 3D
   rotation, so the logo looked broken next to its own animation.
   Same file, same loop, one shared decode.
   ============================================================ */
/* The nav mark is the purpose-built animated WebP: it carries its own alpha,
   so it needs no blend trick, no circular mask and no zoom. The earlier video
   version showed the MP4's black backing as a dark box — MP4 has no
   transparency — and the circle plus scale(1.35) cropped the horns off the
   skull. Square frame, contain, nothing cropped. */
.brand__mark{
  display:block;
  flex:0 0 auto;
  width:54px;
  height:54px
}
.brand__mark img{
  width:100%;
  height:100%;
  object-fit:contain;
  display:block
}
.brand img{width:54px;height:54px;object-fit:contain}

/* ============================================================
   STORY HERO — Experiences
   The video owns the screen for three seconds before any copy
   arrives, so the message on the phone reads first.
   ============================================================ */
.story-hero{
  position:relative;
  min-height:100svh;
  display:flex;
  align-items:flex-end;
  overflow:hidden;
  padding:clamp(6rem,12vw,9rem) var(--gutter) clamp(2.5rem,5vw,4rem);
  background:#040404;
  isolation:isolate
}
.story-hero__media{position:absolute;inset:0;z-index:-2}
.story-hero__video{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 42%;
  /* The source is a night interior; without a lift the three-second hold is
     a black rectangle on most laptop screens. */
  filter:saturate(1.06) contrast(.94) brightness(1.62)
}
.story-hero__shade{
  position:absolute;
  inset:0;
  z-index:-1;
  background:
    linear-gradient(0deg,rgba(0,0,0,.95) 0%,rgba(0,0,0,.62) 34%,rgba(0,0,0,.12) 68%),
    linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.28) 52%,transparent)
}
.story-hero__content{position:relative;z-index:2;width:min(760px,64vw)}
.story-hero h1{
  margin:0;
  font-family:var(--display);
  font-size:clamp(2.4rem,5vw,5.2rem);
  font-weight:600;
  line-height:.94;
  letter-spacing:-.018em;
  text-transform:uppercase
}
.story-hero__intro{
  max-width:44rem;
  margin:1rem 0;
  color:#d4cfcb;
  font-size:clamp(.85rem,1.1vw,1.05rem);
  line-height:1.6
}
.story-hero .actions{margin-top:1.2rem}
.story-hero .breadcrumbs{margin-top:1.1rem}
.story-hero__caption{
  position:absolute;
  z-index:2;
  right:var(--gutter);
  bottom:1rem;
  margin:0;
  color:#8f8884;
  font-size:.54rem;
  font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase
}

/* The three-second hold. The copy is laid out from the first frame — it only
   waits to become visible — so nothing reflows when it arrives. */
[data-motion="story"] .story-hero__content>*,
[data-motion="story"] .story-hero__caption{
  opacity:0;
  transform:translate3d(0,20px,0)
}
[data-motion="story"].is-inview .story-hero__content>*,
[data-motion="story"].is-inview .story-hero__caption{
  animation:story-copy-in .85s var(--ease-out) both;
  animation-delay:calc(3s + var(--step,0) * .12s)
}
[data-motion="story"].is-inview .story-hero__content>*:nth-child(1){--step:0}
[data-motion="story"].is-inview .story-hero__content>*:nth-child(2){--step:1}
[data-motion="story"].is-inview .story-hero__content>*:nth-child(3){--step:2}
[data-motion="story"].is-inview .story-hero__content>*:nth-child(4){--step:3}
[data-motion="story"].is-inview .story-hero__content>*:nth-child(5){--step:4}
[data-motion="story"].is-inview .story-hero__caption{--step:5}
@keyframes story-copy-in{
  from{opacity:0;transform:translate3d(0,20px,0)}
  to{opacity:1;transform:none}
}
/* The shade lifts with the copy so the first three seconds stay cinematic. */
[data-motion="story"] .story-hero__shade{opacity:.18;transition:opacity 1.2s ease 2.5s}
[data-motion="story"].is-inview .story-hero__shade{opacity:1}

@media (prefers-reduced-motion:reduce){
  [data-motion="story"] .story-hero__content>*,
  [data-motion="story"] .story-hero__caption{opacity:1;transform:none;animation:none}
  [data-motion="story"] .story-hero__shade{opacity:1;transition:none}
  .story-hero__video{display:none}
  .story-hero__media{
    background:url("/assets/texas-shyboy/story/bachelorette-story-poster.webp") center/cover
  }
}

/* ============================================================
   HERO FIT
   Two reports from the client: the hero overflows on a laptop,
   and the performer covers the wordmark behind him.
   ============================================================ */

/* The emblem moves left and up out of the performer's silhouette. The
   production layout put it at 55%/51%, where his shoulder crosses the middle
   of the wordmark on any viewport narrower than about 1500px. */
.hero__emblem{left:47%;top:46%}
@media (min-width:1500px){.hero__emblem{left:50%;top:48%}}

/* Short viewports: the hero is 100dvh but its content is a fixed stack, so on
   anything under ~820px tall the phone line fell off the bottom. Everything
   below steps the block down until it fits rather than letting it clip. */
@media (min-width:821px) and (max-height:900px){
  .hero{padding-top:104px;padding-bottom:32px}
  .hero__title-texas,.hero__title-shyboy{font-size:clamp(52px,7.4vw,104px)}
  .hero__eyebrow{margin-bottom:12px}
  .hero__state{margin-top:16px;padding-bottom:10px}
  .hero__copy{margin-top:12px}
  .hero__flag{margin:14px 0 10px}
  .hero__actions{margin-top:18px}
  .hero__visual{top:78px}
}
@media (min-width:821px) and (max-height:760px){
  .hero{padding-top:92px;padding-bottom:24px}
  .hero__title-texas,.hero__title-shyboy{font-size:clamp(46px,6.4vw,84px)}
  .hero__state{font-size:clamp(12px,1.1vw,15px);margin-top:12px;padding-bottom:8px}
  .hero__copy{font-size:14px;margin-top:10px}
  .hero__flag{margin:10px 0 8px}
  .hero__actions{margin-top:14px}
  .hero__phone{margin-top:8px;font-size:12px}
  .hero .btn{padding:12px 22px;font-size:13px}
  .hero__visual{top:70px}
  .hero__emblem{width:clamp(210px,22vw,300px)}
}
@media (min-width:821px) and (max-height:640px){
  .hero{padding-top:84px}
  .hero__title-texas,.hero__title-shyboy{font-size:clamp(40px,5.4vw,66px)}
  .hero__copy,.hero__phone{display:none}
  .hero__emblem{opacity:.7}
}

/* ============================================================
   P2L CREDIT
   The build credit was the last item in a wrapping flex row and
   dropped out of sight at several widths. It now has its own
   row that cannot be pushed off.
   ============================================================ */
.footer-credit-row{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:.5rem 1.25rem;
  max-width:var(--max);
  margin:.75rem auto 0;
  padding-top:.75rem;
  border-top:1px solid var(--line)
}
.footer-credit-row p{margin:0;color:#8f8884;font-size:.6rem;letter-spacing:.08em}
.footer-credit-row .footer-credit{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  min-height:24px;
  font-size:.62rem;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase
}
.footer-credit-row .footer-credit::before{
  content:"";
  width:1.6rem;
  height:1px;
  background:currentColor
}

/* ============================================================
   NARROW SCREENS — 280px up
   The client asked for 280px to work, which is a folded Galaxy
   Z Fold and the narrowest viewport still in real use. Three
   things broke there: the story hero sized its copy in vw so it
   collapsed to a column two words wide, the open mobile menu
   clipped its longest label, and the brand lockup wrapped.
   ============================================================ */

/* The story hero: copy is a percentage of the viewport on desktop and simply
   full width once there is no room to art-direct around the video. */
@media (max-width:820px){
  .story-hero{
    min-height:100svh;
    padding:88px var(--gutter) calc(3rem + env(safe-area-inset-bottom))
  }
  .story-hero__content{width:100%}
  .story-hero__video{object-position:center 38%}
  .story-hero__shade{
    background:
      linear-gradient(0deg,rgba(0,0,0,.97) 0%,rgba(0,0,0,.72) 40%,rgba(0,0,0,.1) 74%),
      linear-gradient(90deg,rgba(0,0,0,.5),transparent 60%)
  }
  .story-hero__caption{
    right:auto;
    left:var(--gutter);
    bottom:.55rem;
    font-size:.48rem
  }
}

@media (max-width:540px){
  .story-hero h1{font-size:clamp(2rem,9.5vw,2.9rem)}
  .story-hero__intro{font-size:.84rem}
  .story-hero .actions{display:grid;grid-template-columns:1fr 1fr;gap:.45rem;width:100%}
  .story-hero .actions .button{width:100%;min-width:0}
}

@media (max-width:360px){
  /* The longest nav label is "Experiences"/"Experiencias"; at 10vw it ran past
     the panel edge. */
  .main-nav a{font-size:clamp(1.6rem,7.6vw,2.2rem);padding:.5rem 0}
  .brand strong{font-size:.98rem;line-height:1.05}
  .brand__mark{width:42px;height:42px}
  .brand img{width:42px;height:42px}
  .header-tools{gap:.15rem}
  .language-link{padding:.55rem .4rem}

  .story-hero h1{font-size:clamp(1.75rem,10vw,2.2rem)}
  .story-hero .actions{grid-template-columns:1fr}

  /* Editorial display type has to stop scaling with the viewport or a single
     long word decides the page width. */
  .scene-hero h1,
  .film-break h2,
  .end-frame h2,
  .lookbook__intro h2,
  .portrait-triptych h2,
  .coverage-ledger h2,
  .trust-callout h2{font-size:clamp(1.85rem,11vw,2.3rem);letter-spacing:-.02em}
  .statement-rows h3{font-size:1.15rem}
  .experience-index__list h3,
  .service-catalog__cards h3{font-size:1.3rem}
  .service-orbit__number{font-size:clamp(2.6rem,20vw,4rem)}
  .city-rail b{font-size:1.05rem}
  .coverage-ledger dt{font-size:1rem}
  .booking-facts li{font-size:1.1rem}
  .legal-hero h1{font-size:clamp(1.9rem,11vw,2.4rem)}
  .not-found span{font-size:clamp(4.5rem,30vw,7rem)}
  .page-transition span{font-size:16vw}
  .word-reel span{min-height:46px;font-size:.9rem;padding:0 1.1rem}
  .word-reel span::after{margin-left:2.2rem}

  /* Long unbroken strings — phone numbers, coordinates, URLs — get to break
     rather than push the document wider. */
  .footer-bottom,
  .footer-coverage,
  .direct-lines strong,
  .city-pulse__visual small{overflow-wrap:anywhere}
}

@media (max-width:300px){
  :root{--gutter:.85rem}
  .brand small{display:none}
  .hero__title-texas,.hero__title-shyboy{font-size:clamp(44px,19vw,58px)}
  .hero__state{font-size:11px;letter-spacing:.14em}
  .hero__copy{font-size:13px}
  .scene-hero h1{font-size:clamp(1.7rem,12vw,2rem)}
  .story-hero h1{font-size:clamp(1.6rem,11vw,2rem)}
  .actions .button,.hero__actions .btn{font-size:.78rem;letter-spacing:.08em;padding-inline:.6rem}
  .lookbook__card{flex-basis:84vw}
  .city-rail>div{grid-template-columns:1fr}
}

/* The client's revised gallery headline is roughly twice the length of the one
   it replaced ("The character changes. The presence never does."), which broke
   it into seven lines in a column sized for four and pushed the supporting
   paragraph below the fold. Slightly more column and slightly less display size
   puts the whole block back on screen without changing the layout. */
.portrait-triptych{grid-template-columns:minmax(280px,.66fr) minmax(0,1.34fr)}
.portrait-triptych h2{font-size:clamp(2.5rem,4.3vw,4.3rem)}
@media (max-width:1100px){
  .portrait-triptych{grid-template-columns:minmax(240px,.62fr) minmax(0,1.38fr)}
  .portrait-triptych h2{font-size:clamp(2.3rem,3.9vw,3.4rem)}
}

/* ============================================================
   REVUE FLYER — the promoter/venue booking sheet, shown in full
   ============================================================ */
.revue-flyer{
  display:grid;
  grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);
  gap:clamp(2rem,5vw,5rem);
  align-items:center;
  max-width:var(--max);
  margin:auto;
  padding:var(--section) var(--gutter)
}
.revue-flyer__copy>h2{
  margin:.4rem 0 0;
  font-family:var(--display);
  font-size:clamp(2.4rem,4.4vw,4.4rem);
  font-weight:400;
  line-height:.95;
  letter-spacing:-.018em;
  text-transform:uppercase
}
.revue-flyer__copy>p:nth-of-type(2){margin:1.1rem 0 1.6rem;max-width:44ch;color:#a49d99;font-size:.94rem;line-height:1.7}
.revue-flyer__image{
  margin:0;
  border:1px solid var(--line);
  background:#0a0808;
  box-shadow:0 30px 80px rgba(0,0,0,.45)
}
.revue-flyer__image img{width:100%;height:auto;display:block}
@media (max-width:820px){
  .revue-flyer{grid-template-columns:1fr;gap:2rem}
  .revue-flyer__image{order:-1;max-width:460px;margin-inline:auto}
}

/* ============================================================
   SCENE-HERO CUTOUT — figure floats free over the background
   The client asked for the experience photos to come out of the
   box and become part of the scene, like the homepage hero.
   These heroes drop the shaded rectangle and stand a transparent
   cutout on the page background with a soft red bloom.
   ============================================================ */
.scene-hero--cutout .scene-hero__media{
  inset:auto 0 0 44%;
  top:64px;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  overflow:visible
}
.scene-hero--cutout .scene-hero__media img{
  width:auto;
  max-width:100%;
  height:100%;
  object-fit:contain;
  object-position:bottom center;
  filter:
    brightness(1.05) contrast(1.03)
    drop-shadow(-24px 20px 30px rgba(0,0,0,.6))
    drop-shadow(0 0 60px rgba(236,0,29,.28))
}
/* No rectangle seam over a transparent figure. */
.scene-hero--cutout .scene-hero__media::after{display:none}
/* A soft radial bloom behind the figure ties it to the background. */
.scene-hero--cutout .scene-hero__media::before{
  content:"";
  position:absolute;
  z-index:-1;
  inset:8% 6% 0 6%;
  background:radial-gradient(circle at 60% 42%,rgba(236,0,29,.22),transparent 60%);
  filter:blur(38px)
}
/* The dark base a cutout stands on: page gradient, plus the city backdrop
   underneath on the location pages. */
.scene-hero--cutout{
  background:
    radial-gradient(circle at 72% 40%,rgba(236,0,29,.14),transparent 42%),
    linear-gradient(118deg,#050505 0%,#080606 52%,#170407 100%)
}
.scene-hero--cutout.scene-hero--backdrop{
  background:
    linear-gradient(90deg,rgba(2,2,2,.97) 0%,rgba(2,2,2,.82) 40%,rgba(2,2,2,.42) 72%,rgba(2,2,2,.6) 100%),
    linear-gradient(0deg,rgba(0,0,0,.9),transparent 55%),
    var(--scene-backdrop);
  background-size:cover;
  background-position:center
}
/* The shade only needs to protect the copy column now, not mask a photo edge. */
.scene-hero--cutout .scene-hero__shade{
  background:linear-gradient(90deg,rgba(0,0,0,.92) 0%,rgba(0,0,0,.55) 38%,transparent 66%)
}
/* Cutout reveal: rise and settle rather than the image-wipe used for framed art. */
[data-motion="scene"] .scene-hero--cutout .scene-hero__media img,
.scene-hero--cutout[data-motion="scene"] .scene-hero__media img{clip-path:none}
[data-motion="scene"].scene-hero--cutout .scene-hero__media{
  opacity:0;transform:translate3d(0,4%,0) scale(1.02);
  transition:opacity 900ms var(--ease-out),transform 1100ms var(--ease-out)
}
[data-motion="scene"].scene-hero--cutout.is-inview .scene-hero__media{opacity:1;transform:none}

@media (max-width:820px){
  .scene-hero--cutout .scene-hero__media{inset:auto 0 24% 0;top:auto;height:70%;justify-content:flex-end;opacity:.96}
  .scene-hero--cutout .scene-hero__media img{height:100%;object-position:bottom right}
  .scene-hero--cutout .scene-hero__shade{background:linear-gradient(0deg,rgba(0,0,0,.97) 0%,rgba(0,0,0,.72) 46%,transparent 82%)}
}
@media (max-width:540px){
  .scene-hero--cutout .scene-hero__media{inset:auto 0 30% 0;height:62%}
}

/* ============================================================
   SCENE-HERO REEL — vertical event video as the page hero
   The three experience pages open on real footage in a phone-
   shaped frame on the right, copy on the left. Replaces both the
   old cutout hero and the tall standalone reel band.
   ============================================================ */
.scene-hero--reel{
  background:
    radial-gradient(circle at 74% 42%,rgba(236,0,29,.14),transparent 44%),
    linear-gradient(118deg,#050505 0%,#080606 54%,#170407 100%)
}
.scene-hero--reel .scene-hero__reel{
  position:absolute;
  z-index:-2;
  top:50%;
  /* Centered within the right half of the hero, not pinned to the edge. */
  left:73%;
  right:auto;
  transform:translate(-50%,-50%);
  width:min(300px,40vw);
  aspect-ratio:9/16;
  max-height:78%;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:20px;
  background:#0a0808;
  box-shadow:0 30px 80px rgba(0,0,0,.55)
}
.scene-hero--reel .scene-hero__reel video{width:100%;height:100%;object-fit:cover;display:block}
.scene-hero--reel .scene-hero__reel::after{
  content:"";position:absolute;inset:0;border-radius:20px;pointer-events:none;
  box-shadow:inset 0 0 60px rgba(0,0,0,.4)
}
.scene-hero--reel .scene-hero__shade{
  background:linear-gradient(90deg,rgba(0,0,0,.94) 0%,rgba(0,0,0,.58) 40%,transparent 66%)
}
.scene-hero--reel .scene-hero__content{width:min(640px,52vw)}
.scene-hero__reel-tag{margin:1.4rem 0 0;color:#8f8884;font-size:.55rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase}

/* Reveal: the phone rises and settles with the copy. */
[data-motion="scene"] .scene-hero__reel{
  opacity:0;transform:translate(-50%,-50%) translateY(24px) scale(.98);
  transition:opacity 900ms var(--ease-out),transform 1100ms var(--ease-out)
}
[data-motion="scene"].is-inview .scene-hero__reel{opacity:1;transform:translate(-50%,-50%)}

@media (max-width:820px){
  .scene-hero--reel{align-items:flex-end}
  .scene-hero--reel .scene-hero__reel{
    top:auto;bottom:auto;
    right:50%;
    transform:translateX(50%);
    width:min(240px,60vw);
    max-height:46%;
    margin:0 0 auto
  }
  /* Stack: video sits above the copy, both centered. */
  .scene-hero--reel{
    display:flex;flex-direction:column;justify-content:flex-start;
    padding-top:calc(76px + 1.5rem);
    text-align:center;
    height:auto;min-height:100svh
  }
  .scene-hero--reel .scene-hero__reel{position:relative;left:auto;right:auto;transform:none;margin:0 auto 1.75rem}
  [data-motion="scene"] .scene-hero--reel .scene-hero__reel,
  [data-motion="scene"].scene-hero--reel .scene-hero__reel{opacity:0;transform:translateY(20px)}
  [data-motion="scene"].scene-hero--reel.is-inview .scene-hero__reel{opacity:1;transform:none}
  .scene-hero--reel .scene-hero__content{width:100%}
  .scene-hero--reel .scene-hero__shade{background:linear-gradient(0deg,rgba(0,0,0,.6),transparent 60%)}
  .scene-hero--reel .actions{justify-content:center}
  .scene-hero--reel .breadcrumbs{justify-content:center}
}

/* The reviews CTA band paints the brand fill red and puts 11px text on it.
   White on #ec001d measures 4.18:1 — under the 4.5 floor for small text. The
   heading is large enough to pass, the kicker is not, so this band uses a
   marginally deeper red. Same hue, same brand read, legible kicker. */
.trust-callout{background:#c9001a}
.trust-callout p{color:#fff}
