@font-face{font-family:Funnel Display;src:url('assets/funnel-display-regular.ttf') format('truetype');font-weight:400;font-display:swap}@font-face{font-family:Funnel Display;src:url('assets/funnel-display-semibold.ttf') format('truetype');font-weight:600;font-display:swap}

:root{font-family:'Funnel Display',sans-serif;color:#212121;background:#fff;font-synthesis:none;-webkit-font-smoothing:antialiased;font-weight:400}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid #8d8d8d;outline-offset:5px}
.page{height:100svh;min-height:540px;position:relative;overflow:hidden;isolation:isolate;display:flex;flex-direction:column}
/* Architecture, foliage and stone are independent, responsive layers. */
.greek-scene{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:#fff}
.colonnade{position:absolute;inset:20% -6% -8%;display:flex;gap:clamp(32px,5.7vw,105px);align-items:stretch;background:linear-gradient(115deg,#f9f9f9,#f4f4f4 55%,#fbfbfb);padding:0 3%}
.arch{flex:1;min-width:0;border-radius:50% 50% 0 0 / 30% 30% 0 0;background:linear-gradient(115deg,#fff 15%,#fefefe 70%,#fafafa);transform:translateY(13%)}
.arch:nth-child(2),.arch:nth-child(4){transform:translateY(5%)}.arch:nth-child(3){transform:translateY(0)}
.olive{position:absolute;width:clamp(320px,35vw,570px);height:auto;opacity:.95;object-fit:contain}.olive-left{top:-4%;left:-3%;transform:rotate(-9deg);transform-origin:top left}.olive-right{top:-7%;right:-4%;transform:scaleX(-1) rotate(-17deg);transform-origin:center}
.stone{position:absolute;bottom:0;width:clamp(160px,19vw,340px);height:43%;background:linear-gradient(155deg,#f4f4f4,#fafafa 90%)}.stone-left{left:-3%;clip-path:polygon(0 0,30% 13%,38% 45%,68% 62%,74% 87%,100% 100%,0 100%)}.stone-right{right:-2%;height:46%;clip-path:polygon(100% 0,45% 24%,28% 40%,31% 61%,0 82%,5% 100%,100% 100%)}
.scene-light{position:absolute;inset:0;background:radial-gradient(ellipse 42% 68% at 50% 39%,#fff 25%,#ffffffed 50%,#ffffff00 100%),linear-gradient(to bottom,#ffffff00 65%,#ffffff80)}
.header{flex:none;display:flex;align-items:center;justify-content:space-between;padding:clamp(18px,3.4svh,35px) 4.5%;position:relative;gap:20px}.brand{display:inline-flex}.brand img{display:block;width:150px;height:auto}.studio-label{position:absolute;left:50%;transform:translateX(-50%);font-size:13px;color:#6e6e6e;white-space:nowrap}.nav-contact{display:flex;align-items:center;gap:26px;background:transparent;border:1px solid #dedede;border-radius:7px;padding:13px 19px;color:#212121;font-size:14px;transition:background .2s,border-color .2s}.nav-contact:hover{background:#fff;border-color:#aaa}.nav-contact svg{width:13px;height:13px}
.hero{display:flex;flex:1;min-height:0;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:clamp(8px,2svh,24px) 24px clamp(12px,2.6svh,28px);gap:clamp(24px,6svh,68px)}.hero-copy{flex:none}.rating{display:flex;align-items:center;justify-content:center;gap:11px;font-size:13px;margin-bottom:clamp(17px,2.8svh,27px)}.rating strong{font-weight:600}.stars{display:block;width:105px;height:auto}.rating>span:last-child{color:#575757}
h1{font-size:clamp(44px,min(7.1vw,11.5svh),106px);line-height:.99;font-weight:600;letter-spacing:-.065em;margin:0;position:relative}.intro{color:#777777;font-size:17px;line-height:1.5;letter-spacing:-.015em;margin:clamp(16px,2.6svh,26px) 0 clamp(18px,3svh,29px)}.action{display:flex;align-items:center;flex-direction:column;gap:11px}.cta{display:inline-flex;justify-content:center;align-items:center;gap:26px;background:#222;color:#fff;border:1px solid #222;border-radius:7px;padding:16px 23px;font-size:15px;transition:background .2s,transform .2s,box-shadow .2s;box-shadow:0 2px 3px #0000000b}.cta:hover{background:#3a3a3a;transform:translateY(-2px);box-shadow:0 5px 13px #00000010}.cta svg{height:15px;width:15px}.project-price{font-size:11px;color:#858585;letter-spacing:.01em}
.identity-section{flex:none;width:min(880px,88%);position:relative}.identity-section>p{font-size:11px;color:#848484;margin:0 0 clamp(17px,2.8svh,27px);letter-spacing:.025em}.marquee{overflow:hidden;mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent);-webkit-mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent);padding:5px 0}.marquee-track{display:flex;width:max-content;animation:logos-drift 85s linear infinite}.marquee-group{display:flex;align-items:center;flex:none;gap:clamp(36px,4.7vw,68px);padding-right:clamp(36px,4.7vw,68px)}.marquee-group img{display:block;object-fit:contain;flex:none;height:36px;width:40px;opacity:.9}.identity-section:hover .marquee-track,.identity-section.is-paused .marquee-track{animation-play-state:paused}@keyframes logos-drift{to{transform:translateX(-50%)}}
.motion-toggle{position:absolute;right:-28px;bottom:7px;display:grid;place-items:center;width:24px;height:24px;border:0;background:transparent;color:#999;border-radius:50%;padding:4px}.motion-toggle:hover{background:#efefef;color:#333}.motion-toggle svg{width:14px;height:14px}.play-icon{display:none}.is-paused .pause-icon{display:none}.is-paused .play-icon{display:block}
.footer{flex:none;padding:clamp(14px,2.5svh,23px) 4.5%;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:10px;color:#919191;letter-spacing:.01em}.footer i{font-style:normal;margin:0 7px;color:#aaa}
dialog{width:min(520px,calc(100% - 32px));padding:42px;border:1px solid #e4e4e4;border-radius:12px;background:#fcfcfc;color:#212121;max-height:90svh;box-shadow:0 25px 100px #00000015}dialog::backdrop{background:#24242444;backdrop-filter:blur(7px)}.close{position:absolute;top:14px;right:17px;font-size:28px;background:none;border:0;color:#777}.dialog-eyebrow{font-size:11px;color:#888}h2{font-weight:600;font-size:45px;line-height:1.02;letter-spacing:-.05em;margin:20px 0}dialog p{font-size:14px;line-height:1.5;color:#777}form{display:grid;gap:16px;margin-top:25px}label{display:grid;gap:7px;font-size:12px}input,textarea,select{border:1px solid #d6d6d6;border-radius:5px;padding:11px;background:white;color:#222;width:100%;font-size:14px}textarea{resize:vertical}.status{margin:0;min-height:20px;font-size:12px}body:has(dialog[open]){overflow:hidden}

@media(max-width:760px){.header{padding:20px 6%}.brand img{width:125px}.studio-label{display:none}.nav-contact{font-size:12px;padding:11px 14px;gap:18px}.hero{padding:12px 20px 20px;gap:clamp(25px,6svh,58px)}h1{font-size:clamp(40px,min(8.8vw,11svh),65px);line-height:1.04;letter-spacing:-.06em}.intro{font-size:15px;margin:20px 0 24px}.rating{font-size:12px;margin-bottom:23px}.stars{width:98px}.identity-section{width:90%}.marquee-group{gap:35px;padding-right:35px}.marquee-group img{height:32px;width:36px}.footer{padding:18px 6%;font-size:9px}.footer>span:nth-child(2){display:none}.olive{width:350px}.olive-left{left:-130px;top:8%}.olive-right{right:-160px;top:3%}.colonnade{inset:30% -38% -8%;gap:40px}.scene-light{background:radial-gradient(ellipse 65% 64% at 50% 40%,#fff 20%,#fffffff0 50%,#ffffff00 100%)}dialog{padding:30px}}
@media(max-width:420px){.desktop-break{display:none}.intro{max-width:290px;margin-left:auto;margin-right:auto}.cta{font-size:14px;padding:15px 21px}.hero{gap:35px}.motion-toggle{right:-23px}}
@media(max-height:680px) and (min-width:761px){.header{padding-top:16px;padding-bottom:16px}.hero{gap:22px;padding-top:8px;padding-bottom:12px}h1{font-size:min(7.1vw,11svh)}.rating{margin-bottom:16px}.intro{margin:15px 0 18px;font-size:15px}.cta{padding:13px 22px}.identity-section>p{margin-bottom:14px}.footer{padding-top:13px;padding-bottom:13px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important}.marquee-track{animation:none}.motion-toggle{display:none}}

/* Clipped label roll, diagonal arrow exchange and soft neutral graphite glow. */
.cta,.nav-contact{position:relative;isolation:isolate;overflow:hidden;--button-ease:cubic-bezier(.22,1,.36,1)}
.button-label{display:block;overflow:hidden;line-height:1.35;position:relative;z-index:1}
.button-label-track{position:relative;display:block;transition:transform .55s var(--button-ease)}
.button-label-track::after{content:attr(data-label);position:absolute;top:115%;left:0;white-space:nowrap}
.button-arrow{position:relative;z-index:1;display:block;width:18px;height:18px;flex:none;overflow:hidden}
.button-arrow svg{position:absolute;inset:1px;width:16px;height:16px;transition:transform .6s var(--button-ease),opacity .4s ease}
.button-arrow .arrow-in{transform:translate(-125%,125%);opacity:0}
.cta:is(:hover,:focus-visible) .button-label-track,.nav-contact:is(:hover,:focus-visible) .button-label-track{transform:translateY(-115%)}
.cta:is(:hover,:focus-visible) .arrow-out,.nav-contact:is(:hover,:focus-visible) .arrow-out{transform:translate(125%,-125%);opacity:0}
.cta:is(:hover,:focus-visible) .arrow-in,.nav-contact:is(:hover,:focus-visible) .arrow-in{transform:translate(0,0);opacity:1}
.cta{background:#222222;border-color:#343434;box-shadow:inset 0 1px 0 #ffffff17,0 2px 4px #0000000b;transition:transform .5s var(--button-ease),box-shadow .5s ease,border-color .5s ease}
.cta::before{content:"";position:absolute;z-index:-1;inset:-100% -45%;pointer-events:none;background:radial-gradient(ellipse at 30% 68%,#8d8d8d4d 0,transparent 35%),radial-gradient(ellipse at 75% 40%,#a7a7a749 0,transparent 32%),radial-gradient(ellipse at 50% 80%,#d5d5d54a 0,transparent 26%);filter:blur(14px);opacity:.38;transform:translate(var(--glow-x,0px),var(--glow-y,0px)) scale(.95);transition:opacity .65s ease,transform .8s var(--button-ease)}
.cta::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 1px 0 #ffffff20;opacity:.4;transition:opacity .5s ease}
.cta:is(:hover,:focus-visible){background:#222222;border-color:#616161;transform:translateY(-1px);box-shadow:inset 0 1px 0 #ffffff20,0 6px 16px #22222214}
.cta:is(:hover,:focus-visible)::before{opacity:1;transform:translate(var(--glow-x,0px),var(--glow-y,0px)) scale(1.1)}
.cta:is(:hover,:focus-visible)::after{opacity:1}.cta:active{transform:translateY(0);box-shadow:inset 0 1px 0 #ffffff17,0 1px 3px #00000010}
.nav-contact .button-arrow{width:14px;height:14px}.nav-contact .button-arrow svg{width:12px;height:12px}
@media(prefers-reduced-motion:reduce){.cta::before{transform:none!important}.button-label-track,.button-arrow svg{transform:none!important}.button-label-track::after,.button-arrow .arrow-in{display:none}.cta:is(:hover,:focus-visible) .arrow-out,.nav-contact:is(:hover,:focus-visible) .arrow-out{opacity:1}}

/* Selected work: only the project name and four visual studies. */
html{scroll-behavior:smooth;scrollbar-gutter:stable}
.portfolio{width:min(1440px,100%);margin:0 auto;padding:clamp(64px,8vw,120px) 4.5% clamp(70px,9vw,140px);display:grid;gap:clamp(64px,8vw,112px)}
.project-header{display:flex;align-items:center;justify-content:space-between;margin:0 0 18px;min-height:38px}
.project-header h2{font-size:18px;font-weight:400;letter-spacing:-.035em;line-height:1.3;margin:0}
.project-open{display:grid;place-items:center;width:38px;height:38px;background:none;border:1px solid #e5e5e5;border-radius:50%;color:#333;transition:background .35s,border-color .35s,transform .5s cubic-bezier(.22,1,.36,1)}
.project-open svg{width:14px;height:14px;transition:transform .45s cubic-bezier(.22,1,.36,1)}.project-open:hover{background:#222;color:#fff;border-color:#222}.project-open:hover svg{transform:rotate(45deg)}
.bento{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}
.project-tile{display:block;position:relative;isolation:isolate;grid-column:span 7;height:clamp(240px,29vw,400px);padding:0;border:0;border-radius:7px;overflow:hidden;background:#efefef;text-align:left;cursor:pointer}
.project-tile:nth-child(2),.project-tile:nth-child(3){grid-column:span 5}
.project-tile img{width:100%;height:100%;display:block;object-fit:cover;transform:scale(1.015);transition:transform 1.1s cubic-bezier(.22,1,.36,1),filter .7s ease}
.project-tile:hover img{transform:scale(1.065)}
.tile-open{position:absolute;right:18px;bottom:18px;display:grid;place-items:center;width:36px;height:36px;background:#ffffffdf;backdrop-filter:blur(8px);border:1px solid #ffffff80;border-radius:50%;color:#222;opacity:0;transform:translateY(8px);transition:transform .45s cubic-bezier(.22,1,.36,1),opacity .3s ease}
.tile-open svg{width:14px;height:14px}.project-tile:is(:hover,:focus-visible) .tile-open{opacity:1;transform:translateY(0)}
.project-tile.reveal-pending{opacity:0;transform:translateY(28px)}.project-tile.reveal-ready{opacity:1;transform:translateY(0);transition:opacity .85s ease,transform 1s cubic-bezier(.22,1,.36,1);transition-delay:var(--reveal-delay,0ms)}
.project-viewer{width:min(1240px,calc(100% - 48px));padding:22px;border:1px solid #e7e7e7;border-radius:12px;background:#fff;max-height:94svh;overflow:auto;opacity:1;transform:translateY(0) scale(1);transition:opacity .26s ease,transform .4s cubic-bezier(.22,1,.36,1)}
.project-viewer::backdrop{background:#18181870;backdrop-filter:blur(12px)}
.project-viewer[open]{animation:viewer-enter .4s cubic-bezier(.22,1,.36,1)}.project-viewer.is-closing{opacity:0;transform:translateY(12px) scale(.99)}
@keyframes viewer-enter{from{opacity:0;transform:translateY(20px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
.viewer-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.viewer-header h2{margin:0;font-size:18px;font-weight:400;letter-spacing:-.03em}
.viewer-close,.viewer-prev,.viewer-next{display:grid;place-items:center;flex:none;background:#ffffffdf;color:#333;border:1px solid #e2e2e2;border-radius:50%;width:36px;height:36px;padding:9px;transition:background .2s,transform .3s}.viewer-close:hover,.viewer-prev:hover,.viewer-next:hover{background:#eaeaea;transform:scale(1.04)}.viewer-close svg,.viewer-prev svg,.viewer-next svg{width:17px;height:17px}
.viewer-stage{position:relative;display:grid;place-items:center;border-radius:5px;overflow:hidden;background:#f5f5f5;min-height:180px}.viewer-stage>img{display:block;width:100%;height:min(64svh,700px);object-fit:contain;opacity:1;transition:opacity .18s ease,transform .35s ease}.viewer-stage.is-switching>img{opacity:0;transform:scale(.99)}
.viewer-prev,.viewer-next{position:absolute;top:50%;transform:translateY(-50%)}.viewer-prev{left:16px}.viewer-next{right:16px}.viewer-prev:hover,.viewer-next:hover{transform:translateY(-50%) scale(1.04)}
.viewer-thumbs{display:flex;justify-content:center;gap:9px;margin-top:16px}.viewer-thumb{width:70px;height:49px;border:1px solid transparent;outline-offset:3px;padding:3px;background:transparent;border-radius:4px;opacity:.5;transition:opacity .25s,border-color .25s}.viewer-thumb[aria-pressed="true"]{opacity:1;border-color:#a8a8a8}.viewer-thumb:hover{opacity:1}.viewer-thumb img{display:block;width:100%;height:100%;object-fit:cover;border-radius:2px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@media(max-width:760px){.portfolio{padding:58px 6% 75px;gap:60px}.project-header{margin-bottom:13px}.project-header h2{font-size:16px}.project-open{width:33px;height:33px}.bento{gap:9px;grid-template-columns:repeat(2,minmax(0,1fr))}.project-tile,.project-tile:nth-child(2),.project-tile:nth-child(3){grid-column:span 1;height:clamp(170px,30vw,250px)}.project-tile:first-child,.project-tile:last-child{grid-column:1/-1;height:clamp(210px,48vw,340px)}.project-tile:nth-child(3){grid-column:2;grid-row:2}.project-tile:last-child{grid-row:3}.tile-open{right:10px;bottom:10px;width:30px;height:30px}.project-viewer{width:calc(100% - 20px);padding:15px;max-height:94svh}.viewer-stage>img{height:54svh}.viewer-prev{left:8px}.viewer-next{right:8px}.viewer-thumbs{gap:6px}.viewer-thumb{width:60px;height:44px}}
@media(hover:none){.tile-open{opacity:1;transform:none;background:#ffffffbf}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.project-tile.reveal-pending{opacity:1;transform:none}.project-tile:hover img{transform:none}.project-viewer[open]{animation:none}.project-viewer.is-closing{transform:none}.viewer-stage.is-switching>img{transform:none}}
@media(min-width:601px) and (max-width:760px){.bento{grid-template-columns:repeat(12,minmax(0,1fr))}.project-tile,.project-tile:first-child,.project-tile:last-child{grid-column:span 7;grid-row:auto;height:clamp(200px,31vw,240px)}.project-tile:nth-child(2),.project-tile:nth-child(3){grid-column:span 5;grid-row:auto}}
@media(max-width:600px){.project-tile,.project-tile:first-child,.project-tile:nth-child(2),.project-tile:nth-child(3),.project-tile:last-child{grid-column:span 1;grid-row:auto;height:clamp(140px,40vw,240px)}.tile-open{width:26px;height:26px}.tile-open svg{width:12px;height:12px}}
@media(min-width:601px) and (max-width:760px){.project-tile:nth-child(2),.project-tile:nth-child(3){height:clamp(200px,31vw,240px)}}

/* One case study at a time, peeking above the first fold. */
.page{height:80svh;min-height:520px}
.hero{gap:clamp(20px,3.8svh,38px)}
.portfolio{padding-top:8px;gap:0}
.project[hidden]{display:none!important}
.project{opacity:1;transform:translateY(0);transition:opacity .2s ease,transform .3s cubic-bezier(.22,1,.36,1)}
.project.is-leaving{opacity:0;transform:translateY(-8px)}
.project.is-entering{animation:case-enter .6s cubic-bezier(.22,1,.36,1)}
@keyframes case-enter{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.project-controls{display:flex;align-items:center;gap:7px}
.case-nav{display:grid;place-items:center;width:38px;height:38px;border:1px solid #e5e5e5;border-radius:50%;background:transparent;color:#333;padding:10px;transition:background .3s,color .3s,border-color .3s}
.case-nav svg{width:16px;height:16px;transition:transform .35s cubic-bezier(.22,1,.36,1)}
.case-nav:hover{background:#222;color:#fff;border-color:#222}.case-nav[data-case-direction="-1"]:hover svg{transform:translateX(-2px)}.case-nav[data-case-direction="1"]:hover svg{transform:translateX(2px)}
.project-controls .project-open{margin-left:6px}
@media(max-width:760px){.page{height:80svh;min-height:510px}.portfolio{padding-top:8px;gap:0}.hero{gap:25px}.case-nav{width:33px;height:33px;padding:8px}}
@media(max-height:700px){.page{min-height:490px}.hero{gap:18px;padding-top:6px;padding-bottom:12px}.rating{margin-bottom:15px}.intro{margin-top:15px;margin-bottom:18px}.identity-section>p{margin-bottom:16px}}
@media(prefers-reduced-motion:reduce){.project.is-entering{animation:none}.project.is-leaving{transform:none}}

/* Compact case study and a directional cursor on precise pointing devices. */
.portfolio{width:min(1200px,100%);padding-left:5.5%;padding-right:5.5%}
.bento{gap:10px}
.project-tile,.project-tile:first-child,.project-tile:nth-child(2),.project-tile:nth-child(3),.project-tile:last-child{height:clamp(180px,23vw,310px)}
.case-cursor{position:fixed;top:0;left:0;z-index:100;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .18s ease,visibility .18s;will-change:transform}
.cursor-disc{position:relative;isolation:isolate;display:grid;place-items:center;width:62px;height:62px;border-radius:50%;background:#222222;color:#fff;border:1px solid #ffffff21;box-shadow:inset 0 1px 0 #ffffff20,0 5px 20px #00000012;overflow:hidden;transform:translate(-50%,-50%) scale(.65);transition:transform .35s cubic-bezier(.22,1,.36,1)}
.cursor-disc::before{content:"";position:absolute;inset:-50%;z-index:-1;background:radial-gradient(ellipse at 25% 70%,#8d8d8d5e,transparent 53%),radial-gradient(ellipse at 75% 20%,#a7a7a759,transparent 50%);filter:blur(9px)}
.cursor-disc svg{width:22px;height:22px;transition:transform .35s cubic-bezier(.22,1,.36,1)}
.case-cursor.is-visible{opacity:1;visibility:visible}.case-cursor.is-visible .cursor-disc{transform:translate(-50%,-50%) scale(1)}
.case-cursor.is-left svg{transform:rotate(-180deg)}
.case-cursor.is-pressed .cursor-disc{transform:translate(-50%,-50%) scale(.88)}
@media(hover:hover) and (pointer:fine){.bento.cursor-navigation,.bento.cursor-navigation .project-tile{cursor:none}.bento.cursor-navigation .tile-open{display:none}}
@media(max-width:760px){.portfolio{padding-left:6%;padding-right:6%}.project-tile,.project-tile:first-child,.project-tile:nth-child(2),.project-tile:nth-child(3),.project-tile:last-child{height:clamp(155px,27vw,205px)}}
@media(max-width:600px){.project-tile,.project-tile:first-child,.project-tile:nth-child(2),.project-tile:nth-child(3),.project-tile:last-child{height:clamp(130px,35vw,195px)}}
@media(prefers-reduced-motion:reduce){.case-cursor,.cursor-disc,.cursor-disc svg{transition:none}}

/* A fixed-size canvas: inserts redistribute the grid instead of shifting the page. */
.bento{position:relative;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:repeat(6,minmax(0,1fr));height:clamp(340px,45vw,560px);gap:10px;isolation:isolate;touch-action:pan-y}
.bento .project-tile{height:auto!important;min-height:0;transform-origin:top left;transition:none}
.bento .project-tile[hidden]{display:none!important}
.bento .project-tile img{min-width:0;min-height:0;pointer-events:none}
.bento-ghost{position:absolute;z-index:3;border-radius:7px;overflow:hidden;pointer-events:none;transform-origin:center;background:#efefef}
.bento-ghost img{display:block;width:100%;height:100%;object-fit:cover}
.portfolio:focus{outline:none}.portfolio:focus-visible .project-header h2{outline:1px solid #8d8d8d;outline-offset:6px;border-radius:1px}
@media(max-width:760px){.bento{height:clamp(300px,50vw,400px);gap:9px}}
@media(max-width:600px){.bento{height:clamp(280px,75vw,370px);gap:7px}.bento .project-tile,.bento-ghost{border-radius:5px}}

/* Stacked cards fan out from behind a stationary central case. */
#main-content{overflow-x:clip}
.case-stage{position:relative;display:grid;grid-template-columns:minmax(0,1fr);isolation:isolate;--peek-offset:clamp(36px,4.2vw,62px)}
.case-stage>.project{grid-area:1/1;position:relative;z-index:2;min-width:0;background:#fff;transform:none;transition:none}
.case-peek{position:absolute;left:0;right:0;bottom:0;width:100%;z-index:1;pointer-events:none;opacity:0;transform:translateX(0) rotate(0) scale(.97);transform-origin:center;transition:opacity .9s ease,transform 1.2s cubic-bezier(.22,1,.36,1);filter:none}
.case-peek-left{--card-side:-1}.case-peek-right{--card-side:1}
.case-stage[data-peek-side="left"] .case-peek-left,.case-stage[data-peek-side="right"] .case-peek-right{opacity:1;transform:translateX(calc(var(--card-side) * var(--peek-offset))) rotate(calc(var(--card-side) * 1.2deg)) scale(.98)}
.case-peek .bento{height:100%;margin:0}
.case-peek .project-tile{cursor:default}
.case-peek::after{content:none}
.case-stage.is-sliding{overflow:clip}.case-stage.is-sliding .case-peek{opacity:0;transition:opacity .15s}
@media(prefers-reduced-motion:reduce){.case-peek{transition:none}}

/* Tighter hero after removing the two supporting taglines. */
.page{height:77svh}
.hero{padding-top:6px;padding-bottom:22px}
@media(max-width:760px){.page{height:77svh}.hero{padding-top:6px;padding-bottom:22px}}

/* A permanent featured review above three independent, continuous columns. */
.testimonials{width:min(1200px,100%);margin:0 auto;padding:0 5.5% clamp(80px,9vw,130px)}
.testimonials-header{display:flex;align-items:center;gap:20px;border-top:1px solid #e9e9e9;padding-top:25px;margin-bottom:28px}
.trustpilot-summary{flex:1;display:flex;align-items:center;justify-content:space-between;gap:20px;color:#333;text-decoration:none;font-size:15px;letter-spacing:-.025em}
.trustpilot-score{display:flex;align-items:center;gap:9px;color:#848484;font-size:12px;letter-spacing:0}.trustpilot-score i{font-style:normal;color:#b2b2b2}.trustpilot-score svg{height:12px;width:12px;margin-left:9px;transition:transform .35s cubic-bezier(.22,1,.36,1)}.trustpilot-summary:hover svg{transform:translate(2px,-2px)}
.review-pause{display:grid;place-items:center;background:none;border:0;color:#949494;padding:5px;width:25px;height:25px;border-radius:50%}.review-pause:hover{color:#222;background:#f2f2f2}.review-pause svg{width:14px;height:14px}.review-play-icon{display:none}.review-pause[aria-pressed="true"] .review-pause-icon{display:none}.review-pause[aria-pressed="true"] .review-play-icon{display:block}
.fixed-review{display:block;padding:clamp(30px,4.5vw,56px) clamp(25px,6vw,76px);border:1px solid #e6e6e6;border-radius:10px;background:#fafafa;color:#292929;text-decoration:none;margin-bottom:22px;transition:border-color .3s,background .3s}.fixed-review:hover{border-color:#cdcdcd;background:#f8f8f8}
.featured-review{margin:0;display:flex;flex-direction:column;align-items:center;text-align:center}.review-stars{display:block;width:82px;height:auto}.featured-review .review-stars{width:102px;margin:0 0 25px}.featured-review blockquote{font-size:clamp(25px,2.9vw,35px);line-height:1.3;letter-spacing:-.04em;max-width:850px;margin:0 0 28px}.featured-byline{display:flex;align-items:center;justify-content:center;gap:12px;text-align:left}.featured-person{display:grid;gap:6px;min-width:0}.client-name{color:#3b3b3b;font-size:12px;line-height:1.35}.featured-person time{font-size:10px;color:#969696}
.client-avatar{position:relative;display:grid;place-items:center;flex:none;border-radius:50%;background:#ebebeb;color:#676767;overflow:hidden;font-size:12px;font-weight:600;isolation:isolate}.client-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}.featured-avatar{width:46px;height:46px}.card-avatar{width:34px;height:34px}
.reviews-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;height:520px;overflow:hidden;mask-image:linear-gradient(to bottom,transparent,#000 20px,#000 calc(100% - 30px),transparent);-webkit-mask-image:linear-gradient(to bottom,transparent,#000 20px,#000 calc(100% - 30px),transparent)}
.reviews-column{min-width:0;overflow:hidden}.reviews-column-track{display:flex;flex-direction:column;gap:14px;will-change:transform;padding-top:8px}.review-card{height:270px;flex:none;border:1px solid #e7e7e7;border-radius:9px;background:#fff;overflow:hidden;transition:border-color .25s}.review-card:hover{border-color:#c2c2c2}.review-card>a{display:block;height:100%;padding:25px;color:#363636;text-decoration:none}.review-card figure{height:100%;margin:0;display:flex;flex-direction:column;align-items:flex-start}.review-card .review-stars{width:77px;margin-bottom:19px}.review-card blockquote{font-size:16px;line-height:1.45;letter-spacing:-.02em;margin:0 0 19px}.card-byline{display:flex;align-items:center;gap:9px;margin-top:auto;min-width:0}.review-card .client-name{font-size:11px}.review-card time{font-size:9px}
@media(max-width:760px){.testimonials{padding:0 6% 80px}.review-card>a{padding:19px}.review-card blockquote{font-size:15px}.reviews-columns{gap:10px;height:490px}.review-card{height:270px}.card-byline{gap:7px}.card-avatar{width:29px;height:29px}.review-card .client-name{font-size:10px}.review-card time{font-size:8px}}
@media(max-width:600px){.fixed-review{padding:30px 23px;margin-bottom:17px}.featured-review blockquote{font-size:24px;line-height:1.3}.featured-review .review-stars{width:90px;margin-bottom:22px}.reviews-columns{display:flex;gap:12px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;height:480px}.reviews-column{flex:0 0 82%;scroll-snap-align:center}.review-card{height:270px}.review-card>a{padding:24px}.review-card blockquote{font-size:16px}.review-card .client-name{font-size:11px}.review-card time{font-size:9px}}
@media(prefers-reduced-motion:reduce){.reviews-columns{mask-image:none;-webkit-mask-image:none}.reviews-column{overflow-y:auto}.reviews-column-track{will-change:auto}}

/* Content-sized testimonials and a compact editorial lead quote. */
.portfolio{padding-bottom:clamp(36px,5vw,60px)}
.testimonials{padding-bottom:56px}
.fixed-review{padding:25px 28px;margin-bottom:14px;border-radius:8px}
.featured-review{display:grid;grid-template-columns:minmax(0,1fr) 150px;column-gap:28px;row-gap:12px;align-items:center;text-align:left}
.featured-review .review-stars{grid-column:1;grid-row:1;width:83px;margin:0}
.featured-review blockquote{grid-column:1;grid-row:2;font-size:clamp(21px,2.35vw,28px);line-height:1.32;letter-spacing:-.035em;margin:0;max-width:none;text-wrap:pretty;overflow-wrap:normal}
.featured-byline{grid-column:2;grid-row:1/3;align-self:stretch;flex-direction:column;align-items:flex-start;justify-content:center;gap:10px;border-left:1px solid #e2e2e2;padding-left:25px}
.featured-avatar{width:38px;height:38px}.featured-person{gap:4px}
.review-card{height:auto;min-height:0;overflow:visible;border-radius:8px}
.review-card>a{padding:19px 20px;height:auto}
.review-card figure{height:auto}
.review-card .review-stars{width:72px;margin-bottom:13px}
.review-card blockquote{font-size:15px;line-height:1.45;margin:0;text-wrap:pretty;overflow-wrap:normal;hyphens:none}
.card-byline{margin-top:17px;gap:9px}
.card-avatar{width:30px;height:30px}
.client-name{text-wrap:balance}
.reviews-columns{height:var(--review-window,410px)}
.review-pause.sr-only:focus-visible{position:relative;clip-path:none;width:25px;height:25px;overflow:visible;margin:0 0 10px auto}
@media(max-width:760px){.fixed-review{padding:22px}.featured-review{grid-template-columns:minmax(0,1fr) 115px;column-gap:20px}.featured-byline{padding-left:18px}.featured-review blockquote{font-size:23px}.review-card{height:auto}.review-card>a{padding:17px}.review-card blockquote{font-size:14px}.reviews-columns{height:var(--review-window,390px)}}
@media(max-width:600px){.fixed-review{padding:22px}.featured-review{grid-template-columns:1fr;row-gap:14px;text-align:left}.featured-review .review-stars{grid-column:1;grid-row:1;margin:0;width:80px}.featured-review blockquote{grid-column:1;grid-row:2;font-size:22px;margin:0}.featured-byline{grid-column:1;grid-row:3;flex-direction:row;justify-content:flex-start;align-items:center;padding:0;border:0;gap:10px}.featured-avatar{width:34px;height:34px}.review-card{height:auto}.review-card>a{padding:20px}.review-card blockquote{font-size:15px}.reviews-columns{height:var(--review-window,390px)}}

/* A single white testimonial, with a stronger client portrait and name. */
.fixed-review,.fixed-review:hover{background:#fff;margin-bottom:0}
.featured-byline{border:0;padding-left:8px;gap:12px}
.featured-avatar{width:62px;height:62px}
.fixed-review .client-name{font-size:19px;font-weight:600;letter-spacing:-.025em}
@media(max-width:760px){.featured-byline{border:0;padding-left:0}.featured-avatar{width:56px;height:56px}.fixed-review .client-name{font-size:18px}}
@media(max-width:600px){.featured-byline{gap:12px}.featured-avatar{width:48px;height:48px}}

/* Annotation refinements scale with viewport height rather than a fixed screen. */
.fixed-review{border-width:.5px}
.hero{padding-bottom:0;row-gap:clamp(8px,calc(3.8svh - 20px),18px)}
.project-header{justify-content:center;margin-bottom:16px}
.project-header h2{text-align:center}

.site-footer{display:block;width:min(1200px,100%);margin:0 auto;padding:0 5.5% 25px;color:#777777}
.footer-main{display:flex;align-items:center;justify-content:space-between;gap:35px;padding:30px 0;border-top:.5px solid #e0e0e0}
.footer-brand img{width:145px}
.footer-navigation{display:flex;align-items:center;gap:28px;margin-left:auto;font-size:13px}
.footer-navigation a,.footer-bottom a{color:inherit;text-decoration:none;transition:color .25s}
.footer-navigation a:hover,.footer-bottom a:hover{color:#222}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:12px;font-size:10px;color:#969696}
.footer-bottom>a{display:flex;align-items:center;gap:13px}
@media(max-width:760px){.site-footer{padding:0 6% 24px}.footer-main{gap:24px;padding:25px 0}.footer-brand img{width:120px}.footer-navigation{gap:18px;font-size:12px}}
@media(max-width:480px){.footer-main{flex-wrap:wrap;gap:24px 18px}.footer-navigation{order:3;width:100%;margin:0;gap:25px}.footer-main .nav-contact{margin-left:auto}.footer-bottom{padding-top:7px}}

/* Full-width dark closing panel with the original wordmark as a quiet backdrop. */
.site-footer{position:relative;isolation:isolate;overflow:hidden;width:100%;max-width:none;margin:0;min-height:clamp(285px,28vw,420px);padding:40px 5.5% 27px;background:#121212;color:#d7d7d7;display:flex;flex-direction:column;justify-content:space-between;gap:75px}
.footer-watermark{position:absolute;z-index:-1;left:2%;bottom:-2%;width:96%;height:auto;max-width:none;filter:invert(1);opacity:.065;pointer-events:none;user-select:none}
.footer-main,.footer-bottom{width:100%;max-width:1080px;margin:0 auto;position:relative;z-index:1}
.footer-main{padding:0;border:0}
.footer-brand img{filter:invert(1)}
.footer-navigation{color:#c8c8c8}
.footer-navigation a:hover,.footer-bottom a:hover{color:#fff}
.footer-main .nav-contact{color:#f4f4f4;border-color:#ffffff30;background:#ffffff03}
.footer-main .nav-contact:hover{background:#ffffff0b;border-color:#ffffff60}
.footer-bottom{padding-top:0;color:#838383}
@media(max-width:760px){.site-footer{padding:32px 6% 24px;min-height:285px}.footer-main{padding:0}.footer-watermark{left:0;width:100%;bottom:10%}}
@media(max-width:480px){.site-footer{min-height:280px;gap:65px}.footer-watermark{width:110%;left:-5%;bottom:17%;opacity:.075}.footer-bottom{padding-top:0}}

/* Bespoke booking surface; availability is supplied by the server-side Cal API. */
.booking-section{width:min(1200px,100%);margin:0 auto;padding:0 5.5% 70px;scroll-margin-top:35px}
.booking-card{position:relative;display:grid;grid-template-columns:minmax(205px,.9fr) minmax(255px,1.1fr) minmax(160px,.7fr);border:.5px solid #dedede;border-radius:11px;background:#fff;overflow:hidden;min-height:420px}
.booking-intro{position:relative;isolation:isolate;overflow:hidden;padding:31px 26px;background:#fbfbfb;border-right:.5px solid #e6e6e6;display:flex;flex-direction:column;align-items:flex-start}
.booking-logo{width:111px;height:auto;margin-bottom:37px}.booking-eyebrow{font-size:10px;color:#8e8e8e;letter-spacing:.03em;margin-bottom:12px}.booking-intro h2{font-size:clamp(28px,3.2vw,40px);font-weight:600;line-height:1.05;letter-spacing:-.055em;margin:0 0 20px}.booking-intro h2:focus{outline:none}.booking-intro p{font-size:12px;line-height:1.6;letter-spacing:-.01em;color:#808080;margin:0 0 25px}.booking-facts{display:grid;gap:12px;font-size:11px;color:#626262}.booking-facts>span{display:flex;align-items:center;gap:9px}.booking-facts svg,.booking-timezone svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.2}.booking-preview{font-size:9px;border:1px solid #e1e1e1;color:#8f8f8f;border-radius:20px;padding:5px 9px;margin-top:27px}.booking-intro-arch{position:absolute;z-index:-1;bottom:-85px;right:-55px;width:160px;height:250px;border:28px solid #f1f1f1;border-radius:100px 100px 0 0;transform:rotate(-12deg);opacity:.7}
.booking-calendar{padding:29px 23px 23px;min-width:0}.booking-month-header,.booking-times-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:26px}.booking-card h3{font-size:13px;font-weight:400;letter-spacing:-.025em;margin:0}.booking-month-nav{display:flex;gap:5px}.booking-month-nav button{display:grid;place-items:center;width:25px;height:25px;border:0;border-radius:50%;background:transparent;color:#595959;padding:5px;transition:background .2s}.booking-month-nav button:hover{background:#f2f2f2}.booking-month-nav button:disabled{opacity:.25;cursor:default}.booking-month-nav svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.3}
.booking-weekdays,.booking-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.booking-weekdays{font-size:9px;color:#a3a3a3;text-align:center;margin-bottom:13px}.booking-days{grid-auto-rows:35px;min-height:199px}.booking-day{position:relative;display:grid;place-items:center;border:0;border-radius:5px;padding:0;background:#f4f4f4;color:#383838;font-size:11px;transition:background .2s,color .2s,transform .25s}.booking-day:hover:not(:disabled){background:#ebebeb;transform:translateY(-1px)}.booking-day:disabled{background:transparent;color:#c1c1c1;cursor:default}.booking-day[aria-pressed="true"]{background:#262626;color:white}.booking-day.is-today::after{content:"";position:absolute;width:3px;height:3px;border-radius:50%;background:currentColor;bottom:5px}.booking-day[aria-pressed="true"]::after{background:#cecece}
.booking-timezone{display:flex;align-items:center;gap:7px;margin-top:24px;color:#828282;font-size:10px}.booking-timezone select{font-size:10px;border:0;padding:6px 15px 6px 0;width:100%;color:#828282;background:transparent;cursor:pointer;min-width:0}
.booking-times{padding:29px 18px 20px;border-left:.5px solid #e6e6e6;min-width:0}.booking-times-header{flex-wrap:wrap;margin-bottom:24px;min-height:25px}.booking-format{display:flex;border:.5px solid #e6e6e6;border-radius:4px;padding:2px;gap:1px}.booking-format button{padding:3px 4px;font-size:8px;border:0;border-radius:2px;background:transparent;color:#989898}.booking-format button[aria-pressed="true"]{background:#efefef;color:#474747}.booking-slots{display:grid;gap:8px;max-height:290px;overflow-y:auto;padding:0 3px 3px 0;scrollbar-width:thin;scrollbar-color:#e2e2e2 transparent}.booking-slot{font-size:11px;letter-spacing:-.01em;padding:10px 6px;border:.5px solid #dfdfdf;border-radius:5px;color:#494949;background:#fff;transition:border-color .2s,background .2s,transform .2s}.booking-slot:hover{border-color:#606060;background:#f7f7f7;transform:translateX(1px)}.booking-empty{font-size:11px;line-height:1.5;color:#9a9a9a;margin:10px 0}.booking-slots-note{font-size:9px;color:#9f9f9f;line-height:1.5;margin:13px 0 0}
.booking-details,.booking-result{grid-column:2/4;padding:28px 32px}.booking-details h3{font-size:22px;letter-spacing:-.045em;margin:20px 0 7px}.booking-back{display:flex;align-items:center;gap:9px;font-size:10px;color:#8f8f8f;padding:0;background:transparent;border:0}.booking-back:hover{color:#333}.booking-summary{font-size:11px;color:#868686;margin:0 0 22px;line-height:1.5}.booking-fields{display:grid;grid-template-columns:1fr 1fr;gap:15px}.booking-details form{gap:15px;margin-top:0}.booking-details label{display:block;font-size:10px;color:#616161}.booking-details input,.booking-details textarea{font-size:12px;padding:10px 11px;border:.5px solid #dfdfdf;border-radius:5px;margin-top:7px;background:#fff}.booking-optional{color:#a6a6a6;font-size:9px}.booking-details .booking-submit{font-size:12px;padding:12px 17px;justify-content:space-between;width:100%;margin-top:1px}.booking-submit:disabled{background:#ededed;color:#9e9e9e;border-color:#e6e6e6;box-shadow:none;cursor:not-allowed;transform:none}.booking-submit:disabled::before,.booking-submit:disabled::after{display:none}.booking-preview-note{font-size:10px;color:#969696;margin:0;line-height:1.5}.booking-status{position:relative;grid-column:2/4;align-self:end;font-size:11px;color:#6b6b6b;margin:0;padding:0 24px 17px;line-height:1.5}.booking-status:empty{display:none}.booking-result{display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center}.booking-result-icon{display:grid;place-items:center;width:42px;height:42px;background:#f0f0f0;border-radius:50%;color:#6c6c6c;font-size:20px;margin-bottom:20px}.booking-result h3{font-size:29px;letter-spacing:-.04em}.booking-result p{font-size:12px;line-height:1.5;color:#898989;max-width:300px}.booking-card [hidden]{display:none!important}
@media(max-width:1000px) and (min-width:901px){.booking-intro{padding-left:21px;padding-right:21px}.booking-calendar{padding-left:18px;padding-right:18px}.booking-times{padding-left:14px;padding-right:14px}.booking-card{grid-template-columns:minmax(180px,.85fr) minmax(250px,1.15fr) minmax(150px,.7fr)}}
@media(max-width:900px){.booking-card{grid-template-columns:minmax(0,1.25fr) minmax(0,.8fr)}.booking-intro{grid-column:1/-1;border-right:0;border-bottom:.5px solid #e6e6e6;padding:25px 28px;display:grid;grid-template-columns:1fr auto;gap:0 30px}.booking-logo{grid-column:1;margin-bottom:20px;width:100px}.booking-eyebrow{grid-column:1;margin-bottom:8px}.booking-intro h2{grid-column:1;grid-row:3/5;font-size:31px;margin:0}.booking-intro p{grid-column:2;grid-row:2/4;margin:0;align-self:center;max-width:180px}.booking-facts{grid-column:2;grid-row:4;display:flex;gap:18px;margin-top:12px}.booking-preview{grid-column:2;grid-row:1;justify-self:end;align-self:start;margin:0}.booking-intro-arch{right:35%;opacity:.45}.booking-calendar{padding:25px}.booking-times{padding:25px 20px}.booking-details,.booking-result,.booking-status{grid-column:1/-1}.booking-details{padding:27px}.booking-result{min-height:300px}}
@media(max-width:600px){.booking-section{padding:0 6% 50px}.booking-card{grid-template-columns:1fr}.booking-intro{grid-template-columns:1fr;padding:24px}.booking-logo{margin-bottom:19px}.booking-intro h2{grid-row:auto;font-size:31px;margin-bottom:15px}.booking-intro p{display:none}.booking-facts{grid-column:1;grid-row:auto;margin:0;gap:20px}.booking-eyebrow{grid-row:auto}.booking-preview{grid-column:1;grid-row:auto;justify-self:start;margin-top:18px}.booking-intro-arch{right:-15px}.booking-calendar{padding:24px}.booking-days{grid-auto-rows:38px}.booking-timezone{margin-top:17px}.booking-times{border-left:0;border-top:.5px solid #e6e6e6;padding:23px}.booking-times-header{margin-bottom:17px}.booking-slots{grid-template-columns:1fr 1fr;max-height:220px}.booking-details{padding:23px}.booking-fields{grid-template-columns:1fr;gap:14px}.booking-details form{gap:14px}}
.booking-preview-note a{display:inline-block;color:#474747;text-decoration:underline;text-underline-offset:3px;margin-left:3px}
@media(prefers-reduced-motion:no-preference){.booking-details,.booking-result{animation:booking-reveal .3s ease both}@keyframes booking-reveal{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}}
/* Compact hero and a quieter, editorial booking surface. */
.page{height:65svh;min-height:530px}
.hero{padding-top:0;padding-bottom:18px;row-gap:20px}
.rating{margin-bottom:20px}.intro{margin-top:22px;margin-bottom:25px}
.footer-watermark{left:0;width:100%;opacity:.04}
.booking-card{min-height:360px;border-color:#e8e8e8;border-radius:8px;grid-template-columns:minmax(190px,.95fr) minmax(280px,1.25fr) minmax(160px,.7fr)}
.booking-intro{background:#fff;border-right:0;padding:30px 25px}
.booking-logo{width:94px;margin-bottom:30px}.booking-eyebrow{color:#858585;font-size:10px;margin-bottom:14px}
.booking-intro h2{font-size:clamp(29px,3.1vw,38px);margin-bottom:18px}
.booking-intro p{color:#888888;font-size:12px;margin-bottom:24px;line-height:1.55}
.booking-facts{display:flex;flex-wrap:wrap;gap:15px;color:#727272;font-size:11px}
.booking-intro-arch{display:none}.booking-preview{border:0;padding:0;margin-top:auto;padding-top:27px;color:#a9a9a9;font-size:9px}
.booking-calendar{padding:29px 22px 24px}.booking-month-header{margin-bottom:22px}
.booking-card h3{font-size:14px;color:#252525}.booking-month-nav button{color:#656565}
.booking-month-nav button:hover{background:#f5f5f5}
.booking-weekdays{color:#9b9b9b;font-size:10px;margin-bottom:10px}
.booking-days{grid-auto-rows:34px;min-height:194px;gap:5px}
.booking-day{font-size:12px;background:transparent;color:#292929;border-radius:50%;width:34px;justify-self:center}
.booking-day:hover:not(:disabled){background:#f0f0f0;transform:none}
.booking-day:disabled{color:#d0d0d0}.booking-day[aria-pressed="true"]{background:#242424;color:#fff}
.booking-day.is-today::after{bottom:4px}.booking-day[aria-pressed="true"]::after{background:#fff}
.booking-timezone{margin-top:18px;color:#828282}.booking-timezone select{color:#828282}
.booking-times{border-left:.5px solid #ededed;padding:29px 19px 24px}
.booking-times-header{margin-bottom:22px}.booking-format{border:0;background:#f6f6f6;border-radius:5px;padding:3px}
.booking-format button{font-size:9px;color:#a9a9a9;padding:3px 5px}
.booking-format button[aria-pressed="true"]{background:#fff;color:#353535;box-shadow:0 1px 3px #0000000c}
.booking-slot{font-size:12px;padding:10px 8px;background:#f8f8f8;border:0;border-radius:5px;color:#424242;transition:background .2s,color .2s}
.booking-slot:hover{background:#242424;color:#fff;transform:none}
.booking-slots-note{color:#a9a9a9;font-size:9px}.booking-back,.booking-summary,.booking-details label{color:#777777}
.booking-details input,.booking-details textarea{border-color:#e7e7e7}.booking-preview-note{color:#989898}
@media(max-width:900px){.booking-card{grid-template-columns:minmax(0,1.25fr) minmax(0,.8fr)}.booking-intro{padding:25px 27px;border-bottom:.5px solid #ededed}.booking-logo{margin-bottom:20px}.booking-intro h2{margin-bottom:0}.booking-preview{margin:0;padding:0}.booking-facts{margin-top:10px}.booking-intro p{margin:0}.booking-calendar{padding:25px}.booking-times{padding:25px 20px}}
@media(max-width:760px){.page{height:68svh;min-height:510px}.hero{padding-bottom:15px;row-gap:18px}.footer-watermark{left:0;width:100%;opacity:.04}}
@media(max-width:600px){.booking-card{grid-template-columns:1fr}.booking-intro{padding:24px}.booking-intro h2{margin-bottom:17px}.booking-preview{padding-top:18px}.booking-days{grid-auto-rows:38px}.booking-day{width:38px}.booking-times{border-left:0}.booking-facts{margin-top:0}.booking-intro p{display:none}}
@media(max-height:700px){.page{min-height:490px}.hero{row-gap:14px}.rating{margin-bottom:15px}.intro{margin-top:15px;margin-bottom:18px}}
/* Editorial appointment layout: open heading above the calendar. */
.page{height:58svh;min-height:500px}
.hero{justify-content:flex-start;padding-top:15px;padding-bottom:10px;row-gap:16px}
.header{padding-top:24px;padding-bottom:24px}
.rating{margin-bottom:15px}.intro{margin-top:18px;margin-bottom:20px}
.booking-section{padding-top:15px;padding-bottom:65px}
.booking-card{border:0;border-radius:0;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);min-height:0;overflow:visible;column-gap:48px}
.booking-intro{grid-column:1/-1;display:grid;grid-template-columns:1fr auto;gap:0 30px;padding:0 0 32px;margin-bottom:30px;border-bottom:.5px solid #dedede;background:transparent;overflow:visible}
.booking-logo,.booking-intro p,.booking-intro-arch{display:none}
.booking-eyebrow{grid-column:1;grid-row:1;font-size:11px;color:#838383;margin:0 0 18px}
.booking-intro h2{grid-column:1;grid-row:2;font-size:clamp(38px,5.4vw,64px);line-height:1.02;letter-spacing:-.055em;margin:0;font-weight:400}
.booking-facts{grid-column:2;grid-row:2;align-self:end;display:flex;gap:20px;font-size:12px;margin:0 0 5px;color:#686868}
.booking-preview{grid-column:2;grid-row:1;justify-self:end;margin:0;padding:0;color:#a9a9a9;font-size:10px}
.booking-calendar{padding:0 0 10px;max-width:460px;width:100%;justify-self:center}
.booking-month-header{margin-bottom:25px}.booking-card h3{font-size:16px}
.booking-month-nav button{width:29px;height:29px}
.booking-weekdays{font-size:11px;margin-bottom:13px}.booking-days{grid-auto-rows:40px;gap:5px;min-height:220px}
.booking-day{width:40px;font-size:13px}.booking-day[aria-pressed="true"]{background:#222222;box-shadow:0 3px 9px #00000012}
.booking-timezone{margin-top:21px}.booking-timezone select{font-size:11px}
.booking-times{border:0;padding:0 0 10px 30px;border-left:.5px solid #e7e7e7}
.booking-times-header{margin-bottom:28px;min-height:29px}.booking-format button{font-size:10px}
.booking-slot{background:transparent;border-bottom:.5px solid #e5e5e5;border-radius:0;text-align:left;padding:14px 5px;font-size:14px;position:relative}
.booking-slot::after{content:'↗';position:absolute;right:7px;color:#a4a4a4;transition:transform .25s,color .25s}
.booking-slot:hover{background:transparent;color:#111;border-color:#222}.booking-slot:hover::after{color:#111;transform:translate(2px,-2px)}
.booking-slots{gap:0;max-height:270px}.booking-slots-note{margin-top:18px}
.booking-details,.booking-result{grid-column:1/-1;padding:0 0 25px;max-width:620px;width:100%;justify-self:center}.booking-status{grid-column:1/-1}
.footer-watermark{width:103%;left:-1.5%;opacity:.025;bottom:-2%}
@media(max-width:760px){.page{height:62svh;min-height:500px}.hero{padding-top:12px;row-gap:16px}.booking-card{column-gap:25px}.booking-intro{padding-bottom:25px;margin-bottom:25px}.booking-intro h2{font-size:43px}.booking-facts{gap:12px;font-size:11px}.booking-times{padding-left:20px}.footer-watermark{width:103%;left:-1.5%;opacity:.025}}
@media(max-width:600px){.page{height:auto;min-height:0}.hero{padding:15px 20px 30px;row-gap:20px}.booking-card{grid-template-columns:1fr;gap:0}.booking-intro{grid-template-columns:1fr}.booking-intro h2{font-size:43px}.booking-facts{grid-column:1;grid-row:3;margin-top:22px}.booking-preview{grid-column:1;grid-row:4;justify-self:start;margin-top:15px}.booking-calendar{padding-bottom:25px}.booking-times{padding:22px 0 0;border-left:0;border-top:.5px solid #e7e7e7}.booking-slots{column-gap:20px}.booking-day{width:38px}.booking-days{grid-auto-rows:38px}}
@media(max-height:700px) and (min-width:761px){.page{min-height:485px}.header{padding-top:16px;padding-bottom:16px}.hero{padding-top:8px}}
/* Booking is contained in a card, with individual time tiles. */
.booking-card{border:.5px solid #e3e3e3;border-radius:14px;padding:32px;column-gap:38px;overflow:hidden}
.booking-intro{border-bottom:0;padding-bottom:0;margin-bottom:36px}
.booking-calendar{padding-bottom:0}
.booking-times{border-left:0;padding-left:0;padding-bottom:0}
.booking-slot{border:.5px solid #e2e2e2;background:#fafafa;border-radius:7px;padding:13px 15px;text-align:center}
.booking-slot::after{display:none}
.booking-slot:hover{background:#232323;border-color:#232323;color:#fff}
.booking-slots{gap:9px;padding-right:2px}
.booking-day:not(:disabled){border-radius:7px;background:#f5f5f5}
.booking-day[aria-pressed="true"]{background:#232323;color:#fff}
.booking-day:hover:not(:disabled){background:#eaeaea}
.booking-day[aria-pressed="true"]:hover{background:#232323}
@media(max-width:760px){.booking-card{padding:25px;column-gap:25px}.booking-intro{margin-bottom:29px}.booking-times{padding-left:0}}
@media(max-width:600px){.booking-card{padding:22px;border-radius:12px}.booking-intro{margin-bottom:30px}.booking-intro h2{font-size:37px}.booking-times{border-top:0;padding-top:25px}.booking-day{width:32px}.booking-days{grid-auto-rows:34px;gap:3px}.booking-slots{column-gap:9px}}
/* Concise native accordions remain usable without JavaScript. */
.faq-section{width:min(1200px,100%);margin:0 auto;padding:10px 5.5% 65px;display:grid;grid-template-columns:1fr 1.55fr;gap:55px;scroll-margin-top:35px}
.faq-heading>span{font-size:11px;color:#989898}.faq-heading h2{font-size:clamp(30px,3.6vw,43px);line-height:1.08;letter-spacing:-.055em;font-weight:400;margin:14px 0 0}
.faq-list{display:grid;gap:9px;align-content:start}.faq-item{border:.5px solid #e3e3e3;border-radius:8px;background:#fff;overflow:hidden;transition:background .25s,border-color .25s}
.faq-item[open]{background:#fafafa;border-color:#d7d7d7}.faq-item summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:19px 21px;font-size:14px;letter-spacing:-.02em;color:#303030}.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:focus-visible{outline:2px solid #8d8d8d;outline-offset:-4px;border-radius:8px}
.faq-icon{position:relative;width:12px;height:12px;flex:none;color:#8c8c8c}.faq-icon::before,.faq-icon::after{content:'';position:absolute;background:currentColor;top:5.5px;left:0;width:12px;height:1px;transition:transform .25s}.faq-icon::after{transform:rotate(90deg)}.faq-item[open] .faq-icon::after{transform:rotate(0)}
.faq-answer{padding:0 45px 20px 21px}.faq-answer p{margin:0;font-size:13px;line-height:1.65;letter-spacing:-.01em;color:#818181;text-wrap:pretty}
@media(prefers-reduced-motion:no-preference){.faq-item[open] .faq-answer{animation:booking-reveal .25s ease both}}
@media(max-width:760px){.faq-section{grid-template-columns:1fr;gap:25px;padding-bottom:50px}.faq-heading h2{margin-top:10px}.faq-item summary{padding:18px;font-size:14px}.faq-answer{padding:0 35px 18px 18px}}
@media(max-width:600px){.faq-section{padding-left:6%;padding-right:6%}}
/* Curated questions, with one studio response at a time. */
.ask-section{width:min(1200px,100%);margin:0 auto;padding:0 5.5% 75px;display:grid;grid-template-columns:1fr 1.8fr;gap:50px;scroll-margin-top:35px}
.ask-heading{padding-top:10px}.ask-heading>span{font-size:11px;color:#959595}.ask-heading h2{font-size:clamp(30px,3.7vw,44px);letter-spacing:-.055em;line-height:1.08;font-weight:400;margin:13px 0}.ask-period{color:#9b9b9b}
.ask-card{border:.5px solid #e3e3e3;border-radius:13px;padding:29px 30px 22px;background:radial-gradient(ellipse at 100% 0%,#f3f3f3 0%,#fff 55%);min-width:0}
.ask-topline{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:38px}.ask-topline img{width:90px;height:auto}.ask-topline>span{font-size:10px;color:#a2a2a2}
.ask-card h3{font-size:clamp(25px,3vw,34px);font-weight:400;letter-spacing:-.045em;line-height:1.1;margin:0 0 10px}.ask-intro{font-size:12px;color:#959595;line-height:1.5;margin:0 0 25px}
.ask-suggestions{display:flex;flex-wrap:wrap;gap:8px}.ask-suggestions button{display:flex;align-items:center;gap:17px;border:.5px solid #e2e2e2;border-radius:6px;background:#fff;padding:10px 12px;color:#656565;font-size:11px;transition:background .25s,color .25s,border-color .25s}.ask-suggestions button>span{color:#a0a0a0;font-size:12px}.ask-suggestions button:hover{border-color:#a6a6a6;color:#222}.ask-suggestions button[aria-pressed="true"]{background:#262626;color:#fff;border-color:#262626}.ask-suggestions button[aria-pressed="true"]>span{color:#c6c6c6}
.ask-response{margin-top:28px;padding:21px;border-radius:8px;background:#f6f6f6}.ask-response[hidden]{display:none}.ask-response-label{display:block;font-size:9px;color:#9c9c9c;margin-bottom:12px}.ask-response h4{font-size:15px;font-weight:400;letter-spacing:-.025em;margin:0 0 9px;color:#343434}.ask-response p{font-size:13px;line-height:1.65;letter-spacing:-.01em;color:#7f7f7f;text-wrap:pretty;margin:0}
.ask-personal{display:flex;align-items:center;gap:7px;margin-top:30px;font-size:11px;color:#505050;text-decoration:none}.ask-personal>span:first-child{color:#a8a8a8;margin-right:auto}.ask-personal>span:last-child{transition:transform .2s}.ask-personal:hover>span:last-child{transform:translate(2px,-2px)}
@media(max-width:760px){.ask-section{grid-template-columns:1fr;gap:22px;padding-bottom:50px}.ask-heading h2{margin-bottom:0}.ask-card{padding:25px}.ask-topline{margin-bottom:30px}}
@media(max-width:420px){.ask-section{padding-left:6%;padding-right:6%}.ask-card{padding:22px 19px}.ask-suggestions{gap:7px}.ask-suggestions button{font-size:10px;padding:9px 10px;gap:12px}.ask-personal{font-size:10px}.ask-response{padding:17px}}
.ask-section{display:block;max-width:1200px}
.ask-card{padding:35px;max-width:none;background:#fff}
.ask-card h2{font-size:clamp(27px,3.5vw,39px);font-weight:400;letter-spacing:-.045em;line-height:1.1;margin:0 0 26px}
.ask-suggestions{gap:9px}.ask-response{margin-top:25px}.ask-personal{justify-content:flex-end;margin-top:23px}
@media(max-width:760px){.ask-card{padding:26px}}
@media(max-width:420px){.ask-card{padding:23px 20px}}
.ask-suggestions{gap:7px;justify-content:flex-start}
.ask-suggestions button{flex:0 0 auto;gap:0;padding:8px 11px;font-size:11px;line-height:1.2;min-height:0;min-width:0}
@media(max-width:420px){.ask-suggestions{gap:6px}.ask-suggestions button{padding:8px 10px;font-size:10px}}
/* A conversational composer with curated instant replies. */
.ask-card{padding:34px;background:radial-gradient(ellipse at 90% 0%,#f7f7f7,white 65%);border-radius:15px}
.ask-card h2{margin-bottom:25px;font-size:clamp(28px,3.5vw,40px)}
.ask-form{display:flex;flex-direction:row;align-items:center;gap:10px;margin:0;padding:8px 9px 8px 19px;border:.5px solid #dddddd;border-radius:10px;background:#fff;box-shadow:0 3px 12px #21212104;transition:border-color .25s,box-shadow .25s}
.ask-form:focus-within{border-color:#a9a9a9;box-shadow:0 3px 16px #21212108}
.ask-form input{flex:1;min-width:0;border:0;padding:12px 0;margin:0;background:transparent;font-size:14px;color:#303030;outline:none;box-shadow:none;border-radius:0}
.ask-form input::placeholder{color:#a8a8a8}.ask-form input:focus-visible{outline:none}
.ask-form button{flex:none;display:grid;place-items:center;width:35px;height:35px;padding:8px;border:0;border-radius:8px;background:#262626;color:#fff;transition:background .2s,transform .2s}
.ask-form button:hover{background:#454545;transform:translateY(-1px)}.ask-form button svg{width:19px;height:19px}
.ask-suggestions{margin-top:13px;gap:7px}.ask-suggestions button{padding:7px 9px;background:transparent;border-color:transparent;color:#919191;font-size:11px}.ask-suggestions button:hover{border-color:#e3e3e3;background:#fff;color:#343434}
.ask-response{background:transparent;border-radius:0;padding:0;margin-top:27px;min-height:85px}
.ask-response .ask-user{display:table;margin:0 0 22px auto;padding:11px 15px;border-radius:10px 10px 2px 10px;background:#ededed;font-size:12px;color:#565656;max-width:85%;overflow-wrap:anywhere}
.ask-reply{display:flex;align-items:flex-start;gap:13px}.ask-reply-mark{display:grid;place-items:center;flex:none;width:26px;height:26px;border-radius:7px;background:#262626;color:#e9e9e9;font-size:19px;line-height:1}
.ask-reply p{padding-top:2px;max-width:650px;color:#767676;font-size:13px;line-height:1.7}
.is-thinking .ask-reply p::after{content:'•••';letter-spacing:3px;color:#9d9d9d;animation:ask-pulse 1s ease-in-out infinite}
@keyframes ask-pulse{50%{opacity:.3}}
@media(prefers-reduced-motion:reduce){.is-thinking .ask-reply p::after{animation:none}}
@media(max-width:600px){.ask-card{padding:24px 21px}.ask-form{padding-left:12px}.ask-form input{font-size:13px}.ask-suggestions{gap:2px}.ask-suggestions button{font-size:10px;padding:7px}.ask-card h2{font-size:29px}}
.ask-reply-content{min-width:0;max-width:650px}
.ask-book-call{display:inline-flex;align-items:center;gap:25px;margin-top:16px;padding:10px 13px;border:.5px solid #dddddd;border-radius:6px;color:#484848;background:#f5f5f5;font-size:11px;text-decoration:none;transition:background .2s,color .2s}
.ask-book-call[hidden]{display:none}.ask-book-call:hover{background:#262626;color:#fff}
.ask-book-call span{transition:transform .2s}.ask-book-call:hover span{transform:translate(2px,-2px)}
.ask-suggestions{gap:8px;margin-top:14px}
.ask-suggestions button{background:#f1f1f1;border:.5px solid #dddddd;color:#5e5e5e;padding:9px 12px;font-size:11px;border-radius:6px}
.ask-suggestions button:hover{background:#e9e9e9;border-color:#b2b2b2;color:#343434}
.ask-user{white-space:pre-wrap}
.ask-book-call.cta{background:#262626;color:#fff;border:1px solid #353535;padding:12px 16px;font-size:12px;border-radius:7px;gap:28px;box-shadow:inset 0 1px 0 #ffffff17,0 2px 4px #0000000b}
.ask-book-call.cta:hover{background:#373737;color:#fff}
@media(max-width:600px){.ask-suggestions button{font-size:10px;padding:8px 10px}}
/* Neutral monochrome surfaces throughout the interface. */
.ask-card{background:#fff}
.ask-suggestions button{background:#f5f5f5;border-color:#dedede;color:#595959}
.ask-suggestions button:hover{background:#ededed;border-color:#aaa;color:#222}
.ask-response .ask-user{background:#f1f1f1;color:#555}
.ask-reply p{color:#737373}
.booking-slot{background:#fafafa;border-color:#e2e2e2;color:#424242}
.booking-day:not(:disabled){background:#f5f5f5;color:#292929}
.booking-day[aria-pressed="true"],.booking-day[aria-pressed="true"]:hover{background:#232323;color:#fff}
.booking-day:hover:not(:disabled):not([aria-pressed="true"]){background:#eaeaea}
.site-footer{background:#111;color:#d8d8d8}
/* Compact secondary actions. */
.nav-contact{padding:9px 13px;gap:17px}
.ask-suggestions button{padding:6px 9px;line-height:1.2}
@media(max-width:760px){.nav-contact{padding:8px 11px;gap:14px}}
@media(max-width:600px){.ask-suggestions button{padding:6px 8px}}
/* Keep button labels and directional icons close together. */
.cta,.nav-contact,.ask-book-call.cta{gap:10px}
.booking-details .booking-submit{justify-content:center;gap:10px}
.booking-intro h2,.booking-facts{grid-row:1}
@media(max-width:600px){.booking-facts{grid-row:2}}
/* Editorial proof, clearer supporting type and restrained motion. */
.fixed-review,.fixed-review:hover{border:0;border-radius:0;background:transparent;padding:17px 0 23px;box-shadow:none}
.featured-review{grid-template-columns:minmax(0,1fr) 170px;column-gap:60px;row-gap:19px}
.featured-review .review-stars{width:86px}
.featured-review blockquote{font-size:clamp(24px,2.8vw,34px);line-height:1.3;letter-spacing:-.035em;max-width:780px}
.featured-byline{padding:0;gap:13px}.fixed-review .client-name{font-size:17px;font-weight:400}
.project-price{font-size:12px;color:#777}
.booking-timezone select{font-size:12px;color:#777}
.booking-weekdays{font-size:12px;color:#888}.booking-day:disabled{color:#b7b7b7}
.booking-format button{font-size:11px}.booking-slots-note{font-size:11px;color:#999}
.booking-facts{font-size:13px;color:#666}
.ask-suggestions button{font-size:12px;color:#666;background:#f7f7f7}
.ask-reply p{font-size:14px;line-height:1.75;color:#686868}
.ask-form input{font-size:15px}.ask-form input::placeholder{color:#969696}
.footer-bottom{font-size:11px;color:#929292}
@media(max-width:760px){.featured-review{grid-template-columns:minmax(0,1fr) 130px;column-gap:27px}.featured-review blockquote{font-size:25px}.fixed-review .client-name{font-size:16px}}
@media(max-width:600px){.featured-review{grid-template-columns:1fr;row-gap:18px}.featured-review blockquote{font-size:25px}.featured-byline{grid-column:1;grid-row:3;gap:12px}.ask-suggestions button{font-size:11px}.ask-reply p{font-size:13px}.booking-facts{font-size:12px}}
/* Give client voices a clear, centred moment of their own. */
.fixed-review,.fixed-review:hover{padding:32px 25px 38px;border:0;background:transparent}
.featured-review{display:flex;flex-direction:column;align-items:center;text-align:center;gap:0}
.featured-review .review-stars{width:102px;margin:0 0 23px}
.featured-review blockquote{max-width:850px;font-size:clamp(28px,3.5vw,43px);line-height:1.23;letter-spacing:-.045em;margin:0 0 27px;text-wrap:balance;color:#222}
.featured-byline{flex-direction:row;align-items:center;justify-content:center;gap:13px;padding:0;text-align:left}
.featured-avatar{width:53px;height:53px}.fixed-review .client-name{font-size:16px;font-weight:600}
@media(max-width:760px){.fixed-review,.fixed-review:hover{padding:25px 8px 30px}.featured-review blockquote{font-size:30px}.featured-review .review-stars{width:94px}.featured-byline{gap:12px}}
@media(max-width:480px){.featured-review blockquote{font-size:27px}.featured-avatar{width:45px;height:45px}.fixed-review .client-name{font-size:15px}}
/* Client portraits are presented as images, without avatar badges. */
.fixed-review,.fixed-review:hover{padding:35px 0 40px}
.featured-review{max-width:800px;margin:0 auto;align-items:flex-start;text-align:left}
.featured-review .review-stars{width:78px;margin-bottom:22px}
.featured-review blockquote{font-size:clamp(25px,2.8vw,34px);line-height:1.35;letter-spacing:-.035em;text-wrap:pretty;margin-bottom:28px;max-width:none}
.featured-byline{justify-content:flex-start;gap:16px}
.featured-avatar{width:64px;height:64px;border-radius:0;background:transparent;overflow:visible}
.featured-avatar img{border-radius:0;object-fit:contain}
.featured-avatar>span{display:none}
.fixed-review .client-name{font-size:15px;font-weight:400;letter-spacing:-.015em;color:#666}
@media(max-width:600px){.fixed-review,.fixed-review:hover{padding:24px 0 30px}.featured-review blockquote{font-size:26px}.featured-avatar{width:55px;height:55px}.featured-byline{gap:14px}}
.featured-avatar{display:none}
.featured-byline{gap:0}
.fixed-review .client-name{font-size:14px;letter-spacing:.01em;color:#777}
/* Large client image beside the testimonial, inside one framed composition. */
.fixed-review,.fixed-review:hover{padding:30px;border:.5px solid #e0e0e0;border-radius:10px;background:#fff}
.featured-review{position:relative;display:grid;grid-template-columns:150px minmax(0,1fr);grid-template-rows:auto auto auto;column-gap:32px;row-gap:0;max-width:none;text-align:left;align-items:start;min-height:160px;padding:0}
.featured-review .review-stars{grid-column:2;grid-row:1;width:85px;margin:2px 0 18px}
.featured-review blockquote{grid-column:2;grid-row:2;font-size:clamp(23px,2.5vw,31px);line-height:1.32;margin:0 0 18px}
.featured-byline{display:contents}
.featured-avatar{display:block;position:absolute;left:0;top:0;width:150px;height:100%;min-height:160px;border-radius:6px;overflow:hidden;background:#f5f5f5}
.featured-avatar img{width:100%;height:100%;object-fit:cover;border-radius:0}
.featured-person{grid-column:2;grid-row:3;display:block}
.fixed-review .client-name{font-size:14px;color:#555;font-weight:400}
@media(max-width:760px){.fixed-review,.fixed-review:hover{padding:23px}.featured-review{grid-template-columns:120px minmax(0,1fr);column-gap:24px}.featured-avatar{width:120px}.featured-review blockquote{font-size:25px}}
@media(max-width:540px){.fixed-review,.fixed-review:hover{padding:19px}.featured-review{grid-template-columns:82px minmax(0,1fr);column-gap:18px;min-height:120px}.featured-avatar{width:82px;min-height:120px}.featured-review blockquote{font-size:21px;line-height:1.35}.featured-review .review-stars{width:75px;margin-bottom:14px}.fixed-review .client-name{font-size:12px}}
/* Client image runs flush to the frame on three sides. */
.fixed-review,.fixed-review:hover{padding:0;overflow:hidden}
.featured-review{grid-template-columns:180px minmax(0,1fr);column-gap:30px;padding:28px 30px 28px 0;min-height:215px}
.featured-avatar{left:0;top:0;width:180px;height:100%;min-height:0;border-radius:0}
@media(max-width:760px){.featured-review{grid-template-columns:140px minmax(0,1fr);column-gap:24px;padding:23px 23px 23px 0}.featured-avatar{width:140px}}
@media(max-width:540px){.featured-review{grid-template-columns:95px minmax(0,1fr);column-gap:17px;padding:19px 17px 19px 0;min-height:170px}.featured-avatar{width:95px}}
/* Identify the client before the testimonial and project attribution. */
.featured-person{grid-column:2;grid-row:1;margin:0 0 11px}
.fixed-review .client-name{font-size:16px;font-weight:600;color:#333}
.featured-review .review-stars{grid-column:2;grid-row:2;margin:0 0 16px}
.featured-review blockquote{grid-column:2;grid-row:3;margin:0;font-size:clamp(22px,2.35vw,29px);line-height:1.4;overflow:visible;max-height:none;display:block}
.featured-person{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px 12px}
.client-project{font-size:12px;font-weight:400;color:#999;letter-spacing:0}
.testimonials-after-booking .featured-review blockquote{font-size:clamp(18px,1.8vw,22px);line-height:1.55;letter-spacing:-.02em;text-wrap:pretty}
.testimonials-after-booking .featured-avatar img{object-fit:contain;background:#111}
@media(max-width:600px){.testimonials-after-booking .featured-review{grid-template-columns:1fr;padding:0 20px 23px;gap:0}.testimonials-after-booking .featured-avatar{position:relative;grid-column:1;grid-row:1;width:calc(100% + 40px);height:170px;margin:0 -20px 23px}.testimonials-after-booking .featured-person{grid-column:1;grid-row:2}.testimonials-after-booking .review-stars{grid-column:1;grid-row:3}.testimonials-after-booking .featured-review blockquote{grid-column:1;grid-row:4;font-size:18px}}
.client-project{display:inline-flex;align-items:center;gap:6px}
.client-project img{display:block;width:20px;height:20px;object-fit:contain;border-radius:3px}
/* Align the author and project identity to one shared centre line. */
.featured-person{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:8px 14px;min-height:22px;margin:0 0 13px}
.fixed-review .client-name{display:block;font-size:16px;line-height:22px;margin:0}
.client-project{display:inline-flex;align-items:center;gap:7px;font-size:12px;line-height:22px;white-space:nowrap}
.client-project img{width:20px;height:20px;flex:none;object-fit:contain}
.featured-review .review-stars{display:block;align-self:start;margin:0 0 18px}
.featured-review blockquote{margin:0}
@media(max-width:540px){.featured-person{gap:5px 10px}.fixed-review .client-name{font-size:14px}.client-project{font-size:11px}}
/* Three clear steps, without promises beyond the agreed project scope. */
.process-section{width:min(1200px,100%);padding:0 5.5% 55px;margin:0 auto}
.process-section>h2{font-size:clamp(29px,3.5vw,41px);font-weight:400;letter-spacing:-.05em;margin:0 0 27px;line-height:1.1}
.process-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.process-card{position:relative;border:.5px solid #e2e2e2;border-radius:9px;padding:25px 24px 27px;background:#fff;min-width:0}
.process-number{font-size:11px;color:#aaa;letter-spacing:.02em}.process-icon{display:block;width:40px;height:40px;margin:29px 0 24px;stroke:#333;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round}
.process-card h3{font-size:clamp(23px,2.7vw,31px);font-weight:400;line-height:1.08;letter-spacing:-.045em;margin:0 0 18px}
.process-card p{font-size:13px;line-height:1.65;letter-spacing:-.01em;color:#858585;margin:0;max-width:260px;text-wrap:pretty}
@media(max-width:760px){.process-section{padding-bottom:40px}.process-card{padding:21px 18px}.process-icon{margin:25px 0 21px}.process-card h3{font-size:25px}.process-card p{font-size:12px}}
@media(max-width:540px){.process-section{padding-left:6%;padding-right:6%}.process-grid{grid-template-columns:1fr;gap:10px}.process-card{display:grid;grid-template-columns:40px minmax(0,1fr);column-gap:20px;padding:23px}.process-number{grid-column:1;grid-row:1}.process-icon{grid-column:1;grid-row:2;margin:16px 0 0;width:32px;height:32px}.process-card h3{grid-column:2;grid-row:1;margin:0 0 12px;font-size:26px}.process-card h3 br{display:none}.process-card p{grid-column:2;grid-row:2;max-width:none;font-size:13px}}
/* A scroll-led editorial journey rather than three isolated cards. */
.process-section{display:grid;grid-template-columns:1fr 1.1fr;gap:75px;padding-top:45px;padding-bottom:80px;align-items:start}
.process-sticky{position:sticky;top:90px;padding-top:35px}
.process-sticky h2{font-size:clamp(34px,4.4vw,55px);line-height:1.04;letter-spacing:-.055em;font-weight:400;margin:0 0 36px}
.process-progress{height:1px;background:#e7e7e7;width:130px;overflow:hidden}
.process-progress span{display:block;width:100%;height:100%;background:#222;transform-origin:left;transform:scaleX(.333);transition:transform .65s cubic-bezier(.22,1,.36,1)}
.process-counter{display:block;font-size:11px;color:#999;margin-top:13px;font-variant-numeric:tabular-nums}
.process-grid{display:block}
.process-card{border:0;border-radius:0;padding:35px 0 65px;min-height:300px;background:transparent;display:grid;grid-template-columns:37px minmax(0,1fr);column-gap:20px;align-content:start;transition:opacity .65s ease,transform .8s cubic-bezier(.22,1,.36,1)}
.process-card:last-child{padding-bottom:30px}
.process-number{grid-column:1;grid-row:1/4;padding-top:8px;font-size:11px;color:#aaa}
.process-icon{grid-column:2;grid-row:1;width:39px;height:39px;margin:0 0 24px;stroke:#555}
.process-card h3{grid-column:2;grid-row:2;font-size:clamp(30px,3.5vw,42px);line-height:1.07;margin:0 0 20px}
.process-card p{grid-column:2;grid-row:3;font-size:14px;line-height:1.7;max-width:310px;color:#777}
.process-section.is-enhanced .process-card{opacity:.24;transform:translateY(14px)}
.process-section.is-enhanced .process-card.is-current{opacity:1;transform:translateY(0)}
@media(max-width:760px){.process-section{gap:32px;grid-template-columns:1fr 1.15fr;padding-top:20px;padding-bottom:50px}.process-sticky{top:55px}.process-sticky h2{font-size:34px}.process-card{column-gap:12px;grid-template-columns:25px minmax(0,1fr);min-height:290px;padding-top:35px}.process-card h3{font-size:31px}.process-card p{font-size:13px}}
@media(max-width:540px){.process-section{grid-template-columns:1fr;gap:10px}.process-sticky{position:relative;top:auto;padding-top:0}.process-sticky h2{font-size:38px;margin-bottom:23px}.process-progress,.process-counter{display:none}.process-card{min-height:270px;padding:30px 0 35px;grid-template-columns:30px minmax(0,1fr);column-gap:18px}.process-card h3{font-size:32px}.process-card h3 br{display:block}.process-icon{grid-column:2;grid-row:1;margin:0 0 22px;width:36px;height:36px}.process-number{grid-column:1;grid-row:1/4}.process-card p{grid-column:2;grid-row:3;font-size:14px}.process-card h3{grid-column:2;grid-row:2}}
@media(prefers-reduced-motion:reduce){.process-section.is-enhanced .process-card{opacity:1;transform:none;transition:none}.process-progress span{transition:none}}
/* Let the steps occupy the full section width. */
.process-section{display:block;padding-top:35px;padding-bottom:60px}
.process-sticky{position:static;padding:0;margin-bottom:38px}
.process-sticky h2{font-size:clamp(32px,4vw,47px);margin:0;max-width:none}
.process-sticky h2 br{display:none}
.process-progress,.process-counter{display:none}
.process-card{display:grid;grid-template-columns:40px minmax(0,1.1fr) minmax(0,.8fr);column-gap:30px;align-items:center;min-height:220px;padding:37px 0;border-top:.5px solid #e5e5e5}
.process-number{grid-column:1;grid-row:1;padding:0;align-self:start;margin-top:9px}
.process-icon{display:none}
.process-card h3{grid-column:2;grid-row:1;font-size:clamp(34px,4.6vw,56px);line-height:1.04;margin:0}
.process-card p{grid-column:3;grid-row:1;font-size:15px;line-height:1.65;max-width:320px;margin:0}
.process-card:last-child{padding-bottom:37px}
.process-section.is-enhanced .process-card{opacity:.38;transform:translateY(8px)}
.process-section.is-enhanced .process-card.is-current{opacity:1;transform:none}
@media(max-width:760px){.process-card{grid-template-columns:27px 1fr .9fr;gap:20px;min-height:210px}.process-card h3{font-size:38px}.process-card p{font-size:13px}}
@media(max-width:540px){.process-sticky{margin-bottom:27px}.process-sticky h2{font-size:32px}.process-card{grid-template-columns:25px minmax(0,1fr);gap:17px;min-height:240px;padding:30px 0}.process-number{grid-column:1;grid-row:1}.process-card h3{grid-column:2;grid-row:1;font-size:36px}.process-card p{grid-column:2;grid-row:2;font-size:14px;max-width:310px}.process-card:last-child{padding-bottom:30px}}
@media(prefers-reduced-motion:reduce){.process-section.is-enhanced .process-card{opacity:1;transform:none}}
/* Vertical scrolling drives a pinned horizontal sequence. */
.process-section{position:relative;width:100%;max-width:none;padding:0;margin:0;height:auto}
.process-pin{padding:40px 5.5% 50px;overflow:hidden}
.process-sticky{margin-bottom:40px}
.process-grid{display:flex;gap:30px;width:100%;will-change:transform}
.process-card{flex:0 0 100%;min-width:0;min-height:310px;border:0;padding:35px 0;grid-template-columns:65px minmax(0,1.1fr) minmax(0,.8fr);column-gap:35px;align-items:center;opacity:1;transform:none}
.process-card:last-child{padding-bottom:35px}
.process-number{font-size:13px;color:#aaa;align-self:start;padding-top:8px}
.process-card h3{font-size:clamp(44px,6.6vw,86px);line-height:1.02;letter-spacing:-.055em}
.process-card p{font-size:16px;max-width:320px;line-height:1.7}
.process-section.is-horizontal{height:250svh}
.is-horizontal .process-pin{position:sticky;top:0;min-height:100svh;display:flex;flex-direction:column;justify-content:center}
.process-card{transition:opacity .35s ease}
@media(max-width:760px){.process-pin{padding-left:6%;padding-right:6%}.process-card{grid-template-columns:28px minmax(0,1fr);column-gap:20px;min-height:330px}.process-card h3{grid-column:2;grid-row:1;font-size:clamp(42px,8vw,65px)}.process-card p{grid-column:2;grid-row:2;font-size:15px;margin-top:24px}.process-number{grid-column:1;grid-row:1}.process-sticky h2{font-size:30px}.process-sticky{margin-bottom:30px}}
@media(prefers-reduced-motion:reduce){.process-grid{display:block;transform:none!important}.process-card{min-height:250px}.process-pin{position:static}.process-section{height:auto}}
/* Compact horizontal scenes, each illustrated below the copy. */
.process-section.is-horizontal{height:205svh}
.is-horizontal .process-pin{top:0;min-height:0;height:76svh;max-height:760px;padding-top:35px;padding-bottom:15px;justify-content:center}
.process-sticky{margin-bottom:24px}
.process-card{min-height:0;padding:10px 0 0;row-gap:24px;grid-template-rows:auto 160px;align-content:center}
.process-card:last-child{padding-bottom:0}
.process-number{grid-row:1}.process-card h3{grid-row:1;font-size:clamp(40px,5.5vw,72px)}
.process-card p{grid-row:1;font-size:15px}
.process-visual{display:block;grid-column:2/4;grid-row:2;width:100%;height:160px;overflow:visible}
.discover-dot{transform-origin:350px 80px;animation:discover-orbit 9s linear infinite}
.build-piece{animation:build-drift 5s ease-in-out infinite}.piece-two{animation-delay:-1.6s}.piece-three{animation-delay:-3.2s}
.launch-path{animation:launch-flow 8s linear infinite}.launch-window{animation:build-drift 6s ease-in-out infinite}.launch-signal{animation:signal-pulse 3s ease-in-out infinite;transform-origin:573px 41px}
@keyframes discover-orbit{to{transform:rotate(360deg)}}
@keyframes build-drift{50%{transform:translateY(-6px)}}
@keyframes launch-flow{to{stroke-dashoffset:-100}}
@keyframes signal-pulse{50%{opacity:.3;transform:scale(.7)}}
@media(max-width:760px){.is-horizontal .process-pin{height:85svh;max-height:none;padding-top:25px;padding-bottom:10px}.process-card{grid-template-rows:auto auto 140px;row-gap:16px}.process-card h3{grid-row:1;font-size:43px}.process-card p{grid-row:2;margin:0;max-width:420px}.process-visual{grid-column:2;grid-row:3;height:140px}.process-sticky{margin-bottom:24px}.process-sticky h2{font-size:28px}}
@media(prefers-reduced-motion:reduce){.process-visual *{animation:none!important}.process-card{padding:25px 0}.process-pin{height:auto;max-height:none}.process-grid{display:block}}
.is-horizontal .process-pin{height:60svh;min-height:490px;max-height:620px;padding-top:30px;padding-bottom:15px}
@media(max-width:760px){.is-horizontal .process-pin{height:70svh;min-height:540px;max-height:690px}}
/* One continuous diagram, with no short pinned panel above an empty viewport. */
.is-horizontal .process-pin{height:100svh;min-height:0;max-height:none;padding-top:30px;padding-bottom:25px;justify-content:center}
.process-section.is-horizontal{height:185svh}
.process-grid{gap:0;position:relative}
.process-card{position:relative;grid-template-rows:auto 220px;row-gap:15px;padding:0;min-height:0;flex-basis:100%}
.process-card:last-child{padding:0}
.process-visual{grid-column:1/-1;width:100%;height:220px;grid-row:2}
.process-card::after{content:'';position:absolute;left:0;right:0;bottom:110px;height:1px;background:#dedede;z-index:-1}
.process-sticky{margin-bottom:35px}
@media(max-width:760px){.is-horizontal .process-pin{height:100svh;min-height:0;max-height:none;padding-top:20px;padding-bottom:15px}.process-card{grid-template-rows:auto auto 180px;row-gap:18px}.process-visual{grid-column:1/-1;grid-row:3;height:180px}.process-card::after{bottom:90px}.process-sticky{margin-bottom:25px}}
@media(prefers-reduced-motion:reduce){.process-card::after{display:none}.process-card{padding:25px 0}.process-pin{height:auto}}
/* Compact framing with breathing room between heading and the sequence. */
.is-horizontal .process-pin{height:640px;min-height:0;max-height:85svh;padding-top:28px;padding-bottom:10px;justify-content:flex-start}
.process-section.is-horizontal{height:calc(640px + 85svh)}
.process-sticky{margin-bottom:65px}
.process-card{grid-template-rows:auto 200px;row-gap:18px}
.process-visual{height:200px}
.process-card::after{display:none}
@media(max-width:760px){.is-horizontal .process-pin{height:650px;max-height:92svh;padding-top:25px;padding-bottom:10px}.process-section.is-horizontal{height:calc(650px + 85svh)}.process-sticky{margin-bottom:44px}.process-card{grid-template-rows:auto auto 170px;row-gap:15px}.process-visual{height:170px}}
@media(max-height:700px) and (min-width:761px){.is-horizontal .process-pin{height:540px;max-height:95svh}.process-sticky{margin-bottom:40px}.process-card{grid-template-rows:auto 150px}.process-visual{height:150px}}
/* A full viewport pin reserves its own scroll distance in normal document flow. */
.process-section.is-horizontal{height:280svh;margin:0;padding:0;overflow:visible}
.is-horizontal .process-pin{position:sticky;top:0;height:100svh;min-height:100svh;max-height:none;box-sizing:border-box;padding:clamp(25px,5svh,55px) 5.5%;display:flex;flex-direction:column;justify-content:center;overflow:clip;background:#fff}
.is-horizontal .process-sticky{flex:none;margin-bottom:clamp(40px,7svh,80px)}
.is-horizontal .process-grid{flex:none;gap:0;width:100%;transition:none;overflow:visible}
.is-horizontal .process-card{flex:0 0 100%;box-sizing:border-box;margin:0;transition:none;transform:none;opacity:1}
@media(max-width:760px){.is-horizontal .process-pin{height:100svh;min-height:100svh;max-height:none;padding:25px 6%}.is-horizontal .process-sticky{margin-bottom:35px}}
@media(prefers-reduced-motion:reduce){.process-section{height:auto}.process-pin{position:static;height:auto;max-height:none;min-height:0}.process-grid{display:block}.process-card{padding:25px 0}}
/* Give the animated geometry the lower half of the pinned composition. */
.is-horizontal .process-sticky{margin-bottom:clamp(35px,5svh,55px)}
.is-horizontal .process-card{grid-template-rows:auto clamp(270px,38svh,420px);row-gap:20px}
.is-horizontal .process-visual{height:clamp(270px,38svh,420px);width:100%;grid-column:1/-1;grid-row:2}
@media(max-width:760px){.is-horizontal .process-card{grid-template-rows:auto auto clamp(220px,32svh,340px);row-gap:15px}.is-horizontal .process-visual{grid-row:3;height:clamp(220px,32svh,340px)}.is-horizontal .process-sticky{margin-bottom:30px}}
@media(max-height:700px) and (min-width:761px){.is-horizontal .process-card{grid-template-rows:auto 230px}.is-horizontal .process-visual{height:230px}.is-horizontal .process-sticky{margin-bottom:30px}}
/* Fill the pinned viewport rather than centring a smaller block inside it. */
.is-horizontal .process-pin{padding-top:22px;padding-bottom:12px;justify-content:flex-start}
.is-horizontal .process-sticky{margin-bottom:32px}
.is-horizontal .process-grid{flex:1;min-height:0;align-items:stretch}
.is-horizontal .process-card{height:100%;grid-template-rows:auto minmax(0,1fr);align-content:stretch;row-gap:16px}
.is-horizontal .process-visual{height:100%;min-height:0;align-self:stretch}
@media(max-width:760px){.is-horizontal .process-pin{padding-top:20px;padding-bottom:10px}.is-horizontal .process-sticky{margin-bottom:25px}.is-horizontal .process-card{grid-template-rows:auto auto minmax(0,1fr);row-gap:15px}.is-horizontal .process-visual{height:100%;min-height:0}}
/* Keep SVG geometry proportional; remove padding rather than stretching artwork. */
.is-horizontal .process-pin{padding-top:20px;padding-bottom:12px;justify-content:center}
.is-horizontal .process-sticky{margin-bottom:38px}
.is-horizontal .process-grid{flex:0 0 auto;min-height:0}
.is-horizontal .process-card{height:auto;grid-template-rows:auto auto;row-gap:12px;align-content:start}
.is-horizontal .process-visual{display:block;width:100%;height:auto;aspect-ratio:700 / 160;min-height:0;align-self:start}
@media(max-width:760px){.is-horizontal .process-pin{padding-top:18px;padding-bottom:10px}.is-horizontal .process-sticky{margin-bottom:30px}.is-horizontal .process-card{grid-template-rows:auto auto auto;row-gap:14px}.is-horizontal .process-visual{height:auto;aspect-ratio:700 / 160;grid-row:3}}
/* Size the pinned scene to its content rather than adding viewport-sized whitespace. */
.is-horizontal .process-pin{height:auto;min-height:0;max-height:none;justify-content:flex-start;padding-top:24px;padding-bottom:24px}
.is-horizontal .process-sticky{margin-bottom:38px}
@media(max-width:760px){.is-horizontal .process-pin{height:auto;min-height:0;max-height:none;padding-top:20px;padding-bottom:20px}.is-horizontal .process-sticky{margin-bottom:30px}}
/* Horizontal input uses no artificial vertical spacer. */
.process-section.is-horizontal{height:auto;margin:0;padding:0}
.is-horizontal .process-pin{position:relative;top:auto;height:auto;min-height:0;max-height:none;padding-top:24px;padding-bottom:24px}
@media(max-width:760px){.is-horizontal .process-pin{padding-top:20px;padding-bottom:20px}}
/* Native sticky sequencing: finish all horizontal travel before releasing the page. */
.process-section.is-horizontal{position:relative;height:260svh;overflow:visible;margin:0;padding:0}
.is-horizontal .process-pin{position:sticky;top:0;height:100svh;min-height:100svh;max-height:100svh;padding:24px 5.5%;justify-content:center;overflow:clip;box-sizing:border-box}
.is-horizontal .process-grid{flex:none;min-height:0;transition:none}
.is-horizontal .process-card{height:auto;flex:0 0 100%;grid-template-rows:auto auto;row-gap:12px;transform:none;opacity:1}
.is-horizontal .process-visual{height:auto;width:100%;aspect-ratio:700/160;grid-row:2}
.is-horizontal .process-sticky{margin-bottom:44px}
@media(max-width:760px){.is-horizontal .process-pin{padding:20px 6%;height:100svh;min-height:100svh;max-height:100svh}.is-horizontal .process-card{grid-template-rows:auto auto auto;row-gap:16px}.is-horizontal .process-visual{grid-row:3}.is-horizontal .process-sticky{margin-bottom:32px}}
@media(prefers-reduced-motion:reduce){.process-section{height:auto}.process-pin{position:static;height:auto;min-height:0;max-height:none}.process-grid{display:block}}
/* Compact pinned frame; horizontal sequencing stays driven by native scrolling. */
.is-horizontal .process-pin{height:70svh;min-height:500px;max-height:700px;padding-top:20px;padding-bottom:20px;justify-content:center}
.is-horizontal .process-sticky{margin-bottom:40px}
@media(max-width:760px){.is-horizontal .process-pin{height:76svh;min-height:510px;max-height:700px;padding-top:18px;padding-bottom:18px}.is-horizontal .process-sticky{margin-bottom:30px}}
@media(max-height:700px) and (min-width:761px){.is-horizontal .process-pin{height:85svh;min-height:440px;max-height:none}}
/* No scroll spacer: keep the real content height and consume input horizontally. */
.process-section.is-horizontal{height:auto;min-height:0;margin:0;padding:0}
.is-horizontal .process-pin{position:relative;top:auto;height:auto;min-height:0;max-height:none;padding:22px 5.5%;justify-content:flex-start}
.is-horizontal .process-sticky{margin-bottom:42px}
.is-horizontal .process-grid{flex:none}
.is-horizontal .process-card{height:auto;min-height:0;grid-template-rows:auto auto}
.is-horizontal .process-visual{height:auto;aspect-ratio:700/160;max-height:none}
@media(max-width:760px){.is-horizontal .process-pin{height:auto;min-height:0;max-height:none;padding:20px 6%}.is-horizontal .process-sticky{margin-bottom:32px}.is-horizontal .process-card{grid-template-rows:auto auto auto}}
/* Shared layout rhythm and surface scale. */
:root{--section-space:64px;--panel-inset:32px;--panel-radius:12px;--control-radius:6px}
.portfolio{padding-bottom:var(--section-space)}
.is-horizontal .process-pin{padding-top:0;padding-bottom:0}
.process-section{margin-bottom:var(--section-space)}
.process-section.is-horizontal{margin-bottom:var(--section-space)}
.testimonials{padding-bottom:var(--section-space)}
.booking-section{padding-top:0;padding-bottom:var(--section-space)}
.ask-section{padding-bottom:var(--section-space)}
.booking-card,.ask-card,.fixed-review{border-radius:var(--panel-radius)}
.booking-card,.ask-card{padding:var(--panel-inset)}
.booking-calendar{padding:0;justify-self:stretch;max-width:none}
.booking-times{padding:0;border:0}
.booking-details,.booking-result{padding:0;max-width:none}
.booking-intro h2{font-size:clamp(40px,4.6vw,54px);line-height:1.04}
.process-sticky h2,.ask-card h2{font-size:clamp(32px,4vw,44px);line-height:1.08;letter-spacing:-.05em;font-weight:400}
.featured-person{gap:8px 12px}
.client-project{font-size:13px;color:#858585}
.featured-review blockquote p{margin:0 0 15px;font:inherit;color:inherit;line-height:inherit;letter-spacing:inherit}
.featured-review blockquote p:last-child{margin-bottom:0}
.testimonials-after-booking .featured-review{grid-template-columns:180px minmax(0,1fr);padding:32px 32px 32px 0}
.testimonials-after-booking .featured-avatar img{object-fit:cover;object-position:center;background:#111}
.booking-timezone,.booking-timezone select{font-size:12px;color:#777}
.booking-format button{font-size:12px}
.booking-weekdays{font-size:12px;color:#888}
.booking-slots-note{font-size:12px;color:#888;line-height:1.5}
.ask-suggestions button{font-size:12px}
.nav-contact,.cta,.booking-slot,.booking-format,.ask-form button,.ask-suggestions button,.client-project img{border-radius:var(--control-radius)}
@media(max-width:760px){:root{--section-space:40px;--panel-inset:24px}.is-horizontal .process-pin{padding-top:0;padding-bottom:0}.booking-card,.ask-card{padding:var(--panel-inset)}.booking-calendar,.booking-times,.booking-details,.booking-result{padding:0}.testimonials-after-booking .featured-review{grid-template-columns:140px minmax(0,1fr);padding:24px 24px 24px 0}.process-sticky h2,.ask-card h2{font-size:32px}.booking-intro h2{font-size:40px}.client-project{font-size:12px}}
@media(max-width:600px){.booking-times{padding-top:24px}.testimonials-after-booking .featured-review{grid-template-columns:1fr;padding:0 24px 24px}.testimonials-after-booking .featured-avatar{width:calc(100% + 48px);height:180px;margin:0 -24px 24px}.testimonials-after-booking .featured-avatar img{object-fit:contain}.booking-format button{font-size:11px}.booking-slots-note{font-size:11px}.ask-suggestions button{font-size:11px}}
.testimonials-after-booking .featured-avatar,.testimonials-after-booking .featured-avatar img{background:#0d1000}
.testimonials-after-booking .featured-avatar img{object-fit:contain}
/* Compact review copy while keeping the full testimonials readable. */
.featured-review blockquote{font-size:clamp(18px,1.85vw,22px);line-height:1.45;letter-spacing:-.02em}
.testimonials-after-booking .featured-review blockquote{font-size:clamp(16px,1.6vw,18px);line-height:1.5}
.featured-review{padding-top:24px;padding-bottom:24px;min-height:185px}
.testimonials-after-booking .featured-review{padding-top:24px;padding-bottom:24px}
.featured-review blockquote p{margin-bottom:11px}
.featured-review .review-stars{width:78px;margin-bottom:13px}
.featured-person{margin-bottom:10px}
@media(max-width:600px){.featured-review blockquote{font-size:18px}.testimonials-after-booking .featured-review blockquote{font-size:16px}.testimonials-after-booking .featured-review{padding-top:0;padding-bottom:22px}}
/* Coordinated abstract motion: orbit, assembly, then propagation. */
.discover-dot{transform-box:view-box;transform-origin:350px 80px;animation:discover-orbit 11s linear infinite}
.orbit-secondary{transform-origin:350px 80px;animation:counter-orbit 8s linear infinite}
.orbit-ring{stroke-dasharray:210 18 36 94;transform-origin:350px 80px;animation:counter-orbit 28s linear infinite}
.discover-ripple{transform-origin:350px 80px;animation:geometry-ripple 5.5s cubic-bezier(.2,.65,.3,1) infinite}
.visual-discover>rect{animation:node-breathe 5.5s ease-in-out infinite}
.build-piece{animation:none}
.piece-one{transform-origin:286px 79px;animation:assemble-left 7s cubic-bezier(.45,0,.2,1) infinite}
.piece-two{transform-origin:366px 92px;animation:assemble-middle 7s cubic-bezier(.45,0,.2,1) infinite}
.piece-three{transform-origin:431px 54px;animation:assemble-right 7s cubic-bezier(.45,0,.2,1) infinite}
.build-guide{transform-origin:350px 80px;animation:guide-lock 7s ease-in-out infinite}
.launch-window{transform-origin:351px 81px;animation:window-lift 6.5s cubic-bezier(.45,0,.2,1) infinite}
.launch-path{stroke-dasharray:3 7;animation:launch-flow 5s linear infinite}
.launch-signal{transform-origin:573px 41px;animation:signal-pulse 3.25s ease-in-out infinite}
.launch-orbit{transform-origin:573px 41px;animation:discover-orbit 9s linear infinite}
.launch-arrow-echo{animation:arrow-release 6.5s ease-in-out infinite}
@keyframes counter-orbit{to{transform:rotate(-360deg)}}
@keyframes geometry-ripple{0%,20%{transform:scale(1);opacity:0}35%{opacity:.6}85%,100%{transform:scale(1.7);opacity:0}}
@keyframes node-breathe{0%,100%{opacity:.65}50%{opacity:1}}
@keyframes assemble-left{0%,100%{transform:translate(-13px,3px) rotate(-5deg)}35%,65%{transform:translate(0,0) rotate(0)}}
@keyframes assemble-middle{0%,100%{transform:translate(0,8px) rotate(3deg)}35%,65%{transform:translate(0,0) rotate(0)}}
@keyframes assemble-right{0%,100%{transform:translate(13px,-5px) rotate(7deg)}35%,65%{transform:translate(0,0) rotate(0)}}
@keyframes guide-lock{0%,100%{opacity:.25;transform:scale(1.07)}35%,65%{opacity:1;transform:scale(1)}}
@keyframes window-lift{0%,100%{transform:translateY(3px)}40%,65%{transform:translateY(-5px)}}
@keyframes arrow-release{0%,30%{opacity:0;transform:translate(0,0)}40%{opacity:.5}65%,100%{opacity:0;transform:translate(24px,-24px)}}
@media(prefers-reduced-motion:reduce){.process-visual *{animation:none!important}}
/* Quiet orbital geometry on primary actions only. */
.cta::after{inset:auto;right:-18px;top:50%;width:96px;height:96px;border:1px solid #ffffff24;border-radius:50%;box-shadow:none;background:radial-gradient(circle at 50% 2%,#e5e5e5 0 2px,transparent 2.6px);opacity:0;transform:translateY(-50%) rotate(-65deg) scale(.82);transition:opacity .45s ease,transform .65s cubic-bezier(.22,1,.36,1);pointer-events:none}
.cta:is(:hover,:focus-visible)::after{opacity:.7;transform:translateY(-50%) rotate(0) scale(1);animation:button-orbit 7s .65s linear infinite}
.cta:is(:hover,:focus-visible)::before{opacity:.65}
.cta:disabled::after{display:none}
@keyframes button-orbit{from{transform:translateY(-50%) rotate(0) scale(1)}to{transform:translateY(-50%) rotate(360deg) scale(1)}}
@media(prefers-reduced-motion:reduce){.cta:is(:hover,:focus-visible)::after{animation:none;transform:translateY(-50%);transition:opacity .2s}}
/* Three expanding orbital rings from each side, without a travelling dot. */
.cta::before,.cta::after{content:'';position:absolute;inset:auto;top:50%;width:74px;height:74px;border:1px solid #ffffff24;border-radius:50%;background:none;filter:none;box-shadow:0 0 0 14px #ffffff00,0 0 0 15px #ffffff1c,0 0 0 29px #ffffff00,0 0 0 30px #ffffff12;opacity:0;pointer-events:none;animation:none;transition:opacity .5s ease,transform .8s cubic-bezier(.22,1,.36,1)}
.cta::before{left:-48px;right:auto;transform:translate(-24px,-50%) scale(.35);z-index:-1}
.cta::after{right:-48px;left:auto;transform:translate(24px,-50%) scale(.35);z-index:-1}
.cta:is(:hover,:focus-visible)::before{opacity:1;transform:translate(0,-50%) scale(1);animation:none}
.cta:is(:hover,:focus-visible)::after{opacity:1;transform:translate(0,-50%) scale(1);animation:none}
@media(prefers-reduced-motion:reduce){.cta::before,.cta::after{transition:opacity .2s}.cta::before,.cta:is(:hover,:focus-visible)::before,.cta::after,.cta:is(:hover,:focus-visible)::after{transform:translate(0,-50%) scale(1)!important}}
.cta::before,.cta::after{width:136px;height:136px;border:0;box-shadow:none;background:radial-gradient(circle at center,transparent 35px,#ffffff24 35.5px,#ffffff24 36px,transparent 36.5px,transparent 50px,#ffffff1c 50.5px,#ffffff1c 51px,transparent 51.5px,transparent 65px,#ffffff12 65.5px,#ffffff12 66px,transparent 66.5px)}
.cta::before{left:-79px}.cta::after{right:-79px}
/* A single orbital ring on either side of secondary contact actions. */
.nav-contact::before,.nav-contact::after{content:'';position:absolute;top:50%;width:74px;height:74px;border:1px solid currentColor;border-radius:50%;background:none;pointer-events:none;opacity:0;z-index:-1;transition:opacity .45s ease,transform .8s cubic-bezier(.22,1,.36,1)}
.nav-contact::before{left:-44px;transform:translate(-17px,-50%) scale(.35)}
.nav-contact::after{right:-44px;transform:translate(17px,-50%) scale(.35)}
.nav-contact:is(:hover,:focus-visible)::before,.nav-contact:is(:hover,:focus-visible)::after{opacity:.14;transform:translate(0,-50%) scale(1)}
@media(prefers-reduced-motion:reduce){.nav-contact::before,.nav-contact::after{transition:opacity .2s;transform:translate(0,-50%) scale(1)}}
.nav-contact::before,.nav-contact::after{width:46px;height:46px}
.nav-contact::before{left:-29px}.nav-contact::after{right:-29px}
/* Two subtle rings on secondary buttons. */
.nav-contact::before,.nav-contact::after{width:68px;height:68px;border:0;background:radial-gradient(circle at center,transparent 21.5px,currentColor 22px,currentColor 22.5px,transparent 23px,transparent 31.5px,currentColor 32px,currentColor 32.5px,transparent 33px)}
.nav-contact::before{left:-40px}.nav-contact::after{right:-40px}
.nav-contact:is(:hover,:focus-visible)::before,.nav-contact:is(:hover,:focus-visible)::after{opacity:.08}
/* Immediate orbital reveal, with a restrained warm sheen on primary actions. */
.cta::before,.cta::after,.nav-contact::before,.nav-contact::after{transition:opacity .16s ease,transform .36s cubic-bezier(.16,1,.3,1)}
.cta::before,.cta::after{background:radial-gradient(circle at center,transparent 35px,#ffffff24 35.5px,#ffffff24 36px,transparent 36.5px,transparent 50px,#ffffff1c 50.5px,#ffffff1c 51px,transparent 51.5px,transparent 65px,#ffffff12 65.5px,#ffffff12 66px,transparent 66.5px),radial-gradient(ellipse at center,#d4b77529 0%,#b6985a12 35%,transparent 66%)}
.cta{transition:transform .35s var(--button-ease),box-shadow .22s ease,border-color .22s ease,background .22s ease}
.cta:is(:hover,:focus-visible){background:linear-gradient(115deg,#333027 0%,#292825 48%,#383329 100%);border-color:#9a896366;box-shadow:inset 0 1px 0 #f0d8a64d,inset 0 0 22px #d5b46d0d,0 4px 14px #1e1b1514}
.ask-book-call.cta:is(:hover,:focus-visible){background:linear-gradient(115deg,#333027 0%,#292825 48%,#383329 100%)}
.cta:disabled{box-shadow:none}
@media(prefers-reduced-motion:reduce){.cta::before,.cta::after,.nav-contact::before,.nav-contact::after{transition:opacity .15s}}
/* Interpolate the surface colour instead of swapping a gradient on hover exit. */
.cta,.ask-book-call.cta{background-image:none;background-color:#222;transition:background-color .4s ease,border-color .4s ease,box-shadow .4s ease,transform .4s var(--button-ease)}
.cta:is(:hover,:focus-visible),.ask-book-call.cta:is(:hover,:focus-visible){background-image:none;background-color:#2f2c25}
.cta::before,.cta::after,.nav-contact::before,.nav-contact::after{transition:opacity .35s ease,transform .5s cubic-bezier(.22,1,.36,1)}
.cta:is(:hover,:focus-visible)::before,.cta:is(:hover,:focus-visible)::after,.nav-contact:is(:hover,:focus-visible)::before,.nav-contact:is(:hover,:focus-visible)::after{transition:opacity .15s ease,transform .3s cubic-bezier(.16,1,.3,1)}
/* A readable spotlight beside a continuous flow of client voices. */
.reviews-showcase{width:min(1200px,100%);margin:0 auto;padding:0 5.5% 64px;display:grid;grid-template-columns:1.1fr 1fr;gap:0 40px;position:relative;align-items:start}
.review-spotlight{padding:32px 0 15px;min-height:440px;display:flex;flex-direction:column}
.spotlight-stars{width:95px;height:auto;margin-bottom:27px}
.review-spotlight blockquote{font-size:clamp(21px,2.5vw,29px);line-height:1.37;letter-spacing:-.035em;margin:0 0 30px;text-wrap:pretty}
.review-person{display:flex;align-items:center;gap:12px}.review-person-image{position:relative;display:grid;place-items:center;flex:none;width:45px;height:45px;border-radius:5px;overflow:hidden;background:#f2f2f2;font-size:12px;color:#777}.review-person-image img{position:absolute;width:100%;height:100%;object-fit:cover;inset:0}.review-person-names{display:grid;gap:4px}.review-person-names strong{font-size:13px;font-weight:400;color:#333}.review-person-names>span{font-size:11px;color:#999}
.spotlight-source{display:inline-block;align-self:flex-start;font-size:11px;color:#999;text-decoration:none;margin-top:23px}.spotlight-source:hover{color:#333}
.review-stream{height:490px;overflow:hidden;mask-image:linear-gradient(transparent,#000 25px,#000 calc(100% - 25px),transparent)}
.review-stream-track{display:flex;flex-direction:column;gap:12px;animation:review-flow 120s linear infinite;will-change:transform}
.stream-review{padding:23px;border:.5px solid #e2e2e2;border-radius:12px;background:#fff;transition:border-color .4s}.stream-review.is-spotlight{border-color:#aaa}
.stream-stars{display:block;width:76px;height:auto;margin-bottom:15px}.stream-review blockquote{font-size:15px;line-height:1.55;letter-spacing:-.015em;margin:0 0 20px;color:#656565;text-wrap:pretty}.stream-review .review-person-image{width:33px;height:33px}.stream-review .review-person-names strong{font-size:12px}
.reviews-pause{grid-column:2;justify-self:end;font-size:10px;background:none;border:0;padding:10px 0;color:#999;display:flex;gap:10px;align-items:center}
.is-paused .review-stream-track{animation-play-state:paused}
@keyframes review-flow{to{transform:translateY(calc(-50% - 6px))}}
@media(max-width:760px){.reviews-showcase{gap:0 25px;padding-bottom:40px}.review-spotlight blockquote{font-size:23px}.review-stream{height:460px}.stream-review{padding:18px}.stream-review blockquote{font-size:14px}}
@media(max-width:540px){.reviews-showcase{grid-template-columns:1fr;gap:20px;padding-left:6%;padding-right:6%}.review-spotlight{min-height:0;padding:15px 0}.review-stream{height:340px}.reviews-pause{grid-column:1}.review-spotlight blockquote{font-size:25px}}
@media(prefers-reduced-motion:reduce){.review-stream-track{animation:none}.review-stream{overflow-y:auto}.review-stream-track>[aria-hidden="true"]{display:none}}
.has-long-review .review-spotlight blockquote{font-size:18px;line-height:1.5}
.reviews-showcase{align-items:stretch}
.review-spotlight{min-height:490px;justify-content:center;padding-top:0;padding-bottom:0}
@media(max-width:760px){.review-spotlight{min-height:460px}}
@media(max-width:540px){.review-spotlight{min-height:0;padding:15px 0}}
/* One foreground voice, with two quiet moving columns behind it. */
.reviews-showcase{display:grid;grid-template-columns:1fr;place-items:center;isolation:isolate;min-height:620px;padding-top:45px;padding-bottom:64px;overflow:hidden}
.review-stream{position:absolute;inset:0 5.5% 64px;height:auto;display:grid;grid-template-columns:1fr 1fr;gap:22px;z-index:-1;opacity:.23;pointer-events:none;mask-image:linear-gradient(transparent,#000 45px,#000 calc(100% - 45px),transparent)}
.review-stream-track{align-self:start;animation-duration:145s}
.review-stream-track-secondary{animation-direction:reverse;animation-duration:165s}
.review-spotlight{width:min(680px,78%);min-height:0;padding:38px 40px;align-items:center;justify-content:center;text-align:center;border:.5px solid #e5e5e5;border-radius:12px;background:#fff;box-shadow:0 12px 60px #00000008;margin:30px 0;z-index:1}
.spotlight-stars{margin-bottom:24px}
.review-spotlight blockquote{font-size:clamp(23px,2.6vw,31px);line-height:1.4;margin-bottom:25px;max-width:590px;text-wrap:pretty}
.review-spotlight .review-person{justify-content:center;text-align:left}
.has-long-review .review-spotlight blockquote{font-size:17px;line-height:1.55}
@media(max-width:760px){.reviews-showcase{min-height:580px;padding-top:30px;padding-bottom:40px}.review-stream{inset:0 5.5% 40px;gap:13px}.review-spotlight{width:85%;padding:29px 26px}.review-spotlight blockquote{font-size:24px}.has-long-review .review-spotlight blockquote{font-size:16px}}
@media(max-width:540px){.reviews-showcase{min-height:550px}.review-spotlight{width:94%;padding:28px 22px}.review-spotlight blockquote{font-size:23px}.review-stream{opacity:.16;gap:10px}.stream-review{padding:14px}.stream-review blockquote{font-size:12px}.stream-review .review-person-names strong{font-size:10px}}
@media(prefers-reduced-motion:reduce){.review-stream{overflow:hidden}.review-stream-track{animation:none}.review-stream-track-secondary{display:block}}
/* Architectural light, echoing the hero behind the featured client voice. */
.review-spotlight{position:relative;isolation:isolate;background:#fff url('assets/review-architecture.svg') center/cover no-repeat;border-color:#e8e8e8;overflow:hidden}
.review-spotlight::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at center,#ffffffeb 0%,#ffffffad 46%,#ffffff00 90%)}
.review-spotlight{background-image:url('assets/review-architecture.svg');transition:padding .5s ease}
#spotlight-quote{overflow:hidden}
.review-spotlight h3{font-size:clamp(23px,2.6vw,30px);line-height:1.14;letter-spacing:-.04em;font-weight:400;margin:0 0 16px;text-wrap:balance}
.review-spotlight blockquote,.has-long-review .review-spotlight blockquote{font-size:16px;line-height:1.6;letter-spacing:-.01em;color:#777;max-width:550px;margin-bottom:25px}
.has-long-review .review-spotlight blockquote{font-size:15px;line-height:1.55}
@media(max-width:540px){.review-spotlight h3{font-size:25px}.review-spotlight blockquote,.has-long-review .review-spotlight blockquote{font-size:14px}}
.is-horizontal .process-visual{aspect-ratio:700/190}
.brief-check{animation:brief-confirm 5s ease-in-out infinite}
.call-signal{animation:signal-pulse 2.5s ease-in-out infinite;transform-origin:508px 59px}
.identity-symbol{transform-origin:331px 95px;animation:identity-refine 7s cubic-bezier(.45,0,.2,1) infinite}
.design-cursor{animation:cursor-refine 7s cubic-bezier(.45,0,.2,1) infinite}
.delivery-files{animation:files-settle 6s cubic-bezier(.45,0,.2,1) infinite}
.delivery-guide{animation:guide-settle 6s cubic-bezier(.45,0,.2,1) infinite}
@keyframes brief-confirm{0%,15%,100%{opacity:.35}35%,85%{opacity:1}}
@keyframes identity-refine{0%,100%{transform:scale(.88) rotate(-5deg)}40%,70%{transform:scale(1) rotate(0)}}
@keyframes cursor-refine{0%,100%{transform:translate(7px,5px)}40%,70%{transform:translate(-9px,-8px)}}
@keyframes files-settle{0%,100%{transform:translateY(-5px)}40%,75%{transform:translateY(0)}}
@keyframes guide-settle{0%,100%{transform:translateX(5px)}40%,75%{transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){.process-visual *{animation:none!important}}
/* Offset compositions, sharp routes and deliberate assembly sequences. */
.process-visual{overflow:visible}
.brief-document{transform-origin:248px 95px;animation:brief-float 7s cubic-bezier(.45,0,.2,1) infinite}
.call-window{transform-origin:452px 95px;animation:call-arrive 7s cubic-bezier(.45,0,.2,1) infinite}
.brief-check{animation:brief-confirm 7s ease-in-out infinite}
.scene-create>.identity-symbol{animation:identity-refine 7s cubic-bezier(.45,0,.2,1) infinite}
.identity-palette{animation:palette-shift 7s cubic-bezier(.45,0,.2,1) infinite}
.delivery-files{transform-origin:275px 128px;animation:files-fan 7s cubic-bezier(.45,0,.2,1) infinite}
.delivery-guide{transform-origin:469px 95px;animation:guide-arrive 7s cubic-bezier(.45,0,.2,1) infinite}
.process-route{stroke-dasharray:260 12 35 12;animation:route-pass 12s linear infinite}
.route-node{animation:route-beat 4s ease-in-out infinite}
.route-square{transform-origin:113px 65px;animation:route-turn 8s cubic-bezier(.65,0,.35,1) infinite}
.route-diamond{transform-origin:96px 125px;animation:route-turn 8s cubic-bezier(.65,0,.35,1) infinite}
@keyframes brief-float{0%,100%{transform:translate(-7px,-7px) rotate(-4deg)}45%,65%{transform:translate(0,-3px) rotate(-1deg)}}
@keyframes call-arrive{0%,100%{transform:translate(9px,12px) rotate(3deg)}45%,65%{transform:translate(0,5px) rotate(0)}}
@keyframes palette-shift{0%,100%{transform:translate(3px,6px);opacity:.6}40%,70%{transform:translate(0,0);opacity:1}}
@keyframes files-fan{0%,100%{transform:translate(-5px,7px) rotate(-4deg)}40%,70%{transform:translate(0,0) rotate(0)}}
@keyframes guide-arrive{0%,100%{transform:translate(10px,-5px) rotate(5deg)}40%,70%{transform:translate(4px,-10px) rotate(1deg)}}
@keyframes route-pass{to{stroke-dashoffset:-319}}
@keyframes route-beat{0%,100%{opacity:.35}45%,65%{opacity:1}}
@keyframes route-turn{0%,30%{transform:rotate(0)}60%,100%{transform:rotate(90deg)}}
@media(prefers-reduced-motion:reduce){.process-visual *{animation:none!important}}
/* Continuous routes remain solid while larger assets form overlapping compositions. */
.process-route{stroke-dasharray:none;animation:none;stroke:#c9c9c9;stroke-width:1}
.is-horizontal .process-visual{aspect-ratio:700/215}
.brief-document{transform-origin:248px 95px;animation:large-brief 8s cubic-bezier(.45,0,.2,1) infinite}
.call-window{transform-origin:452px 95px;animation:large-call 8s cubic-bezier(.45,0,.2,1) infinite}
.delivery-guide{transform-origin:469px 95px;animation:large-guide 8s cubic-bezier(.45,0,.2,1) infinite}
@keyframes large-brief{0%,100%{transform:translate(-7px,0) rotate(-4deg) scale(1.08)}40%,65%{transform:translate(0,-3px) rotate(-1deg) scale(1.08)}}
@keyframes large-call{0%,100%{transform:translate(5px,8px) rotate(3deg) scale(1.12)}40%,65%{transform:translate(0,3px) rotate(0) scale(1.12)}}
@keyframes large-guide{0%,100%{transform:translate(5px,-4px) rotate(5deg) scale(1.1)}40%,65%{transform:translate(0,-7px) rotate(1deg) scale(1.1)}}
@media(prefers-reduced-motion:reduce){.process-visual *{animation:none!important}}
.process-route{stroke-dasharray:4 5;stroke-width:1;stroke:#bdbdbd;animation:none}
.process-route-secondary{stroke-dasharray:4 5;stroke-width:.5;stroke:#d6d6d6;fill:none}
/* Calm hierarchy: one step, one illustration, one clear reading group. */
.is-horizontal .process-card{grid-template-columns:30px minmax(0,1fr);grid-template-rows:auto auto auto;column-gap:20px;row-gap:14px;transition:opacity .3s ease}
.is-horizontal .process-card:not(.is-current){opacity:0;pointer-events:none}
.process-number{grid-column:1;grid-row:1;margin-top:6px}
.process-card h3{grid-column:2;grid-row:1;font-size:clamp(32px,4vw,46px);line-height:1.08;margin:0}
.process-card h3 br{display:none}
.process-card p{grid-column:2;grid-row:2;max-width:530px;font-size:14px;line-height:1.6;margin:0}
.is-horizontal .process-visual{grid-column:1/-1;grid-row:3;max-width:850px;justify-self:center;margin-top:10px}
.process-sticky h2{font-size:clamp(28px,3.2vw,36px)}
.is-horizontal .process-sticky{margin-bottom:32px}
.process-visual *{animation-play-state:paused!important}
.is-in-view .process-card.is-current .process-visual .brief-check,.is-in-view .process-card.is-current .process-visual .identity-symbol,.is-in-view .process-card.is-current .process-visual .delivery-files{animation-play-state:running!important}
.process-visual .brief-document,.process-visual .call-window,.process-visual .delivery-guide{animation:none;transform:none}
.booking-intro h2{font-size:clamp(31px,3.5vw,40px);line-height:1.07}
.booking-intro{grid-template-columns:1fr;gap:17px;margin-bottom:30px}
.booking-facts{grid-column:1;grid-row:2;margin:0;align-self:start;gap:18px;font-size:12px}
.ask-card h2{font-size:clamp(25px,2.8vw,31px);margin-bottom:20px}
@media(max-width:760px){.process-card h3{font-size:34px}.process-card p{font-size:14px}.is-horizontal .process-visual{grid-row:3}.booking-intro h2{font-size:34px}.ask-card h2{font-size:27px}}
@media(prefers-reduced-motion:reduce){.process-card{opacity:1!important}.process-visual *{animation:none!important}}
/* Open composition: reserve the frame for the scheduling interaction itself. */
.booking-section{padding-top:18px;padding-bottom:88px}
.booking-section>.booking-intro{display:flex;flex-direction:row;align-items:flex-end;justify-content:space-between;gap:25px;padding:0;margin:0 0 30px;border:0;overflow:visible}
.booking-section>.booking-intro h2{margin:0;font-size:clamp(32px,3.6vw,42px)}
.booking-section>.booking-intro .booking-facts{margin-bottom:4px;flex:none}
.booking-card{border:.5px solid #e5e5e5;border-radius:12px;padding:28px;min-height:0}
.ask-section{padding-top:0;padding-bottom:88px}
.ask-card{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.ask-card h2{font-size:25px;margin-bottom:20px}
.ask-form{box-shadow:none;border-color:#dedede}
.ask-response{margin-top:25px}
.process-section.is-horizontal{margin-bottom:78px}
.is-horizontal .process-pin{padding-top:0;padding-bottom:0;background:transparent}
.is-horizontal .process-sticky{margin-bottom:30px}
.is-horizontal .process-card{position:relative;grid-template-columns:1fr;grid-template-rows:auto auto auto;row-gap:15px}
.process-number{position:absolute;right:10px;top:8px;margin:0;padding:0}
.process-card h3{grid-column:1;grid-row:1;padding-right:50px;font-size:clamp(31px,3.7vw,43px)}
.process-card p{grid-column:1;grid-row:2;max-width:530px}
.is-horizontal .process-visual{grid-column:1;grid-row:3;justify-self:stretch;max-width:none;margin-top:6px}
@media(max-width:760px){.booking-section{padding-top:8px;padding-bottom:55px}.booking-section>.booking-intro{align-items:flex-start;flex-direction:column;gap:16px;margin-bottom:24px}.booking-section>.booking-intro h2{font-size:34px}.booking-card{padding:23px}.ask-section{padding-bottom:55px}.ask-card{padding:0}.ask-card h2{font-size:24px}.process-section.is-horizontal{margin-bottom:50px}.is-horizontal .process-card{grid-template-columns:1fr;grid-template-rows:auto auto auto}.process-card h3{font-size:32px}.is-horizontal .process-visual{grid-column:1;grid-row:3}}
/* A project and its client's experience share one composition. */
.case-proof-section{width:min(1200px,100%);margin:0 auto;padding:0 5.5% 78px}
.case-proof{display:grid;grid-template-columns:1fr 1fr;border:.5px solid #e2e2e2;border-radius:12px;overflow:hidden;background:#fff}
.proof-art{position:relative;display:grid;grid-template-columns:1.1fr .9fr;grid-template-rows:1fr 1fr;gap:8px;padding:12px;background:#fafafa;min-height:510px;animation:proof-grid 10s cubic-bezier(.45,0,.2,1) infinite}
.proof-tile{position:relative;overflow:hidden;border-radius:6px;min-width:0;min-height:0;display:grid;place-items:center}
.proof-symbol{background:#101500}.proof-symbol>img{width:54%;height:auto;position:relative;z-index:1;mix-blend-mode:screen}
.proof-orbit{position:absolute;width:155px;height:155px;border:1px solid #ffffff12;border-radius:50%;box-shadow:0 0 0 24px #ffffff06;animation:proof-orbit 9s ease-in-out infinite}
.proof-type{background:#d8ff47;color:#172000;padding:21px;place-items:start;align-content:space-between}.proof-type>span{font-size:clamp(23px,3vw,34px);line-height:.98;letter-spacing:-.065em}.proof-type-dot{color:#6b8400}.proof-type svg{width:100%;height:25px;margin-top:25px;opacity:.5}
.proof-stationery{background:#f0f1eb;padding:20px}.proof-business-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;padding:15px;background:white;width:100%;max-width:190px;aspect-ratio:1.5;box-shadow:0 7px 14px #0000000a;transform:rotate(-8deg);animation:proof-card 10s ease-in-out infinite}.proof-business-card img{width:20px;height:20px;border-radius:2px}.proof-business-card>span{font-size:10px;letter-spacing:-.02em;margin-top:8px}.proof-business-card i{height:1px;width:25px;background:#ddd;margin-top:auto}.proof-business-card small{font-size:6px;color:#999;margin-top:4px}
.proof-palette{display:flex;background:#e8eddd}.proof-palette>span{height:100%;flex:1;background:#172000}.proof-palette>span:nth-child(2){background:#cfff35}.proof-palette>span:nth-child(3){background:#f9fbf3}.proof-palette svg{position:absolute;width:110px;height:110px;color:#ffffff70;left:-18px;bottom:-15px;animation:discover-orbit 20s linear infinite}
.proof-preview-label{position:absolute;left:23px;bottom:20px;font-size:9px;background:#ffffffd9;padding:4px 6px;border-radius:3px;color:#888;pointer-events:none}
.proof-voice{display:flex;flex-direction:column;justify-content:center;padding:32px}
.proof-project{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-size:11px;color:#999;margin-bottom:20px}.proof-project-client{font-size:14px;color:#333}.proof-project>span:last-child{display:flex;align-items:center;gap:7px}.proof-project img{width:20px;height:20px;border-radius:3px}
.proof-stars{width:85px;height:auto;margin-bottom:20px}.proof-voice h2{font-size:clamp(25px,3vw,35px);font-weight:400;letter-spacing:-.045em;line-height:1.08;margin:0 0 20px}.proof-voice blockquote{font-size:14px;line-height:1.65;letter-spacing:-.01em;color:#777;margin:0;text-wrap:pretty}
@keyframes proof-grid{0%,100%{grid-template-columns:1.1fr .9fr;grid-template-rows:1fr 1fr}40%,60%{grid-template-columns:.85fr 1.15fr;grid-template-rows:1.15fr .85fr}}
@keyframes proof-card{0%,100%{transform:rotate(-8deg)}40%,60%{transform:rotate(3deg)}}
@keyframes proof-orbit{50%{transform:scale(1.16);opacity:.4}}
@media(max-width:760px){.case-proof-section{padding-bottom:50px}.proof-voice{padding:24px}.proof-voice blockquote{font-size:13px}.proof-art{min-height:500px;padding:9px;gap:6px}.proof-type{padding:15px}.proof-business-card{padding:10px}.proof-stationery{padding:14px}}
@media(max-width:600px){.case-proof-section{padding-left:6%;padding-right:6%}.case-proof{grid-template-columns:1fr}.proof-art{min-height:330px;aspect-ratio:1.2}.proof-type>span{font-size:32px}.proof-voice{padding:27px 24px}.proof-voice blockquote{font-size:14px}.proof-voice h2{font-size:30px}}
@media(prefers-reduced-motion:reduce){.proof-art,.proof-art *{animation:none!important}}
.proof-cta{align-self:flex-start;margin-top:25px;font-size:12px;padding:12px 16px}
.delivery-cta-stack{display:inline-flex;flex-direction:column;align-items:center;align-self:flex-start;gap:11px;max-width:100%}
.action>.delivery-cta-stack{align-self:center}
.delivery-note{display:flex;align-items:center;justify-content:center;gap:7px;font-size:10px;line-height:1.35;color:#888;white-space:nowrap}
.delivery-note time{color:#666}
.delivery-dot{position:relative;display:block;width:5px;height:5px;background:#4d9d65;border-radius:50%;flex:none}
.delivery-dot::after{content:'';position:absolute;inset:-3px;border:1px solid #4d9d6559;border-radius:50%;animation:delivery-pulse 2.6s ease-out infinite}
@keyframes delivery-pulse{0%{transform:scale(.5);opacity:.8}80%,100%{transform:scale(1.35);opacity:0}}
.delivery-cta-stack:has(#ask-book-call[hidden]){display:none}
@media(prefers-reduced-motion:reduce){.delivery-dot::after{animation:none}}
.delivery-note{font-size:12px;line-height:1.5;color:#777;gap:8px}
.delivery-note time{color:#555}
.delivery-dot{width:6px;height:6px}
@media(max-width:600px){.delivery-note{font-size:12px}}
.delivery-dot{width:8px;height:8px;background:#16c75b}
.delivery-dot::after{inset:-4px;border-color:#16c75b66}
.project-header{justify-content:flex-start;margin:17px 0 0}
.project-header h2{text-align:left;font-size:16px}
.proof-art{animation:none;grid-template-rows:1fr 1fr;min-height:540px}
.proof-tile[hidden]{display:none!important}
.proof-tile{transform-origin:top left}
.proof-poster{background:#111900;color:#d6ff40;padding:22px;place-items:start;align-content:space-between}.proof-poster>span{font-size:clamp(25px,3vw,38px);line-height:.95;letter-spacing:-.06em}.proof-poster img{width:37px;height:37px;margin-top:25px}
.proof-digital{background:#e9eddc;padding:18px}.proof-digital>div{padding:14px;background:#fff;width:100%;height:85%;box-shadow:0 6px 12px #00000008;display:flex;flex-direction:column;align-items:flex-start;gap:12px}.proof-digital span{font-size:7px}.proof-digital strong{font-size:clamp(14px,1.6vw,20px);font-weight:400;line-height:1;letter-spacing:-.045em}.proof-digital img{width:40%;height:auto;margin:auto;align-self:center}.proof-digital i{font-size:6px;font-style:normal;background:#172000;color:#fff;padding:5px}
.proof-court{background:#d5ff42;color:#172000}.proof-court svg{position:absolute;width:90%;height:95%;opacity:.25}.proof-court img{width:45%;position:relative;mix-blend-mode:multiply}
.proof-pattern{background:#172000;color:#d5ff42}.proof-pattern>span{font-size:45px;line-height:1.5;letter-spacing:12px;transform:rotate(-12deg);opacity:.8;white-space:nowrap}
.proof-voice{position:relative;isolation:isolate;overflow:hidden;background:#fff}
.proof-louis-photo{position:absolute;right:0;top:0;width:72%;height:100%;object-fit:cover;object-position:59% center;z-index:-2;opacity:.3;mask-image:linear-gradient(to right,transparent,#000 65%)}
.proof-voice::after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,#fff 5%,#fffffff0 35%,#ffffffa6 65%,#ffffff12)}
.review-spotlight{background:#fafafa url('assets/booking-landscape-hd.webp') center/cover no-repeat}
.review-spotlight::before{background:radial-gradient(ellipse at center,#ffffffdc 0%,#ffffff9c 45%,#ffffff12 90%)}
.booking-section{position:relative;isolation:isolate;padding-top:38px;padding-bottom:70px}
.booking-section::before{content:'';position:absolute;inset:0 calc((min(1200px,100vw) - 100vw)/2);z-index:-1;background:url('assets/booking-landscape-hd.webp') center/cover no-repeat;mask-image:linear-gradient(transparent,#000 10%,#000 88%,transparent);pointer-events:none}
.booking-card{background:#fffffff0;backdrop-filter:blur(5px)}
@media(max-width:600px){.proof-art{min-height:340px;height:340px;aspect-ratio:auto}.proof-louis-photo{width:75%;opacity:.24}.booking-section{padding-top:30px;padding-bottom:55px}}
.booking-card{backdrop-filter:none}

/* Editorial details shared across the responsive layout. */
.project-header h2{font-size:32px;line-height:1.15;letter-spacing:-.045em}
.process-number{font-size:clamp(30px,4vw,46px);line-height:1;font-weight:400;color:transparent;-webkit-text-stroke:.65px #777;top:3px}
.process-card h3{padding-right:90px}
.proof-louis-photo{width:72%;opacity:.65;mask-image:linear-gradient(to right,transparent,#000 35%)}
.proof-voice::after{background:linear-gradient(0deg,#fffffff2 0%,#ffffffb0 60%,transparent 85%),linear-gradient(90deg,#fff 0%,#fffffff7 20%,#ffffff44 50%,#ffffff0a 100%)}
.proof-art{overflow:hidden}
.proof-ghost{position:absolute;z-index:3;pointer-events:none;margin:0;min-height:0;box-sizing:border-box}
.proof-ghost *{animation:none!important}
.review-spotlight{background:#fafafa}
.review-spotlight::before{display:none}
.review-pixels{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.ask-card{max-width:850px;margin-inline:auto;text-align:center}
.ask-suggestions{justify-content:center;flex-wrap:wrap;max-width:720px;margin:17px auto 0;gap:8px}
.ask-response{text-align:left}
@media(max-width:600px){.project-header h2{font-size:28px}.process-number{font-size:36px}.proof-louis-photo{opacity:.55}.ask-suggestions{gap:7px}}

/* Give the hero CTA more breathing room without changing other actions. */
.hero-copy .intro{margin-bottom:40px}
@media(max-width:600px){.hero-copy .intro{margin-bottom:34px}}

/* Oversized step numerals stay decorative and leave the copy unobstructed. */
.process-number{font-size:clamp(150px,20vw,230px);font-weight:300;line-height:.85;-webkit-text-stroke:.4px #c5c5c5;right:8px;top:0;pointer-events:none}
.process-card h3,.process-card p{padding-right:clamp(165px,22vw,245px);max-width:none}
.process-card p{max-width:800px}
@media(max-width:600px){.process-number{font-size:140px;right:0;top:3px;-webkit-text-stroke:.35px #ccc}.process-card h3{padding-right:115px;font-size:28px}.process-card p{padding-right:0;max-width:calc(100% - 115px)}}

/* Continuous page rails start at the header baseline, aligned to section content. */
body{position:relative;--page-rail-inset:calc((100% - min(1200px,100%))/2 + min(1200px,100%)*.055)}
body::after{content:'';position:absolute;top:var(--header-baseline,86px);bottom:0;left:var(--page-rail-inset);right:var(--page-rail-inset);border-left:.5px solid #dedede;border-right:.5px solid #dedede;pointer-events:none;z-index:10}
.header{border-bottom:.5px solid #dedede}
.case-stage>.project{background:transparent}
@media(max-width:600px){body{--page-rail-inset:6%}}

/* Square section framing; the footer sits outside the page rails. */
:root{--panel-radius:0px}
.case-proof,.review-spotlight,.stream-review,.booking-card,.ask-card,.fixed-review,.featured-review,.project-tile,.proof-tile,.bento-ghost{border-radius:0}
.process-viewport{width:100%;min-width:0;overflow:hidden;flex:none}
body::after{bottom:var(--footer-rail-stop,0px)}
.site-footer{margin:0;width:100%;max-width:none;border-radius:0}

/* Inner spacing keeps editorial copy clear of the structural rails. */
.process-sticky{padding-inline:clamp(18px,2.4vw,30px)}
.process-card{padding-inline:clamp(18px,2.4vw,30px)}
.booking-section::before{position:absolute;inset:0 var(--booking-bg-inset,5.5%)}
.booking-card{width:calc(100% - 56px);max-width:980px;margin-inline:auto}
.project-header{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:0 24px}
.project-description{max-width:490px;margin:0;font-size:15px;line-height:1.55;color:#777;text-wrap:pretty}
.page{height:auto;min-height:0;overflow:clip}
.hero{flex:none;min-height:0;padding-top:18px;padding-bottom:30px;row-gap:25px}
@media(max-width:760px){.booking-section::before{inset-inline:var(--booking-bg-inset,6%)}.booking-card{width:calc(100% - 32px)}.project-header{padding-inline:18px}.hero{padding-top:20px;padding-bottom:30px;row-gap:23px}}
@media(max-height:760px) and (min-width:761px){.hero h1{font-size:clamp(46px,min(6.7vw,10svh),78px)}.hero{padding-top:16px;padding-bottom:22px;row-gap:20px}.hero .intro{font-size:16px}.hero .rating{margin-bottom:16px}}
.reviews-showcase.review-cursor-enabled,.review-cursor-enabled *{cursor:none}

.header-navigation{display:flex;align-items:center;justify-content:center;gap:28px;flex:1;font-size:13px;color:#666}
.header-navigation a{color:inherit;text-decoration:none;transition:color .2s}
.header-navigation a:hover,.header-navigation a:focus-visible{color:#111}
.booking-section>.booking-intro{padding-inline:28px}
.project-header{margin:0;min-height:200px;padding-block:32px;justify-content:center}
.portfolio{padding-bottom:0}
@media(max-width:760px){.header-navigation{gap:19px;font-size:12px}.booking-section>.booking-intro{padding-inline:16px}.project-header{min-height:185px;padding-block:28px}}
@media(max-width:600px){.header{flex-wrap:wrap;row-gap:20px}.header-navigation{order:3;flex-basis:100%;justify-content:space-between;gap:14px}.project-header{min-height:190px}}
/* Quiet diagonal hatching stays outside the content rails and above the footer. */
body::before{content:'';position:absolute;top:var(--header-baseline,72px);bottom:var(--footer-rail-stop,0px);left:0;right:0;z-index:9;pointer-events:none;background:repeating-linear-gradient(135deg,transparent 0 6px,#00000010 6px 6.5px,transparent 6.5px 12px);clip-path:polygon(0 0,var(--page-rail-inset) 0,var(--page-rail-inset) 100%,calc(100% - var(--page-rail-inset)) 100%,calc(100% - var(--page-rail-inset)) 0,100% 0,100% 100%,0 100%)}
.header{padding-top:15px;padding-bottom:15px}
@media(max-width:600px){.header{padding-top:14px;padding-bottom:14px;row-gap:14px}}

/* The portfolio intentionally spans beyond the editorial rails. */
.portfolio{width:100%;max-width:none;padding-left:2.5%;padding-right:2.5%}
@media(max-width:600px){.portfolio{padding-left:3%;padding-right:3%}}
.portfolio{position:relative;z-index:11}

/* The structural margins widen with the portfolio instead of crossing it. */
.portfolio{padding-inline:3.5%;z-index:auto}
@media(max-width:600px){.portfolio{padding-inline:4%}}
body::after{display:none}
.page-rails{position:absolute;left:0;width:100%;z-index:10;pointer-events:none;overflow:visible;fill:none;stroke:#dedede;stroke-width:.5px}
body::before{clip-path:polygon(0 0,var(--page-rail-inset) 0,var(--page-rail-inset) var(--rail-portfolio-top),var(--portfolio-inset) var(--rail-portfolio-top),var(--portfolio-inset) var(--rail-portfolio-bottom),var(--page-rail-inset) var(--rail-portfolio-bottom),var(--page-rail-inset) 100%,calc(100% - var(--page-rail-inset)) 100%,calc(100% - var(--page-rail-inset)) var(--rail-portfolio-bottom),calc(100% - var(--portfolio-inset)) var(--rail-portfolio-bottom),calc(100% - var(--portfolio-inset)) var(--rail-portfolio-top),calc(100% - var(--page-rail-inset)) var(--rail-portfolio-top),calc(100% - var(--page-rail-inset)) 0,100% 0,100% 100%,0 100%)}
/* A white inner gutter separates the portfolio from the hatched margins. */
.case-stage{margin-inline:8px}
.project-header{padding-left:16px;padding-right:16px}
@media(max-width:600px){.case-stage{margin-inline:6px}.project-header{padding-left:12px;padding-right:12px}}

/* Horizontal edge previews remain entirely inside the portfolio frame. */
.case-stage{overflow:clip}
.case-peek{bottom:auto;z-index:3;opacity:0;transform:translateX(calc(var(--card-side)*100%));transform-origin:center;transition:opacity .35s ease,transform .75s cubic-bezier(.22,1,.36,1)}
.case-stage[data-peek-side="left"] .case-peek-left,.case-stage[data-peek-side="right"] .case-peek-right{opacity:.65;transform:translateX(calc(var(--card-side)*(100% - 44px)))}
.case-stage.is-sliding .case-peek{opacity:0}
.footer-legal{display:flex;gap:19px;flex-wrap:wrap;font-size:11px}
.footer-bottom{gap:20px;flex-wrap:wrap}
@media(max-width:600px){.footer-legal{order:3;width:100%;gap:15px;font-size:10px}}
@media(prefers-reduced-motion:reduce){.case-peek{transition:none}}

.case-stage[data-peek-side="left"] .case-peek-left,.case-stage[data-peek-side="right"] .case-peek-right{opacity:1}
.process-sticky h2{text-align:center}
.site-footer::before{content:'';position:absolute;z-index:-1;pointer-events:none;left:10%;right:10%;bottom:-220px;height:440px;background:radial-gradient(ellipse at center,#d4b77566 0%,#b88d4530 33%,#9c783d0c 57%,transparent 74%);filter:blur(25px)}
.review-orbits{position:absolute;top:50%;width:270px;height:270px;transform:translateY(-50%);z-index:-1;pointer-events:none}
.review-orbits-left{left:-200px}.review-orbits-right{right:-200px}
.review-orbits i{position:absolute;inset:0;border:.6px solid #22222216;border-radius:50%;transform:scale(.74);animation:review-orbit-breathe 11s ease-in-out infinite}
.review-orbits i:nth-child(2){inset:-22px;animation-delay:-3.5s}.review-orbits i:nth-child(3){inset:-44px;animation-delay:-7s}
@keyframes review-orbit-breathe{0%,100%{transform:scale(.92);opacity:.45}50%{transform:scale(1);opacity:1}}
@media(max-width:600px){.review-orbits{width:220px;height:220px}.review-orbits-left{left:-180px}.review-orbits-right{right:-180px}}
@media(prefers-reduced-motion:reduce){.review-orbits i{animation:none;transform:none;opacity:.65}}
.site-footer{overflow:clip}

/* More visible orbital framing and a lighter header silhouette. */
.review-orbits{width:420px;height:420px}
.review-orbits-left{left:-310px}.review-orbits-right{right:-310px}
.review-orbits i{border-color:#2222222e;border-width:.8px}
.review-orbits i:nth-child(2){inset:-28px}.review-orbits i:nth-child(3){inset:-56px}
.header{padding-top:10px;padding-bottom:10px}
.header>.brand img{width:130px}
.header>.nav-contact{padding:8px 12px;font-size:12px}
.hero{padding-top:40px}
.process-viewport{overflow:clip;contain:paint;isolation:isolate}
@media(max-height:760px) and (min-width:761px){.hero{padding-top:32px}}
@media(max-width:600px){.header>.brand img{width:116px}.header{row-gap:12px}.hero{padding-top:32px}.review-orbits{width:340px;height:340px}.review-orbits-left{left:-285px}.review-orbits-right{right:-285px}}

/* Compact, static process: two steps above a wide delivery step. */
.process-section{display:block;height:auto!important;min-height:0;padding:0;margin:0 auto 65px;width:min(1200px,100%)}
.process-pin{position:relative;top:auto;display:block;height:auto;min-height:0;max-height:none;padding:0 5.5%;overflow:clip}
.process-sticky{position:static;margin:0 0 28px;padding-inline:24px}
.process-sticky h2{font-size:clamp(26px,3vw,34px);text-align:center}
.process-viewport{overflow:visible;contain:none}
.process-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;width:100%;transform:none!important;will-change:auto}
.process-card{position:relative;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto 110px;gap:10px;min-width:0;min-height:0;height:auto;flex:none;padding:22px 25px;border:.5px solid #e1e1e1;background:#fff;opacity:1!important;transform:none!important}
.process-card h3{grid-column:1;grid-row:1;font-size:clamp(23px,2.8vw,30px);line-height:1.1;padding:0 70px 0 0;margin:0}
.process-card h3 br{display:none}
.process-card p{grid-column:1;grid-row:2;font-size:13px;line-height:1.5;padding:0 60px 0 0;max-width:none;margin:0}
.process-number{font-size:90px;top:18px;right:18px;-webkit-text-stroke:.4px #d0d0d0;z-index:0}
.process-visual{grid-column:1;grid-row:3;width:100%;height:110px;max-width:none;margin:0;align-self:center;justify-self:stretch}
.process-icon{display:none}
.process-card:last-child{grid-column:1/-1;grid-template-columns:1fr 1.2fr;grid-template-rows:auto auto;align-content:center;column-gap:35px;min-height:185px}
.process-card:last-child h3{grid-column:1;grid-row:1;padding-right:0}
.process-card:last-child p{grid-column:1;grid-row:2;padding-right:0}
.process-card:last-child .process-visual{grid-column:2;grid-row:1/3;height:135px}
.process-card:last-child .process-number{font-size:90px;right:18px;opacity:.6}
.brand-statement{position:relative;isolation:isolate;overflow:clip;margin:0 var(--page-rail-inset) 65px;min-height:190px;display:grid;place-items:center;padding:35px 25px;background:#111;color:#fff;text-align:center}
.brand-statement::before{content:'';position:absolute;z-index:-1;left:10%;right:10%;bottom:-200px;height:400px;pointer-events:none;filter:blur(25px);background:radial-gradient(ellipse at center,#d4b77566 0%,#b88d4530 33%,#9c783d0c 57%,transparent 74%)}
.brand-statement p{font-size:clamp(27px,3.8vw,44px);line-height:1.08;letter-spacing:-.045em;margin:0;text-wrap:balance}
@media(max-width:760px){.process-pin{padding-inline:6%}.process-card{padding:18px;grid-template-rows:auto auto 95px}.process-card h3{font-size:23px;padding-right:45px}.process-card p{padding-right:20px;font-size:12px}.process-number{font-size:65px;right:12px;top:16px}.process-visual{height:95px}.process-card:last-child{column-gap:16px;min-height:170px}.brand-statement{min-height:170px;margin-bottom:45px}.process-section{margin-bottom:45px}}
@media(max-width:480px){.process-grid{gap:8px}.process-card{padding:14px 10px;grid-template-rows:auto auto 80px}.process-card h3{font-size:18px;padding-right:0}.process-card p{font-size:11px;padding-right:0}.process-number{font-size:45px;top:auto;bottom:8px;right:8px;opacity:.5}.process-visual{height:80px}.process-card:last-child{padding:17px 12px;column-gap:8px;grid-template-columns:1fr 1fr;min-height:155px}.process-card:last-child .process-visual{height:110px}.process-card:last-child .process-number{font-size:55px;top:auto;bottom:8px}}
.process-card:last-child{padding:22px 25px}
@media(max-width:760px){.process-card:last-child{padding:18px}}
@media(max-width:480px){.process-card:last-child{padding:17px 12px}}

/* Full-width orbital ripples rise from the base of the white statement. */
.brand-statement{background:#fff;color:#212121}
.brand-statement::before{display:none}
.brand-statement p{color:#212121;position:relative;z-index:1}
.statement-orbits{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:clip}
.statement-orbits i{position:absolute;width:125%;height:420px;left:-12.5%;bottom:-420px;border:1px solid #21212130;border-radius:50%;transform-origin:50% 0;animation:statement-rise 12s linear infinite;animation-delay:0s;opacity:0}
.statement-orbits i:nth-child(2){animation-delay:-2.4s}.statement-orbits i:nth-child(3){animation-delay:-4.8s}.statement-orbits i:nth-child(4){animation-delay:-7.2s}.statement-orbits i:nth-child(5){animation-delay:-9.6s}
@keyframes statement-rise{0%{transform:translateY(0) scale(.8);opacity:0}12%{opacity:.8}65%{opacity:.45}100%{transform:translateY(-340px) scale(1.5);opacity:0}}
@media(max-width:600px){.statement-orbits i{height:330px;bottom:-330px; width:150%;left:-25%}}
@media(prefers-reduced-motion:reduce){.statement-orbits i{animation:none;opacity:.35;transform:translateY(-150px)}.statement-orbits i:nth-child(2){transform:translateY(-190px)}.statement-orbits i:nth-child(3){transform:translateY(-230px)}.statement-orbits i:nth-child(n+4){display:none}}

.brand-statement{border-top:.5px solid #dedede;border-bottom:.5px solid #dedede}
.booking-section::before{display:none}
.booking-geometry{position:absolute;inset:0 var(--booking-bg-inset,5.5%);z-index:-1;overflow:clip;background:#fff;pointer-events:none}
.booking-triangle{position:absolute;top:50%;width:400px;height:600px;transform:translateY(-50%);stroke:#21212130;stroke-width:.8px}
.booking-triangle-left{left:-210px}.booking-triangle-right{right:-210px;transform:translateY(-50%) rotate(180deg)}
.booking-triangle path{transform-origin:50% 50%;animation:booking-triangle-breathe 12s ease-in-out infinite}
.booking-triangle path:nth-child(2){animation-delay:-4s}.booking-triangle path:nth-child(3){animation-delay:-8s}
@keyframes booking-triangle-breathe{0%,100%{opacity:.4;transform:scale(.96)}50%{opacity:1;transform:scale(1.04)}}
.hero-flare{position:absolute;left:var(--flare-x);top:var(--flare-y);width:66px;height:66px;transform:translate(-50%,-50%);pointer-events:none;z-index:2;background:radial-gradient(circle,#fff9e9 0 .6px,#d4b775cc 1px,#d4b77533 5px,transparent 25px);animation:hero-flare-glow 8s ease-in-out infinite;animation-delay:var(--flare-delay)}
.hero-flare::before,.hero-flare::after{content:'';position:absolute;top:50%;left:0;width:100%;height:1px;background:linear-gradient(90deg,transparent,#d4b77566 30%,#fff5d8 50%,#d4b77566 70%,transparent)}
.hero-flare::after{transform:rotate(90deg) scaleX(.7)}
@keyframes hero-flare-glow{0%,100%{opacity:.4}50%{opacity:.9}}
@media(max-width:600px){.hero-flare{width:46px;height:46px}.booking-triangle{width:300px;height:480px}.booking-triangle-left{left:-200px}.booking-triangle-right{right:-200px}}
@media(prefers-reduced-motion:reduce){.hero-flare,.booking-triangle path{animation:none;opacity:.65}}
/* Continuous separators join the process cells and the booking rails. */
.booking-section::after{content:'';position:absolute;top:0;left:var(--booking-bg-inset,5.5%);right:var(--booking-bg-inset,5.5%);height:.5px;background:#dedede;pointer-events:none}
.process-grid{gap:0;border-top:.5px solid #dedede}
.process-card{border:0;border-bottom:.5px solid #dedede}
.process-card:first-child{border-right:.5px solid #dedede}
/* Gapped process panels with extended construction lines. */
.process-grid{gap:14px;border-top:0}
.process-card,.process-card:first-child{border:.5px solid #dedede}
.page-rails .construction-line{stroke:#dedede;stroke-width:.5px;fill:none}
.page-rails .intersection-mark{fill:#111;stroke:none}
@media(max-width:480px){.process-grid{gap:8px}}

/* Soft gold light replaces the sharp flare streaks in the headline. */
.hero-flare{width:160px;height:100px;filter:blur(14px);mix-blend-mode:screen;background:radial-gradient(ellipse,#d4b77580 0%,#d4b77530 35%,transparent 70%)}
.hero-flare::before,.hero-flare::after{display:none}
.booking-triangle{height:100%;width:clamp(330px,42vw,520px);top:0;transform:none}
.booking-triangle-left{left:-210px}.booking-triangle-right{right:-210px;transform:rotate(180deg)}
.booking-triangle path{animation:booking-triangle-diffuse 13s linear infinite;transform-box:view-box;transform-origin:0% 50%}
.booking-triangle path:nth-child(2){animation-delay:-4.33s}.booking-triangle path:nth-child(3){animation-delay:-8.66s}
@keyframes booking-triangle-diffuse{0%{transform:translateX(-25px) scale(.9);opacity:0}18%{opacity:.9}65%{opacity:.45}100%{transform:translateX(110px) scale(1.28);opacity:0}}
@media(max-width:600px){.hero-flare{width:110px;height:75px;filter:blur(11px)}.booking-triangle{height:100%;width:360px}.booking-triangle-left{left:-245px}.booking-triangle-right{right:-245px}}
@media(prefers-reduced-motion:reduce){.booking-triangle path{animation:none;opacity:.5;transform:none}}

.header{padding-left:var(--page-rail-inset,5.5%);padding-right:var(--page-rail-inset,5.5%)}

.header-actions{display:flex;align-items:center;gap:12px}.language-toggle{display:inline-flex;align-items:center;justify-content:center;gap:5px;border:0;background:transparent;color:#555;font:inherit;font-size:11px;cursor:pointer;padding:8px 3px;white-space:nowrap}.language-toggle:hover{color:#111}.language-toggle:focus-visible{outline:1px solid #222;outline-offset:3px}.header-actions .nav-contact{position:static}html[lang="fr"] .hero h1{font-size:clamp(42px,6.3vw,88px)}@media(max-width:600px){.header-actions{gap:7px}.language-toggle svg{width:14px}.footer-bottom{gap:16px;flex-wrap:wrap}}

.header-actions .nav-contact{padding:8px 12px;font-size:12px}

.statement-window{position:relative;width:100%;height:110px;overflow:hidden;isolation:isolate}
.brand-statement .statement-slide{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:translateY(115%);opacity:0;transition:transform .65s cubic-bezier(.22,.68,.2,1),opacity .45s;will-change:transform,opacity}
.brand-statement .statement-slide br{display:none}
.brand-statement .statement-slide.is-current{transform:translateY(0);opacity:1}
.brand-statement .statement-slide.is-leaving{transform:translateY(-115%);opacity:0}
.brand-statement .statement-slide:nth-child(2){display:block;padding-top:5px}
.brand-statement .statement-slide:nth-child(2) br{display:block}
.statement-selection{position:relative;display:inline-block;isolation:isolate;transition:color .15s .85s}
.statement-selection::before{content:'';position:absolute;inset:1px -3px;z-index:-1;background:#111;transform:scaleX(0);transform-origin:left;transition:transform .48s cubic-bezier(.2,.7,.2,1) .85s}
.is-current .statement-selection{color:white}
.is-current .statement-selection::before{transform:scaleX(1)}
.statement-slide:not(.is-current) .statement-selection,.statement-slide:not(.is-current) .statement-selection::before{transition-delay:0s}
@media(max-width:760px){.statement-window{height:100px}}
@media(prefers-reduced-motion:reduce){.brand-statement .statement-slide{transition:opacity .2s;transform:none}.statement-selection::before{transition:none}}

@media(hover:hover) and (min-width:761px){
 .process-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:270px 210px;transition:grid-template-columns .5s cubic-bezier(.2,.7,.2,1),grid-template-rows .5s cubic-bezier(.2,.7,.2,1)}
 .process-grid[data-expanded="0"]{grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);grid-template-rows:290px 190px}
 .process-grid[data-expanded="1"]{grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);grid-template-rows:290px 190px}
 .process-grid[data-expanded="2"]{grid-template-rows:245px 235px}
 .process-card{grid-template-rows:auto auto minmax(60px,1fr);align-content:stretch;transition:background .4s}
 .process-card:last-child{min-height:0;grid-template-rows:auto auto}
 .process-card .process-visual{height:100%;min-height:0;max-height:135px}
 .process-card:last-child .process-visual{height:100%;max-height:160px}
 .process-card h3{padding-right:35px}.process-card p{padding-right:20px}
 .process-grid[data-expanded="0"] .process-card:first-child,.process-grid[data-expanded="1"] .process-card:nth-child(2),.process-grid[data-expanded="2"] .process-card:last-child{background:#fcfcfb}
}
.booking-edit{grid-column:1/-1;justify-self:start;border:0;background:transparent;font:inherit;font-size:12px;color:#777;margin:0 28px 8px;cursor:pointer}
.booking-confirm{margin-top:18px}.booking-confirm .booking-summary{font-size:12px;line-height:1.5}.booking-confirm .cta{font-size:12px;padding:12px 16px}
.booking-details .booking-back{display:none}
/* Consistent, larger process illustrations and edge-to-edge connectors. */
.process-card{isolation:isolate}
.process-connector{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;overflow:hidden;fill:none}
.process-connector path{stroke:#b8b8b8;stroke-width:.8;stroke-dasharray:3 5;animation:process-flow 18s linear infinite}
.process-card .process-visual{position:relative;z-index:1;overflow:visible;max-height:160px}
.process-art{transform:translate(350px,95px) scale(1.18) translate(-350px,-95px)}
.process-card h3,.process-card>p{position:relative;z-index:2}
.process-visual text{font-family:inherit}
.process-visual .brief-document{animation:process-paper 7s ease-in-out infinite;transform-origin:248px 95px}
.process-visual .call-window{animation:process-call 7s ease-in-out infinite;transform-origin:452px 95px}
.process-visual .brief-check{animation:brief-confirm 7s ease-in-out infinite}
.process-visual .identity-symbol{animation:identity-refine 7s ease-in-out infinite;transform-origin:331px 95px}
.process-visual .design-cursor{animation:cursor-refine 7s ease-in-out infinite}
.process-visual .delivery-files{animation:process-files 7s ease-in-out infinite;transform-origin:275px 128px}
.process-visual .delivery-guide{animation:process-paper 7s ease-in-out -2s infinite;transform-origin:469px 95px}
.process-visual *{animation-play-state:paused!important}
.is-in-view .process-visual *{animation-play-state:running!important}
@keyframes process-flow{to{stroke-dashoffset:-160}}
@keyframes process-paper{0%,100%{transform:translateY(3px) rotate(-1deg)}50%{transform:translateY(-4px) rotate(1deg)}}
@keyframes process-call{0%,100%{transform:translateY(-2px)}50%{transform:translateY(4px)}}
@keyframes process-files{0%,100%{transform:translateY(3px) rotate(-2deg)}50%{transform:translateY(-4px) rotate(2deg)}}
@media(prefers-reduced-motion:reduce){.process-connector path,.process-visual *{animation:none!important}}
/* Sequenced actions: write → validate → call; construct → select → colour; export → file → approve. */
.process-visual .brief-document,.process-visual .call-window,.process-visual .identity-symbol,.process-visual .delivery-files,.process-visual .delivery-guide,.process-visual .design-cursor{animation:none;transform:none}
.brief-writing path{stroke-dasharray:120;animation:brief-write 8s ease-in-out infinite}
.brief-writing path:nth-child(2){animation-delay:.35s}.brief-writing path:nth-child(3){animation-delay:.7s}
.brief-tick,.guide-tick{stroke-dasharray:1;stroke-dashoffset:1;animation:workflow-check 8s ease-in-out infinite}
.brief-transfer{stroke-dasharray:1;animation:workflow-transfer 8s ease-in-out infinite}
.call-live{animation:workflow-live 8s ease-in-out infinite}.call-wave{animation:workflow-wave 8s ease-in-out infinite;transform-origin:510px 91px}
.brand-build{animation:brand-construct 8s ease-in-out infinite;transform-origin:307px 104px}
.brand-outline{stroke-dasharray:210;animation:brand-outline-draw 8s ease-in-out infinite}
.design-selection{animation:design-select 8s ease-in-out infinite;transform-origin:307px 100px}
.design-pointer{animation:design-point 8s cubic-bezier(.4,0,.2,1) infinite}
.design-guides{animation:design-select 8s ease-in-out infinite}
.identity-palette>rect{animation:palette-apply 8s ease-in-out infinite;transform-box:fill-box;transform-origin:left center}
.identity-palette>rect:nth-child(2){animation-delay:.3s}.identity-palette>rect:nth-child(3){animation-delay:.6s}
.export-svg{animation:file-export 8s cubic-bezier(.25,.7,.2,1) infinite}.export-png{animation:file-export 8s cubic-bezier(.25,.7,.2,1) .4s infinite}
.export-progress{stroke-dasharray:1;animation:export-load 8s ease-in-out infinite}
.guide-writing path{stroke-dasharray:100;animation:guide-write 8s ease-in-out infinite}.guide-writing path:nth-child(2){animation-delay:.2s}.guide-writing path:nth-child(3){animation-delay:.4s}
.guide-tick{animation-delay:.8s}
@keyframes brief-write{0%,8%,100%{stroke-dashoffset:120;opacity:0}12%{opacity:1}35%,85%{stroke-dashoffset:0;opacity:1}95%{opacity:0}}
@keyframes workflow-check{0%,38%,100%{stroke-dashoffset:1;opacity:0}42%{opacity:1}53%,88%{stroke-dashoffset:0;opacity:1}96%{opacity:0}}
@keyframes workflow-transfer{0%,45%,100%{stroke-dashoffset:1;opacity:0}55%,82%{stroke-dashoffset:0;opacity:1}95%{opacity:0}}
@keyframes workflow-live{0%,53%,100%{fill:#c6cbbf}58%,85%{fill:#6c8b51}}
@keyframes workflow-wave{0%,55%,100%{opacity:0;transform:scaleX(.6)}60%,70%,80%{opacity:1;transform:scaleX(1)}65%,75%,85%{opacity:.35;transform:scaleX(.85)}}
@keyframes brand-construct{0%,8%,100%{opacity:0;transform:scale(.65) rotate(-18deg)}32%,88%{opacity:1;transform:scale(1) rotate(0deg)}}
@keyframes brand-outline-draw{0%,6%,100%{stroke-dashoffset:210;opacity:0}12%{opacity:1}38%,85%{stroke-dashoffset:0;opacity:1}96%{opacity:0}}
@keyframes design-select{0%,32%,100%{opacity:0;transform:scale(1.12)}43%,86%{opacity:1;transform:scale(1)}}
@keyframes design-point{0%,10%,100%{opacity:0;transform:translate(40px,25px)}20%{opacity:1}35%,48%{transform:translate(-19px,-18px);opacity:1}60%,76%{transform:translate(65px,-52px);opacity:1}90%{opacity:0;transform:translate(65px,-52px)}}
@keyframes palette-apply{0%,48%,100%{opacity:.25;transform:scaleX(.3)}66%,87%{opacity:1;transform:scaleX(1)}}
@keyframes file-export{0%,10%,100%{opacity:0;transform:translateY(-24px) scale(.92)}32%,86%{opacity:1;transform:translateY(0) scale(1)}94%{opacity:0}}
@keyframes export-load{0%,25%,100%{stroke-dashoffset:1;opacity:0}30%{opacity:1}55%,86%{stroke-dashoffset:0;opacity:1}95%{opacity:0}}
@keyframes guide-write{0%,30%,100%{stroke-dashoffset:100;opacity:0}35%{opacity:1}58%,86%{stroke-dashoffset:0;opacity:1}95%{opacity:0}}
@media(prefers-reduced-motion:reduce){.process-visual *{animation:none!important;stroke-dashoffset:0!important;opacity:1!important}}

/* Crisp monochrome artwork; the delivery artwork expands with its card. */
.process-art{transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.process-visual [stroke]:not([stroke="none"]){stroke:#111;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter}
.process-visual text{fill:#111}
.process-connector path{stroke:#111;stroke-width:.7}
.process-visual .brand-build{fill:#111;stroke:#111}
.process-visual .call-live{fill:#111;animation:monochrome-live 8s ease-in-out infinite}
.process-visual .palette-one{fill:#111}.process-visual .palette-two,.process-visual .palette-three{fill:#fff;stroke:#111}
.process-visual .palette-two{stroke-dasharray:2 2}
.process-visual .call-wave{stroke:#111}
.process-grid[data-expanded] .process-card{background:#fff}
@media(hover:hover) and (min-width:761px){
 .process-grid[data-expanded="2"] .process-card:last-child .process-art{transform:translate(350px,95px) scale(1.4) translate(-350px,-95px)}
 .process-grid[data-expanded="2"] .process-card:last-child .process-visual{max-height:190px}
}
@keyframes monochrome-live{0%,53%,100%{opacity:.15}58%,85%{opacity:1}}
@media(prefers-reduced-motion:reduce){.process-art{transition:none}}
.process-visual rect{stroke:#111;stroke-width:1}
/* Mini-interface grid: 12px gutters, 24px bars, consistent optical strokes. */
.process-visual [stroke]:not([stroke="none"]),.process-visual rect{stroke-width:.6}
.process-visual text{font-family:Arial,sans-serif;font-weight:400;letter-spacing:0}
.process-visual .brand-build{stroke-width:.6}
.process-connector path{stroke-width:.45}
.process-visual .design-selection rect{stroke-width:.55}
.process-visual .palette-two{stroke-dasharray:none}
/* Clear action sequences, with stable UI panels throughout each loop. */
.process-visual [stroke]:not([stroke="none"]),.process-visual rect{stroke:#969696;stroke-width:.6}
.process-visual text{fill:#646464}
.process-connector path{stroke:#aaa}
.process-visual .brand-build{stroke:#777;fill:#222}
.process-visual .call-live{fill:#666}
.process-visual .brief-document,.process-visual .call-window,.process-visual .identity-symbol,.process-visual .delivery-files,.process-visual .delivery-guide,.process-visual .brand-outline,.process-visual .identity-palette>rect,.process-visual .design-guides,.process-visual .guide-writing path{animation:none!important;transform:none;opacity:1;stroke-dashoffset:0}
.process-visual .brand-build{animation:ui-resize 10s ease-in-out infinite;transform-origin:267px 64px}
.process-visual .design-selection{animation:ui-select-resize 10s ease-in-out infinite;transform-origin:267px 64px}
.process-visual .design-pointer{animation:ui-cursor-drag 10s cubic-bezier(.4,0,.2,1) infinite;opacity:1}
.process-visual .brand-outline{display:none}
.process-visual .brief-writing path{animation:ui-write 10s ease-in-out infinite;stroke-dasharray:140;stroke-dashoffset:140}
.process-visual .brief-writing path:nth-child(2){animation-delay:.7s}.process-visual .brief-writing path:nth-child(3){animation-delay:1.4s}
.process-visual .brief-caret{animation:ui-caret 10s linear infinite}
.process-visual .brief-tick{animation:ui-brief-done 10s ease-in-out infinite;stroke-dasharray:1}
.process-visual .brief-transfer{animation:ui-transfer 10s ease-in-out infinite;stroke-dasharray:1}
.process-visual .call-wave{animation:ui-speaking 10s linear infinite;transform:none}
.process-visual .call-live{animation:ui-call-live 10s linear infinite}
.process-visual .export-svg,.process-visual .export-png{animation:none;opacity:1;transform:none}
.process-visual .file-progress{stroke-dasharray:1;stroke-width:1;animation:ui-file-progress 10s linear infinite}
.process-visual .png-progress{animation-delay:1.4s}
.process-visual .file-done{stroke-dasharray:1;animation:ui-file-done 10s ease-in-out infinite}
.process-visual .png-done{animation-delay:1.4s}
.process-visual .export-progress{animation:ui-package-progress 10s linear infinite;stroke-dasharray:1}
.process-visual .guide-tick{animation:ui-guide-done 10s ease-in-out infinite;stroke-dasharray:1}
@keyframes ui-write{0%,5%{stroke-dashoffset:140}22%,88%{stroke-dashoffset:0}96%,100%{stroke-dashoffset:140}}
@keyframes ui-caret{0%,5%,11%,17%{opacity:1;transform:translate(0,0)}8%,14%,20%{opacity:0;transform:translate(0,0)}22%,27%{opacity:1;transform:translate(-20px,10px)}30%,35%{opacity:1;transform:translate(-44px,20px)}38%,100%{opacity:0;transform:translate(-44px,20px)}}
@keyframes ui-brief-done{0%,38%{stroke-dashoffset:1;opacity:0}42%,90%{stroke-dashoffset:0;opacity:1}96%,100%{stroke-dashoffset:1;opacity:0}}
@keyframes ui-transfer{0%,43%{stroke-dashoffset:1;opacity:0}51%,87%{stroke-dashoffset:0;opacity:1}95%,100%{stroke-dashoffset:1;opacity:0}}
@keyframes ui-speaking{0%,53%,92%,100%{opacity:0}56%,64%,72%,80%,88%{opacity:1}60%,68%,76%,84%{opacity:.25}}
@keyframes ui-call-live{0%,51%,94%,100%{opacity:.15}54%,90%{opacity:1}}
@keyframes ui-cursor-drag{0%,8%{transform:translate(18px,12px)}20%,30%{transform:translate(-18px,4px)}48%,72%{transform:translate(-6px,12px)}85%,100%{transform:translate(18px,12px)}}
@keyframes ui-resize{0%,30%,90%,100%{transform:scale(1)}48%,72%{transform:scale(1.15,1.1)}}
@keyframes ui-select-resize{0%,16%,90%,100%{opacity:0;transform:scale(1)}23%,30%{opacity:1;transform:scale(1)}48%,72%{opacity:1;transform:scale(1.15,1.1)}82%{opacity:0;transform:scale(1)}}
@keyframes ui-file-progress{0%,12%{stroke-dashoffset:1;opacity:1}34%,84%{stroke-dashoffset:0;opacity:1}92%,100%{stroke-dashoffset:1;opacity:0}}
@keyframes ui-file-done{0%,34%{stroke-dashoffset:1;opacity:0}40%,85%{stroke-dashoffset:0;opacity:1}94%,100%{stroke-dashoffset:1;opacity:0}}
@keyframes ui-package-progress{0%,12%{stroke-dashoffset:1}34%{stroke-dashoffset:.5}50%,88%{stroke-dashoffset:0}96%,100%{stroke-dashoffset:1}}
@keyframes ui-guide-done{0%,57%{stroke-dashoffset:1;opacity:0}64%,88%{stroke-dashoffset:0;opacity:1}96%,100%{stroke-dashoffset:1;opacity:0}}
@media(prefers-reduced-motion:reduce){.process-visual *{animation:none!important;transform:none;stroke-dashoffset:0!important;opacity:1}}
/* Oversized step numbers sit behind the content and follow the panel height. */
.process-card>.process-number,.process-card:last-child>.process-number{position:absolute;inset:auto 0 50% auto;transform:translateY(50%);font-size:var(--process-number-size,330px);line-height:.72;letter-spacing:-.08em;font-weight:400;padding:0;margin:0;color:transparent;-webkit-text-stroke:.5px #d8d8d8;opacity:.5;z-index:-1;pointer-events:none}
.process-card{overflow:hidden}
.process-visual .identity-palette>rect{animation:none!important;transform:none!important;opacity:1!important}
.process-visual .brand-build{animation:logo-fill 12s linear infinite;transform:none!important}
.process-visual .brand-outline{display:block;stroke-dasharray:1;animation:logo-draw 12s ease-in-out infinite!important;opacity:1}
.process-visual .design-pointer{animation:palette-cursor 12s cubic-bezier(.4,0,.2,1) infinite}
.process-visual .palette-click{fill:none;animation:palette-click 12s ease-out infinite;transform-origin:424px 68px}
.process-visual .download-control{animation:download-ready 12s ease-in-out infinite;transform-origin:340px 172px}
.process-visual .download-pointer{animation:download-cursor 12s cubic-bezier(.4,0,.2,1) infinite}
.process-visual .download-click{fill:none;animation:download-feedback 12s ease-out infinite;transform-origin:340px 171px}
.process-visual .download-arrow{animation:download-arrow 12s ease-in-out infinite}
.process-visual .export-progress,.process-visual .file-progress,.process-visual .file-done,.process-visual .guide-tick{animation-duration:12s;animation-delay:0s}
.process-visual .png-progress,.process-visual .png-done{animation-delay:1s}
.process-visual .intention-summary{animation:intention-summary 10s ease-in-out infinite}
.process-visual .intention-check{stroke-dasharray:1;animation:intention-confirm 10s ease-in-out infinite}
.reviews-showcase:hover .review-stream-track{animation-play-state:running}
@keyframes logo-draw{0%,5%{stroke-dashoffset:1}32%,92%{stroke-dashoffset:0}100%{stroke-dashoffset:1}}
@keyframes logo-fill{0%,57%{fill:transparent}60%,92%{fill:#222}98%,100%{fill:transparent}}
@keyframes palette-cursor{0%,32%{transform:translate(-58px,-24px)}50%,70%{transform:translate(59px,-64px)}78%,100%{transform:translate(15px,8px)}}
@keyframes palette-click{0%,55%,68%,100%{opacity:0;transform:scale(.5)}57%{opacity:.8;transform:scale(.5)}65%{opacity:0;transform:scale(1.8)}}
@keyframes download-ready{0%,62%{opacity:0}68%,100%{opacity:1}}
@keyframes download-cursor{0%,66%{opacity:0;transform:translate(20px,10px)}70%{opacity:1;transform:translate(20px,10px)}80%,92%{opacity:1;transform:translate(-25px,-6px)}100%{opacity:0;transform:translate(-25px,-6px)}}
@keyframes download-feedback{0%,81%,94%,100%{opacity:0;transform:scale(.5)}83%{opacity:.8;transform:scale(.5)}91%{opacity:0;transform:scale(1.8)}}
@keyframes download-arrow{0%,82%,100%{transform:translateY(0)}86%{transform:translateY(2px)}90%{transform:translateY(0)}}
@keyframes intention-summary{0%,65%,100%{opacity:0}72%,93%{opacity:1}}
@keyframes intention-confirm{0%,73%,100%{stroke-dashoffset:1}82%,94%{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){.process-visual *{animation:none!important}.process-visual .brand-build{fill:#222}.process-visual .brand-outline,.process-visual .intention-check{stroke-dashoffset:0}.download-pointer,.palette-click,.download-click{display:none}}

/* Keep both review columns inside the same editorial rails. */
.reviews-showcase .review-stream{left:var(--review-rail-inset,5.5%);right:var(--review-rail-inset,5.5%)}
.process-card>.process-number,.process-card:last-child>.process-number{inset:50% 12px auto auto;transform:translateY(-50%);font-size:180px;line-height:.8;letter-spacing:-.07em;opacity:.65;z-index:0;-webkit-text-stroke:.5px #d8d8d8}
@media(max-width:760px){.process-card>.process-number,.process-card:last-child>.process-number{font-size:120px;right:8px}}
@media(max-width:480px){.process-card>.process-number,.process-card:last-child>.process-number{font-size:86px;right:5px}}

/* Finish the delivery action clearly and keep the footer compact. */
.process-visual .file-progress{display:none}
.process-visual .download-control rect{fill:#111;stroke:#111}
.process-visual .download-control .download-arrow{stroke:#fff}
.site-footer{min-height:clamp(230px,20vw,300px);padding:28px 5.5% 20px;gap:40px}
.footer-watermark{left:17%;bottom:12px;width:66%;opacity:.04}
@media(max-width:760px){.site-footer{min-height:245px;padding:25px 6% 20px;gap:38px}.footer-watermark{left:5%;bottom:0;width:90%;opacity:.04}}
@media(max-width:480px){.site-footer{min-height:235px;gap:35px}.footer-watermark{width:94%;left:3%;bottom:0;opacity:.04}}

/* Each interface completes one clear action and then holds its finished state. */
.process-visual .brief-writing path{stroke-dasharray:140;stroke-dashoffset:140;animation:brief-write-once 6s ease 1 forwards}
.process-visual .brief-writing path:nth-child(2){animation-delay:.28s}
.process-visual .brief-writing path:nth-child(3){animation-delay:.56s}
.process-visual .brief-book-button{opacity:0;animation:brief-button-once 6s ease 1 forwards}
.process-visual .brief-pointer{opacity:0;animation:brief-cursor-once 6s cubic-bezier(.35,0,.2,1) 1 forwards}
.process-visual .brief-click{opacity:0;transform-box:fill-box;transform-origin:center;animation:cursor-click-once 6s ease 1 forwards}
.process-visual .brief-transfer{stroke-dasharray:1;stroke-dashoffset:1;opacity:.35;animation:brief-transfer-once 6s ease 1 forwards}
.process-visual .brief-caret{animation:brief-caret-once 6s linear 1 forwards}
.process-visual .intention-summary{opacity:0;animation:brief-summary-once 6s ease 1 forwards}
.process-visual .intention-check{stroke-dasharray:1;stroke-dashoffset:1;animation:intention-check-once 6s ease 1 forwards}
.process-visual .design-pointer{opacity:0;animation:design-cursor-once 7s cubic-bezier(.35,0,.2,1) 1 forwards}
.process-visual .brand-outline{display:block;stroke-dasharray:1;stroke-dashoffset:1;animation:identity-draw-once 7s ease 1 forwards!important}
.process-visual .brand-build{fill:transparent;animation:identity-fill-once 7s ease 1 forwards!important}
.process-visual .palette-click{opacity:0;animation:palette-click-once 7s ease 1 forwards}
.process-visual .delivery-guide{animation:none!important;transform:none!important}
.process-visual .guide-tick{display:none!important}
.process-visual .file-done{stroke-dasharray:1;stroke-dashoffset:1;opacity:0;animation:file-check-once 8s ease 1 forwards}
.process-visual .png-done{animation-delay:.45s}
.process-visual .export-progress{stroke-dasharray:1;stroke-dashoffset:1;opacity:.6;animation:package-progress-once 8s ease 1 forwards}
.process-visual .download-control{opacity:0;animation:download-button-once 8s ease 1 forwards}
.process-visual .download-pointer{opacity:0;animation:download-cursor-once 8s cubic-bezier(.35,0,.2,1) 1 forwards}
.process-visual .download-click{opacity:0;transform-box:fill-box;transform-origin:center;animation:cursor-click-delivery-once 8s ease 1 forwards}
.process-visual .download-arrow{animation:download-arrow-once 8s ease 1 forwards}
@keyframes brief-write-once{0%{stroke-dashoffset:140;opacity:.4}55%,100%{stroke-dashoffset:0;opacity:1}}
@keyframes brief-button-once{0%,52%{opacity:0}62%,100%{opacity:1}}
@keyframes brief-cursor-once{0%,54%{opacity:0;transform:translate(0,0)}58%{opacity:1;transform:translate(0,0)}72%,86%{opacity:1;transform:translate(-88px,20px)}100%{opacity:0;transform:translate(-88px,20px)}}
@keyframes cursor-click-once{0%,71%{opacity:0;transform:scale(.45)}74%{opacity:.85;transform:scale(.55)}80%,100%{opacity:0;transform:scale(1.5)}}
@keyframes brief-transfer-once{0%,40%{stroke-dashoffset:1;opacity:.25}60%,100%{stroke-dashoffset:0;opacity:.8}}
@keyframes brief-caret-once{0%,40%{opacity:1}50%,100%{opacity:0}}
@keyframes brief-summary-once{0%,76%{opacity:0}86%,100%{opacity:1}}
@keyframes intention-check-once{0%,82%{stroke-dashoffset:1}93%,100%{stroke-dashoffset:0}}
@keyframes design-cursor-once{0%,35%{opacity:0;transform:translate(0,0)}39%{opacity:1;transform:translate(0,0)}51%,58%{opacity:1;transform:translate(59px,-64px)}100%{opacity:0;transform:translate(59px,-64px)}}
@keyframes identity-draw-once{0%{stroke-dashoffset:1}34%,100%{stroke-dashoffset:0}}
@keyframes identity-fill-once{0%,39%{fill:transparent}48%,100%{fill:#111}}
@keyframes palette-click-once{0%,49%{opacity:0;transform:scale(.45)}52%{opacity:.85;transform:scale(.55)}58%,100%{opacity:0;transform:scale(1.5)}}
@keyframes file-check-once{0%,38%{stroke-dashoffset:1;opacity:0}48%,100%{stroke-dashoffset:0;opacity:1}}
@keyframes package-progress-once{0%{stroke-dashoffset:1}54%,100%{stroke-dashoffset:0}}
@keyframes download-button-once{0%,56%{opacity:0}63%,100%{opacity:1}}
@keyframes download-cursor-once{0%,59%{opacity:0;transform:translate(0,0)}63%{opacity:1;transform:translate(0,0)}73%,80%{opacity:1;transform:translate(-36px,28px)}86%,100%{opacity:0;transform:translate(-36px,28px)}}
@keyframes cursor-click-delivery-once{0%,72%{opacity:0;transform:scale(.45)}75%{opacity:.85;transform:scale(.55)}81%,100%{opacity:0;transform:scale(1.5)}}
@keyframes download-arrow-once{0%,74%,100%{transform:translateY(0)}77%{transform:translateY(2px)}80%{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.process-visual *{animation:none!important;opacity:1!important;stroke-dashoffset:0!important}.process-visual .brief-pointer,.process-visual .design-pointer,.process-visual .download-pointer,.process-visual .brief-click,.process-visual .palette-click,.process-visual .download-click{display:none!important}.process-visual .brand-build{fill:#111!important}.process-visual .guide-tick{display:none!important}}

/* The white color change applies to the call button only. */
.process-visual .brief-document>rect:first-child{fill:#fff!important;stroke:#969696!important}
.process-visual .brief-document>rect:not(:first-child){fill:#fff!important;stroke:#969696!important}
.process-visual .brief-document [stroke]{stroke:#969696!important}
.process-visual .brief-document text{fill:#666!important}
.process-visual .brief-book-button rect{fill:#fff!important;stroke:#969696!important}
.process-visual .brief-book-button text{fill:#212121!important}
.process-visual .brief-book-button path{stroke:#212121!important}
.process-visual .download-control .download-badge{fill:#222;stroke:#ffffff55;stroke-width:1.2}
.process-visual .download-control .download-arrow{stroke:#fff;stroke-width:1.5}
.process-visual .download-control{transform-origin:371px 182px;filter:drop-shadow(0 2px 5px #0003)}
.process-visual .download-control .download-arrow{animation:none!important}
