:root{--charcoal:#242b29;--sage:#82917b;--sandstone:#b9785b;--river:#547d8c;--sand:#d7b99a;--ivory:#f4efe6;--purple:#80607e;--brown:#795741}*{box-sizing:border-box}html{scroll-behavior:auto}body{margin:0;background:var(--ivory);color:var(--charcoal);font-family:Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}.nav{position:absolute;z-index:10;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:space-between;padding:25px max(5vw,24px);color:white}.brand{display:flex;flex-direction:column;gap:5px}.brand-main{font-size:18px;font-weight:800;letter-spacing:.14em}.brand-main em{font-style:normal;color:var(--sand)}.brand small{font-size:9px;letter-spacing:.3em;color:#d3d8d1}.nav nav{display:flex;align-items:center;gap:32px;font-size:13px}.nav-cta{border:1px solid #ffffff99;padding:13px 17px}.menu{display:none;border:1px solid #ffffff80;background:#242b29aa;color:white;padding:9px 12px;font-size:20px}.hero{min-height:760px;height:100svh;max-height:1100px;position:relative;overflow:hidden;background:linear-gradient(180deg,#3b3347 0%,#8c657a 36%,#b87866 63%,#795741 100%);color:white}.hero-art{position:absolute;inset:0;overflow:hidden}.sun{position:absolute;right:14%;top:26%;width:210px;aspect-ratio:1;border-radius:50%;background:#e9aa86;filter:blur(3px);box-shadow:0 0 110px 60px #e9aa8644}.mesa{position:absolute;width:130%;left:-15%;clip-path:polygon(0 72%,12% 48%,20% 59%,34% 21%,44% 39%,57% 17%,72% 55%,84% 28%,100% 60%,100% 100%,0 100%)}.mesa.back{bottom:13%;height:55%;background:#926271}.mesa.front{bottom:-3%;height:48%;background:linear-gradient(#a66e60,#654a43);transform:scaleX(-1)}.house{position:absolute;bottom:16%;right:10%;width:49%;height:25%;filter:drop-shadow(8px 12px 9px #281d2266)}.roof{height:17%;background:#393637;clip-path:polygon(3% 50%,100% 0,98% 100%,0 100%)}.building{height:83%;margin:0 5%;background:#b6a397;display:flex;gap:3%;padding:3%;box-shadow:inset 0 -15px #76584c}.glass{flex:1;background:linear-gradient(140deg,#4b6774,#302e41 55%,#ba806a);border:5px solid #4b4745}.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,#141d20e8 0%,#1e2426ad 43%,transparent 95%),linear-gradient(0deg,#171d1dcc,transparent 45%)}.hero-copy{position:absolute;top:50%;transform:translateY(-42%);left:max(7vw,25px);max-width:720px}.eyebrow{font-size:11px;letter-spacing:.25em;font-weight:700;color:var(--sand);margin:0 0 23px}.eyebrow.dark{color:var(--brown)}h1,h2,h3,p{margin-top:0}h1{font-family:Georgia,serif;font-weight:400;letter-spacing:-.045em;font-size:clamp(55px,8vw,118px);line-height:1.02;margin-bottom:27px}h1 i,h2 em{font-weight:400;color:var(--sand);font-style:italic}.lead{font-size:clamp(16px,2vw,20px);line-height:1.7;max-width:500px;color:#ece7e3}.actions{display:flex;flex-wrap:wrap;gap:13px;margin-top:32px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:24px;padding:17px 24px;font-size:13px;font-weight:700;letter-spacing:.025em}.button.primary{background:var(--sage);color:#15201c}.button.outline{border:1px solid #ddd7d0;color:white}.hero-caption{position:absolute;bottom:30px;left:max(7vw,25px);font-size:9px;letter-spacing:.2em;color:#e4d9d0}.section{padding:110px max(7vw,25px)}.intro{text-align:center;max-width:1100px;margin:auto}.intro h2,.section h2{font:400 clamp(38px,5.5vw,76px)/1.13 Georgia,serif;letter-spacing:-.035em}.intro h2 em,.work h2 em,.contact h2 em{color:var(--brown)}.intro>p:last-child{max-width:680px;margin:25px auto 0;line-height:1.9;color:#59615d}.services{background:var(--charcoal);color:var(--ivory)}.section-head{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:48px}.section-head>p{max-width:280px;color:#bfc8be;line-height:1.7}.service-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.service-grid article{min-width:0}.num{font-size:11px;color:var(--sand);letter-spacing:.15em}.tile{height:250px;margin:13px 0 22px;position:relative;overflow:hidden;background:linear-gradient(160deg,#80607e,#b9785b 50%,#795741 51%,#3c4542)}.tile:before{content:"";position:absolute;inset:35% -10% -10%;background:#544641;clip-path:polygon(0 80%,30% 15%,55% 60%,77% 25%,100% 70%,100% 100%,0 100%)}.tile-two{background:linear-gradient(145deg,#547d8c,#b9785b 60%,#795741)}.tile-three{background:linear-gradient(145deg,#82917b,#d7b99a 50%,#795741)}.tile-four{background:linear-gradient(145deg,#80607e,#b9785b 60%,#242b29)}h3{font:400 25px Georgia,serif;margin-bottom:12px}.service-grid p{font-size:14px;line-height:1.8;color:#c9d0c9}.portfolio-placeholder{min-height:400px;border:1px solid #bdb5a7;background:linear-gradient(140deg,#ddd0bc,#bba18d);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:25px}.portfolio-placeholder span{letter-spacing:.25em;font-size:11px;font-weight:bold}.portfolio-placeholder p{font:italic 25px Georgia,serif;margin:17px 0 0}.fine{font-size:11px;color:#777d77;line-height:1.7;margin-top:15px}.about{background:linear-gradient(115deg,#242b29,#494044 75%,#80607e);color:white;display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}.about>p{line-height:2;max-width:470px;color:#e0ded9}.contact{text-align:center}.contact>p:not(.eyebrow){max-width:540px;margin:0 auto 30px;line-height:1.8}.contact .fine{margin-top:30px!important;font-size:11px}footer{background:#1b2320;color:white;padding:40px max(7vw,25px);display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:12px}footer p{margin:0;color:var(--sand)}@media(max-width:800px){.nav{padding:20px 24px}.menu{display:block}.nav nav{display:none;position:absolute;right:20px;top:75px;left:20px;background:#242b29f5;padding:22px;flex-direction:column;align-items:stretch;gap:20px}.nav nav.open{display:flex}.hero{min-height:690px;max-height:950px}.hero-copy{top:49%;transform:translateY(-33%);right:24px}.house{width:80%;right:-5%;bottom:18%}.sun{right:5%;top:24%;width:145px}.hero-shade{background:linear-gradient(90deg,#141d20d9,#141d2066 80%),linear-gradient(0deg,#171d1dcc,transparent 65%)}.section{padding:75px 25px}.section-head{display:block}.service-grid{grid-template-columns:repeat(2,1fr)}.tile{height:210px}.about{grid-template-columns:1fr;gap:12px}footer{flex-direction:column;align-items:flex-start}}@media(max-width:480px){.service-grid{grid-template-columns:1fr}.tile{height:220px}.hero-copy{top:44%;transform:translateY(-20%)}h1{font-size:clamp(50px,12vw,68px)}.lead{font-size:15px}.button{padding:15px 17px}.hero-caption{font-size:8px;max-width:300px;line-height:1.8}.intro h2,.section h2{font-size:43px}}

/* V2 — calm cinematic scroll transitions, accessible on touch devices */
html{scroll-snap-type:none;overscroll-behavior-y:auto;-webkit-overflow-scrolling:touch}
.hero,.intro,.services,.work,.about,.contact{scroll-snap-align:none}
.intro,.work,.about,.contact{min-height:85svh;display:flex;flex-direction:column;justify-content:center}
.about{display:grid}
.services{min-height:100svh}
.menu{min-width:43px;min-height:42px;align-items:center;justify-content:center}
.menu-lines{display:flex;flex-direction:column;gap:5px;align-items:center}
.menu-lines span{width:17px;height:1.5px;background:currentColor;display:block}
.button{transition:background-color .25s ease,transform .25s ease,border-color .25s ease}
.button:hover{transform:translateY(-2px)}
@media(prefers-reduced-motion:no-preference){
 .reveal{opacity:1;transform:none}
 .js-reveal .reveal:not(.visible){opacity:1;transform:none}
 .js-reveal .reveal{transition:none}
 .js-reveal .reveal.visible{opacity:1;transform:translateY(0)}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto;scroll-snap-type:none}.button{transition:none}}
@media(max-width:800px){.intro,.work,.about,.contact{min-height:80svh}.services{min-height:auto}}

/* V5 — full-screen, one-gesture section navigation */

/* V6: safe, native mobile scrolling with gentle section snapping. */
html { scroll-behavior: smooth; scroll-snap-type: y proximity; }
body { overflow-x: hidden; }
main > section { scroll-snap-align: start; }
@media (max-width: 800px) {
  html { scroll-snap-type: y proximity; }
  main > section { height: auto; max-height: none; overflow: visible; }
  .hero { min-height: 100svh; height: 100svh; max-height: none; }
  .intro,.work,.about,.contact { min-height: 100svh; padding-top: 85px; padding-bottom: 75px; }
  .services { min-height: 100svh; padding-top: 85px; padding-bottom: 75px; }
  .service-grid { display: flex; gap: 15px; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding-bottom: 16px; }
  .service-grid article { flex: 0 0 min(78vw,330px); scroll-snap-align: center; }
  .service-grid .tile { height: 190px; }
  footer { scroll-snap-align: none; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; scroll-snap-type: none; } }
/* V7: gesture-driven cinematic panels, not native document scroll. */
html,body{height:100%;overflow:hidden;overscroll-behavior:none}
body{position:fixed;inset:0;width:100%}
main{height:100dvh;position:relative;overflow:hidden;touch-action:pan-x}
main>section,body>footer{position:absolute!important;inset:0!important;width:100%;height:100dvh!important;min-height:0!important;max-height:none!important;margin:0!important;overflow-y:auto!important;overscroll-behavior:contain;scroll-snap-align:none!important;transform:translate3d(0,105%,0);transition:transform 1600ms cubic-bezier(.45,0,.18,1);will-change:transform;-webkit-overflow-scrolling:touch;visibility:hidden}
main>section.is-current,body>footer.is-current{transform:translate3d(0,0,0);visibility:visible;z-index:2}
main>section.is-before,body>footer.is-before{transform:translate3d(0,-105%,0);visibility:visible;z-index:1}
main>section.is-after,body>footer.is-after{transform:translate3d(0,105%,0);visibility:visible;z-index:1}
body>footer{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:24px;padding:10vw}
.hero{height:100dvh!important;min-height:0!important}
.nav{position:fixed;z-index:30;pointer-events:none}.nav a,.nav button,.nav nav{pointer-events:auto}
main>section:not(.hero){padding-top:max(100px,12dvh);padding-bottom:55px}
.services .service-grid{display:flex;gap:15px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;touch-action:pan-x;padding-bottom:14px}
.services .service-grid article{flex:0 0 min(76vw,310px);scroll-snap-align:center}
.services .tile{height:min(25dvh,200px)}
.services .section-head{margin-bottom:22px}
.services .section-head h2{font-size:clamp(34px,9vw,58px)}
.work .portfolio-placeholder{min-height:min(38dvh,340px)}
.intro,.work,.about,.contact{justify-content:center}
@media(max-width:480px){.hero-copy{top:45%}.intro h2,.section h2{font-size:clamp(35px,10vw,43px)}.section{padding-left:25px;padding-right:25px}}
@media(prefers-reduced-motion:reduce){main>section,body>footer{transition-duration:0ms}}
/* V9: cinematic flight, restrained 3D perspective and warm sandstone interludes */
:root{--sandstone:#b9785b;--purple:#8d729f;--brown:#755744}
body{background:#242b29;color:#f4efe6;perspective:1250px;perspective-origin:50% 48%}
main{perspective:1250px;perspective-origin:50% 48%;transform-style:preserve-3d}
main>section,body>footer{backface-visibility:hidden;transition:transform 1600ms cubic-bezier(.22,.65,.16,1),opacity 1600ms cubic-bezier(.22,.65,.16,1),filter 1600ms cubic-bezier(.22,.65,.16,1);transform-origin:50% 50%;opacity:.65;filter:brightness(.78)}
main>section.is-current,body>footer.is-current{transform:translate3d(0,0,0) rotateX(0deg) scale(1);opacity:1;filter:brightness(1);z-index:3}
main>section.is-before,body>footer.is-before{transform:translate3d(0,-104%, -130px) rotateX(-3deg) scale(.96);opacity:.65;filter:brightness(.8);z-index:1}
main>section.is-after,body>footer.is-after{transform:translate3d(0,104%, -130px) rotateX(3deg) scale(.96);opacity:.65;filter:brightness(.8);z-index:1}
/* keep panel content in view; sandstone accents are intentional, not white */
.intro{background:#36443e;color:#f4efe6;max-width:none}
.intro h2 em{color:#d7b99a}
.intro>p:last-child{color:#d4ddd3}
.intro .eyebrow.dark{color:#d7b99a}
.services{background:#242b29}
.work{background:#c69c79;color:#242b29}
.work h2 em{color:#755744}
.work .eyebrow.dark{color:#543d31}
.work .portfolio-placeholder{background:linear-gradient(145deg,#9a796a,#755744);color:#f4efe6;border-color:#755744}
.work .fine{color:#4a3b32}
.about{background:linear-gradient(125deg,#243b42,#302f38 70%,#493b4c)}
.contact{background:#b9785b;color:#242b29}
.contact h2 em{color:#49352c}
.contact .eyebrow.dark{color:#49352c}
.contact .button.primary{background:#242b29;color:#f4efe6}
.contact .fine{color:#48362e}
footer{background:#242b29}
@media(prefers-reduced-motion:reduce){main>section,body>footer{transition:none!important;filter:none!important}}

/* V10: service carousel never traps vertical slide navigation; footer is part of contact */
.services{overflow-y:hidden!important}
.services .service-grid{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.contact{position:relative;padding-bottom:105px!important}
.contact-signoff{position:absolute;left:25px;right:25px;bottom:25px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #242b2940;padding-top:14px;font-size:10px;letter-spacing:.06em;color:#352c27}
.contact-signoff strong{letter-spacing:.13em}
@media(max-width:600px){.contact-signoff{flex-direction:column;text-align:center;font-size:9px;gap:5px}.services .service-grid{max-height:calc(100dvh - 245px)}.services .tile{height:min(22dvh,170px)}}
/* V11: continuous finger-tracked flight with a soft destination lock */
main>section{transition:none!important;visibility:visible!important;transform:translate3d(0,calc(var(--offset, 1) * 100dvh + var(--drag, 0px)),var(--depth, -130px)) rotateX(var(--tilt, 0deg)) scale(var(--scale, .96))!important;opacity:var(--opacity,.65)!important;filter:brightness(var(--brightness,.82))!important;pointer-events:none}
main>section.is-current{pointer-events:auto}
main>section.flight-animating{transition:transform 1600ms cubic-bezier(.16,.72,.12,1),opacity 1600ms cubic-bezier(.16,.72,.12,1),filter 1600ms cubic-bezier(.16,.72,.12,1)!important}
main::after{content:"";position:absolute;inset:0;z-index:5;pointer-events:none;background:linear-gradient(180deg,transparent 25%,rgba(36,43,41,.12) 52%,transparent 80%);opacity:var(--veil,0);transition:opacity .3s ease}
main.dragging::after{transition:none}
main.dragging>section{transition:none!important}
@media(prefers-reduced-motion:reduce){main>section.flight-animating{transition-duration:0ms!important}}

/* Adjacent panels share a warm color atmosphere rather than hard flat backgrounds. */
.intro{background:linear-gradient(165deg,#34423d 0%,#394c47 65%,#2b3b3c 100%)}
.services{background:linear-gradient(155deg,#293a36 0%,#242b29 55%,#51483f 100%)}
.work{background:linear-gradient(155deg,#967763 0%,#c69c79 48%,#b78366 100%)}
.about{background:linear-gradient(150deg,#344b4b 0%,#243b42 48%,#44394a 100%)}
.contact{background:linear-gradient(160deg,#8c6859 0%,#b9785b 52%,#c69c79 100%)}
/* V12: direct finger tracking with interruptible cinematic glide. */
main>section,main>section.flight-animating,main.dragging>section{transition:none!important}
main{touch-action:pan-x}
/* V13: atmospheric seams. The camera sees a continuous color field behind
   neighboring panels, while their edges dissolve into that field. */
main{background:var(--flight-backdrop,#34423d);transition:none!important;isolation:isolate}
main>section{
  -webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 7%,#000 93%,transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0%,#000 7%,#000 93%,transparent 100%);
  background-clip:padding-box;
}
/* Keep text legible at the ends of the journey and avoid any hard panel outlines. */
main>section{border:0!important;box-shadow:none!important}
@media(prefers-reduced-motion:reduce){main>section{-webkit-mask-image:none;mask-image:none}}

/* V14: booking overlay is outside the flight panels, so swiping remains unchanged. */
.booking-overlay[hidden]{display:none!important}.booking-overlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:14px}.booking-backdrop{position:absolute;inset:0;background:rgba(12,20,20,.8);backdrop-filter:blur(9px)}.booking-dialog{position:relative;width:min(100%,560px);max-height:min(92dvh,850px);overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border:1px solid rgba(215,185,154,.32);border-radius:18px;background:linear-gradient(150deg,#34443e,#242b29);color:#f4efe6;padding:25px 22px 30px;box-shadow:0 20px 80px #0008;touch-action:pan-y}.booking-dialog h2{font-size:clamp(30px,7vw,44px);line-height:1.08;margin:6px 0 10px}.booking-eyebrow{font-size:10px;letter-spacing:.2em;color:#d7b99a}.booking-intro{font-size:14px;line-height:1.5;color:#d9ded8;margin-bottom:20px}.booking-close{position:absolute;right:14px;top:12px;color:#f4efe6;background:transparent;border:0;font-size:30px;cursor:pointer;padding:5px 10px}.booking-dialog form{display:grid;gap:13px}.booking-dialog label{display:grid;gap:6px;font-size:12px;letter-spacing:.02em;color:#e8e8df}.booking-dialog input,.booking-dialog select,.booking-dialog textarea{box-sizing:border-box;min-width:0;width:100%;border:1px solid #87978b80;border-radius:8px;padding:12px;font:inherit;font-size:16px;color:#f4efe6;background:#1e2926;outline-offset:3px;color-scheme:dark}.booking-dialog input:focus,.booking-dialog select:focus,.booking-dialog textarea:focus{outline:2px solid #d7b99a}.booking-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.booking-note{font-size:12px;line-height:1.5;color:#d7b99a;margin:3px 0}.booking-submit{width:100%;cursor:pointer}.contact button.button{border:0;cursor:pointer;font:inherit}@media(max-width:390px){.booking-row{grid-template-columns:1fr}.booking-dialog{padding:24px 17px}}
