/* Malířské práce Martin Šmídek – maldek.cz
   Statický web: Úvod, Služby + stránka každé služby, Galerie, Reference, Kontakty.
   Barvy a písma jsou definované v :root níže. */
:root{
  color-scheme:light;
  --blue:#1D50A6; --blue-deep:#103E8C; --navy:#0B2350; --blue-soft:#E9EFFA; --sky:#A9C4F5;
  --ink:#1E2328; --muted:#5C636B; --line:#E1E5EB;
  --grey:#EEEEEE; --panel:#F1F2F4; --dark:#15171A; --dark-2:#202328; --white:#FFFFFF; --gold:#F4B629;
  --f:"Onest",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --gut:clamp(16px,4vw,32px); --max:1180px;
  --ease:cubic-bezier(.2,.8,.2,1); --io:cubic-bezier(.75,0,.2,1);
  --shadow:0 2px 6px rgba(16,30,60,.06),0 22px 48px -22px rgba(16,30,60,.35);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:76px}
body{background:var(--white);color:var(--ink);font:16.5px/1.65 var(--f);-webkit-font-smoothing:antialiased;overflow-x:clip}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3{margin:0;line-height:1.08;text-wrap:balance;letter-spacing:-.025em}
p{margin:0}
.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--gut)}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:4px}
svg.i{width:18px;height:18px;flex:none}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.js .rv{opacity:0;transform:translateY(34px);transition:opacity .9s var(--ease),transform 1s var(--ease)}
.js .rv.in{opacity:1;transform:none}

/* info bar */
.info{background:var(--grey);font-size:14px;color:var(--muted)}
.info .wrap{display:flex;justify-content:flex-end;align-items:center;gap:22px;min-height:40px;flex-wrap:wrap}
.info a{display:inline-flex;align-items:center;gap:8px;text-decoration:none;font-style:italic}
.info a:hover{color:var(--blue)}
.info .fb{color:var(--blue)}.info .fb svg{width:22px;height:22px}
@media (max-width:560px){.info .mail{display:none}.info .wrap{justify-content:space-between}}

/* nav: centred links like the original */
.nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:60;background:var(--blue);color:#fff;box-shadow:0 6px 18px -8px rgba(16,62,140,.6)}
.nav .wrap{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;height:60px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:800;transition:transform .4s var(--ease)}
.logo:hover{transform:translateY(-2px)}
.nav.scrolled .logo{opacity:1;transform:none;pointer-events:auto}
.logo svg{width:136px;height:28px;color:#fff;flex:none}
.links{display:flex;gap:4px;list-style:none;margin:0;padding:0}
.links a{position:relative;display:block;padding:8px 15px;text-decoration:none;font-weight:600;font-size:15.5px;letter-spacing:.05em;text-transform:uppercase}
.links a i{position:absolute;inset:4px 4px;border-radius:999px;background:rgba(255,255,255,.16);transform:scale(.6);opacity:0;transition:.35s var(--ease);z-index:-1}
.links a:hover i,.links a.on i{transform:none;opacity:1}
.links a{isolation:isolate}
.call{justify-self:end;display:inline-flex;align-items:center;gap:8px;color:#fff;font-weight:700;font-size:15px;text-decoration:none;opacity:.95}
.call:hover{text-decoration:underline;text-underline-offset:4px}
.burger{all:unset;display:none;cursor:pointer;width:42px;height:42px;place-items:center;justify-self:end}
.burger span,.burger span::before,.burger span::after{display:block;width:22px;height:2px;background:#fff;border-radius:2px;position:relative;transition:.3s}
.burger span::before,.burger span::after{content:"";position:absolute;left:0}
.burger span::before{top:-7px}.burger span::after{top:7px}
.nav.open .burger span{background:transparent}
.nav.open .burger span::before{top:0;transform:rotate(45deg)}
.nav.open .burger span::after{top:0;transform:rotate(-45deg)}
@media (max-width:900px){
  .nav .wrap{grid-template-columns:1fr auto}
  .logo{opacity:1;transform:none;pointer-events:auto}
  .call{display:none}.burger{display:grid}
  .links{position:absolute;left:0;right:0;top:100%;flex-direction:column;background:var(--blue-deep);padding:6px var(--gut) 16px;clip-path:inset(0 0 100% 0);transition:clip-path .5s var(--io)}
  .nav.open .links{clip-path:inset(0)}
  .links a{padding:15px 2px;border-bottom:1px solid rgba(255,255,255,.12);font-size:19px}
  .links a i{display:none}
}

/* title */
.title{text-align:center;padding-block:clamp(34px,5vw,60px) clamp(24px,3.5vw,38px)}
.title h1{color:var(--blue);font-size:clamp(36px,6vw,74px);font-weight:800;letter-spacing:-.035em}
.title h1 .ln{display:block;overflow:hidden;padding-bottom:.06em}
.title h1 .ln span{display:inline-block;animation:lineUp 1s var(--ease) both}
.title h1 .ln:nth-child(2) span{animation-delay:.12s}
@keyframes lineUp{from{transform:translateY(110%)}}
.title p{margin-top:12px;color:var(--muted);font-size:clamp(16px,1.6vw,19px);animation:fade 1s .35s both}
@keyframes fade{from{opacity:0;transform:translateY(10px)}}

/* hero: photo painted in by a roller, brand column on the right */
.hero{max-width:1440px;margin-inline:auto;display:grid;grid-template-columns:1fr 190px;transform-origin:50% 0;will-change:transform}
.photo{position:relative;height:clamp(360px,44vw,600px);overflow:hidden;background:var(--blue-soft)}
.photo .pic{position:absolute;inset:0;clip-path:inset(0 0 100% 0);animation:paintDown 1.5s .45s var(--io) forwards}
.photo .pic img{width:100%;height:100%;object-fit:cover;object-position:40% 50%;transform:scale(1.08);animation:settle 2.4s .45s var(--ease) forwards}
@keyframes paintDown{to{clip-path:inset(0 0 0 0)}}
@keyframes settle{to{transform:scale(1)}}
.photo .roll{position:absolute;left:-2%;right:-2%;height:26px;top:0;border-radius:13px;background:linear-gradient(180deg,#fff,#d9e2f1 70%,#b9c7df);box-shadow:0 8px 20px rgba(0,0,0,.25);animation:rollDown 1.5s .45s var(--io) forwards;z-index:3}
@keyframes rollDown{0%{transform:translateY(-30px)}100%{transform:translateY(calc(clamp(360px,44vw,600px) + 10px));opacity:0}}
.photo::after{content:"";position:absolute;inset:0;z-index:1;background:radial-gradient(120% 90% at 0% 100%,rgba(8,22,52,.7),transparent 60%)}
.reach{position:absolute;z-index:2;left:clamp(16px,5vw,60px);bottom:clamp(22px,4vw,52px);right:16px;display:grid;gap:8px;color:#fff}
.reach a{display:flex;align-items:center;gap:12px;text-decoration:none;font-weight:700;font-size:clamp(18px,2.4vw,30px);line-height:1.2;text-shadow:0 2px 14px rgba(0,0,0,.4);width:fit-content;overflow-wrap:anywhere}
.reach a svg{width:24px;height:24px;flex:none}
.reach .t{border-right:2px solid transparent}
.reach .t.typing{border-color:#fff}
.brands{background:var(--panel);display:flex;flex-direction:column;justify-content:space-evenly;align-items:center;gap:14px;padding:18px}
.brands img{max-width:120px;max-height:52px;width:auto;object-fit:contain;opacity:0;transform:translateX(24px);animation:brandIn .8s var(--ease) forwards;transition:transform .4s var(--ease)}
.brands img:hover{transform:scale(1.1)}
.brands img:nth-child(1){animation-delay:1.6s}.brands img:nth-child(2){animation-delay:1.7s}.brands img:nth-child(3){animation-delay:1.8s}.brands img:nth-child(4){animation-delay:1.9s}.brands img:nth-child(5){animation-delay:2s}
@keyframes brandIn{to{opacity:1;transform:none}}
@media (max-width:820px){
  .hero{grid-template-columns:1fr}
  .photo{height:clamp(340px,92vw,480px)}
  @keyframes rollDown{0%{transform:translateY(-30px)}100%{transform:translateY(490px);opacity:0}}
  .brands{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:14px 26px;padding:16px}
  .brands img{max-width:84px;max-height:36px;transform:translateY(12px)}
}

/* statement */
.state{padding-block:clamp(70px,10vw,130px) clamp(40px,6vw,70px);text-align:center}
.kick{display:inline-block;font-weight:700;font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--blue);margin-bottom:18px}
.state h2{font-size:clamp(34px,6vw,78px);font-weight:800;max-width:14em;margin-inline:auto;letter-spacing:-.04em}
.brush{position:relative;white-space:nowrap;color:var(--blue)}
.brush svg{position:absolute;left:-4%;right:-4%;bottom:-.2em;width:108%;height:.42em;overflow:visible}
.brush path{fill:none;stroke:var(--gold);stroke-width:14;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.2s var(--io) .2s}
.brush.in path{stroke-dashoffset:0}
.state .lead{margin:28px auto 0;max-width:36em;font-size:clamp(18px,1.9vw,22px);color:#3A4148}
.state .lead b{color:var(--ink)}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:20px clamp(24px,4vw,48px);max-width:820px;margin:34px auto 0;text-align:left;color:var(--muted)}
.cols p b{color:var(--ink)}
@media (max-width:640px){.cols{grid-template-columns:1fr}}

/* map */
.where{padding-bottom:clamp(60px,8vw,110px)}
.where .head{text-align:center;max-width:640px;margin:0 auto 28px}
.where h2{font-size:clamp(28px,3.8vw,46px);font-weight:800}
.where .head p{color:var(--muted);margin-top:12px}
.mapbox{position:relative;max-width:980px;margin-inline:auto;border-radius:26px;background:var(--navy);overflow:hidden;box-shadow:var(--shadow)}
.mapbox svg{display:block;width:100%;height:auto}
.mapbox .ring{fill:none;stroke:rgba(169,196,245,.22);stroke-dasharray:3 6}
.mapbox .rlab{fill:rgba(169,196,245,.6);font:600 3.2px var(--f);letter-spacing:.06em}
.mapbox .ln{stroke:rgba(169,196,245,.55);stroke-width:.35;fill:none;stroke-dasharray:var(--l);stroke-dashoffset:var(--l);transition:stroke-dashoffset 1.1s var(--io)}
.mapbox .dot{fill:#fff;transform-box:fill-box;transform-origin:center;transform:scale(0);transition:transform .5s cubic-bezier(.3,1.6,.5,1)}
.mapbox .lab{fill:#E8EEFA;font:600 3.4px var(--f);opacity:0;transition:opacity .5s}
.mapbox .lab.sm{font-size:2.8px;fill:rgba(232,238,250,.75)}
.mapbox.go .ln{stroke-dashoffset:0}
.mapbox.go .dot{transform:scale(1)}
.mapbox.go .lab{opacity:1}
.mapbox.go .lab.sm{opacity:0}
.mapbox .home{fill:var(--gold)}
.mapbox .pulse{fill:none;stroke:var(--gold);stroke-width:.5;transform-box:fill-box;transform-origin:center;animation:pulse 2.4s ease-out infinite}
@keyframes pulse{from{transform:scale(.4);opacity:1}to{transform:scale(3.2);opacity:0}}
.mapbox .g:hover .dot{fill:var(--gold)}
.mapbox .g:hover .lab{fill:var(--gold);opacity:1}
.mapnote{position:absolute;left:18px;bottom:16px;right:18px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;color:var(--sky);font-size:13px}
.mapnote b{color:#fff;font-size:22px;font-weight:800;display:block;line-height:1}
.towns{max-width:980px;margin:14px auto 0;color:var(--muted);font-size:14px;text-align:center}

/* stacking sheets */
.why{padding-block:clamp(40px,6vw,80px) clamp(70px,9vw,120px)}
.why .head{text-align:center;margin-bottom:30px}
.why h2{font-size:clamp(28px,3.8vw,46px);font-weight:800}
.sheets{max-width:980px;margin-inline:auto;display:grid;gap:22px}
.sheet{position:sticky;top:calc(84px + var(--i)*16px);border-radius:26px;padding:clamp(26px,4vw,48px);display:grid;grid-template-columns:auto 1fr;gap:clamp(18px,3vw,40px);align-items:center;min-height:clamp(200px,24vw,260px);box-shadow:0 -10px 40px -20px rgba(10,30,70,.35);transform-origin:50% 0;will-change:transform}
.sheet .ic{width:clamp(64px,8vw,96px);height:clamp(64px,8vw,96px);border-radius:24px;display:grid;place-items:center}
.sheet .ic svg{width:48%;height:48%}
.sheet h3{font-size:clamp(24px,3vw,38px);font-weight:800}
.sheet p{margin-top:8px;font-size:clamp(16px,1.6vw,19px);max-width:30em}
.s1{background:var(--blue);color:#fff}.s1 .ic{background:rgba(255,255,255,.14)}.s1 p{opacity:.88}
.s2{background:var(--blue-soft);color:var(--ink)}.s2 .ic{background:var(--blue);color:#fff}.s2 p{color:var(--muted)}
.s3{background:var(--dark);color:#fff}.s3 .ic{background:var(--gold);color:var(--navy)}.s3 p{opacity:.8}
.s4{background:#fff;color:var(--ink);border:1px solid var(--line)}.s4 .ic{background:var(--blue-soft);color:var(--blue)}.s4 p{color:var(--muted)}
@media (max-width:560px){.sheet{grid-template-columns:1fr;top:calc(76px + var(--i)*12px)}}

/* dark CTA with drips */
.cta{position:relative;background:var(--dark);color:#fff;text-align:center;padding-block:clamp(90px,11vw,140px) clamp(56px,7vw,90px);overflow:hidden}
.drips{position:absolute;left:0;top:-1px;width:100%;height:120px;transform-origin:50% 0;transform:scaleY(var(--d,.25))}
.drips path{fill:#fff}
.cta h2{font-size:clamp(28px,4.4vw,56px);font-weight:900;text-transform:uppercase;letter-spacing:-.01em;color:var(--sky)}
.cta p{margin:14px auto 0;max-width:30em;font-size:clamp(17px,1.9vw,21px);opacity:.9}
.cta .tel{display:inline-block;margin-top:26px;font-size:clamp(34px,6vw,72px);font-weight:900;letter-spacing:-.03em;text-decoration:none;color:#fff;font-variant-numeric:tabular-nums}
.cta .tel:hover{color:var(--gold)}
.cta .acts{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:24px}
.btn{display:inline-flex;align-items:center;gap:10px;padding:14px 26px;border-radius:999px;font-weight:700;font-size:15.5px;text-decoration:none;border:2px solid transparent;transition:background .3s,color .3s,transform .3s var(--ease)}
.btn:hover{transform:translateY(-2px)}
.btn-line{border-color:rgba(255,255,255,.75);color:#fff}.btn-line:hover{background:#fff;color:var(--dark)}
.btn-gold{background:var(--gold);color:var(--navy)}.btn-gold:hover{background:#fff}
.btn-blue{background:var(--blue);color:#fff}.btn-blue:hover{background:var(--blue-deep)}

/* services: icon tiles in the grey box + slide-over detail sheet */
.svc-sec{padding-block:clamp(60px,8vw,110px)}
.box{background:var(--panel);border-radius:28px;padding:clamp(26px,5vw,64px)}
.box .head{text-align:center;margin-bottom:clamp(24px,3.5vw,40px)}
.box h2{font-size:clamp(30px,4.2vw,52px);font-weight:800}
.box .head p{color:var(--muted);margin-top:8px}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.tile{all:unset;box-sizing:border-box;cursor:pointer;position:relative;overflow:hidden;isolation:isolate;background:#fff;border-radius:22px;padding:26px 24px 24px;display:grid;grid-template-rows:auto auto 1fr auto;gap:8px;min-height:230px;transition:transform .5s var(--ease),box-shadow .5s,color .4s}
.tile::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(160deg,var(--blue),var(--blue-deep));clip-path:circle(0% at var(--cx,85%) var(--cy,15%));transition:clip-path .7s var(--io)}
.tile:hover,.tile:focus-visible{transform:translateY(-6px);box-shadow:var(--shadow);color:#fff}
.tile:hover::before,.tile:focus-visible::before{clip-path:circle(150% at var(--cx,85%) var(--cy,15%))}
.tile:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.tile .ico{width:62px;height:62px;border-radius:18px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;margin-bottom:10px;transition:background .4s,color .4s,transform .6s var(--ease)}
.tile .ico svg{width:32px;height:32px}
.tile .ico svg *{stroke-dasharray:80;stroke-dashoffset:0}
.tile:hover .ico,.tile:focus-visible .ico{background:rgba(255,255,255,.16);color:#fff;transform:rotate(-6deg)}
.tile:hover .ico svg *,.tile:focus-visible .ico svg *{animation:draw 1s var(--ease)}
@keyframes draw{from{stroke-dashoffset:80}}
.tile h3{font-size:21px;font-weight:800}
.tile p{font-size:15px;color:var(--muted);transition:color .4s}
.tile:hover p,.tile:focus-visible p{color:rgba(255,255,255,.85)}
.tile .go{display:flex;align-items:center;justify-content:space-between;font-weight:700;font-size:14px;color:var(--blue);padding-top:12px;border-top:1px solid var(--line);transition:color .4s,border-color .4s}
.tile .go b{width:34px;height:34px;border-radius:50%;background:var(--blue-soft);display:grid;place-items:center;transition:transform .5s var(--ease),background .4s,color .4s}
.tile:hover .go,.tile:focus-visible .go{color:#fff;border-color:rgba(255,255,255,.25)}
.tile:hover .go b,.tile:focus-visible .go b{background:var(--gold);color:var(--navy);transform:translateX(4px)}
@media (max-width:980px){.tiles{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.tiles{grid-template-columns:1fr}.tile{min-height:0;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:16px}.tile .ico{grid-row:span 2;margin:0;width:54px;height:54px}.tile .go{display:none}.tile h3{align-self:end;font-size:19px}}
.sheet-bg{position:fixed;inset:0;z-index:80;background:rgba(10,22,44,.55);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .4s}
.sheet-bg.on{opacity:1;pointer-events:auto}
.side{position:fixed;top:0;right:0;bottom:0;z-index:81;width:min(520px,100%);background:#fff;box-shadow:-20px 0 60px rgba(0,0,0,.25);transform:translateX(105%);transition:transform .6s var(--io);display:flex;flex-direction:column;padding-top:env(safe-area-inset-top,0px)}
.side.on{transform:none}
.side .top{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line)}
.side .top span{font-weight:700;font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--blue)}
.side .x{all:unset;cursor:pointer;width:42px;height:42px;border-radius:50%;background:var(--panel);display:grid;place-items:center;font-weight:800;transition:transform .4s var(--ease)}
.side .x:hover{transform:rotate(90deg)}
.side .x:focus-visible{outline:3px solid var(--gold)}
.side .body{overflow:auto;padding:26px 26px 30px;display:grid;gap:16px;align-content:start;flex:1}
.side .sico{width:70px;height:70px;border-radius:20px;background:var(--blue);color:#fff;display:grid;place-items:center}
.side .sico svg{width:36px;height:36px}
.side h3{font-size:clamp(26px,3vw,34px);font-weight:800;color:var(--ink)}
.side p{color:#3A4148}
.side img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:18px}
.side ul{margin:0;padding:0;list-style:none;display:grid;gap:2px}
.side li{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:15.5px;opacity:0;transform:translateX(16px)}
.side.on li{animation:liIn .5s var(--ease) forwards}
@keyframes liIn{to{opacity:1;transform:none}}
.side li::before{content:"";flex:none;width:20px;height:20px;border-radius:50%;background:var(--blue-soft) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231D50A6' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/12px no-repeat;margin-top:2px}
.side .foot{padding:16px 22px calc(16px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);display:flex;gap:10px;flex-wrap:wrap}

/* gallery: filterable project grid */
.gal-sec{padding-block:0 clamp(70px,9vw,120px)}
.gal-sec .head{text-align:center;margin-bottom:22px}
.gal-sec h2{font-size:clamp(30px,4.2vw,52px);font-weight:800}
.filters{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:26px}
.filters button{all:unset;cursor:pointer;padding:10px 18px;border-radius:999px;background:var(--panel);font-weight:600;font-size:15px;transition:background .3s,color .3s}
.filters button span{opacity:.55;margin-left:6px;font-variant-numeric:tabular-nums}
.filters button:hover{background:var(--blue-soft)}
.filters button.on{background:var(--blue);color:#fff}
.filters button:focus-visible{outline:3px solid var(--gold)}
.grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:clamp(200px,22vw,270px);gap:16px;max-width:1100px;margin-inline:auto}
.card{all:unset;cursor:zoom-in;position:relative;border-radius:20px;overflow:hidden;background:var(--blue-soft);box-shadow:0 1px 2px rgba(16,30,60,.06);transition:box-shadow .5s,transform .5s var(--ease)}
.card.feat{grid-column:span 2}
.card[hidden]{display:none}
.card:hover{box-shadow:var(--shadow);transform:translateY(-4px)}
.card:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.card img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease)}
.card:hover img{transform:scale(1.05)}
.card .lbl{position:absolute;left:12px;bottom:12px;right:12px;display:flex;justify-content:space-between;align-items:flex-end;gap:10px}
.card .lbl span{background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border-radius:14px;padding:9px 13px;display:grid;gap:1px;max-width:80%}
.card .lbl small{font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--blue)}
.card .lbl b{font-size:15px;line-height:1.3;color:var(--ink)}
.card .lbl i{flex:none;width:38px;height:38px;border-radius:50%;background:var(--gold);color:var(--navy);display:grid;place-items:center;font-style:normal;font-weight:900;transform:scale(0);transition:transform .45s var(--ease)}
.card:hover .lbl i,.card:focus-visible .lbl i{transform:scale(1)}
@media (max-width:860px){.grid{grid-template-columns:1fr 1fr;grid-auto-rows:clamp(170px,36vw,240px)}}
@media (max-width:540px){.grid{grid-template-columns:1fr;grid-auto-rows:auto}.card,.card.feat{grid-column:auto;aspect-ratio:4/3}}
.lb{border:0;padding:0;background:transparent;width:min(780px,94vw);max-width:none;overflow:visible}
.lb::backdrop{background:rgba(8,14,26,.9);backdrop-filter:blur(4px)}
.lb[open] img{animation:lbIn .5s var(--ease)}
@keyframes lbIn{from{opacity:0;transform:scale(.94)}}
.lb img{width:100%;max-width:760px;margin-inline:auto;border-radius:16px;max-height:76vh;object-fit:contain}
.lb .bar{display:flex;justify-content:space-between;align-items:center;gap:12px;color:#fff;margin-top:12px;font-weight:600;flex-wrap:wrap}
.lb .bar div{display:flex;gap:8px}
.lb button{all:unset;cursor:pointer;color:#fff;padding:7px 13px;border-radius:10px;border:1px solid rgba(255,255,255,.35);font-weight:700}
.lb button:hover{background:rgba(255,255,255,.12)}
.lb button:focus-visible{outline:2px solid var(--gold)}

/* references by type */
.refs{background:var(--blue);color:#fff;padding-block:clamp(70px,9vw,120px)}
.refs .head{text-align:center;max-width:780px;margin:0 auto}
.refs .kick{color:var(--sky)}
.refs h2{font-size:clamp(30px,4.6vw,58px);font-weight:800}
.refs .head p{margin-top:12px;color:#D8E3F8;font-size:clamp(16px,1.7vw,19px)}
.big{display:block;margin-top:22px;font-size:clamp(56px,10vw,130px);font-weight:900;line-height:1;letter-spacing:-.05em;color:#fff;font-variant-numeric:tabular-nums}
.big small{display:block;font-size:14px;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--sky);margin-top:6px}
.tabs{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:34px auto 26px}
.tabs button{all:unset;cursor:pointer;padding:10px 16px;border-radius:999px;border:1px solid rgba(255,255,255,.3);font-weight:600;font-size:14.5px;transition:background .3s,color .3s,border-color .3s}
.tabs button span{opacity:.65;margin-left:6px;font-variant-numeric:tabular-nums}
.tabs button:hover{border-color:#fff}
.tabs button.on{background:#fff;color:var(--blue);border-color:#fff}
.tabs button:focus-visible{outline:3px solid var(--gold)}
.rlist{list-style:none;margin:0 auto;padding:0;max-width:1000px;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.rlist li{padding:14px 16px;border-radius:14px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);font-weight:600;font-size:15px;display:flex;gap:10px;align-items:flex-start;animation:pop .5s var(--ease) both}
.rlist li i{flex:none;width:8px;height:8px;border-radius:50%;background:var(--gold);margin-top:8px}
@keyframes pop{from{opacity:0;transform:translateY(14px) scale(.97)}}

/* contacts footer (centred like the old site) */
footer{background:var(--dark);color:#D5D9DE;padding-block:clamp(64px,8vw,100px) 26px}
footer h2{text-align:center;color:#fff;font-size:clamp(30px,4vw,48px);font-weight:800}
footer .sub{text-align:center;color:#9AA1A9;margin-top:10px}
.fgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:clamp(28px,4vw,44px)}
.fc{background:var(--dark-2);border-radius:20px;padding:26px;display:grid;gap:8px;align-content:start;text-align:center;justify-items:center;min-width:0;transition:transform .45s var(--ease),background .3s}
.fc:hover{transform:translateY(-5px);background:#272B31}
.fc .ic{width:52px;height:52px;border-radius:50%;background:var(--blue);color:#fff;display:grid;place-items:center;margin-bottom:6px}
.fc .ic svg{width:22px;height:22px}
.fc small{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#8E959D;font-weight:700}
.fc .v{font-size:clamp(18px,1.9vw,22px);font-weight:700;color:#fff;text-decoration:none;overflow-wrap:anywhere}
.fc .v:hover{color:var(--sky)}
.fc p{font-size:15px}
.copy{all:unset;cursor:pointer;font-size:13px;font-weight:600;padding:6px 12px;border-radius:999px;border:1px solid #4A4F55;color:#C9CDD2;margin-top:4px}
.copy:hover{border-color:var(--sky);color:#fff}
.copy:focus-visible{outline:2px solid var(--gold)}
.fbot{margin-top:40px;padding-top:22px;border-top:1px solid #30343A;display:flex;flex-wrap:wrap;gap:12px 24px;justify-content:space-between;font-size:14px;color:#8E959D}
.fbot nav{display:flex;flex-wrap:wrap;gap:6px 18px}
.fbot a{text-decoration:none;color:#C9CDD2}.fbot a:hover{color:#fff}
@media (max-width:900px){.fgrid{grid-template-columns:1fr}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .photo .pic{clip-path:none}.photo .roll{display:none}
  .brands img{opacity:1;transform:none}
  .js .rv{opacity:1;transform:none}
  .brush path{stroke-dashoffset:0}
  .mapbox .ln{stroke-dashoffset:0}.mapbox .dot{transform:none}.mapbox .lab{opacity:1}
  html{scroll-behavior:auto}
}

/* sub-page header */
.phead{padding-block:clamp(34px,5vw,64px) clamp(22px,3vw,34px);text-align:center}
.crumbs{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;font-size:14px;color:var(--muted);margin-bottom:14px}
.crumbs a{color:var(--blue);text-decoration:none;font-weight:600}
.crumbs a:hover{text-decoration:underline}
.phead h1{color:var(--blue);font-size:clamp(36px,6vw,72px);font-weight:800;letter-spacing:-.035em}
.phead p{margin:14px auto 0;max-width:36em;color:var(--muted);font-size:clamp(16px,1.6vw,19px)}
.phead .line{display:block;width:72px;height:4px;border-radius:2px;background:var(--gold);margin:22px auto 0;transform-origin:center;animation:lineGrow .9s .2s var(--io) both}
@keyframes lineGrow{from{transform:scaleX(0)}}

/* home: personal intro (replaces the big centred statement) */
.hello{padding-block:clamp(60px,8vw,110px) clamp(30px,5vw,60px)}
.hello .card2{background:var(--blue-soft);border-radius:32px;padding:clamp(22px,4vw,48px);display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(24px,4vw,56px);align-items:center}
.hello figure{margin:0;position:relative}
.hello figure img{width:100%;aspect-ratio:4/4.3;object-fit:cover;object-position:40% 50%;border-radius:22px;box-shadow:var(--shadow);transform:rotate(-2.5deg);transition:transform .8s var(--ease)}
.hello figure:hover img{transform:rotate(0)}
.tape{position:absolute;width:96px;height:26px;background:rgba(244,182,41,.85);z-index:2;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.tape.a{top:-8px;left:18px;transform:rotate(-14deg)}
.tape.b{bottom:-6px;right:14px;transform:rotate(-10deg)}
.hello .tx{display:grid;gap:14px;min-width:0}
.hello .tag{font-size:13px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--blue)}
.hello h2{font-size:clamp(30px,4vw,50px);font-weight:800;color:var(--navy)}
.hello p{color:#38404A;font-size:clamp(16px,1.6vw,18px);max-width:34em}
.sign{font-family:"Caveat","Segoe Script","Brush Script MT",cursive;font-size:clamp(34px,4vw,46px);color:var(--blue);line-height:1;margin-top:4px;display:inline-block;transform:rotate(-3deg)}
.sign svg{display:block;width:180px;height:14px;margin-top:2px}
.sign path{fill:none;stroke:var(--blue);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.2s .3s var(--io)}
.sign.in path{stroke-dashoffset:0}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.chips span{display:inline-flex;align-items:center;gap:8px;background:#fff;border-radius:999px;padding:8px 14px;font-size:14px;font-weight:600;color:var(--navy)}
.chips svg{width:16px;height:16px;color:var(--blue)}
@media (max-width:820px){.hello .card2{grid-template-columns:1fr}.hello figure{max-width:420px;margin-inline:auto}}

/* home: services preview + gallery teaser */
.prev{padding-block:clamp(50px,7vw,90px)}
.prev .head{text-align:center;margin-bottom:28px}
.prev h2{font-size:clamp(28px,3.8vw,46px);font-weight:800}
.prev .head p{color:var(--muted);margin-top:10px}
.more{display:flex;justify-content:center;margin-top:28px}
.btn-ghost{border-color:var(--line);color:var(--ink);background:#fff}.btn-ghost:hover{border-color:var(--blue);color:var(--blue)}
.teaser{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;max-width:1100px;margin-inline:auto}
.teaser .card{aspect-ratio:3/4;cursor:pointer}
@media (max-width:860px){.teaser{grid-template-columns:1fr 1fr}}

/* service detail page */
.sd-head{display:grid;justify-items:center;text-align:center;gap:14px;padding-block:clamp(30px,5vw,56px) clamp(24px,3vw,36px)}
.sd-ico{width:clamp(84px,10vw,110px);height:clamp(84px,10vw,110px);border-radius:30px;background:var(--blue);color:#fff;display:grid;place-items:center;box-shadow:0 18px 40px -16px rgba(29,80,166,.7);animation:icoIn .9s var(--ease) both}
@keyframes icoIn{from{transform:scale(.5) rotate(-20deg);opacity:0}}
.sd-ico svg{width:50%;height:50%}
.sd-ico svg *{stroke-dasharray:80;animation:draw 1.4s .2s var(--ease) both}
.sd-head h1{color:var(--blue);font-size:clamp(34px,5.4vw,64px);font-weight:800;letter-spacing:-.035em}
.sd-head p{color:var(--muted);font-size:clamp(16px,1.7vw,19px);max-width:34em}
.sd-body{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(22px,4vw,48px);align-items:start;padding-bottom:clamp(50px,7vw,90px)}
.sd-main{display:grid;gap:18px}
.sd-main .lead{font-size:clamp(18px,1.9vw,21px);color:#2E353C;line-height:1.6}
.sd-main h2{font-size:22px;font-weight:800;margin-top:10px}
.checks{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.checks li{display:flex;gap:12px;align-items:flex-start;background:var(--panel);border-radius:14px;padding:14px 16px;font-weight:500;animation:pop .5s var(--ease) both}
.checks li::before{content:"";flex:none;width:22px;height:22px;border-radius:50%;background:var(--blue) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/12px no-repeat;margin-top:1px}
.sd-main img{width:100%;border-radius:22px;aspect-ratio:4/3;object-fit:cover;box-shadow:var(--shadow)}
.sd-aside{position:sticky;top:84px;display:grid;gap:14px}
.ask{background:var(--navy);color:#fff;border-radius:24px;padding:26px;display:grid;gap:12px}
.ask h3{font-size:22px;font-weight:800}
.ask p{color:#C9D6EE;font-size:15px}
.ask a.v{color:#fff;font-weight:800;font-size:22px;text-decoration:none}
.ask a.v:hover{color:var(--gold)}
.ask .m{font-size:15px;font-weight:600;color:var(--sky);text-decoration:none;overflow-wrap:anywhere}
.pn{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pn a{display:grid;gap:2px;padding:14px 16px;border-radius:16px;border:1px solid var(--line);text-decoration:none;transition:border-color .3s,transform .3s var(--ease)}
.pn a:hover{border-color:var(--blue);transform:translateY(-2px)}
.pn small{font-size:12px;color:var(--muted);font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.pn b{font-size:15px;color:var(--blue)}
.pn a:last-child{text-align:right}
.others{padding-block:0 clamp(60px,8vw,100px)}
.others h2{text-align:center;font-size:clamp(24px,3vw,34px);font-weight:800;margin-bottom:20px}
.others .row{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.others .row a{display:inline-flex;align-items:center;gap:10px;padding:10px 16px 10px 10px;border-radius:999px;background:var(--panel);text-decoration:none;font-weight:600;transition:background .3s,color .3s}
.others .row a span{width:34px;height:34px;border-radius:50%;background:#fff;color:var(--blue);display:grid;place-items:center}
.others .row a span svg{width:18px;height:18px}
.others .row a:hover{background:var(--blue);color:#fff}
@media (max-width:860px){.sd-body{grid-template-columns:1fr}.sd-aside{position:static}.checks{grid-template-columns:1fr}}

/* contacts page */
.kgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;max-width:1100px;margin-inline:auto}
.kc{border-radius:24px;padding:28px;display:grid;gap:10px;align-content:start;background:var(--panel);min-width:0;transition:transform .5s var(--ease),box-shadow .5s}
.kc:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.kc.main{background:var(--blue);color:#fff}
.kc .ic{width:54px;height:54px;border-radius:16px;background:#fff;color:var(--blue);display:grid;place-items:center;margin-bottom:6px}
.kc .ic svg{width:24px;height:24px}
.kc small{font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;opacity:.7}
.kc .v{font-size:clamp(20px,2.2vw,26px);font-weight:800;text-decoration:none;overflow-wrap:anywhere;color:inherit}
.kc .v:hover{text-decoration:underline;text-underline-offset:4px}
.kc .copy{border-color:currentColor;color:inherit;opacity:.8;justify-self:start}
.kc p{font-size:15.5px}
.kplace{max-width:1100px;margin:16px auto 0;border-radius:24px;background:var(--blue-soft);padding:clamp(22px,3vw,34px);display:flex;gap:18px;align-items:center;flex-wrap:wrap;justify-content:space-between}
.kplace h3{font-size:22px;font-weight:800;color:var(--navy)}
.kplace p{color:#38404A;max-width:40em}
@media (max-width:900px){.kgrid{grid-template-columns:1fr}}

.homeform{padding-block:clamp(60px,8vw,110px)}

/* colour visualiser */
.viz{padding-block:clamp(60px,8vw,110px)}
.viz .box2{background:var(--blue-soft);border-radius:32px;padding:clamp(20px,3.6vw,46px);display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(22px,4vw,52px);align-items:center}
.room{position:relative;border-radius:24px;overflow:hidden;box-shadow:var(--shadow);background:#fff}
.room svg{display:block;width:100%;height:auto}
.room .w{transition:fill .7s var(--ease)}
.room .night{opacity:0;transition:opacity .8s var(--ease);pointer-events:none}
.room.eve .night{opacity:1}
.room .glow{opacity:0;transition:opacity .8s var(--ease)}
.room.eve .glow{opacity:1}
.room .sky{transition:fill .8s}
.swname{position:absolute;left:14px;bottom:14px;background:rgba(255,255,255,.95);border-radius:14px;padding:10px 14px;box-shadow:0 6px 18px rgba(0,0,0,.12);display:flex;gap:10px;align-items:center}
.swname i{width:28px;height:28px;border-radius:8px;border:1px solid rgba(0,0,0,.1);transition:background .5s}
.swname b{display:block;font-size:15px;line-height:1.2}
.swname small{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.daynight{all:unset;cursor:pointer;position:absolute;right:14px;top:14px;background:rgba(255,255,255,.95);border-radius:999px;padding:8px 14px;font-size:13.5px;font-weight:700;box-shadow:0 6px 18px rgba(0,0,0,.12);display:flex;gap:8px;align-items:center}
.daynight:focus-visible{outline:3px solid var(--gold)}
.daynight svg{width:16px;height:16px}
.vtx{display:grid;gap:16px;min-width:0}
.vtx .tag{font-size:13px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--blue)}
.vtx h2{font-size:clamp(28px,3.6vw,44px);font-weight:800;color:var(--navy)}
.vtx p{color:#38404A}
.mode{display:inline-flex;background:#fff;border-radius:16px;padding:5px;gap:4px;justify-self:start}
.mode label{cursor:pointer;position:relative}
.mode input{position:absolute;opacity:0}
.mode span{display:block;padding:10px 16px;border-radius:12px;font-weight:700;font-size:14.5px;color:var(--muted);transition:background .25s,color .25s}
.mode input:checked+span{background:var(--blue);color:#fff}
.mode input:focus-visible+span{outline:3px solid var(--gold)}
.sw{display:grid;gap:12px}
.sw .fam{display:grid;grid-template-columns:62px 1fr;gap:10px;align-items:center}
.sw .fam small{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.sw .row{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.sw button{all:unset;cursor:pointer;aspect-ratio:1.5;border-radius:14px;border:1px solid rgba(0,0,0,.08);position:relative;transition:transform .3s var(--ease),box-shadow .3s}
.sw button:hover{transform:translateY(-3px);box-shadow:0 8px 18px -8px rgba(0,0,0,.35)}
.sw button.on{box-shadow:0 0 0 3px #fff,0 0 0 5px var(--blue)}
.sw button:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.sw button.on::after{content:"";position:absolute;inset:0;margin:auto;width:16px;height:16px;border-radius:50%;background:rgba(255,255,255,.9) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231D50A6' stroke-width='3.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/10px no-repeat}
.vtx .note{font-size:13.5px;color:var(--muted)}
.vtx .btn{justify-self:start}
@media (max-width:900px){.viz .box2{grid-template-columns:1fr}}
@media (max-width:420px){.sw .fam{grid-template-columns:1fr;gap:6px}}

/* compact footer */
.foot{background:var(--dark);color:#C9CDD2;padding-block:44px 24px}
.foot .top{display:flex;flex-wrap:wrap;gap:22px 40px;justify-content:space-between;align-items:center}
.foot .brand{display:flex;align-items:center;gap:12px;color:#fff;font-weight:800;font-size:18px;text-decoration:none}
.foot .brand svg{width:110px;height:23px;color:#fff;flex:none}
.foot .brand small{display:block;font-weight:500;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#8E959D}
.foot nav{display:flex;flex-wrap:wrap;gap:6px 20px}
.foot a{color:#C9CDD2;text-decoration:none}
.foot a:hover{color:#fff}
.foot .ct{display:grid;gap:2px;text-align:right;font-weight:600}
.foot .ct a:first-child{color:#fff;font-size:20px;font-weight:800}
.foot .bot{margin-top:28px;padding-top:18px;border-top:1px solid #30343A;display:flex;flex-wrap:wrap;gap:10px 24px;justify-content:space-between;font-size:13.5px;color:#8E959D}
@media (max-width:700px){.foot .ct{text-align:left}}


/* contact form */
.kwrap{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,.85fr);gap:18px;max-width:1100px;margin-inline:auto;align-items:start}
.kside{display:grid;gap:14px}
.kside .kc{padding:22px}
.form{background:#fff;border:1px solid var(--line);border-radius:28px;padding:clamp(22px,3.4vw,40px);box-shadow:var(--shadow);position:relative;overflow:hidden}
.form h2{font-size:clamp(24px,2.8vw,32px);font-weight:800;color:var(--navy)}
.form .sub{color:var(--muted);margin-top:6px;margin-bottom:22px}
.fgrid2{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}
.fld{display:grid;gap:6px;min-width:0}
.fld.full{grid-column:1/-1}
.fld label,.fld .lab{font-size:13.5px;font-weight:700;color:var(--ink)}
.fld label i{font-style:normal;color:var(--blue)}
.fld input,.fld textarea{font:inherit;font-size:16px;color:var(--ink);background:var(--panel);border:2px solid transparent;border-radius:14px;padding:13px 15px;width:100%;transition:border-color .25s,background .25s,box-shadow .25s}
.fld textarea{min-height:130px;resize:vertical}
.fld input:hover,.fld textarea:hover{background:#ECEEF1}
.fld input:focus,.fld textarea:focus{outline:none;background:#fff;border-color:var(--blue);box-shadow:0 0 0 4px rgba(29,80,166,.12)}
.fld.err input,.fld.err textarea{border-color:#C93A2E;background:#FFF5F4}
.fld .msg{font-size:13px;color:#C93A2E;font-weight:600;min-height:0}
.fld .hint{font-size:12.5px;color:var(--muted)}
.svcpick{display:flex;flex-wrap:wrap;gap:8px}
.svcpick label{position:relative;cursor:pointer}
.svcpick input{position:absolute;opacity:0;pointer-events:none}
.svcpick span{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:999px;background:var(--panel);font-size:14px;font-weight:600;border:2px solid transparent;transition:background .25s,color .25s,border-color .25s,transform .25s var(--ease)}
.svcpick span::before{content:"+";font-weight:800;color:var(--blue);transition:transform .3s var(--ease)}
.svcpick label:hover span{border-color:var(--sky)}
.svcpick input:checked+span{background:var(--blue);color:#fff}
.svcpick input:checked+span::before{content:"✓";color:var(--gold)}
.svcpick input:focus-visible+span{outline:3px solid var(--gold);outline-offset:2px}
.seg{display:inline-flex;background:var(--panel);border-radius:999px;padding:4px;gap:4px;flex-wrap:wrap}
.seg label{cursor:pointer;position:relative}
.seg input{position:absolute;opacity:0}
.seg span{display:block;padding:9px 16px;border-radius:999px;font-size:14px;font-weight:600;transition:background .25s,color .25s}
.seg input:checked+span{background:#fff;color:var(--blue);box-shadow:0 2px 8px rgba(16,30,60,.12)}
.seg input:focus-visible+span{outline:3px solid var(--gold)}
.agree{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--muted);cursor:pointer}
.agree input{width:20px;height:20px;accent-color:var(--blue);margin-top:1px;flex:none}
.fld.err .agree{color:#C93A2E}
.fbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:6px}
.fbar small{color:var(--muted);font-size:13px}
.send{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:10px;background:var(--blue);color:#fff;font-weight:800;padding:15px 26px;border-radius:999px;position:relative;overflow:hidden;isolation:isolate;transition:transform .3s var(--ease)}
.send::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--navy);transform:translateX(-101%);transition:transform .45s var(--io)}
.send:hover::before{transform:none}
.send:hover{transform:translateY(-2px)}
.send:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.send .arr{transition:transform .35s var(--ease)}
.send:hover .arr{transform:translateX(5px)}
.send.busy{pointer-events:none}
.send.busy .arr{animation:spin .8s linear infinite;display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
.done{position:absolute;inset:0;background:var(--blue);color:#fff;display:grid;place-items:start center;text-align:center;padding:clamp(48px,8vw,90px) 26px 30px;clip-path:inset(0 0 100% 0);transition:clip-path .7s var(--io);z-index:5}
.form.sent .done{clip-path:inset(0)}
.done .ok{width:84px;height:84px;border-radius:50%;background:var(--gold);color:var(--navy);display:grid;place-items:center;margin:0 auto 18px;transform:scale(0);transition:transform .6s .45s cubic-bezier(.3,1.6,.5,1)}
.form.sent .done .ok{transform:scale(1)}
.done .ok svg{width:42px;height:42px}
.done .ok path{stroke-dasharray:30;stroke-dashoffset:30;transition:stroke-dashoffset .6s .8s var(--ease)}
.form.sent .done .ok path{stroke-dashoffset:0}
.done h3{font-size:clamp(24px,3vw,32px);font-weight:800}
.done p{color:#D4E0F6;margin:10px auto 0;max-width:30em}
.done .note{font-size:13px;color:var(--sky);margin-top:14px}
.done button{all:unset;cursor:pointer;margin-top:22px;display:inline-block;padding:12px 22px;border-radius:999px;border:2px solid rgba(255,255,255,.7);font-weight:700}
.done button:hover{background:#fff;color:var(--blue)}
.done button:focus-visible{outline:3px solid var(--gold)}
@media (max-width:900px){.kwrap{grid-template-columns:1fr}}
@media (max-width:560px){.fgrid2{grid-template-columns:1fr}}


/* ===== statický web: doplňky ===== */
picture{display:contents}
.skip{position:absolute;left:12px;top:-60px;z-index:300;background:var(--gold);color:var(--navy);font-weight:800;padding:10px 16px;border-radius:10px;text-decoration:none}
.skip:focus{top:12px}
address{font-style:normal}
.ask h2{font-size:22px;font-weight:800;margin:0}
.btn svg.i{width:18px;height:18px}
.nav nav{display:contents}

/* načítací přechod s logem (jako na webu úklidu) */
.pgload{position:fixed;inset:0;z-index:400;pointer-events:none;background:linear-gradient(135deg,var(--blue) 0%,var(--navy) 100%);clip-path:inset(0 100% 0 0);visibility:hidden}
.pgload .blade{position:absolute;top:-5%;bottom:-5%;left:0;width:16px;opacity:0;transform:skewX(-8deg);background:linear-gradient(90deg,rgba(255,255,255,0),#fff 40%,#FFE7A8 60%,rgba(255,255,255,0));box-shadow:0 0 30px rgba(255,255,255,.6)}
.pgload .lg{position:absolute;inset:0;margin:auto;width:min(480px,82vw);height:min(99px,16.9vw);color:#fff;overflow:hidden;filter:drop-shadow(0 0 18px rgba(255,255,255,.45)) drop-shadow(0 10px 22px rgba(0,0,0,.35));opacity:0;transform:scale(.8)}
.pgload .lg svg{width:100%;height:100%;display:block;animation:pgPulse 1s ease-in-out infinite}
@keyframes pgPulse{50%{transform:scale(1.04)}}
/* odchod ze stránky: modrá plocha (0,26 s), logo naskočí a je vidět ~0,5 s, pak se přejde */
.pgload.in{visibility:visible;animation:pgIn .26s var(--io) forwards}
.pgload.in .blade{animation:pgBladeIn .26s var(--io) forwards}
.pgload.in .lg{animation:pgLogo .26s .04s cubic-bezier(.3,1.5,.5,1) forwards}
/* příchod na novou stránku: logo už svítí, drží ~0,45 s, pak plocha odjede (0,35 s) */
html.pgl-out .pgload{visibility:visible;clip-path:inset(0)}
html.pgl-out .pgload .lg{opacity:1;transform:none}
html.pgl-out .pgload.out{animation:pgOut .35s var(--io) forwards}
html.pgl-out .pgload.out .lg{animation:pgLogoOut .25s forwards}
html.pgl-out .pgload.out .blade{animation:pgBladeOut .35s var(--io) forwards}
@keyframes pgIn{to{clip-path:inset(0)}}
@keyframes pgBladeIn{from{left:0;opacity:1}to{left:100%;opacity:1}}
@keyframes pgLogo{to{opacity:1;transform:none}}
@keyframes pgOut{from{clip-path:inset(0)}to{clip-path:inset(0 0 0 100%)}}
@keyframes pgLogoOut{to{opacity:0;transform:scale(1.06)}}
@keyframes pgBladeOut{from{left:0;opacity:1}to{left:100%;opacity:0}}
@media (prefers-reduced-motion:reduce){.pgload{display:none!important}}

/* galerie: záložky + sekce */
.gtabs{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:0 auto 30px;position:sticky;top:64px;z-index:20;padding:10px 0;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.gtabs button{all:unset;box-sizing:border-box;cursor:pointer;min-height:44px;display:inline-flex;align-items:center;padding:10px 18px;border-radius:999px;background:var(--panel);font-weight:600;font-size:15px;transition:background .3s,color .3s}
.gtabs button span{opacity:.55;margin-left:6px;font-variant-numeric:tabular-nums}
.gtabs button:hover{background:var(--blue-soft)}
.gtabs button[aria-selected="true"]{background:var(--blue);color:#fff}
.gtabs button:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.gsec{padding-block:6px 40px;scroll-margin-top:150px}
.gsec[hidden]{display:none}
.ghd{display:flex;align-items:baseline;gap:8px 16px;flex-wrap:wrap;margin-bottom:16px}
.ghd h2{font-size:clamp(24px,3vw,34px);font-weight:800;color:var(--navy)}
.ghd span{color:var(--muted);font-size:14px;font-variant-numeric:tabular-nums}
.ghd .gmore{margin-left:auto;color:var(--blue);font-weight:700;font-size:15px;text-decoration:none}
.ghd .gmore:hover{text-decoration:underline}
.gsub{font-size:18px;font-weight:800;color:var(--ink);margin:6px 0 12px}
.ggrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:22px}
.gitem{margin:0;min-width:0}
.gbtn{all:unset;box-sizing:border-box;cursor:zoom-in;display:block;width:100%;aspect-ratio:4/3;border-radius:14px;overflow:hidden;background:var(--blue-soft);position:relative}
.gbtn img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s var(--ease)}
.gbtn:hover img{transform:scale(1.05)}
.gbtn:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.catg{grid-template-columns:repeat(5,minmax(0,1fr))}
.gitem.cat .gbtn{background:#fff;border:1px solid var(--line);aspect-ratio:3/2}
.gitem.cat .gbtn img{object-fit:contain;padding:10px}
.gitem.cat .gbtn:hover img{transform:scale(1.04)}
@media (max-width:1024px){.ggrid{grid-template-columns:repeat(3,minmax(0,1fr))}.catg{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:640px){.ggrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.catg{grid-template-columns:repeat(2,minmax(0,1fr))}.gtabs{top:56px;justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-inline:2px}.gtabs::-webkit-scrollbar{display:none}.gtabs button{flex:none}.ghd .gmore{margin-left:0}}

/* lightbox */
.lb{border:0;padding:0;background:transparent;width:min(1100px,94vw);max-width:none;max-height:96vh;overflow:visible}
.lb::backdrop{background:rgba(8,14,26,.92)}
.lb figure{margin:0;display:grid;justify-items:center;gap:10px}
.lb img{display:block;max-width:100%;max-height:78vh;width:auto;height:auto;border-radius:12px;touch-action:pan-y;user-select:none}
.lb[open] img{animation:lbIn .35s var(--ease)}
@keyframes lbIn{from{opacity:0;transform:scale(.96)}}
.lb figcaption{color:#fff;font-weight:600;text-align:center;max-width:60ch}
.lb .bar{display:flex;justify-content:space-between;align-items:center;gap:12px;color:#C9D3EA;margin-top:12px;flex-wrap:wrap;font-variant-numeric:tabular-nums}
.lb .bar div{display:flex;gap:8px}
.lb button{all:unset;cursor:pointer;min-width:44px;min-height:44px;box-sizing:border-box;display:inline-grid;place-items:center;color:#fff;padding:6px 14px;border-radius:10px;border:1px solid rgba(255,255,255,.35);font-weight:700}
.lb button:hover{background:rgba(255,255,255,.12)}
.lb button:focus-visible{outline:3px solid var(--gold)}

/* kontakty: mapa */
.kform-page{padding-top:0}
.mapsec{padding-block:0 clamp(60px,8vw,110px)}
.mapbox2{max-width:1100px;margin-inline:auto;background:var(--blue-soft);border-radius:28px;padding:clamp(18px,3vw,34px);display:grid;gap:18px}
.mhd h2{font-size:clamp(24px,3vw,34px);font-weight:800;color:var(--navy)}
.mhd p{color:#38404A;margin-top:6px;max-width:60ch}
.mframe{position:relative;aspect-ratio:16/9;border-radius:20px;overflow:hidden;background:#dfe6f2;box-shadow:var(--shadow)}
.mframe iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.macts{display:flex;flex-wrap:wrap;gap:10px}
@media (max-width:640px){.mapbox2{border-radius:20px;padding:14px}.mframe{aspect-ratio:4/3.4;border-radius:14px}.macts .btn{flex:1 1 100%;justify-content:center}}

/* reference: statický seznam s filtrem */
.rlist li[hidden]{display:none}
.tabs button{min-height:44px}

/* mapa: kreslený podklad, dokud se nenačte Google mapa */
.mfacade{position:absolute;inset:0}
.mfacade svg{width:100%;height:100%;display:block}
.mfacade .mpulse{transform-box:fill-box;transform-origin:center;animation:mpulse 2.4s ease-out infinite}
@keyframes mpulse{from{transform:scale(.6);opacity:1}to{transform:scale(3.4);opacity:0}}
.mlabel{position:absolute;left:16px;bottom:16px;right:16px;max-width:360px;background:#fff;border-radius:14px;padding:12px 16px;box-shadow:var(--shadow);font-size:14.5px;color:#38404A;display:grid;gap:2px}
.mlabel b{color:var(--navy);font-size:15.5px}
.mframe iframe{opacity:0;transition:opacity .6s}
.mframe iframe.on{opacity:1}
@media (prefers-reduced-motion:reduce){.mfacade .mpulse{animation:none}}
@media (max-width:640px){.mlabel{display:none}}
