@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;750;800&display=swap');
:root{--ink:#102d36;--teal:#367e82;--muted:#647175;--paper:#f7f7f2;--line:#d5ddd7}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:95px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 'DM Sans',Arial,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #ed9954;outline-offset:5px}.skip{position:absolute;left:20px;top:-90px;background:var(--ink);color:white;padding:12px;z-index:30}.skip:focus{top:10px}header{height:100px;padding:0 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:var(--paper);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:12px}.brand img{object-fit:contain;mix-blend-mode:multiply}.brand>span{font:750 20px/1.3 'Manrope',sans-serif;letter-spacing:.2em}.brand small{display:block;font:500 8px/2 'DM Sans',sans-serif;letter-spacing:.26em}nav{display:flex;gap:34px;align-items:center;font-size:13px;font-weight:550}nav a:hover,.text-link:hover{color:var(--teal)}.nav-contact{border-bottom:1px solid;padding:10px 0;margin-left:10px}.nav-contact span{margin-left:32px}.menu-toggle{display:none}.hero{display:grid;grid-template-columns:1.04fr 1fr;min-height:665px}.hero-copy{padding:70px 7% 28px 9.6%;display:flex;flex-direction:column;justify-content:center}.eyebrow{font-size:10px;font-weight:650;letter-spacing:.16em;margin:0 0 30px;line-height:1.6}.eyebrow>span{display:inline-block;width:6px;height:6px;background:var(--teal);border-radius:100%;margin-right:8px;vertical-align:middle}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:'Manrope',Arial,sans-serif;letter-spacing:-.055em;font-weight:500}h1{font-size:clamp(42px,4.45vw,76px);line-height:1.12;margin-bottom:27px;white-space:nowrap}em{font-style:normal;color:var(--teal)}.intro{color:#566970;font-size:16px;line-height:1.8}.actions{display:flex;align-items:center;gap:26px;margin-top:23px}.button{padding:17px 23px;display:inline-flex;gap:28px;justify-content:space-between;align-items:center;font-size:12px;font-weight:600;transition:background .2s,transform .2s}.button:hover{transform:translateY(-3px)}.primary{background:var(--ink);color:white}.primary:hover{background:var(--teal)}.text-link{font-size:11px;font-weight:600;border-bottom:1px solid var(--line);padding:10px 0}.text-link span{margin-left:16px}.hero-bottom{margin-top:67px;border-top:1px solid var(--line);padding-top:22px;display:flex;justify-content:space-between;gap:20px;align-items:center}.hero-bottom>span{font-size:8px;letter-spacing:.15em}.hero-bottom p{font-size:10px;color:var(--muted);margin:0}.hero-image{position:relative;overflow:hidden;min-height:640px}.hero-image>img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;object-position:42% center}.hero-image:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#0a292b91,transparent 60%)}.image-grid{position:absolute;inset:0;background-image:linear-gradient(#ffffff17 1px,transparent 1px),linear-gradient(90deg,#ffffff17 1px,transparent 1px);background-size:25% 25%;z-index:1}.image-tag{position:absolute;top:32px;left:32px;background:#ffffffec;padding:9px 13px;font-size:8px;letter-spacing:.18em;z-index:2}.image-caption{position:absolute;bottom:30px;left:32px;right:32px;display:flex;justify-content:space-between;color:white;z-index:2;font-size:8px;letter-spacing:.14em}.crosshair{position:absolute;top:50%;left:50%;width:40px;height:40px;border:1px solid #ffffff9c;border-radius:50%;z-index:2}.crosshair:before,.crosshair:after{content:'';position:absolute;background:#fff9;top:50%;left:50%;transform:translate(-50%,-50%)}.crosshair:before{width:58px;height:1px}.crosshair:after{height:58px;width:1px}.service-strip{display:flex;align-items:center;justify-content:space-between;padding:25px 8%;background:#e9eeea;font-size:11px;letter-spacing:.25em}.service-strip i{font-style:normal;color:var(--teal);font-size:20px}.section{padding:95px 7.5%}.services{display:grid;grid-template-columns:.8fr 1.2fr;gap:9%}.section-heading h2,h2{font-size:clamp(34px,3.3vw,53px);line-height:1.18;margin-bottom:25px}.section-heading>p:last-child{max-width:310px;color:var(--muted);font-size:14px}.service-list{border-top:1px solid var(--ink)}details{border-bottom:1px solid var(--line)}summary{list-style:none;display:flex;gap:22px;align-items:center;padding:25px 0;cursor:pointer}summary::-webkit-details-marker{display:none}.number{color:var(--teal);font-size:10px}summary h3{font-size:21px;letter-spacing:-.035em;line-height:1.35;margin:0;flex:1}.plus{font-size:26px;font-weight:400;line-height:1;transition:transform .2s}details[open] .plus{transform:rotate(45deg)}.service-body{padding:0 30px 29px 37px;font-size:13px;color:var(--muted)}.service-body>p{max-width:480px}.service-body>div{padding:16px 0 3px}.label{font-size:8px;letter-spacing:.18em;font-weight:650}.service-body>div p{font-size:11px;margin-top:7px}.service-body>a{font-size:11px;color:var(--ink);border-bottom:1px solid var(--ink);padding:8px 0;display:inline-block}.service-body>a span{margin-left:22px}.perspectives{background:#e9eeea}.horizontal{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;margin-bottom:40px}.horizontal h2{margin-bottom:0}.horizontal>p:last-child{max-width:350px;margin-bottom:0}.gallery{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:18px}.gallery-item{border:0;padding:0;position:relative;background:var(--ink);height:385px;cursor:pointer;text-align:left;color:white;overflow:hidden}.gallery-item:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#092932dd,transparent 65%)}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .6s}.gallery-item:hover img{transform:scale(1.045)}.gallery-item>span{position:absolute;bottom:25px;left:23px;right:23px;z-index:1;font-size:16px;line-height:1.4;letter-spacing:-.02em}.gallery-item small{display:block;font-size:7px;letter-spacing:.15em;margin-bottom:9px;color:#d0e1da}.gallery-item b{float:right;font-size:20px;font-weight:400}.about{display:grid;grid-template-columns:1fr 1fr;gap:10%;align-items:center}.about-visual{position:relative;height:540px}.about-visual>img{width:100%;height:100%;object-fit:cover}.about-stamp{position:absolute;bottom:25px;left:25px;background:var(--paper);padding:22px 26px;font:500 25px/1.13 'Manrope',sans-serif;letter-spacing:-.04em}.about-stamp em{font-size:8px;letter-spacing:.12em;display:block;margin-top:13px}.about-copy>p:not(.eyebrow){font-size:13px;color:var(--muted);max-width:440px}.about-copy>.large-copy{font-size:20px!important;line-height:1.6;color:var(--ink)!important;letter-spacing:-.025em}.signature{display:flex;gap:16px;align-items:center;border-top:1px solid var(--line);padding-top:25px;margin-top:30px;font-size:13px}.signature-mark{width:40px;height:40px;border:1px solid var(--teal);border-radius:100%;display:grid;place-items:center;font-size:11px;color:var(--teal)}.signature small{display:block;font-size:7px;letter-spacing:.13em;color:var(--muted)}.process{border-top:1px solid var(--line);padding-top:75px}.process .section-heading{display:flex;justify-content:space-between}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:5%;margin-top:35px}.steps article{border-top:1px solid var(--line);padding-top:23px}.steps article>span{font-size:8px;letter-spacing:.16em;color:var(--teal)}.steps h3{font-size:24px;margin:25px 0 15px;letter-spacing:-.035em}.steps p{font-size:13px;max-width:280px;color:var(--muted)}.contact{background:var(--ink);color:var(--paper);display:grid;grid-template-columns:1.4fr 1fr;gap:13%;align-items:center}.contact .eyebrow{color:#a8c3bc}.contact h2{font-size:clamp(40px,4.2vw,68px)}.contact h2 em{color:#9ec4b4}.contact>div>p:not(.eyebrow){font-size:14px;max-width:400px;color:#bed0ce}.light{background:var(--paper);color:var(--ink);margin-top:15px}.light:hover{background:#c7ded3}.contact-note{display:block;font-size:9px;color:#b5c8c6;margin-top:15px}.brief{border-top:1px solid #47616a;padding-top:28px}.brief .label{color:#afc7c0}.brief ul{list-style:none;margin:25px 0;padding:0}.brief li{padding:16px 0;border-bottom:1px solid #34505a;font-size:13px}.brief li span{font-size:9px;margin-right:25px;color:#98b5ac}.brief p{font-size:11px!important;line-height:1.9;margin-top:25px}footer{display:grid;grid-template-columns:1fr 1fr auto;align-items:center;gap:25px;padding:40px 5% 22px}footer>span,footer>a:not(.brand){font-size:10px}footer>span{color:var(--muted)}footer>small{grid-column:1/-1;font-size:8px;border-top:1px solid var(--line);padding-top:20px;color:var(--muted)}.footer-brand>span{font-size:17px}dialog{border:0;padding:25px;background:var(--paper);color:var(--ink);width:min(1000px,92vw);max-height:90vh}dialog::backdrop{background:#081c24d9}dialog img{width:100%;max-height:70vh;object-fit:contain;display:block}dialog p{font-size:12px;margin:15px 0 0}.close-dialog{display:block;margin:0 0 15px auto;border:1px solid var(--line);padding:7px 15px;background:transparent;cursor:pointer;font-size:12px}@media(min-width:1600px){body{max-width:1900px;margin:auto}.hero-copy{padding-left:12%}}@media(max-width:1100px){nav{gap:20px}.hero-copy{padding-left:9%;padding-right:6%}h1{font-size:4.5vw}.actions{gap:15px;flex-wrap:wrap}.hero-bottom{margin-top:40px}.services{gap:5%}.gallery{grid-template-columns:1.2fr 1fr 1fr}.gallery-item{height:330px}.about{gap:6%}.about-visual{height:500px}.contact{gap:7%}.section{padding:75px 6%}}@media(max-width:760px){html{scroll-padding-top:79px}header{height:79px;padding:0 6%}.brand>span{font-size:17px}.brand img{width:39px;height:39px}.brand small{font-size:6px}.menu-toggle{display:flex;align-items:center;gap:15px;border:0;background:none;padding:10px 0;font-size:12px;color:var(--ink)}nav{display:none;position:absolute;top:79px;left:0;right:0;background:var(--paper);padding:24px 6% 30px;border-bottom:1px solid var(--line);align-items:flex-start;gap:15px}nav.open{display:flex;flex-direction:column}.nav-contact{margin-left:0}h1{font-size:clamp(39px,8vw,58px);white-space:normal}.hero{display:flex;flex-direction:column}.hero-copy{padding:45px 6% 30px}.hero .eyebrow{font-size:8px;margin-bottom:25px}.intro{font-size:14px}.actions{gap:20px;margin-top:14px}.button{padding:16px 19px}.hero-bottom{margin-top:35px}.hero-image{min-height:360px}.image-tag{top:20px;left:23px}.image-caption{left:23px;right:23px;font-size:7px}.service-strip{padding:20px 6%;font-size:8px;letter-spacing:.13em}.service-strip i{font-size:16px}.section{padding:60px 6%}.services{display:block}.eyebrow{font-size:9px;margin-bottom:20px}.section-heading h2,h2{font-size:36px}.section-heading>p:last-child{max-width:100%;font-size:13px}.service-list{margin-top:35px}summary{gap:15px;padding:22px 0}summary h3{font-size:18px}.service-body{padding-left:27px;padding-right:15px}.horizontal{display:block;margin-bottom:30px}.horizontal>p:last-child{margin-top:25px;max-width:100%}.gallery{grid-template-columns:1fr 1fr;gap:12px}.gallery-item{height:280px}.gallery-item.wide{grid-column:1/-1;height:320px}.gallery-item>span{left:16px;right:16px;bottom:18px;font-size:14px}.gallery-item small{font-size:6px}.about{display:flex;flex-direction:column;gap:40px}.about-visual{width:100%;height:360px}.about-copy{width:100%}.about-copy>p:not(.eyebrow){max-width:100%}.process .section-heading{display:block}.steps{display:block;margin-top:30px}.steps article{padding-top:20px;padding-bottom:12px}.steps h3{margin:16px 0 10px}.steps p{max-width:100%}.contact{display:block}.contact h2{font-size:43px}.brief{margin-top:50px}.contact>div>p:not(.eyebrow){max-width:100%}footer{grid-template-columns:1fr auto;padding:35px 6% 20px;gap:22px}footer>span{grid-column:1/-1;grid-row:2}.footer-brand>span{font-size:15px}.footer-brand img{width:34px;height:34px}dialog{padding:16px}.gallery-item b{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Survey-data positioning */
.output-panel{position:absolute;z-index:3;left:32px;right:32px;bottom:82px;padding:23px 25px;background:#102d36ed;border:1px solid #b7d2c55c;backdrop-filter:blur(8px);color:#f7f7f2;max-width:350px}.output-panel .label{color:#b5d0c4;font-size:8px}.output-panel strong{display:block;font:500 28px/1.5 Manrope,Arial,sans-serif;letter-spacing:-.035em;margin:8px 0 15px}.output-panel>div{display:flex;gap:20px;border-top:1px solid #718e8870;padding-top:13px;font-size:8px;letter-spacing:.13em}.intro{max-width:430px}.intro br{display:none}@media(max-width:760px){.output-panel{left:23px;right:23px;bottom:65px;max-width:290px;padding:16px 20px}.output-panel strong{font-size:23px;margin:5px 0 10px}.output-panel>div{padding-top:10px}.hero-image{min-height:410px}}

/* Point clouds, survey imagery and real spatial-data examples */
.pointcloud-hero{background:#141e20}.pointcloud-hero>img{object-fit:contain;object-position:center 29%;filter:contrast(1.04)}.pointcloud-hero:after{background:linear-gradient(0deg,#102d36d9,transparent 65%)}.pointcloud-hero .image-grid{opacity:.25}.pointcloud-hero .output-panel{bottom:78px;padding:16px 22px;max-width:325px}.pointcloud-hero .output-panel strong{font-size:23px;margin:5px 0 10px}.survey-photo>img{filter:saturate(.72) contrast(1.04)}.photo-credit{margin-left:15px}.model-section{border-top:1px solid var(--line);background:#eef1eb}.model-tabs{display:flex;gap:5px;border-bottom:1px solid var(--line);margin-bottom:0}.model-tabs button{border:0;background:transparent;color:var(--muted);font-size:12px;padding:18px 25px;cursor:pointer;border-bottom:2px solid transparent}.model-tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--teal);background:#e1e8e1}.model-layout{display:grid;grid-template-columns:1.45fr 1fr;background:var(--paper)}.model-stage{position:relative;background:#0b1e24;color:var(--paper);min-width:0;padding:25px}.model-label{font-size:8px;letter-spacing:.16em;color:#b3ccc3;display:block}.canvas-wrap{position:relative;height:390px;margin:10px 0 15px}.canvas-wrap canvas,.canvas-wrap img{width:100%;height:100%;display:block;object-fit:contain}.canvas-wrap [hidden]{display:none!important}.canvas-wrap canvas{cursor:grab;touch-action:none}.canvas-wrap canvas:active{cursor:grabbing}.viewer-controls{display:flex;justify-content:center;flex-wrap:wrap;gap:5px}.viewer-controls button{border:1px solid #3a555d;color:#dce8e2;background:#17343d;cursor:pointer;padding:6px 12px;font-size:11px;min-height:35px}.viewer-controls button:hover,.viewer-controls button[aria-pressed=true]{background:#477873}.viewer-status{text-align:center;font-size:9px;color:#a7bfb9;min-height:16px;margin:12px 0 0}.model-info{padding:38px 32px;min-width:0}.model-info h3{font-size:30px;line-height:1.25;letter-spacing:-.04em}.model-description{font-size:13px;color:var(--muted)}.model-note{font-size:10px;color:var(--teal);border-left:2px solid var(--teal);padding-left:12px;margin:25px 0}.model-download{font-size:10px;padding:14px 17px;max-width:100%}.model-source{display:block;font-size:10px;margin-top:12px;width:fit-content}.model-attribution{border-top:1px solid var(--line);margin-top:30px;padding-top:15px;font-size:9px;color:var(--muted)}.model-attribution p{margin-bottom:8px}.model-attribution a{border-bottom:1px solid var(--line)}.example-disclaimer{font-size:9px;line-height:1.6;color:var(--muted);margin-top:17px;margin-bottom:0}@media(max-width:1100px){.model-layout{grid-template-columns:1.25fr 1fr}.model-stage{padding:20px}.model-info{padding:30px 25px}.canvas-wrap{height:360px}}@media(max-width:760px){.model-layout{display:block}.model-tabs button{font-size:10px;padding:15px 12px;flex:1}.canvas-wrap{height:320px}.model-stage{padding:20px 15px}.model-info{padding:30px 25px}.viewer-controls button{padding:7px 10px}.pointcloud-hero>img{object-position:center 5%;height:65%;top:30px}.pointcloud-hero .output-panel{bottom:62px;padding:13px 18px;max-width:270px}.pointcloud-hero .output-panel strong{font-size:20px}.pointcloud-hero .image-tag{font-size:7px;padding:6px 9px}.photo-credit{display:block;margin:8px 0 0}}

/* Octo Innovations company details */
.brand>span{font-size:18px;letter-spacing:.12em}.footer-brand>span{font-size:16px}.company-details{grid-column:1/-1;display:grid;grid-template-columns:1.5fr 1fr;gap:40px;border-top:1px solid var(--line);padding-top:25px;margin-top:5px}.company-details .label{display:block;margin-bottom:9px;letter-spacing:.09em;font-size:9px;color:var(--muted)}.company-details address{font-style:normal;font-size:12px;line-height:1.8;max-width:540px}.company-details>div>a{font-size:13px;display:inline-block;border-bottom:1px solid var(--teal);padding-bottom:3px}.company-details>div>a:hover{color:var(--teal)}@media(max-width:760px){.brand>span{font-size:14px;letter-spacing:.1em}.brand small{font-size:6px;letter-spacing:.18em}.footer-brand>span{font-size:13px}.company-details{grid-template-columns:1fr;gap:22px;padding-top:23px}.company-details address{font-size:11px}.company-details>div>a{font-size:12px}}

.model-download[hidden],.model-attribution a[hidden]{display:none!important}

.data-credits{margin-top:25px;border-top:1px solid var(--line);border-bottom:0}.data-credits[hidden]{display:none!important}.data-credits>summary{display:block;padding:12px 0;font-size:10px;color:var(--muted);letter-spacing:.03em}.data-credits>summary:after{content:'+';float:right}.data-credits[open]>summary:after{content:'−'}.data-credits .model-attribution{margin-top:0;padding-top:6px;border-top:0}.data-credits .example-disclaimer{margin-bottom:12px}
