@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--ink:#072b3b;--ocean:#0c4253;--teal:#3fe0cf;--paper:#fff;--mist:#eff5f6;--muted:#506773;--line:#d9e3e7}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;font-family:'Plus Jakarta Sans',Arial,sans-serif;font-size:16px;line-height:1.7;color:var(--ink);background:var(--paper)}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}a,button{touch-action:manipulation}button:focus-visible,a:focus-visible,.hero:focus-visible{outline:3px solid #008c86;outline-offset:6px}::selection{background:var(--teal);color:var(--ink)}h1,h2,h3,p{margin:0}h1,h2,h3,.wordmark{font-family:'Space Grotesk',Arial,sans-serif}h1,h2,h3{font-weight:500}em{font-style:normal;color:#087a7d}.skip{position:fixed;top:-100px;z-index:10;background:white;padding:12px}.skip:focus{top:0}.header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px 5%;min-height:100px}.wordmark{font-size:35px;font-weight:700;letter-spacing:-1.8px;line-height:1}.wordmark span{color:#079e9c}.header nav{display:flex;gap:32px;font-size:14px;font-weight:500}.header nav a:hover{color:#087a7d}.header-cta{display:flex;gap:25px;align-items:center;font-size:14px;border-bottom:1px solid var(--ink);padding:9px 0}.header-cta span{font-size:22px}.menu-toggle,.mobile-contact{display:none}.hero{position:relative;min-height:700px;background:var(--ink);color:white;isolation:isolate;overflow:hidden}.hero-image,.hero-shade{position:absolute;inset:0;z-index:-1}.hero-image img{width:100%;height:100%;object-fit:cover;object-position:center 55%}.hero-shade{background:linear-gradient(90deg,rgba(2,29,43,.94),rgba(2,29,43,.7) 40%,rgba(2,29,43,.06) 85%),linear-gradient(0deg,rgba(2,29,43,.75),transparent 38%)}.hero-content{padding:50px 6% 100px;max-width:1500px;margin:auto}.eyebrow{font-size:12px;letter-spacing:1.6px;font-weight:700;line-height:1.6}.hero .eyebrow{color:#b4dfdf}.hero-category{font-size:12px;letter-spacing:1.4px;margin:66px 0 19px;color:#b8d9df}h1{font-size:clamp(54px,6.4vw,94px);line-height:1.05;letter-spacing:-4.5px;max-width:900px}h1 em{color:var(--teal)}.hero-description{font-size:17px;max-width:440px;line-height:1.75;color:#d9e8ec;margin:25px 0 29px;min-height:90px}.button{display:inline-flex;justify-content:space-between;align-items:center;gap:36px;padding:15px 24px;min-height:54px;font-size:14px;font-weight:700;border-radius:3px;transition:transform .2s,background .2s}.button:hover{transform:translateY(-2px)}.button span{font-size:22px}.light{background:white;color:var(--ink)}.light:hover{background:var(--teal)}.dark{background:var(--ink);color:white}.dark:hover{background:#164c5f}.hero-bottom{position:absolute;bottom:28px;left:6%;right:6%;display:flex;justify-content:space-between;align-items:center;border-top:1px solid #ffffff40;padding-top:18px;gap:20px}.hero-location{font-size:11px;letter-spacing:1.5px}.slider-controls{display:flex;gap:8px;align-items:center}.slider-controls button{background:transparent;color:white;border:0;min-width:44px;min-height:44px;font-size:15px}.slider-controls .slide-dot{border-bottom:2px solid #ffffff40;color:#d2e6eb}.slider-controls .active{color:var(--teal);border-color:var(--teal)}.slider-controls button:hover{background:#ffffff18}.image-note{position:absolute;right:6%;bottom:5px;font-size:10px;color:#d4e3e6}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.section{padding:90px 6%}.intro{display:grid;grid-template-columns:1fr 2fr;gap:60px;border-bottom:1px solid var(--line)}.intro>.eyebrow{padding-top:12px}h2{font-size:clamp(36px,4vw,58px);line-height:1.15;letter-spacing:-2.1px}.intro p:not(.eyebrow){max-width:650px;color:var(--muted);margin-top:27px;font-size:17px}.section-heading{display:flex;justify-content:space-between;gap:60px;align-items:end;margin-bottom:43px}.section-heading .eyebrow{margin-bottom:24px}.section-heading>p{max-width:355px;color:var(--muted)}.products{background:var(--mist)}.product-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.product-card{background:white;display:flex;flex-direction:column;border:1px solid #e0e9ec}.card-image{position:relative;aspect-ratio:1.45;overflow:hidden}.card-image img{width:100%;height:100%;object-fit:cover;transition:transform .6s}.product-card:hover img{transform:scale(1.04)}.status{position:absolute;top:16px;left:16px;background:white;color:var(--ink);padding:5px 12px;border-radius:2px;font-size:12px;font-weight:600}.card-content{padding:28px;display:flex;flex-direction:column;flex:1}.category{font-size:11px;font-weight:700;letter-spacing:1.2px;color:#527381;margin-bottom:18px}h3{font-size:27px;line-height:1.2;letter-spacing:-.7px}.card-content>p:not(.category){font-size:15px;color:var(--muted);margin:20px 0 28px}.text-link{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:19px;font-size:14px;font-weight:700;margin-top:auto}.text-link:hover{color:#087a7d}.text-link span{font-size:22px}.product-note{font-size:13px;color:var(--muted);margin-top:23px}.approach{background:var(--ink);color:white}.approach .eyebrow{color:#a6c6cc}.approach h2 em{color:var(--teal)}.approach .section-heading>p{color:#bed0d6}.principles{display:grid;grid-template-columns:repeat(3,1fr);gap:55px;margin-top:68px}.principles article{border-top:1px solid #54717c;padding-top:22px}.principles article>span{font-size:13px;color:var(--teal)}.principles h3{font-size:25px;margin:34px 0 20px}.principles p{font-size:16px;color:#bed0d6}.story{display:grid;grid-template-columns:1fr 1fr;gap:12%;padding-top:105px;padding-bottom:105px}.story .eyebrow{margin-bottom:28px}.story h2{font-size:clamp(46px,5vw,74px)}.origin{font-size:12px;letter-spacing:1px;line-height:1.8;margin-top:50px;color:var(--muted)}.story-copy{padding-top:45px}.story-copy .lead{font-family:'Space Grotesk',sans-serif;font-size:29px;line-height:1.35;color:var(--ink)}.story-copy p{margin-bottom:25px;color:var(--muted)}.contact{background:var(--teal);padding-top:58px;padding-bottom:38px}.contact-grid{display:grid;grid-template-columns:1.5fr 1fr;column-gap:10%;row-gap:32px;align-items:start;margin-top:32px}.contact h2{font-size:clamp(44px,5vw,72px)}.contact h2 em{color:var(--ink)}.contact-grid>div>p:first-child{margin-bottom:25px;max-width:430px}.contact-small{font-size:13px;margin-top:15px}.contact-topics{display:flex;gap:32px;border-top:1px solid #072b3b40;margin-top:55px;padding-top:23px;font-size:13px}footer{display:flex;justify-content:space-between;align-items:center;padding:36px 6%;gap:20px}footer p,footer>a:last-child{font-size:12px;color:var(--muted)}footer .wordmark{font-size:29px}
@media(min-width:1600px){.section{padding-left:max(6%,calc((100vw - 1420px)/2));padding-right:max(6%,calc((100vw - 1420px)/2))}}@media(max-width:1050px){.header nav{gap:20px}.header-cta{display:none}.product-grid{gap:16px}.card-content{padding:22px}.intro{grid-template-columns:1fr 2fr;gap:30px}.principles{gap:30px}.section{padding:70px 5%}.contact-grid{column-gap:6%;row-gap:28px}.hero{min-height:730px}h1{font-size:74px}.story{gap:8%}}
@media(max-width:700px){html{scroll-padding-top:20px}.header{min-height:82px;padding:22px 6%;position:relative}.wordmark{font-size:31px}.menu-toggle{display:block;border:0;background:none;color:var(--ink);min-height:44px;font-size:14px}.header nav{display:none;position:absolute;top:100%;left:0;right:0;background:white;z-index:10;padding:20px 6% 28px;box-shadow:0 12px 20px #072b3b20}.header nav.open{display:flex;flex-direction:column}.mobile-contact{display:block}.hero{min-height:740px}.hero-content{padding:30px 6% 135px}.hero .eyebrow{font-size:10px;max-width:270px}.hero-category{margin-top:64px;font-size:11px}h1{font-size:clamp(44px,11vw,70px);letter-spacing:-2.5px;line-height:1.1}.hero-description{font-size:16px;max-width:350px;min-height:110px}.hero-shade{background:linear-gradient(90deg,#031f30df,#031f3070),linear-gradient(0deg,#031f30b0,transparent)}.hero-image img{object-position:64% center}.hero-bottom{flex-direction:column;align-items:flex-start;gap:8px;bottom:26px;padding-top:13px}.hero-location{font-size:9px;letter-spacing:1px}.slider-controls{width:100%;justify-content:space-between}.section{padding:55px 6%}.intro,.story,.contact-grid{grid-template-columns:1fr;gap:26px}.intro{gap:25px}.intro>.eyebrow{padding:0}h2{font-size:38px;letter-spacing:-1.5px}.intro p:not(.eyebrow){font-size:16px}.section-heading{display:block;margin-bottom:30px}.section-heading>p{margin-top:23px}.section-heading .eyebrow{margin-bottom:20px}.product-grid{grid-template-columns:1fr;gap:26px}.card-image{aspect-ratio:1.7}.card-content{padding:25px}.card-content h3{font-size:29px}.principles{grid-template-columns:1fr;gap:34px;margin-top:38px}.principles h3{margin:19px 0 14px}.story h2{font-size:52px}.origin{margin-top:27px}.story-copy{padding-top:0}.story-copy .lead{font-size:25px}.contact h2{font-size:44px}.contact-topics{flex-wrap:wrap;gap:10px 24px;margin-top:32px;font-size:12px}footer{flex-wrap:wrap;padding:30px 6%}footer p{order:3;width:100%;font-size:11px}.hero-content .button{margin-top:5px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

.contact-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);column-gap:7%;row-gap:28px}#enquiry-form{display:grid;gap:18px;min-width:0}#enquiry-form label{display:grid;gap:7px;font-size:14px;font-weight:600}#enquiry-form label span{font-weight:400}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}#enquiry-form input,#enquiry-form select,#enquiry-form textarea{width:100%;min-width:0;padding:12px 14px;border:1px solid #072b3b70;border-radius:3px;background:white;color:var(--ink);font:inherit;font-size:16px}#enquiry-form textarea{resize:vertical}#enquiry-form :is(input,select,textarea,button):focus-visible{outline:3px solid var(--ink);outline-offset:3px}#enquiry-form .button{justify-self:start;border:0}#enquiry-form .button:disabled{opacity:.65;cursor:wait}.form-note,#form-status{font-size:14px;line-height:1.6}#form-status:empty{display:none}.form-trap{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}@media(max-width:700px){.contact-grid,.form-row{grid-template-columns:1fr}}

/* Keep contact rows in normal flow: percentage row gaps overflow auto-height grids. */
.contact-grid>div{min-width:0}.contact-topics{position:relative;flex-wrap:wrap;row-gap:12px;font-size:14px}
#enquiry-form label{display:block}#enquiry-form label input,#enquiry-form label select,#enquiry-form label textarea{display:block;margin-top:8px;border-radius:10px;min-height:50px}#enquiry-form label span{white-space:nowrap}
.button{justify-content:center;gap:10px;border-radius:999px;padding:16px 28px;min-height:56px;font-size:16px;line-height:1.4;box-shadow:0 5px 14px #072b3b16;transition:background .18s,box-shadow .18s,transform .18s}
.button:hover{transform:none}.button:active{transform:scale(.98);box-shadow:0 2px 5px #072b3b20}
#enquiry-form .button{min-width:190px;max-width:100%;background:linear-gradient(120deg,#072b3b,#12566a);box-shadow:0 6px 16px #072b3b28}
#enquiry-form .button:disabled{opacity:1;cursor:wait;transform:none;background:#235666}
#enquiry-form .button[aria-busy="true"]::before{content:"";width:16px;height:16px;flex:none;border:2px solid #ffffff55;border-top-color:white;border-radius:50%;animation:button-spin .8s linear infinite}
#form-status:not(:empty){padding:16px;border-radius:12px;background:#ffffffcf;color:var(--ink);overflow-wrap:anywhere}
#form-status[data-state="error"]{border-left:4px solid #9d2636}#form-status[data-state="success"]{border-left:4px solid #087a7d}
@keyframes button-spin{to{transform:rotate(360deg)}}
@media(hover:hover){.button:hover{transform:translateY(-2px);box-shadow:0 8px 20px #072b3b26}#enquiry-form .button:hover:not(:disabled){background:linear-gradient(120deg,#0c4253,#176d7e)}}
@media(max-width:700px){.contact-grid{grid-template-columns:minmax(0,1fr);row-gap:28px;column-gap:0}#enquiry-form .button{width:100%;justify-self:stretch}.contact-topics{margin-top:36px;padding-top:24px;gap:12px 20px}#enquiry-form{gap:20px}.form-row{gap:20px}}

/* Atmospheric code rain and layered photo transitions. */
.hero-image img{position:absolute;inset:0;opacity:0;transform:scale(1.055);transition:opacity 1.15s ease,transform 8.5s linear}
.hero-image img.visible{opacity:1;transform:scale(1)}
.hero-shade{z-index:0;pointer-events:none}
.hero-content,.hero-bottom{position:relative;z-index:2}
.hero-bottom{position:absolute}
.digital-rain{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none;opacity:.42;mask-image:linear-gradient(90deg,transparent 5%,#0003 36%,black 78%);-webkit-mask-image:linear-gradient(90deg,transparent 5%,#0003 36%,black 78%)}
.digital-rain span{position:absolute;left:calc(var(--column)*5.8%);top:-680px;white-space:pre;font:14px/26px monospace;color:#5ff5c0;text-shadow:0 0 9px #20e7b980;animation:code-fall var(--duration) linear var(--delay) infinite;animation-play-state:paused;user-select:none}
.motion-running .digital-rain span{animation-play-state:running}
.hero .eyebrow{max-width:600px;line-height:1.8}
@keyframes code-fall{from{transform:translateY(-20%)}to{transform:translateY(1600px)}}
@media(max-width:700px){.digital-rain{opacity:.26;mask-image:linear-gradient(90deg,transparent,#0004 55%,black);-webkit-mask-image:linear-gradient(90deg,transparent,#0004 55%,black)}.digital-rain span:nth-child(even){display:none}.hero .eyebrow{font-size:11px;max-width:310px}.hero-content{padding-bottom:155px}.hero{min-height:760px}}
@media(prefers-reduced-motion:reduce){.digital-rain{display:none}.hero-image img{transform:none!important;transition:none!important}}

/* Each product has its own quiet technical diagram, away from the copy. */
.digital-rain{opacity:.14}
.slide-effects{position:absolute;z-index:1;right:2%;top:16%;width:48%;max-width:720px;aspect-ratio:5/4;pointer-events:none;color:#69e8d9}
.scene{position:absolute;inset:0;width:100%;height:100%;opacity:0;visibility:hidden;transition:opacity .8s ease,visibility .8s;overflow:visible}
.hero[data-scene="property"] .scene-property,.hero[data-scene="learning"] .scene-learning,.hero[data-scene="living"] .scene-living{opacity:var(--scene-opacity,.65);visibility:visible}
.scene-learning{color:#a4eade}.scene-living{color:#69d7f0}
.blueprint-lines path{stroke-dasharray:1;animation:blueprint-trace 8s ease-in-out infinite}
.blueprint-lines path:nth-child(2){animation-delay:.6s}.blueprint-lines path:nth-child(3){animation-delay:1.2s}
.plan-scan{animation:blueprint-scan 8s ease-in-out infinite;opacity:0}
.plan-points{opacity:.8}
.learning-links path{stroke-dasharray:1;animation:learning-connect 8s ease-in-out infinite}
.learning-links path:nth-child(2){animation-delay:.7s}
.spark{fill:currentColor;animation:learning-spark 5s ease-in-out var(--delay) infinite}
.spark-halo{fill:none;stroke:currentColor;stroke-width:1;opacity:.3}
.learning-dust{animation:learning-spark 6s ease-in-out -2s infinite}
.home-links{opacity:.25;stroke-width:1.5}
.home-signals path{stroke-dasharray:.08 .92;animation:home-signal 4s linear infinite}
.home-signals path:nth-child(2){animation-delay:-1s}.home-signals path:nth-child(3){animation-delay:-2s}.home-signals path:nth-child(4){animation-delay:-3s}
.home-ripple{transform-origin:300px 240px;animation:home-ripple 4s ease-out infinite}
.slide-effects *{animation-play-state:paused!important}
.motion-running[data-scene="property"] .scene-property *,.motion-running[data-scene="learning"] .scene-learning *,.motion-running[data-scene="living"] .scene-living *{animation-play-state:running!important}
@keyframes blueprint-trace{0%,8%{stroke-dashoffset:1;opacity:0}15%{opacity:1}60%,85%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes blueprint-scan{0%,15%{transform:translateY(85px);opacity:0}25%{opacity:.5}75%{opacity:.5}90%,100%{transform:translateY(395px);opacity:0}}
@keyframes learning-connect{0%{stroke-dashoffset:1;opacity:.1}65%,85%{stroke-dashoffset:0;opacity:.6}100%{stroke-dashoffset:0;opacity:.1}}
@keyframes learning-spark{0%,100%{opacity:.25}45%,60%{opacity:1}}
@keyframes home-signal{from{stroke-dashoffset:.1}to{stroke-dashoffset:-.9}}
@keyframes home-ripple{0%{transform:scale(.65);opacity:0}20%{opacity:.7}100%{transform:scale(1.7);opacity:0}}
@media(max-width:1050px){.slide-effects{right:-6%;width:55%;top:27%}.slide-effects{--scene-opacity:.38}}
@media(max-width:700px){.digital-rain{opacity:.1}.slide-effects{top:auto;bottom:104px;right:-12%;width:82%;max-width:440px;mask-image:linear-gradient(180deg,transparent,black 48%);-webkit-mask-image:linear-gradient(180deg,transparent,black 48%)}.slide-effects{--scene-opacity:.34}}
@media(prefers-reduced-motion:reduce){.slide-effects{display:none}}

/* Fixed logo artwork: equal optical gaps and a shared bottom edge. */
.wordmark{display:inline-flex;align-items:center;flex-shrink:0;line-height:1;letter-spacing:normal}
.brand-art{display:block;width:226px;height:auto;overflow:visible}
.brand-pulse{opacity:0;transform-box:fill-box;transform-origin:center}
.logo-intro .brand-left{animation:brand-pull-left 1.7s both}
.logo-intro .brand-right{animation:brand-pull-right 1.7s both}
.logo-intro .brand-pulse{animation:brand-pulse .65s 1.4s both}
@keyframes brand-pull-left{0%,12%{transform:translateX(-18px)}75%{transform:translateX(.6px)}90%{transform:translateX(-.2px)}100%{transform:translateX(0)}}
@keyframes brand-pull-right{0%,12%{transform:translateX(18px)}75%{transform:translateX(-.6px)}90%{transform:translateX(.2px)}100%{transform:translateX(0)}}
@keyframes brand-pulse{0%{opacity:0;transform:scale(1)}20%{opacity:.6}100%{opacity:0;transform:scale(3)}}
footer .brand-art{width:192px}
@media(max-width:700px){.header .brand-art{width:210px}}
@media(max-width:360px){.header .brand-art{width:190px}}
@media(prefers-reduced-motion:reduce){.logo-intro .brand-left,.logo-intro .brand-right,.logo-intro .brand-pulse{animation:none!important;transform:none!important}.brand-pulse{opacity:0!important}}
