/* ═══════════════════════════════════════════════════════════════════════
   Surface Crete — stylesheet
   Palette is quarried from the material itself: limewash bone, dry
   aggregate, wet slate, and one mineral pigment blue used sparingly.
   ═══════════════════════════════════════════════════════════════════════ */

:root{
  /* surface tones */
  --bone:#E9E6E0;
  --paper:#F3F1EC;
  --chalk:#DAD5CC;
  --rule:#C7C1B7;
  --ash:#8B8983;
  --graphite:#54575B;
  --ink:#1B1E22;
  --ink-2:#24282D;
  --pigment:#2F4E6F;
  --pigment-lt:#7E9CBC;

  /* type */
  --display:"Instrument Serif",Georgia,"Times New Roman",serif;
  --sans:"Instrument Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --mono:"DM Mono",ui-monospace,SFMono-Regular,Menlo,monospace;

  /* rhythm */
  --pad:clamp(20px,4vw,64px);
  --rail:0px;
  --sec:clamp(80px,10vw,160px);
  --ease:cubic-bezier(.22,.61,.36,1);
  --sw-h:58px;          /* height of the Indoor/Outdoor/Colours control */
  --head-h:72px;        /* kept in sync by main.js */
}

*,*::before,*::after{box-sizing:border-box}

html{
  scroll-behavior:smooth;-webkit-text-size-adjust:100%;
  overflow-x:hidden;      /* fallback for engines without clip */
  overflow-x:clip;        /* contains the marquee without breaking sticky */
}

body{
  margin:0;
  background:var(--bone);
  color:var(--ink);
  font-family:var(--sans);
  font-size:clamp(15px,.55vw + 13px,17px);
  line-height:1.62;
  letter-spacing:.002em;
  -webkit-font-smoothing:antialiased;
}

img,video{display:block;max-width:100%}
a{color:inherit}
button{font:inherit;color:inherit}

::selection{background:var(--pigment);color:var(--paper)}

.u-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

.skip{
  position:fixed;top:10px;left:10px;z-index:999;
  transform:translateY(-160%);
  background:var(--ink);color:var(--paper);
  padding:10px 16px;border-radius:2px;font-family:var(--mono);font-size:12px;
  transition:transform .2s;
}
.skip:focus{transform:none}

:focus-visible{outline:2px solid var(--pigment);outline-offset:3px}

/* ─────────────────────────────────────────────── layout primitives ──── */
.wrap{
  width:100%;max-width:1440px;margin-inline:auto;
  padding-inline:var(--pad);
  padding-left:calc(var(--pad) + var(--rail));
}
.grid{
  display:grid;grid-template-columns:repeat(12,1fr);
  column-gap:clamp(20px,3vw,48px);row-gap:clamp(32px,5vw,64px);
}
.col-5{grid-column:span 12}
.col-6{grid-column:span 12}
@media (min-width:900px){
  .col-5{grid-column:1 / 6}
  .col-6{grid-column:7 / 13}
}
@media (min-width:1200px){ :root{--rail:78px} }

/* ─────────────────────────────────────────────────────── typography ─── */
.h-display{
  font-family:var(--display);font-weight:400;
  font-size:clamp(2.4rem,5.2vw,4.9rem);
  line-height:.98;letter-spacing:-.018em;
  margin:0 0 1.1rem;
  text-wrap:balance;
}
.h-display em{font-style:italic;color:var(--pigment)}
.h-display--light{color:var(--paper)}
.h-display--light em{color:var(--pigment-lt)}

.eyebrow{
  font-family:var(--mono);font-size:11px;font-weight:400;
  letter-spacing:.18em;text-transform:uppercase;
  color:var(--graphite);
  margin:0 0 1.4rem;
  display:flex;align-items:center;gap:.75em;
}
.eyebrow::before{
  content:"";width:26px;height:1px;background:var(--rule);flex:none;
}
.eyebrow--light{color:rgba(243,241,236,.72)}
.eyebrow--light::before{background:rgba(243,241,236,.45)}

.lede{font-size:clamp(1.05rem,1.1vw + .8rem,1.3rem);line-height:1.5;color:var(--ink);margin:0 0 1.1rem}
p{margin:0 0 1.1rem;color:var(--graphite)}
p:last-child{margin-bottom:0}

.caption{
  font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;
  color:var(--ash);margin-top:1rem;
}

/* ──────────────────────────────────────────────── buttons and links ─── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.7em;
  cursor:pointer;min-height:46px;
  font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  text-decoration:none;color:var(--paper);background:var(--ink);
  padding:15px 26px;border:1px solid var(--ink);border-radius:0;
  transition:background .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease);
}
.btn::after{content:"→";transition:transform .35s var(--ease)}
.btn:hover{background:var(--pigment);border-color:var(--pigment)}
.btn:hover::after{transform:translateX(4px)}
.btn--sm{padding:11px 18px;font-size:11px}
.btn--light{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.btn--light:hover{background:var(--pigment);border-color:var(--pigment);color:var(--paper)}

.link{
  display:inline-flex;align-items:center;gap:.6em;
  background:none;border:0;cursor:pointer;min-height:34px;
  font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;
  text-decoration:none;color:var(--ink);
  padding-bottom:4px;border-bottom:1px solid var(--rule);
  transition:border-color .3s var(--ease),color .3s var(--ease);
}
.link::after{content:"→";transition:transform .3s var(--ease)}
.link:hover{color:var(--pigment);border-color:var(--pigment)}
.link:hover::after{transform:translateX(4px)}
.link--light{color:var(--paper);border-color:rgba(243,241,236,.4)}
.link--light:hover{color:var(--pigment-lt);border-color:var(--pigment-lt)}

/* ═════════════════════════════════════════════════ the depth gauge ════
   A measuring scale pinned to the left edge. Microcement is defined by
   how little of it there is, so the page carries a ruler.              */
.gauge{
  position:fixed;left:0;top:0;bottom:0;width:78px;z-index:60;
  display:none;pointer-events:none;
}
@media (min-width:1200px){ .gauge{display:block} }
.gauge__scale{
  position:absolute;left:30px;top:18vh;bottom:18vh;width:9px;
  background:repeating-linear-gradient(
    to bottom,
    currentColor 0 1px, transparent 1px 9px);
  color:var(--rule);
  opacity:.85;
}
.gauge__scale::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background:var(--rule);
}
.gauge__thumb{
  position:absolute;left:24px;top:18vh;width:21px;height:1px;background:var(--pigment);
  transition:top .12s linear;
}
.gauge__thumb::after{
  content:"";position:absolute;right:-4px;top:-3px;width:7px;height:7px;
  background:var(--pigment);
}
.gauge__label{
  position:absolute;left:30px;bottom:18vh;
  transform-origin:0 100%;transform:rotate(-90deg) translateX(6px);
  font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ash);white-space:nowrap;
}
.gauge.is-dark .gauge__scale{color:rgba(243,241,236,.35)}
.gauge.is-dark .gauge__scale::before{background:rgba(243,241,236,.35)}
.gauge.is-dark .gauge__label{color:rgba(243,241,236,.6)}
.gauge.is-dark .gauge__thumb{background:var(--pigment-lt)}
.gauge.is-dark .gauge__thumb::after{background:var(--pigment-lt)}

/* ══════════════════════════════════════════════════════════ header ════ */
.head{
  position:fixed;inset:0 0 auto 0;z-index:70;
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding:18px var(--pad);
  padding-left:calc(var(--pad) + var(--rail));
  padding-top:calc(18px + env(safe-area-inset-top,0px));
  color:var(--paper);
  transition:background .45s var(--ease),color .45s var(--ease),
             padding .35s var(--ease),box-shadow .45s var(--ease);
}
.head.is-menu{color:var(--ink)}
.head.is-menu .btn--sm{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.head.is-solid{
  background:rgba(233,230,224,.93);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  color:var(--ink);padding-top:11px;padding-bottom:11px;
  box-shadow:0 1px 0 var(--rule);
}

.brand{display:flex;align-items:center;gap:12px;text-decoration:none;flex:none}
.brand__mark{display:block;opacity:.95}
.brand__type{display:flex;flex-direction:column;line-height:1.15}
.brand__name{font-family:var(--display);font-size:20px;letter-spacing:-.01em}
.brand__sub{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;opacity:.62}

.nav{display:none;gap:clamp(16px,2vw,32px)}
@media (min-width:1040px){ .nav{display:flex} }
.nav a{
  font-family:var(--mono);font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;
  text-decoration:none;padding:6px 0;position:relative;opacity:.86;
  transition:opacity .25s;
}
.nav a::after{
  content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;
  background:currentColor;transition:right .35s var(--ease);
}
.nav a:hover{opacity:1}
.nav a:hover::after{right:0}

.head__end{display:flex;align-items:center;gap:14px}
.lang{display:none;gap:2px;font-family:var(--mono);font-size:11px;letter-spacing:.1em}
@media (min-width:1040px){ .lang{display:flex} }
.lang button{background:none;border:0;cursor:pointer;padding:4px 5px;opacity:.5;transition:opacity .25s}
.lang button.is-on{opacity:1;text-decoration:underline;text-underline-offset:4px}
.head .btn--sm{display:none}
@media (min-width:760px){ .head .btn--sm{display:inline-flex} }
.head:not(.is-solid) .btn--sm{background:transparent;color:var(--paper);border-color:rgba(243,241,236,.5)}
.head:not(.is-solid) .btn--sm:hover{background:var(--paper);color:var(--ink);border-color:var(--paper)}

.burger{
  display:flex;flex-direction:column;justify-content:center;gap:5px;
  width:40px;height:34px;background:none;border:0;cursor:pointer;padding:0;
}
@media (min-width:1040px){ .burger{display:none} }
.burger span:not(.u-sr){display:block;height:1px;width:22px;background:currentColor;transition:transform .3s var(--ease),opacity .3s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(3px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){transform:translateY(-3px) rotate(-45deg)}

.mnav{
  position:fixed;left:0;right:0;top:0;bottom:0;z-index:65;
  background:var(--bone);
  padding:calc(env(safe-area-inset-top,0px) + 74px) var(--pad)
          calc(env(safe-area-inset-bottom,0px) + 28px);
  overflow-y:auto;overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.mnav[hidden]{display:none}
.mnav__inner{display:flex;flex-direction:column}
.mnav a{
  font-family:var(--display);font-size:clamp(26px,7vw,34px);text-decoration:none;
  padding:12px 0;border-bottom:1px solid var(--chalk);line-height:1.1;
}
.mnav__foot{display:flex;flex-wrap:wrap;gap:16px;padding-top:26px}
.mnav__foot .link{font-size:11px}

/* ════════════════════════════════════════════════════════════ hero ════ */
.hero{
  position:relative;min-height:100vh;min-height:100svh;
  display:flex;flex-direction:column;justify-content:flex-end;
  color:var(--paper);overflow:hidden;
  padding:0 0 0;
}
.hero__stage{position:absolute;inset:0;background:var(--ink)}
.hero__slide{
  position:absolute;inset:0;margin:0;opacity:0;
  transition:opacity 1.5s var(--ease);
}
.hero__slide img{width:100%;height:100%;object-fit:cover;transform:scale(1.04)}
.hero__slide.is-on{opacity:1}
.hero__slide.is-on img{animation:drift 9s linear forwards}
@keyframes drift{from{transform:scale(1.04)}to{transform:scale(1.11)}}
.hero__stage::after{
  content:"";position:absolute;inset:0;
  background:
    linear-gradient(to top,rgba(20,23,26,.82) 0%,rgba(20,23,26,.34) 42%,rgba(20,23,26,.12) 70%,rgba(20,23,26,.42) 100%);
}

.hero__body{
  position:relative;z-index:2;
  padding:0 var(--pad) 30px;
  padding-left:calc(var(--pad) + var(--rail));
  max-width:min(100%,860px);
}
.hero__title{
  font-family:var(--display);font-weight:400;
  font-size:clamp(2.7rem,7vw,6.4rem);line-height:.95;letter-spacing:-.02em;
  margin:0 0 1.1rem;text-wrap:balance;
}
.hero__title em{font-style:italic;color:var(--pigment-lt)}
.hero__lede{color:rgba(243,241,236,.82);max-width:52ch;font-size:clamp(1rem,.6vw + .85rem,1.15rem)}
.hero__acts{display:flex;flex-wrap:wrap;align-items:center;gap:18px;margin-top:26px}

.hero__index{
  position:absolute;right:var(--pad);bottom:130px;z-index:2;
  list-style:none;margin:0;padding:0;display:none;text-align:right;
}
@media (min-width:1040px){ .hero__index{display:block} }
.hero__index button{
  background:none;border:0;cursor:pointer;padding:5px 0;
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(243,241,236,.5);display:flex;gap:12px;justify-content:flex-end;align-items:baseline;
  transition:color .3s;
}
.hero__index button span{opacity:.6}
.hero__index button.is-on{color:var(--paper)}
.hero__index button:hover{color:var(--paper)}

.spec{
  position:relative;z-index:2;margin:0;
  display:grid;grid-template-columns:repeat(2,1fr);
  border-top:1px solid rgba(243,241,236,.22);
  background:rgba(20,23,26,.28);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
}
@media (min-width:760px){ .spec{grid-template-columns:repeat(5,1fr)} }
.spec > div{
  padding:16px var(--pad);
  border-right:1px solid rgba(243,241,236,.14);
}
.spec > div:first-child{padding-left:calc(var(--pad) + var(--rail))}
.spec dt{
  font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;
  color:rgba(243,241,236,.55);margin-bottom:5px;
}
.spec dd{margin:0;font-family:var(--display);font-size:clamp(1.35rem,2vw,1.9rem);line-height:1}

/* ═════════════════════════════════════════════════════════ marquee ════ */
.marquee{
  background:var(--ink);color:var(--paper);
  padding:14px 0;overflow:hidden;white-space:nowrap;
}
.marquee__track{
  display:inline-flex;align-items:center;gap:22px;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.24em;text-transform:uppercase;
  animation:slide 34s linear infinite;
}
.marquee__track i{opacity:.45;font-style:normal}
@keyframes slide{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ═══════════════════════════════════════════════════════ film band ════ */
.film{
  position:relative;isolation:isolate;
  min-height:min(88svh,760px);
  display:flex;align-items:center;
  background:var(--ink);color:var(--paper);overflow:hidden;
}
.film__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.film__veil{
  position:absolute;inset:0;z-index:-1;
  background:linear-gradient(105deg,rgba(20,23,26,.9) 0%,rgba(20,23,26,.62) 46%,rgba(20,23,26,.28) 100%);
}
.film__body{
  padding:var(--sec) var(--pad);
  padding-left:calc(var(--pad) + var(--rail));
  max-width:min(100%,760px);
}
.film__lede{color:rgba(243,241,236,.8);max-width:48ch;margin-bottom:1.9rem}
.film__cap{
  position:absolute;right:var(--pad);bottom:26px;margin:0;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;
  color:rgba(243,241,236,.5);
}

/* ══════════════════════════════════════════════════════ manifesto ════ */
.manifesto{padding-block:var(--sec) 0}
.manifesto__fig{margin:clamp(48px,7vw,96px) 0 0;position:relative}
.manifesto__fig img,
.manifesto__fig video{width:100%;height:clamp(320px,52vw,640px);object-fit:cover;background:var(--chalk)}
.manifesto__fig figcaption{
  position:absolute;left:var(--pad);bottom:18px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--paper);text-shadow:0 1px 12px rgba(0,0,0,.6);
}

/* ════════════════════════════════════════════════════════ systems ════ */
.systems{padding-block:var(--sec)}
.rail{
  display:grid;grid-auto-flow:column;grid-auto-columns:minmax(268px,320px);
  gap:clamp(14px,1.6vw,24px);
  overflow-x:auto;scroll-snap-type:x mandatory;
  padding:clamp(40px,6vw,72px) var(--pad) 8px;
  padding-left:calc(var(--pad) + var(--rail));
  scrollbar-width:thin;
}
.rail::-webkit-scrollbar{height:2px}
.rail::-webkit-scrollbar-thumb{background:var(--rule)}
.card{scroll-snap-align:start}
.card__media{
  position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--chalk);
  margin-bottom:18px;
}
.card__media video{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease)}
.card:hover .card__media video{transform:scale(1.05)}
.card__step{
  font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--pigment);margin:0 0 6px;
}
.card h3{
  font-family:var(--display);font-weight:400;font-size:1.5rem;line-height:1.1;
  margin:0 0 8px;letter-spacing:-.01em;
}
.card p{font-size:.92rem;line-height:1.55}

.facts{
  list-style:none;margin:clamp(48px,6vw,80px) auto 0;padding-block:0;
  display:grid;gap:0;border-top:1px solid var(--rule);
}
@media (min-width:760px){ .facts{grid-template-columns:repeat(4,1fr)} }
.facts li{
  padding:26px clamp(16px,2vw,32px) 26px 0;
  border-bottom:1px solid var(--rule);
}
@media (min-width:760px){
  .facts li{border-bottom:0;border-right:1px solid var(--rule);padding-left:clamp(16px,2vw,32px)}
  .facts li:first-child{padding-left:0}
  .facts li:last-child{border-right:0}
}
.facts strong{
  display:block;font-family:var(--display);font-weight:400;
  font-size:clamp(2.2rem,3.4vw,3rem);line-height:1;margin-bottom:10px;
}
.facts span{font-size:.9rem;color:var(--graphite);line-height:1.5;display:block}

/* ══════════════════════════ signature: the trowel reveal ═════════════ */
.renov{padding-block:var(--sec);background:var(--paper)}
.tabs{
  display:flex;flex-wrap:wrap;gap:6px;
  margin:clamp(40px,5vw,64px) 0 22px;
}
.tabs button{
  background:none;border:1px solid var(--rule);cursor:pointer;
  padding:9px 16px;border-radius:0;
  font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--graphite);
  transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease);
}
.tabs button:hover{border-color:var(--ink);color:var(--ink)}
.tabs button[aria-selected="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}

.reveal-box{
  position:relative;overflow:hidden;
  aspect-ratio:16/10;background:var(--chalk);
  touch-action:pan-y;
  cursor:ew-resize;
}
@media (max-width:640px){ .reveal-box{aspect-ratio:4/3} }
.reveal-box__img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
}
.reveal-box__img--after{
  clip-path:inset(0 0 0 var(--pos));
}
.reveal-box__tag{
  position:absolute;top:16px;z-index:3;
  font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--paper);background:rgba(20,23,26,.6);
  padding:6px 12px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
}
.reveal-box__tag--l{left:16px}
.reveal-box__tag--r{right:16px}

.reveal-box__blade{
  position:absolute;top:0;bottom:0;left:var(--pos);z-index:4;
  width:1px;background:var(--paper);
  box-shadow:0 0 0 1px rgba(20,23,26,.16),0 0 26px rgba(20,23,26,.32);
  pointer-events:none;
}
/* the grip reads as the edge of a steel trowel */
.reveal-box__grip{
  position:absolute;top:50%;left:50%;
  width:74px;height:26px;
  transform:translate(-50%,-50%);
  background:linear-gradient(180deg,#F6F4EF 0%,#D6D2C9 48%,#ADA79C 52%,#EFEBE4 100%);
  box-shadow:0 2px 14px rgba(20,23,26,.4);
}
.reveal-box__grip::before,
.reveal-box__grip::after{
  content:"";position:absolute;top:50%;width:0;height:0;
  border-block:5px solid transparent;
}
.reveal-box__grip::before{left:11px;transform:translateY(-50%);border-right:6px solid var(--ink)}
.reveal-box__grip::after{right:11px;transform:translateY(-50%);border-left:6px solid var(--ink)}

.reveal-box__input{
  position:absolute;inset:0;z-index:5;
  width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize;
  -webkit-appearance:none;appearance:none;background:transparent;
}
.reveal-box__input:focus-visible{opacity:1;outline:2px solid var(--pigment);outline-offset:-2px}
.reveal-box__input::-webkit-slider-thumb{-webkit-appearance:none;width:74px;height:100%}
.reveal-box__input::-moz-range-thumb{width:74px;height:60px;border:0;opacity:0}

/* ═══════════════════════════════════════════════════════ products ════ */
.prods{padding-block:var(--sec)}
.prod{
  display:grid;gap:clamp(32px,5vw,72px);
  align-items:center;
  width:100%;max-width:1440px;margin-inline:auto;
  padding:clamp(40px,6vw,90px) var(--pad);
  padding-left:calc(var(--pad) + var(--rail));
}
@media (min-width:960px){
  .prod{grid-template-columns:5fr 7fr}
  .prod--flip .prod__text{order:2}
  .prod--flip .prod__media{order:1}
}
.prod__text .lede{margin-bottom:1.4rem}
.ticks{list-style:none;margin:0 0 1.9rem;padding:0}
.ticks li{
  position:relative;padding-left:26px;margin-bottom:11px;
  font-size:.94rem;line-height:1.55;color:var(--graphite);
}
.ticks li::before{
  content:"";position:absolute;left:0;top:.62em;
  width:14px;height:1px;background:var(--pigment);
}
.prod__media{display:grid;gap:clamp(10px,1.2vw,18px)}
.prod__lead img{width:100%;height:clamp(240px,34vw,440px);object-fit:cover}
.prod__trio,.prod__duo{display:grid;gap:clamp(10px,1.2vw,18px)}
.prod__trio{grid-template-columns:repeat(3,1fr)}
.prod__duo{grid-template-columns:repeat(2,1fr)}
.prod__media figure{margin:0;overflow:hidden;background:var(--chalk)}
.prod__trio img,.prod__duo img{width:100%;height:clamp(110px,14vw,190px);object-fit:cover;transition:transform 1s var(--ease)}
.prod__media figure:hover img{transform:scale(1.05)}

/* ════════════════════════════════════════════════════════ colours ════ */
.colour{padding-block:var(--sec);background:var(--ink);color:var(--paper)}
.colour .eyebrow{color:rgba(243,241,236,.7)}
.colour .eyebrow::before{background:rgba(243,241,236,.4)}
.colour .h-display{color:var(--paper)}
.colour .h-display em{color:var(--pigment-lt)}
.colour .lede{color:var(--paper)}
.colour p{color:rgba(243,241,236,.72)}
.colour .link{color:var(--paper);border-color:rgba(243,241,236,.4)}
.colour .link:hover{color:var(--pigment-lt);border-color:var(--pigment-lt)}

.strip{margin:clamp(48px,6vw,84px) 0 0;position:relative}
.strip video{width:100%;height:clamp(200px,30vw,380px);object-fit:cover;background:var(--ink-2)}
.strip figcaption{
  position:absolute;right:var(--pad);bottom:16px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;
  color:rgba(243,241,236,.7);text-shadow:0 1px 10px rgba(0,0,0,.7);
}

.chips{
  list-style:none;margin:clamp(40px,5vw,64px) auto 0;padding-block:0;
  display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(10px,1.4vw,20px);
}
@media (min-width:640px){ .chips{grid-template-columns:repeat(4,1fr)} }
@media (min-width:1040px){ .chips{grid-template-columns:repeat(8,1fr)} }
.chips li{display:flex;flex-direction:column;gap:9px}
.chips img{width:100%;aspect-ratio:1;object-fit:cover}
.chips span{font-size:.86rem}
.chips em{
  font-family:var(--mono);font-style:normal;font-size:10px;
  letter-spacing:.16em;color:rgba(243,241,236,.5);
}

/* ═══════════════════════════════════════════════════════════ trio ════ */
.trio{padding-block:var(--sec)}
.trio .wrap{display:grid;gap:clamp(28px,4vw,56px)}
@media (min-width:820px){ .trio .wrap{grid-template-columns:repeat(2,1fr)} }
.tile{display:flex;flex-direction:column;gap:20px}
.tile figure{margin:0;overflow:hidden;background:var(--chalk)}
.tile img{width:100%;height:clamp(220px,26vw,330px);object-fit:cover;transition:transform 1.1s var(--ease)}
.tile:hover img{transform:scale(1.04)}
.tile h3{
  font-family:var(--display);font-weight:400;font-size:clamp(1.5rem,2.2vw,2rem);
  line-height:1.05;margin:0 0 10px;letter-spacing:-.012em;
}
.tile p{margin-bottom:1.2rem}

/* ═══════════════════════════════════════════════════ renovation 2 ════ */
.reno2{padding-block:var(--sec);background:var(--paper)}
.pills{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0 0 1.6rem;padding:0}
.pills li{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
  border:1px solid var(--rule);padding:7px 13px;color:var(--graphite);
}
.pair{display:grid;gap:clamp(12px,1.6vw,22px);margin-top:clamp(40px,5vw,72px)}
@media (min-width:760px){ .pair{grid-template-columns:1fr 1fr} }
.pair figure{margin:0}
.pair img{width:100%;height:clamp(240px,30vw,420px);object-fit:cover}
.pair figcaption{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;
  color:var(--ash);margin-top:10px;
}

/* ════════════════════════════════════════════════════════════ cta ════ */
.cta{
  padding-block:var(--sec);
  background:var(--ink-2);color:var(--paper);
  background-image:radial-gradient(120% 90% at 12% 0%,rgba(47,78,111,.35) 0%,transparent 62%);
}
.cta__title{max-width:16ch}
.cta__lede{color:rgba(243,241,236,.78);max-width:56ch;font-size:clamp(1rem,.6vw + .85rem,1.18rem)}
.cta__acts{display:flex;flex-wrap:wrap;align-items:center;gap:18px;margin-top:30px}
.cta__meta{
  display:grid;gap:22px;margin:clamp(48px,6vw,80px) 0 0;
  border-top:1px solid rgba(243,241,236,.2);padding-top:28px;
}
@media (min-width:760px){ .cta__meta{grid-template-columns:repeat(3,1fr)} }
.cta__meta dt{
  font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(243,241,236,.55);margin-bottom:6px;
}
.cta__meta dd{margin:0;font-size:.98rem}
.cta__meta a{text-decoration:none;border-bottom:1px solid rgba(243,241,236,.35)}
.cta__meta a:hover{border-color:var(--pigment-lt);color:var(--pigment-lt)}

/* ═════════════════════════════════════════════════════════ footer ════ */
.foot{background:var(--ink);color:var(--paper);padding-top:clamp(56px,7vw,90px)}
.foot__top{
  display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between;
  padding-bottom:clamp(36px,5vw,56px);
}
.brand--foot .brand__name{font-size:24px}
.social{list-style:none;display:flex;flex-wrap:wrap;gap:20px;margin:0;padding:0}
.social a{
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  text-decoration:none;opacity:.7;transition:opacity .25s;
}
.social a:hover{opacity:1}

.foot__cols{
  display:grid;gap:34px;
  padding-block:clamp(36px,5vw,56px);
  border-top:1px solid rgba(243,241,236,.16);
}
@media (min-width:640px){ .foot__cols{grid-template-columns:repeat(2,1fr)} }
@media (min-width:1000px){ .foot__cols{grid-template-columns:repeat(4,1fr)} }
.foot__cols h4{
  font-family:var(--mono);font-size:10px;font-weight:400;
  letter-spacing:.2em;text-transform:uppercase;
  color:rgba(243,241,236,.5);margin:0 0 14px;
}
.foot__cols h4.mt{margin-top:28px}
.foot__cols ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.foot__cols a{font-size:.9rem;text-decoration:none;opacity:.82;transition:opacity .25s,color .25s}
.foot__cols a:hover{opacity:1;color:var(--pigment-lt)}

.foot__base{
  display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;
  border-top:1px solid rgba(243,241,236,.16);
  padding-block:22px 30px;
}
.foot__base p{margin:0;font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;color:rgba(243,241,236,.5)}
.foot__base ul{list-style:none;display:flex;gap:18px;margin:0;padding:0}
.foot__base a{font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;color:rgba(243,241,236,.5);text-decoration:none}
.foot__base a:hover{color:var(--paper)}

/* ═══════════════════════════════════════════════════════ reveals ═════ */
.reveal{opacity:0;transform:translateY(20px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal.is-in{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
  .reveal{opacity:1;transform:none}
  .hero__slide.is-on img{animation:none}
}

/* ═══════════════════════════════════════════════════════════════════════
   COMPONENTS ADDED FOR FULL INTERACTIVITY
   ═══════════════════════════════════════════════════════════════════════ */

/* ── a text button that reads as inline prose ───────────────────────────*/
.linkish{
  background:none;border:0;padding:0;cursor:pointer;
  font:inherit;color:var(--pigment);
  text-decoration:underline;text-underline-offset:3px;
  min-height:34px;
}
.linkish:hover{color:var(--ink)}
.cta .linkish,.colour .linkish{color:var(--pigment-lt)}
.cta .linkish:hover,.colour .linkish:hover{color:var(--paper)}

/* ── systems rail: controls ─────────────────────────────────────────────*/
.railwrap{position:relative}
.card{position:relative;display:flex;flex-direction:column}
.card h3{margin:0 0 8px}
.card__hit{
  background:none;border:0;padding:0;cursor:pointer;text-align:left;
  font:inherit;color:inherit;
}
.card__hit::after{content:"";position:absolute;inset:0;z-index:2}
.card__hit:focus-visible{outline:none}
.card:focus-within{outline:2px solid var(--pigment);outline-offset:6px}
.card__more{
  margin-top:auto;padding-top:14px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--pigment);
}

.railnav{
  display:flex;align-items:center;gap:20px;
  margin-top:18px;
}
.railnav__bar{position:relative;flex:1;height:1px;background:var(--rule);overflow:hidden}
.railnav__bar span{
  display:block;height:1px;width:100%;background:var(--ink);
  transform-origin:0 50%;transform:scaleX(.06);
  transition:transform .18s linear;
}
.railnav__btns{display:flex;gap:8px}
.railnav__btns button{
  width:46px;height:46px;border:1px solid var(--rule);background:none;cursor:pointer;
  font-size:15px;line-height:1;color:var(--ink);
  transition:background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease),opacity .25s;
}
.railnav__btns button:hover:not(:disabled){background:var(--ink);border-color:var(--ink);color:var(--paper)}
.railnav__btns button:disabled{opacity:.3;cursor:default}

/* ── colour chips as controls ───────────────────────────────────────────*/
.chips__hint{
  font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  color:rgba(243,241,236,.55);margin:clamp(40px,5vw,64px) auto 14px;
}
.chips li{display:block}
.chips button{
  display:flex;flex-direction:column;gap:9px;width:100%;
  background:none;border:0;padding:0;cursor:pointer;text-align:left;color:inherit;
}
.chips img{transition:opacity .3s var(--ease),transform .5s var(--ease)}
.chips button::before{
  content:"";position:absolute;inset:0;border:1px solid transparent;
  transition:border-color .3s var(--ease);pointer-events:none;
}
.chips li{position:relative}
.chips button[aria-pressed="true"]::before{border-color:var(--pigment-lt)}
.chips button[aria-pressed="true"] span{color:var(--pigment-lt)}
.chips button[aria-pressed="true"] img{opacity:.72}
.chips button[aria-pressed="true"]::after{
  content:"✓";position:absolute;top:9px;right:9px;
  width:24px;height:24px;display:grid;place-items:center;
  background:var(--pigment-lt);color:var(--ink);font-size:12px;
}
.chips__count{
  font-family:var(--mono);font-size:11px;letter-spacing:.06em;
  color:rgba(243,241,236,.6);margin-top:18px;
}

/* ── downloads ──────────────────────────────────────────────────────────*/
.dl{padding-block:var(--sec);background:var(--paper)}
.dl__list{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}
.dl__list a{
  display:grid;grid-template-columns:1fr auto;align-items:center;
  gap:4px 18px;padding:22px 0;text-decoration:none;
  border-bottom:1px solid var(--rule);
  transition:padding-left .3s var(--ease),color .3s var(--ease);
}
.dl__name{font-family:var(--display);font-size:clamp(1.3rem,2vw,1.7rem);line-height:1.1;grid-column:1}
.dl__meta{
  grid-column:1;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;
  color:var(--graphite);
}
.dl__icon{
  grid-column:2;grid-row:1 / span 2;
  width:46px;height:46px;display:grid;place-items:center;
  border:1px solid var(--rule);font-size:16px;
  transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease);
}
.dl__list a:hover .dl__icon{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.dl__note{margin-top:22px;font-size:.92rem}

/* ── enquiry form ───────────────────────────────────────────────────────*/
.form{display:grid;gap:18px}
.form[hidden]{display:none}
.form__intro{
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(243,241,236,.6);margin:0;
}
.field{display:grid;gap:7px;min-width:0}
.fieldset{border:0;padding:0;margin:0}
.field-row{display:grid;gap:18px}
@media (min-width:560px){ .field-row{grid-template-columns:1fr 1fr} }

.field label,.field legend{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(243,241,236,.72);padding:0;
}
.req{color:var(--pigment-lt)}

.field input,.field select,.field textarea{
  width:100%;font-family:var(--sans);
  font-size:16px;               /* 16px stops iOS zooming on focus */
  line-height:1.5;color:var(--paper);
  background:rgba(243,241,236,.06);
  border:1px solid rgba(243,241,236,.24);
  border-radius:0;padding:13px 14px;min-height:48px;
  transition:border-color .25s var(--ease),background .25s var(--ease);
  -webkit-appearance:none;appearance:none;
}
.field textarea{resize:vertical;min-height:110px}
.field select{
  background-image:linear-gradient(45deg,transparent 50%,rgba(243,241,236,.7) 50%),
                   linear-gradient(135deg,rgba(243,241,236,.7) 50%,transparent 50%);
  background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat;
  padding-right:42px;
}
.field select option{background:var(--ink);color:var(--paper)}
.field input::placeholder,.field textarea::placeholder{color:rgba(243,241,236,.38)}
.field input:focus,.field select:focus,.field textarea:focus{
  border-color:var(--pigment-lt);background:rgba(243,241,236,.1);outline:none;
}
.field input.is-bad,.field textarea.is-bad{border-color:#D08A6B}

.err{
  margin:0;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:#E3A184;
}
.hint{
  margin:0;font-family:var(--mono);font-size:10px;letter-spacing:.06em;
  color:rgba(243,241,236,.45);
}

.checks{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}

/* icon options — the native control stays for a11y, the box is the visual */
.opt{
  position:relative;display:inline-flex;align-items:center;gap:14px;
  flex:0 0 auto;              /* never squeeze the label into the border */
  cursor:pointer;min-height:52px;padding:12px 20px 12px 16px;
  border:1px solid rgba(243,241,236,.24);
  color:rgba(243,241,236,.82);font-size:.9rem;
  transition:border-color .25s var(--ease),background .25s var(--ease),color .25s var(--ease);
}
.opt--wide{width:fit-content;max-width:100%}
.opt input{
  position:absolute;width:1px;height:1px;margin:0;padding:0;
  opacity:0;pointer-events:none;
}
.opt__icon{
  flex:none;width:22px;height:22px;display:block;color:rgba(243,241,236,.5);
  transition:color .25s var(--ease),transform .35s var(--ease);
}
.opt__icon svg{width:100%;height:100%;display:block;fill:none;
  stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.opt__label{line-height:1.2;white-space:nowrap}

.opt:hover{border-color:rgba(243,241,236,.5)}
.opt:has(input:checked){
  border-color:var(--pigment-lt);background:rgba(126,156,188,.15);color:var(--paper);
}
.opt:has(input:checked) .opt__icon{color:var(--pigment-lt)}
.opt:has(input:focus-visible){outline:2px solid var(--pigment-lt);outline-offset:2px}

/* a small tick confirms state even where :has or colour is unavailable */
.opt::after{
  content:"";position:absolute;top:-1px;right:-1px;
  width:0;height:0;border-top:16px solid var(--pigment-lt);border-left:16px solid transparent;
  opacity:0;transition:opacity .2s var(--ease);
}
.opt:has(input:checked)::after{opacity:1}

.form__acts{display:flex;flex-wrap:wrap;align-items:center;gap:18px;margin-top:6px}
.form__note{
  font-family:var(--mono);font-size:10px;letter-spacing:.05em;line-height:1.6;
  color:rgba(243,241,236,.45);margin:0;
}

/* ── the review step ────────────────────────────────────────────────────*/
.sent{
  border:1px solid rgba(243,241,236,.24);padding:clamp(20px,3vw,30px);
  background:rgba(243,241,236,.05);
}
.sent[hidden]{display:none}
.sent__h{
  font-family:var(--display);font-weight:400;font-size:1.9rem;line-height:1;
  margin:0 0 16px;color:var(--paper);
}
.sent__body{
  font-family:var(--mono);font-size:12px;line-height:1.75;
  white-space:pre-wrap;word-break:break-word;margin:0 0 22px;
  color:rgba(243,241,236,.86);
  max-height:340px;overflow:auto;overscroll-behavior:contain;
}
.sent__acts{display:flex;flex-wrap:wrap;align-items:center;gap:14px}
.sent__acts .btn{color:var(--paper);background:transparent;border-color:rgba(243,241,236,.5)}
.sent__acts .btn--light{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.sent__acts .btn:not(.btn--light):hover{background:var(--paper);color:var(--ink);border-color:var(--paper)}

/* ── renovation pills become controls ───────────────────────────────────*/
.pills button{
  background:none;border:0;cursor:pointer;padding:0;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
  color:inherit;
}
.pills li{
  padding:0;border:1px solid var(--rule);
  transition:border-color .25s var(--ease),background .25s var(--ease),color .25s var(--ease);
}
.pills li:hover{border-color:var(--ink)}
.pills li button{display:block;padding:12px 15px;min-height:44px}

/* ── footer link buttons ────────────────────────────────────────────────*/
.foot__cols button{
  background:none;border:0;padding:0;cursor:pointer;text-align:left;
  font-family:var(--sans);font-size:.9rem;color:var(--paper);opacity:.82;
  min-height:30px;
  transition:opacity .25s,color .25s;
}
.foot__cols button:hover{opacity:1;color:var(--pigment-lt)}
.foot__base button{
  background:none;border:0;padding:0;cursor:pointer;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;
  color:rgba(243,241,236,.5);min-height:30px;
}
.foot__base button:hover{color:var(--paper)}

/* ── detail drawer ──────────────────────────────────────────────────────*/
.drawer{position:fixed;inset:0;z-index:120}
.drawer[hidden]{display:none}
.drawer__scrim{
  position:absolute;inset:0;background:rgba(15,17,20,.62);
  opacity:0;transition:opacity .3s var(--ease);
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
}
.drawer.is-on .drawer__scrim{opacity:1}
.drawer__panel{
  position:absolute;right:0;top:0;bottom:0;
  width:min(560px,100%);
  background:var(--bone);color:var(--ink);
  display:flex;flex-direction:column;
  transform:translateX(100%);
  transition:transform .34s var(--ease);
  box-shadow:-20px 0 60px rgba(15,17,20,.24);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
.drawer.is-on .drawer__panel{transform:none}
.drawer__panel:focus{outline:none}

@media (max-width:640px){
  .drawer__panel{
    right:0;left:0;top:auto;width:100%;height:92vh;height:92dvh;
    transform:translateY(100%);
  }
  .drawer.is-on .drawer__panel{transform:none}
}

.drawer__bar{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:16px var(--pad);
  padding-top:calc(16px + env(safe-area-inset-top,0px));
  border-bottom:1px solid var(--rule);flex:none;
}
@media (max-width:640px){
  .drawer__bar{padding-top:16px}
  .drawer__bar::before{
    content:"";position:absolute;top:7px;left:50%;transform:translateX(-50%);
    width:44px;height:3px;background:var(--rule);
  }
}
.drawer__eyebrow{
  margin:0;font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--graphite);
}
.drawer__x{
  width:44px;height:44px;flex:none;border:1px solid var(--rule);background:none;cursor:pointer;
  font-size:14px;line-height:1;color:var(--ink);
  transition:background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease);
}
.drawer__x:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}

.drawer__scroll{
  flex:1;overflow-y:auto;overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  padding:0 var(--pad) 40px;
}
.drawer__fig{margin:0 calc(var(--pad) * -1) 26px}
.drawer__fig img{width:100%;height:clamp(180px,32vw,260px);object-fit:cover;background:var(--chalk)}
.drawer__title{
  font-family:var(--display);font-weight:400;
  font-size:clamp(2rem,4.4vw,2.9rem);line-height:1;letter-spacing:-.018em;
  margin:0 0 16px;
}
.drawer__lead{font-size:1.06rem;line-height:1.5;color:var(--ink);margin-bottom:1.1rem}
.drawer__scroll p{font-size:.95rem}
.drawer__scroll .ticks{margin-top:1.4rem}

.dspec{margin:1.8rem 0 0;border-top:1px solid var(--rule)}
.dspec > div{
  display:grid;grid-template-columns:1fr;gap:2px;
  padding:13px 0;border-bottom:1px solid var(--rule);
}
@media (min-width:420px){ .dspec > div{grid-template-columns:38% 1fr;gap:16px;align-items:baseline} }
.dspec dt{
  font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--graphite);
}
.dspec dd{margin:0;font-size:.94rem}
.drawer__acts{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:2rem}

/* ── floating controls ──────────────────────────────────────────────────*/
.floats{
  position:fixed;z-index:80;
  right:calc(14px + env(safe-area-inset-right,0px));
  bottom:calc(14px + env(safe-area-inset-bottom,0px));
  display:flex;flex-direction:column;align-items:flex-end;gap:10px;
}
.totop{
  width:46px;height:46px;flex:none;cursor:pointer;
  background:rgba(233,230,224,.92);color:var(--ink);
  border:1px solid var(--rule);font-size:15px;line-height:1;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  transition:background .25s var(--ease),color .25s var(--ease);
}
.totop[hidden]{display:none}
.totop:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.wa{
  display:inline-flex;align-items:center;gap:9px;min-height:48px;
  background:var(--ink);color:var(--paper);text-decoration:none;
  padding:12px 16px;box-shadow:0 6px 26px rgba(20,23,26,.28);
  transition:background .3s var(--ease),transform .3s var(--ease);
}
.wa span{font-family:var(--mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase}
.wa:hover{background:var(--pigment);transform:translateY(-2px)}
@media (max-width:520px){ .wa span{display:none} .wa{padding:13px;width:48px;justify-content:center} }

/* ── toast ──────────────────────────────────────────────────────────────*/
.toast{
  position:fixed;z-index:140;
  left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));
  transform:translate(-50%,14px);
  max-width:min(92vw,460px);
  background:var(--ink);color:var(--paper);
  padding:13px 18px;
  font-family:var(--mono);font-size:11px;letter-spacing:.09em;
  box-shadow:0 10px 40px rgba(15,17,20,.34);
  opacity:0;pointer-events:none;
  transition:opacity .28s var(--ease),transform .28s var(--ease);
}
.toast[hidden]{display:none}
.toast.is-on{opacity:1;transform:translate(-50%,0)}
@media (max-width:520px){ .toast{bottom:calc(76px + env(safe-area-inset-bottom,0px))} }

/* ═══════════════════════════════════════════════════════════════════════
   CROSS-DEVICE HARDENING
   ═══════════════════════════════════════════════════════════════════════ */

/* touch devices: no sticky hover transforms, bigger targets */
@media (hover:none){
  .card:hover .card__media video,
  .prod__media figure:hover img,
  .tile:hover img,
  .wa:hover{transform:none}
  .nav a::after{display:none}
  .railnav__btns button:hover:not(:disabled){background:none;color:var(--ink);border-color:var(--rule)}
  .dl__list a:hover .dl__icon{background:none;color:var(--ink);border-color:var(--rule)}
}

/* short landscape phones: the hero must not eat the whole screen */
@media (max-height:520px) and (orientation:landscape){
  .hero{min-height:auto;padding-top:96px}
  .hero__stage img{min-height:420px}
  .hero__index{display:none}
  .spec{grid-template-columns:repeat(5,1fr)}
  .spec dd{font-size:1.1rem}
  .mnav{padding-top:calc(env(safe-area-inset-top,0px) + 66px)}
}

/* tablet: two-up product media, tighter rail */
@media (min-width:640px) and (max-width:959px){
  .prod__lead img{height:clamp(260px,40vw,380px)}
  .rail{grid-auto-columns:minmax(260px,300px)}
}

/* very small phones */
@media (max-width:380px){
  .brand__sub{display:none}
  .tabs button{padding:9px 12px;font-size:10px}
  .spec > div{padding:13px var(--pad)}
}

/* pointer-coarse: comparison slider needs a fatter grab area */
@media (pointer:coarse){
  .reveal-box__grip{width:86px;height:32px}
  .reveal-box__input::-webkit-slider-thumb{width:86px}
}

/* printing: drop the furniture, keep the content */
@media print{
  .head,.mnav,.gauge,.floats,.toast,.drawer,.marquee,.railnav,.hero__index,.tabs{display:none !important}
  body{background:#fff;color:#000}
  .hero,.film,.colour,.cta,.foot{background:#fff !important;color:#000 !important}
  .h-display--light,.cta__title{color:#000 !important}
  .reveal{opacity:1 !important;transform:none !important}
  a[href]::after{content:" (" attr(href) ")";font-size:9px}
}

/* honour forced-colours / high-contrast mode */
@media (forced-colors:active){
  .btn,.link,.railnav__btns button,.drawer__x,.totop{border:1px solid ButtonText}
  .reveal-box__blade{background:CanvasText}
}

/* the transparent-header rule sits later in the cascade, so restate the
   menu-open state with enough weight to beat it */
.head.is-menu:not(.is-solid){color:var(--ink)}
.head.is-menu:not(.is-solid) .btn--sm{
  background:var(--ink);color:var(--paper);border-color:var(--ink);
}
.head.is-menu:not(.is-solid) .btn--sm:hover{
  background:var(--pigment);border-color:var(--pigment);color:var(--paper);
}

/* older engines without :has still need a visible checked state */
@supports not selector(:has(*)){
  .opt input{
    position:static;width:18px;height:18px;opacity:1;pointer-events:auto;
    accent-color:var(--pigment-lt);
  }
  .opt::after{display:none}
}

/* the rail is a scroll container — keep its leading gutter off the first card */
.rail{scroll-padding-left:calc(var(--pad) + var(--rail))}
.rail > .card:first-child{scroll-margin-left:calc(var(--pad) + var(--rail))}

/* ═══════════════════════════════════════════════════════════════════════
   INDOOR / OUTDOOR / COLOURS SWITCH
   ═══════════════════════════════════════════════════════════════════════ */
.switch{padding-bottom:0}
.switch__barwrap{
  display:flex;justify-content:center;
  padding:0 var(--pad);
  /* half the control sits above the seam, half below */
  margin-top:calc(var(--sw-h) / -2);
  position:sticky;
  top:calc(var(--head-h, 72px) + 10px);
  z-index:40;
  pointer-events:none;                 /* only the bar itself is clickable */
}
.switch__bar{
  display:inline-flex;pointer-events:auto;
  min-height:var(--sw-h);
  background:var(--paper);
  border:1px solid var(--rule);
  box-shadow:0 14px 44px rgba(20,23,26,.14);
  max-width:100%;
  transition:box-shadow .3s var(--ease),background .3s var(--ease);
}
.switch__barwrap.is-stuck .switch__bar{
  box-shadow:0 10px 30px rgba(20,23,26,.2);
}
.switch__bar button{
  appearance:none;background:none;border:0;cursor:pointer;
  padding:16px clamp(20px,4vw,46px);min-height:var(--sw-h);
  font-family:var(--mono);font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--graphite);white-space:nowrap;
  border-right:1px solid var(--rule);
  transition:background .28s var(--ease),color .28s var(--ease);
}
.switch__bar button:last-child{border-right:0}
.switch__bar button:hover{color:var(--ink)}
.switch__bar button[aria-selected="true"]{background:var(--ink);color:var(--paper)}
.switch__panel{padding-top:var(--sec)}
.switch__panel[hidden]{display:none}
.switch__panel:focus{outline:none}
.switch__panel .manifesto__fig{margin-top:clamp(48px,7vw,96px)}
@media (max-width:520px){
  .switch__bar{width:100%}
  .switch__bar button{flex:1;padding:15px 8px;font-size:10px;letter-spacing:.12em}
}
@media (max-width:520px){ :root{--sw-h:52px} }

/* ═══════════════════════════════════════════════════════════════════════
   ASSISTANT
   ═══════════════════════════════════════════════════════════════════════ */
.chatbtn{
  width:52px;height:52px;flex:none;cursor:pointer;
  display:grid;place-items:center;
  background:var(--paper);color:var(--ink);
  border:1px solid var(--rule);
  box-shadow:0 6px 26px rgba(20,23,26,.22);
  transition:background .28s var(--ease),color .28s var(--ease),transform .28s var(--ease);
}
.chatbtn:hover{background:var(--ink);color:var(--paper);border-color:var(--ink);transform:translateY(-2px)}
.chatbtn[aria-expanded="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}

.chat{
  position:fixed;z-index:110;
  right:calc(14px + env(safe-area-inset-right,0px));
  bottom:calc(78px + env(safe-area-inset-bottom,0px));
  width:min(374px,calc(100vw - 28px));
  max-height:min(560px,calc(100vh - 150px));
  max-height:min(560px,calc(100dvh - 150px));
  display:flex;flex-direction:column;
  background:var(--bone);
  border:1px solid var(--rule);
  box-shadow:0 22px 64px rgba(15,17,20,.3);
  opacity:0;transform:translateY(12px) scale(.985);
  transform-origin:100% 100%;
  transition:opacity .26s var(--ease),transform .26s var(--ease);
}
.chat[hidden]{display:none}
.chat.is-on{opacity:1;transform:none}
@media (max-width:520px){
  .chat{
    right:8px;left:8px;width:auto;
    bottom:calc(74px + env(safe-area-inset-bottom,0px));
    max-height:calc(100vh - 150px);
    max-height:calc(100dvh - 150px);
  }
}

.chat__head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  padding:15px 15px 13px 18px;border-bottom:1px solid var(--rule);flex:none;
}
.chat__title{
  margin:0;font-family:var(--display);font-size:18px;line-height:1.1;letter-spacing:-.01em;
}
.chat__sub{
  margin:4px 0 0;font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;
  color:var(--ash);line-height:1.5;
}
.chat__x{
  width:34px;height:34px;flex:none;cursor:pointer;
  border:1px solid var(--rule);background:none;color:var(--ink);font-size:12px;line-height:1;
  transition:background .25s var(--ease),color .25s var(--ease);
}
.chat__x:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}

.chat__log{
  flex:1;overflow-y:auto;overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  padding:16px 18px 4px;display:flex;flex-direction:column;gap:9px;
}
.msg{
  margin:0;max-width:88%;padding:11px 14px;
  font-size:.9rem;line-height:1.5;
  animation:msgIn .28s var(--ease) both;
}
@keyframes msgIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.msg--bot{background:var(--paper);border:1px solid var(--rule);color:var(--ink);align-self:flex-start}
.msg--me{background:var(--ink);color:var(--paper);align-self:flex-end;text-align:right}
.msg--typing{display:flex;gap:5px;align-items:center;padding:14px}
.msg--typing i{width:5px;height:5px;border-radius:50%;background:var(--ash);animation:blink 1.1s infinite}
.msg--typing i:nth-child(2){animation-delay:.18s}
.msg--typing i:nth-child(3){animation-delay:.36s}
@keyframes blink{0%,60%,100%{opacity:.25}30%{opacity:1}}

.chat__replies{
  display:flex;flex-wrap:wrap;gap:7px;padding:12px 18px 4px;flex:none;
}
.reply{
  cursor:pointer;background:none;border:1px solid var(--ink);color:var(--ink);
  padding:9px 13px;min-height:40px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;
  transition:background .22s var(--ease),color .22s var(--ease);
}
.reply:hover{background:var(--ink);color:var(--paper)}
.chat__note{
  margin:0;padding:10px 18px calc(14px + env(safe-area-inset-bottom,0px));
  font-family:var(--mono);font-size:9px;letter-spacing:.05em;line-height:1.6;
  color:var(--ash);flex:none;
}

@media (prefers-reduced-motion:reduce){
  .msg{animation:none}
  .msg--typing i{animation:none}
}

/* the product / colour action rows — this rule was missing, so the buttons
   in them sat flush against each other */
.prod__acts{
  display:flex;flex-wrap:wrap;align-items:center;
  gap:18px 22px;
  margin-top:clamp(20px,2.5vw,30px);
}

/* `.field label` sets the mono uppercase style used by real field labels.
   The surface options are also <label>s inside a .field, so they picked that
   up and rendered smaller than the sample-box option outside it. Restate the
   option typography and box metrics so all six are identical. */
.field .opt{
  font-family:var(--sans);
  font-size:.9rem;
  letter-spacing:normal;
  text-transform:none;
  color:rgba(243,241,236,.82);
  padding:12px 20px 12px 16px;
  min-height:52px;
  gap:14px;
}
.field .opt:has(input:checked){color:var(--paper)}

/* ═══════════════════════════════════════════════════════════════════════
   TEXT SAFETY + NARROW-VIEWPORT REFLOW
   ═══════════════════════════════════════════════════════════════════════ */

/* long unbroken strings (emails, URLs, product codes) must never push the
   layout sideways */
body{overflow-wrap:break-word}
.h-display,.hero__title,.drawer__title,.sent__h,.chat__title,
.dl__name,.card h3,.tile h3,.facts strong{overflow-wrap:break-word}

/* the option row must be able to wrap its label on very narrow screens,
   even though the short ones stay on one line */
.opt--wide .opt__label{white-space:normal}
@media (max-width:400px){
  .opt__label{white-space:normal}
}

/* ── captions come out of the image and into the flow on small screens ──
   Absolute captions read fine on a wide image; once they wrap they collide
   with whatever sits below (the sticky switch bar, in the worst case). */
@media (max-width:820px){
  .film{
    flex-direction:column;align-items:stretch;justify-content:center;
    min-height:auto;
  }
  .film__body{padding-bottom:clamp(24px,5vw,36px)}
  .film__cap{
    position:static;margin:0;
    padding:0 var(--pad) clamp(40px,8vw,64px);
    max-width:44ch;line-height:1.6;
  }

  .manifesto__fig figcaption,
  .strip figcaption{
    position:static;
    text-shadow:none;text-transform:none;
    padding:12px var(--pad) 0;
    line-height:1.6;max-width:52ch;
    letter-spacing:.04em;
  }
  .manifesto__fig figcaption{color:var(--graphite)}
  .strip figcaption{color:rgba(243,241,236,.6)}
}

/* ── tablet and small-desktop tidy-ups ─────────────────────────────────── */
@media (min-width:821px) and (max-width:1100px){
  .film__cap{max-width:42ch;text-align:right;line-height:1.6}
  .manifesto__fig figcaption{max-width:60%}
  .strip figcaption{max-width:50%;text-align:right}
}

/* ── very small phones ─────────────────────────────────────────────────── */
@media (max-width:400px){
  .prod__trio{grid-template-columns:repeat(2,1fr)}
  .prod__trio figure:nth-child(3){grid-column:span 2}
  .chat__replies{padding-inline:14px}
  .chat__log{padding-inline:14px}
  .reveal-box__tag{font-size:9px;padding:5px 9px;top:12px}
  .reveal-box__tag--l{left:12px}
  .reveal-box__tag--r{right:12px}
  .dl__icon{width:40px;height:40px}
  .sent__body{font-size:11px}
}

/* ── keep the sticky switch clear of the caption above it ──────────────── */
.switch__barwrap{margin-bottom:0}
@media (max-width:820px){
  .switch__barwrap{margin-top:calc(var(--sw-h) / -2)}
  .switch__panel{padding-top:clamp(56px,12vw,var(--sec))}
}
