@font-face{font-family:Neue;src:url('assets/HelveticaNeueRoman.otf') format('opentype');font-weight:400;font-display:swap}@font-face{font-family:Neue;src:url('assets/HelveticaNeueMedium.otf') format('opentype');font-weight:500;font-display:swap}
:root{--bg:#F3F3F3;--ink:#282720;--pale:#CFCFCF;--line:#d7d7d3;font-family:Neue,'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}button{border:0;background:transparent}button:focus-visible,a:focus-visible{outline:1px solid var(--ink);outline-offset:6px}header{height:105px;padding:0 5vw;display:flex;justify-content:space-between;align-items:center}.wordmark{font-size:33px;letter-spacing:-.065em;font-weight:500}.text-link{font-size:16px;padding:10px 0}.text-link span{margin-left:18px;display:inline-block;transition:transform .3s}.text-link:hover span{transform:translate(3px,-3px)}.hero{height:min(760px,calc(100svh - 105px));min-height:530px;position:relative;overflow:hidden}.eyebrow{font-size:12px;font-weight:400}.hero>.eyebrow{position:absolute;top:18px;left:5vw;z-index:1}#gallery{position:absolute;inset:25px 0 75px;touch-action:pan-y;cursor:grab;user-select:none}#gallery.dragging{cursor:grabbing}.art{position:absolute;left:50%;top:50%;padding:0;width:clamp(150px,16vw,220px);aspect-ratio:3/4;will-change:transform;overflow:hidden;background:#e9e9e9;cursor:inherit}.art img{width:100%;height:100%;object-fit:cover;pointer-events:none;display:block}.art:after{content:'';position:absolute;inset:0;box-shadow:inset 0 0 0 1px #28272008;pointer-events:none}.art:hover img{filter:brightness(1.025)}.modes{position:absolute;bottom:25px;width:100%;display:flex;justify-content:center;gap:28px}.modes button{font-size:13px;padding:10px 0;opacity:.45;transition:opacity .25s}.modes button[aria-pressed=true],.modes button:hover{opacity:1}.proof{padding:70px 0 40px;text-align:center}.proof>p{font-size:13px;margin:0 0 48px}.marquee{overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}.logo-track{display:flex;gap:80px;align-items:center;width:max-content;animation:marquee 80s linear infinite}.logo-item{width:130px;height:42px;display:grid;place-items:center;flex-shrink:0}.logo-mark{width:100%;height:100%;background:var(--ink);mask-image:var(--logo);mask-size:contain;mask-repeat:no-repeat;mask-position:center}.logo-text{font-size:22px;letter-spacing:-.05em;white-space:nowrap}@keyframes marquee{to{transform:translateX(-50%)}}.intro{padding:180px 8vw 210px;display:flex;justify-content:center}.intro p{max-width:900px;text-align:center;font-size:clamp(32px,4.3vw,62px);line-height:1.15;letter-spacing:-.06em;margin:0}.intro .word{color:var(--pale);transition:color .25s}.intro .word.revealed{color:var(--ink)}.pricing{height:290svh;position:relative}.pricing-sticky{position:sticky;top:0;height:100svh;min-height:680px;padding:55px 0 25px;display:flex;flex-direction:column;justify-content:center;overflow:hidden}.pricing-heading{display:flex;align-items:end;justify-content:space-between;margin:0 10vw 35px}.pricing h1{font-size:clamp(32px,3.6vw,52px);line-height:1;letter-spacing:-.06em;font-weight:400;margin:0}.package-nav{display:flex;gap:12px;align-items:center;font-size:12px}.package-nav button{opacity:.35;padding:6px}.package-nav button[aria-current=true]{opacity:1}.package-nav span{opacity:.25}.pricing-viewport{overflow:visible}.pricing-track{display:flex;gap:32px;padding-left:10vw;will-change:transform}.package{width:80vw;flex-shrink:0;border:1px solid #cececa;border-radius:3px;padding:44px;display:grid;grid-template-columns:1fr 1fr;gap:8vw;min-height:400px}.package h2{font-weight:400;font-size:clamp(30px,3vw,45px);line-height:1.04;letter-spacing:-.06em;margin:27px 0 24px}.package-top>p{font-size:18px;line-height:1.45;letter-spacing:-.025em;max-width:360px;margin:0}.package-content{display:flex;flex-direction:column;justify-content:center}.hours{font-size:13px;margin:0 0 22px;line-height:1.5}dl{margin:0 0 32px}dl>div{display:flex;justify-content:space-between;gap:18px;font-size:12px;padding:11px 0;border-bottom:1px solid var(--line)}dt{max-width:58%}dd{margin:0;text-align:right;white-space:nowrap}.price-row{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-top:auto}.price-label{font-size:12px}.price{font-size:48px;letter-spacing:-.06em;margin:7px 0 0;line-height:1}.price span{font-size:18px;letter-spacing:-.035em}.pill{padding:15px 23px;border-radius:40px;background:var(--ink);color:var(--bg);white-space:nowrap;font-size:14px;transition:transform .25s,background .25s}.pill:hover{transform:translateY(-2px);background:#424139}.fine{font-size:11px;line-height:1.5;margin:17px 0 0}.package ul{padding:0;margin:0 0 30px;list-style:none;font-size:14px}.package li{padding:12px 0;border-bottom:1px solid var(--line)}.pricing-baseline{display:flex;margin:23px 10vw 0;align-items:center;justify-content:space-between;font-size:11px}.progress-line{width:100px;height:1px;background:var(--line)}.progress-line span{height:1px;background:var(--ink);display:block;width:33.333%;transform:translateX(0)}.contact{text-align:center;padding:175px 24px 150px}.contact>p{font-size:14px;margin:0 0 35px}.contact h2{font-size:clamp(44px,7vw,98px);line-height:1;letter-spacing:-.06em;font-weight:400;margin:0 0 45px}.contact-link{font-size:22px;border-bottom:1px solid var(--ink);padding:0 0 9px}.contact-link span{display:inline-block;margin-left:35px;transition:transform .3s}.contact-link:hover span{transform:translate(4px,-4px)}footer{margin:0 5vw;padding:35px 0;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line)}footer>a:last-child{font-size:13px}dialog{border:0;padding:0;color:var(--ink);background:var(--bg);max-height:92svh;max-width:none;overscroll-behavior:contain}dialog::backdrop{background:#28272065;backdrop-filter:blur(12px)}dialog[open]{animation:enter .35s cubic-bezier(.2,.8,.2,1)}@keyframes enter{from{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}#lightbox{width:min(1250px,94vw);background:var(--bg)}.lightbox-shell{padding:20px 26px 25px}.lightbox-top,.lightbox-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px}.lightbox-top{font-size:12px;margin-bottom:18px}.close{font-size:13px;padding:9px 0}#full-image{display:block;width:100%;max-height:70svh;object-fit:contain;background:var(--bg)}.lightbox-bottom{padding-top:22px}.lightbox-bottom h2{font-size:19px;font-weight:400;letter-spacing:-.04em;margin:0 0 6px}.lightbox-bottom p{font-size:12px;margin:0}.work-arrows{display:flex;gap:12px}.work-arrows button{padding:12px;font-size:22px}#enquiry{width:min(620px,94vw)}.form-shell{padding:30px 40px 40px}.form-shell>.close{display:block;margin-left:auto}.form-shell h2{font-size:46px;line-height:1.02;font-weight:400;letter-spacing:-.06em;margin:15px 0 40px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px 20px}.form-grid label{display:flex;flex-direction:column;gap:10px;font-size:13px}.full{grid-column:1/-1}input,textarea,select{width:100%;min-width:0;padding:12px 0;color:var(--ink);background:transparent;border:0;border-bottom:1px solid #bcbcb8;border-radius:0;font-size:14px;outline-offset:4px}textarea{resize:vertical;min-height:75px}::placeholder{color:#77776f;opacity:1}.upload span{font-size:12px}.upload input{font-size:12px;border:1px dashed var(--line);padding:16px}.form-submit{display:flex;align-items:center;gap:20px;margin-top:30px}.form-submit p,#form-status{font-size:12px;line-height:1.5}.form-submit p{max-width:200px;color:#77776f}[hidden]{display:none!important}
@media(min-width:1550px){.package{min-height:450px}}@media(max-width:1000px),(max-height:650px){header{height:85px;padding:0 24px}.wordmark{font-size:28px}.hero{min-height:480px;height:650px;max-height:calc(100svh - 85px)}.hero>.eyebrow{left:24px}.art{width:150px}.proof{padding-top:45px}.logo-track{gap:45px}.logo-item{width:105px;height:32px}.intro{padding:120px 7vw 130px}.pricing{height:auto}.pricing-sticky{position:relative;top:auto;height:auto;min-height:0;padding:30px 0}.pricing-heading{margin:0 7vw 30px}.pricing h1{font-size:38px}.pricing-viewport{overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.pricing-track{gap:20px;padding:0 7vw;transform:none!important}.package{width:86vw;scroll-snap-align:center;display:flex;flex-direction:column;gap:30px;padding:30px 26px;min-height:580px}.package h2{font-size:36px;margin:22px 0}.package-top>p{font-size:16px}.package-content{flex:1}.package .price-row{margin-top:auto}.package-content ul{margin-top:0}.pricing-baseline{margin:25px 7vw 0}.contact{padding:110px 24px}.form-shell{padding:24px}.form-grid{grid-template-columns:1fr}.form-grid label{grid-column:1/-1}input,textarea,select{font-size:16px}.form-shell h2{font-size:40px}.lightbox-shell{padding:12px 15px 22px}#full-image{max-height:65svh}.price{font-size:43px}dl>div{font-size:11px;gap:10px}.package-nav{gap:4px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.intro .word{color:var(--ink)}}
/* Refined rhythm, transitions and progressive focus. */
.text-link,.contact-link{display:inline-flex;align-items:center;gap:9px}.text-link span,.contact-link span{margin-left:0}.text-link{padding:10px 0}.proof{padding:clamp(110px,10vw,160px) 0 24px}.proof>p{font-size:clamp(17px,1.4vw,21px);letter-spacing:-.03em;margin-bottom:42px}.logo-track{gap:0}.logo-group{display:flex;align-items:center;gap:64px;padding-right:64px;flex-shrink:0}.logo-item{width:140px;height:40px}.logo-mark{display:block;mask-mode:alpha}.intro{padding:clamp(100px,10vw,150px) 8vw clamp(55px,6vw,85px)}.intro p{text-wrap:balance}.pricing{height:auto}.pricing-sticky{height:auto;min-height:0;justify-content:flex-start;padding:clamp(40px,7svh,76px) 0 32px}.pricing-heading{margin-bottom:32px;align-items:center;gap:20px}.pricing h1{font-size:clamp(28px,3.6vw,52px);white-space:nowrap}.word{color:#CFCFCF;transition:color .25s}.word.revealed{color:#282720}.package{position:relative;isolation:isolate}.package:after{content:'';position:absolute;inset:-1px;border-radius:inherit;background:#CFCFCF;opacity:var(--muting,0);pointer-events:none;z-index:2}.package:focus-within:after{opacity:0}.contact{padding:clamp(95px,10vw,150px) 24px 100px}.contact>p{margin-bottom:28px}.contact h2{margin-bottom:30px}.contact-link{padding-bottom:8px}dialog[open]{animation:none}dialog::backdrop{animation:backdrop-in .55s ease both}dialog.closing::backdrop{animation:backdrop-out .34s ease both}@keyframes backdrop-in{from{background:#28272000;backdrop-filter:blur(0)}to{background:#28272065;backdrop-filter:blur(12px)}}@keyframes backdrop-out{from{background:#28272065;backdrop-filter:blur(12px)}to{background:#28272000;backdrop-filter:blur(0)}}
.entrance{position:fixed;inset:0;background:#F3F3F3;z-index:1000;display:grid;place-items:center;pointer-events:none;animation:loader-failsafe .65s 3s forwards}.entrance-word{display:flex;align-items:baseline;font-size:clamp(26px,3vw,38px);letter-spacing:-.06em;line-height:1;color:#CFCFCF;animation:word-ink .6s 1.4s forwards,word-breathe 2.1s ease both}.entrance-grey{display:inline-block;max-width:0;overflow:hidden;animation:word-grow .5s .45s cubic-bezier(.22,.8,.2,1) forwards}.entrance-dot{font-size:.45em;align-self:flex-start;letter-spacing:0;margin-left:2px;opacity:0;animation:dot-enter .45s 1s forwards}.entrance.leaving{opacity:0;transform:scale(1.025);transition:opacity .65s ease,transform .65s ease}@keyframes word-grow{to{max-width:3em}}@keyframes word-ink{to{color:#282720}}@keyframes word-breathe{0%{transform:translateY(6px) scale(.94);opacity:0}25%{transform:translateY(0) scale(1);opacity:1}60%{transform:scale(1.025)}100%{transform:scale(1)}}@keyframes dot-enter{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes loader-failsafe{to{opacity:0;visibility:hidden}}
@media(max-width:1000px),(max-height:650px){.proof{padding-top:95px}.logo-group{gap:42px;padding-right:42px}.logo-item{width:120px;height:34px}.intro{padding:95px 7vw 55px}.pricing-sticky{padding:30px 0}.pricing-heading{flex-wrap:wrap;gap:20px}.pricing h1{font-size:clamp(26px,5.7vw,40px)}.contact{padding:90px 24px}.pricing-baseline{margin-bottom:0}}@media(prefers-reduced-motion:reduce){.entrance{display:none}.word{color:#282720}}
/* One viewport, three distinct rows: navigation, artwork stage, social proof. */
:root{--header-height:100px;--section-space:clamp(110px,10vw,170px)}header{height:var(--header-height)}.hero-screen{height:calc(100svh - var(--header-height));min-height:580px;display:grid;grid-template-rows:minmax(0,1fr) 160px;row-gap:20px}.hero{height:auto;min-height:0;max-height:none;overflow:hidden}#gallery{inset:18px 0 65px}.modes{bottom:10px}.proof{padding:22px 0 28px;display:flex;flex-direction:column;justify-content:center;gap:28px;min-height:0}.proof>p{margin:0}.proof .marquee{flex-shrink:0}.intro{padding:var(--section-space) 8vw calc(var(--section-space) * .68)}.pricing-sticky{padding-top:calc(var(--section-space) * .32);padding-bottom:42px}.contact{padding:var(--section-space) 24px}.package:after{display:none}.package-word{transition:color 100ms linear}.package:focus-within .package-word{color:#282720!important}
/* Fixed glyph layout avoids cutting descenders or changing width during the reveal. */
.entrance{animation:loader-failsafe .8s 4s forwards}.entrance-word{display:block;position:relative;white-space:nowrap;line-height:1.45;padding:.3em .4em .45em;overflow:visible;color:#CFCFCF;animation:word-ink .85s 1.65s forwards;font-size:clamp(28px,3vw,40px);letter-spacing:-.06em}.entrance-fallen,.entrance-grey,.entrance-dot{display:inline-block;max-width:none;overflow:visible}.entrance-fallen{animation:soft-glyph 900ms cubic-bezier(.16,1,.3,1) both}.entrance-grey{animation:soft-glyph 900ms .55s cubic-bezier(.16,1,.3,1) both}.entrance-dot{font-size:.45em;vertical-align:super;position:relative;top:-.1em;margin-left:3px;opacity:1;animation:soft-glyph 800ms 1.05s cubic-bezier(.16,1,.3,1) both}.entrance.leaving{transform:scale(1.015);transition:opacity .7s ease,transform .7s ease}@keyframes soft-glyph{from{opacity:0;filter:blur(5px);transform:translateY(5px)}to{opacity:1;filter:blur(0);transform:translateY(0)}}
dialog{box-shadow:0 28px 100px #28272024;will-change:transform,opacity,filter}dialog::backdrop{animation-duration:700ms}dialog.closing::backdrop{animation-duration:480ms}.lightbox-bottom,.form-shell form{animation:popup-content 850ms cubic-bezier(.16,1,.3,1) both}dialog.closing .lightbox-bottom,dialog.closing .form-shell form{animation:none}@keyframes popup-content{0%,12%{opacity:0;transform:translateY(7px)}100%{opacity:1;transform:translateY(0)}}
@media(max-width:1000px),(max-height:650px){:root{--header-height:85px;--section-space:100px}.hero-screen{min-height:580px;grid-template-rows:minmax(0,1fr) 140px;row-gap:18px}.hero{height:auto;min-height:0;max-height:none}.proof{padding:16px 0 24px;gap:25px}.intro{padding:100px 7vw 70px}.pricing-sticky{padding-top:30px}.contact{padding:110px 24px}.pricing h1{font-size:clamp(25px,5.6vw,40px)}}@media(prefers-reduced-motion:reduce){.entrance{display:none}.package-word{transition:none}dialog{will-change:auto}}
.price > .package-word{font-size:inherit;letter-spacing:inherit}.price > span:not(.package-word) .package-word{font-size:inherit;letter-spacing:inherit}
/* Keep the marquee's max-content width inside its own viewport, not the grid. */
html,body{width:100%;max-width:100%;overflow-x:clip}main{width:100%;min-width:0}.hero-screen{width:100%;max-width:100%;min-width:0;grid-template-columns:minmax(0,1fr)}.hero-screen>.hero,.hero-screen>.proof{min-width:0;width:100%;max-width:100%}.proof .marquee{width:100%;max-width:100%;min-width:0;overflow:hidden}.modes{left:0;right:0;width:auto}.pricing{width:100%;min-width:0}.pricing-sticky{width:100%;min-width:0}.pricing-viewport{min-width:0}.pricing-heading{min-width:0}
/* Each message gets a separate passage through the viewport. */
.intro{padding:var(--reading-gap) 8vw calc(var(--reading-gap) - 32px);align-items:center}.intro p{width:min(100%,900px);flex:none}.text-link:hover span,.contact-link:hover span{transform:none}.text-link span,.contact-link span{font-family:Neue,'Helvetica Neue',Arial,sans-serif;font-variant-emoji:text}
@media(max-width:1000px),(max-height:650px){.intro{padding:var(--reading-gap) 7vw calc(var(--reading-gap) - 32px)}.hero-screen{grid-template-columns:minmax(0,1fr)}.pricing-heading{row-gap:20px}}

/* Quiet rectangular actions and a continuous clockwise outline. */
.package .pill{border-radius:3px}
.text-link,.contact-link{position:relative;border:0;padding:14px 19px;gap:8px;isolation:isolate}
.cta-outline{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.cta-outline rect{fill:none;stroke:currentColor;stroke-width:1;vector-effect:non-scaling-stroke;stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset 700ms cubic-bezier(.4,0,.2,1)}
.text-link:hover .cta-outline rect,.contact-link:hover .cta-outline rect,.text-link:focus-visible .cta-outline rect,.contact-link:focus-visible .cta-outline rect{stroke-dashoffset:0}
/* Artwork floats directly over an opaque-enough veil to isolate it from the orbit. */
#lightbox{width:fit-content;max-width:92vw;max-height:94svh;background:transparent;box-shadow:none;overflow:auto}
.lightbox-shell{padding:0;width:fit-content;max-width:92vw;margin:auto}
.lightbox-top{margin-bottom:12px}
#full-image{width:auto;height:auto;max-width:92vw;max-height:72svh;object-fit:contain;background:transparent;margin:auto}
.lightbox-bottom{padding:20px 0 4px;animation:none;align-items:flex-start}
.lightbox-bottom h2{font-size:20px}.lightbox-bottom p{font-size:13px;line-height:1.4}
#lightbox::backdrop{background:rgba(243,243,243,.98);backdrop-filter:blur(24px);animation:art-veil-in 900ms ease both}
#lightbox.closing::backdrop{animation:art-veil-out 650ms ease both}
@keyframes art-veil-in{from{background:rgba(243,243,243,0);backdrop-filter:blur(0)}to{background:rgba(243,243,243,.98);backdrop-filter:blur(24px)}}
@keyframes art-veil-out{from{background:rgba(243,243,243,.98);backdrop-filter:blur(24px)}to{background:rgba(243,243,243,0);backdrop-filter:blur(0)}}
dialog::backdrop{animation-duration:1000ms}dialog.closing::backdrop{animation-duration:650ms}.form-shell form{animation:none}
@media(max-width:1000px),(max-height:650px){#full-image{max-height:67svh}.lightbox-bottom{padding-top:16px}.text-link{padding:12px}.contact-link{padding:14px 20px}}
@media(prefers-reduced-motion:reduce){.cta-outline rect{transition:none}dialog::backdrop{animation:none!important}}

.cta-outline rect.cta-outline-base{stroke:#CFCFCF;stroke-dasharray:none;stroke-dashoffset:0;transition:none}

/* Hover lives on the artwork surface, independently of the orbit transform. */
.art{overflow:visible;background:transparent}.art:after{display:none}
.art-surface{display:block;width:100%;height:100%;overflow:hidden;background:#e9e9e9;transform:translateY(0) scale(1);box-shadow:0 0 0 #28272000;transition:transform 550ms cubic-bezier(.22,.68,.25,1),box-shadow 550ms ease}
@media(hover:hover) and (pointer:fine){#gallery:not(.dragging) .art:hover .art-surface{transform:translateY(-7px) scale(1.045);box-shadow:0 18px 35px -12px #28272040}.art{cursor:zoom-in}#gallery.dragging .art{cursor:grabbing}}
.art:focus-visible .art-surface{transform:translateY(-7px) scale(1.045);box-shadow:0 18px 35px -12px #28272040}
@media(prefers-reduced-motion:reduce){.art-surface{transition:none}#gallery .art:hover .art-surface,.art:focus-visible .art-surface{transform:none}}

/* Shared action geometry and restrained footer feedback. */
.form-submit .pill{border-radius:3px}
footer>a:last-child{text-decoration:none;text-underline-offset:5px;text-decoration-thickness:1px}
footer>a:last-child:hover,footer>a:last-child:focus-visible{text-decoration:underline}
/* Allow content to reflow rather than overflowing its card or viewport. */
.package{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.package-top,.package-content,.price-row>div,.lightbox-bottom>div{min-width:0}
.price-row{flex-wrap:wrap;row-gap:18px}.price{white-space:nowrap}
dl>div{align-items:baseline}dt{min-width:0}dd{white-space:normal;max-width:55%}
.form-submit{flex-wrap:wrap;row-gap:10px}.form-submit p{margin:0}
.form-grid label{min-width:0}.upload input{max-width:100%}
footer{gap:24px;flex-wrap:wrap}footer>a:last-child{padding:12px 0}
.modes button,.package-nav button,.close,.work-arrows button{min-height:44px}
.package-nav button{min-width:36px}.work-arrows{flex-shrink:0}
#lightbox,#enquiry{max-height:calc(100dvh - 32px);overflow-y:auto;overflow-x:hidden}
#full-image{max-height:min(72svh,calc(100dvh - 160px))}
.lightbox-bottom{overflow-wrap:anywhere}
.form-shell>.close{position:sticky;top:0;z-index:1;background:var(--bg);padding:10px 8px}
@media(max-width:1000px),(max-height:650px){
 .pricing-track{align-items:stretch}.package{height:auto;min-height:580px}
 .pricing-viewport{scroll-padding-inline:7vw;overscroll-behavior-x:contain}
 .pricing-heading{align-items:center}.pricing h1{font-size:clamp(23px,5.6vw,40px)}
 .package-nav{gap:4px}.package-nav button{min-width:40px}
 .form-shell{padding:20px clamp(18px,5vw,30px) 28px}
 #full-image{max-height:min(67svh,calc(100dvh - 160px))}
}
@media(max-width:380px){
 header{padding-inline:18px}.wordmark{font-size:26px}.text-link{font-size:14px;padding:12px 10px;gap:6px}
 .package{padding:26px 20px}.price{font-size:39px}.price-row{column-gap:12px}
 .package .pill{padding:14px 19px}.form-submit{align-items:flex-start;flex-direction:column}
 .lightbox-bottom{gap:12px}.work-arrows{gap:0}.work-arrows button{padding:10px}
}

/* Reserve final artwork geometry before the opening animation starts. */
#lightbox{width:var(--work-width);max-width:92vw}
#lightbox .lightbox-shell{width:100%}
#lightbox #full-image{width:100%;height:auto;max-height:none;aspect-ratio:auto}

/* Individually sized visible marks, with a quieter shared baseline. */
.logo-item{width:156px;height:28px}.logo-mark{width:var(--mark-width,100px);height:var(--mark-height,18px);max-width:100%}
.logo-text{font-size:17px;letter-spacing:-.04em}.logo-group{gap:36px;padding-right:36px}
@media(max-width:1000px),(max-height:650px){.logo-item{width:140px;height:25px}.logo-mark{width:calc(var(--mark-width,100px)*.9);height:calc(var(--mark-height,18px)*.9)}.logo-text{font-size:15px}.logo-group{gap:24px;padding-right:24px}}

/* Keep the mode switch centred in the navigation, clear of social proof. */
header{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);column-gap:20px}
header>.wordmark{justify-self:start}header>.text-link{justify-self:end}
header>.modes{position:static;inset:auto;width:auto;justify-self:center;align-items:center;gap:24px}
header>.modes button{white-space:nowrap}
@media(max-width:600px){
 header{padding-inline:16px;column-gap:8px}
 header>.wordmark{font-size:23px}
 header>.text-link{font-size:12px;padding:10px 8px;gap:4px}
 header>.modes{flex-direction:column;gap:0}
 header>.modes button{font-size:10px;min-height:28px;padding:5px 2px;line-height:18px}
}

/* Phones keep the mode controls beneath the artwork; desktop keeps them in navigation. */
.proof>p{color:var(--pale);transform:translateY(-8px)}
@media(max-width:600px){
 header{grid-template-columns:minmax(0,1fr) auto}
 .hero>.modes{position:absolute;left:0;right:0;bottom:10px;width:auto;display:flex;flex-direction:row;justify-content:center;align-items:center;gap:28px}
 .hero>.modes button{font-size:13px;min-height:44px;padding:10px 0;white-space:nowrap}
}

/* Keep the enquiry viewport independent of the page's scroll position. */
#enquiry{position:fixed;inset:16px 0;margin:auto;max-height:calc(100dvh - 32px);height:fit-content;overflow-y:auto;overscroll-behavior-y:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch}

/* Ordinary images avoid nested masks underneath the modal's blur layer. */
.proof .marquee{position:relative;isolation:isolate;mask-image:none;-webkit-mask-image:none}
.proof .marquee::before,.proof .marquee::after{content:'';position:absolute;top:0;bottom:0;width:8%;z-index:1;pointer-events:none}
.proof .marquee::before{left:0;background:linear-gradient(to right,var(--bg),transparent)}
.proof .marquee::after{right:0;background:linear-gradient(to left,var(--bg),transparent)}
img.logo-mark{background:none;mask-image:none;-webkit-mask-image:none;object-fit:contain}
.logo-track{will-change:transform}
@keyframes marquee{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}

/* Bounded logo viewport: no wide animated layer or touch-hover pause. */
.proof .logo-track{position:relative;display:block;width:100%;height:28px;--logo-gap:36px;animation:none!important;transform:none!important;will-change:auto}
.proof .logo-group{display:contents}
.proof .logo-item{position:absolute;left:0;top:0}
@media(max-width:1000px),(max-height:650px){.proof .logo-track{height:25px;--logo-gap:24px}}

/* One shared gap between the hero, introduction and package heading. */
:root{--reading-gap:clamp(96px,18svh,180px)}
.pricing-sticky{padding-top:32px}
.pricing-heading{margin-bottom:32px}
@media(max-width:1000px),(max-height:650px){:root{--reading-gap:clamp(72px,14svh,112px)}.pricing-heading{margin-bottom:28px}}

/* Let the mobile introduction stand alone while it is being read. */
@media(max-width:1000px),(max-height:650px){.intro{padding-bottom:clamp(180px,38svh,340px)}}

/* Desktop gets a more generous reading interval; mobile spacing stays intact. */
@media(min-width:1001px) and (min-height:651px){.intro{padding-top:clamp(180px,28svh,320px);padding-bottom:clamp(180px,28svh,320px)}}
