:root{--purple:#3b316c;--blue:#0c4b73;--ice:#c6d4f2;--ink:#222940;--muted:#5b6478;--paper:#f3f5fa;--line:#dce1ec;--white:#fff}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:100px}
body{margin:0;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:#fff;line-height:1.6;font-size:16px}
img{display:block;max-width:100%;object-fit:cover}
a{color:inherit;text-underline-offset:5px}
button,summary,a{-webkit-tap-highlight-color:transparent}
button{font:inherit}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #6096ec;outline-offset:5px}
.wrap{width:min(1240px,calc(100% - 96px));margin-inline:auto}
.skip{position:fixed;top:-100px;left:15px;z-index:20;background:#fff;padding:12px}
.skip:focus{top:10px}

.site-header{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
.header-inner{min-height:108px;display:flex;align-items:center;justify-content:space-between;gap:25px}
.wordmark{text-decoration:none;display:flex;flex-direction:column;line-height:1.05;border-left:4px solid #92a6d7;padding-left:16px}
.wordmark strong{font-size:38px;letter-spacing:-2px;color:var(--purple)}
.wordmark strong span{font-weight:400}
.wordmark>span{font-size:12px;letter-spacing:1.25px;font-weight:700;margin-top:7px}
.header-inner nav{display:flex;align-items:center;gap:35px}
.header-inner nav>a{font-size:15px;font-weight:600;text-decoration:none}
.header-inner nav>a:not(.button):hover{color:var(--blue);text-decoration:underline}

.button{display:inline-flex;align-items:center;justify-content:center;gap:18px;background:var(--blue);color:#fff;padding:16px 24px;border:1px solid transparent;border-radius:3px;text-decoration:none;font-weight:700;line-height:1.4;transition:background .2s,transform .2s}
.button:hover{background:#17658e;transform:translateY(-2px)}
.button-small{padding:13px 21px}
button.button{cursor:pointer;border:1px solid transparent;font-family:inherit;font-size:15px}
button.button-outline-light,a.button-outline-light{background:transparent;border-color:#fff;color:#fff}
button.button-outline-light:hover,a.button-outline-light:hover{background:#fff;color:var(--purple);transform:translateY(-2px)}

.booking-body{padding:24px 28px 28px;min-height:480px}
.booking-intro{color:var(--muted);margin:0 0 20px;font-size:15px}
.booking-loading,.booking-empty{color:var(--muted);font-size:15px;padding:40px 0;text-align:center}

.booking-picker{display:grid;grid-template-columns:300px 1fr;gap:28px;align-items:start}
.booking-calendar{border:1px solid var(--line);border-radius:6px;padding:16px}
.booking-cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.booking-cal-nav .icon-button{width:32px;height:32px;font-size:16px;display:flex;align-items:center;justify-content:center}
.booking-cal-month{font-weight:700;font-size:15px;letter-spacing:-.2px;margin:0}
.booking-cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.4px;margin-bottom:4px}
.booking-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.booking-cal-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:13px;border:0;border-radius:50%;background:none;color:var(--ink);position:relative}
.booking-cal-cell.is-empty{visibility:hidden}
.booking-cal-cell.is-disabled{color:#c7cbd6;cursor:default}
.booking-cal-cell.has-slots{cursor:pointer;font-weight:700;color:var(--blue)}
.booking-cal-cell.has-slots::after{content:"";position:absolute;bottom:3px;left:50%;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--blue)}
.booking-cal-cell.has-slots:hover{background:var(--paper)}
.booking-cal-cell.is-selected{background:var(--purple);color:#fff}
.booking-cal-cell.is-selected::after{background:#fff}
.booking-cal-cell.is-today:not(.is-selected){box-shadow:inset 0 0 0 1px var(--line)}

.booking-times-label{font-weight:700;font-size:14px;margin:0 0 12px;color:var(--ink)}
.booking-times-list{display:flex;flex-wrap:wrap;gap:8px;align-content:flex-start}
.booking-times-empty{color:var(--muted);font-size:14px}
.booking-time{border:1px solid var(--line);background:#fff;border-radius:20px;padding:9px 16px;font-size:14px;cursor:pointer;transition:border-color .15s,background .15s,color .15s}
.booking-time:hover{border-color:var(--blue);color:var(--blue)}
.booking-time.is-selected{background:var(--purple);border-color:var(--purple);color:#fff}

.booking-selected{font-size:15px;color:var(--muted);margin:0 0 16px}
.booking-form{display:flex;flex-direction:column;gap:14px}
.booking-form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.booking-form label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700;color:var(--ink)}
.booking-optional{font-weight:400;color:var(--muted);text-transform:none;letter-spacing:0}
.booking-form input{border:1px solid var(--line);border-radius:4px;padding:11px 13px;font-size:15px;font-family:inherit;color:var(--ink)}
.booking-form input:focus{outline:2px solid var(--blue);outline-offset:1px}
.booking-form-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:6px}
.booking-status{font-size:13px;color:var(--blue);margin:0}
.booking-done{text-align:center;padding:40px 0}
.booking-done-title{font-family:inherit;font-weight:700;font-size:24px;color:var(--purple);margin:0 0 10px}
@media(max-width:640px){.booking-picker{grid-template-columns:1fr}.booking-form-row{grid-template-columns:1fr}.booking-form-actions{flex-direction:column;align-items:stretch;gap:12px}.booking-form-actions .button{order:-1}}

.hero{position:relative;background:var(--purple);min-height:650px;isolation:isolate;overflow:hidden}
.hero-photo{position:absolute;left:49%;right:0;top:0;bottom:0;z-index:-1}
.hero-photo img{width:100%;height:100%;object-position:52% center}
.hero-inner{min-height:650px;display:flex;align-items:center}
.hero-copy{width:48%;padding:54px 45px 62px 0}
.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:13px;font-weight:700;color:var(--blue);margin:0 0 19px;line-height:1.4}
.eyebrow.light{color:var(--ice)}
h1,h2,h3,p{margin-top:0}
h1{font-size:clamp(44px,4.85vw,70px);line-height:1.06;letter-spacing:-2.7px;color:#fff;margin-bottom:27px}
h1 span{color:var(--ice)}
.hero-tagline{color:#fff;font-size:20px;font-weight:700;margin-bottom:12px}
.hero-description{max-width:420px;color:#e1e4f2;font-size:17px;margin-bottom:29px}
.hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:21px}
.text-link{font-weight:700;font-size:15px;text-decoration:none;border-bottom:1px solid;padding-bottom:4px;display:inline-flex;gap:12px;align-items:center}
.text-link:hover{color:var(--blue)}
.light-link{color:#fff}
.light-link:hover{color:var(--ice)}

.section{padding-block:93px}
.section-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:60px;margin-bottom:42px}
.section-intro h2{margin:0}
h2{font-size:clamp(34px,3.25vw,46px);line-height:1.12;letter-spacing:-1.4px;font-weight:700}
.section-intro>p{max-width:435px;color:var(--muted);margin:0;font-size:17px}

.service-grid{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--line)}
.service-grid article{padding:30px 20px 8px;border-right:1px solid var(--line)}
.service-grid article:first-child{padding-left:0}
.service-grid article:last-child{border:0;padding-right:0}
.service-number{display:block;color:#6a7393;font-size:14px;font-weight:700;margin-bottom:22px}
.service-grid h3{font-size:20px;line-height:1.3;letter-spacing:-.4px;min-height:52px;margin-bottom:12px}
.service-grid p{font-size:15px;color:var(--muted);margin-bottom:0}

.projects-section{background:var(--paper)}
.project-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:30px}
.project{grid-column:span 2;background:#fff;min-width:0}
.project:nth-child(n+4){grid-column:span 3}
.project summary{list-style:none;cursor:pointer;display:block}
.project summary::-webkit-details-marker{display:none}
.project-image{overflow:hidden;position:relative;aspect-ratio:4/3;background:#e0e4ec}
.project:nth-child(n+4) .project-image{aspect-ratio:16/9}
.project-image img{width:100%;height:100%;transition:transform .4s}
.project summary:hover img{transform:scale(1.035)}
.photo-count{position:absolute;bottom:16px;right:16px;background:rgba(255,255,255,.96);padding:6px 11px;font-size:12px;letter-spacing:.4px;font-weight:700;border-radius:2px;color:var(--purple)}
.project-copy{padding:25px 25px 28px}
.project-copy .eyebrow{font-size:12px;margin-bottom:11px;letter-spacing:1.3px}
.project-copy h3{font-size:25px;line-height:1.18;letter-spacing:-.7px;margin-bottom:8px}
.project-place{color:var(--muted);font-size:14px;margin-bottom:16px}
.project-description{color:var(--muted);font-size:15px;line-height:1.6;margin-bottom:20px}
.project-cta{font-size:14px;font-weight:700;display:flex;justify-content:space-between;color:var(--blue)}
.inline-gallery{padding:0 22px 25px;display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.inline-gallery img{width:100%;aspect-ratio:4/3}

.about{display:grid;grid-template-columns:1fr 1fr;gap:75px;align-items:center}
.about-image img{width:100%;aspect-ratio:1.12;object-position:center}
.about-copy h2{font-size:clamp(30px,3vw,42px);margin-bottom:25px}
.about-copy p:not(.eyebrow){font-size:17px;color:var(--muted)}
.about-copy .text-link{margin-top:12px}

.contact-section{background:var(--purple);color:#fff;padding-block:83px}
.contact-inner{display:grid;grid-template-columns:1.12fr 1fr;gap:100px}
.contact-inner h2{font-size:clamp(40px,4.5vw,64px);letter-spacing:-2px;margin-bottom:23px}
.contact-inner>div>p:not(.eyebrow){max-width:480px;color:#e1e4f2;font-size:17px}
.contact-email{margin-top:10px}
.contact-inner>div>p.contact-note{font-size:13px;margin:12px 0 0}
.contact-details{padding:14px 0 0 50px;border-left:1px solid #726795}
.contact-details>div{margin-bottom:28px}
.contact-label{color:var(--ice);text-transform:uppercase;font-size:12px;font-weight:700;letter-spacing:1.5px;display:block;margin-bottom:9px}
.contact-details a{display:block;font-size:clamp(18px,2vw,23px);text-decoration:none;overflow-wrap:anywhere;line-height:1.5}
.contact-details a:hover{text-decoration:underline}
.contact-details .secondary-email{font-size:16px;margin-top:3px;color:#e1e4f2}
.contact-details p{font-size:22px;margin-bottom:3px}
.contact-details .contact-region{font-size:15px;color:var(--ice)}

.site-footer{padding-block:35px}
.footer-inner{display:flex;align-items:center;gap:30px;justify-content:space-between;flex-wrap:wrap}
.footer-brand strong{font-size:29px}
.footer-brand>span{font-size:10px}
.site-footer p,.social-links a,.back-top,.footer-email{font-size:13px;color:var(--muted);margin:0}
.footer-email{font-weight:700;text-decoration:none}
.footer-email:hover{color:var(--blue);text-decoration:underline}
.social-links{display:flex;gap:19px}
.back-top{text-decoration:none}

dialog{border:0;border-radius:5px;padding:0;width:min(1100px,calc(100% - 40px));max-height:calc(100dvh - 40px);overflow:auto;background:#fff;color:var(--ink)}
#booking-dialog{width:min(720px,calc(100% - 40px))}
dialog::backdrop{background:rgba(16,14,37,.88);backdrop-filter:blur(5px)}
.gallery-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 28px}
.gallery-header .eyebrow{margin-bottom:5px;font-size:12px}
.gallery-header h2{font-size:27px;margin:0;letter-spacing:-.7px}
.icon-button{border:1px solid var(--line);background:#fff;cursor:pointer;border-radius:50%;width:44px;height:44px;flex-shrink:0}
.gallery-stage{position:relative;background:#141426;display:flex;justify-content:center;align-items:center;height:min(57dvh,640px)}
#gallery-image{width:100%;height:100%;object-fit:contain}
.gallery-arrow{position:absolute;top:calc(50% - 24px);width:48px;height:48px;background:#fff;color:var(--purple);border:0;border-radius:50%;font-size:32px;line-height:1;cursor:pointer;z-index:1;box-shadow:0 2px 15px #0003}
.previous{left:15px}
.next{right:15px}
.gallery-bottom{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 28px}
.gallery-bottom p{margin:0;font-size:14px}
#gallery-count{color:var(--blue);font-weight:700;white-space:nowrap}
#gallery-caption{flex:1;color:var(--muted)}
.gallery-bottom a{font-size:13px;white-space:nowrap}
.gallery-thumbs{display:flex;gap:9px;overflow-x:auto;padding:0 28px 23px}
.gallery-thumbs button{flex:0 0 83px;height:64px;background:none;padding:0;border:3px solid transparent;cursor:pointer}
.gallery-thumbs button[aria-current=true]{border-color:var(--blue)}
.gallery-thumbs img{width:100%;height:100%}
.gallery-open{overflow:hidden}

@media(min-width:1600px){.hero-photo{left:50%}.hero-copy{width:49%}}
@media(max-width:1100px){.wrap{width:calc(100% - 64px)}.header-inner nav{gap:22px}.hero-copy{padding-right:30px}.hero-actions{gap:16px}.hero-description{font-size:16px}.service-grid{grid-template-columns:repeat(3,1fr)}.service-grid article{padding:23px;border-bottom:1px solid var(--line)}.service-grid article:first-child{padding-left:23px}.service-grid article:last-child{padding-right:23px}.service-grid article:nth-child(3){border-right:0}.service-grid h3{min-height:0}.project-grid{gap:20px}.project-copy{padding:22px 19px}.project-copy h3{font-size:22px}.contact-inner{gap:50px}.contact-details{padding-left:30px}.about{gap:40px}.section{padding-block:75px}}
@media(max-width:760px){html{scroll-padding-top:20px}.wrap{width:calc(100% - 40px)}.header-inner{flex-wrap:wrap;gap:21px;padding-block:22px}.wordmark strong{font-size:31px}.wordmark>span{font-size:10px}.header-inner nav{width:100%;justify-content:space-between;gap:12px}.header-inner nav>a{font-size:14px}.header-inner nav .button{padding:10px 13px}.hero{display:flex;flex-direction:column}.hero-inner{min-height:auto;order:0}.hero-copy{width:100%;padding:45px 0}.hero h1{font-size:clamp(42px,9.4vw,66px);letter-spacing:-2px}.hero-photo{position:relative;left:auto;right:auto;top:auto;bottom:auto;order:1;height:320px;z-index:auto}.hero-photo img{object-position:center 58%}.hero-tagline{font-size:19px}.hero-description{max-width:460px}.hero-actions{gap:22px}.hero .eyebrow{font-size:12px}.section{padding-block:60px}.section-intro{display:block;margin-bottom:30px}.section-intro>p{margin-top:22px;font-size:16px}.service-grid{grid-template-columns:1fr 1fr}.service-grid article{border-right:0;padding:23px 16px 23px 0}.service-grid article:first-child{padding-left:0}.service-grid article:nth-child(even){border-left:1px solid var(--line);padding-left:20px;padding-right:0}.service-grid article:last-child{grid-column:span 2;padding:23px 0;max-width:100%}.service-number{margin-bottom:12px}.service-grid h3{font-size:20px}.project-grid{display:grid;grid-template-columns:1fr;gap:26px}.project,.project:nth-child(n+4){grid-column:auto}.project-image,.project:nth-child(n+4) .project-image{aspect-ratio:4/3}.project-copy{padding:25px}.project-copy h3{font-size:27px}.project-description{font-size:16px}.about{grid-template-columns:1fr;gap:30px}.about-image img{aspect-ratio:4/3}.about-copy h2{font-size:34px}.contact-section{padding-block:60px}.contact-inner{grid-template-columns:1fr;gap:38px}.contact-details{padding:30px 0 0;border:0;border-top:1px solid #726795}.contact-details a{font-size:21px}.footer-inner{gap:22px;align-items:flex-start}.footer-brand{width:100%}.site-footer p{width:100%;font-size:12px}.social-links{flex:1}.back-top{font-size:12px}dialog{width:calc(100% - 20px);max-height:calc(100dvh - 20px)}.gallery-header{padding:18px}.gallery-header h2{font-size:22px}.gallery-stage{height:46dvh}.gallery-bottom{padding:15px 18px;gap:10px;flex-wrap:wrap}.gallery-bottom #gallery-caption{order:3;flex-basis:100%;font-size:14px}.gallery-bottom a{margin-left:auto}.gallery-thumbs{padding:0 18px 20px}.gallery-arrow{width:40px;height:40px;top:calc(50% - 20px)}.previous{left:8px}.next{right:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}

.whatsapp-fab{position:fixed;bottom:24px;right:24px;width:58px;height:58px;background:#25d366;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 18px rgba(0,0,0,.28);z-index:30;transition:transform .2s,box-shadow .2s}
.whatsapp-fab:hover{transform:scale(1.08);box-shadow:0 6px 22px rgba(0,0,0,.34)}
@media(max-width:760px){.whatsapp-fab{width:52px;height:52px;bottom:18px;right:18px}}

#enquiry-dialog{width:min(480px,calc(100% - 40px))}
.enquiry-body{padding:8px 28px 28px}
.enquiry-intro{color:var(--muted);font-size:14px;margin:0 0 20px}
#enquiry-form{display:flex;flex-direction:column;gap:16px}
#enquiry-form[hidden]{display:none}
#enquiry-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}
#enquiry-form input,#enquiry-form textarea{border:1px solid var(--line);border-radius:6px;padding:12px 14px;font-size:15px;font-family:inherit;color:var(--ink);background:var(--paper);transition:border-color .15s,background .15s}
#enquiry-form input:focus,#enquiry-form textarea:focus{outline:none;border-color:var(--blue);background:#fff}
#enquiry-form textarea{resize:vertical;min-height:90px;line-height:1.5}
#enquiry-form button[type="submit"]{align-self:flex-start;cursor:pointer;margin-top:4px}
#enquiry-status{font-size:14px;color:var(--blue);margin:16px 0 0;font-weight:700}
#enquiry-status:empty{margin:0;display:none}
@media(max-width:480px){.enquiry-body{padding:4px 20px 24px}#enquiry-form button[type="submit"]{align-self:stretch}}
