@font-face{font-family:"Albert Sans";font-weight:400;font-display:swap;src:url(/fonts/albert-sans-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Albert Sans";font-weight:500;font-display:swap;src:url(/fonts/albert-sans-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Albert Sans";font-weight:600;font-display:swap;src:url(/fonts/albert-sans-latin-600-normal.woff2) format("woff2")}
body{margin:0;background:#fff}.screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.etw{
  --etw-dark:#141920; --etw-blue:#134CA1; --etw-grey:#6E6E70; --etw-teal:#1E6C93;
  --etw-line:#dfe2e6; --etw-soft:#f3f4f6; --etw-ink2:#1b222b;
  --etw-dline:rgba(255,255,255,.12); --etw-dtext:rgba(255,255,255,.72);
  --etw-container:1140px;
  --etw-inner:calc(min(var(--etw-container),100%) - 30px);
  --etw-ease:cubic-bezier(.2,.7,.1,1);
  font-family:"Albert Sans",system-ui,sans-serif;color:var(--etw-dark);
  font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased;
}
.etw *,.etw *::before,.etw *::after{box-sizing:border-box}
/* Resets carry no extra specificity so component rules always win */
.etw :where(img){display:block;max-width:100%}
.etw :where(h1,h2,h3,p,figure,blockquote,dl,dd){margin:0}
.etw :where(h1,h2,h3){font-weight:600;letter-spacing:-.02em;text-wrap:balance}
.etw :where(a){color:inherit}
.etw-container{width:100%;max-width:var(--etw-container);margin:0 auto;padding:0 15px}
@media (max-width:1199px){.etw{--etw-container:960px}}
@media (max-width:991px){.etw{--etw-container:720px}}
@media (max-width:767px){.etw{--etw-container:540px}}

.etw-title{font-size:clamp(34px,3.6vw,54px);line-height:1.04;letter-spacing:-.03em}
.etw-accent{color:var(--etw-blue)}
.etw-head{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:40px}
.etw-head p{max-width:400px;font-size:15px;line-height:1.6;color:var(--etw-grey)}

/* Square-edged button; arrow nudges on hover */
.etw-btn{display:inline-flex;align-items:center;gap:12px;background:var(--etw-blue);color:#fff !important;text-decoration:none;font-weight:600;font-size:16px;line-height:1;padding:18px 26px 18px 28px;transition:background-color .3s var(--etw-ease)}
.etw-btn svg,.etw-link svg{width:16px;height:16px;flex:none;transition:transform .4s var(--etw-ease)}
.etw-btn:hover,.etw-btn:focus-visible{background:var(--etw-teal)}
.etw-btn:hover svg,.etw-btn:focus-visible svg,.etw-link:hover svg,.etw-link:focus-visible svg{transform:translateX(4px)}
/* Text link: underline draws in */
.etw-link{display:inline-flex;align-items:center;gap:10px;font-weight:600;font-size:15px;text-decoration:none;color:var(--etw-dark);padding-bottom:3px;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .45s var(--etw-ease)}
.etw-link:hover,.etw-link:focus-visible{background-size:100% 1px}
.etw a:focus-visible,.etw button:focus-visible{outline:2px solid var(--etw-teal);outline-offset:3px}

/* ================= OPENING: the logo, a short line, then the cover lifts in strips ================= */
.etw-intro{display:none;position:fixed;inset:0;z-index:100000;cursor:pointer}
html.etw-intro-on .etw-intro{display:block;animation:etw-intro-kill 0s 5s forwards}
@keyframes etw-intro-kill{to{visibility:hidden;pointer-events:none}}
.etw-intro__cols{position:absolute;inset:0;display:grid;grid-template-columns:1fr repeat(6,calc(var(--etw-inner) / 6)) 1fr}
.etw-intro__cols i{margin-right:-1px;background:var(--etw-dark);transform-origin:top center;transition:transform 1.05s var(--etw-ease) calc(var(--k) * 65ms)}
.etw-intro.is-out .etw-intro__cols i{transform:scaleY(0)}
.etw-intro__mark{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;transition:opacity .45s var(--etw-ease),transform .7s var(--etw-ease)}
.etw-intro__mark img{width:clamp(150px,15vw,220px);height:auto;opacity:0;transform:translateY(14px);transition:opacity .9s var(--etw-ease),transform 1.1s var(--etw-ease)}
.etw-intro__bar{position:relative;width:120px;height:1px;background:rgba(255,255,255,.18);overflow:hidden}
.etw-intro__bar::after{content:"";position:absolute;inset:0;background:#fff;transform:scaleX(0);transform-origin:left center;transition:transform 1s var(--etw-ease) .25s}
.etw-intro.is-in .etw-intro__mark img{opacity:1;transform:none}
.etw-intro.is-in .etw-intro__bar::after{transform:none}
.etw-intro.is-out .etw-intro__mark{opacity:0;transform:translateY(-16px)}
@media (prefers-reduced-motion:reduce){.etw-intro{display:none !important}}

/* ================= HERO: full-width photo, setting-out lines, text tile ================= */
.etw-hero{position:relative;overflow:hidden;background:#d9dbde}
.etw-hero__media{position:relative}
.etw-hero__img{width:100%;height:max(460px,41.8vw);object-fit:cover;object-position:60% 50%}
/* Soft gradient shade behind the words: breaks up the bright photo without boxing the text in */
.etw-hero__shade{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 62% 95% at 14% 52%,rgba(20,25,32,.62) 0%,rgba(20,25,32,.42) 42%,rgba(20,25,32,0) 78%),linear-gradient(90deg,rgba(20,25,32,.28) 0%,rgba(20,25,32,0) 58%)}
.etw-hero__content{position:absolute;inset:0;display:flex;align-items:center}
/* The text sits in one "tile" of the grid: it ends exactly on the 4th line */
.etw-hero__text{width:66.6667%}
.etw-hero h1{font-size:clamp(42px,4.9vw,74px);line-height:1;letter-spacing:-.035em;color:#fff;margin-bottom:26px}
.etw-line{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
.etw-line>span{display:inline-block}
.etw-hero__sub{color:rgba(255,255,255,.88);font-size:18px;line-height:1.55;max-width:27em;margin-bottom:32px}
/* Scroll cue, bottom right on the container edge (Victoria's down arrow, Chad Scales' "Scroll") */
.etw-hero__scroll{position:absolute;bottom:22px;right:calc(50% - var(--etw-inner) / 2);display:flex;align-items:center;gap:10px;font-size:13px;font-weight:600;color:#fff;text-decoration:none;letter-spacing:.02em}
.etw-hero__scroll svg{width:14px;height:14px;transition:transform .4s var(--etw-ease)}
.etw-hero__scroll:hover svg{transform:translateY(3px)}
@media (max-width:991px){.etw-hero__text{width:83.3333%}.etw-hero__sub{font-size:17px}}
/* Mobile: photo first, words on white underneath */
@media (max-width:767px){
  .etw-hero{background:#fff}
  .etw-hero__img{height:clamp(390px,108vw,460px);object-position:64% 50%}
  .etw-hero__content{position:static;display:block}
  .etw-hero__text{width:auto;padding:30px 0 44px}
  .etw-hero__scroll,.etw-hero__shade{display:none}
  .etw-hero h1{font-size:clamp(32px,9.2vw,38px);color:var(--etw-dark);margin-bottom:14px}
  .etw-hero__sub{color:var(--etw-grey);font-size:16px;margin-bottom:26px}
}

/* ================= VALUE STRIP: built layer by layer ================= */
.etw-layers{padding:52px 0;background:#fff}
.etw-layers__grid{position:relative;display:grid;grid-template-columns:repeat(5,1fr);border-bottom:1px solid var(--etw-line)}
.etw-layers__grid::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--etw-dark);transform-origin:left center}
.etw-layers__head{padding:30px 28px 30px 0}
.etw-layers__head h2{font-size:30px;line-height:1.08;letter-spacing:-.03em}
.etw-layer{position:relative;padding:30px 24px 32px;border-left:1px solid var(--etw-line)}
/* A square marker sits on the top rule at each stage */
.etw-layer::before{content:"";position:absolute;top:-5px;left:-5px;width:9px;height:9px;background:var(--etw-blue);box-shadow:inset 0 0 0 1.5px var(--etw-blue)}
.etw-layer__n{display:block;font-size:44px;font-weight:600;line-height:1;letter-spacing:-.03em;color:var(--etw-blue);font-variant-numeric:tabular-nums;margin-bottom:18px}
.etw-layer h3{font-size:22px;line-height:1.2;margin-bottom:8px}
.etw-layer p{font-size:14px;line-height:1.55;color:var(--etw-grey)}
@media (max-width:991px){
  .etw-layers__grid{grid-template-columns:repeat(4,1fr)}
  .etw-layers__head{grid-column:1/-1;padding:28px 0 24px;border-bottom:1px solid var(--etw-line)}
  .etw-layer:nth-child(2){border-left:0;padding-left:0}
}
@media (max-width:767px){
  .etw-layers{padding:8px 0 44px}
  .etw-layers__grid{grid-template-columns:1fr 1fr}
  .etw-layer{padding:22px 16px 24px}
  .etw-layer:nth-child(2),.etw-layer:nth-child(4){border-left:0;padding-left:0}
  .etw-layer:nth-child(2),.etw-layer:nth-child(3){border-bottom:1px solid var(--etw-line)}
  .etw-layer__n{margin-bottom:12px;font-size:36px}
  .etw-layer:nth-child(2)::before,.etw-layer:nth-child(4)::before{left:0}
  .etw-layer h3{font-size:20px}
}

/* ================= ABOUT: large photo + editorial text ================= */
.etw-about{padding:80px 0;background:var(--etw-soft)}
.etw-about__row{display:grid;grid-template-columns:7fr 5fr;gap:64px;align-items:center}
.etw-about__media{overflow:hidden;aspect-ratio:5/4}
.etw-about__media img{width:100%;height:100%;object-fit:cover}
.etw-about .etw-title{margin-bottom:22px}
.etw-about__text{color:var(--etw-grey);font-size:15.5px;margin-bottom:28px}
.etw-about__text p+p{margin-top:14px}
.etw-spec{border-top:1px solid var(--etw-dark);margin-bottom:28px}
.etw-spec div{display:grid;grid-template-columns:96px 1fr;gap:16px;padding:12px 0;border-bottom:1px solid var(--etw-line);font-size:14px;line-height:1.5}
.etw-spec dt{color:var(--etw-grey)}
.etw-spec dd{font-weight:600}
@media (max-width:991px){.etw-about__row{grid-template-columns:1fr 1fr;gap:40px}}
@media (max-width:767px){.etw-about{padding:56px 0}.etw-about__row{grid-template-columns:1fr;gap:30px}}

/* ================= SERVICES: three equal tiles in one row ================= */
.etw-services{padding:80px 0;background:var(--etw-dark);color:#fff}
.etw-services .etw-head p{color:var(--etw-dtext)}
.etw-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.etw-tile{position:relative;display:flex;flex-direction:column;background:var(--etw-ink2);color:#fff;text-decoration:none}
.etw-tile__media{position:relative;overflow:hidden;aspect-ratio:1/1;background:#222a33}
/* A tile drawn as a set-out plan, where no photo is used (Commercial) */
.etw-tile__media--plan{color:rgba(255,255,255,.16)}
.etw-tile__media--plan svg{display:block;width:100%;height:100%;transition:transform 1.4s var(--etw-ease),color .6s}
.etw-tile:hover .etw-tile__media--plan{color:rgba(143,179,232,.5)}
.etw-tile:hover .etw-tile__media--plan svg{transform:scale(1.06)}
.etw-tile__media img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--etw-ease)}
.etw-tile:hover .etw-tile__media img,.etw-tile:focus-visible .etw-tile__media img{transform:scale(1.04)}
.etw-tile__label{position:relative;flex:1;display:flex;flex-direction:column;padding:22px 22px 26px}
/* The joint line: a short blue rule that runs the full width on hover */
.etw-tile__label::before{content:"";position:absolute;left:0;top:0;height:2px;width:40px;background:var(--etw-blue);transition:width .7s var(--etw-ease)}
.etw-tile:hover .etw-tile__label::before,.etw-tile:focus-visible .etw-tile__label::before{width:100%}
.etw-tile__top{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.etw-tile__n{font-size:13px;font-weight:600;color:#8fb3e8;font-variant-numeric:tabular-nums;letter-spacing:.04em}
.etw-tile__top svg{width:18px;height:18px;transition:transform .5s var(--etw-ease)}
.etw-tile:hover .etw-tile__top svg,.etw-tile:focus-visible .etw-tile__top svg{transform:translateX(5px)}
.etw-tile h3{font-size:21px;line-height:1.2;margin-bottom:8px}
.etw-tile p{font-size:14px;line-height:1.55;color:var(--etw-dtext)}
@media (max-width:991px){.etw-tiles{grid-template-columns:1fr;gap:14px}.etw-tile__media{aspect-ratio:16/9}}
@media (max-width:767px){
  .etw-services{padding:56px 0}
  .etw-head{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:28px}
}
@media (max-width:575px){.etw-tiles{gap:12px}.etw-tile__media{aspect-ratio:16/10}.etw-tile__label{padding:20px 20px 22px}}

/* ================= PROJECTS: editorial gallery ================= */
.etw-projects{padding:80px 0;background:#fff}
.etw-gallery{display:grid;grid-template-columns:repeat(12,1fr);grid-template-rows:270px 270px;gap:10px;list-style:none;margin:0;padding:0}
.etw-gallery li:nth-child(1){grid-column:1/7;grid-row:1/3}
.etw-gallery li:nth-child(2){grid-column:7/10}
.etw-gallery li:nth-child(3){grid-column:10/13}
.etw-gallery li:nth-child(4){grid-column:7/13}
.etw-shot{all:unset;box-sizing:border-box;position:relative;display:block;width:100%;height:100%;overflow:hidden;cursor:zoom-in;background:var(--etw-soft)}
.etw-shot img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--etw-ease)}
.etw-shot:hover img,.etw-shot:focus-visible img{transform:scale(1.02)}
.etw-shot:focus-visible{outline:2px solid var(--etw-teal);outline-offset:3px}
/* Caption sits on the photo like a label on a drawing */
.etw-shot__cap{position:absolute;left:0;bottom:0;display:flex;align-items:center;gap:12px;background:#fff;color:var(--etw-dark);font-size:13px;font-weight:600;line-height:1;padding:11px 14px}
.etw-shot__cap b{font-weight:600;color:var(--etw-blue);font-variant-numeric:tabular-nums}
.etw-shot__cap svg{width:14px;height:14px;transition:transform .45s var(--etw-ease)}
.etw-shot:hover .etw-shot__cap svg,.etw-shot:focus-visible .etw-shot__cap svg{transform:translate(2px,-2px)}
@media (max-width:991px){
  .etw-gallery{grid-template-columns:1fr 1fr;grid-template-rows:380px 260px 280px}
  .etw-gallery li:nth-child(1){grid-column:1/3;grid-row:auto}
  .etw-gallery li:nth-child(2){grid-column:1/2}.etw-gallery li:nth-child(3){grid-column:2/3}
  .etw-gallery li:nth-child(4){grid-column:1/3}
}
@media (max-width:767px){
  .etw-projects{padding:56px 0}
  .etw-gallery{grid-template-rows:300px 190px 220px;gap:8px}
  .etw-shot__cap{font-size:12px;padding:9px 11px;gap:8px}
  .etw-shot__cap svg{display:none}
}
.etw-lightbox{border:0;padding:0;background:transparent;max-width:min(92vw,1100px);max-height:92vh}
.etw-lightbox::backdrop{background:rgba(20,25,32,.9)}
.etw-lightbox img{max-width:min(92vw,1100px);max-height:84vh;width:auto;height:auto;margin:0 auto}
.etw-lightbox__bar{display:flex;justify-content:center;gap:8px;margin-top:12px}
.etw-lightbox__bar button{font:600 14px/1 "Albert Sans",sans-serif;color:#fff;background:transparent;border:1px solid rgba(255,255,255,.4);padding:11px 16px;cursor:pointer;transition:background-color .3s,color .3s}
.etw-lightbox__bar button:hover{background:#fff;color:var(--etw-dark)}

/* ================= TESTIMONIALS: one review at a time, editorial ================= */
.etw-testi{padding:80px 0;background:var(--etw-soft)}
.etw-testi__row{display:grid;grid-template-columns:4fr 8fr;gap:64px;align-items:start}
.etw-testi .etw-title{margin-bottom:18px}
.etw-rating{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;padding:14px 0;border-top:1px solid var(--etw-dark);border-bottom:1px solid var(--etw-line);margin-bottom:28px}
.etw-rating__stars{display:flex;gap:2px;color:var(--etw-blue)}
.etw-rating__stars svg{width:15px;height:15px}
.etw-controls{display:flex;align-items:center;gap:10px}
.etw-controls button{width:46px;height:46px;border:1px solid #c6cbd2;background:transparent;color:var(--etw-dark);display:grid;place-items:center;cursor:pointer;transition:background-color .3s,border-color .3s,color .3s}
.etw-controls button:hover{background:var(--etw-dark);border-color:var(--etw-dark);color:#fff}
.etw-controls button svg{width:18px;height:18px}
.etw-count{margin-left:10px;display:flex;align-items:center;gap:14px;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.04em}
.etw-count__bar{position:relative;width:96px;height:1px;background:#c6cbd2}
.etw-count__bar span{position:absolute;left:0;top:-.5px;height:2px;width:100%;background:var(--etw-blue);transform-origin:left center;transform:scaleX(var(--p,0));transition:transform .6s var(--etw-ease)}
.etw-slides{display:grid;align-items:center;align-self:stretch}
.etw-carousel.is-ready .etw-slide{grid-area:1/1;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .6s var(--etw-ease),transform .7s var(--etw-ease),visibility 0s .7s}
.etw-carousel.is-ready .etw-slide.is-active{opacity:1;visibility:visible;transform:none;transition:opacity .7s var(--etw-ease) .1s,transform .8s var(--etw-ease) .1s,visibility 0s}
.etw-slide+.etw-slide{margin-top:40px}
.etw-carousel.is-ready .etw-slide+.etw-slide{margin-top:0}
.etw-slide::before{content:"";display:block;width:40px;height:2px;background:var(--etw-blue);margin-bottom:26px}
.etw-slide blockquote{font-size:clamp(19px,1.6vw,23px);line-height:1.5;letter-spacing:-.01em;margin-bottom:26px}
.etw-slide figcaption{font-size:14px;color:var(--etw-grey)}
.etw-slide cite{font-style:normal;font-weight:600;color:var(--etw-dark)}
@media (max-width:991px){.etw-testi__row{grid-template-columns:1fr;gap:30px}}
@media (max-width:767px){.etw-testi{padding:56px 0}.etw-rating{margin-bottom:22px}.etw-slides{align-items:start}}

/* ================= CLOSING CTA + AREAS ================= */
.etw-cta{padding:80px 0;background:var(--etw-dark);color:#fff}
.etw-cta__row{display:grid;grid-template-columns:5fr 7fr;gap:64px;align-items:start}
.etw-cta h2{font-size:clamp(38px,4.6vw,68px);line-height:1;letter-spacing:-.03em;margin-bottom:20px}
.etw-cta__lead{color:var(--etw-dtext);font-size:16px;margin-bottom:32px;max-width:26em}
.etw-cta__lead a{color:#fff;font-weight:600;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.35);transition:border-color .3s}
.etw-cta__lead a:hover{border-color:#fff}
.etw-areas h3{font-size:15px;font-weight:600;letter-spacing:0;padding-bottom:16px;border-bottom:1px solid rgba(255,255,255,.55);margin-bottom:22px}
/* Suburbs as one run of text, divided by quiet slashes */
.etw-areas ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;row-gap:6px;font-size:clamp(18px,1.55vw,22px);line-height:1.5;letter-spacing:-.01em}
.etw-areas li{color:rgba(255,255,255,.8)}
.etw-areas li:not(:last-child)::after{content:"/";margin:0 .55em;color:rgba(255,255,255,.26)}
.etw-areas li.is-base{color:#fff;font-weight:600}
.etw-areas li a{color:#fff;text-decoration:none;background:linear-gradient(rgba(255,255,255,.4),rgba(255,255,255,.4)) 0 100%/100% 1px no-repeat;transition:background-size .3s}
.etw-areas li a:hover{background-image:linear-gradient(#fff,#fff)}
.etw-areas p{margin-top:22px;padding-top:16px;border-top:1px solid var(--etw-dline);font-size:14px;color:var(--etw-dtext)}
@media (max-width:991px){.etw-cta__row{grid-template-columns:1fr;gap:44px}}
@media (max-width:767px){.etw-cta{padding:56px 0}.etw-areas ul{font-size:17px}}

/* ================= INNER PAGES ================= */
/* Page heroes. --page: the home hero, shorter. --ondark: every hero set on the dark ground */
.etw-hero--page .etw-hero__img{height:clamp(380px,34vw,540px)}
.etw-hero--page h1{font-size:clamp(40px,4.4vw,66px)}
.etw-hero--ondark{background:var(--etw-dark)}
.etw-hero--ondark .etw-hero__content{position:static;padding:84px 0 72px}
.etw-hero--ondark .etw-hero__text{width:auto;max-width:780px}
.etw-crumbs{display:flex;flex-wrap:wrap;gap:8px;font-size:13px;font-weight:500;color:rgba(255,255,255,.7);margin-bottom:22px}
.etw-crumbs a{text-decoration:none;color:inherit;transition:color .3s}.etw-crumbs a:hover{color:#fff}
.etw-crumbs span[aria-hidden]{opacity:.5}

/* Band: title, then an edge-to-edge strip of photos */
.etw-hero--band .etw-hero__content{padding-bottom:56px}
.etw-band{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0;padding:0 0 8px;list-style:none;background:var(--etw-dark)}
.etw-band li{height:clamp(240px,25vw,400px)}

/* Split: title on the left, a full-height photo or drawing on the right */
.etw-hero--split{display:grid;grid-template-columns:1fr 1fr;min-height:clamp(520px,44vw,680px)}
.etw-hero--split .etw-hero__content{display:flex;align-items:center;padding:80px 56px 80px max(15px,calc(50vw - var(--etw-container) / 2 + 15px))}
.etw-hero--split .etw-hero__text{max-width:560px}
.etw-hero__side{position:relative;overflow:hidden;background:var(--etw-ink2)}
.etw-hero__side img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.etw-hero__side figcaption{position:absolute;left:0;bottom:0;background:var(--etw-dark);color:rgba(255,255,255,.8);font-size:12.5px;font-weight:600;padding:10px 14px}

/* Type: one giant word does the work, the photo sits inset at its real size */
.etw-hero--type .etw-hero__text{max-width:none}
.etw-giant{font-size:clamp(56px,11vw,176px) !important;line-height:.9 !important;letter-spacing:-.05em !important}
.etw-hero__row{display:grid;grid-template-columns:1fr 362px;gap:56px;align-items:end;margin-top:44px;padding-top:28px;border-top:1px solid var(--etw-dline)}
.etw-hero__row .etw-hero__sub{margin-bottom:26px}
.etw-inset{margin:0}
.etw-inset img{width:100%;height:auto}
.etw-inset figcaption{font-size:12.5px;color:rgba(255,255,255,.6);margin-top:10px}

/* Big phone line (Contact) */
.etw-bigtel{display:inline-block;font-size:clamp(40px,6.2vw,96px);font-weight:600;letter-spacing:-.045em;line-height:1;color:#fff !important;text-decoration:none;padding-bottom:10px;background:linear-gradient(rgba(255,255,255,.25),rgba(255,255,255,.25)) 0 100%/100% 2px no-repeat;transition:background-size .5s var(--etw-ease)}
.etw-bigtel:hover{background-image:linear-gradient(#fff,#fff)}

@media (max-width:991px){
  .etw-hero--split{grid-template-columns:1fr;min-height:0}
  .etw-hero__side{order:-1;height:clamp(300px,60vw,460px)}
  .etw-hero--split .etw-hero__content{padding:56px 15px 60px;max-width:calc(var(--etw-container));margin:0 auto;width:100%}
  .etw-hero__row{grid-template-columns:1fr;gap:32px}
  .etw-inset{max-width:362px}
}
@media (max-width:767px){
  .etw-hero--page .etw-hero__img{height:clamp(300px,80vw,380px)}
  .etw-hero--page .etw-crumbs{color:var(--etw-grey)}
  .etw-hero--ondark .etw-hero__content{padding:56px 0 48px}
  .etw-hero--ondark h1{color:#fff}
  .etw-hero--ondark .etw-hero__sub{color:var(--etw-dtext)}
  .etw-hero--ondark .etw-crumbs{color:rgba(255,255,255,.7)}
  .etw-hero--split .etw-hero__content{padding:40px 15px 48px}
  .etw-band{grid-template-columns:1fr 1fr}
  .etw-band li{height:180px}.etw-band li:first-child{grid-column:1/-1;height:240px}
}

/* Section shell */
.etw-sec{padding:80px 0;background:#fff}
.etw-sec--soft{background:var(--etw-soft)}
.etw-sec--dark{background:var(--etw-dark);color:#fff}
.etw-sec--dark .etw-head p,.etw-sec--dark .etw-prose p{color:var(--etw-dtext)}
.etw-sec--tight{padding:56px 0}
@media (max-width:767px){.etw-sec{padding:56px 0}.etw-sec--tight{padding:40px 0}}

/* Overview: prose + spec list */
.etw-overview{display:grid;grid-template-columns:7fr 5fr;gap:64px;align-items:start}
.etw-overview .etw-title{margin-bottom:22px}
.etw-prose p{font-size:17px;line-height:1.7;color:var(--etw-grey);max-width:60ch}
.etw-prose p+p{margin-top:16px}
.etw-prose h2{font-size:21px;line-height:1.3;font-weight:600;color:var(--etw-dark);margin:36px 0 12px}
.etw-prose a{color:var(--etw-blue);text-decoration:underline;text-underline-offset:2px}
.etw-aside .etw-spec{margin-bottom:24px}
.etw-media-frame{overflow:hidden;background:var(--etw-soft)}
.etw-spec--dark{border-top-color:rgba(255,255,255,.55);margin:0}
.etw-spec--dark div{border-bottom-color:var(--etw-dline)}
.etw-spec--dark dt{color:var(--etw-dtext)}
.etw-spec--dark dd{color:#fff}
@media (max-width:991px){.etw-overview{grid-template-columns:1fr;gap:36px}}

/* Scope: numbered list on hairlines */
.etw-scope{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;column-gap:48px;border-top:1px solid var(--etw-dark);counter-reset:scope}
.etw-scope li{counter-increment:scope;display:grid;grid-template-columns:52px 1fr;align-items:baseline;padding:18px 0;border-bottom:1px solid var(--etw-line);font-size:18px;font-weight:500;line-height:1.35}
.etw-scope li::before{content:counter(scope,decimal-leading-zero);font-size:13px;font-weight:600;color:var(--etw-blue);font-variant-numeric:tabular-nums;letter-spacing:.04em}
@media (max-width:767px){.etw-scope{grid-template-columns:1fr}.etw-scope li{font-size:17px;padding:15px 0;grid-template-columns:44px 1fr}}

/* Photo row: equal frames, lightbox */
.etw-photos{display:grid;grid-template-columns:repeat(var(--cols,3),1fr);gap:10px;list-style:none;margin:0;padding:0}
.etw-photos li{aspect-ratio:4/5}
@media (max-width:767px){.etw-photos{grid-template-columns:1fr 1fr;gap:8px}.etw-photos li:first-child:nth-last-child(odd){grid-column:1/-1;aspect-ratio:4/3}}

/* Masonry gallery (Projects page): every photo at its own proportion */
.etw-masonry{columns:3 300px;column-gap:10px;list-style:none;margin:0;padding:0}
.etw-masonry li{break-inside:avoid;margin-bottom:10px}
.etw-masonry .etw-shot{height:auto}
.etw-masonry .etw-shot img{height:auto}
@media (max-width:767px){.etw-masonry{columns:2 150px;column-gap:8px}.etw-masonry li{margin-bottom:8px}}

/* Static review quotes */
.etw-quotes{display:grid;grid-template-columns:repeat(var(--cols,3),1fr);gap:40px}
.etw-quote{border-top:1px solid var(--etw-dark);padding-top:26px}
.etw-quote blockquote{font-size:17px;line-height:1.6;margin-bottom:18px}
.etw-quote figcaption{font-size:14px;color:var(--etw-grey)}
.etw-quote cite{font-style:normal;font-weight:600;color:var(--etw-dark)}
.etw-quote--lead blockquote{font-size:clamp(20px,1.9vw,26px);line-height:1.5;letter-spacing:-.01em}
@media (max-width:991px){.etw-quotes{grid-template-columns:1fr;gap:32px}}

/* Values (About): three short columns on rules */
.etw-values{display:grid;grid-template-columns:repeat(var(--cols,3),1fr);gap:40px}
.etw-values div{border-top:1px solid var(--etw-dark);padding-top:22px}
.etw-values h3{font-size:22px;line-height:1.2;margin-bottom:8px}
.etw-values p{font-size:15px;line-height:1.6;color:var(--etw-grey)}
@media (max-width:991px){.etw-values{grid-template-columns:repeat(min(var(--cols,3),2),1fr)}}
@media (max-width:767px){.etw-values{grid-template-columns:1fr;gap:26px}}

/* Other services: three text links on rules */
.etw-more{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.etw-more a{display:flex;flex-direction:column;gap:30px;padding:22px 0 24px;border-top:1px solid var(--etw-dark);text-decoration:none;color:var(--etw-dark)}
.etw-more__top{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:600;color:var(--etw-blue);font-variant-numeric:tabular-nums;letter-spacing:.04em}
.etw-more__top svg{width:18px;height:18px;color:var(--etw-dark);transition:transform .5s var(--etw-ease)}
.etw-more a:hover .etw-more__top svg,.etw-more a:focus-visible .etw-more__top svg{transform:translateX(5px)}
.etw-more strong{font-size:22px;font-weight:600;letter-spacing:-.02em;line-height:1.2;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;padding-bottom:3px;transition:background-size .45s var(--etw-ease);justify-self:start;align-self:flex-start}
.etw-more a:hover strong,.etw-more a:focus-visible strong{background-size:100% 1px}
@media (max-width:767px){.etw-more{grid-template-columns:1fr;gap:0}.etw-more a{gap:12px}}

/* Contact */
.etw-contact{display:grid;grid-template-columns:7fr 5fr;gap:64px;align-items:start}
.etw-form{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px}
.etw-form .is-full{grid-column:1/-1}
.etw-form label{display:block;font-size:14px;font-weight:600;margin-bottom:8px}
.etw-form label span{font-weight:400;color:var(--etw-grey)}
.etw-form input:not([type=submit]):not([type=checkbox]):not([type=radio]),.etw-form select,.etw-form textarea{width:100%;font:inherit;font-size:16px;color:var(--etw-dark);background:#fff;border:1px solid #c6cbd2;border-radius:0;padding:14px 16px;transition:border-color .25s,box-shadow .25s;-webkit-appearance:none;appearance:none}
.etw-form select{background-image:linear-gradient(45deg,transparent 50%,var(--etw-dark) 50%),linear-gradient(135deg,var(--etw-dark) 50%,transparent 50%);background-position:calc(100% - 22px) 52%,calc(100% - 16px) 52%;background-size:6px 6px;background-repeat:no-repeat;padding-right:44px}
.etw-form textarea{min-height:150px;resize:vertical}
.etw-form input[type=file]{font-size:14px;padding:12px}
.etw-form input:focus,.etw-form select:focus,.etw-form textarea:focus{outline:none;border-color:var(--etw-blue);box-shadow:0 0 0 1px var(--etw-blue)}
.etw-form__foot{grid-column:1/-1;display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:6px}
.etw-form__foot p{font-size:13px;color:var(--etw-grey)}
.etw-form button,.etw-form input[type=submit]{border:0;cursor:pointer;font-family:inherit}
.etw-details{border-top:1px solid var(--etw-dark)}
.etw-details div{padding:18px 0;border-bottom:1px solid var(--etw-line)}
.etw-details dt{font-size:13px;color:var(--etw-grey);margin-bottom:4px}
.etw-details dd{font-size:18px;font-weight:600;line-height:1.4}
.etw-details dd a{text-decoration:none;color:var(--etw-dark);background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .45s var(--etw-ease)}
.etw-details dd a:hover{background-size:100% 1px}
.etw-map{margin-top:24px;aspect-ratio:4/3;background:var(--etw-soft);border:0;width:100%;display:block;filter:grayscale(.35)}
@media (max-width:991px){.etw-contact{grid-template-columns:1fr;gap:48px}}
@media (max-width:575px){.etw-form{grid-template-columns:1fr}}

/* ================= SIGNATURE SECTIONS (one or two per inner page) ================= */
/* Statement: one review, set large on the dark ground */
.etw-statement blockquote{font-size:clamp(23px,2.35vw,34px);line-height:1.38;letter-spacing:-.015em;font-weight:500;max-width:34em}
.etw-statement blockquote::before{content:"";display:block;width:48px;height:2px;background:var(--etw-blue);margin-bottom:30px}
.etw-statement figcaption{margin-top:28px;font-size:14px;color:var(--etw-dtext)}
.etw-statement cite{font-style:normal;font-weight:600;color:#fff}
.etw-statement--plain blockquote{font-size:clamp(30px,3.6vw,54px);line-height:1.12;letter-spacing:-.03em;font-weight:600;max-width:20em}

/* Stats: big figures on a rule */
.etw-stats{display:grid;grid-template-columns:repeat(var(--cols,3),1fr);border-top:1px solid var(--etw-dark)}
.etw-stat{padding:28px 24px 30px;border-left:1px solid var(--etw-line)}
.etw-stat:first-child{border-left:0;padding-left:0}
.etw-stat dt{font-size:clamp(52px,5.6vw,88px);font-weight:600;line-height:1;letter-spacing:-.045em;color:var(--etw-dark);font-variant-numeric:tabular-nums;margin-bottom:12px}
.etw-stat dd{margin:0;font-size:15px;color:var(--etw-grey)}
@media (max-width:767px){.etw-stats{grid-template-columns:1fr}.etw-stat{border-left:0;padding:22px 0;border-bottom:1px solid var(--etw-line)}}

/* Steps: numbered columns on a rule */
.etw-steps{display:grid;grid-template-columns:repeat(var(--cols,3),1fr);border-top:1px solid var(--etw-dark)}
.etw-step{padding:28px 28px 30px;border-left:1px solid var(--etw-line)}
.etw-step:first-child{border-left:0;padding-left:0}
.etw-step b{display:block;font-size:44px;font-weight:600;line-height:1;letter-spacing:-.03em;color:var(--etw-blue);font-variant-numeric:tabular-nums;margin-bottom:18px}
.etw-step h3{font-size:22px;line-height:1.2;margin-bottom:8px}
.etw-step p{font-size:15px;line-height:1.6;color:var(--etw-grey)}
@media (max-width:767px){.etw-steps{grid-template-columns:1fr}.etw-step{border-left:0;padding:24px 0;border-bottom:1px solid var(--etw-line)}}

/* Tile layouts (Floor & Wall): line drawings of each bond */
.etw-patterns{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.etw-pattern{border-top:1px solid var(--etw-dark);padding-top:20px}
.etw-pattern__art{aspect-ratio:1;background:#fff;border:1px solid var(--etw-line);margin-bottom:18px;color:#8b95a1;overflow:hidden;transition:color .5s var(--etw-ease)}
.etw-pattern__art svg{display:block;width:100%;height:100%;transition:transform 1.4s var(--etw-ease)}
.etw-pattern:hover .etw-pattern__art{color:var(--etw-blue)}
.etw-pattern:hover .etw-pattern__art svg{transform:scale(1.08)}
.etw-pattern h3{font-size:21px;line-height:1.2;margin-bottom:8px}
.etw-pattern p{font-size:14.5px;line-height:1.6;color:var(--etw-grey)}
@media (max-width:991px){.etw-patterns{grid-template-columns:1fr 1fr;gap:28px 16px}}

/* Cross-section (Waterproofing): a shower floor, built layer by layer */
.etw-xsec{display:grid;grid-template-columns:7fr 5fr;gap:56px;align-items:center}
.etw-xsec svg{display:block;width:100%;height:auto}
.etw-xsec__legend{list-style:none;margin:0;padding:0;border-top:1px solid rgba(255,255,255,.55);counter-reset:xl}
.etw-xsec__legend li{counter-increment:xl;display:grid;grid-template-columns:40px 1fr;padding:14px 0;border-bottom:1px solid var(--etw-dline)}
.etw-xsec__legend li::before{content:counter(xl,decimal-leading-zero);font-size:13px;font-weight:600;color:#8fb3e8;font-variant-numeric:tabular-nums;padding-top:3px}
.etw-xsec__legend strong{display:block;font-size:17px;font-weight:600;margin-bottom:2px}
.etw-xsec__legend span{font-size:14.5px;line-height:1.55;color:var(--etw-dtext)}
.etw-motion .etw-xsec .etw-xl{opacity:0;transform:translateY(-16px);transition:opacity .7s var(--etw-ease),transform .9s var(--etw-ease);transition-delay:calc(var(--i) * 240ms)}
.etw-motion .etw-xsec.is-in .etw-xl{opacity:1;transform:none}
.etw-motion .etw-xsec__legend li{opacity:.25;transition:opacity .6s var(--etw-ease);transition-delay:calc(var(--i) * 240ms + 200ms)}
.etw-motion .etw-xsec.is-in .etw-xsec__legend li{opacity:1}
@media (max-width:991px){.etw-xsec{grid-template-columns:1fr;gap:36px}}

/* Stages (Projects): protect, lay, finish */
.etw-stages{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;list-style:none;margin:0;padding:0}
.etw-stages li{border-top:1px solid var(--etw-dark);padding-top:18px}
.etw-stages__label{display:flex;align-items:baseline;gap:12px;margin-bottom:16px}
.etw-stages__label b{font-size:13px;font-weight:600;color:var(--etw-blue);font-variant-numeric:tabular-nums;letter-spacing:.04em}
.etw-stages__label strong{font-size:24px;font-weight:600;letter-spacing:-.02em}
.etw-stages .etw-media-frame{aspect-ratio:4/5}
.etw-stages p{font-size:14.5px;color:var(--etw-grey);margin-top:12px}
.etw-note{font-size:13px;color:var(--etw-grey);margin-top:22px}
@media (max-width:767px){.etw-stages{grid-template-columns:1fr;gap:30px}.etw-stages .etw-media-frame{aspect-ratio:4/3}}

/* Gallery filter (Projects) */
.etw-filter{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}
.etw-filter button{font:600 14px/1 "Albert Sans",system-ui,sans-serif;color:var(--etw-dark);background:transparent;border:1px solid #c6cbd2;padding:12px 16px;cursor:pointer;transition:background-color .3s,color .3s,border-color .3s}
.etw-filter button:hover{border-color:var(--etw-dark)}
.etw-filter button[aria-pressed="true"]{background:var(--etw-dark);border-color:var(--etw-dark);color:#fff}
.etw-masonry li[hidden]{display:none}

/* Areas on a section of its own (Contact) */
.etw-areas-sec{display:grid;grid-template-columns:5fr 7fr;gap:64px;align-items:start}
@media (max-width:991px){.etw-areas-sec{grid-template-columns:1fr;gap:36px}}

/* ================= AREA PAGES ================= */
/* Feature: one large photo with a review beside it */
.etw-feature{display:grid;grid-template-columns:6fr 5fr;gap:56px;align-items:center}
.etw-feature .etw-media-frame{aspect-ratio:4/5}
.etw-feature blockquote{font-size:clamp(20px,1.9vw,27px);line-height:1.45;letter-spacing:-.01em;margin:0 0 22px}
.etw-feature blockquote::before{content:"";display:block;width:44px;height:2px;background:var(--etw-blue);margin-bottom:26px}
.etw-feature figcaption{font-size:14px;color:var(--etw-grey)}
.etw-feature cite{font-style:normal;font-weight:600;color:var(--etw-dark)}
@media (max-width:991px){.etw-feature{grid-template-columns:1fr;gap:32px}.etw-feature .etw-media-frame{aspect-ratio:4/3}}

/* Versus: two options side by side, each with a drawing */
.etw-vs{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid var(--etw-dark)}
.etw-vs article{padding:28px 40px 32px 0}
.etw-vs article+article{padding:28px 0 32px 40px;border-left:1px solid var(--etw-line)}
.etw-vs__art{aspect-ratio:16/9;border:1px solid var(--etw-line);background:#fff;color:#8b95a1;margin-bottom:22px;overflow:hidden}
.etw-vs__art svg{display:block;width:100%;height:100%}
.etw-vs h3{font-size:26px;letter-spacing:-.02em;margin-bottom:10px}
.etw-vs p{font-size:15.5px;line-height:1.65;color:var(--etw-grey);margin-bottom:16px}
.etw-vs ul{list-style:none;margin:0;padding:0;border-top:1px solid var(--etw-line)}
.etw-vs li{padding:10px 0;border-bottom:1px solid var(--etw-line);font-size:15px;font-weight:500}
@media (max-width:767px){.etw-vs{grid-template-columns:1fr}.etw-vs article,.etw-vs article+article{padding:24px 0;border-left:0}.etw-vs article+article{border-top:1px solid var(--etw-line)}}

/* Area cards (hub) */
.etw-cards{display:grid;grid-template-columns:repeat(var(--cols,3),1fr);gap:16px}
.etw-card{display:flex;flex-direction:column;gap:26px;padding:26px 26px 28px;background:#fff;border:1px solid var(--etw-line);text-decoration:none;color:var(--etw-dark);transition:border-color .4s,transform .6s var(--etw-ease)}
.etw-card:hover{border-color:var(--etw-dark);transform:translateY(-3px)}
.etw-card__top{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:600;color:var(--etw-blue);font-variant-numeric:tabular-nums;letter-spacing:.04em}
.etw-card__top svg{width:18px;height:18px;color:var(--etw-dark);transition:transform .5s var(--etw-ease)}
.etw-card:hover .etw-card__top svg{transform:translateX(5px)}
.etw-card strong{font-size:clamp(28px,2.6vw,38px);font-weight:600;letter-spacing:-.035em;line-height:1}
.etw-card p{font-size:14.5px;line-height:1.55;color:var(--etw-grey);margin-top:-12px}
@media (max-width:991px){.etw-cards{grid-template-columns:1fr 1fr}}
@media (max-width:575px){.etw-cards{grid-template-columns:1fr}}

/* Nearby: plain run of linked suburbs on a light ground */
.etw-nearby{font-size:clamp(19px,1.7vw,24px);line-height:1.6;letter-spacing:-.01em}
.etw-nearby a{color:var(--etw-dark);text-decoration:none;background:linear-gradient(currentColor,currentColor) 0 100%/100% 1px no-repeat;transition:color .3s}
.etw-nearby a:hover{color:var(--etw-blue)}
.etw-nearby span{color:#c3c8cf;margin:0 .5em}

/* Edge-to-edge photo row (Floor & Wall, Recent work) */
.etw-sec--bleed .etw-head{margin-bottom:32px}
.etw-photos--bleed{padding:0 10px;gap:10px}
.etw-photos--bleed li{aspect-ratio:3/4}
@media (max-width:767px){.etw-photos--bleed{padding:0 8px;gap:8px}}

/* Outdoor feature text (Pakenham) */
.etw-feature__h{font-size:clamp(26px,2.4vw,36px);letter-spacing:-.025em;line-height:1.1;margin-bottom:14px}
.etw-feature__p{font-size:16px;line-height:1.65;color:var(--etw-grey);margin-bottom:24px;max-width:34em}
.etw-feature .etw-scope{grid-template-columns:1fr}

/* ================= ROUND 11: inner pages in the homepage's own design ================= */
/* Short photo hero: the homepage hero, cut down so the section under it also sits in the first screen.
   The height follows the viewport: 100svh, less the 100px Astra header, less the strip below. */
.etw-hero--short .etw-hero__img,.etw-hero--short .etw-hero__plan{height:clamp(340px,calc(100svh - 400px),500px)}
.etw-hero--brief .etw-hero__img{height:clamp(340px,calc(100svh - 290px),560px)}
.etw-hero--short h1{font-size:clamp(40px,4.4vw,64px)}
.etw-hero--short .etw-hero__sub{margin-bottom:28px}
/* Commercial has no photo yet: the same hero, over a drawn running-bond tile plan */
.etw-hero__plan{display:block;width:100%;background:var(--etw-dark);color:rgba(143,179,232,.2)}
.etw-hero__plan svg{display:block;width:100%;height:100%}
.etw-motion .etw-hero__plan svg{transform:scale(1.04);transition:transform 2.4s var(--etw-ease)}
.etw-motion.is-loaded .etw-hero__plan svg{transform:none}
@media (max-width:767px){
  .etw-hero--short .etw-hero__img,.etw-hero--brief .etw-hero__img,.etw-hero--short .etw-hero__plan{height:clamp(230px,64vw,320px)}
  .etw-hero--short .etw-crumbs{color:var(--etw-grey);margin-bottom:14px}
  .etw-hero--short .etw-hero__text{padding:26px 0 36px}
  .etw-hero--short h1{font-size:clamp(32px,9vw,40px)}
}
/* The strip under a service hero is the homepage's layer strip, with that service's own four points */
.etw-layers--service{padding:44px 0}
.etw-layers--service .etw-layers__head h2{font-size:28px}
@media (max-width:767px){.etw-layers--service{padding:8px 0 40px}}
/* Brief: one thin band of text under the hero on About, Projects, Contact and the area pages */
.etw-brief{padding:34px 0;background:#fff;border-bottom:1px solid var(--etw-line)}
.etw-brief__row{display:grid;grid-template-columns:6fr 6fr;gap:56px;align-items:center}
.etw-brief__lead{font-size:clamp(19px,1.6vw,23px);line-height:1.45;letter-spacing:-.015em;font-weight:500;max-width:28em}
.etw-brief dl{display:grid;grid-template-columns:repeat(3,1fr);border-left:1px solid var(--etw-line)}
.etw-brief dl div{padding:4px 0 4px 22px}
.etw-brief dt{font-size:12.5px;color:var(--etw-grey);margin-bottom:4px}
.etw-brief dd{font-size:15px;font-weight:600;line-height:1.35}
.etw-brief dd a{text-decoration:none;color:var(--etw-blue)}
@media (max-width:991px){.etw-brief__row{grid-template-columns:1fr;gap:22px}.etw-brief dl{border-left:0;border-top:1px solid var(--etw-line);padding-top:16px}.etw-brief dl div:first-child{padding-left:0}}
@media (max-width:767px){.etw-brief{padding:0 0 32px;border-bottom:0}.etw-brief dl{grid-template-columns:1fr;gap:10px}.etw-brief dl div{padding:0}}
/* Tiles on the dark ground with a drawing instead of a photo (Floor & Wall layouts, Commercial clients) */
.etw-tiles--4{grid-template-columns:repeat(4,1fr)}
.etw-tile--static{cursor:default}
.etw-tile--static .etw-tile__media--plan svg{transform:none}
@media (max-width:991px){.etw-tiles--4{grid-template-columns:1fr 1fr}.etw-tiles--4 .etw-tile__media{aspect-ratio:1/1}}
@media (max-width:575px){.etw-tiles--4{grid-template-columns:1fr}.etw-tiles--4 .etw-tile__media{aspect-ratio:16/10}}
/* Projects: the three main photos, one tall and two wide, then an even grid so filtering leaves no gaps */
.etw-gallery--trio{grid-template-rows:290px 290px}
.etw-gallery--trio li:nth-child(1){grid-column:1/6;grid-row:1/3}
.etw-gallery--trio li:nth-child(2){grid-column:6/13;grid-row:1}
.etw-gallery--trio li:nth-child(3){grid-column:6/13;grid-row:2}
.etw-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;list-style:none;margin:0;padding:0}
.etw-grid li{aspect-ratio:4/5}
.etw-grid li[hidden]{display:none}
@media (max-width:991px){
  .etw-gallery--trio{grid-template-columns:1fr 1fr;grid-template-rows:380px 240px}
  .etw-gallery--trio li:nth-child(1){grid-column:1/3;grid-row:auto}
  .etw-gallery--trio li:nth-child(2){grid-column:1/2;grid-row:auto}.etw-gallery--trio li:nth-child(3){grid-column:2/3;grid-row:auto}
  .etw-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:767px){.etw-gallery--trio{grid-template-rows:300px 200px}.etw-grid{gap:8px}}
/* Areas we service: only the suburbs with their own page, as big clickable rows */
.etw-places__head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.55)}
.etw-areas .etw-places__head h3{padding:0;border:0;margin:0}
.etw-places__head span{font-size:13px;color:var(--etw-dtext)}
.etw-areas.etw-places ul{display:block;font-size:inherit}
.etw-areas.etw-places li{color:#fff}
.etw-areas.etw-places li::after{content:none}
.etw-areas.etw-places li a{position:relative;display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:14px;padding:18px 0;border-bottom:1px solid var(--etw-dline);color:#fff;text-decoration:none;background:none}
.etw-areas.etw-places li a:hover,.etw-areas.etw-places li a:focus-visible{background:none;color:#fff}
.etw-places__n{font-size:13px;font-weight:600;color:#8fb3e8;font-variant-numeric:tabular-nums;letter-spacing:.04em}
.etw-places__name{display:flex;align-items:baseline;justify-content:space-between;gap:16px;font-size:clamp(21px,1.9vw,27px);font-weight:500;letter-spacing:-.02em;line-height:1.15;transition:transform .5s var(--etw-ease)}
.etw-places__name small{font-size:13px;font-weight:500;letter-spacing:0;color:var(--etw-dtext);white-space:nowrap}
.etw-places i{display:grid;place-items:center;width:44px;height:44px;border:1px solid rgba(255,255,255,.28);color:#fff;transition:background-color .35s,border-color .35s}
.etw-places i svg{width:17px;height:17px;transition:transform .45s var(--etw-ease)}
/* Hover: the blue joint line runs the full width, the name steps in, the arrow box fills */
.etw-places li a::after{content:"";position:absolute;left:0;bottom:-1px;width:100%;height:1px;background:#8fb3e8;transform:scaleX(0);transform-origin:left;transition:transform .6s var(--etw-ease)}
.etw-places li a:hover::after,.etw-places li a:focus-visible::after{transform:none}
.etw-places li a:hover .etw-places__name,.etw-places li a:focus-visible .etw-places__name{transform:translateX(6px)}
.etw-places li a:hover i,.etw-places li a:focus-visible i{background:var(--etw-blue);border-color:var(--etw-blue)}
.etw-places li a:hover i svg{transform:translate(2px,-2px)}
.etw-areas.etw-places p{border-top:0;margin-top:6px}
.etw-areas.etw-places p a{color:#fff;font-weight:600;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.35)}
@media (max-width:575px){.etw-areas.etw-places li a{grid-template-columns:32px 1fr 40px;padding:15px 0}.etw-places__name{flex-direction:column;gap:4px}.etw-places i{width:40px;height:40px}}

/* Google logo with the reviews */
.etw-g{width:18px;height:18px;flex:none}
.etw-rating .etw-g{width:20px;height:20px}
.etw-gsrc{display:inline-flex;align-items:center;gap:6px;margin-left:10px;font-size:13px;color:var(--etw-grey)}
.etw-gsrc .etw-g{width:14px;height:14px}

/* Text-only tiles on the dark ground (Commercial: who we work with) */
.etw-tile--text .etw-tile__label{padding:30px 28px 34px}
.etw-tile--text h3{font-size:24px;margin-bottom:12px}
.etw-tile--text p{font-size:15px;line-height:1.65}
.etw-tile--text .etw-tile__n{font-size:15px}

/* Commercial hero: brand blue with a soft gradient shape, words left, a short quote form right */
.etw-hero--form{background:var(--etw-blue);color:#fff;padding:44px 0 48px}
.etw-hero--form::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 55% 85% at 12% 40%,rgba(10,30,70,.42),rgba(10,30,70,0) 72%),radial-gradient(ellipse 40% 60% at 95% 110%,rgba(255,255,255,.10),rgba(255,255,255,0) 70%)}
.etw-hero--form__row{position:relative;display:grid;grid-template-columns:6fr 5fr;gap:64px;align-items:center}
.etw-hero--form .etw-hero__text{width:auto}
.etw-hero--form .etw-crumbs{color:rgba(255,255,255,.75)}
.etw-hero--form h1{font-size:clamp(42px,4.8vw,72px);color:#fff;margin-bottom:22px}
.etw-hero--form .etw-hero__sub{color:rgba(255,255,255,.88);margin-bottom:26px}
.etw-hero__ticks{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px 24px;font-size:14px;font-weight:600}
.etw-hero__ticks li,.etw-ticks li{display:flex;align-items:center;gap:8px}
.etw-hero__ticks li::before,.etw-ticks li::before{content:"";width:16px;height:16px;flex:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/16px no-repeat}
.etw-qform{background:#fff;color:var(--etw-dark);padding:28px 28px 26px;box-shadow:0 30px 60px -30px rgba(5,15,40,.6)}
.etw-qform__h{font-size:21px;line-height:1.2;letter-spacing:-.02em;margin-bottom:14px}
.etw-form--short{gap:12px 14px}
.etw-form--short label{font-size:13px;margin-bottom:6px}
.etw-form--short input:not([type=submit]):not([type=checkbox]):not([type=radio]),.etw-form--short textarea{padding:10px 13px;font-size:15px}
.etw-form--short textarea{min-height:76px}
.etw-form--short .etw-form__foot{margin-top:4px}
.etw-form--short .etw-btn{width:100%;justify-content:center}
@media (max-width:991px){.etw-hero--form__row{grid-template-columns:1fr;gap:36px}.etw-qform{max-width:560px}}
@media (max-width:767px){.etw-hero--form{padding:40px 0 44px}.etw-hero--form h1{font-size:clamp(36px,10vw,44px)}.etw-qform{padding:22px 18px}}
@media (max-width:575px){.etw-form--short{grid-template-columns:1fr}}
/* Contact form: three value ticks under the heading */
.etw-ticks{list-style:none;margin:0 0 26px;padding:0;display:flex;flex-wrap:wrap;gap:8px 22px;font-size:14px;font-weight:600;color:var(--etw-blue)}
.etw-ticks li::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23134CA1' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E")}

/* FAQ: questions on fine rules, answers as short self-contained paragraphs (AEO) */
.etw-faqwrap{display:grid;grid-template-columns:4fr 8fr;gap:64px;align-items:start}
.etw-faqwrap__head .etw-title{margin-bottom:16px}
.etw-faqwrap__head p{font-size:15px;color:var(--etw-grey)}
.etw-faqwrap__head a{color:var(--etw-blue);font-weight:600;text-decoration:none}
.etw-faq{border-top:1px solid var(--etw-dark)}
.etw-faq__item{border-bottom:1px solid #d5d9df}
.etw-faq__item summary{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 0;cursor:pointer;list-style:none}
.etw-faq__item summary::-webkit-details-marker{display:none}
.etw-faq__item h3{font-size:19px;line-height:1.35;letter-spacing:-.01em}
.etw-faq__item i{position:relative;flex:none;width:32px;height:32px;border:1px solid #c6cbd2;transition:background-color .3s,border-color .3s}
.etw-faq__item i::before,.etw-faq__item i::after{content:"";position:absolute;left:50%;top:50%;width:12px;height:1.5px;background:var(--etw-dark);transform:translate(-50%,-50%);transition:transform .35s var(--etw-ease),background-color .3s}
.etw-faq__item i::after{transform:translate(-50%,-50%) rotate(90deg)}
.etw-faq__item[open] i{background:var(--etw-blue);border-color:var(--etw-blue)}
.etw-faq__item[open] i::before,.etw-faq__item[open] i::after{background:#fff}
.etw-faq__item[open] i::after{transform:translate(-50%,-50%) rotate(0)}
.etw-faq__item summary:hover h3{color:var(--etw-blue)}
.etw-faq__a{padding:0 52px 24px 0}
.etw-faq__a p{font-size:16px;line-height:1.7;color:var(--etw-grey);max-width:44em}
@media (max-width:991px){.etw-faqwrap{grid-template-columns:1fr;gap:28px}}
@media (max-width:767px){.etw-faq__item h3{font-size:17px}.etw-faq__a{padding-right:0}}

/* Comparison table (Floor & Wall layouts) */
.etw-tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.etw-table{width:100%;min-width:720px;border-collapse:collapse;font-size:15px;line-height:1.5}
.etw-table th,.etw-table td{text-align:left;vertical-align:top;padding:16px 18px 16px 0;border-bottom:1px solid var(--etw-line)}
.etw-table thead th{font-size:13px;font-weight:600;color:var(--etw-grey);border-bottom:1px solid var(--etw-dark);padding-top:0}
.etw-table tbody th{font-weight:600;font-size:16px;white-space:nowrap}
.etw-table td{color:var(--etw-grey)}
/* Phones: each row becomes a small card, labels shown inline */
@media (max-width:767px){
  .etw-table{min-width:0}
  .etw-table thead{display:none}
  .etw-table,.etw-table tbody,.etw-table tr,.etw-table th,.etw-table td{display:block}
  .etw-table tr{padding:16px 0;border-top:1px solid var(--etw-line)}
  .etw-table tbody tr:first-child{border-top:1px solid var(--etw-dark)}
  .etw-table th,.etw-table td{border:0;padding:4px 0}
  .etw-table tbody th{font-size:18px;margin-bottom:6px}
  .etw-table td::before{content:attr(data-label) ": ";font-weight:600;color:var(--etw-dark)}
}

/* ================= Motion: few, small, purposeful. JS only, never under reduced motion ================= */
.etw-motion .etw-reveal{opacity:0;transform:translateY(12px);transition:opacity .8s var(--etw-ease),transform .9s var(--etw-ease);transition-delay:var(--d,0ms)}
.etw-motion .etw-reveal.is-in{opacity:1;transform:none}
.etw-motion .etw-fade img{opacity:0;transition:opacity 1s var(--etw-ease) var(--d,0ms),transform 1.2s var(--etw-ease)}
.etw-motion .etw-fade.is-in img{opacity:1}
/* Strip: the top rule is drawn left to right, like a string line */
.etw-motion .etw-layers__grid::before{transform:scaleX(0);transition:transform 1.4s var(--etw-ease)}
.etw-motion .etw-layers__grid.is-in::before{transform:none}
.etw-motion .etw-layer::before{background:#fff;box-shadow:inset 0 0 0 1.5px var(--etw-dark);transition:background-color .3s,box-shadow .3s;transition-delay:calc(var(--n) * 280ms)}
.etw-motion .etw-layers__grid.is-in .etw-layer::before{background:var(--etw-blue);box-shadow:inset 0 0 0 1.5px var(--etw-blue)}
/* Hero: lines set out first, then the text tile and copy */
.etw-motion .etw-hero__img{transform:scale(1.06);transition:transform 2.4s var(--etw-ease)}
.etw-motion.is-loaded .etw-hero__img{transform:none}
.etw-motion .etw-line>span{transform:translateY(105%);transition:transform 1.1s var(--etw-ease);transition-delay:calc(var(--d,0ms) + 150ms)}
.etw-motion.is-loaded .etw-line>span{transform:none}
.etw-motion .etw-hero__in{opacity:0;transform:translateY(10px);transition:opacity .9s var(--etw-ease),transform .9s var(--etw-ease);transition-delay:var(--d,0ms)}
.etw-motion.is-loaded .etw-hero__in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .etw *,.etw *::before,.etw *::after{transition-duration:0s !important;transition-delay:0s !important;animation:none !important}
}
/* Projects gallery: a lone last photo runs the full width instead of leaving two empty cells */
.etw-grid li:last-child:nth-child(3n+1){grid-column:1/-1;aspect-ratio:21/9}
@media (max-width:991px){.etw-grid li:last-child:nth-child(3n+1){grid-column:auto;aspect-ratio:4/5}.etw-grid li:last-child:nth-child(odd){grid-column:1/-1;aspect-ratio:16/10}}
/* Home projects: six photos. The new bathroom leads tall, the commercial floor runs wide on the last row */
.etw-gallery--six{grid-template-rows:270px 270px 270px}
.etw-gallery--six li:nth-child(5){grid-column:1/6;grid-row:3}
.etw-gallery--six li:nth-child(6){grid-column:6/13;grid-row:3}
@media (max-width:991px){
  .etw-gallery--six{grid-template-rows:380px 260px 280px 260px}
  .etw-gallery--six li:nth-child(5){grid-column:1/2;grid-row:auto}.etw-gallery--six li:nth-child(6){grid-column:2/3;grid-row:auto}
}
@media (max-width:767px){.etw-gallery--six{grid-template-rows:300px 190px 220px 190px}}
/* Projects gallery: when the last row has two photos, the last one spans two columns */
.etw-grid li:last-child:nth-child(3n+2){grid-column:span 2;aspect-ratio:auto}
@media (max-width:991px){.etw-grid li:last-child:nth-child(3n+2){grid-column:auto;aspect-ratio:4/5}.etw-grid li:last-child:nth-child(odd){grid-column:1/-1;aspect-ratio:16/10}}
.etw-grid li,.etw-gallery li{min-width:0;min-height:0}
.etw-grid li:last-child:nth-child(3n+2) .etw-shot img{position:absolute;inset:0}
