:root{
  --navy:#14254D;--navy2:#1D3366;--deep:#0B1530;--char:#1A1816;
  --cream:#F6F3EE;--paper:#FBF9F5;--sand:#E3D3B5;--sky:#C9D8FF;--blue:#0020C0;
  --ink:#1C2333;--soft:#5A6275;--line:#E2DDD3;--dline:rgba(255,255,255,.14);--r:22px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:"DM Sans",system-ui,sans-serif;font-size:17px;line-height:1.6;color:var(--ink);background:var(--paper)}
img,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.025em;line-height:1.1}
.wrap{max-width:1240px;margin:0 auto;padding:0 32px}
@media (max-width:700px){.wrap{padding:0 16px}}
body.home [data-for="business"],body.business [data-for="home"]{display:none!important}
.mono{font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase}
.eyebrow{display:inline-block;font-size:14px;font-weight:600;color:var(--blue);background:rgba(0,32,192,.07);border-radius:999px;padding:5px 14px;margin-bottom:16px}
.dark .eyebrow{color:var(--sand);background:rgba(227,211,181,.12)}
h2.big{font-size:clamp(32px,3.6vw,50px)}
.pill{display:inline-flex;align-items:center;gap:9px;border-radius:999px;padding:13px 22px;font-weight:600;font-size:15px;white-space:nowrap;border:1.5px solid transparent;transition:background .2s,color .2s,border-color .2s;cursor:pointer;font-family:inherit}
.pill svg{width:17px;height:17px}
.pill.fill{background:var(--blue);color:#fff}
.pill.fill:hover{background:var(--navy)}
.pill.sand{background:var(--sand);color:var(--navy)}
.pill.sand:hover{background:#fff}
.pill.line{border-color:currentColor;background:none}
.stand{position:absolute;z-index:3;background:rgba(11,21,48,.72);color:#fff;padding:4px 9px;border-radius:4px}

/* nav (D: sits over the photo, goes solid on scroll) */
.nav{position:fixed;inset:0 0 auto 0;z-index:50;transition:background .3s,box-shadow .3s}
.nav.scrolled{background:rgba(11,21,48,.94);backdrop-filter:blur(8px);box-shadow:0 1px 0 rgba(255,255,255,.08)}
.nav .wrap{display:flex;align-items:center;gap:24px;height:88px}
.nav .logo img{height:66px;width:auto}
.switch{display:flex;background:rgba(255,255,255,.12);backdrop-filter:blur(6px);border-radius:999px;padding:5px;position:relative;margin-left:12px}
.switch button{border:0;background:none;font:inherit;font-weight:600;font-size:15px;padding:9px 18px;border-radius:999px;cursor:pointer;color:rgba(255,255,255,.82);position:relative;z-index:1;transition:color .25s;white-space:nowrap}
.switch button.on{color:var(--navy)}
.switch .knob{position:absolute;top:5px;bottom:5px;left:5px;border-radius:999px;background:var(--sand);transition:left .3s,width .3s}
.nav ul{display:flex;gap:24px;list-style:none;margin:0 0 0 auto;padding:0}
.nav ul a{color:#fff;font-weight:500;font-size:16px;opacity:.9}
.nav ul a:hover{color:var(--sand)}
.nav .tel{color:#fff;font-weight:600}
@media (max-width:1140px){.nav ul{display:none}.nav .tel{margin-left:auto}}
@media (max-width:760px){.nav .tel,.nav .q{display:none}.switch{margin-left:auto}.nav .logo img{height:50px}.nav .wrap{height:76px;gap:12px}}
@media (max-width:440px){.switch .lg{display:none}.switch button{padding:9px 14px}}

/* hero (D: big job photo behind) */
.hero{position:relative;min-height:780px;display:flex;align-items:flex-end;color:#fff;overflow:hidden;background:var(--deep)}
.hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 60%;animation:fade .7s}
@keyframes fade{from{opacity:.25}to{opacity:1}}
.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,16,38,.72) 0,rgba(8,16,38,0) 220px),linear-gradient(90deg,rgba(8,16,38,.9) 0%,rgba(8,16,38,.6) 45%,rgba(8,16,38,.1) 100%),linear-gradient(0deg,rgba(8,16,38,.55) 0,rgba(8,16,38,0) 40%)}
.hero .wrap{position:relative;z-index:2;width:100%;padding-top:150px;padding-bottom:64px}
.hero h1{font-size:clamp(40px,5.2vw,76px);letter-spacing:-.035em;line-height:1.02;max-width:900px}
.hero h1 em{font-style:normal;color:var(--sand)}
/* the area line under the hero heading. The place names are in the page title for Google */
.hero p.area{display:flex;align-items:center;gap:8px;margin-top:18px;font-size:17px;font-weight:600;color:var(--sand)}
.hero p.area svg{width:20px;height:20px;flex:none}
.hero p.area+p.lead{margin-top:16px}
.hero p.lead{font-size:20px;max-width:580px;margin:24px 0 30px;color:rgba(255,255,255,.88)}
.picker{display:flex;align-items:center;background:#fff;border-radius:999px;padding:6px 6px 6px 22px;max-width:520px;gap:10px}
.picker svg{width:18px;height:18px;color:#8A90A0;flex:none}
.picker select,.picker input{flex:1;border:0;background:none;font:inherit;font-size:16px;color:var(--ink);padding:10px 0;min-width:0;appearance:none;cursor:pointer;outline:none}
.picker button{border:0;background:var(--blue);color:#fff;font:inherit;font-weight:600;font-size:15px;border-radius:999px;padding:13px 24px;cursor:pointer;white-space:nowrap}
.picker button:hover{background:var(--navy)}
.hero .ticks{display:flex;flex-wrap:wrap;gap:10px 26px;margin-top:30px;font-size:15px;color:rgba(255,255,255,.88)}
.hero .ticks span{display:flex;align-items:center;gap:8px}
.hero .ticks svg{width:18px;height:18px;color:var(--sand)}
.hero .stand{right:16px;bottom:16px}
@media (max-width:700px){.hero{min-height:700px}.hero .wrap{padding-top:120px;padding-bottom:44px}.hero:after{background:linear-gradient(180deg,rgba(8,16,38,.7) 0,rgba(8,16,38,.55) 40%,rgba(8,16,38,.92) 100%)}.picker{padding-left:16px}.picker button{padding:12px 16px}.hero .stand{display:none}}

/* credentials row (G) */
.creds{background:#fff;border-bottom:1px solid var(--line)}
.creds .wrap{display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}
.creds .wrap>div{padding:28px 22px;border-right:1px solid var(--line);display:flex;gap:14px;align-items:flex-start}
.creds .wrap>div:first-child{border-left:1px solid var(--line)}
.creds svg{width:24px;height:24px;color:var(--blue);flex:none}
.creds p{margin:0}
.creds b{display:block;font-weight:600;font-size:16px;line-height:1.25}
.creds span{font-size:14px;color:var(--soft)}
@media (max-width:1100px){.creds .wrap{grid-template-columns:1fr 1fr}.creds .wrap>div{border-bottom:1px solid var(--line)}.creds .wrap>div:nth-child(odd){border-left:1px solid var(--line)}}
@media (max-width:560px){.creds .wrap{grid-template-columns:1fr}}

/* home: seven services list (E) */
.svc{background:var(--navy);color:#fff;padding:110px 0;position:relative;overflow:hidden}
.svc .mark{position:absolute;left:-140px;bottom:-120px;width:720px;opacity:.06;pointer-events:none}
.svc .wrap{position:relative;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:70px}
@media (max-width:940px){.svc .wrap{grid-template-columns:minmax(0,1fr);gap:40px}}
.svc .intro p{color:rgba(255,255,255,.8);margin:18px 0 30px;max-width:400px}
.svc ol{list-style:none;margin:0;padding:0;border-top:1px solid var(--dline)}
.svc li a{display:grid;grid-template-columns:76px minmax(0,1fr) 40px;gap:22px;align-items:center;padding:18px 0;border-bottom:1px solid var(--dline)}
.svc li .th{width:76px;height:76px;border-radius:16px;overflow:hidden;background:repeating-linear-gradient(135deg,#25396A 0 10px,#203361 10px 20px)}
.svc li .th img{width:100%;height:100%;object-fit:cover}
.svc li h3{font-size:24px;margin-bottom:4px}
.svc li p{margin:0;color:rgba(255,255,255,.72);font-size:15px}
.svc li small{color:var(--sand);font-size:12px}
.svc li .go{width:40px;height:40px;border-radius:50%;border:1.5px solid rgba(255,255,255,.4);display:grid;place-items:center;transition:background .2s}
.svc li .go svg{width:17px;height:17px}
.svc li a:hover .go{background:var(--sand);color:var(--navy);border-color:var(--sand)}
.svc li.biz a{background:rgba(227,211,181,.08);border-radius:16px;padding:18px 14px;margin-top:10px;border:0}
@media (max-width:520px){.svc li a{grid-template-columns:60px minmax(0,1fr) 36px;gap:14px}.svc li .th{width:60px;height:60px}.svc li h3{font-size:20px}}

/* business: sites we look after (H) */
.sites-sec{background:var(--navy);color:#fff;padding:110px 0}
.sh{display:flex;justify-content:space-between;gap:40px;align-items:end;margin-bottom:48px;flex-wrap:wrap}
.sh p{max-width:430px;margin:0}
.dark .sh p{color:rgba(255,255,255,.72)}
.sh .num{display:block;margin-bottom:14px;color:var(--blue)}
.dark .sh .num{color:var(--sand)}
.sites{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.site{position:relative;aspect-ratio:3/4;border-radius:var(--r);overflow:hidden;background:var(--deep)}
.site img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.8) brightness(.85);transition:transform .6s,filter .4s}
.site:hover img{transform:scale(1.05);filter:saturate(1) brightness(.95)}
.site:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(8,16,38,.92) 0%,rgba(8,16,38,0) 55%)}
.site .tx{position:absolute;left:24px;right:24px;bottom:24px;z-index:1}
.site .mono{color:var(--sand)}
.site h3{font-size:28px;margin:10px 0 8px}
.site p{margin:0;color:rgba(255,255,255,.75);font-size:15px}
.site .stand{top:16px;right:16px}
.more{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.more span{border:1px solid var(--dline);border-radius:999px;padding:9px 16px;color:rgba(255,255,255,.75);font-size:15px}
.more span b{color:var(--sand);font-weight:600;margin-right:6px}
@media (max-width:960px){.sites{grid-template-columns:1fr 1fr}.sites .site:nth-child(3){display:none}}
@media (max-width:560px){.sites{grid-template-columns:1fr}.site{aspect-ratio:4/3}}

/* business: services grid (H, light) */
.bsvc{padding:110px 0}
.grid6{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line);background:#fff}
.grid6>div{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:34px 30px 38px;min-height:230px;display:flex;flex-direction:column;transition:background .3s}
.grid6>div:hover{background:var(--cream)}
.grid6 .mono{color:var(--soft)}
.grid6 h3{font-size:26px;margin:auto 0 10px}
.grid6 p{margin:0;color:var(--soft);font-size:15px}
.grid6 .cta{background:var(--blue);color:#fff;grid-column:span 2}
.grid6 .cta:hover{background:var(--navy)}
.grid6 .cta .mono,.grid6 .cta p{color:rgba(255,255,255,.78)}
@media (max-width:1100px){.grid6{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.grid6{grid-template-columns:1fr}.grid6>div{min-height:0}.grid6 h3{margin-top:18px}.grid6 .cta{grid-column:auto}}

/* film band: Jacob's after-clean montage, playing like a film behind */
.film{position:relative;overflow:hidden;background:var(--char);color:#fff;padding:90px 0}
.film .bg{position:absolute;top:-60px;left:-60px;width:calc(100% + 120px);height:calc(100% + 120px);object-fit:cover;filter:blur(30px) brightness(.5) saturate(1.1)}
.film:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(26,24,22,.88) 0%,rgba(26,24,22,.45) 55%,rgba(26,24,22,.25) 100%)}
.film .wrap{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:70px;align-items:center}
.film h2{font-size:clamp(36px,5vw,72px);letter-spacing:-.035em}
.film p{color:rgba(255,255,255,.8);max-width:420px;margin:18px 0 28px}
.film .screen{height:min(80vh,720px);aspect-ratio:9/16;border-radius:var(--r);overflow:hidden;box-shadow:0 40px 100px rgba(0,0,0,.55);background:#000}
.film .screen video{width:100%;height:100%;object-fit:cover}
.film .sound{display:flex;gap:10px;align-items:center;color:rgba(255,255,255,.75);font-size:14px}
.film .sound i{width:8px;height:8px;border-radius:50%;background:var(--sand);animation:pulse 2s infinite}
@keyframes pulse{50%{opacity:.3}}
@media (max-width:760px){.film{padding:70px 0 0}.film .wrap{grid-template-columns:minmax(0,1fr);gap:34px}.film .screen{height:auto;width:calc(100% + 32px);margin:0 -16px;border-radius:0;box-shadow:none}}

/* before & after: drag the line (A) */
.ba{background:var(--cream);padding:110px 0}
.ba .head{display:flex;justify-content:space-between;align-items:end;gap:30px;flex-wrap:wrap;margin-bottom:40px}
.ba .head p{color:var(--soft);max-width:420px;margin:0}
.ba-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
@media (max-width:980px){.ba-row{grid-template-columns:minmax(0,1fr)}}
.cmp{position:relative;aspect-ratio:1/1;overflow:hidden;border-radius:var(--r);user-select:none;touch-action:none;cursor:ew-resize;background:#ccc}
.cmp img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.cmp .after{clip-path:inset(0 0 0 50%)}
.cmp .bar{position:absolute;top:0;bottom:0;left:50%;width:3px;background:#fff;transform:translateX(-1.5px);pointer-events:none}
.cmp .knob{position:absolute;top:50%;left:50%;width:56px;height:56px;border-radius:50%;background:#fff;transform:translate(-50%,-50%);display:grid;place-items:center;color:var(--navy);box-shadow:0 6px 24px rgba(0,0,0,.28);pointer-events:none}
.cmp .knob svg{width:26px;height:26px}
.cmp .t{position:absolute;top:14px;font-size:13px;font-weight:600;color:#fff;background:rgba(11,21,48,.65);padding:5px 12px;border-radius:999px;pointer-events:none}
.cmp .t.l{left:14px}.cmp .t.r{right:14px;background:var(--blue)}
.cmp input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:ew-resize;margin:0}
.ba-cap{display:flex;justify-content:space-between;padding:14px 4px 0;font-size:15px;font-weight:600}
.ba-cap span{color:var(--soft);font-weight:400}

/* home: steps */
.steps{padding:110px 0}
.steps .head{max-width:640px;margin-bottom:44px}
.steps .head p{color:var(--soft);margin:14px 0 0}
.how{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;counter-reset:s}
@media (max-width:900px){.how{grid-template-columns:minmax(0,1fr)}}
.how div{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:32px;counter-increment:s}
.how div:before{content:counter(s);display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--navy);color:var(--sand);font-weight:700;margin-bottom:22px}
.how h3{font-size:22px;margin-bottom:8px}
.how p{margin:0;color:var(--soft);font-size:15px}

/* business: process (G) */
.proc-sec{padding:110px 0}
.proc{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));position:relative}
.proc:before{content:"";position:absolute;left:0;right:0;top:23px;height:1px;background:var(--line)}
.step{padding-right:30px;position:relative}
.step i{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:var(--navy);color:var(--sand);font-style:normal;font-family:"IBM Plex Mono";font-size:14px;margin-bottom:26px}
.step:first-child i{background:var(--blue);color:#fff}
.step h3{font-size:22px;margin-bottom:10px}
.step p{margin:0;color:var(--soft);font-size:15px}
@media (max-width:900px){.proc{grid-template-columns:1fr 1fr;gap:40px 0}.proc:before{display:none}}
@media (max-width:520px){.proc{grid-template-columns:minmax(0,1fr)}}

/* business: contracts table (G) */
.con{background:var(--cream);padding:110px 0}
.tscroll{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:#fff}
.tbl{width:100%;min-width:820px;border-collapse:collapse;font-size:16px}
.tbl th,.tbl td{text-align:left;padding:18px 24px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl thead th{vertical-align:bottom;padding-top:30px;border-bottom:2px solid var(--navy)}
.tbl thead th .mono{color:var(--blue);display:block;margin-bottom:8px}
.tbl thead th h3{font-size:28px}
.tbl tbody th{font-weight:500;color:var(--soft);width:20%}
.tbl .hi{background:#F2F4FF}
.tbl thead th.hi{border-top:4px solid var(--blue)}
.tbl tfoot td{border:0;padding:24px}
.tbl .pill.line{color:var(--navy)}
.swipe{display:none;font-size:14px;color:var(--soft);margin-top:12px}
@media (max-width:900px){.swipe{display:block}}

/* business: report (H) */
.rep{background:var(--deep);color:#fff;padding:110px 0}
.rep .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:80px;align-items:center}
@media (max-width:1000px){.rep .wrap{grid-template-columns:minmax(0,1fr);gap:56px}}
.rep h2{margin-top:4px}
.rep .sub{color:rgba(255,255,255,.72);margin:20px 0 0;max-width:480px}
.rep ul{list-style:none;padding:0;margin:30px 0 0}
.rep li{padding:16px 0;border-top:1px solid var(--dline);display:grid;grid-template-columns:28px 1fr;gap:10px}
.rep li svg{width:20px;height:20px;color:var(--sand);margin-top:3px}
.rep li p{margin:0}
.rep li span{color:rgba(255,255,255,.65);display:block;font-size:15px}
.doc{background:var(--paper);color:#16181d;border-radius:6px;padding:34px;box-shadow:0 30px 80px rgba(0,0,0,.5);transform:rotate(1.2deg);position:relative;font-size:14px}
.doc:before{content:"Example";position:absolute;top:-14px;right:24px;background:var(--sand);color:var(--navy);font-family:"IBM Plex Mono";font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:5px 10px;border-radius:3px}
.doc .top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;border-bottom:2px solid #16181d;padding-bottom:18px;margin-bottom:18px}
.doc .top img{height:46px;width:auto}
.doc .top div{text-align:right}
.doc .top b{display:block;font-size:20px;letter-spacing:-.02em}
.doc .top span{color:#6a6f7a;font-family:"IBM Plex Mono";font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.doc dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 20px}
.doc dt{font-family:"IBM Plex Mono";font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#6a6f7a}
.doc dd{margin:2px 0 0;font-weight:600}
.doc table{width:100%;border-collapse:collapse;margin-bottom:20px}
.doc td{padding:9px 0;border-bottom:1px solid #d9d6cf}
.doc td:last-child{text-align:right;font-family:"IBM Plex Mono";font-size:11px;color:#1a7f3b}
.doc .ph{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}
.doc .ph div{position:relative}
.doc .ph img{aspect-ratio:4/3;object-fit:cover;width:100%;border-radius:2px}
.doc .ph span{position:absolute;left:6px;top:6px;background:#fff;font-family:"IBM Plex Mono";font-size:10px;padding:2px 6px;text-transform:uppercase}
.doc .sig{display:flex;justify-content:space-between;gap:12px;color:#6a6f7a;border-top:1px solid #d9d6cf;padding-top:12px}
@media (max-width:520px){.doc{padding:22px;transform:none}.doc dl{grid-template-columns:1fr 1fr}}

/* business: case study (G) */
.case-sec{padding:110px 0}
.case{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);background:var(--navy);color:#fff;border-radius:var(--r);overflow:hidden}
.case .pair{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:var(--navy)}
.case .pair div{position:relative}
.case .pair img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/5}
.case .pair .mono{position:absolute;left:14px;top:14px;background:#fff;color:var(--ink);padding:4px 8px;border-radius:3px}
.case .tx{padding:52px}
.case .tx>.mono{color:var(--sand)}
.case h3{font-size:clamp(26px,2.5vw,36px);margin:16px 0}
.case p{color:rgba(255,255,255,.75);margin:0 0 26px}
.case dl{display:grid;grid-template-columns:auto 1fr;gap:12px 28px;margin:0 0 30px;font-size:15px;border-top:1px solid var(--dline);padding-top:22px}
.case dt{color:rgba(255,255,255,.55)}
.case dd{margin:0}
@media (max-width:940px){.case{grid-template-columns:minmax(0,1fr)}.case .tx{padding:34px 22px}}

/* business: clients */
.clients{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:70px 0}
.clients .wrap{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:50px;align-items:center}
@media (max-width:860px){.clients .wrap{grid-template-columns:minmax(0,1fr);gap:28px}}
.clients h2{font-size:clamp(26px,2.6vw,36px)}
.clients p{color:var(--soft);margin:12px 0 0}
.logos{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:440px){.logos{grid-template-columns:minmax(0,1fr)}}
.logo-card{border:1px solid var(--line);border-radius:var(--r);padding:22px;display:flex;flex-direction:column;gap:14px;background:var(--paper)}
.logo-card .lg{height:96px;border-radius:14px;border:1.5px dashed #CFC6B4;display:grid;place-items:center;color:var(--soft);background:#fff}
.logo-card b{font-size:18px}

/* reviews (E) */
.rev{background:var(--deep);color:#fff;padding:110px 0;text-align:center}
.rev .stars{color:#F2B705;font-size:24px;letter-spacing:4px}
.rev blockquote{font-size:clamp(22px,2.6vw,34px);line-height:1.35;letter-spacing:-.015em;max-width:900px;margin:22px auto 26px;font-weight:500;min-height:3.9em}
.rev cite{font-style:normal;color:var(--sand);font-weight:600}
.rev cite small{display:block;color:rgba(255,255,255,.6);font-weight:400;font-size:15px}
.rev .ctrl{display:flex;gap:10px;justify-content:center;margin-top:30px}
.rev .ctrl .pill{color:#fff}
.rev .ctrl .pill:hover{background:#fff;color:var(--deep)}

/* areas + faq (E) */
.af{padding:110px 0;background:var(--cream)}
.af .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:70px}
@media (max-width:900px){.af .wrap{grid-template-columns:minmax(0,1fr);gap:56px}}
.af p.sub{color:var(--soft);margin:14px 0 26px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}
.chips span{background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 16px;font-size:15px}
.chips span.base{background:var(--navy);color:#fff;border-color:var(--navy)}
details{border-bottom:1px solid var(--line)}
summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:20px;padding:20px 0;font-weight:600;font-size:18px}
summary::-webkit-details-marker{display:none}
summary:after{content:"";width:10px;height:10px;border-right:2px solid var(--soft);border-bottom:2px solid var(--soft);transform:rotate(45deg);margin-top:4px;transition:transform .2s;flex:none}
details[open] summary:after{transform:rotate(-135deg);margin-top:10px}
details p{margin:0 0 22px;color:var(--soft)}

/* quote */
.quote{padding:110px 0}
.quote .wrap{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:60px;align-items:start}
@media (max-width:940px){.quote .wrap{grid-template-columns:minmax(0,1fr);gap:36px}}
.quote p.sub{color:var(--soft);margin:16px 0 28px}
.next{list-style:none;margin:0 0 28px;padding:0;counter-reset:n}
.next li{counter-increment:n;display:grid;grid-template-columns:44px 1fr;padding:16px 0;border-top:1px solid var(--line)}
.next li:before{content:"0" counter(n);font-family:"IBM Plex Mono";font-size:13px;color:var(--blue);padding-top:3px}
.next p{margin:0}
.next b{display:block}
.next span{color:var(--soft);font-size:15px}
.contact a{display:flex;gap:14px;align-items:center;padding:16px 0;border-top:1px solid var(--line);font-weight:600;font-size:18px}
.contact svg{width:22px;height:22px;color:var(--blue)}
form.f{background:#fff;border:1px solid var(--line);border-radius:28px;padding:36px;display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:600px){form.f{grid-template-columns:minmax(0,1fr);padding:24px}}
form.f label{display:block;font-size:14px;font-weight:600;margin-bottom:6px}
form.f input,form.f select,form.f textarea{width:100%;border:1.5px solid var(--line);border-radius:14px;padding:13px 15px;font:inherit;font-size:16px;background:#fff}
form.f input:focus,form.f select:focus,form.f textarea:focus{outline:none;border-color:var(--blue)}
form.f .full{grid-column:1/-1}
form.f textarea{min-height:110px;resize:vertical}
form.f .fq{display:flex;flex-wrap:wrap;gap:8px}
form.f .fq label{font-weight:500;font-size:15px;margin:0;border:1.5px solid var(--line);border-radius:999px;padding:8px 14px;cursor:pointer}
form.f .fq input{position:absolute;opacity:0;width:1px;height:1px}
form.f .fq label:has(input:focus-visible){outline:2px solid var(--blue);outline-offset:2px}
form.f .fq label:has(input:checked){background:var(--navy);color:#fff;border-color:var(--navy)}
form.f .pill{justify-content:center;width:100%;padding:16px}
form.f .lbl{display:block;font-size:14px;font-weight:600;margin-bottom:6px}
form.f [aria-invalid=true]{border-color:#C0392B}
form.f .pill:disabled{opacity:.6;cursor:wait}
form.f .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.fnote{margin:10px 0 0;font-size:13px;color:var(--soft)}
.fnote a{text-decoration:underline}
.hero.sub.short{min-height:420px}
.fmsg{margin:12px 0 0;font-size:15px;min-height:1.2em}
.fmsg.err{color:#B03020;font-weight:600}
.fmsg.ok{color:#11734B;font-weight:600}
/* Map tool to draw the areas to clean */
form.f .areas{border:1.5px dashed var(--line);border-radius:18px;padding:4px}
form.f .areas-open{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;padding:12px 14px;font:inherit;font-weight:600;font-size:15px;color:var(--navy);cursor:pointer;text-align:left}
form.f .areas-open span{font-weight:400;color:var(--soft)}
form.f .areas-open svg{width:16px;height:16px;flex:none;transition:transform .2s}
form.f .areas-open[aria-expanded=true] svg{transform:rotate(90deg)}
form.f .areas-body{padding:0 12px 14px}
form.f .areas-help{font-size:14px;color:var(--soft);margin:0 0 12px}
form.f .areas-find{display:flex;gap:8px;margin-bottom:10px}
form.f .areas-find input{flex:1;min-width:0}
form.f .areas .pill{width:auto;padding:10px 16px;font-size:14px}
form.f .areas-map{height:340px;border-radius:14px;overflow:hidden;background:#E9E6E0}
form.f .areas-tools{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
form.f .areas [hidden]{display:none}
form.f .areas-msg{font-size:14px;margin:10px 0 0;color:var(--soft)}
form.f .areas-list{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:8px}
form.f .areas-list li{display:flex;align-items:center;gap:10px;font-size:15px}
form.f .areas-list i{width:14px;height:14px;border-radius:4px;flex:none}
form.f .areas-list select{width:auto;padding:7px 10px;border-radius:10px;font-size:15px}
form.f .areas-list b{margin-left:auto;white-space:nowrap}
form.f .areas-list button{background:none;border:0;color:var(--blue);font:inherit;font-size:14px;text-decoration:underline;cursor:pointer;padding:4px}
form.f .areas-total{margin:10px 0 0;font-size:15px}
@media (max-width:600px){form.f .areas-map{height:300px}form.f .areas-find{flex-wrap:wrap}form.f .areas-find .pill{width:100%;justify-content:center}}

footer{background:var(--char);color:rgba(255,255,255,.7);padding:70px 0 30px;font-size:15px}
footer .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px}
@media (max-width:900px){footer .cols{grid-template-columns:1fr 1fr}}
footer img{height:86px;width:auto;margin-bottom:16px}
footer h4{color:#fff;margin:0 0 14px;font-size:16px}
footer ul{list-style:none;margin:0;padding:0}
footer li{margin-bottom:8px}
/* footer social links */
footer .social{display:flex;gap:10px;margin-top:18px}
footer .social a{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.08);color:#fff;transition:background .2s}
footer .social a:hover{background:var(--blue,#1E5BFF)}
footer .social svg{width:20px;height:20px}
footer .base a,footer .linkbtn{color:inherit;text-decoration:underline;text-underline-offset:3px}
.linkbtn{background:none;border:0;padding:0;font:inherit;cursor:pointer}
/* cookie banner (consent.js). Accept and Reject are the same size, as the ICO asks */
.cookie{position:fixed;left:16px;right:16px;bottom:16px;z-index:200;max-width:460px;padding:20px 22px;border-radius:18px;background:var(--navy);color:#fff;box-shadow:0 18px 50px rgba(0,0,0,.35);font-size:15px;line-height:1.5}
.cookie p{margin:0 0 14px;color:rgba(255,255,255,.88)}
.cookie a{color:#fff;text-decoration:underline}
.cookie .row{display:flex;gap:10px}
.cookie button{flex:1;padding:11px 14px;border-radius:999px;border:1.5px solid var(--sand);font:inherit;font-weight:600;cursor:pointer}
.cookie .yes{background:var(--sand);color:var(--navy)}
.cookie .no{background:transparent;color:#fff}
/* privacy page */
.legal{max-width:760px}
.legal h2{margin:42px 0 12px;font-size:26px}
.legal ul{padding-left:20px}
.legal li{margin-bottom:6px}
footer .base{border-top:1px solid rgba(255,255,255,.1);margin-top:46px;padding-top:22px;font-size:13px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}

/* ---------- inner pages ---------- */
/* switch as links on inner pages */
.switch a{font-weight:600;font-size:15px;padding:9px 18px;border-radius:999px;color:rgba(255,255,255,.82);white-space:nowrap;position:relative;z-index:1;transition:color .2s,background .2s}
.switch a.on{background:var(--sand);color:var(--navy)}
.switch a:not(.on):hover{color:#fff}
@media (max-width:440px){.switch a{padding:9px 14px}}
/* services dropdown */
.nav .dd{position:relative}
.nav .dd>div{position:absolute;top:100%;left:-24px;padding-top:16px;display:none}
.nav .dd:hover>div,.nav .dd:focus-within>div{display:block}
.nav .dd ul{display:block;background:#fff;border-radius:18px;padding:10px;min-width:270px;box-shadow:0 20px 50px rgba(0,0,0,.25);margin:0}
.nav .dd ul a{display:block;color:var(--ink);padding:10px 14px;border-radius:10px;opacity:1;font-size:15px}
.nav .dd ul a:hover{background:var(--cream);color:var(--ink)}
.nav .dd ul a.on{color:var(--blue)}
.nav ul a.here{color:var(--sand);opacity:1}
/* shorter hero with breadcrumb */
.hero.sub{min-height:660px}
.crumb{display:flex;flex-wrap:wrap;gap:8px;font-size:14px;color:rgba(255,255,255,.7);margin-bottom:20px}
.crumb a:hover{color:#fff}
.crumb b{font-weight:500;color:var(--sand)}
.hero .acts{display:flex;flex-wrap:wrap;gap:12px}
.pill.ghost{border-color:rgba(255,255,255,.55);color:#fff}
.pill.ghost:hover{background:#fff;color:var(--navy)}
/* text + slider split */
.split{padding:110px 0}
.split .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:70px;align-items:center}
.split p{color:var(--soft);margin:18px 0 0}
.split .cmp{aspect-ratio:4/3}
@media (max-width:940px){.split .wrap{grid-template-columns:minmax(0,1fr);gap:40px}}
/* four cards */
.surf{background:var(--cream);padding:110px 0}
.cards4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.cards4>div{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:30px}
.cards4 .mono{color:var(--blue)}
.cards4 h3{font-size:22px;margin:14px 0 8px}
.cards4 p{margin:0;color:var(--soft);font-size:15px}
@media (max-width:1000px){.cards4{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.cards4{grid-template-columns:minmax(0,1fr)}}
.note{margin-top:22px;font-size:15px;color:var(--soft)}
.note b{color:var(--ink)}
/* one review */
.rev1{background:var(--deep);color:#fff;padding:100px 0}
.rev1 .wrap{max-width:980px;text-align:center}
.rev1 .stars{color:#F2B705;font-size:24px;letter-spacing:4px}
.rev1 blockquote{font-size:clamp(24px,2.8vw,38px);line-height:1.3;letter-spacing:-.015em;margin:22px 0 24px;font-weight:500}
.rev1 cite{font-style:normal;color:var(--sand);font-weight:600}
.rev1 cite small{display:block;color:rgba(255,255,255,.6);font-weight:400;font-size:15px}
/* faq block */
.faqs{padding:110px 0}
.faqs .wrap{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:70px}
.faqs p.sub{color:var(--soft);margin:14px 0 0}
@media (max-width:900px){.faqs .wrap{grid-template-columns:minmax(0,1fr);gap:30px}}
/* other services */
.others{padding:90px 0;background:var(--cream)}
.others h2{margin-bottom:28px}
.olinks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.olinks a{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 20px;font-weight:600}
.olinks a:hover{border-color:var(--blue);color:var(--blue)}
.olinks svg{width:17px;height:17px;flex:none}
.olinks a.biz{background:var(--navy);color:#fff;border-color:var(--navy)}
.olinks a.biz:hover{background:var(--blue);border-color:var(--blue);color:#fff}
@media (max-width:900px){.olinks{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.olinks{grid-template-columns:minmax(0,1fr)}}
.quote.line{border-top:1px solid var(--line)}
/* commercial: six sector cards */
.sec6{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.sec6>div{background:rgba(255,255,255,.05);border:1px solid var(--dline);border-radius:var(--r);overflow:hidden}
.sec6 .im{position:relative;aspect-ratio:16/10;background:repeating-linear-gradient(135deg,#25396A 0 10px,#203361 10px 20px)}
.sec6 .im img{width:100%;height:100%;object-fit:cover;filter:saturate(.85)}
.sec6 .im .stand{top:12px;right:12px}
.sec6 .im .ph{position:absolute;inset:0;display:grid;place-items:center;color:rgba(255,255,255,.6)}
.sec6 .tx{padding:26px 28px 30px}
.sec6 .mono{color:var(--sand)}
.sec6 h3{font-size:24px;margin:12px 0 10px}
.sec6 p{margin:0;color:rgba(255,255,255,.74);font-size:15px}
@media (max-width:980px){.sec6{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.sec6{grid-template-columns:minmax(0,1fr)}}
/* commercial: why us */
.why{background:var(--deep);color:#fff;padding:110px 0}
.why .wrap{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:70px}
.why .sub{color:rgba(255,255,255,.72);margin:20px 0 0}
.why ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:0 34px}
.why li{display:flex;gap:12px;padding:18px 0;border-top:1px solid var(--dline)}
.why li svg{width:20px;height:20px;color:var(--sand);flex:none;margin-top:3px}
@media (max-width:940px){.why .wrap{grid-template-columns:minmax(0,1fr);gap:36px}}
@media (max-width:560px){.why ul{grid-template-columns:minmax(0,1fr)}}

/* ===== Full site pages: photo placeholders, about, contact ===== */
.hero.np{background:repeating-linear-gradient(135deg,#14254D 0 14px,#18295A 14px 28px)}
.hero .phtag{position:absolute;right:24px;bottom:24px;z-index:3;font-size:12px;color:rgba(255,255,255,.75);border:1px dashed rgba(255,255,255,.4);border-radius:999px;padding:6px 12px}
.phbox{aspect-ratio:4/3;border-radius:var(--r);background:repeating-linear-gradient(135deg,#ECE6DA 0 12px,#E5DECF 12px 24px);display:grid;place-items:center;text-align:center;padding:20px;color:var(--soft);font-size:13px;border:1px dashed #CFC6B4}
/* the logo on a navy panel, in place of a photo (About: Who we are) */
.split .logobox{aspect-ratio:4/3;border-radius:var(--r);background:var(--navy);display:flex;align-items:center;justify-content:center}
.split .logobox img{width:62%;height:auto}
.split .pic{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r)}
.todo{margin-top:22px;border:1px dashed #CFC6B4;border-radius:14px;padding:14px 16px;font-size:14px;color:var(--soft);background:#fff}
.todo b{display:block;font-family:"IBM Plex Mono",monospace;font-size:12px;font-weight:500;color:var(--blue);margin-bottom:4px;text-transform:uppercase;letter-spacing:.06em}
.cards3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.cards3>div{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:30px}
.cards3 h3{font-size:22px;margin:14px 0 8px}
.cards3 p{margin:0;color:var(--soft);font-size:15px}
.cards3 svg{width:26px;height:26px;color:var(--blue)}
.cards3 a.big{display:block;font-size:22px;font-weight:700;color:var(--navy);margin-top:6px;overflow-wrap:anywhere}
.cards3 blockquote{margin:12px 0 18px;font-size:17px;line-height:1.5;color:var(--ink)}
.cards3 cite{font-style:normal;font-weight:600;font-size:15px}
.cards3 cite small{display:block;font-weight:400;color:var(--soft)}
.cards3 .stars{color:#F2B705;letter-spacing:3px}
.band{padding:110px 0}
.band.cream{background:var(--cream)}
.band .sh{margin-bottom:40px}
.gal{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.gal img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:16px}
.towns{display:flex;flex-wrap:wrap;gap:10px}
.towns span{background:#fff;border:1px solid var(--line);border-radius:999px;padding:9px 16px;font-size:15px}
.towns span.base{background:var(--navy);color:#fff;border-color:var(--navy)}
.ctaband{background:var(--deep);color:#fff;padding:90px 0}
.ctaband .wrap{display:flex;justify-content:space-between;align-items:center;gap:30px;flex-wrap:wrap}
.ctaband p{color:rgba(255,255,255,.75);margin:10px 0 0}
.ctaband .acts{display:flex;flex-wrap:wrap;gap:12px}
@media (max-width:1100px){.cards3{grid-template-columns:1fr 1fr}.gal{grid-template-columns:1fr 1fr}}
@media (max-width:760px){.cards3{grid-template-columns:minmax(0,1fr)}.band{padding:80px 0}.hero .phtag{right:16px;bottom:16px}}

/* Client logos */
.logo-card .lg.img{border:0;padding:14px 18px;background:#fff;box-shadow:inset 0 0 0 1px var(--line)}
.logo-card .lg.dk{background:var(--navy);box-shadow:none}
.logo-card .lg img{max-height:70px;max-width:88%;width:auto;height:auto;object-fit:contain}

/* Phone menu: shown below 1140px, where the nav links are hidden */
.mb{display:none;flex:none;position:relative;width:46px;height:46px;border:0;border-radius:999px;background:rgba(255,255,255,.12);cursor:pointer}
.mb span{position:absolute;left:14px;right:14px;height:2px;border-radius:2px;background:#fff;transition:transform .25s,opacity .2s}
.mb span:nth-child(1){top:16px}
.mb span:nth-child(2){top:22px}
.mb span:nth-child(3){top:28px}
.nav.open .mb span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.nav.open .mb span:nth-child(2){opacity:0}
.nav.open .mb span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
.mm{display:none}
.nav .mm .wrap{display:block;height:auto}
.nav .mm .mono{display:block;color:var(--sand);font-size:12px;margin-bottom:4px}
.nav .mm ul{display:block;gap:0;list-style:none;margin:0;padding:0}
.nav .mm .ms{display:grid;grid-template-columns:1fr 1fr;column-gap:28px;row-gap:0;margin-bottom:18px}
.nav .mm ul a{display:block;padding:11px 0;border-bottom:1px solid rgba(255,255,255,.1);color:#fff;opacity:1;font-size:17px;font-weight:500}
.nav .mm .ml a{font-size:21px;font-weight:600}
.nav .mm ul a.here{color:var(--sand)}
.nav .mm .acts{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
@media (max-width:1140px){
  .mb{display:block}
  .nav.open{background:var(--navy)}
  .nav.open .mm{display:block;position:absolute;top:100%;left:0;right:0;max-height:calc(100vh - 88px);overflow-y:auto;padding:12px 0 30px;background:var(--navy);border-top:1px solid rgba(255,255,255,.1)}
}
@media (max-width:760px){
  .nav.open .mm{max-height:calc(100vh - 76px)}
  .nav .mm .ms{grid-template-columns:1fr}
}
/* logo shine: a soft light passes over the logo once, and again on hover.
   The mask is the logo shape (inline, so it also works from file://),
   so the light shows only on the blue waves. */
.nav .logo{position:relative;display:inline-block;line-height:0;
  --logo-shape:url(data:image/png;base64,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)}
.nav .logo::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.8) 50%,transparent 65%) no-repeat;
  background-size:250% 100%;background-position:150% 0;
  -webkit-mask:var(--logo-shape) center/contain no-repeat;mask:var(--logo-shape) center/contain no-repeat;
  animation:shine 1.4s ease-in-out .6s 1 both}
.nav .logo:hover::after{animation:shine2 1.1s ease-in-out 1 both}
@keyframes shine{from{background-position:150% 0}to{background-position:-50% 0}}
@keyframes shine2{from{background-position:150% 0}to{background-position:-50% 0}}
/* fade-in on scroll. quote.js adds .rv to <html>, so nothing is hidden without it */
.rv .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}
.rv .reveal.in{opacity:1;transform:none}
/* visitors who turn motion off see no shine and no fade */
@media (prefers-reduced-motion:reduce){.nav .logo::after{display:none}.rv .reveal{opacity:1;transform:none;transition:none}}
/* season chip in the home hero (build/season.py) */
.season-chip{display:inline-flex;align-items:center;gap:8px;margin-bottom:20px;padding:7px 14px;border-radius:999px;background:var(--sand);color:var(--navy);font-size:14px;font-weight:600}
.season-chip svg{width:16px;height:16px}
/* season section: two linked cards */
.sea2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.sea2 a{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1fr);background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;color:inherit}
.sea2 .im{position:relative;min-height:240px}
.sea2 .im img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.sea2 .im .stand{top:12px;left:12px;font-size:10px}
.sea2 .tx{padding:28px}
.sea2 h3{font-size:24px;margin:0 0 10px}
.sea2 p{margin:0 0 18px;color:var(--soft);font-size:15px}
.sea2 .more{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--blue)}
.sea2 .more svg{width:16px;height:16px}
@media (max-width:900px){.sea2{grid-template-columns:minmax(0,1fr)}}
@media (max-width:520px){.sea2 a{grid-template-columns:minmax(0,1fr)}.sea2 .im{min-height:200px}}
/* before and after side by side, for photos taken from different spots */
.pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pair figure{position:relative;margin:0}
.pair img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:var(--r);display:block}
.pair .t{position:absolute;top:14px;left:14px;font-size:13px;font-weight:600;color:#fff;background:rgba(11,21,48,.65);padding:5px 12px;border-radius:999px}
.pair .t.r{background:var(--blue)}
/* single picture with an optional stand-in label */
.pw{position:relative}
.pw .stand{top:14px;right:14px}
/* captioned galleries */
.gal figure{margin:0}
.gal figcaption{font-size:14px;color:var(--soft);margin-top:8px}
.gal.g3{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:22px}
@media (max-width:760px){.gal.g3{grid-template-columns:1fr 1fr}}
/* v3: slider rows of 2, plain photos beside sliders, gallery rows of 2 */
.ba-row.n2,.ba-row.n4{grid-template-columns:repeat(2,minmax(0,1fr))}
.ba-row .still{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:var(--r);display:block}
.gal.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:980px){.ba-row.n2,.ba-row.n4{grid-template-columns:minmax(0,1fr)}}
