@import url('/mobile-interactions.css');
@font-face{font-family:Northstar;src:local('Helvetica Neue'),local('Arial');font-display:swap}
:root{color-scheme:dark;--bg:#0b0b0b;--surface:#141414;--white:#f1f1ed;--muted:#9b9b98;--line:#30302e;--pad:clamp(22px,4.5vw,88px);font-family:Northstar,Arial,Helvetica,sans-serif;background:var(--bg);color:var(--white)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0}button,input,textarea{font:inherit}a{color:inherit;text-decoration:none}button{color:inherit;cursor:pointer}button,a,input,textarea,summary{-webkit-tap-highlight-color:transparent}button{border:0}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid white;outline-offset:6px}::selection{background:#eee;color:#111}.skip{position:fixed;top:-100px;left:20px;padding:15px;background:white;color:black;z-index:100}.skip:focus{top:10px}.header{height:88px;padding:0 var(--pad);display:flex;align-items:center;justify-content:space-between;gap:30px;position:absolute;top:0;width:100%;z-index:20}.brand{display:flex;gap:12px;align-items:center;font-size:24px;letter-spacing:-1.1px;line-height:1}.brand .star{font-size:42px}.brand-sub{display:block;font-size:8px;letter-spacing:3.2px;margin-top:7px}.desktop-nav{display:flex;gap:36px;margin-left:auto;margin-right:5vw;font-size:13px}.desktop-nav a{position:relative;padding:8px 0}.desktop-nav a:after,.text-link:after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s}.desktop-nav a:hover:after,.text-link:hover:after{transform:scaleX(1)}.nav-actions{display:flex;align-items:center;gap:20px}.project-button{display:inline-flex;align-items:center;justify-content:space-between;gap:32px;padding:17px 23px;border-radius:40px;background:#242424;font-size:13px;white-space:nowrap;transition:background .3s,transform .3s}.project-button>span[aria-hidden]{font-size:20px;transition:transform .22s ease-out}.project-button:hover>span[aria-hidden]{transform:translate(3px,-3px)}.project-button:hover{background:#383838}.project-button:active{transform:scale(.97)}.primary{background:var(--white);color:#101010}.primary:hover{background:#d2d2ce}.menu-toggle{display:none;background:none;width:30px;height:32px;padding:4px 0}.menu-toggle span{display:block;height:1px;background:white;margin:7px 0;transition:transform .3s}.mobile-menu{display:none}.hero{min-height:760px;height:100svh;max-height:1150px;position:relative;overflow:hidden;padding:0 var(--pad);display:flex;align-items:center;border-bottom:1px solid var(--line)}.hero-copy{position:relative;z-index:2;width:100%;padding-top:35px;pointer-events:none}.hero-copy button{pointer-events:auto}.eyebrow{font-size:11px;letter-spacing:1.6px;text-transform:uppercase;margin:0 0 29px}.hero h1{font-size:clamp(64px,8vw,158px);font-weight:400;letter-spacing:-.04em;line-height:1.04;margin:0;position:relative}.line{display:block;overflow:hidden;padding-bottom:.09em;margin-bottom:-.09em}.line>span{display:block;animation:rise 1.35s cubic-bezier(.2,.8,.15,1) both}.line:nth-child(2)>span{animation-delay:.13s}.hero-bottom{margin-top:40px;display:flex;align-items:center;gap:48px}.hero-bottom p{font-size:15px;line-height:1.6;margin:0;color:#c4c4bf}.hero-art{position:absolute;width:65%;height:100%;right:-11%;top:0;z-index:0;mask-image:linear-gradient(to right,transparent,black 25%);opacity:.95}.hero-art:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#0b0b0b,transparent 35%)}#sculpture{width:100%;height:100%;position:absolute;inset:0}.sculpture-fallback{position:absolute;inset:15% 0;display:grid;place-items:center;font-size:40vw;color:#777;text-shadow:6px 3px white,-8px -5px #222;transform:rotate(-15deg)}.webgl-ready .sculpture-fallback{display:none}.hero-edge{position:absolute;bottom:26px;left:var(--pad);right:var(--pad);display:flex;justify-content:space-between;color:var(--muted);font-size:10px;letter-spacing:.4px;z-index:3}#motion-toggle{font-size:10px;background:none;padding:5px;color:#b3b3ae}#motion-toggle span{margin-left:12px}.section{padding:125px var(--pad);scroll-margin-top:0}.section h2{font-size:clamp(40px,5.3vw,90px);line-height:1.05;letter-spacing:-.055em;font-weight:400;margin:0}.section-label{display:block;font-size:12px;color:#b3b3af;margin-bottom:30px}.muted{color:#757573}.offer{border-bottom:1px solid var(--line)}.offer-detail{display:grid;grid-template-columns:1fr 1fr;gap:10vw;align-items:center;margin-top:70px}.zero-wrap{display:flex;gap:28px;align-items:center}.zero{font-size:clamp(180px,26vw,430px);letter-spacing:-.11em;line-height:.8;font-weight:400;background:linear-gradient(135deg,#fafaf5 10%,#b8b8b3 30%,#373736 60%,#deded7 80%,#444);color:transparent;background-clip:text}.zero-caption{font-size:15px;line-height:1.4;margin-left:10px}.lead{font-size:clamp(22px,2.4vw,36px);letter-spacing:-.035em;line-height:1.2;margin:0 0 25px}.offer-copy>p:not(.lead){font-size:15px;color:#adada8;line-height:1.65;max-width:390px}.cost-note{display:flex;gap:20px;align-items:flex-start;border-top:1px solid var(--line);margin:32px 0 30px;padding-top:22px}.cost-note p{font-size:12px;line-height:1.7;color:#a9a9a5;margin:0;max-width:350px}.cost-note strong{color:var(--white);font-weight:400}.plus{font-size:24px;line-height:1}.text-link{background:none;display:inline-flex;position:relative;align-items:center;gap:26px;padding:5px 0;font-size:13px}.text-link span{font-size:20px}.section-intro{font-size:15px;line-height:1.5;color:var(--muted);margin:24px 0 0}.services{border-bottom:1px solid var(--line)}.service-layout{display:grid;grid-template-columns:1fr 1fr;gap:8vw;margin-top:72px}.service-art{min-height:400px;position:relative;overflow:hidden;background:radial-gradient(ellipse at center,#242424 0%,#101010 60%);display:grid;place-items:center}.orbital{position:absolute;width:65%;height:55%;border:1px solid #666;border-radius:50%;transform:rotate(-35deg);transition:transform 1.2s cubic-bezier(.2,.7,.2,1),border-color 1s;box-shadow:0 0 15px #ffffff05,inset 0 0 18px #ffffff04}.orbital-two{transform:rotate(35deg);width:70%;height:38%;border-color:#424242}.orbital-three{transform:rotate(90deg);width:60%;height:35%;border-color:#383838}.service-art:has(+.service-list .service:nth-child(2)[open]) .orbital-one{transform:rotate(130deg)}.service-art:has(+.service-list .service:nth-child(3)[open]) .orbital-two{transform:rotate(-120deg);border-color:#aaa}.art-star{font-size:130px;color:#d3d3cb;filter:drop-shadow(3px 3px 0 #555);transition:transform 1s}.service-art:has(+.service-list .service:nth-child(3)[open]) .art-star{transform:rotate(90deg)}.art-caption{position:absolute;bottom:25px;font-size:10px;letter-spacing:.3px;color:#93938e}.service{border-top:1px solid var(--line)}.service:last-child{border-bottom:1px solid var(--line)}summary{list-style:none;cursor:pointer}summary::-webkit-details-marker{display:none}.service summary{padding:27px 0;display:flex;align-items:flex-start;gap:25px;font-size:clamp(22px,2.3vw,34px);letter-spacing:-.04em}.service-index{font-size:10px;letter-spacing:0;color:#969691;padding-top:8px}.service small{display:block;font-size:10px;letter-spacing:.2px;color:#aaa;margin-top:9px}.disclosure{font-size:26px;margin-left:auto;font-weight:300;transition:transform .35s}.service[open] .disclosure,.faq details[open] summary>span{transform:rotate(45deg)}.service-body{padding:0 38px 30px 40px;animation:detail-in .4s ease both}.service-body p{font-size:14px;color:#a9a9a4;line-height:1.7;margin-top:0;max-width:400px}.service-tags{display:flex;gap:15px;margin-top:24px;flex-wrap:wrap}.service-tags span{font-size:9px;color:#c5c5bf;border-bottom:1px solid #42423e;padding-bottom:5px}.process{position:relative;border-bottom:1px solid var(--line)}.process-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:50px;margin-top:80px}.step{display:grid;grid-template-columns:28px minmax(0,1fr);column-gap:16px;align-content:start}.step-number{grid-column:1;grid-row:1;padding-top:6px;font-size:12px;line-height:1.3;color:#a4a49f;font-variant-numeric:tabular-nums}.step h3{grid-column:2;grid-row:1;font-size:24px;letter-spacing:-.04em;font-weight:400;line-height:1.25;margin:0 0 16px}.step p{grid-column:2;margin:0;max-width:300px;font-size:14px;line-height:1.7;color:#a3a39e}.faq{display:grid;grid-template-columns:1fr 1.2fr;gap:8vw;border-bottom:1px solid var(--line)}.faq h2{font-size:clamp(40px,4vw,64px)}.faq details{border-top:1px solid var(--line)}.faq details:last-child{border-bottom:1px solid var(--line)}.faq summary{display:flex;justify-content:space-between;gap:20px;font-size:16px;padding:25px 0;line-height:1.4}.faq summary>span{transition:transform .3s;display:block;font-size:22px}.faq details p{margin:0;padding:0 30px 25px 0;font-size:14px;color:#adada7;line-height:1.7;animation:detail-in .4s}.contact{padding-top:140px;padding-bottom:70px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 100% 110%,#252523,transparent 50%)}.contact h2{font-size:clamp(60px,9vw,165px);letter-spacing:-.065em}.contact-last{display:flex;align-items:center;gap:4vw;white-space:nowrap}.circle-cta{display:grid;place-items:center;width:clamp(70px,10vw,170px);height:clamp(70px,10vw,170px);background:var(--white);color:#111;border-radius:50%;font-size:clamp(40px,5vw,85px);transition:transform .5s,background .3s;flex-shrink:0}.circle-cta:hover{transform:rotate(45deg);background:#c8c8c2}.contact-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:65px}.contact-bottom p{font-size:12px;color:#a6a6a1}footer{padding:32px var(--pad);border-top:1px solid var(--line);display:flex;align-items:center;gap:35px;font-size:10px;color:#9b9b96}.footer-brand{color:var(--white);font-size:13px}footer p{margin-right:auto}dialog{max-width:660px;width:calc(100% - 32px);max-height:90svh;padding:0;border:1px solid #454540;border-radius:4px;background:#151515;color:var(--white);overscroll-behavior:contain}dialog::backdrop{background:#000b;backdrop-filter:blur(12px)}.dialog-inner{padding:45px;position:relative}.close-dialog{position:absolute;right:20px;top:14px;background:none;font-size:32px;color:#aaa}.dialog-inner h2{font-size:54px;line-height:1;letter-spacing:-3px;font-weight:400;margin:0 0 22px}.dialog-description{font-size:13px;color:#b4b4ae;line-height:1.5;max-width:400px}.dialog-inner .eyebrow{font-size:9px}form{margin-top:28px}label{display:block;font-size:11px;margin:20px 0;color:#cfcfc9}input,textarea{display:block;width:100%;margin-top:10px;background:#202020;border:1px solid #454540;border-radius:3px;padding:13px;color:white;font-size:14px;resize:vertical}input::placeholder,textarea::placeholder{color:#93938e}input:focus,textarea:focus{outline:1px solid white;border-color:white}.contact-status{font-size:11px;line-height:1.6;color:#b4b4ae;max-width:380px}.form-actions{display:flex;align-items:center;gap:22px;margin-top:20px}.form-actions .project-button{font-size:12px;gap:15px;padding:14px 20px}.form-actions .text-link{font-size:11px}#form-feedback{font-size:12px;line-height:1.5;color:#d3d3cd;margin-bottom:0}body.modal-open{overflow:hidden}.reveal{opacity:1}.js-motion .reveal{opacity:0;transform:translateY(35px);transition:opacity .85s,transform .85s cubic-bezier(.2,.8,.2,1)}.js-motion .reveal.visible{opacity:1;transform:none}.enter{animation:detail-in 1.5s .35s both}@keyframes rise{from{transform:translateY(110%)}to{transform:none}}@keyframes detail-in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@supports(animation-timeline:view()){.process-steps:before{content:'';position:absolute;left:var(--pad);right:var(--pad);height:1px;background:#efefe9;transform-origin:left;animation:progress linear both;animation-timeline:view();animation-range:entry 15% cover 50%;margin-top:40px;opacity:.25}@keyframes progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}}
@media(min-width:1600px){.header{height:80px}}@media(max-width:1000px){.desktop-nav{gap:24px;margin-right:2vw}.hero{min-height:700px}.hero-art{width:80%;right:-22%}.hero h1{font-size:9vw}.offer-detail{gap:6vw}.service-layout{gap:5vw}.service-art{min-height:340px}.process-steps{gap:25px}.faq{gap:5vw}.section{padding-top:100px;padding-bottom:100px}.contact{padding-bottom:65px}.contact h2{font-size:9.5vw}}
@media(max-width:700px){.header{height:78px;gap:10px}.brand{font-size:20px;gap:8px}.brand .star{font-size:34px}.brand-sub{font-size:7px;letter-spacing:2.6px}.desktop-nav{display:none}.nav-project{padding:12px 15px;font-size:10px;gap:16px}.nav-project span{font-size:16px}.nav-actions{gap:16px}.menu-toggle{display:block}.mobile-menu{display:flex;position:fixed;inset:0;z-index:15;background:#151515;padding:125px var(--pad) 50px;flex-direction:column;justify-content:center;gap:0;clip-path:inset(0 0 100%);transition:clip-path .65s cubic-bezier(.2,.8,.2,1);visibility:hidden}.mobile-menu.open{clip-path:inset(0);visibility:visible}.mobile-menu>a{font-size:40px;letter-spacing:-2px;padding:20px 0;border-bottom:1px solid #333;display:flex;justify-content:space-between}.mobile-menu>a span{font-size:10px;letter-spacing:0;margin-top:10px;color:#aaa}.mobile-menu>button{background:none;text-align:left;padding:30px 0;font-size:18px}.menu-open .header{position:fixed}.menu-open .menu-toggle span:first-child{transform:translateY(4px) rotate(45deg)}.menu-open .menu-toggle span:last-child{transform:translateY(-4px) rotate(-45deg)}.hero{height:100svh;min-height:660px;max-height:950px;align-items:flex-start;padding-top:156px}.hero-copy{padding-top:0}.hero h1{font-size:clamp(36px,9.1vw,64px);letter-spacing:-.04em;line-height:1.12}.hero .eyebrow{font-size:8px;letter-spacing:1.2px;margin-bottom:26px}.hero-art{width:115%;height:75%;top:30%;right:-28%;opacity:.75;mask-image:linear-gradient(to bottom,transparent,black 20%)}.hero-bottom{flex-direction:column;align-items:flex-start;gap:28px;margin-top:28px}.hero-bottom p{font-size:14px;line-height:1.65;max-width:32ch}.hero-bottom .primary{padding:15px 20px;font-size:12px;gap:35px}.hero-edge{font-size:8px;bottom:20px;gap:20px}.hero-edge>span{max-width:190px;line-height:1.5}.section{padding:80px var(--pad)}.section h2{font-size:clamp(36px,8vw,54px)}.section-label{font-size:10px;margin-bottom:22px}.offer-detail{grid-template-columns:1fr;gap:55px;margin-top:50px}.zero-wrap{gap:40px}.zero{font-size:230px}.zero-caption{font-size:14px}.lead{font-size:27px}.offer-copy>p:not(.lead){font-size:14px;max-width:none}.offer-copy .cost-note{margin-bottom:20px}.service-layout{grid-template-columns:1fr;gap:35px;margin-top:40px}.service-art{min-height:290px}.art-star{font-size:110px}.orbital{width:60%}.service summary{font-size:28px}.service-body{padding-left:37px}.section-intro{font-size:13px;max-width:270px;margin-top:20px}.process-steps{grid-template-columns:1fr;margin-top:50px;gap:36px}.step h3{font-size:25px;margin:0 0 12px}.step p{max-width:360px;margin-bottom:0}.faq{grid-template-columns:1fr;gap:40px}.faq summary{font-size:15px}.contact{padding-top:90px;padding-bottom:50px}.contact h2{font-size:11vw}.contact .eyebrow{font-size:9px}.contact-last{gap:4vw}.circle-cta{width:54px;height:54px;font-size:32px}.contact-bottom{margin-top:40px;align-items:flex-start}.contact-bottom p{font-size:10px;max-width:100px;margin:5px 0 0}footer{flex-wrap:wrap;gap:22px;justify-content:space-between;font-size:9px;padding-top:25px;padding-bottom:25px}footer p{order:4;width:100%;margin:0;font-size:9px}.footer-brand{font-size:12px}.dialog-inner{padding:40px 24px 28px}.dialog-inner h2{font-size:45px}.form-actions{gap:15px;flex-wrap:wrap}.process-steps:before{display:none}}
@media(max-width:400px){.hero h1{font-size:9.7vw}.nav-actions{gap:10px}.nav-project{gap:10px;padding:12px}.brand{font-size:18px}.brand .star{font-size:28px}.hero .eyebrow{letter-spacing:.7px}.contact h2{font-size:10.5vw}.circle-cta{width:46px;height:46px}}.menu-open{overflow:hidden}
.service-art{min-height:440px;background:radial-gradient(ellipse at 50% 45%,#262624 0%,#111110 65%);border:1px solid #282827;border-radius:3px}
#service-canvas{position:absolute;top:12px;left:0;width:100%;height:calc(100% - 68px);pointer-events:none}
.service-fallback{font-size:130px;color:#d3d3cb}.service-canvas-ready .service-fallback{display:none}
.scene-replay{position:absolute;right:20px;top:19px;z-index:2;display:inline-flex;gap:14px;align-items:center;background:#171716cc;border:1px solid #44443f;padding:8px 12px;border-radius:30px;font-size:10px;color:#cecec5;transition:background .25s}
.scene-replay:hover{background:#33332f}.scene-replay span{font-size:15px}.scene-replay:disabled{opacity:.4;cursor:default}
.scene-caption{position:absolute;bottom:22px;left:26px;right:20px;display:flex;flex-direction:column;gap:8px;pointer-events:none}
#scene-title{font-size:13px;letter-spacing:-.15px;color:#ddddd3}.scene-disclaimer{font-size:9px;letter-spacing:.35px;color:#99998f}
@media(max-width:1000px){.service-art{min-height:390px}}
@media(max-width:700px){.service-art{min-height:350px}.scene-caption{left:20px;bottom:18px}#scene-title{font-size:12px}.scene-replay{right:14px;top:14px}}
/* Keep the satellite above the hero's canvas and masks, clear of the headline. */
.hero{isolation:isolate}
.satellite-orbit{position:absolute;top:110px;right:10%;width:152px;height:95px;z-index:4;pointer-events:none;user-select:none;opacity:.72;color:#eeeee5;filter:drop-shadow(0 0 5px #ffffee18)}
.satellite-orbit[hidden]{display:none}
.little-satellite{width:100%;height:100%;transform:rotate(-23deg)}
.motion-ready .little-satellite{animation:northstar-satellite 11s ease-in-out infinite alternate}
@keyframes northstar-satellite{from{transform:translate(-10px,9px) rotate(-23deg)}to{transform:translate(24px,-12px) rotate(-10deg)}}
@media(max-width:700px){.satellite-orbit{top:88px;right:9%;width:104px;height:65px;opacity:.65}}
/* Fixed behind page content; the sky cannot obscure copy or intercept clicks. */
body{isolation:isolate}
.shooting-sky{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;user-select:none}
.motion-enabled .shooting-sky{display:block!important}.motion-enabled .shooting-streak{animation:northstar-meteor var(--meteor-duration,3s) cubic-bezier(.2,.35,.65,1) both!important}.motion-enabled.motion-ready .little-satellite{animation:northstar-satellite 11s ease-in-out infinite alternate!important}.motion-enabled .service-sparkle{display:block!important;animation:northstar-sparkle .8s var(--spark-delay,0ms) ease-out both!important}.motion-enabled .desktop-nav a:after,.motion-enabled .text-link:after{transition:transform .3s!important}
.shooting-star{position:absolute;display:block;width:0;height:0;transform:rotate(var(--meteor-angle,30deg));pointer-events:none}
.shooting-streak{position:absolute;display:block;left:0;top:0;width:var(--meteor-length,100px);height:1px;background:linear-gradient(90deg,transparent,#dadad455 55%,#f4f4e7);border-radius:50%;opacity:0;animation:northstar-meteor var(--meteor-duration,3s) cubic-bezier(.2,.35,.65,1) both;will-change:transform,opacity}
.shooting-streak:after{content:'';position:absolute;right:0;top:-.5px;width:2px;height:2px;border-radius:50%;background:#f4f4e7;box-shadow:0 0 5px 1px #efefe355}
@keyframes northstar-meteor{0%{opacity:0;transform:translateX(-50px) scaleX(.55)}15%{opacity:var(--meteor-brightness,.3)}65%{opacity:var(--meteor-brightness,.3)}100%{opacity:0;transform:translateX(var(--meteor-travel,550px)) scaleX(1)}}
@media(prefers-reduced-motion:reduce){.shooting-sky{display:none}}
.motion-paused .shooting-sky{display:none}
/* A sparse, decorative constellation gives the closing section a Northstar signature. */
.contact{isolation:isolate}
.closing-constellation{position:absolute;right:-2%;top:0;width:68%;height:100%;z-index:-1;color:#e6e6dd;pointer-events:none;opacity:.38;mask-image:linear-gradient(110deg,transparent 4%,black 48%)}
.constellation-thread{stroke:currentColor;stroke-width:.65;opacity:.36;stroke-linecap:round;stroke-linejoin:round}
.constellation-branch{opacity:.22}.constellation-nodes{opacity:.8}.constellation-nodes .distant-star{opacity:.32}
.constellation-northstar{opacity:.95}.constellation-tip{opacity:.7}
.motion-ready .constellation-thread{stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--sky-progress,0))}
.motion-ready .constellation-nodes,.motion-ready .constellation-tip{opacity:calc(.2 + var(--sky-progress,0) * .6)}
.motion-ready .constellation-northstar{opacity:calc(.4 + var(--sky-progress,0) * .55)}
@media(max-width:700px){.closing-constellation{width:100%;right:-17%;top:-30px;opacity:.28;mask-image:linear-gradient(110deg,transparent 10%,black 65%)}}
/* Northstar service glints sit above a soft light, with no effect on hit targets. */
.service>summary{position:relative;isolation:isolate}
.service>summary:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:0;background:radial-gradient(ellipse 150px 75px at var(--glint-x,80%) var(--glint-y,45%),#ffffff0d,transparent);transition:opacity .25s}
.service>summary:after{content:'✦';position:absolute;right:48px;top:26px;font-size:11px;color:#f5f5e9;pointer-events:none;opacity:0;transform:scale(.6) rotate(-20deg);filter:drop-shadow(0 0 5px #fffff088);transition:opacity .3s,transform .4s}
.service>summary:focus-visible:before,.service>summary.spark-tapped:before{opacity:1}
.service>summary:focus-visible:after,.service>summary.spark-tapped:after{opacity:.85;transform:scale(1) rotate(0deg)}
.sparkle-target{position:relative;isolation:isolate}
.sparkle-target>.service-sparkles{position:absolute;inset:0;display:block;overflow:hidden;pointer-events:none;z-index:2;border-radius:inherit;width:auto;height:auto;margin:0;padding:0;background:none;transform:none!important;transition:none}
.sparkle-target .service-sparkle{position:absolute;display:block;font-size:var(--spark-size,10px);line-height:1;color:var(--spark-color,#fffff3);opacity:0;text-shadow:0 0 6px var(--spark-glow,#fff9),0 0 14px var(--spark-halo,#fff4);pointer-events:none;width:auto;height:auto;margin:0;padding:0;background:none;transition:none;animation:northstar-sparkle .8s var(--spark-delay,0ms) ease-out both}
.primary.sparkle-target,.circle-cta.sparkle-target{--spark-color:#66665c;--spark-glow:#fff;--spark-halo:#7777}
@keyframes northstar-sparkle{0%{opacity:0;transform:translate(-50%,-50%) scale(.1) rotate(-25deg)}22%{opacity:.9;transform:translate(-50%,-65%) scale(1) rotate(0deg)}100%{opacity:0;transform:translate(calc(-50% + var(--spark-dx,0px)),calc(-50% + var(--spark-dy,-20px))) scale(.15) rotate(var(--spark-spin,25deg))}}
@media(hover:hover) and (pointer:fine){.service>summary:hover:before{opacity:1}.service>summary:hover:after{opacity:.85;transform:scale(1) rotate(0deg)}}
@media(prefers-reduced-motion:reduce){.service-sparkle{display:none}}
.motion-paused .service-sparkle{display:none}
/* Independent transform properties keep scroll, reveal, and hover motions composable. */
.motion-ready .hero-art{translate:0 var(--hero-drift,0px);rotate:var(--hero-turn,0deg);scale:var(--hero-scale,1);transform-origin:55% 55%}
.motion-ready .hero h1{translate:0 var(--title-drift,0px)}
.motion-ready .zero{display:inline-block;rotate:var(--zero-turn,-22deg);translate:0 var(--zero-y,40px);background-size:200% 200%;background-position:var(--shine,100%) 50%;transform-origin:50% 70%}
.motion-ready .offer .muted{background:linear-gradient(90deg,#f1f1ed 0%,#f1f1ed calc(var(--read,0%) - 20%),#757573 var(--read,0%));background-clip:text;-webkit-background-clip:text;color:transparent}
.motion-ready .service-art{transform:perspective(900px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transform-style:preserve-3d}
.motion-ready .orbital-one{rotate:var(--orbit-turn,0deg)}
.motion-ready .orbital-two{rotate:var(--orbit-counter,0deg)}
.motion-ready .orbital-three{rotate:var(--orbit-third,0deg)}
.motion-ready .art-star{rotate:var(--star-turn,0deg);translate:0 var(--star-float,0px)}
.motion-ready .step{translate:0 var(--step-y,0px)}
.motion-ready .contact h2{translate:var(--contact-drift,0px) 0}
.motion-ready .contact .circle-cta{rotate:var(--cta-turn,0deg);scale:var(--cta-scale,1)}
/* Replace the old independent progress line with the per-step scroll treatment. */
.process-steps:before{display:none!important}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js-motion .reveal{opacity:1;transform:none}}.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}.motion-paused .reveal{opacity:1;transform:none;transition:none}

/* Hero and button refinement: preserve the monochrome identity and existing copy. */
.project-button{min-height:52px;line-height:1.25;transition:background .22s ease-out,transform .18s ease-out}
.project-button:active{transform:translateY(1px)}
.project-button:disabled{opacity:.45;cursor:not-allowed;transform:none}
.project-button:disabled>span[aria-hidden]{transform:none}
.project-button:focus-visible,.circle-cta:focus-visible{outline:2px solid var(--white);outline-offset:5px;box-shadow:0 0 0 2px var(--bg)}
.hero-bottom .primary{min-height:56px;padding:18px 25px}
.menu-toggle{min-width:44px;min-height:44px;padding:6px}
#motion-toggle{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
.hero-edge{align-items:center;bottom:18px}
.text-link,.close-dialog{min-height:44px}
.close-dialog{min-width:44px;line-height:1}
.circle-cta:active{transform:scale(.96)}
@media(max-width:700px){
  .nav-actions{gap:10px}
  .nav-project{min-height:44px}
  .hero{padding-top:148px}
  .hero-art{mask-image:linear-gradient(to bottom,transparent,black 35%)}
  .hero-edge{bottom:12px;gap:12px}
  .hero-edge>span{max-width:180px}
  #motion-toggle{flex-shrink:0;font-size:10px}
}
@media(max-width:400px){.hero h1{font-size:9.4vw;letter-spacing:-.04em}}

@media(min-width:701px){.hero-art{mask-image:linear-gradient(to right,transparent,black 45%)}}
@media(max-width:700px){.header .brand{flex-shrink:0}.brand-sub{white-space:nowrap}}
@media(max-width:360px){.nav-project>span[aria-hidden]{display:none}.nav-project{padding-inline:14px}}

/* A vector arrow stays monochrome on mobile emoji-capable fonts. */
.project-button>.project-arrow{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;line-height:1}
.project-arrow svg{display:block;width:100%;height:100%}

.nav-project>.project-arrow{width:20px;height:20px}
@media(max-width:700px){.nav-project>.project-arrow{width:18px;height:18px}}
@media(max-width:360px){.nav-project>.project-arrow{display:none}}

/* Draw functional icons consistently instead of using platform emoji glyphs. */
.ui-icon{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:1.5em;height:1.5em;flex-shrink:0;line-height:1}
.ui-icon svg{display:block;width:100%;height:100%}
.circle-cta>.ui-icon{width:.65em;height:.65em}
.scene-replay>.ui-icon{font-size:inherit}
footer a:has(.ui-icon){display:inline-flex;align-items:center;gap:8px}
.mobile-menu>button>.ui-icon{margin-left:16px}

/* Give the illustration caption the full width of its band. */
.service-art>.scene-caption{right:24px;bottom:22px}
#service-canvas{height:calc(100% - 88px)}
@media(max-width:700px){.service-art>.scene-caption{right:20px;bottom:18px}}
