/* Layout: an open, friendly home page. Airy white and mist bands, navy type, rounded cards, and one illustrated house up top that lights up as you pick jobs. */
/* Fonts are served from this site, not from Google (SIL Open Font License, see the OFL files beside them) */
@font-face{font-family:"Figtree";font-style:normal;font-weight:300 900;font-display:swap;src:url("figtree-latin-2001.woff2") format("woff2")}
@font-face{font-family:"Plus Jakarta Sans";font-style:normal;font-weight:200 800;font-display:swap;src:url("plus-jakarta-sans-latin-2071.woff2") format("woff2")}
/* Stand ins sized to match, so text barely moves when the real fonts arrive */
@font-face{font-family:"Figtree Fallback";font-weight:100 599;src:local("Arial");size-adjust:100.84%;ascent-override:94.21%;descent-override:24.79%;line-gap-override:0%}
@font-face{font-family:"Figtree Fallback";font-weight:600 900;src:local("Arial Bold"),local("Arial-BoldMT");size-adjust:96.39%;ascent-override:98.55%;descent-override:25.94%;line-gap-override:0%}
@font-face{font-family:"Jakarta Fallback";font-weight:100 599;src:local("Arial");size-adjust:105.88%;ascent-override:98.04%;descent-override:20.97%;line-gap-override:0%}
@font-face{font-family:"Jakarta Fallback";font-weight:600 900;src:local("Arial Bold"),local("Arial-BoldMT");size-adjust:100.89%;ascent-override:102.89%;descent-override:22%;line-gap-override:0%}
:root{
  --navy:#001945;
  --navy-2:#0A2B66;
  --navy-3:#1A3F80;
  --blue:#0B4DBF;
  --sky:#4FA8EE;
  --ice:#EAF2FE;
  --ice-2:#F4F8FE;
  --ink:#0E1B31;
  --muted:#596682;
  --paper:#FFFFFF;
  --paper-glass:rgba(255,255,255,.92);
  --mist:#F5F8FC;
  --rail:#E0E7F0;
  --rail-2:#C8D3E2;
  --warm:#FFC54D;
  --gold:#F2B300;
  --go:#2BB673;
  --ok:#137A4A;
  --ok-bg:#EAF6EF;
  --warn:#8A5A00;
  --warn-bg:#FFF6E5;
  --warn-line:#D9A44A;
  --alert:#D2392E;
  --alert-bg:#FDF0EE;
  --alert-line:#F1C2BC;
  --on-navy:#FFFFFF;
  --on-navy-muted:#B9C7DE;
  --f-display:"Plus Jakarta Sans","Jakarta Fallback","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --f-body:"Figtree","Figtree Fallback","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --r-sm:12px;
  --r-md:16px;
  --r-lg:24px;
  --r-xl:32px;
  --shadow-sm:0 1px 2px rgba(0,25,69,.06),0 2px 10px rgba(0,25,69,.05);
  --shadow:0 1px 2px rgba(0,25,69,.05),0 14px 34px rgba(0,25,69,.10);
  --shadow-lg:0 2px 6px rgba(0,25,69,.05),0 28px 64px rgba(0,25,69,.16);
  --max:1200px;
  color-scheme:light;
}
@property --pos{syntax:"<percentage>";inherits:true;initial-value:50%}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:1.0625rem;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--paper)}
img{max-width:100%;height:auto}
h1,h2,h3,h4,p,ul,ol,dl,dd,figure,blockquote,fieldset{margin:0}
ul,ol{padding:0;list-style:none}
fieldset{border:0;padding:0;min-width:0}
legend{padding:0}
button,input,textarea,select{font:inherit;color:inherit}
a{color:var(--blue);text-underline-offset:.2em;text-decoration-thickness:1px}
@media (hover:hover){a:hover{color:var(--navy)}}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
section[id],main[id]{scroll-margin-top:88px}
.sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-left:max(clamp(16px,4vw,40px),env(safe-area-inset-left,0px));padding-right:max(clamp(16px,4vw,40px),env(safe-area-inset-right,0px))}
.ic{width:20px;height:20px;flex:none}
.ic--sm{width:16px;height:16px}

/* Type */
.display{font-family:var(--f-display);font-weight:800;color:var(--navy);letter-spacing:-.032em;line-height:1.05;text-wrap:balance}
.h1{font-size:clamp(2.3rem,1.15rem + 3.4vw,3.75rem);line-height:1.02}
.h2{font-size:clamp(1.85rem,1.25rem + 2.2vw,2.85rem)}
.lead{font-size:clamp(1.08rem,1rem + .35vw,1.24rem);line-height:1.6;color:var(--muted);max-width:60ch}
h3{font-family:var(--f-display);font-weight:700;font-size:1.12rem;line-height:1.3;letter-spacing:-.012em;color:var(--navy)}
.eyebrow{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;background:var(--ice);color:var(--blue);font-family:var(--f-display);font-weight:700;font-size:.82rem;line-height:1.2}
.eyebrow--dot::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 3px rgba(11,77,191,.15)}
.kicker{font-family:var(--f-display);font-weight:700;font-size:.9rem;line-height:1.3;color:var(--navy)}
.fine{font-size:.88rem;line-height:1.5;color:var(--muted)}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55em;min-height:50px;padding:.75em 1.4em;border-radius:999px;border:1.5px solid transparent;font-family:var(--f-display);font-weight:700;font-size:1rem;line-height:1.15;letter-spacing:-.005em;text-decoration:none;cursor:pointer;transition:background-color .2s,border-color .2s,color .2s,box-shadow .2s,transform .2s;white-space:nowrap}
.btn .ic{transition:transform .2s}
@media (hover:hover){.btn:hover .ic--go{transform:translateX(3px)}}
.btn:active{transform:translateY(1px)}
.btn--lg{min-height:56px;padding:.85em 1.6em;font-size:1.05rem}
.btn--sm{min-height:44px;padding:.6em 1.15em;font-size:.95rem}
.btn--primary{background:var(--navy);color:var(--on-navy);box-shadow:0 6px 18px rgba(0,25,69,.18)}
@media (hover:hover){.btn--primary:hover{background:var(--navy-2);color:var(--on-navy);box-shadow:0 10px 24px rgba(0,25,69,.24)}}
.btn--ghost{background:var(--paper);color:var(--navy);border-color:var(--rail-2)}
@media (hover:hover){.btn--ghost:hover{border-color:var(--navy);color:var(--navy)}}
.btn--light{background:var(--paper);color:var(--navy)}
@media (hover:hover){.btn--light:hover{background:var(--ice);color:var(--navy)}}
.btn--outline-light{background:transparent;color:var(--on-navy);border-color:rgba(255,255,255,.4)}
@media (hover:hover){.btn--outline-light:hover{border-color:var(--on-navy);color:var(--on-navy);background:rgba(255,255,255,.06)}}
.btn[disabled]{opacity:.6;cursor:progress}

/* Skip link */
.skip{position:absolute;left:12px;top:-80px;z-index:60;background:var(--navy);color:var(--on-navy);padding:10px 14px;border-radius:10px;font-weight:700;text-decoration:none}
.skip:focus{top:calc(10px + env(safe-area-inset-top,0px));color:var(--on-navy)}

/* Header */
.site-head{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--paper-glass);-webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid transparent;transition:border-color .2s,box-shadow .2s}
.site-head.is-scrolled{border-bottom-color:var(--rail);box-shadow:0 6px 24px rgba(0,25,69,.06)}
.site-head__in{display:flex;align-items:center;gap:14px;min-height:72px}
.brand{display:block;flex:none;line-height:0}
.brand img{height:38px;width:auto;display:block}
.nav{display:none;align-items:center;gap:2px;margin-left:auto}
.nav a{font-family:var(--f-display);font-weight:600;font-size:.93rem;line-height:1;color:var(--ink);text-decoration:none;padding:10px 10px;border-radius:999px;white-space:nowrap;transition:background-color .15s,color .15s}
@media (hover:hover){.nav a:hover{background:var(--mist);color:var(--navy)}}
.site-head__cta{display:flex;align-items:center;gap:10px;margin-left:auto}
.head-phone{display:none;align-items:center;gap:8px;font-family:var(--f-display);font-weight:700;font-size:1rem;color:var(--navy);text-decoration:none;padding:8px 6px;white-space:nowrap}
.head-phone .ic{color:var(--blue)}
.head-quote{display:inline-flex}
.menu-btn{width:46px;height:46px;border-radius:999px;border:1px solid var(--rail-2);background:var(--paper);color:var(--navy);display:grid;place-items:center;cursor:pointer}
.mobile-nav{border-top:1px solid var(--rail);background:var(--paper)}
.mobile-nav ul{display:grid;padding-block:6px 14px}
.mobile-nav a{display:block;padding:14px 0;border-bottom:1px solid var(--rail);font-family:var(--f-display);font-weight:700;font-size:1.05rem;color:var(--navy);text-decoration:none}
@media (max-width:559px){
  .site-head__in{gap:10px;min-height:64px}
  .brand img{height:31px}
  .site-head .head-quote{min-height:40px;padding:.5em 1.05em;font-size:.9rem;white-space:nowrap}
  .menu-btn{width:42px;height:42px}
}
@media (min-width:760px){.head-phone{display:inline-flex}}
@media (min-width:1180px){.nav{display:flex}.site-head__cta{margin-left:6px}.menu-btn{display:none}.mobile-nav{display:none}}

/* Hero */
.hero{position:relative;overflow:hidden;padding-block:clamp(24px,4vw,56px) clamp(48px,6vw,88px);background:radial-gradient(900px 520px at 88% 0%,var(--ice) 0%,rgba(234,242,254,0) 70%),var(--paper)}
.hero__grid{position:relative;z-index:1;display:grid;gap:clamp(32px,4.5vw,56px);grid-template-columns:minmax(0,1fr)}
@media (min-width:1040px){.hero__grid{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center}}
.hero__copy{display:grid;gap:22px;justify-items:start;min-width:0}
.notice{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:6px 6px 6px 14px;border-radius:999px;background:var(--paper);border:1px solid var(--rail-2);color:var(--navy);text-decoration:none;font-family:var(--f-display);font-weight:600;font-size:.86rem;line-height:1.3;box-shadow:var(--shadow-sm);transition:border-color .2s}
@media (hover:hover){.notice:hover{border-color:var(--navy);color:var(--navy)}}
.notice__days{background:var(--navy);color:var(--on-navy);border-radius:999px;padding:4px 11px;white-space:nowrap;font-variant-numeric:tabular-nums}
.tick-word{display:inline-block;white-space:nowrap;color:var(--blue)}
.tick-mark{display:inline-block;width:.98em;height:.82em;margin-left:.03em;vertical-align:baseline;overflow:visible;transform-origin:35% 95%}
.tm-ink{fill:currentColor}
.tick-mark.play{animation:tmWipe .6s .45s cubic-bezier(.55,0,.25,1) both,tmSettle .55s 1.02s cubic-bezier(.34,1.56,.64,1) both}
@keyframes tmWipe{from{-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0)}to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}
@keyframes tmSettle{0%{transform:scale(1) rotate(0deg)}40%{transform:scale(1.12) rotate(-5deg)}100%{transform:scale(1) rotate(0deg)}}
.cta-row{display:flex;flex-wrap:wrap;gap:12px;width:100%}
@media (max-width:520px){.cta-row .btn{flex:1 1 100%}}
.trust{display:flex;flex-wrap:wrap;gap:12px 26px;width:100%;padding-top:20px;border-top:1px solid var(--rail)}
.trust li{display:flex;align-items:center;gap:9px;font-family:var(--f-display);font-weight:600;font-size:.92rem;line-height:1.3;color:var(--navy)}
.trust .ic{color:var(--blue)}
.stars{display:inline-flex;gap:2px;color:var(--gold)}
.stars svg{width:18px;height:18px}
.stars--sm svg{width:15px;height:15px}

/* Scene card */
.scene-card{position:relative;min-width:0;display:grid;gap:16px;padding:clamp(14px,2.2vw,22px);background:var(--paper);border:1px solid var(--rail);border-radius:var(--r-xl);box-shadow:var(--shadow-lg)}
.scene-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:4px 4px 0}
.scene-card__title{margin-top:10px;font-family:var(--f-display);font-weight:800;font-size:clamp(1.25rem,1.1rem + .6vw,1.55rem);letter-spacing:-.022em;line-height:1.15;color:var(--navy)}
.scene-card__hint{margin-top:4px;color:var(--muted);font-size:.98rem;line-height:1.45}
.daynight{position:relative;flex:none;display:grid;grid-template-columns:1fr 1fr;width:78px;height:40px;padding:4px;border-radius:999px;border:1px solid var(--rail-2);background:var(--mist);cursor:pointer;color:var(--muted);transition:background-color .3s,border-color .3s}
.daynight::before{content:"";position:absolute;top:4px;left:4px;width:34px;height:30px;border-radius:999px;background:var(--paper);box-shadow:var(--shadow-sm);transition:transform .35s cubic-bezier(.34,1.4,.64,1),background-color .3s}
.daynight span{position:relative;z-index:1;display:grid;place-items:center;height:30px;transition:color .3s}
.daynight .ic{width:18px;height:18px}
.daynight .dn-sun{color:#D99A00}
.daynight[aria-pressed="true"]{background:var(--navy);border-color:var(--navy)}
.daynight[aria-pressed="true"]::before{transform:translateX(34px);background:var(--navy-3)}
.daynight[aria-pressed="true"] .dn-sun{color:var(--on-navy-muted)}
.daynight[aria-pressed="true"] .dn-moon{color:var(--on-navy)}
.scene{position:relative;aspect-ratio:640/440;max-width:100%;border-radius:var(--r-lg);overflow:hidden;isolation:isolate;background:var(--s-sky2);transition:background-color .6s}
.scene__svg{display:block;width:100%;height:100%}
.scene-card{container-type:inline-size}
.svc-chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.svc-chip{position:relative;display:block;min-width:0}
.svc-chip input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.svc-chip span{display:flex;align-items:center;gap:9px;width:100%;height:100%;min-height:50px;padding:8px 12px;border:1.5px solid var(--rail);border-radius:14px;background:var(--paper);font-family:var(--f-display);font-weight:600;font-size:.88rem;line-height:1.2;color:var(--navy);cursor:pointer;transition:background-color .18s,border-color .18s,color .18s}
.svc-chip .ic{width:20px;height:20px;color:var(--blue);transition:color .18s}
@media (hover:hover){.svc-chip:hover span{border-color:var(--rail-2)}}
.svc-chip input:checked + span{background:var(--navy);border-color:var(--navy);color:var(--on-navy)}
.svc-chip input:checked + span .ic{color:var(--sky)}
.svc-chip input:focus-visible + span{outline:3px solid var(--focus);outline-offset:2px}
.scene-card__foot{display:grid;gap:12px;padding:16px 2px 2px;border-top:1px solid var(--rail)}
.scene-card__foot .btn{width:100%}
.board-status{min-width:0;color:var(--muted);font-size:.93rem;line-height:1.45}
@container (min-width:500px){
  .svc-chips{grid-template-columns:repeat(5,minmax(0,1fr))}
  .svc-chip span{flex-direction:column;justify-content:center;text-align:center;gap:7px;min-height:82px;padding:10px 6px;font-size:.8rem}
  .svc-chip .ic{width:22px;height:22px}
  .scene-card__foot{display:flex;align-items:center;justify-content:space-between}
  .scene-card__foot .btn{width:auto;flex:none}
  .board-status{flex:1 1 auto}
}
.board-status strong{color:var(--navy);font-family:var(--f-display)}


/* Scene palette, day then night */
.scene{
  --s-sky1:#CFE3FF;--s-sky2:#F1F7FF;--s-sun:#FFC94D;--s-moon:#F2F5FF;--s-star:#FFFFFF;--s-cloud:#FFFFFF;
  --s-hill:#E1EBF7;--s-tree:#CCDCE4;--s-trunk:#B4C6D8;--s-leaf:#A9C9B8;
  --s-ground:#E5EDF6;--s-drive:#EFF3F9;--s-line:#001945;--s-roof:#102E64;--s-roof-2:#1D4384;
  --s-room:#F7FAFF;--s-room-2:#ECF2FC;--s-garage:#EDF1F7;--s-window:#CBE2FC;--s-frame:#FFFFFF;
  --s-white:#FFFFFF;--s-furn:#D3DFF0;--s-furn-2:#AEC1DF;--s-dark:#14336D;--s-car:#A9BCD9;--s-car-2:#8299C2;
  --s-glow:.55;
}
.scene[data-time="night"]{
  --s-sky1:#06132F;--s-sky2:#183168;--s-cloud:#2B467C;
  --s-hill:#10265A;--s-tree:#18346A;--s-trunk:#23427C;--s-leaf:#2C5A6E;
  --s-ground:#0B1C42;--s-drive:#11264F;--s-line:#C5D3EA;--s-roof:#24467F;--s-roof-2:#305596;
  --s-room:#14295A;--s-room-2:#10234D;--s-garage:#0F2249;--s-window:#0B1D45;--s-frame:#6E87B4;
  --s-white:#D7E1F1;--s-furn:#2B4B86;--s-furn-2:#3A5C99;--s-dark:#7290C4;--s-car:#3E5E98;--s-car-2:#2F4C82;
  --s-glow:.9;
}
.scene__svg *{transition:fill .6s ease,stroke .6s ease,opacity .45s ease,stop-color .6s ease}
.st-sky1{stop-color:var(--s-sky1)}
.st-sky2{stop-color:var(--s-sky2)}
.st-sun{stop-color:var(--s-sun)}
.st-moon{stop-color:var(--s-moon)}
.st-warm{stop-color:var(--warm)}
.f-sun{fill:var(--s-sun)}
.f-moon{fill:var(--s-moon)}
.sky-stars circle{fill:var(--s-star)}
.cloud ellipse{fill:var(--s-cloud)}
.sun{opacity:1}
.moon,.sky-stars{opacity:0}
.scene[data-time="night"] .sun{opacity:0}
.scene[data-time="night"] .moon,.scene[data-time="night"] .sky-stars{opacity:1}
.scene[data-time="night"] .clouds{opacity:.45}
.f-hill{fill:var(--s-hill)}
.f-tree,.f-tree ellipse{fill:var(--s-tree)}
.s-trunk{fill:none;stroke:var(--s-trunk);stroke-linecap:round}
.f-leaf{fill:var(--s-leaf)}
.f-ground{fill:var(--s-ground)}
.f-drive{fill:var(--s-drive)}
.s-ground{fill:none;stroke:var(--s-line);stroke-opacity:.22;stroke-width:1.5}
.f-roof{fill:var(--s-roof)}
.f-roof-2{fill:var(--s-roof-2)}
.s-roof-hi{fill:none;stroke:var(--s-roof-2);stroke-width:3;stroke-linejoin:round}
.s-vent{fill:none;stroke:var(--s-roof);stroke-width:1.6;stroke-linecap:round}
.f-room{fill:var(--s-room)}
.f-room-2{fill:var(--s-room-2)}
.f-garage{fill:var(--s-garage)}
.f-window{fill:var(--s-window);stroke:var(--s-line);stroke-width:1.4}
.s-mullion{fill:none;stroke:var(--s-frame);stroke-width:2.5}
.s-wall{fill:none;stroke:var(--s-line);stroke-width:6;stroke-linecap:square}
.s-part{fill:none;stroke:var(--s-line);stroke-width:4;stroke-linecap:square}
.f-slab{fill:var(--s-line)}
.f-stair{fill:var(--s-furn)}
.s-stair{fill:none;stroke:var(--s-line);stroke-width:1.6;stroke-linejoin:round}
.f-furn{fill:var(--s-furn)}
.f-furn-2{fill:var(--s-furn-2)}
.f-white{fill:var(--s-white)}
.s-out{stroke:var(--s-line);stroke-width:1.4}
.f-dark{fill:var(--s-dark)}
.s-thin{fill:none;stroke:var(--s-line);stroke-width:1.2;stroke-opacity:.55}
.s-leg{fill:none;stroke:var(--s-furn-2);stroke-width:3;stroke-linecap:round}
.s-pipe{fill:none;stroke:var(--s-furn-2);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round}
.f-grille{fill:var(--s-room-2);stroke:var(--s-line);stroke-width:1.2}
.s-fan{fill:none;stroke:var(--s-line);stroke-width:2.2;stroke-linecap:round}
.f-line{fill:var(--s-line)}
.s-cord{fill:none;stroke:var(--s-line);stroke-width:1.3}
.f-car{fill:var(--s-car)}
.f-car-2{fill:var(--s-car-2)}
.s-cable{fill:none;stroke:var(--s-dark);stroke-width:2;stroke-linecap:round}
.led{fill:var(--s-furn-2)}
.bulb{fill:var(--s-furn-2)}
.oven-win{fill:var(--s-room-2)}
.cond-fan{transform-box:view-box;transform-origin:53px 372px}
.fan-blades{transform-box:view-box;transform-origin:172px 180px}

/* Scene effects */
.fx{opacity:0}
.fx-air path{fill:none;stroke:var(--sky);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:3 5}
.fx-sparkle path{fill:var(--sky)}
.fx-ripple{fill:none;stroke:var(--alert);stroke-width:1.8;transform-box:fill-box;transform-origin:center}
.fx-halo{fill:var(--sky)}
.f-warn{fill:#F5B43C;stroke:var(--s-line);stroke-width:1.2;stroke-linejoin:round}
.s-warn{fill:none;stroke:#3A2A00;stroke-width:1.8;stroke-linecap:round}
.s-batt{fill:var(--s-white);stroke:var(--s-line);stroke-width:1.5}
.batt-fill{fill:var(--go);transform-box:fill-box;transform-origin:left center}
.scene[data-on~="lights"] .fx-lights,.scene[data-on~="lights"] .fx-beam{opacity:var(--s-glow)}
.scene[data-on~="lights"] .bulb{fill:#FFE6A3}
.scene[data-on~="fans"] .fan-blades{animation:fanspin .42s linear infinite}
.scene[data-on~="ac_install"] .fx-air-up{opacity:1}
.scene[data-on~="ac_install"] .fx-air-up path{animation:flow 1s linear infinite}
.scene[data-on~="ac_install"] .led-up{fill:var(--go)}
.scene[data-on~="ac_service"] .fx-air-down,.scene[data-on~="ac_service"] .fx-sparkle{opacity:1}
.scene[data-on~="ac_service"] .fx-air-down path{animation:flow 1s linear infinite}
.scene[data-on~="ac_service"] .fx-sparkle path{animation:twinkle 1.6s ease-in-out infinite}
.scene[data-on~="ac_service"] .fx-sparkle path + path{animation-delay:.6s}
.scene[data-on~="ac_service"] .led-down{fill:var(--go)}
.scene[data-on~="ac_service"] .cond-fan{animation:spin .9s linear infinite}
.scene[data-on~="smoke"] .fx-ripple{opacity:1;animation:ripple 1.5s ease-out infinite}
.scene[data-on~="smoke"] .led-alarm{fill:var(--alert);animation:blink .8s steps(2) infinite}
.scene[data-on~="switchboard"] .fx-board{opacity:.5;animation:halo 1.8s ease-in-out infinite}
.scene[data-on~="switchboard"] .led-board{fill:var(--go)}
.scene[data-on~="fault"] .fx-fault{opacity:1}
.scene[data-on~="fault"] .fx-fault .f-warn{animation:pulse 1.2s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.scene[data-on~="power"] .fx-gpo{opacity:.5;animation:halo 1.8s ease-in-out infinite}
.scene[data-on~="ev"] .fx-ev{opacity:1}
.scene[data-on~="ev"] .batt-fill{animation:charge 2.4s ease-in-out infinite}
.scene[data-on~="ev"] .led-ev{fill:var(--go)}
.scene[data-on~="ev"] .ev-cable{stroke:var(--sky);stroke-width:2.6;stroke-dasharray:3 5;animation:flow .8s linear infinite}
.scene[data-on~="other"] .oven-win{fill:#FFB648}
/* Richer effects for each job */
.vent{fill:var(--s-dark);transform-box:fill-box;transform-origin:center top;transition:transform .5s ease}
.ac-up{transform-box:fill-box;transform-origin:center}
.shine{fill:var(--sky);opacity:0;transform-box:fill-box;transform-origin:center}
.fx-chill circle{fill:var(--sky)}
.fx-heat path{fill:none;stroke:var(--warm);stroke-width:2;stroke-linecap:round;stroke-dasharray:4 4}
.fx-fanair path{fill:none;stroke:var(--sky);stroke-width:2;stroke-linecap:round;stroke-dasharray:6 10}
.fx-circuit path{fill:none;stroke:var(--sky);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:4 12}
.fx-link{fill:none;stroke:var(--alert);stroke-width:1.6;stroke-linecap:round;stroke-dasharray:3 5}
.mcb rect{fill:var(--s-line);transition:transform .3s cubic-bezier(.34,1.56,.64,1),fill .3s}
.mcb rect:nth-child(2){transition-delay:.12s}
.mcb rect:nth-child(3){transition-delay:.24s}
.mcb rect:nth-child(4){transition-delay:.36s}
.mcb rect:nth-child(5){transition-delay:.48s}
.mag-glass{fill:rgba(255,255,255,.6);stroke:var(--s-line);stroke-width:2}
.mag-handle{fill:none;stroke:var(--s-line);stroke-width:2.6;stroke-linecap:round}
.s-cord2{fill:none;stroke:var(--s-dark);stroke-width:1.6;stroke-linecap:round}
.fx-port{fill:var(--sky)}
.steam path{fill:none;stroke:var(--s-furn-2);stroke-width:1.8;stroke-linecap:round;stroke-dasharray:4 4}
.scene[data-on~="lights"] .flick{animation:flickerOn .9s ease-out}
.scene[data-on~="fault"] .dl{animation:faultBlink 2.6s steps(1,end) infinite}
.scene[data-on~="fault"] .cones{animation:faultCones 2.6s steps(1,end) infinite}
.scene[data-on~="fault"] .mag{animation:scan 2.6s ease-in-out infinite}
.scene[data-on~="fans"] .fx-fanair{opacity:1}
.scene[data-on~="fans"] .fx-fanair path{animation:flow .9s linear infinite}
.scene[data-on~="ac_install"] .ac-up{animation:pop .55s cubic-bezier(.34,1.56,.64,1)}
.scene[data-on~="ac_install"] .vent-up,.scene[data-on~="ac_service"] .vent-down{transform:scaleY(2.6)}
.scene[data-on~="ac_install"] .fx-chill-up,.scene[data-on~="ac_service"] .fx-chill-down{opacity:1}
.scene[data-on~="ac_install"] .fx-chill-up circle,.scene[data-on~="ac_service"] .fx-chill-down circle{animation:chill 2.2s linear infinite}
.scene[data-on~="ac_service"] .shine{opacity:.45;animation:shine 2.4s ease-in-out infinite}
.scene[data-on~="ac_service"] .fx-heat{opacity:1}
.scene[data-on~="ac_service"] .fx-heat path{animation:flow 1s linear infinite}
.scene[data-on~="switchboard"] .mcb rect{transform:translateY(-5px);fill:var(--go)}
.scene[data-on~="switchboard"] .fx-circuit{opacity:1}
.scene[data-on~="switchboard"] .fx-circuit path{animation:flow 1s linear infinite}
.scene[data-on~="smoke"] .fx-link{opacity:.75;animation:flow .8s linear infinite}
.scene[data-on~="power"] .fx-plug{opacity:1;animation:plugIn .6s cubic-bezier(.34,1.56,.64,1)}
.scene[data-on~="power"] .led-plug{fill:var(--go);animation:blink 1.6s ease-in-out infinite}
.scene[data-on~="ev"] .fx-port{opacity:.45;animation:halo 1.4s ease-in-out infinite}
.scene[data-on~="other"] .fx-cook{opacity:1}
.scene[data-on~="other"] .steam path{animation:flow 1.1s linear infinite}
.scene[data-on~="other"] .oven-win{animation:ovenGlow 2s ease-in-out infinite}
.scene .fx-chill circle:nth-child(2){animation-delay:.7s}
.scene .fx-chill circle:nth-child(3){animation-delay:1.4s}
.scene .fx-chill circle:nth-child(4){animation-delay:.35s}
.scene .fx-chill circle:nth-child(5){animation-delay:1.05s}
.scene .fx-chill circle:nth-child(6){animation-delay:1.75s}
.scene[data-on~="smoke"] .fx-ripple.r2{animation-delay:.75s}
@keyframes flickerOn{0%{opacity:0}10%{opacity:1}18%{opacity:.1}30%{opacity:1}40%{opacity:.35}52%,100%{opacity:1}}
@keyframes faultBlink{0%{fill:#FFE6A3}10%{fill:var(--s-furn-2)}16%{fill:#FFE6A3}58%{fill:var(--s-furn-2)}62%{fill:#FFE6A3}70%{fill:var(--s-furn-2)}74%,100%{fill:#FFE6A3}}
@keyframes faultCones{0%{opacity:1}10%{opacity:.15}16%{opacity:1}58%{opacity:.15}62%{opacity:1}70%{opacity:.2}74%,100%{opacity:1}}
@keyframes scan{0%,100%{transform:translate(452px,326px)}50%{transform:translate(474px,342px)}}
@keyframes pop{0%{transform:scale(.82)}100%{transform:scale(1)}}
@keyframes chill{0%{transform:translateY(0);opacity:0}20%{opacity:.95}100%{transform:translateY(28px);opacity:0}}
@keyframes shine{0%{transform:translateX(0) skewX(-20deg)}60%,100%{transform:translateX(110px) skewX(-20deg)}}
@keyframes plugIn{from{transform:translateX(-12px);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes ovenGlow{0%,100%{fill:#FFB648}50%{fill:#FF8A3A}}
.cloud--a{animation:drift 26s ease-in-out infinite alternate}
.cloud--b{animation:drift 34s ease-in-out infinite alternate-reverse}
.scene[data-time="night"] .sky-stars circle:nth-child(3n){animation:twinkle 3.2s ease-in-out infinite}
.scene[data-time="night"] .sky-stars circle:nth-child(3n+1){animation:twinkle 4.1s ease-in-out infinite .8s}
@keyframes fanspin{0%,100%{transform:scaleX(1)}50%{transform:scaleX(.1)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes flow{to{stroke-dashoffset:-16}}
@keyframes halo{0%,100%{opacity:.22}50%{opacity:.55}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.15)}}
@keyframes charge{0%{transform:scaleX(.12)}85%,100%{transform:scaleX(1)}}
@keyframes ripple{0%{transform:scale(1);opacity:.85}100%{transform:scale(4.6);opacity:0}}
@keyframes blink{50%{opacity:.25}}
@keyframes twinkle{0%,100%{opacity:1}50%{opacity:.25}}
@keyframes drift{from{transform:translateX(0)}to{transform:translateX(28px)}}

/* Bands */
.band{padding-block:clamp(56px,8vw,112px)}
.band--mist{background:var(--mist)}
.band--navy{position:relative;overflow:hidden;background:var(--navy);color:var(--on-navy)}
.band--navy .display{color:var(--on-navy)}
.band--navy .lead{color:var(--on-navy-muted)}
.band--navy .eyebrow{background:rgba(79,168,238,.16);color:#A9D4FF}
.band__arcs{position:absolute;left:0;right:0;top:0;width:100%;height:clamp(120px,18vw,240px);pointer-events:none}
.band__arcs path{fill:none;stroke:var(--sky);stroke-opacity:.16;stroke-width:1.5;vector-effect:non-scaling-stroke}
.sec-head{display:grid;gap:14px;justify-items:start;margin-bottom:clamp(28px,4vw,48px);max-width:760px}
.sec-head--row{max-width:none;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px 32px}
.sec-head__main{display:grid;gap:14px;justify-items:start;max-width:720px;min-width:0}

/* Reviews */
.rev-score{display:flex;align-items:center;gap:14px}
.rev-score__num{font-family:var(--f-display);font-weight:800;font-size:3.1rem;line-height:1;letter-spacing:-.03em;color:var(--navy);font-variant-numeric:tabular-nums}
.rev-score__txt{margin-top:4px;font-family:var(--f-display);font-weight:600;font-size:.92rem;line-height:1.3;color:var(--navy)}
.rev-side{display:flex;flex-wrap:wrap;align-items:center;gap:16px 28px}
.car-nav{display:flex;gap:10px}
.round-btn{width:48px;height:48px;border-radius:50%;border:1px solid var(--rail-2);background:var(--paper);color:var(--navy);display:grid;place-items:center;cursor:pointer;transition:background-color .2s,color .2s,border-color .2s,opacity .2s}
@media (hover:hover){.round-btn:hover:not(:disabled){background:var(--navy);border-color:var(--navy);color:var(--on-navy)}}
.round-btn:disabled{opacity:.35;cursor:default}
.carousel{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 40px) / 3);gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior-x:contain;padding:4px 2px 18px;scrollbar-width:thin}
@media (max-width:980px){.carousel{grid-auto-columns:calc((100% - 20px) / 2)}}
@media (max-width:640px){.carousel{grid-auto-columns:86%;gap:14px}}
.review{scroll-snap-align:start;min-width:0;display:flex;flex-direction:column;gap:14px;padding:24px;background:var(--paper);border:1px solid var(--rail);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}
.review__top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.review__src{font-family:var(--f-display);font-weight:600;font-size:.8rem;color:var(--muted)}
.review blockquote{flex:1}
.review blockquote p{font-size:1.02rem;line-height:1.6;color:var(--ink)}
.review figcaption{display:flex;align-items:center;gap:10px;font-family:var(--f-display);font-weight:700;color:var(--navy)}
.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--ice);color:var(--blue);font-family:var(--f-display);font-weight:800;font-size:.95rem}
.rev-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px;margin-top:22px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips li{padding:7px 13px;border-radius:999px;background:var(--paper);border:1px solid var(--rail);font-family:var(--f-display);font-weight:600;font-size:.85rem;line-height:1.25;color:var(--navy)}
.link-go{display:inline-flex;align-items:center;gap:6px;font-family:var(--f-display);font-weight:700;font-size:.95rem}

/* Services */
.seg{display:inline-flex;gap:4px;padding:4px;border-radius:999px;background:var(--mist);border:1px solid var(--rail)}
.seg button{border:0;background:transparent;min-height:44px;padding:10px 20px;border-radius:999px;font-family:var(--f-display);font-weight:700;font-size:.96rem;line-height:1;color:var(--muted);cursor:pointer;transition:background-color .2s,color .2s}
.seg button[aria-selected="true"]{background:var(--navy);color:var(--on-navy)}
.svc-grid{display:grid;gap:14px;grid-template-columns:minmax(0,1fr)}
@media (min-width:640px){.svc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:980px){.svc-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}}
.svc-card{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto 1fr auto;column-gap:16px;row-gap:6px;align-items:start;padding:22px;background:var(--paper);border:1px solid var(--rail);border-radius:var(--r-lg);transition:transform .25s,box-shadow .25s,border-color .25s}
@media (hover:hover){.svc-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--rail-2)}}
.svc-card__icon{grid-row:1 / span 3;width:50px;height:50px;border-radius:15px;background:var(--ice);color:var(--blue);display:grid;place-items:center;transition:background-color .25s,color .25s}
.svc-card__icon .ic{width:25px;height:25px}
@media (hover:hover){.svc-card:hover .svc-card__icon{background:var(--navy);color:var(--on-navy)}}
.svc-card p{color:var(--muted);font-size:.97rem;line-height:1.5}
.svc-card__go{justify-self:start;margin-top:8px;display:inline-flex;align-items:center;gap:6px;padding:0;border:0;background:none;color:var(--blue);font-family:var(--f-display);font-weight:700;font-size:.92rem;cursor:pointer}
.svc-card__go::after{content:"";position:absolute;inset:0;border-radius:inherit}
.svc-card__go:focus-visible{outline:none}
.svc-card:has(.svc-card__go:focus-visible){outline:3px solid var(--focus);outline-offset:2px}
.svc-card__go .ic{transition:transform .2s}
@media (hover:hover){.svc-card:hover .svc-card__go .ic{transform:translateX(3px)}}
.svc-more{margin-top:24px}

/* Air con size guide */
.tool{position:relative;display:grid;grid-template-columns:minmax(0,1fr);overflow:hidden;background:var(--paper);color:var(--ink);border-radius:var(--r-xl);box-shadow:0 30px 60px rgba(0,8,25,.35)}
@media (min-width:960px){.tool{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}}
.tool__inputs{display:grid;gap:24px;align-content:start;padding:clamp(20px,3vw,36px);min-width:0}
.tool__result{display:grid;gap:14px;align-content:start;padding:clamp(20px,3vw,36px);background:var(--mist);border-top:1px solid var(--rail);min-width:0}
@media (min-width:960px){.tool__result{border-top:0;border-left:1px solid var(--rail)}}
.tool-tag{display:inline-flex;align-items:center;gap:7px;justify-self:start;padding:6px 12px;border-radius:999px;background:var(--ice);color:var(--blue);font-family:var(--f-display);font-weight:600;font-size:.8rem;line-height:1.25}
.field{display:block;min-width:0}
.field > legend,.field__label{display:block;margin-bottom:10px;font-family:var(--f-display);font-weight:700;font-size:.95rem;line-height:1.3;color:var(--navy)}
.field__help{margin:-4px 0 10px;color:var(--muted);font-size:.92rem;line-height:1.45}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opt{position:relative;display:inline-flex}
.opt input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.opt span{display:inline-flex;align-items:center;min-height:42px;padding:8px 15px;border:1.5px solid var(--rail);border-radius:999px;background:var(--paper);font-family:var(--f-display);font-weight:600;font-size:.9rem;line-height:1.2;color:var(--ink);cursor:pointer;transition:background-color .15s,border-color .15s,color .15s}
@media (hover:hover){.opt span:hover{border-color:var(--rail-2)}}
.opt input:checked + span{background:var(--navy);border-color:var(--navy);color:var(--on-navy)}
.opt input:focus-visible + span{outline:3px solid var(--focus);outline-offset:2px}
.dims{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}
.stepper{display:grid;gap:6px}
.stepper label{font-family:var(--f-display);font-weight:600;font-size:.82rem;line-height:1;color:var(--muted)}
.stepper__ctl{display:inline-flex;align-items:center;overflow:hidden;border:1.5px solid var(--rail);border-radius:999px;background:var(--paper)}
.stepper__ctl:focus-within{border-color:var(--navy)}
.stepper__ctl button{width:42px;height:46px;border:0;background:var(--mist);color:var(--navy);display:grid;place-items:center;cursor:pointer}
@media (hover:hover){.stepper__ctl button:hover{background:var(--ice)}}
.stepper__ctl input{width:56px;height:46px;border:0;background:transparent;text-align:center;font-family:var(--f-display);font-weight:700;font-size:1.05rem;color:var(--navy);font-variant-numeric:tabular-nums;-moz-appearance:textfield;appearance:textfield}
.stepper__ctl input:focus{outline:none}
.stepper__ctl input::-webkit-outer-spin-button,.stepper__ctl input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.dims__x{padding-bottom:12px;font-weight:700;color:var(--muted)}
.dims__area{padding-bottom:12px;font-family:var(--f-display);font-weight:700;color:var(--navy);font-variant-numeric:tabular-nums;white-space:nowrap}
.toggle{position:relative;display:inline-flex;align-items:center;gap:12px;justify-self:start;cursor:pointer;font-family:var(--f-display);font-weight:600;font-size:.95rem;line-height:1.3;color:var(--navy)}
.toggle input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.toggle__track{position:relative;flex:none;width:46px;height:28px;border-radius:999px;background:var(--rail-2);transition:background-color .2s}
.toggle__track::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--paper);box-shadow:0 1px 3px rgba(0,25,69,.3);transition:transform .2s}
.toggle input:checked + .toggle__track{background:var(--blue)}
.toggle input:checked + .toggle__track::after{transform:translateX(18px)}
.toggle input:focus-visible + .toggle__track{outline:3px solid var(--focus);outline-offset:2px}
.ac-plan{display:block;width:100%;max-width:100%;height:auto;background:var(--paper);border:1px solid var(--rail);border-radius:var(--r-md)}
.ap-room{fill:var(--ice-2);stroke:var(--navy);stroke-width:2}
.ap-air path{fill:none;stroke:var(--sky);stroke-width:2;stroke-dasharray:3 5;animation:flow 1.2s linear infinite}
.ap-unit{fill:var(--navy)}
.ap-win{fill:var(--sky)}
.ap-dim{font:600 11px var(--f-display);fill:var(--muted)}
.ap-label{font:700 12px var(--f-display);fill:var(--navy)}
.ap-sun{fill:var(--gold)}
.ap-sun--off{fill:var(--rail-2)}
.ap-ray{fill:none;stroke:var(--gold);stroke-width:2;stroke-linecap:round}
.ap-tag{fill:var(--navy)}
.ap-tagtext{font:700 10px var(--f-display);fill:var(--on-navy)}
.readout{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:6px 16px}
.readout__value{display:flex;align-items:baseline;gap:8px;font-family:var(--f-display);font-weight:800;font-size:clamp(3rem,2.4rem + 2.4vw,4.2rem);letter-spacing:-.035em;line-height:1;color:var(--navy);font-variant-numeric:tabular-nums}
.readout__unit{font-size:.36em;letter-spacing:0;color:var(--blue)}
.readout__need{color:var(--muted);font-size:.95rem}
.ladder{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
.ladder li{display:grid;gap:7px;justify-items:center;font-family:var(--f-display);font-weight:700;font-size:.8rem;line-height:1;color:var(--muted);font-variant-numeric:tabular-nums}
.ladder li::before{content:"";width:100%;height:10px;border-radius:999px;background:var(--rail);transition:background-color .2s,box-shadow .2s}
.ladder li.is-below::before{background:#C9D7EE}
.ladder li.is-on{color:var(--navy)}
.ladder li.is-on::before{background:var(--blue);box-shadow:0 0 12px rgba(79,168,238,.85)}
.readout__why{font-size:.95rem;line-height:1.55}
.tool__result .btn{justify-self:start}

/* Switchboard compare */
.sb{display:grid;gap:clamp(32px,5vw,64px);grid-template-columns:minmax(0,1fr)}
@media (min-width:980px){.sb{grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);align-items:center}}
.sb__copy{display:grid;gap:20px;justify-items:start;min-width:0}
.ticks{display:grid;gap:10px}
.ticks li{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:start;line-height:1.45}
.tick{width:24px;height:24px;border-radius:50%;background:var(--ice);color:var(--blue);display:grid;place-items:center}
.tick .ic{width:14px;height:14px}
.compare{display:grid;gap:16px;min-width:0}
.compare__stage{position:relative;aspect-ratio:4/3;max-width:100%;border-radius:var(--r-xl);overflow:hidden;background:#E6EAF0;box-shadow:var(--shadow-lg);cursor:ew-resize;touch-action:pan-y;-webkit-user-select:none;user-select:none}
.compare__stage.is-hint{animation:hint 1.6s ease-in-out}
@keyframes hint{0%,100%{--pos:50%}35%{--pos:64%}70%{--pos:40%}}
.compare__img{position:absolute;inset:0;display:block;width:100%;height:100%}
.compare__after{clip-path:inset(0 0 0 var(--pos))}
.compare__tag{position:absolute;top:14px;z-index:2;padding:6px 13px;border-radius:999px;font-family:var(--f-display);font-weight:700;font-size:.8rem;line-height:1.2;pointer-events:none}
.compare__tag--before{left:14px;background:rgba(24,20,18,.8);color:#FFFFFF}
.compare__tag--after{right:14px;background:var(--paper);color:var(--navy);box-shadow:var(--shadow-sm)}
.compare__range{position:absolute;left:0;bottom:0;width:100%;height:20px;margin:0;opacity:0;pointer-events:none}
.compare__handle{position:absolute;top:0;bottom:0;left:var(--pos);width:0;z-index:2;pointer-events:none}
.compare__handle::before{content:"";position:absolute;top:0;bottom:0;left:-1.5px;width:3px;background:#FFFFFF;box-shadow:0 0 0 1px rgba(0,25,69,.15)}
.compare__knob{position:absolute;top:50%;left:0;width:50px;height:50px;margin:-25px 0 0 -25px;border-radius:50%;background:var(--paper);color:var(--navy);display:grid;place-items:center;box-shadow:0 6px 20px rgba(0,25,69,.32)}
.compare__range:focus-visible + .compare__handle .compare__knob{outline:3px solid var(--focus);outline-offset:3px}
.compare__notes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.compare__note{display:grid;gap:10px;padding:16px;border-radius:var(--r-md);border:1px solid var(--rail);background:var(--paper);min-width:0}
.compare__note ul{display:grid;gap:8px}
.compare__note li{display:grid;grid-template-columns:16px minmax(0,1fr);gap:8px;align-items:start;font-size:.93rem;line-height:1.45}
.compare__note .ic{width:16px;height:16px;margin-top:2px}
.compare__note--before .ic{color:#9C5A2E}
.compare__note--after .ic{color:var(--ok)}
@media (max-width:520px){.compare__notes{grid-template-columns:minmax(0,1fr)}}
.cmp-digits{font:700 13px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:1px}
.cmp-small{font:700 11px var(--f-display);letter-spacing:.08em}
.cmp-hand{font:italic 600 13px var(--f-body)}
.cmp-tag{font:800 12px var(--f-display)}
.cmp-disc{transform-box:fill-box;transform-origin:center;animation:disc 1.6s linear infinite}
@keyframes disc{0%,100%{transform:scaleX(1)}50%{transform:scaleX(.25)}}

/* Smoke alarms */
.smoke{display:grid;gap:clamp(32px,5vw,64px);grid-template-columns:minmax(0,1fr)}
@media (min-width:1000px){.smoke{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:start}}
.smoke__info{display:grid;gap:20px;justify-items:start;min-width:0}
.countdown{display:flex;align-items:baseline;gap:12px;padding:14px 20px;border:1px solid var(--rail);border-radius:var(--r-md);background:var(--paper);box-shadow:var(--shadow-sm)}
.countdown__num{font-family:var(--f-display);font-weight:800;font-size:clamp(2.5rem,2rem + 2vw,3.3rem);letter-spacing:-.03em;line-height:1;color:var(--navy);font-variant-numeric:tabular-nums}
.countdown__txt{font-family:var(--f-display);font-weight:700;color:var(--muted)}
.card{min-width:0;background:var(--paper);border:1px solid var(--rail);border-radius:var(--r-xl);padding:clamp(20px,3vw,32px);box-shadow:var(--shadow)}
.smoke__tool{display:grid;gap:22px}
.smoke__title{font-family:var(--f-display);font-weight:800;font-size:clamp(1.25rem,1.1rem + .6vw,1.5rem);letter-spacing:-.02em;line-height:1.2;color:var(--navy)}
.smoke__inputs{display:grid;gap:20px}
@media (min-width:640px){.smoke__inputs{grid-template-columns:auto minmax(0,1fr)}.smoke__inputs .field--wide{grid-column:1 / -1}}
.smoke__result{display:grid;gap:14px;padding:18px;border-radius:var(--r-lg);background:var(--mist);border:1px solid var(--rail)}
.smoke__top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px}
.smoke__count{font-family:var(--f-display);font-weight:800;font-size:2.3rem;letter-spacing:-.03em;line-height:1;color:var(--navy);font-variant-numeric:tabular-nums}
.smoke__count small{margin-left:8px;font-size:.42em;letter-spacing:0;font-weight:700;color:var(--muted)}
.breakdown{display:flex;flex-wrap:wrap;gap:6px}
.breakdown span{padding:5px 11px;border-radius:999px;background:var(--paper);border:1px solid var(--rail);font-family:var(--f-display);font-weight:600;font-size:.82rem;color:var(--navy)}
.sm-svg{display:block;width:100%;max-width:100%;height:auto;background:var(--paper);border:1px solid var(--rail);border-radius:var(--r-md)}
.sm-floor{fill:var(--mist);stroke:var(--rail-2);stroke-width:1.2}
.sm-room{fill:var(--paper);stroke:var(--rail-2);stroke-width:1.2}
.sm-hall{fill:var(--ice)}
.sm-text{font:600 11px var(--f-display);fill:var(--muted)}
.sm-level{font:700 12px var(--f-display);fill:var(--navy)}
.sa-ring{fill:none;stroke:var(--alert);stroke-width:2;opacity:0;transform-box:fill-box;transform-origin:center}
.sa-dot{fill:var(--paper);stroke:var(--navy);stroke-width:2}
.sa-led{fill:var(--blue)}
.sa.is-firing .sa-dot{fill:var(--alert-bg);stroke:var(--alert)}
.sa.is-firing .sa-led{fill:var(--alert);animation:blink .5s steps(2) infinite}
.sa.is-firing .sa-ring{animation:ripple 1.1s ease-out infinite}
.sm-controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.mini-seg{display:inline-flex;padding:3px;border-radius:999px;background:var(--paper);border:1px solid var(--rail)}
.mini-seg button{border:0;background:none;min-height:38px;padding:6px 14px;border-radius:999px;font-family:var(--f-display);font-weight:700;font-size:.85rem;color:var(--muted);cursor:pointer}
.mini-seg button[aria-pressed="true"]{background:var(--navy);color:var(--on-navy)}
.sm-caption{display:flex;gap:8px;align-items:flex-start;min-height:2.9em;font-size:.95rem;line-height:1.45;color:var(--navy)}
.sm-caption .ic{margin-top:1px;color:var(--blue)}
.smoke__result .btn{justify-self:start}

/* How it works */
.steps{position:relative;display:grid;gap:30px;grid-template-columns:minmax(0,1fr)}
.step{position:relative;display:grid;gap:8px;align-content:start;padding-left:68px;min-width:0}
.step__num{position:absolute;left:0;top:0;width:48px;height:48px;border-radius:50%;background:var(--navy);color:var(--on-navy);display:grid;place-items:center;font-family:var(--f-display);font-weight:800;font-size:1.1rem;line-height:1;box-shadow:0 0 0 6px var(--ice)}
.step:not(:last-child)::before{content:"";position:absolute;left:23px;top:58px;bottom:-26px;width:2px;background:var(--rail-2)}
.step p{color:var(--muted);line-height:1.55}
@media (min-width:900px){
  .steps{grid-template-columns:repeat(4,minmax(0,1fr));gap:32px}
  .step{padding-left:0;padding-top:72px}
  .step:not(:last-child)::before{left:62px;right:-26px;top:23px;bottom:auto;width:auto;height:2px}
}

/* About */
.about{display:grid;gap:clamp(36px,5vw,64px);grid-template-columns:minmax(0,1fr)}
@media (min-width:980px){.about{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:start}}
.about__copy{display:grid;gap:22px;justify-items:start;min-width:0}
.message{font-size:1.12rem;line-height:1.7;max-width:60ch}
.sign{display:grid;gap:2px}
.sign strong{font-family:var(--f-display);font-weight:800;font-size:1.05rem;color:var(--navy)}
.sign span{color:var(--muted);font-size:.92rem}
.jobsheet{min-width:0;overflow:hidden;background:var(--paper);border:1px solid var(--rail);border-radius:var(--r-xl);box-shadow:var(--shadow)}
.jobsheet__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:20px 24px;background:var(--navy);color:var(--on-navy)}
.jobsheet__head h3{color:var(--on-navy);font-weight:800;font-size:1.2rem}
.jobsheet__head span{font-family:var(--f-display);font-weight:600;font-size:.85rem;color:var(--on-navy-muted)}
.jobsheet li{display:grid;grid-template-columns:28px minmax(0,1fr);gap:14px;align-items:center;padding:14px 24px;border-bottom:1px solid var(--rail);line-height:1.45}
.jobsheet li:last-child{border-bottom:0}
.jobsheet li:last-child span:last-child{font-weight:700;color:var(--navy)}
.jobsheet .tick{width:28px;height:28px}

/* Areas */
.areas{display:grid;gap:clamp(28px,4vw,56px);grid-template-columns:minmax(0,1fr)}
@media (min-width:980px){.areas{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center}}
.areas__copy{display:grid;gap:20px;min-width:0;justify-items:start}
.check{display:flex;flex-wrap:wrap;gap:8px;width:100%}
.check .inp{flex:1 1 220px;width:auto;min-width:0}
.check__result{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:start;width:100%;padding:14px 16px;border-radius:var(--r-md);background:var(--paper);border:1px solid var(--rail);line-height:1.5}
.check__result .ic{width:22px;height:22px;margin-top:1px}
.check__result[data-tone="ok"] .ic{color:var(--ok)}
.check__result[data-tone="warn"] .ic{color:var(--warn)}
.check__result[data-tone="info"] .ic{color:var(--blue)}
.core-chips{display:flex;flex-wrap:wrap;gap:8px}
.core-chips button{min-height:38px;padding:7px 13px;border-radius:999px;border:1px solid var(--rail);background:var(--paper);font-family:var(--f-display);font-weight:600;font-size:.86rem;line-height:1.2;color:var(--navy);cursor:pointer;transition:border-color .15s,background-color .15s}
@media (hover:hover){.core-chips button:hover{border-color:var(--navy);background:var(--ice-2)}}
.map{min-width:0;overflow:hidden;background:var(--paper);border:1px solid var(--rail);border-radius:var(--r-xl);box-shadow:var(--shadow)}
.map svg{display:block;width:100%;height:auto;max-width:100%}
.map .gridline{fill:none;stroke:#EEF2F7;stroke-width:1}
.map .ring{fill:none;stroke:var(--rail-2)}
.map .ring-label{font-family:var(--f-display);font-weight:700;fill:var(--muted);paint-order:stroke;stroke:var(--paper);stroke-linejoin:round}
.map .water{font-family:var(--f-display);font-style:italic;font-weight:600;letter-spacing:.06em;fill:var(--sky)}
.map .dot{cursor:pointer}
.map .tier1 circle{fill:var(--navy)}
.map .tier2 circle{fill:var(--paper);stroke:var(--blue)}
.map .tier3 circle{fill:#B6C1D2}
.map .dot.is-hit circle{fill:var(--blue);stroke:var(--paper)}
.map .lbl{font-family:var(--f-display);font-weight:700;fill:var(--navy);paint-order:stroke;stroke:var(--paper);stroke-linejoin:round}
.map .lbl.is-hit{fill:var(--blue)}
.map .hitline{fill:none;stroke:var(--blue)}
.map .base-core{fill:var(--navy);stroke:var(--paper)}
.map .base-pulse{fill:var(--blue);transform-box:fill-box;transform-origin:center;animation:mpulse 2.6s ease-out infinite}
.map .north{font-family:var(--f-display);font-weight:800;fill:var(--muted)}
.map .north-arrow{fill:var(--muted)}
@keyframes mpulse{0%{transform:scale(1);opacity:.35}100%{transform:scale(3.4);opacity:0}}
.legend{display:flex;flex-wrap:wrap;gap:8px 18px;padding:12px 18px;border-top:1px solid var(--rail);font-size:.84rem;line-height:1.3;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:7px}
.legend i{display:inline-block;width:11px;height:11px;border-radius:50%}
.legend .l0{background:var(--navy);box-shadow:0 0 0 3px #C9D7EE}
.legend .l1{background:var(--navy)}
.legend .l2{background:var(--paper);border:2px solid var(--blue)}
.legend .l3{background:#B6C1D2}

/* FAQ */
.faq{max-width:900px;display:grid;gap:10px}
.faq details{border:1px solid var(--rail);border-radius:var(--r-md);background:var(--paper);transition:box-shadow .2s,border-color .2s}
.faq details[open]{box-shadow:var(--shadow-sm);border-color:var(--rail-2)}
.faq summary{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;cursor:pointer;list-style:none;font-family:var(--f-display);font-weight:700;font-size:1.04rem;line-height:1.35;color:var(--navy)}
.faq summary::-webkit-details-marker{display:none}
.faq summary .pm{flex:none;width:32px;height:32px;border-radius:50%;background:var(--ice);color:var(--blue);display:grid;place-items:center;transition:transform .25s,background-color .2s,color .2s}
.faq details[open] summary .pm{transform:rotate(45deg);background:var(--navy);color:var(--on-navy)}
.faq details p{padding:0 68px 20px 20px;max-width:72ch;line-height:1.6}
@media (max-width:520px){.faq details p{padding-right:20px}}

/* Contact */
.cta{position:relative;overflow:hidden;display:grid;gap:clamp(24px,4vw,48px);grid-template-columns:minmax(0,1fr);padding:clamp(28px,5vw,56px);background:var(--navy);color:var(--on-navy);border-radius:var(--r-xl);box-shadow:var(--shadow-lg)}
@media (min-width:960px){.cta{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:center}}
.cta .display{color:var(--on-navy)}
.cta .lead{color:var(--on-navy-muted)}
.cta__copy{position:relative;display:grid;gap:18px;justify-items:start;min-width:0}
.cta__arcs{position:absolute;right:-10%;bottom:-30%;width:70%;height:auto;pointer-events:none}
.cta__arcs path{fill:none;stroke:var(--sky);stroke-opacity:.18;stroke-width:2}
.contact-list{position:relative;display:grid;min-width:0}
.contact-list li{display:flex;align-items:center;gap:12px;padding:15px 0;border-bottom:1px solid rgba(255,255,255,.14);min-width:0}
.contact-list li:first-child{border-top:1px solid rgba(255,255,255,.14)}
.contact-list .ic{color:var(--sky)}
.contact-list__val{flex:1 1 auto;min-width:0;font-family:var(--f-display);font-weight:700;font-size:1.02rem;line-height:1.3;color:var(--on-navy);overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;text-decoration:none}
@media (hover:hover){a.contact-list__val:hover{color:var(--sky)}}
.copy{flex:none;min-height:38px;padding:6px 14px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(255,255,255,.06);color:var(--on-navy);font-family:var(--f-display);font-weight:700;font-size:.85rem;cursor:pointer}
@media (hover:hover){.copy:hover{border-color:var(--on-navy)}}

/* Footer */
.foot{background:#000F2C;color:var(--on-navy-muted);padding-block:clamp(48px,6vw,72px) 36px;font-size:.95rem}
.foot a{color:var(--on-navy)}
@media (hover:hover){.foot a:hover{color:var(--sky)}}
.foot__grid{display:grid;gap:30px;grid-template-columns:minmax(0,1fr)}
@media (min-width:860px){.foot__grid{grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr))}}
.foot__brand{display:grid;gap:16px;justify-items:start}
.foot__logo{height:44px;width:auto;filter:brightness(0) invert(1)}
.foot h2{margin-bottom:12px;font-family:var(--f-display);font-weight:700;font-size:.85rem;color:var(--on-navy)}
.foot ul{display:grid;gap:8px}
.foot__base{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:40px;padding-top:20px;border-top:1px solid rgba(255,255,255,.12);font-size:.86rem}

/* Mobile action bar */
.actionbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:10px max(16px,env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));background:var(--paper-glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--rail)}
.actionbar .btn{min-height:50px;padding-inline:.6em;font-size:.95rem}
@media (max-width:899px){body{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}}
@media (min-width:900px){.actionbar{display:none}}

/* Enquiry dialog */
.enq{padding:0;border:0;width:min(780px,calc(100% - 32px));max-width:none;max-height:min(90vh,920px);border-radius:var(--r-xl);background:var(--paper);color:var(--ink);box-shadow:0 30px 80px rgba(0,12,35,.4);overflow:hidden}
.enq[open]{display:flex;flex-direction:column}
.enq::backdrop{background:rgba(0,14,38,.55);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
@media (max-width:640px){.enq{width:100%;height:var(--vvh,100%);max-height:var(--vvh,100%);margin:0;inset:var(--vvt,0px) 0 auto 0;border-radius:0}}
html.enq-open,html.enq-open body{overflow:hidden}
.enq__head{display:grid;gap:14px;padding:18px max(24px,env(safe-area-inset-right,0px)) 14px max(24px,env(safe-area-inset-left,0px));border-bottom:1px solid var(--rail);flex:none}
@media (max-width:640px){.enq__head{padding-top:calc(14px + env(safe-area-inset-top,0px))}}
.enq__top{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px}
.back-btn{grid-column:1;justify-self:start;display:inline-flex;align-items:center;gap:4px;height:44px;padding:0 16px 0 10px;border-radius:999px;border:1px solid var(--rail-2);background:var(--paper);color:var(--navy);font-family:var(--f-display);font-weight:700;font-size:.92rem;cursor:pointer;transition:border-color .15s}
@media (hover:hover){.back-btn:hover{border-color:var(--navy)}}
.back-btn .ic{width:18px;height:18px}
.enq__top .icon-btn{grid-column:3;justify-self:end}
.enq__title{grid-column:2;text-align:center;font-family:var(--f-display);font-weight:800;font-size:1.2rem;letter-spacing:-.02em;line-height:1.1;color:var(--navy)}
.icon-btn{width:44px;height:44px;border-radius:50%;border:1px solid var(--rail-2);background:var(--paper);color:var(--navy);display:grid;place-items:center;cursor:pointer}
@media (hover:hover){.icon-btn:hover{border-color:var(--navy)}}
.progress{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.progress li{display:grid;gap:7px;font-family:var(--f-display);font-weight:700;font-size:.74rem;line-height:1;color:var(--muted)}
.progress li::before{content:"";height:5px;border-radius:999px;background:var(--rail)}
.progress li.is-done::before{background:var(--navy)}
.progress li.is-current{color:var(--navy)}
.progress li.is-current::before{background:var(--blue)}
.enq__body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding:22px max(24px,env(safe-area-inset-right,0px)) 26px max(24px,env(safe-area-inset-left,0px));-webkit-overflow-scrolling:touch}
.enq__step{display:grid;gap:20px}
.step-title{font-family:var(--f-display);font-weight:800;font-size:clamp(1.3rem,1.1rem + .8vw,1.6rem);letter-spacing:-.022em;line-height:1.15;color:var(--navy);outline:none}
.step-help{margin-top:-10px;color:var(--muted);font-size:.95rem}
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@media (min-width:600px){.tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}
.tile{position:relative;display:block;min-width:0}
.tile input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.tile__in{position:relative;display:grid;gap:10px;align-content:start;height:100%;min-height:98px;padding:14px;border:1.5px solid var(--rail);border-radius:var(--r-md);background:var(--paper);cursor:pointer;transition:border-color .18s,background-color .18s,box-shadow .18s}
.tile__ic{width:26px;height:26px;color:var(--blue)}
.tile__t{font-family:var(--f-display);font-weight:700;font-size:.95rem;line-height:1.25;color:var(--navy)}
.tile__led{position:absolute;top:12px;right:12px;width:10px;height:10px;border-radius:50%;background:var(--rail-2);transition:background-color .2s,box-shadow .2s}
@media (hover:hover){.tile:hover .tile__in{border-color:var(--rail-2)}}
.tile input:checked + .tile__in{border-color:var(--navy);background:var(--ice-2);box-shadow:0 0 0 1px var(--navy)}
.tile input:checked + .tile__in .tile__led{background:var(--go);box-shadow:0 0 8px 1px rgba(43,182,115,.75)}
.tile input:focus-visible + .tile__in{outline:3px solid var(--focus);outline-offset:2px}
.groups{display:grid;gap:14px}
.qgroup{display:grid;gap:12px;padding:14px 16px;border:1px solid var(--rail);border-radius:var(--r-md)}
.qgroup legend{font-size:.88rem;margin-bottom:8px}
.qgroup .opts{gap:6px}
.qgroup .opt span{min-height:38px;padding:6px 13px;font-size:.86rem}
.ctx--field{margin-bottom:10px}
.jobs-bar{display:grid;gap:8px;margin-top:-6px}
.job-chips{display:flex;flex-wrap:wrap;gap:8px}
.job-chip{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:4px 4px 4px 12px;border-radius:999px;background:var(--navy);color:var(--on-navy);font-family:var(--f-display);font-weight:700;font-size:.88rem;line-height:1.2}
.job-chip > .ic{width:18px;height:18px;color:var(--sky)}
.job-chip__x{width:32px;height:32px;border:0;border-radius:50%;background:rgba(255,255,255,.14);color:var(--on-navy);display:grid;place-items:center;cursor:pointer;transition:background-color .15s}
@media (hover:hover){.job-chip__x:hover{background:rgba(255,255,255,.3)}}
.job-chip__x .ic{width:14px;height:14px}
.job-add{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:6px 14px 6px 10px;border:1.5px dashed var(--rail-2);border-radius:999px;background:var(--paper);color:var(--navy);font-family:var(--f-display);font-weight:700;font-size:.88rem;cursor:pointer}
@media (hover:hover){.job-add:hover{border-color:var(--navy)}}
.job-add .ic{width:16px;height:16px;color:var(--blue)}
.sum li.sum__job{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:10px}
.sum__job > div{display:grid;gap:2px;min-width:0}
.sum__rm{border:0;background:none;padding:4px 2px;color:var(--muted);font-family:var(--f-display);font-weight:700;font-size:.86rem;text-decoration:underline;text-underline-offset:.2em;cursor:pointer}
@media (hover:hover){.sum__rm:hover{color:var(--alert)}}
.qgroup__head{display:flex;align-items:center;gap:10px}
.qgroup__head .ic{width:24px;height:24px;color:var(--blue)}
.qgroup h4{font-family:var(--f-display);font-weight:800;font-size:1.05rem;line-height:1.25;color:var(--navy)}
.qgroup .step-help{margin-top:-8px}
.ctx{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:12px;background:var(--mist);font-size:.9rem;line-height:1.45;color:var(--navy)}
.ctx .ic{margin-top:2px;color:var(--blue)}
.opt-tag{font-weight:600;color:var(--muted);font-size:.85em}
.inp{display:block;width:100%;min-height:50px;padding:12px 16px;border:1.5px solid var(--rail);border-radius:14px;background:var(--paper);color:var(--ink);font-size:1rem;line-height:1.4}
textarea.inp{min-height:96px;resize:vertical}
.inp::placeholder{color:#8A95A8}
.inp:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(79,168,238,.35)}
.inp[aria-invalid="true"]{border-color:var(--alert)}
.err{margin-top:8px;color:var(--alert);font-weight:700;font-size:.9rem;line-height:1.4}
.callout{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:start;padding:12px 14px;border-radius:12px;background:var(--mist);border:1px solid var(--rail);font-size:.95rem;line-height:1.5}
.callout .ic{margin-top:2px;color:var(--blue)}
.callout__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.callout__actions .btn .ic{margin-top:0;color:inherit}
.callout--alert{background:var(--alert-bg);border-color:var(--alert-line)}
.callout--alert .ic{color:var(--alert)}
.photos{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:10px}
.photos:empty{display:none}
.photo{position:relative;width:84px;height:84px;overflow:hidden;border-radius:12px;border:1px solid var(--rail);background:var(--mist)}
.photo img{display:block;width:100%;height:100%;object-fit:cover}
.photo__x{position:absolute;top:4px;right:4px;width:28px;height:28px;border:0;border-radius:50%;background:rgba(0,25,69,.8);color:var(--on-navy);display:grid;place-items:center;cursor:pointer}
.upload{display:inline-flex;align-items:center;gap:10px;min-height:50px;padding:10px 18px;border:1.5px dashed #AEBBD0;border-radius:999px;background:var(--paper);color:var(--navy);font-family:var(--f-display);font-weight:700;font-size:.95rem;cursor:pointer}
@media (hover:hover){.upload:hover{border-color:var(--navy)}}
.upload:focus-within{outline:3px solid var(--focus);outline-offset:2px}
.upload__count{font-weight:600;color:var(--muted);font-size:.85rem}
.days{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 8px;scroll-snap-type:x proximity;scrollbar-width:thin}
.day{position:relative;flex:none;scroll-snap-align:start}
.day input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.day span{display:grid;justify-items:center;gap:3px;min-width:74px;padding:10px 10px 9px;border:1.5px solid var(--rail);border-radius:16px;background:var(--paper);cursor:pointer;font-family:var(--f-display);line-height:1.1;transition:background-color .15s,border-color .15s}
.day small{font-weight:600;font-size:.78rem;color:var(--muted)}
.day strong{font-weight:800;font-size:1rem;color:var(--navy);white-space:nowrap}
@media (hover:hover){.day span:hover{border-color:var(--rail-2)}}
.day input:checked + span{background:var(--navy);border-color:var(--navy)}
.day input:checked + span small{color:var(--on-navy-muted)}
.day input:checked + span strong{color:var(--on-navy)}
.day input:focus-visible + span{outline:3px solid var(--focus);outline-offset:2px}
.form-grid{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}
@media (min-width:640px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.field--full{grid-column:1 / -1}}
.sum{display:grid;gap:12px}
.sum__block{display:grid;gap:8px;padding:14px 16px;border:1px solid var(--rail);border-radius:var(--r-md);min-width:0}
.sum__head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.sum__edit{border:0;background:none;padding:6px 4px;color:var(--blue);font-family:var(--f-display);font-weight:700;font-size:.9rem;cursor:pointer}
.sum ul{display:grid;gap:8px}
.sum li{display:grid;gap:2px;min-width:0;overflow-wrap:anywhere}
.sum li span,.sum p{color:var(--muted);font-size:.93rem}
.sum__thumbs{display:flex;flex-wrap:wrap;gap:8px}
.sum__thumbs img{width:56px;height:56px;object-fit:cover;border-radius:8px;border:1px solid var(--rail)}
.done{display:grid;gap:14px}
.preview-note{padding:12px 14px;border:1.5px dashed var(--warn-line);border-radius:12px;background:var(--warn-bg);color:#5B3D00;font-size:.93rem;line-height:1.5}
.customer-view{display:grid;gap:10px;padding:18px;border:1px solid var(--rail);border-radius:var(--r-md)}
.done__ok{display:flex;gap:12px;align-items:center}
.done__icon{flex:none;width:46px;height:46px;border-radius:50%;background:var(--ok-bg);color:var(--ok);display:grid;place-items:center}
.enq-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:500 .86rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--ink);background:var(--mist);border:1px solid var(--rail);border-radius:12px;padding:14px;max-height:280px;overflow:auto;-webkit-user-select:text;user-select:text}
.done .btn{justify-self:start}
.enq__foot{flex:none;display:flex;justify-content:space-between;gap:12px;padding:14px max(24px,env(safe-area-inset-right,0px)) calc(14px + env(safe-area-inset-bottom,0px)) max(24px,env(safe-area-inset-left,0px));border-top:1px solid var(--rail);background:var(--paper)}
.enq__foot .btn--primary{margin-left:auto}
@media (max-width:640px){.enq__foot .btn--primary{flex:1 1 auto}}

@media (max-width:520px){
  .btn{white-space:normal;text-align:center}
  .tool__result .btn,.smoke__result .btn{width:100%}
  .svc-card{padding:18px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .carousel{scroll-behavior:auto}
  .map .base-pulse{animation:none;opacity:0}
}

/* ==========================================================================
   Design layer. Navy, white and gold, drawn like a set of plans: fine rules,
   numbered callouts and a gold brush tick that means "done properly".
   Builds on the base styles above.
   ========================================================================== */
:root{
  --blue:#1C4AA6;
  --ice:#EDF2FA;
  --ice-2:#F6F8FC;
  --cloud:#F3F6FA;
  --mist:#F3F6FA;
  --linen:#F3F6FA;
  --rail:#E3E8F0;
  --rail-2:#CDD5E2;
  --muted:#556075;
  --focus:#1C4AA6;
  --line-blue:rgba(28,74,166,.38);
  --gut:clamp(8px,1.4vw,20px);
  --panel-r:clamp(22px,2.6vw,34px);
  --shadow-sm:0 1px 2px rgba(10,30,70,.05),0 2px 8px rgba(10,30,70,.04);
  --shadow:0 1px 2px rgba(10,30,70,.04),0 12px 30px rgba(10,30,70,.07);
  --shadow-lg:0 2px 6px rgba(10,30,70,.04),0 24px 60px rgba(10,30,70,.10);
}
[hidden]{display:none!important}
html{-webkit-tap-highlight-color:transparent}
::selection{background:rgba(28,74,166,.16);color:var(--ink)}
:focus-visible{outline-color:var(--focus)}
.band--navy,.foot,.cta,.teaser__tool,.ct__demo,.way--call{--focus:#FFFFFF}
a{color:var(--navy);text-decoration-color:var(--line-blue)}
@media (hover:hover){a:hover{color:var(--blue)}}
body{margin:0;background:var(--paper)}

/* Type */
.display{font-weight:700;letter-spacing:-.034em}
.h2{font-size:clamp(1.95rem,1.25rem + 2.4vw,3rem);line-height:1.06}
.eyebrow,.band--navy .eyebrow{display:inline-flex;align-items:center;gap:0;padding:0;border-radius:0;background:none;color:var(--muted);font-family:var(--f-display);font-weight:600;font-size:1rem;letter-spacing:-.005em;text-transform:none;line-height:1.3}
.eyebrow::before{content:none}
.band--navy .eyebrow,.cta .eyebrow{color:#A9BEE3}
.kicker{letter-spacing:-.005em}
.lead{color:var(--muted)}

/* Buttons */
.btn--primary{background:var(--navy);box-shadow:0 4px 14px rgba(0,25,69,.14)}
@media (hover:hover){.btn--primary:hover{box-shadow:0 8px 22px rgba(0,25,69,.18)}}
.btn--ghost{border-color:var(--rail-2)}
@media (hover:hover){.btn--ghost:hover{border-color:var(--navy)}}
.btn--light{background:var(--paper);color:var(--navy)}
@media (hover:hover){.btn--light:hover{background:#E6EDF8;color:var(--navy)}}
.proj-add[aria-pressed="true"]{border-color:#AFC3E6;background:var(--ice);color:var(--navy)}
.proj-add[aria-pressed="true"] .ic{color:var(--ok)}
.link-go{color:var(--navy);text-decoration:underline;text-decoration-color:var(--line-blue);text-decoration-thickness:2px;text-underline-offset:.3em}
@media (hover:hover){.link-go:hover{color:var(--blue);text-decoration-color:var(--blue)}}
.link-go .ic{transition:transform .2s}
@media (hover:hover){.link-go:hover .ic{transform:translateX(3px)}}

/* Brush tick, the recurring mark */
.tk{flex:none;width:22px;height:19px;margin-top:2px;color:var(--blue)}
.ticks li{grid-template-columns:24px minmax(0,1fr)}
.ticks li.is-urgent{color:#8E2219}
.ticks li.is-urgent .ic{width:20px;height:20px;margin-top:2px;color:var(--alert)}
.ticks li.is-urgent a{color:inherit;font-weight:700}
.ticks--sm li{font-size:.95rem}

/* Header */
.site-head{view-transition-name:site-head}
.nav{gap:2px}
.nav a,.nav__svc{position:relative;display:inline-flex;align-items:center;gap:5px;font-family:var(--f-display);font-weight:600;font-size:.94rem;line-height:1;color:var(--ink);text-decoration:none;padding:12px 12px;border:0;border-radius:999px;background:none;cursor:pointer;white-space:nowrap;transition:background-color .15s,color .15s}
.nav__svc[aria-expanded="true"]{background:var(--mist);color:var(--navy)}
@media (hover:hover){.nav a:hover,.nav__svc:hover{background:var(--mist);color:var(--navy)}}
.nav a[aria-current="page"]::after{content:"";position:absolute;left:12px;right:12px;bottom:4px;height:2px;border-radius:2px;background:var(--blue)}
.nav__svc .ic{transition:transform .25s}
.nav__svc[aria-expanded="true"] .ic{transform:rotate(180deg)}
.head-phone .ic{color:var(--blue)}
@media (min-width:1100px){.nav{display:flex}.site-head__cta{margin-left:6px}.menu-btn{display:none}}
@media (max-width:1099px){.nav{display:none}}
.proj-btn{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:5px 6px 5px 12px;border-radius:999px;border:1px solid var(--rail-2);background:var(--paper);color:var(--navy);box-shadow:var(--shadow-sm);font-family:var(--f-display);font-weight:700;font-size:.9rem;line-height:1;white-space:nowrap;cursor:pointer;animation:popIn .45s cubic-bezier(.34,1.56,.64,1) both}
.proj-btn .ic{width:18px;height:18px}
@media (hover:hover){.proj-btn:hover{border-color:var(--navy)}}
.proj-btn__n{min-width:26px;height:26px;padding:0 7px;border-radius:999px;background:var(--blue);color:var(--paper);display:inline-grid;place-items:center;font-size:.8rem;font-variant-numeric:tabular-nums}
@media (max-width:1279px){.proj-btn__label{display:none}}
@media (max-width:459px){.site-head .proj-btn{display:none!important}}
.menu-btn{position:relative}
.menu-btn__n{position:absolute;top:-5px;right:-5px;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:var(--blue);color:#FFFFFF;font:800 .72rem/20px var(--f-display);text-align:center}
@media (min-width:460px){.menu-btn__n{display:none!important}}
@keyframes popIn{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}

/* Services panel, desktop */
.svc-panel{position:absolute;left:0;right:0;top:100%;background:var(--paper);border-top:1px solid var(--rail);box-shadow:0 30px 60px rgba(0,25,69,.14);animation:panelIn .28s cubic-bezier(.2,.8,.2,1) both}
@keyframes panelIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.svc-panel__in{display:grid;gap:28px;grid-template-columns:minmax(0,2.1fr) minmax(0,1fr);padding-block:24px 30px}
.svc-panel__list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px}
.svc-panel__list a{display:flex;align-items:flex-start;gap:14px;padding:12px;border-radius:14px;color:var(--ink);text-decoration:none;transition:background-color .15s}
@media (hover:hover){.svc-panel__list a:hover{background:var(--cloud)}}
.svc-panel__ic{flex:none;width:42px;height:42px;border-radius:12px;background:var(--ice);color:var(--navy);display:grid;place-items:center}
.svc-panel__list strong{display:block;font-family:var(--f-display);font-weight:700;color:var(--navy);line-height:1.3}
.svc-panel__list small{display:block;margin-top:3px;font-size:.88rem;line-height:1.4;color:var(--muted)}
.svc-panel__aside{display:grid;gap:10px;align-content:start;justify-items:start;padding:22px;border-radius:18px;background:var(--linen);font-size:.95rem;line-height:1.5}
@media (max-width:1099px){.svc-panel{display:none!important}}

/* Menu sheet, phones and tablets */
.sheet{position:fixed;inset:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0;border:0;background:var(--paper);color:var(--ink);overflow-y:auto;overscroll-behavior:contain}
.sheet::backdrop{background:rgba(0,10,30,.25)}
.sheet[open]{animation:sheetIn .32s cubic-bezier(.2,.8,.2,1) both}
@keyframes sheetIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
.sheet__in{min-height:100%;display:flex;flex-direction:column;gap:24px;padding:max(12px,env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) max(24px,env(safe-area-inset-bottom,0px)) max(20px,env(safe-area-inset-left,0px))}
.sheet__top{display:flex;align-items:center;justify-content:space-between;min-height:52px}
.sheet__brand{line-height:0}
.sheet__brand img{height:31px;width:auto}
.sheet__close{width:46px;height:46px;border-radius:50%;border:1px solid var(--rail-2);background:var(--paper);color:var(--navy);display:grid;place-items:center;cursor:pointer}
.sheet__label{margin:4px 0 4px;font-family:var(--f-display);font-weight:700;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.sheet__list a{display:flex;align-items:baseline;gap:14px;padding:14px 0;border-bottom:1px solid var(--rail);font-family:var(--f-display);font-weight:700;font-size:clamp(1.5rem,1.1rem + 2vw,2.1rem);line-height:1.12;letter-spacing:-.025em;color:var(--navy);text-decoration:none}
.sheet__list a[aria-current="page"]{color:var(--blue)}
.sheet__n{flex:none;width:26px;font-size:.78rem;font-weight:700;letter-spacing:.06em;color:var(--muted);font-variant-numeric:tabular-nums}
.sheet[open] .sheet__list li{animation:riseIn .5s cubic-bezier(.2,.8,.2,1) both}
.sheet[open] .sheet__list li:nth-child(2){animation-delay:.04s}
.sheet[open] .sheet__list li:nth-child(3){animation-delay:.08s}
.sheet[open] .sheet__list li:nth-child(4){animation-delay:.12s}
.sheet[open] .sheet__list li:nth-child(5){animation-delay:.16s}
@keyframes riseIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.sheet__list + .sheet__label{margin-top:18px}
.sheet__small{display:flex;flex-wrap:wrap;gap:4px 22px}
.sheet__small a{display:inline-block;padding:8px 0;font-family:var(--f-display);font-weight:600;font-size:1.05rem;color:var(--navy);text-decoration:none}
.sheet__small a[aria-current="page"]{color:var(--blue)}
.sheet__foot{margin-top:auto;display:grid;gap:10px}
.sheet__foot .btn{width:100%}
.sheet__proj{display:flex;align-items:center;justify-content:center;gap:10px;min-height:52px;border-radius:999px;border:1px solid var(--rail-2);background:var(--cloud);color:var(--navy);font-family:var(--f-display);font-weight:700;font-size:1rem;cursor:pointer}
.sheet__fine{margin-top:6px;text-align:center;font-size:.86rem;line-height:1.55;color:var(--muted)}
html.menu-open,html.menu-open body{overflow:hidden}

/* Home hero: a soft rounded panel with the house as the centrepiece */
.hero--home{background:transparent;padding-block:clamp(40px,5.5vw,80px) clamp(52px,6.5vw,96px)}
.hero--home::before,.page-hero::before{content:"";position:absolute;inset:6px var(--gut) 0;border-radius:var(--panel-r);background:var(--cloud);pointer-events:none}
.tick-mark{color:var(--gold)}
.hero--home .notice{background:var(--paper);border-color:var(--rail);color:var(--navy);box-shadow:var(--shadow-sm)}
@media (hover:hover){.hero--home .notice:hover{border-color:var(--navy)}}
.hero--home .trust{border-top-color:var(--rail-2)}
.trust a{display:inline-flex;align-items:center;gap:9px;color:var(--navy);text-decoration:none}
@media (hover:hover){.trust a:hover span:last-child{text-decoration:underline;text-decoration-color:var(--line-blue);text-underline-offset:.25em}}
.trust .ic{color:var(--blue)}
.hero--home .scene-card{border-color:rgba(16,40,90,.08);box-shadow:var(--shadow-lg)}
.svc-chip input:checked + span .ic{color:var(--gold)}
.insights{min-height:68px}
.insight{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:start;padding:12px 14px;border-radius:14px;background:var(--cloud);color:var(--muted);font-size:.93rem;line-height:1.5;animation:insIn .35s ease both}
.insight .ic{margin-top:1px;color:var(--blue)}
.insight strong{font-family:var(--f-display);color:var(--navy)}
.insight a{color:var(--navy);text-underline-offset:3px;text-decoration-color:var(--line-blue)}
@media (hover:hover){.insight a:hover{color:var(--blue)}}
@keyframes insIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* Bands */
.band--linen,.band--mist{background:var(--cloud)}
.band--navy{background:transparent}
.band--navy::before{content:"";position:absolute;inset:var(--gut);border-radius:var(--panel-r);background:var(--navy);pointer-events:none}
.band--navy > .wrap{position:relative}
.sec-head--wide{max-width:880px}

/* Reviews */
.review{border-color:var(--rail);box-shadow:var(--shadow-sm)}
.band:not(.band--linen) .review{background:var(--cloud);border-color:transparent;box-shadow:none}
.band:not(.band--linen) .chips li{background:var(--cloud);border-color:transparent}
.avatar{background:var(--ice);color:var(--navy)}
.chips li{border-color:var(--rail)}

/* Service index, an editorial list rather than a grid of cards */
.svc-index{border-top:1px solid var(--rail-2)}
.svc-row{position:relative;display:grid;grid-template-columns:34px minmax(0,1fr) 44px;grid-template-areas:"n name go" "n desc go";column-gap:14px;row-gap:6px;align-items:center;padding:22px 2px;border-bottom:1px solid var(--rail-2);color:var(--ink);text-decoration:none}
.svc-row::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--blue);transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.svc-row:focus-visible::after{transform:scaleX(1)}
@media (hover:hover){.svc-row:hover::after{transform:scaleX(1)}}
.svc-row:focus-visible{outline:3px solid var(--focus);outline-offset:4px;border-radius:6px}
.svc-row__n{grid-area:n;align-self:start;padding-top:8px;font-family:var(--f-display);font-weight:700;font-size:.8rem;letter-spacing:.08em;color:var(--muted);font-variant-numeric:tabular-nums}
.svc-row__ic{display:none}
.svc-row__name{grid-area:name;font-family:var(--f-display);font-weight:800;font-size:clamp(1.35rem,1rem + 1.6vw,2.2rem);line-height:1.1;letter-spacing:-.03em;color:var(--navy);transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.svc-row__desc{grid-area:desc;color:var(--muted);font-size:1rem;line-height:1.5;max-width:60ch}
.svc-row__go{grid-area:go;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--rail-2);display:grid;place-items:center;color:var(--navy);transition:background-color .25s,border-color .25s,color .25s,transform .3s}
@media (hover:hover){.svc-row:hover .svc-row__go{background:var(--navy);border-color:var(--navy);color:#FFFFFF;transform:translateX(4px)}}
@media (min-width:900px){
  .svc-row{grid-template-columns:52px 56px minmax(0,1.05fr) minmax(0,1fr) 52px;grid-template-areas:"n ic name desc go";column-gap:24px;padding:28px 6px}
  .svc-row__n{align-self:center;padding-top:0}
  .svc-row__ic{display:grid;grid-area:ic;width:56px;height:56px;border-radius:16px;background:var(--paper);border:1px solid var(--rail);color:var(--navy);place-items:center;transition:background-color .3s,color .3s,transform .35s cubic-bezier(.34,1.56,.64,1)}
  .svc-row__ic .ic{width:26px;height:26px}
  @media (hover:hover){.svc-row:hover .svc-row__ic{background:var(--navy);border-color:var(--navy);color:#FFFFFF;transform:rotate(-6deg) scale(1.06)}}
  @media (hover:hover){.svc-row:hover .svc-row__name{transform:translateX(6px)}}
  .svc-row__go{width:52px;height:52px}
}

/* Comfort Studio teaser on the home page */
.ladder li.is-below::before{background:#CFDCF2}
.ladder li.is-on::before{background:var(--blue);box-shadow:none}
.ladder--dark li{color:var(--on-navy-muted)}
.ladder--dark li::before{background:rgba(255,255,255,.12)}
.ladder--dark li.is-below::before{background:rgba(242,179,0,.32)}
.ladder--dark li.is-on{color:var(--on-navy)}
.ladder--dark li.is-on::before{background:var(--gold)}

/* Owner section */
.why{display:grid;gap:clamp(36px,5vw,64px);grid-template-columns:minmax(0,1fr)}
@media (min-width:980px){.why{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:start}}
.why__copy{display:grid;gap:22px;justify-items:start;min-width:0}
.jobsheet li{grid-template-columns:26px minmax(0,1fr)}
.jobsheet .tk{width:24px;height:20px;margin-top:0}
.jobsheet__head span{color:var(--on-navy-muted)}
.step__num{background:var(--navy);color:#FFFFFF;box-shadow:0 0 0 6px var(--ice)}

/* Inner page hero, light like the home page */
.page-hero{position:relative;overflow:hidden;background:transparent;color:var(--ink);padding-block:clamp(40px,5vw,76px) clamp(44px,5.5vw,84px)}
.page-hero__in{position:relative;display:grid;gap:18px;justify-items:start}
.page-hero__in > *{max-width:860px}
.page-hero .display{color:var(--navy)}
.page-hero .h1{font-size:clamp(2.15rem,1.2rem + 3.2vw,3.5rem)}
.page-hero .lead{color:var(--muted)}
.page-hero--slim{padding-bottom:clamp(36px,4.5vw,64px)}
.crumbs ol{display:flex;flex-wrap:wrap;gap:6px;font-family:var(--f-display);font-weight:600;font-size:.86rem;line-height:1.3;color:var(--muted)}
.crumbs li + li::before{content:"/";margin-right:6px;color:var(--rail-2)}
.crumbs a{color:var(--muted);text-decoration:none}
@media (hover:hover){.crumbs a:hover{color:var(--navy);text-decoration:underline;text-decoration-color:var(--line-blue)}}
.crumbs [aria-current]{color:var(--navy)}
.hero-facts{display:flex;flex-wrap:wrap;gap:10px 26px;width:100%;max-width:none!important;padding-top:18px;border-top:1px solid var(--rail-2)}
.hero-facts li{display:flex;align-items:center;gap:9px;font-family:var(--f-display);font-weight:600;font-size:.95rem;color:var(--navy)}
.hero-facts .tk{margin-top:0}
.page-hero .countdown{background:var(--paper);border-color:var(--rail);box-shadow:var(--shadow-sm)}

/* Article layout with an on this page index */
.article{display:grid;gap:28px;grid-template-columns:minmax(0,1fr)}
@media (min-width:1000px){.article{grid-template-columns:230px minmax(0,1fr);gap:64px;align-items:start}}
.article--solo{grid-template-columns:minmax(0,1fr)!important}
.article--solo .prose{max-width:780px}
.toc{min-width:0}
@media (min-width:1000px){.toc{position:sticky;top:100px}}
.toc__title{margin-bottom:12px;font-family:var(--f-display);font-weight:700;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.toc ol{display:grid;border-left:2px solid var(--rail-2)}
.toc a{display:block;margin-left:-2px;padding:8px 0 8px 16px;border-left:2px solid transparent;font-family:var(--f-display);font-weight:600;font-size:.94rem;line-height:1.35;color:var(--ink);text-decoration:none;transition:border-color .2s,color .2s}
.toc a.is-on{border-left-color:var(--blue);color:var(--navy)}
@media (hover:hover){.toc a:hover{border-left-color:var(--blue);color:var(--navy)}}
@media (max-width:999px){
  .toc{margin-inline:calc(-1 * max(clamp(16px,4vw,40px),env(safe-area-inset-left,0px)))}
  .toc__title{padding-inline:max(clamp(16px,4vw,40px),env(safe-area-inset-left,0px))}
  .toc ol{display:flex;gap:8px;overflow-x:auto;border-left:0;padding:2px max(clamp(16px,4vw,40px),env(safe-area-inset-left,0px)) 8px;scrollbar-width:none;overscroll-behavior-x:contain;scroll-snap-type:x proximity}
  .toc ol::-webkit-scrollbar{display:none}
  .toc li{flex:none;scroll-snap-align:start}
  .toc a{margin:0;padding:10px 15px;border:1px solid var(--rail-2);border-radius:999px;background:var(--paper);font-size:.88rem;white-space:nowrap}
}
.prose{min-width:0;max-width:760px}
.prose > * + *{margin-top:1.05em}
.prose h2{margin-top:2.1em;font-family:var(--f-display);font-weight:800;font-size:clamp(1.55rem,1.2rem + 1.2vw,2.1rem);line-height:1.15;letter-spacing:-.028em;color:var(--navy);scroll-margin-top:96px}
.prose > h2:first-child,.prose > .callout:first-child + .svc-sec h2{margin-top:0}
.prose h3{margin-top:1.5em;font-size:1.15rem}
.prose p,.prose li{line-height:1.7}
.prose a{text-decoration-thickness:2px;text-underline-offset:.22em}
.prose .ticks{margin-top:1em}
.prose .callout{padding:16px 18px;border-radius:16px;font-size:1rem;line-height:1.6;background:var(--paper)}
.prose .callout p{margin:0}
.callout--info{border-left:4px solid var(--blue)!important}
.callout--info .ic{color:var(--navy)}
.prose .callout--alert{background:var(--alert-bg)}
.source{font-size:.9rem;color:var(--muted)}
.table-wrap{overflow-x:auto}
.data{width:100%;border-collapse:separate;border-spacing:0;background:var(--paper);border:1px solid var(--rail);border-radius:14px;overflow:hidden;font-variant-numeric:tabular-nums}
.data caption{caption-side:top;padding:0 0 10px;text-align:left;font-size:.92rem;line-height:1.45;color:var(--muted)}
.data th,.data td{padding:12px 16px;text-align:left;border-bottom:1px solid var(--rail)}
.data thead th{font-family:var(--f-display);font-weight:700;font-size:.76rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);background:var(--linen)}
.data td:last-child{font-family:var(--f-display);font-weight:700;color:var(--navy)}
.data tbody tr:last-child td{border-bottom:0}
.flow{display:grid;gap:18px}
.flow li{display:grid;grid-template-columns:42px minmax(0,1fr);gap:16px}
.flow__n{width:42px;height:42px;border-radius:50%;background:var(--ice);color:var(--navy);display:grid;place-items:center;font-family:var(--f-display);font-weight:800}
.flow h3{margin:8px 0 4px}
.flow p{color:var(--muted)}
.timeline{display:grid;margin-left:8px;border-left:2px solid var(--rail-2)}
.timeline li{position:relative;display:grid;grid-template-columns:64px minmax(0,1fr);gap:14px;padding:0 0 24px 24px}
.timeline li:last-child{padding-bottom:0}
.timeline li::before{content:"";position:absolute;left:-8px;top:7px;width:14px;height:14px;border-radius:50%;background:var(--paper);border:2px solid var(--navy)}
.timeline li.is-next::before{background:var(--blue);border-color:var(--blue);box-shadow:0 0 0 5px rgba(28,74,166,.14)}
.timeline__when{font-family:var(--f-display);font-weight:800;font-size:1.3rem;line-height:1.2;color:var(--navy);font-variant-numeric:tabular-nums}
.timeline h3{margin:2px 0 4px}
.timeline p{color:var(--muted)}
.compare-cols{display:grid;gap:14px;grid-template-columns:minmax(0,1fr)}
@media (min-width:640px){.compare-cols{grid-template-columns:repeat(2,minmax(0,1fr))}}
.compare-col{padding:20px;border-radius:16px;background:var(--paper);border:1px solid var(--rail)}
.compare-col h3{margin:0 0 12px}
.svc-list{display:grid;gap:14px;grid-template-columns:minmax(0,1fr)}
@media (min-width:720px){.svc-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
.svc-item{display:grid;gap:10px;align-content:start;padding:20px;border-radius:18px;background:var(--paper);border:1px solid var(--rail);transition:border-color .2s,box-shadow .2s}
@media (hover:hover){.svc-item:hover{border-color:var(--rail-2);box-shadow:var(--shadow-sm)}}
.svc-item__head{display:flex;align-items:center;gap:12px}
.svc-item__head h3{margin:0}
.svc-item__ic{flex:none;width:42px;height:42px;border-radius:12px;background:var(--ice);color:var(--navy);display:grid;place-items:center}
.svc-item p{color:var(--muted);line-height:1.6}
.svc-item__acts{display:flex;flex-wrap:wrap;gap:8px}
.svc-item .svc-item__acts{margin-top:auto;padding-top:4px}
.svc-sec{padding:28px 0;border-bottom:1px solid var(--rail)}
.svc-sec:last-of-type{border-bottom:0}
.svc-sec > * + *{margin-top:12px}
.svc-sec__head{display:flex;align-items:center;gap:14px}
.prose .svc-sec__head h2{margin:0}
.see-also{padding:20px 22px;border-radius:18px;background:var(--linen)}
.see-also ul{display:grid;gap:8px;margin-top:10px}

/* Comfort Studio */
.tool--studio{border:1px solid var(--rail);box-shadow:0 30px 70px rgba(0,25,69,.14)}
@supports (overflow:clip){.tool--studio{overflow:clip}@media (min-width:960px){.tool--studio .tool__inputs{position:sticky;top:84px;align-self:start}}}
.studio .tool__result{background:var(--cloud)}
.studio-step{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:.93rem;line-height:1.45;color:var(--muted)}
.studio-step__n{padding:5px 12px;border-radius:999px;background:var(--navy);color:#FFFFFF;font-family:var(--f-display);font-weight:700;font-size:.8rem;letter-spacing:.04em}
.workings{padding:14px 16px;border-radius:14px;background:var(--paper);border:1px dashed var(--rail-2)}
.workings__title{margin-bottom:6px;font-family:var(--f-display);font-weight:700;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.workings__table{width:100%;border-collapse:collapse;font-size:.92rem;font-variant-numeric:tabular-nums}
.workings__table th{padding:5px 12px 5px 0;text-align:left;font-weight:500;color:var(--ink);line-height:1.35}
.workings__table td{padding:5px 0;text-align:right;white-space:nowrap;font-family:var(--f-display);font-weight:700;color:var(--navy)}
.workings__table tr.w-same th,.workings__table tr.w-same td{color:var(--muted);font-weight:500}
.workings__table tr.w-total th,.workings__table tr.w-total td{padding-top:9px;border-top:1px solid var(--rail-2);font-weight:700;color:var(--navy)}
.workings__table tr.w-result th{font-weight:700;color:var(--navy)}
.workings__table tr.w-result td{font-size:1.05rem;color:var(--navy)}
.workings__table tr.w-result td::before{content:"";display:inline-block;width:10px;height:10px;margin-right:8px;border-radius:50%;background:var(--blue);vertical-align:1px}
.workings .readout__need{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.studio-save{display:grid;gap:8px}
.studio-save .field__label{margin-bottom:0}
.studio-save__row{display:flex;flex-wrap:wrap;gap:8px}
.studio-save__row .inp{flex:1 1 200px;min-width:0}
.studio-rooms{display:grid;gap:10px}
.studio-rooms__list{display:grid;gap:8px}
.studio-room{display:grid;grid-template-columns:28px minmax(0,1fr) 38px;gap:12px;align-items:center;padding:10px 10px 10px 12px;border-radius:14px;background:var(--paper);border:1px solid var(--rail);animation:insIn .35s ease both}
.studio-room__n{width:28px;height:28px;border-radius:50%;background:var(--ice);color:var(--navy);display:grid;place-items:center;font-family:var(--f-display);font-weight:800;font-size:.8rem}
.studio-room strong{display:block;font-family:var(--f-display);color:var(--navy);line-height:1.25;overflow-wrap:anywhere}
.studio-room div span{font-size:.88rem;color:var(--muted)}
.studio-room__x{width:38px;height:38px;border-radius:50%;border:1px solid var(--rail-2);background:var(--paper);color:var(--navy);display:grid;place-items:center;cursor:pointer}
@media (hover:hover){.studio-room__x:hover{border-color:var(--navy)}}
.tool__result #acQuote{justify-self:stretch}
@media (min-width:600px){.tool__result #acQuote{justify-self:start}}

/* Switchboard and smoke tools */
.compare__cap{display:flex;align-items:flex-start;gap:8px;font-size:.88rem;line-height:1.45;color:var(--muted)}
.compare__cap .ic{margin-top:2px}
.cta-row--tight{gap:8px}
.smoke__result .cta-row .btn{justify-self:auto}

/* Lighting colour demo */
.ct{display:grid;gap:clamp(28px,5vw,64px);grid-template-columns:minmax(0,1fr);align-items:center}
@media (min-width:980px){.ct{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}}
.ct__copy{display:grid;gap:18px;justify-items:start}
.ct__demo{--lt:#FFCF7D;--wall:#EADBC2;display:grid;gap:14px;padding:clamp(12px,2vw,18px);border-radius:var(--r-xl);background:var(--navy);box-shadow:var(--shadow-lg)}
.ct__demo:has(#ct4000:checked){--lt:#FFF0D2;--wall:#ECE6DB}
.ct__demo:has(#ct5000:checked){--lt:#E3EFFF;--wall:#E1E6EE}
.ct__pick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;min-width:0}
.ct__opt{position:relative;display:block;min-width:0}
.ct__opt input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.ct__opt span{display:grid;gap:2px;height:100%;padding:10px 6px;border-radius:12px;border:1.5px solid rgba(255,255,255,.16);text-align:center;color:var(--on-navy);cursor:pointer;transition:border-color .2s,background-color .2s}
.ct__opt b{font-family:var(--f-display);font-weight:700;font-size:.9rem;line-height:1.2}
.ct__opt small{font-size:.76rem;color:var(--on-navy-muted)}
.ct__opt input:checked + span{border-color:#FFFFFF;background:rgba(255,255,255,.1)}
.ct__opt input:focus-visible + span{outline:3px solid #FFFFFF;outline-offset:2px}
.ct__room{display:block;width:100%;height:auto;border-radius:14px}
.ct-wall{fill:var(--wall);transition:fill .6s}
.ct-floor{fill:#8B6F55}
.ct-beam{fill:var(--lt);opacity:.6;transition:fill .6s}
.ct-fit{fill:#FFFFFF}
.ct-art{fill:#2D4770}
.ct-sofa{fill:#53687E}
.ct-sofa2{fill:#62788F}
.ct-rug{fill:#C7B497}
.ct-plant{fill:#A8744B}
.ct-leaf{fill:#4B7553}
.ct-tint{fill:var(--lt);mix-blend-mode:multiply;opacity:.4;transition:fill .6s}
.ct__tip{min-height:3em;font-size:.95rem;line-height:1.5;color:var(--on-navy)}
.ct__tip span{display:none}
.ct__t3000{display:block!important}
.ct__demo:has(#ct4000:checked) .ct__t3000,.ct__demo:has(#ct5000:checked) .ct__t3000{display:none!important}
.ct__demo:has(#ct4000:checked) .ct__t4000,.ct__demo:has(#ct5000:checked) .ct__t5000{display:block}

/* Service areas */
.suburbs{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}
@media (min-width:960px){.suburbs{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) minmax(0,1fr);align-items:start}}
.suburbs__group{display:grid;gap:10px;align-content:start;padding:22px;border-radius:18px;background:var(--paper);border:1px solid var(--rail)}
.suburbs__group h3{display:flex;align-items:center;gap:10px}
.suburbs__group > p{font-size:.95rem;line-height:1.5;color:var(--muted)}
.suburbs__list{display:flex;flex-wrap:wrap;gap:6px}
.suburbs__list li{padding:6px 11px;border-radius:999px;background:var(--cloud);font-family:var(--f-display);font-weight:600;font-size:.86rem;line-height:1.2;color:var(--navy)}
.dot{display:inline-block;flex:none;width:12px;height:12px;border-radius:50%}
.dot--1{background:var(--navy)}
.dot--2{background:var(--paper);border:2px solid var(--blue)}
.dot--3{background:#B6C1D2}
.areas--compact .map{max-width:620px;justify-self:end;width:100%}

/* About details */
.facts{display:grid;max-width:920px;border-top:1px solid var(--rail-2)}
.facts > div{display:grid;gap:4px;padding:16px 0;border-bottom:1px solid var(--rail-2)}
@media (min-width:700px){.facts > div{grid-template-columns:260px minmax(0,1fr);gap:24px}}
.facts dt{padding-top:3px;font-family:var(--f-display);font-weight:700;font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.facts dd{margin:0;font-family:var(--f-display);font-weight:600;font-size:1.05rem;line-height:1.45;color:var(--navy)}

/* Contact ways */
.ways{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}
@media (min-width:960px){.ways{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1fr)}}
.way{display:grid;gap:12px;align-content:start;justify-items:start;padding:clamp(22px,3vw,32px);border-radius:var(--r-xl);background:var(--paper);border:1px solid var(--rail);box-shadow:var(--shadow-sm);min-width:0}
.way h2{font-family:var(--f-display);font-weight:800;font-size:1.45rem;letter-spacing:-.02em;color:var(--navy)}
.way p{color:var(--muted);line-height:1.55}
.way__ic{width:50px;height:50px;border-radius:14px;background:var(--ice);color:var(--navy);display:grid;place-items:center}
.way--call{background:var(--navy);border-color:var(--navy);color:var(--on-navy)}
.way--call h2{color:var(--on-navy)}
.way--call p{color:var(--on-navy-muted)}
.way--call .way__ic{background:rgba(255,255,255,.08);color:#FFFFFF}
.way__big{font-family:var(--f-display);font-weight:800;font-size:clamp(2rem,1.5rem + 2vw,2.8rem);line-height:1;letter-spacing:-.03em;color:#FFFFFF;text-decoration:none;font-variant-numeric:tabular-nums}
@media (hover:hover){.way__big:hover{color:#DCE6F7}}
.way__mid{font-family:var(--f-display);font-weight:700;font-size:1.02rem;color:var(--navy);overflow-wrap:anywhere}
.way__acts{display:flex;flex-wrap:wrap;gap:8px}
.way--call .btn--ghost{background:transparent;color:var(--on-navy);border-color:rgba(255,255,255,.35)}
@media (hover:hover){.way--call .btn--ghost:hover{border-color:var(--on-navy)}}

/* Pull quotes */
.quote-band{padding-block:clamp(48px,7vw,96px)}
.pull{display:grid;gap:18px;justify-items:center;max-width:920px;margin-inline:auto;text-align:center}
.pull blockquote p{font-family:var(--f-display);font-weight:600;font-size:clamp(1.3rem,1rem + 1.4vw,2rem);line-height:1.4;letter-spacing:-.015em;color:var(--navy);text-wrap:balance}
.pull blockquote p::before{content:"\201C";color:var(--blue)}
.pull blockquote p::after{content:"\201D";color:var(--blue)}
.pull figcaption{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;font-family:var(--f-display);font-weight:700;font-size:.95rem;color:var(--muted)}

/* Closing call to action */
.cta{background:var(--navy);box-shadow:none}
.contact-list .ic{color:#A9BEE3}
@media (hover:hover){a.contact-list__val:hover{color:#DCE6F7}}

/* Footer */
.foot{background:var(--navy)}
.foot__logo{filter:none}
.foot a{text-decoration:none}
@media (hover:hover){.foot a:hover{color:#FFFFFF;text-decoration:underline;text-decoration-color:rgba(255,255,255,.5)}}
.foot h2{letter-spacing:.14em;text-transform:uppercase;font-size:.74rem;color:#A9BEE3}
.foot__social{display:flex;flex-wrap:wrap;gap:6px 16px}
.foot__brand{align-content:start}
.foot li{overflow-wrap:anywhere}

/* Mobile action bar */
.actionbar__n{display:inline-grid;place-items:center;min-width:22px;height:22px;margin-left:8px;padding:0 6px;border-radius:999px;background:#FFFFFF;color:var(--navy);font-family:var(--f-display);font-weight:800;font-size:.76rem}

/* Toast */
.toast{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom,0px));z-index:40;width:max-content;max-width:calc(100% - 24px);transform:translateX(-50%);pointer-events:none}
@media (max-width:899px){.toast{bottom:calc(86px + env(safe-area-inset-bottom,0px))}}
.toast__in{display:flex;align-items:center;gap:12px;padding:8px 8px 8px 16px;border-radius:999px;background:var(--navy);color:var(--on-navy);box-shadow:0 18px 44px rgba(0,10,30,.35);pointer-events:auto;animation:toastIn .38s cubic-bezier(.34,1.4,.64,1) both}
.toast__in.is-out{animation:toastOut .2s ease both}
.toast__tick{flex:none;width:22px;height:19px;color:var(--gold)}
.toast__txt{min-width:0;font-family:var(--f-display);font-weight:600;font-size:.94rem;line-height:1.3}
.toast__go{flex:none;min-height:38px;padding:6px 15px;border:0;border-radius:999px;background:#FFFFFF;color:var(--navy);font-family:var(--f-display);font-weight:700;font-size:.88rem;cursor:pointer}
@keyframes toastIn{from{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(10px)}}

/* Enquiry additions */
.hp{position:absolute!important;left:-9999px!important;top:auto;width:1px;height:1px;overflow:hidden}
.err--send p{margin:0}
.err--send a{color:inherit;font-weight:800}
.enq .tile input:checked + .tile__in{border-color:var(--navy)}

/* Sections ease in as you scroll */
@media (prefers-reduced-motion:no-preference){
  .rv{opacity:0;transform:translateY(18px);transition:opacity .7s cubic-bezier(.2,.8,.2,1),transform .7s cubic-bezier(.2,.8,.2,1)}
  .rv.in{opacity:1;transform:none}
  .svc-index .rv:nth-child(2){transition-delay:.05s}
  .svc-index .rv:nth-child(3){transition-delay:.1s}
  .svc-index .rv:nth-child(4){transition-delay:.15s}
  .svc-index .rv:nth-child(5){transition-delay:.2s}
}

/* Page to page transitions where the browser supports them */
@view-transition{navigation:auto}
::view-transition-old(root){animation:vtOut .2s ease both}
::view-transition-new(root){animation:vtIn .36s cubic-bezier(.2,.8,.2,1) both}
@keyframes vtOut{to{opacity:0}}
@keyframes vtIn{from{opacity:0;transform:translateY(10px)}}
/* The bottom bar on phones stays put between pages, like the header. With the menu or the
   enquiry open, both fade with the page so they never flash over it */
.actionbar{view-transition-name:actionbar}
html:has(dialog[open]) .site-head,html:has(dialog[open]) .actionbar{view-transition-name:none}

@media (prefers-reduced-motion:reduce){
  @view-transition{navigation:none}
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
  .sheet[open],.sheet[open] .sheet__list li,.svc-panel,.proj-btn,.insight,.studio-room,.toast__in{animation:none!important}
  .tick-mark.play{animation:none!important}
  .svc-row::after,.svc-row__name,.svc-row__ic,.svc-row__go,.teaser__room{transition:none!important}
}

/* ==========================================================================
   Visual formats that replace long paragraphs: stats, icon cards, diagrams,
   bar charts, swatches, requirement tiles, chip rows and timelines.
   ========================================================================== */
.band--tight{padding-block:clamp(44px,5.5vw,84px)}
.sec-head .lead{max-width:56ch}
.split{display:grid;gap:clamp(24px,4vw,56px);grid-template-columns:minmax(0,1fr);align-items:center}
@media (min-width:960px){.split{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.split--top{align-items:start}

.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:clamp(28px,4vw,48px)}
@media (min-width:860px){.stats{grid-template-columns:repeat(4,minmax(0,1fr))}}
.stat{display:grid;gap:6px;align-content:start;padding:20px 18px;border-radius:20px;background:var(--cloud)}
.band--linen .stat{background:var(--paper)}
.stat b{font-family:var(--f-display);font-weight:700;font-size:clamp(1.55rem,1.15rem + 1.4vw,2.2rem);line-height:1;letter-spacing:-.03em;color:var(--navy);font-variant-numeric:tabular-nums}
.stat span{font-size:.9rem;line-height:1.35;color:var(--muted)}

.icards{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}
@media (min-width:620px){.icards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:980px){.icards--3{grid-template-columns:repeat(3,minmax(0,1fr))}.icards--4{grid-template-columns:repeat(4,minmax(0,1fr))}}
.icard{position:relative;display:flex;flex-direction:column;gap:8px;padding:20px;border-radius:20px;background:var(--paper);border:1px solid var(--rail);scroll-margin-top:96px;min-width:0}
.band--linen .icard{border-color:transparent;box-shadow:var(--shadow-sm)}
.icard__ic{flex:none;width:44px;height:44px;margin-bottom:4px;border-radius:14px;background:var(--ice);color:var(--navy);display:grid;place-items:center}
.icard__ic .ic{width:22px;height:22px}
.icard h3{font-size:1.06rem;line-height:1.3}
.icard p{color:var(--muted);font-size:.95rem;line-height:1.5}
.icard p a{font-weight:600}
.icard__big{font-family:var(--f-display);font-weight:700;font-size:clamp(1.6rem,1.3rem + 1vw,2rem);line-height:1;letter-spacing:-.03em;color:var(--blue);font-variant-numeric:tabular-nums}
.icard__acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:8px}
.icard__acts .btn{min-height:40px;padding:.5em 1em;font-size:.9rem}
.alert-strip{display:flex;align-items:flex-start;gap:12px;margin-bottom:24px;padding:14px 18px;border-radius:16px;background:var(--alert-bg);border:1px solid var(--alert-line);font-size:.97rem;line-height:1.5;color:#7A1F17}
.alert-strip .ic{flex:none;margin-top:2px;color:var(--alert)}
.alert-strip a{color:inherit;font-weight:700}

.diagram{display:grid;gap:clamp(20px,3vw,44px);grid-template-columns:minmax(0,1fr);align-items:center}
@media (min-width:960px){.diagram{grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr)}}
.diagram__fig{margin:0;padding:clamp(12px,2vw,22px);border-radius:24px;background:var(--paper);border:1px solid var(--rail)}
.band--linen .diagram__fig{border-color:transparent;box-shadow:var(--shadow-sm)}
.diagram__fig > svg{display:block;width:100%;height:auto}
.diagram__cap{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:.84rem;color:var(--muted)}
.legend-list{display:grid;gap:16px;counter-reset:lg}
.legend-list li{display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px;align-items:start}
.legend-list li::before{counter-increment:lg;content:counter(lg);width:34px;height:34px;border-radius:50%;background:var(--navy);color:#FFFFFF;display:grid;place-items:center;font-family:var(--f-display);font-weight:700;font-size:.9rem}
.legend-list b{display:block;font-family:var(--f-display);font-weight:700;color:var(--navy);line-height:1.3}
.legend-list span{font-size:.94rem;line-height:1.45;color:var(--muted)}
.dg-wall{fill:var(--cloud);stroke:var(--rail-2);stroke-width:1.5}
.dg-line{fill:none;stroke:#9AA8BE;stroke-width:1.5;stroke-linecap:round}
.dg-unit{fill:#FFFFFF;stroke:var(--navy);stroke-width:2}
.dg-detail{fill:none;stroke:var(--navy);stroke-width:1.5;stroke-linecap:round}
.dg-pipe{fill:none;stroke:var(--blue);stroke-width:6;stroke-linecap:round;stroke-linejoin:round}
.dg-cover{fill:#FFFFFF;stroke:var(--navy);stroke-width:1.5}
.dg-drain{fill:none;stroke:var(--sky);stroke-width:2.5;stroke-dasharray:5 6;stroke-linecap:round}
.dg-drop{fill:var(--sky)}
.dg-power{fill:none;stroke:var(--gold);stroke-width:3;stroke-dasharray:1 7;stroke-linecap:round}
.dg-air{fill:none;stroke:var(--sky);stroke-width:2;stroke-dasharray:3 5;stroke-linecap:round;opacity:.8}
.dg-num circle{fill:var(--navy)}
.dg-num text{fill:#FFFFFF;font:700 14px var(--f-display);text-anchor:middle}
.dg-label{font:600 12px var(--f-display);fill:var(--muted)}
.dg-tag{font:700 11px var(--f-display);letter-spacing:.12em;fill:#8996AC}

.chiprow{display:flex;flex-wrap:wrap;gap:8px}
.chiprow li,.chiprow a{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:8px 14px;border-radius:999px;background:var(--paper);border:1px solid var(--rail);font-family:var(--f-display);font-weight:600;font-size:.9rem;line-height:1.2;color:var(--navy);text-decoration:none}
@media (hover:hover){.chiprow a:hover{border-color:var(--navy)}}
.chiprow .ic{width:18px;height:18px;color:var(--blue)}
.band--linen .chiprow li,.band--linen .chiprow a{border-color:transparent;box-shadow:var(--shadow-sm)}
.mini-head{margin:22px 0 10px;font-family:var(--f-display);font-weight:700;font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.note-line{display:flex;align-items:flex-start;gap:10px;margin-top:16px;padding:14px 16px;border-radius:16px;background:var(--paper);border-left:4px solid var(--blue);font-size:.96rem;line-height:1.5}
.band:not(.band--linen) .note-line{background:var(--cloud)}
.note-line .ic{flex:none;margin-top:2px;color:var(--blue)}

.reqs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%}
.reqs li{display:flex;align-items:center;gap:10px;min-height:52px;padding:10px 14px;border-radius:14px;background:var(--cloud);font-family:var(--f-display);font-weight:600;font-size:.92rem;line-height:1.3;color:var(--navy)}
.reqs li .tk{margin:0;width:20px;height:17px}
.reqs .reqs__wide{grid-column:1 / -1}

.swatches{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}
@media (min-width:760px){.swatches{grid-template-columns:repeat(3,minmax(0,1fr))}}
.swatch{display:grid;gap:6px;padding:16px;border-radius:20px;background:var(--paper)}
.band:not(.band--linen) .swatch{border:1px solid var(--rail)}
.swatch__chip{height:64px;margin-bottom:6px;border-radius:14px;background:var(--c);box-shadow:inset 0 0 0 1px rgba(0,25,69,.08)}
.swatch b{font-family:var(--f-display);color:var(--navy)}
.swatch small{font-size:.85rem;color:var(--muted)}
.swatch span{font-size:.95rem;line-height:1.4;color:var(--ink)}

@media (min-width:760px){
  .timeline--h{position:relative;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-left:0;padding-top:30px;border-left:0}
  .timeline--h::before{content:"";position:absolute;left:0;right:0;top:7px;height:2px;background:var(--rail-2)}
  .timeline--h li{grid-template-columns:minmax(0,1fr);gap:4px;padding:0}
  .timeline--h li::before{left:0;top:-30px}
}
.timeline h3{font-size:1.02rem}
.why .message{font-size:1.1rem}
.svc-row__desc{font-size:.97rem}

/* Smoke alarm floor plans */
.sm-svg{background:var(--paper)}
.sm-base{fill:#FFFFFF}
.sm-room{fill:#FFFFFF;stroke:#B7C2D4;stroke-width:1.2}
.sm-hall{fill:#EAF0FA;stroke:#B7C2D4;stroke-width:1.2}
.sm-wet{fill:#F2F6FC}
.sm-live{fill:#FBFCFE}
.sm-garage{fill:#F3F5F8}
.sm-bench{fill:#E4EAF4;stroke:#B7C2D4;stroke-width:1}
.sm-stairs{fill:#FFFFFF;stroke:#9AA8BE;stroke-width:1.2}
.sm-tread{fill:none;stroke:#9AA8BE;stroke-width:1}
.sm-shell{fill:none;stroke:var(--navy);stroke-width:2.6;stroke-linejoin:round}
.sm-text--sm{font-size:9.5px}
.sm-svg.is-narrow .sm-text{font-size:10px}
.sm-svg.is-narrow .sm-text--sm{font-size:8.5px}
.sm-link{fill:none;stroke:var(--blue);stroke-width:1.5;stroke-dasharray:3 4;stroke-linecap:round;opacity:.55}
.sm-svg.is-unlinked .sm-link{display:none}
.sm-svg.is-ringing .sm-link{stroke:var(--alert);opacity:.85;animation:smDash .6s linear infinite}
@keyframes smDash{to{stroke-dashoffset:-14}}
.sm-legend text{font:600 11px var(--f-display);fill:var(--muted)}
.sm-svg.is-unlinked .sm-legend-link{display:none}

.smoke__count .smoke__est{margin:0 8px 0 0}

/* Comfort Studio room mock up: room, cool air and moving streaks stacked */
.ac-room{margin:0;display:grid;gap:8px;min-width:0}
.ac-room__stage{position:relative;aspect-ratio:8/5;border-radius:var(--r-md);overflow:hidden;background:#E9EEF4;border:1px solid var(--rail)}
.ac-room__layer{position:absolute;inset:0;width:100%;height:100%;display:block}
.ac-room__air,.ac-room__flow{pointer-events:none;will-change:opacity}
.ac-room__show{position:absolute;left:10px;top:10px;margin:0;display:inline-flex;align-items:center;gap:8px;padding:5px 11px 5px 10px;border-radius:999px;background:rgba(255,255,255,.94);box-shadow:0 2px 10px rgba(0,25,69,.12);font-size:.8rem;line-height:1.2;color:var(--muted)}
.ac-room__show b{font-family:var(--f-display);font-weight:800;color:var(--navy);font-variant-numeric:tabular-nums}
.ac-room__show span{display:inline-flex;align-items:center;gap:6px}
.ac-room__show span::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--blue)}
.ac-room[data-verdict="small"] .ac-room__show span::before,.ac-room[data-verdict="two"] .ac-room__show span::before{background:#EE8A3E}
.ac-room[data-verdict="big"] .ac-room__show span::before{background:#8B97A9}
.ac-room__cap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 14px;font-size:.84rem;line-height:1.4;color:var(--muted)}
.ac-room__keys{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px 12px}
.ac-key{display:inline-flex;align-items:center;gap:6px}
.ac-key::before{content:"";width:14px;height:8px;border-radius:4px;background:#A3D2FF}
.ac-key--warm::before{background:#FFB884}
.ac-room__tag{padding:2px 8px;border-radius:999px;background:var(--paper);border:1px solid var(--rail);font-size:.74rem;font-weight:600;color:var(--muted)}
.ar-streak{fill:none;stroke-linecap:round;stroke-dasharray:16 44;animation:arStreak 1.6s linear infinite}
@keyframes arStreak{to{stroke-dashoffset:-60}}
.ac-room.is-filling .ac-room__air{animation:arFill 1.1s ease-out both}
@keyframes arFill{from{opacity:0}to{opacity:1}}
.ac-room.is-cycling .ac-room__air,.ac-room.is-cycling .ac-room__flow{animation:arCycle 5.5s ease-in-out infinite}
@keyframes arCycle{0%,38%{opacity:1}48%,84%{opacity:.07}94%,100%{opacity:1}}
.ac-room.is-paused .ar-streak,.ac-room.is-paused .ac-room__air,.ac-room.is-paused .ac-room__flow{animation-play-state:paused}

/* Tap a size to compare */
.pick{display:grid;gap:8px}
.pick__hint{font-size:.84rem;color:var(--muted)}
.ladder--pick li{display:block}
.ladder--pick li::before{display:none}
.ladder--pick button{display:grid;gap:7px;justify-items:center;align-content:start;width:100%;min-height:44px;padding:4px 0 6px;border:0;border-radius:10px;background:none;font:inherit;font-family:var(--f-display);font-weight:700;font-size:.82rem;line-height:1;color:var(--muted);font-variant-numeric:tabular-nums;cursor:pointer}
.ladder--pick button::before{content:"";width:100%;height:10px;border-radius:999px;background:var(--rail);transition:background-color .2s,box-shadow .2s}
.ladder--pick button.is-below::before{background:#CFDCF2}
.ladder--pick button.is-on{color:var(--navy)}
.ladder--pick button.is-on::before{background:var(--blue)}
.ladder--pick button[aria-pressed="true"]{color:var(--navy)}
.ladder--pick button[aria-pressed="true"]::before{box-shadow:0 0 0 2px var(--cloud),0 0 0 4px var(--navy)}
@media (hover:hover){.ladder--pick button:hover{color:var(--navy)}}
.ladder--pick button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}

@media (prefers-reduced-motion:reduce){
  .ar-streak{animation:none;stroke-dasharray:none}
  .ac-room.is-filling .ac-room__air,.ac-room.is-cycling .ac-room__air,.ac-room.is-cycling .ac-room__flow{animation:none}
}

/* Air con page: jump links in the hero */
.chiprow.quick{margin-top:20px}
.chiprow.quick a{background:var(--paper)}
.chiprow.quick a .ic{color:var(--blue)}

/* Air con help: what is it doing? */
.fix{display:grid;grid-template-columns:minmax(0,1fr);border-radius:var(--panel-r);background:var(--paper);border:1px solid var(--rail);box-shadow:var(--shadow-sm);overflow:hidden;scroll-margin-top:96px}
.fix__tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:12px;border-bottom:1px solid var(--rail);background:var(--cloud)}
.fix__tabs button{display:flex;align-items:center;gap:10px;min-height:48px;padding:10px 12px;border:1px solid transparent;border-radius:14px;background:none;font:inherit;font-family:var(--f-display);font-weight:600;font-size:.93rem;line-height:1.2;color:var(--navy);text-align:left;cursor:pointer;transition:background-color .15s,border-color .15s}
.fix__tabs button .ic{flex:none;color:var(--blue)}
@media (hover:hover){.fix__tabs button:hover{background:rgba(255,255,255,.7)}}
.fix__tabs button[aria-selected="true"]{background:var(--paper);border-color:#C9D7EE;box-shadow:var(--shadow-sm)}
.fix__tabs button:focus-visible{outline:3px solid var(--focus);outline-offset:1px}
.fix__panel{display:grid;gap:18px;padding:clamp(18px,3vw,32px);min-width:0}
.fix__panel:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
.fix__panel h3{font-size:clamp(1.2rem,1.05rem + .5vw,1.45rem);line-height:1.2}
.fix__cols{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}
.fix__k{margin-bottom:10px;font-family:var(--f-display);font-weight:700;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--blue)}
.fix__steps{display:grid;gap:10px;counter-reset:fx}
.fix__steps li{position:relative;padding-left:40px;line-height:1.5;counter-increment:fx}
.fix__steps li::before{content:counter(fx);position:absolute;left:0;top:-1px;width:28px;height:28px;border-radius:50%;background:var(--ice);color:var(--navy);display:grid;place-items:center;font-family:var(--f-display);font-weight:700;font-size:.85rem}
.fix__call{padding:16px 18px;border-radius:18px;background:#FFF7F0;border:1px solid #F5DDC8;align-self:start}
.fix__call .fix__k{color:#A4511B}
.fix__call ul{display:grid;gap:9px}
.fix__call li{position:relative;padding-left:18px;line-height:1.5;font-size:.96rem}
.fix__call li::before{content:"";position:absolute;left:0;top:.6em;width:7px;height:7px;border-radius:50%;background:#E8853C}
.fix__acts{display:flex;flex-wrap:wrap;gap:8px}
@media (min-width:720px){.fix__cols{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:28px}.fix__tabs{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1000px){.fix{grid-template-columns:270px minmax(0,1fr)}.fix__tabs{grid-template-columns:minmax(0,1fr);align-content:start;border-bottom:0;border-right:1px solid var(--rail);padding:16px}}

/* Summer ready check */
.ready-wrap{display:grid;gap:20px;grid-template-columns:minmax(0,1fr);align-items:start}
@media (min-width:960px){.ready-wrap{grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:28px}}
.ready{display:grid;gap:10px}
.ready__row{position:relative;display:grid;grid-template-columns:32px minmax(0,1fr);gap:14px;align-items:start;padding:16px 18px;border-radius:18px;background:var(--paper);border:1px solid var(--rail);cursor:pointer;transition:background-color .15s,border-color .15s}
@media (hover:hover){.ready__row:hover{border-color:var(--rail-2)}}
.ready__box{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.ready__tick{width:30px;height:30px;border-radius:50%;border:2px solid var(--rail-2);background:var(--paper);display:grid;place-items:center;color:#FFFFFF;transition:background-color .15s,border-color .15s}
.ready__tick .ic{width:16px;height:16px;opacity:0;transition:opacity .15s}
.ready__box:checked + .ready__tick{background:var(--blue);border-color:var(--blue)}
.ready__box:checked + .ready__tick .ic{opacity:1}
.ready__box:focus-visible + .ready__tick{outline:3px solid var(--focus);outline-offset:2px}
.ready__row:has(.ready__box:checked){background:var(--ice);border-color:#C9D7EE}
.ready__txt{display:grid;gap:3px;min-width:0}
.ready__txt b{font-family:var(--f-display);font-weight:700;font-size:1.02rem;color:var(--navy)}
.ready__txt span{color:var(--muted);font-size:.95rem;line-height:1.5}
.ready-card{display:grid;gap:12px;padding:clamp(20px,3vw,28px);border-radius:var(--panel-r);background:var(--cloud);border:1px solid var(--rail)}
@media (min-width:960px){.ready-card{position:sticky;top:96px}}
.ready-card__n{font-family:var(--f-display);font-weight:700;font-size:1rem;color:var(--muted)}
.ready-card__n span{font-size:2.4rem;font-weight:800;letter-spacing:-.03em;color:var(--navy);margin-right:4px;font-variant-numeric:tabular-nums}
.ready-card__bar{height:10px;border-radius:999px;background:var(--rail);overflow:hidden}
.ready-card__bar span{display:block;width:var(--p,0%);height:100%;border-radius:inherit;background:var(--blue);transition:width .35s cubic-bezier(.2,.8,.2,1),background-color .2s}
.ready-card.is-done .ready-card__bar span{background:var(--ok)}
.ready-card__msg{font-weight:600;color:var(--navy);line-height:1.45}
.ready-card__svc{display:grid;gap:12px;padding-top:14px;border-top:1px solid var(--rail-2)}
.ready-card__svc p{color:var(--muted);line-height:1.5}
.ready-card__svc strong{color:var(--navy)}

/* Enquiry: a hint for photos on air con service jobs */
.qhint{display:flex;align-items:flex-start;gap:8px;margin-top:12px;font-size:.88rem;line-height:1.45;color:var(--muted)}
.qhint .ic{margin-top:2px;color:var(--blue)}

/* Home: summer help links in the navy panel */
.teaser__help{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.teaser__help a,.teaser__help button{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:8px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);font:inherit;font-family:var(--f-display);font-weight:600;font-size:.9rem;line-height:1.2;color:var(--on-navy);text-decoration:none;cursor:pointer;transition:background-color .15s,border-color .15s}
@media (hover:hover){.teaser__help a:hover,.teaser__help button:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.32);color:var(--on-navy)}}
.teaser__help .ic{width:18px;height:18px;color:#A9BEE3}
.teaser__help a:focus-visible,.teaser__help button:focus-visible{outline:3px solid #FFFFFF;outline-offset:2px}
.chiprow.quick li{padding:0;border:0;background:none;box-shadow:none;min-height:0}
@media (min-width:960px){.tool--studio{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr)}}

/* Home page: the full Comfort Studio inside the navy panel */
.studio-home__head{display:grid;gap:18px;margin-bottom:clamp(24px,3.5vw,40px)}
.studio-home__head .sec-head{margin-bottom:0}
@media (min-width:1000px){.studio-home__head{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:32px}.studio-home__head .teaser__help{justify-content:flex-end;max-width:440px}}
.studio-home .tool{--focus:#1C4AA6;border-color:transparent;box-shadow:0 30px 70px rgba(0,8,25,.38)}
.studio-home .tool a:not(.btn){color:var(--navy)}

/* The hotter the room, the warmer the badge */
.ac-room[data-heat="1"] .ac-room__show span::before{background:#F2A65A}
.ac-room[data-heat="2"] .ac-room__show span::before{background:#EE7A33}
.ac-room[data-heat="3"] .ac-room__show span::before{background:#D9432B}
.ac-room[data-heat="3"] .ac-room__show{box-shadow:0 2px 14px rgba(217,67,43,.3)}
.ac-room[data-heat="3"] .ac-key--warm::before{background:#F0794A}
/* Heat shimmer rising where the cool air can't reach */
.ar-heat{fill:none;stroke-linecap:round;opacity:0;transform-box:fill-box;animation:arHeat 2.8s ease-in-out infinite}
@keyframes arHeat{0%{opacity:0;transform:translateY(10%)}40%{opacity:var(--ho,.6)}100%{opacity:0;transform:translateY(-18%)}}
.ac-room.is-paused .ar-heat{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){.ar-heat{animation:none;opacity:calc(var(--ho,.6) * .7)}}

/* Home FAQs: two independent stacks on wide screens, so opening one never shifts the other */
.faq-cols{display:grid;gap:10px;grid-template-columns:minmax(0,1fr);align-items:start}
.faq-cols .faq{max-width:none}
@media (min-width:980px){.faq-cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px}}

/* The headline tick: one clean stroke that draws itself in, then settles */
.tm-ink{fill:none;stroke:currentColor;stroke-width:17;stroke-linecap:round;stroke-linejoin:round}
.tick-mark{width:1.02em;height:.86em;margin-left:.05em}
.tick-mark.play{animation:tmSettle .5s 1.05s cubic-bezier(.34,1.56,.64,1) both}
.tick-mark.play .tm-ink{stroke-dasharray:1;stroke-dashoffset:1;animation:tmDraw .65s .45s cubic-bezier(.65,0,.35,1) forwards}
@keyframes tmDraw{to{stroke-dashoffset:0}}
@media (prefers-reduced-motion:reduce){.tick-mark.play,.tick-mark.play .tm-ink{animation:none!important;stroke-dashoffset:0!important}}

/* Comfort Studio, simplified: the extra room details tuck away */
.more{border-top:1px solid var(--rail)}
.more summary{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;min-height:52px;padding:10px 0 0;cursor:pointer;list-style:none;font-family:var(--f-display);font-weight:700;font-size:.98rem;color:var(--navy)}
.more summary::-webkit-details-marker{display:none}
.more__val{font-family:var(--f-body);font-weight:500;font-size:.86rem;color:var(--muted)}
.more summary .ic{margin-left:auto;color:var(--blue);transition:transform .2s}
.more[open] summary .ic{transform:rotate(180deg)}
.more summary:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:8px}
.more__body{display:grid;gap:22px;padding:16px 0 4px}

/* Result: the room, the size, two clear next steps */
.ac-room__tag{position:absolute;right:10px;top:10px;z-index:2;padding:3px 9px;border:0;border-radius:999px;background:rgba(255,255,255,.9);font-size:.72rem;font-weight:600;color:var(--muted)}
.ac-size{display:grid;gap:14px;align-items:end}
@media (min-width:560px){.ac-size{grid-template-columns:auto minmax(0,1fr);gap:26px}}
.ac-size__read{display:grid;gap:2px}
.ac-size .pick__hint{font-family:var(--f-display);font-weight:700;font-size:.8rem;color:var(--navy)}
.ac-acts{display:flex;flex-wrap:wrap;gap:10px}
.ac-acts .btn{min-height:48px}
@media (max-width:520px){.ac-acts .btn{flex:1 1 100%}}

/* The verdict: one big word across the room, animated to suit */
.ac-room__stage{container-type:inline-size}
.ac-verdict{position:absolute;left:0;right:0;bottom:7%;z-index:2;width:max-content;max-width:90%;margin:0 auto;display:grid;justify-items:center;gap:.3em;padding:.6em 1.25em .7em;border-radius:20px;background:linear-gradient(135deg,#2F6FDB,#1C4AA6);color:#FFFFFF;text-align:center;box-shadow:0 14px 34px rgba(0,25,69,.3);pointer-events:none}
.ac-verdict b{display:block;font-family:var(--f-display);font-weight:800;font-size:clamp(1.3rem,7.2cqw,2.9rem);line-height:.95;letter-spacing:.015em;text-transform:uppercase}
.ac-verdict span{font-weight:600;font-size:clamp(.74rem,2.5cqw,.98rem);line-height:1.3;opacity:.95}
.ac-room[data-verdict="small"] .ac-verdict,.ac-room[data-verdict="two"] .ac-verdict{background:linear-gradient(135deg,#F2873E,#D9432B);box-shadow:0 14px 34px rgba(130,30,0,.32)}
.ac-room[data-verdict="small"][data-heat="1"] .ac-verdict{background:linear-gradient(135deg,#F6A659,#EA7638)}
.ac-room[data-verdict="big"] .ac-verdict{background:linear-gradient(135deg,#71839B,#46546A)}
@keyframes vStamp{0%{opacity:0;transform:scale(1.5)}55%{opacity:1;transform:scale(.94)}80%{transform:scale(1.03)}100%{opacity:1;transform:scale(1)}}
@keyframes vCool{0%,100%{box-shadow:0 14px 34px rgba(0,25,69,.3),0 0 0 0 rgba(140,200,255,0)}50%{box-shadow:0 14px 34px rgba(0,25,69,.3),0 0 0 10px rgba(140,200,255,.32)}}
@keyframes vHot{0%,100%{box-shadow:0 14px 34px rgba(130,30,0,.32),0 0 0 0 rgba(255,120,60,0)}50%{box-shadow:0 14px 34px rgba(130,30,0,.32),0 0 30px 10px rgba(255,105,45,.55)}}
@keyframes vWobble{0%,100%{transform:skewX(0) translateY(0)}25%{transform:skewX(-5deg) translateY(-1px)}50%{transform:skewX(3deg) translateY(1px)}75%{transform:skewX(-2deg) translateY(0)}}
@keyframes vCycle{0%,38%{opacity:1}48%,84%{opacity:.38}94%,100%{opacity:1}}
.ac-room[data-verdict="right"] .ac-verdict{animation:vCool 3.2s ease-in-out infinite}
.ac-room[data-verdict="small"] .ac-verdict,.ac-room[data-verdict="two"] .ac-verdict{animation:vHot 1.6s ease-in-out infinite}
.ac-room[data-verdict="big"] .ac-verdict{animation:vCycle 5.5s ease-in-out infinite}
.ac-room.is-stamp[data-verdict="right"] .ac-verdict{animation:vStamp .65s cubic-bezier(.2,.9,.3,1.2) 1.5s both,vCool 3.2s ease-in-out 2.2s infinite}
.ac-room.is-stamp[data-verdict="small"] .ac-verdict,.ac-room.is-stamp[data-verdict="two"] .ac-verdict{animation:vStamp .65s cubic-bezier(.2,.9,.3,1.2) 1.3s both,vHot 1.6s ease-in-out 2s infinite}
.ac-room.is-stamp[data-verdict="big"] .ac-verdict{animation:vStamp .65s cubic-bezier(.2,.9,.3,1.2) 1s both,vCycle 5.5s ease-in-out 2.2s infinite}
.ac-room[data-verdict="small"] .ac-verdict b,.ac-room[data-verdict="two"] .ac-verdict b{animation:vWobble 1.5s ease-in-out infinite}
.ac-room[data-heat="2"] .ac-verdict b{animation-duration:1s}
.ac-room[data-heat="3"] .ac-verdict b{animation-duration:.6s}

/* The cooling story: a hot afternoon, then the cool air takes over from the back of the room */
.ar-summer{opacity:0}
@keyframes arSummer{0%,18%{opacity:.36}100%{opacity:0}}
@keyframes arIn{from{opacity:0}}
.ac-room.is-story .ar-summer{animation:arSummer 2.8s ease-in-out both}
.ac-room.is-story .ar-mist--1{animation:arIn 1.1s ease-out .35s both}
.ac-room.is-story .ar-mist--2{animation:arIn 1.1s ease-out .8s both}
.ac-room.is-story .ar-mist--3{animation:arIn 1.1s ease-out 1.25s both}
.ac-room.is-story .ar-band{animation:arIn 1.3s ease-out .3s both}
.ac-room.is-story .ar-late{animation:arIn 1.4s ease-in-out 1.2s both}
.ac-room.is-story .ac-room__flow{animation:arIn .9s ease-out .5s both}
.ac-room.is-cycling .ac-room__air,.ac-room.is-cycling .ac-room__flow{animation:arCycle 5.5s ease-in-out 2.2s infinite}
.ac-room.is-paused .ac-verdict,.ac-room.is-paused .ac-verdict b,.ac-room.is-paused .ar-summer,.ac-room.is-paused .ar-mist,.ac-room.is-paused .ar-band,.ac-room.is-paused .ar-late{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){
  .ac-verdict,.ac-verdict b,.ar-summer,.ar-mist,.ar-band,.ar-late,.ac-room .ac-room__flow,.ac-room .ac-room__air{animation:none!important}
}

/* Home FAQs: a panel from Dan with the proof points beside the questions, grouped by topic */
.faq-wrap{display:grid;gap:32px;grid-template-columns:minmax(0,1fr)}
.faq-aside{display:grid;gap:18px;align-content:start;justify-items:start}
.faq-from{display:flex;align-items:center;gap:14px}
.faq-from__pic{flex:none;width:64px;height:64px;border-radius:50%;overflow:hidden;background:var(--ice);box-shadow:0 0 0 3px var(--paper),var(--shadow-sm)}
.faq-from__pic img{display:block;width:100%;height:100%;object-fit:cover}
.faq-from p{margin:0;display:grid;gap:2px;line-height:1.3}
.faq-from strong{font-family:var(--f-display);font-weight:700;font-size:1.04rem;color:var(--navy)}
.faq-from span{font-size:.92rem;color:var(--muted)}
.faq-aside__lead{margin:0;max-width:40ch;color:var(--muted)}
.faq-proof{list-style:none;margin:0;padding:4px 18px;width:100%;box-sizing:border-box;border-radius:var(--r-lg);background:var(--paper);border:1px solid var(--rail);box-shadow:var(--shadow-sm)}
.faq-proof li{display:grid;grid-template-columns:40px minmax(0,1fr);gap:12px;align-items:center;padding:13px 0}
.faq-proof li + li{border-top:1px solid var(--rail)}
.faq-proof__ic{width:40px;height:40px;border-radius:12px;background:var(--ice);color:var(--blue);display:grid;place-items:center}
.faq-proof b{display:block;font-family:var(--f-display);font-weight:700;font-size:.97rem;line-height:1.3;color:var(--navy)}
.faq-proof a,.faq-proof small{font-size:.9rem;line-height:1.45;color:var(--muted)}
.faq-proof a{color:var(--blue);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.faq-ask{display:flex;flex-wrap:wrap;gap:10px}
.faq-groups{display:grid;gap:26px}
.faq-group{display:grid;gap:10px}
.faq-group__title{margin:0 0 2px;font-family:var(--f-display);font-weight:600;font-size:1rem;line-height:1.3;letter-spacing:-.005em;color:var(--muted)}
.faq-group .faq{max-width:none}
.faq details p a{color:var(--blue);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
@media (min-width:960px){
  .faq-wrap{grid-template-columns:minmax(0,.78fr) minmax(0,1.62fr);gap:56px;align-items:start}
  .faq-aside{position:sticky;top:96px}
}

/* Smoke alarm deadline bar at the very top of every page, counting down live to midnight 1 January 2027 */
.topbar{display:block;background:var(--navy);color:#FFFFFF;text-decoration:none;font-family:var(--f-display)}
.topbar__in{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 18px;padding-top:10px;padding-bottom:10px}
.topbar__msg{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:.96rem;line-height:1.25;text-align:center}
.topbar__msg .ic{flex:none;width:22px;height:22px;color:var(--warm)}
.topbar__short{display:none}
.topbar__timer{display:inline-flex;gap:6px}
.tb{display:inline-grid;justify-items:center;min-width:46px;padding:5px 6px 4px;border-radius:10px;background:rgba(255,255,255,.1);line-height:1}
.tb b{font-weight:800;font-size:1.18rem;color:var(--warm);font-variant-numeric:tabular-nums}
.tb small{margin-top:3px;font-size:.6rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#C9D6EE}
.topbar__go{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 14px;border-radius:999px;background:var(--warm);color:var(--navy);font-weight:800;font-size:.9rem;white-space:nowrap}
.topbar__go .ic{width:18px;height:18px}
.topbar:hover,.topbar:visited{color:#FFFFFF}
@media (hover:hover){.topbar:hover .topbar__go{background:#FFD47A}}
.topbar:focus-visible{outline:3px solid var(--warm);outline-offset:-3px}
.pg-smoke-alarm .topbar{display:none}
@media (max-width:640px){
  .topbar__in{gap:8px 10px;padding-top:9px;padding-bottom:10px}
  .topbar__long{display:none}
  .topbar__short{display:inline}
  .topbar__msg{width:100%;justify-content:center;font-size:.88rem}
  .topbar__timer{gap:5px}
  .tb{min-width:40px;padding:4px 5px 3px}
  .tb b{font-size:1.05rem}
  .topbar__go{min-height:34px;padding:0 12px;font-size:.84rem}
}

/* Smoke alarm page: the same live countdown, large, in the page header */
.countdown--live{display:inline-flex;align-items:stretch;gap:0;padding:16px 6px}
.cd{display:grid;justify-items:center;align-content:center;min-width:76px;padding:0 14px}
.cd + .cd{border-left:1px solid var(--rail)}
.cd b{font-family:var(--f-display);font-weight:800;font-size:clamp(2.1rem,1.6rem + 1.8vw,3rem);line-height:1;letter-spacing:-.03em;color:var(--navy);font-variant-numeric:tabular-nums}
.cd small{margin-top:7px;font-family:var(--f-display);font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
@media (max-width:480px){.countdown--live{padding:12px 2px}.cd{min-width:0;padding:0 11px}.cd small{font-size:.66rem}}

/* Contact: four ways to get in touch sit two by two */
@media (min-width:760px){.ways{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* About: Dan's cut out photo standing on the bottom edge of the hero panel */
.page-hero--dan{padding-bottom:0}
.page-hero--dan .page-hero__in{grid-template-columns:minmax(0,1fr);align-items:end;gap:10px}
.page-hero__txt{display:grid;gap:18px;justify-items:start}
.hero-dan{position:relative;display:block;justify-self:center;width:min(86%,340px);margin-top:4px}
.hero-dan::before{content:"";position:absolute;left:0;right:0;bottom:0;height:54%;border-radius:clamp(26px,4vw,48px) clamp(26px,4vw,48px) 0 0;background:#DCE7F7}
.hero-dan img{position:relative;display:block;width:100%;height:auto}
@media (min-width:860px){
  .page-hero--dan .page-hero__in{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);column-gap:clamp(24px,4vw,64px)}
  .page-hero--dan .page-hero__txt{align-self:center;padding-bottom:clamp(44px,5.5vw,84px)}
  .hero-dan{justify-self:end;width:min(100%,460px);margin-top:0}
}

/* Touch feel (pressFeel in site.js). On touch screens buttons and links sink under the finger,
   change colour while held, then spring back, or stay down while the next page loads.
   Hover styles only apply on devices with a mouse, so nothing stays stuck after a tap */
.btn,.round-btn,.icon-btn,.back-btn,.menu-btn,.sheet__close,.proj-btn,.sheet__proj,.copy,.toast__go,.notice,.chiprow a,.core-chips button,.svc-chip,.opt,.day,.tile,.stepper__ctl button,.ladder--pick button,.fix__tabs button,.daynight,.upload,.svc-row,.sheet__list a,.ready__row,.faq summary{-webkit-user-select:none;user-select:none}
.svc-row,.sheet__list a,.sheet__small a,.svc-panel__list a{transform-origin:left center}
.is-pressed,.is-pressed span,.is-pressed .tile__in,.is-pressed .svc-row__go{transition-duration:0s!important}
.btn--primary.is-pressed{background:var(--navy-2);box-shadow:0 2px 8px rgba(0,25,69,.16)}
.btn--ghost.is-pressed,.round-btn.is-pressed,.icon-btn.is-pressed,.back-btn.is-pressed,.menu-btn.is-pressed,.sheet__close.is-pressed,.proj-btn.is-pressed,.sheet__proj.is-pressed,.upload.is-pressed{background:var(--mist);border-color:var(--navy)}
.way--call .btn--ghost.is-pressed,.btn--outline-light.is-pressed,.copy.is-pressed{background:rgba(255,255,255,.14);border-color:var(--on-navy)}
.btn--light.is-pressed,.toast__go.is-pressed{background:#E6EDF8}
.notice.is-pressed,.chiprow a.is-pressed{border-color:var(--navy)}
.core-chips button.is-pressed{border-color:var(--navy);background:var(--ice-2)}
.svc-chip.is-pressed span,.opt.is-pressed span,.day.is-pressed span,.tile.is-pressed .tile__in,.ready__row.is-pressed{border-color:var(--rail-2)}
.stepper__ctl button.is-pressed{background:var(--ice)}
.fix__tabs button.is-pressed{background:rgba(255,255,255,.7)}
.svc-panel__list a.is-pressed{background:var(--cloud)}
.sheet__list a.is-pressed,.sheet__small a.is-pressed{color:var(--blue)}
.svc-row.is-pressed .svc-row__go{background:var(--navy);border-color:var(--navy);color:#FFFFFF}
.faq details:has(> summary.is-pressed){border-color:var(--rail-2)}
.way__big.is-pressed{color:#DCE6F7}

/* Polish pass */
/* Countdown numbers keep their space before the script fills them, so nothing jumps on load */
.is-wait{visibility:hidden}
/* Phone numbers never break across two lines */
a[href^="tel:"]{white-space:nowrap}
.icard h2{font-family:var(--f-display);font-weight:700;font-size:1.06rem;line-height:1.3;letter-spacing:-.012em;color:var(--navy)}
/* Bigger tap areas on small links, with nothing moving on screen */
.contact-list li{padding:0}
.contact-list__val{padding:15px 0}
.trust a{padding-block:6px;margin-block:-6px}
.crumbs a{display:inline-block;padding-block:8px;margin-block:-8px}
.faq-proof a{display:inline-block;padding-block:3px}
@media (max-width:520px){
  .contact-list .copy{display:none}
  .contact-list__val{font-size:.97rem}
}
/* Shown only on touch screens, or only where there's a mouse */
@media (hover:hover) and (pointer:fine){.touch-only{display:none!important}}
@media (hover:none),(pointer:coarse){.desk-only{display:none!important}}
/* Dan beside the line about him in the home hero, and beside his name where he signs off */
.hero-by{display:flex;align-items:center;gap:16px}
.hero-by__pic,.sign__pic{flex:none;display:block;border-radius:50%;overflow:hidden;background:#DCE7F7;box-shadow:0 0 0 3px var(--paper),var(--shadow-sm)}
.hero-by__pic{width:68px;height:68px}
.hero-by__pic img,.sign__pic img{display:block;width:100%;height:100%;object-fit:cover}
.sign--pic{display:flex;align-items:center;gap:14px}
.sign__pic{width:56px;height:56px}
.sign__txt{display:grid;gap:2px}
@media (max-width:520px){.hero-by{gap:14px}.hero-by__pic{width:60px;height:60px}}
.nw{white-space:nowrap}
/* Service page headers: a real review beside the headline on wide screens */
.page-hero__aside{display:none}
@media (min-width:1040px){
  .page-hero--side .page-hero__in{grid-template-columns:minmax(0,1.35fr) minmax(0,.65fr);column-gap:clamp(32px,5vw,72px);align-items:center}
  .page-hero__aside{display:grid;gap:12px;justify-self:end;width:100%;max-width:400px}
}
.hero-review{background:var(--paper);border:1px solid var(--rail);box-shadow:var(--shadow)}
.page-hero__note{margin:0;padding-left:6px;font-family:var(--f-display);font-weight:600;font-size:.88rem;color:var(--muted)}
/* Licence badges: each licence number as a tidy badge in the site's own style. The whole
   badge opens the public register, so a customer can check the number for themselves */
.lics{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:10px;width:fit-content;max-width:100%}
.lics li{display:block;min-width:0}
.lic{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:9px 16px 9px 9px;border-radius:16px;border:1px solid var(--rail);background:var(--paper);box-shadow:var(--shadow-sm);color:var(--navy);font-family:var(--f-body);font-weight:400;font-size:1rem;line-height:1.4;text-decoration:none}
.lic__ic{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--navy);color:var(--gold)}
.lic__ic svg{display:block;width:19px;height:16px}
.lic__txt{display:grid;gap:1px;min-width:0}
.lic__txt small{font-size:.8rem;line-height:1.3;color:var(--muted);text-wrap:balance}
.lic__txt b{font-family:var(--f-display);font-weight:700;font-size:1.04rem;line-height:1.25;letter-spacing:.02em;color:var(--navy)}
.lic__go{flex:none;color:var(--blue)}
@media (hover:hover){.lic:hover{border-color:var(--navy);color:var(--navy)}}
.foot .lics{gap:10px;margin-top:36px}
.foot .lic{border-color:rgba(255,255,255,.16);background:rgba(255,255,255,.05);box-shadow:none;color:#FFFFFF}
.foot .lic__ic{background:rgba(255,255,255,.1)}
.foot .lic__txt small{color:var(--on-navy-muted)}
.foot .lic__txt b{color:#FFFFFF}
.foot .lic__go{color:#A9BEE3}
@media (hover:hover){.foot a.lic:hover{border-color:rgba(255,255,255,.45);background:rgba(255,255,255,.09);color:#FFFFFF;text-decoration:none}}
.foot .lics + .foot__base{margin-top:22px}
.facts .lics{width:100%;max-width:400px}
.lic-note{display:grid;gap:14px;margin-top:16px;padding:16px 18px;border-radius:16px;background:var(--paper);border-left:4px solid var(--blue);font-size:.96rem;line-height:1.5}
.lic-note p{margin:0}
.band:not(.band--linen) .lic-note{background:var(--cloud)}
.lic-note .lic{box-shadow:none;background:var(--ice-2)}
/* Side by side and the same width where there's room, stacked and the same width where there isn't */
@media (min-width:761px){.foot .lics,.lic-note .lics{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:1fr}}
@media (max-width:560px){.lics{width:100%}}
@media (max-width:420px){.lic{grid-template-columns:40px minmax(0,1fr);padding-right:12px}.lic__go{display:none}}
/* Home FAQs: the panel beside the questions now lists both licences, so on short screens it
   drops its intro line, and on very short ones it stops following the page, so the call
   button is never cut off */
@media (min-width:960px) and (max-height:780px){.faq-aside__lead{display:none}}
@media (min-width:960px) and (max-height:664px){.faq-aside{position:static}}
