*{ box-sizing: border-box; }
.section-pad{ padding: clamp(56px, 9vw, 120px) clamp(20px, 6vw, 80px); }
.eyebrow{ font: 600 13px/1 "Monoglyphic", system-ui, sans-serif; letter-spacing: .32em; text-transform: uppercase; color: var(--ga-gold, #1954a6); margin: 0 0 12px; }
.sec-title{ font: 700 clamp(28px, 3.6vw, 46px)/1.06 "Monoglyphic", system-ui, sans-serif; text-transform: uppercase; margin: 0; }

.hero-track{
  position: relative; height: 340vh;
  background: radial-gradient(120% 100% at 78% 16%, #1d2740 0%, #131a2c 55%, #0b0f1a 100%);
}
.hero-stage{ position: sticky; top: 0; height: 100vh; overflow: hidden; }

.hero-cards{
  position: absolute; top: 50%; right: clamp(24px, 9vw, 150px);
  transform: translateY(-50%);
  width: clamp(240px, 30vw, 360px); aspect-ratio: 3 / 4;
  perspective: 1300px;
}
.hero-card{
  position: absolute; inset: 0;
  will-change: transform, opacity; backface-visibility: hidden;
  transform-style: preserve-3d;
}
.hero-card__inner{
  position: absolute; inset: 0; border-radius: 22px; overflow: hidden;
  background: var(--svc-c, #e9e9ec);
  box-shadow: 0 30px 70px rgba(0,0,0,.45);
  transform: translateZ(0);
  transform-style: preserve-3d;
  transition: transform .55s cubic-bezier(.22,1,.36,1), box-shadow .55s ease;
}
.hero-card.is-active .hero-card__inner{ box-shadow: 0 42px 92px rgba(0,0,0,.5); }
.hero-card.is-active:hover .hero-card__inner{
  transform: translateZ(46px) rotateX(6deg) scale(1.02);
  box-shadow: 0 58px 120px rgba(0,0,0,.55);
}
.hero-card__img{
  position: absolute; inset: 0; width: 100%; height: 100%; display: block;
  object-fit: cover; object-position: center;
}
.hero-card__wm{
  position: absolute; top: 6%; left: 0; right: 0; text-align: center;
  font: 700 clamp(30px, 4.4vw, 56px)/1 "Monoglyphic", system-ui, sans-serif;
  text-transform: uppercase; letter-spacing: .02em;
  color: var(--svc-wc, #b6bac6); opacity: 0;
  padding: 0 10px; pointer-events: none; transition: opacity .4s ease; mix-blend-mode: multiply;
}
.hero-card.is-active .hero-card__wm{ opacity: .55; }
.hero-card.is-active:hover .hero-card__wm{ opacity: 0; }
@media (hover: none){ .hero-card.is-active .hero-card__wm{ opacity: 0; } }

.hero-card__reveal{
  position: absolute; inset: 0; display: flex; flex-direction: column;
  justify-content: flex-end; align-items: flex-start; text-align: left;
  padding: clamp(16px, 3vw, 26px);
  background: linear-gradient(to top, rgba(9,13,20,.88) 0%, rgba(9,13,20,.46) 44%, rgba(9,13,20,0) 74%);
  opacity: 0; transform: translateY(16px);
  transition: opacity .45s ease, transform .45s cubic-bezier(.22,1,.36,1);
  pointer-events: none;
}
.hero-card.is-active:hover .hero-card__reveal{ opacity: 1; transform: translateY(0); }
@media (hover: none){ .hero-card.is-active .hero-card__reveal{ opacity: 1; transform: translateY(0); } }
.hero-card__title{
  margin: 0 0 12px; color: #fff;
  font: 700 clamp(18px, 2.2vw, 25px)/1.1 "Monoglyphic", system-ui, sans-serif;
}
.hero-card__book{
  align-self: flex-start; text-decoration: none; white-space: nowrap;
  background: var(--ga-gold, #1954a6); color: #fff; padding: 11px 18px; border-radius: 999px;
  font: 700 12px/1 "Monoglyphic", system-ui, sans-serif; letter-spacing: .08em; text-transform: uppercase;
  box-shadow: 0 10px 26px rgba(0,0,0,.4);
  opacity: 0; transform: translateY(10px); pointer-events: none;
  transition: opacity .45s ease .06s, transform .45s cubic-bezier(.22,1,.36,1) .06s, background .2s ease;
}
.hero-card.is-active:hover .hero-card__book{ opacity: 1; transform: translateY(0); pointer-events: auto; }
@media (hover: none){ .hero-card.is-active .hero-card__book{ opacity: 1; transform: translateY(0); pointer-events: auto; } }
.hero-card__book:hover{ background: var(--ga-gold-2, #2466c4); }

.hero-about{
  position: absolute; left: clamp(24px, 6vw, 80px); bottom: clamp(48px, 9vh, 92px);
  max-width: 30rem; color: #f2f0ea; transition: opacity .2s ease;
}
.hero-about.is-switching{ opacity: 0; }
.hero-about__eyebrow{ font: 600 13px/1 "Monoglyphic", system-ui, sans-serif; letter-spacing: .32em; text-transform: uppercase; color: #9fc0f0; margin: 0 0 14px; }
.hero-about__title{ font: 700 clamp(30px, 4.2vw, 52px)/1.04 "Monoglyphic", system-ui, sans-serif; text-transform: uppercase; margin: 0 0 16px; }
.hero-about__copy{ font: 400 clamp(15px, 1.3vw, 17px)/1.65 "Monoglyphic", system-ui, sans-serif; color: #c9d2e0; margin: 0; }

.about-section{ background: #fff; color: var(--ga-ink, #141414); }
.about-inner{ max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 5vw, 64px); align-items: center; }
.media{ position: relative; min-height: 56vh; perspective: 1100px; }
.media__inner{
  position: absolute; inset: 0; border-radius: 22px; overflow: hidden;
  background: linear-gradient(150deg, #bcd6ef, #e9eef6);
  box-shadow: 0 30px 70px rgba(20,23,28,.22);
  transform-style: preserve-3d;
  transition: transform .55s cubic-bezier(.22,1,.36,1), box-shadow .55s ease;
}
.media:hover .media__inner{
  transform: rotateX(5deg) rotateY(-5deg) scale(1.02);
  box-shadow: 0 48px 104px rgba(20,23,28,.30);
}
.media img{ position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .7s cubic-bezier(.22,1,.36,1); }
.media:hover img{ transform: scale(1.07); }
.media__shine{
  position: absolute; inset: 0; pointer-events: none; z-index: 3;
  background: linear-gradient(105deg, transparent 38%, rgba(255,255,255,.4) 50%, transparent 62%);
  transform: translateX(-120%); transition: transform .9s ease;
}
.media:hover .media__shine{ transform: translateX(120%); }
.media__inner::after{
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: rgba(9,13,20,.45); opacity: 0; transition: opacity .5s ease;
}
.media:hover .media__inner::after{ opacity: 1; }
.media__title{
  position: absolute; inset: 0; z-index: 2; display: flex; align-items: center; justify-content: center;
  text-align: center; padding: 0 12px; pointer-events: none;
  font: 700 clamp(30px, 5vw, 64px)/1 "Monoglyphic", system-ui, sans-serif;
  text-transform: uppercase; letter-spacing: .04em;
  color: rgba(255,255,255,.96); text-shadow: 0 6px 30px rgba(0,0,0,.45);
  opacity: 0; transform: scale(1.12);
  transition: opacity .5s ease, transform .6s cubic-bezier(.22,1,.36,1);
}
.media:hover .media__title{ opacity: 1; transform: scale(1); }
@media (hover: none){
  .media:hover .media__inner{ transform: none; }
  .media:hover img{ transform: none; }
}
.about-copy{ font: 400 clamp(15px, 1.3vw, 17px)/1.7 "Monoglyphic", system-ui, sans-serif; color: #444; margin: 0 0 14px; max-width: 48ch; }

.reviews{ background: #f5f7fa; color: var(--ga-ink, #141414); }
.reviews-head{ max-width: 1100px; margin: 0 auto clamp(28px, 4vw, 48px); }
.reviews-grid{ max-width: 1100px; margin: 0 auto; column-count: 3; column-gap: 20px; }
.review-card{ break-inside: avoid; margin: 0 0 20px; display: flex; flex-direction: column; gap: 14px; background: #fff; border: 1px solid var(--ga-line); border-radius: 16px; padding: 24px; box-shadow: 0 10px 30px rgba(20,20,20,.05); }
.review-top{ display: flex; align-items: center; justify-content: space-between; }
.review-stars{ display: inline-flex; gap: 2px; }
.review-star svg{ display: block; fill: #dcdce0; }
.review-star.is-on svg{ fill: #fbbc05; }
.review-text{ font: 400 15px/1.65 "Monoglyphic", system-ui, sans-serif; color: #444; margin: 0; }
.review-name{ font: 600 14px/1 "Monoglyphic", system-ui, sans-serif; letter-spacing: .06em; text-transform: uppercase; color: var(--ga-ink); margin: 0; }
.review-name a{ color: inherit; text-decoration: none; border-bottom: 1px solid rgba(25,84,166,.35); }
.review-name a:hover{ border-bottom-color: var(--ga-gold, #1954a6); }
@media (max-width: 900px){ .reviews-grid{ column-count: 2; } }
@media (max-width: 560px){ .reviews-grid{ column-count: 1; } }

.gallery{ background: #fff; color: var(--ga-ink, #141414); }
.gallery-head{ max-width: 1200px; margin: 0 auto clamp(28px, 4vw, 48px); }
.gallery-grid{ max-width: 1200px; margin: 0 auto; column-count: 3; column-gap: 16px; }
.gallery-tile{ break-inside: avoid; margin: 0 0 16px; }
.gallery-tile img, .gallery-ph{ width: 100%; display: block; border-radius: 14px; }
.gallery-ph{ display: grid; place-items: center; color: #fff; font: 700 22px/1 "Monoglyphic", system-ui, sans-serif; background: linear-gradient(135deg, #1954a6, #2466c4); box-shadow: 0 10px 30px rgba(25,84,166,.18); }
@media (max-width: 900px){ .gallery-grid{ column-count: 2; } }
@media (max-width: 767px){ .gallery-grid{ column-count: 1; } }
@media (max-width: 520px){ .gallery-grid{ column-gap: 12px; } .gallery-tile{ margin-bottom: 12px; } }

.reveal{ will-change: transform, opacity, filter; transition: opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1), filter .6s ease; }
.reveal[data-anim]{ opacity: 0; }
.reveal[data-anim="up"]    { transform: translateY(48px); }
.reveal[data-anim="down"]  { transform: translateY(-48px); }
.reveal[data-anim="left"]  { transform: translateX(-64px); }
.reveal[data-anim="right"] { transform: translateX(64px); }
.reveal[data-anim="zoom"]  { transform: scale(.9); }
.reveal[data-anim="rotate"]{ transform: translateY(36px) rotate(-6deg); }
.reveal[data-anim="flip"]  { transform: perspective(900px) rotateY(34deg); }
.reveal[data-anim="blur"]  { filter: blur(8px); }
.reveal.in{ opacity: 1 !important; transform: none !important; filter: none !important; }

.book-section{ background: #f5f7fa; color: var(--ga-ink, #141414); }
.book-inner{ max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 5vw, 64px); align-items: center; }
.book-form{ display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.book-field{ display: flex; flex-direction: column; gap: 6px; }
.book-field--full{ grid-column: 1 / -1; }
.book-field label{ font: 600 11px/1 "Monoglyphic", system-ui, sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #666; }
.book-field input, .book-field textarea{ font: 400 15px/1.4 "Monoglyphic", system-ui, sans-serif; width: 100%; padding: 12px 14px; border: 1px solid var(--ga-line); border-radius: 10px; background: #fff; color: var(--ga-ink); transition: border-color .2s ease, box-shadow .2s ease; }
.book-field input:focus, .book-field textarea:focus{ outline: none; border-color: var(--ga-gold); box-shadow: 0 0 0 3px rgba(25,84,166,.14); }
.book-field textarea{ min-height: 108px; height: 132px; resize: none; }
.book-submit{ grid-column: 1 / -1; justify-self: start; margin-top: 4px; padding: 14px 28px; border: none; border-radius: 999px; cursor: pointer; background: var(--ga-gold); color: #fff; font: 700 14px/1 "Monoglyphic", system-ui, sans-serif; letter-spacing: .1em; text-transform: uppercase; transition: background .2s ease, transform .2s ease; }
.book-submit:hover{ background: var(--ga-gold-2); transform: translateY(-2px); }
.book-status{ grid-column: 1 / -1; margin: 6px 0 0; color: var(--ga-gold); font: 600 14px/1.4 "Monoglyphic", system-ui, sans-serif; }

.ga-select{ position: relative; }
.ga-select__btn{ width: 100%; padding: 12px 14px; border: 1px solid var(--ga-line); border-radius: 10px; background: #fff; color: var(--ga-ink); cursor: pointer; font: 400 15px/1.4 "Monoglyphic", system-ui, sans-serif; display: flex; align-items: center; justify-content: space-between; gap: 10px; transition: border-color .2s ease, box-shadow .2s ease; }
.ga-select__btn:focus-visible, .ga-select[data-open] .ga-select__btn{ outline: none; border-color: var(--ga-gold); box-shadow: 0 0 0 3px rgba(25,84,166,.14); }
.ga-select__label{ color: #9aa0a6; }
.ga-select__btn[data-filled] .ga-select__label{ color: var(--ga-ink); }
.ga-select__chev{ width: 16px; height: 16px; flex: none; color: #666; transition: transform .2s ease; }
.ga-select[data-open] .ga-select__chev{ transform: rotate(180deg); }
.ga-select__list{ position: absolute; left: 0; right: 0; top: calc(100% + 6px); margin: 0; padding: 6px; list-style: none; background: #fff; border: 1px solid var(--ga-line); border-radius: 12px; box-shadow: 0 16px 40px rgba(0,0,0,.14); max-height: 264px; overflow: auto; z-index: 30; opacity: 0; transform: translateY(-6px); pointer-events: none; transition: opacity .18s ease, transform .18s ease; }
.ga-select[data-open] .ga-select__list{ opacity: 1; transform: none; pointer-events: auto; }
.ga-select__opt{ padding: 10px 12px; border-radius: 8px; cursor: pointer; font: 400 15px/1.3 "Monoglyphic", system-ui, sans-serif; color: var(--ga-ink); }
.ga-select__opt:hover, .ga-select__opt[aria-selected="true"]{ background: rgba(25,84,166,.10); color: var(--ga-gold); }

@media (max-width: 767px){
  .hero-track{ height: 320vh; }
  .hero-cards{
    right: auto; left: 50%; transform: translateX(-50%);
    top: calc(var(--ga-header-h, 72px) + 5vh);
    width: min(64vw, 250px);
  }
  .hero-about{ left: 50%; right: auto; transform: translateX(-50%); bottom: 6vh; width: min(88%, 30rem); text-align: center; }
  .about-inner, .book-inner{ grid-template-columns: 1fr; }
  .book-form{ grid-template-columns: 1fr; }
  .media{ min-height: 42vh; order: -1; }
}
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity: 1 !important; transform: none !important; filter: none !important; }
}

:root{
  --bg:#ffffff; --bg-panel:#eef2f8; --fg:#0d0f14; --fg-dim:#5b6472;
  --accent:#1954a6; --accent-2:#2466c4;
  --line:rgba(13,13,15,0.12); --line-bright:rgba(13,13,15,0.22);
  --blue:#1954a6;
}

.hero-wrap{ position:relative; background:radial-gradient(ellipse 120% 80% at 50% 6%, #f4f7fc 0%, var(--bg) 58%); padding:calc(var(--ga-header-h,72px) + clamp(28px,6vw,60px)) clamp(20px,5vw,60px) clamp(52px,7vw,88px); }
.hero-lead{ max-width:1080px; margin:0 auto clamp(26px,4vw,44px); text-align:center; }
.hero-lead h1{ font-family:"Monoglyphic", system-ui, sans-serif; font-weight:700; text-transform:uppercase; letter-spacing:.01em; line-height:.96; font-size:clamp(38px,6.4vw,88px); color:var(--fg); margin:0; }
.hero-lead p{ margin:18px auto 0; max-width:60ch; color:var(--fg-dim); font-size:clamp(14px,1.4vw,17px); line-height:1.6; }

.hero-model{ max-width:1080px; margin:0 auto; }
.sketchfab-embed-wrapper{ position:relative; border-radius:22px; overflow:hidden; background:#0d0f14; box-shadow:0 44px 90px -44px rgba(13,15,20,.5); border:1px solid var(--line-bright); }
.sketchfab-embed-wrapper iframe{ display:block; width:100%; height:min(66vh,600px); border:0; }

.hero-steps{ max-width:1200px; margin:clamp(40px,6vw,72px) auto 0; display:grid; grid-template-columns:repeat(5,1fr); gap:16px; }
.pstep{ background:#fff; border:1px solid var(--line); border-radius:16px; padding:22px 20px; box-shadow:0 22px 44px -34px rgba(13,15,20,.5); }
.pstep .ficon{ width:40px; height:40px; border-radius:50%; background:var(--bg-panel); color:var(--accent); display:flex; align-items:center; justify-content:center; margin-bottom:14px; }
.pstep .ficon svg{ width:20px; height:20px; }
.pstep .snum{ font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:11px; letter-spacing:.16em; color:var(--accent); margin-bottom:10px; }
.pstep h2{ font-family:"Monoglyphic", system-ui, sans-serif; font-weight:700; text-transform:uppercase; font-size:17px; line-height:1.05; letter-spacing:.005em; margin:0 0 8px; color:var(--fg); }
.pstep p{ font-size:12.5px; line-height:1.55; color:var(--fg-dim); margin:0; }
.pstep[data-reveal3d]{ opacity:0; transform:translateY(26px); transition:opacity .6s ease, transform .7s cubic-bezier(.22,1,.36,1); }
.pstep[data-reveal3d].in{ opacity:1; transform:none; }
.pstep:nth-child(2){ transition-delay:.06s; }
.pstep:nth-child(3){ transition-delay:.12s; }
.pstep:nth-child(4){ transition-delay:.18s; }
.pstep:nth-child(5){ transition-delay:.24s; }

@media (max-width:1000px){ .hero-steps{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:767px){
  .sketchfab-embed-wrapper iframe{ height:56vh; }
  .hero-steps{ grid-template-columns:1fr; gap:12px; }
}
@media (prefers-reduced-motion:reduce){ .pstep[data-reveal3d]{ opacity:1; transform:none; transition:none; } }

.services{ position:relative; background:#fff; min-height:100vh; min-height:100dvh; display:flex; align-items:center; justify-content:center; text-align:center; padding:clamp(60px,10vw,100px) clamp(24px,6vw,60px); z-index:2; overflow:hidden; isolation:isolate; }
.services-wipe{ position:absolute; inset:0; background:var(--blue); clip-path:circle(0% at 50% 50%); transition:clip-path 1.1s cubic-bezier(.6,0,.4,1); z-index:0; }
.services.is-visible .services-wipe{ clip-path:circle(160% at 50% 50%); }
.services-burst{ position:absolute; inset:0; background:radial-gradient(ellipse 80% 60% at 50% 50%, rgba(244,200,96,.22) 0%, transparent 65%); opacity:0; transform:scale(.5); transition:opacity 1s ease .25s, transform 1.2s cubic-bezier(.16,1,.3,1) .25s; z-index:1; pointer-events:none; }
.services.is-visible .services-burst{ opacity:1; transform:scale(1); }
.services-inner{ position:relative; z-index:3; }
.services-eyebrow{ font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:clamp(9px,2.2vw,11px); letter-spacing:.2em; color:#bcd2ef; text-transform:uppercase; margin-bottom:20px; display:block; opacity:0; transform:translateY(12px); transition:opacity .6s ease .6s, transform .6s cubic-bezier(.22,1,.36,1) .6s; }
.services.is-visible .services-eyebrow{ opacity:1; transform:translateY(0); }
.services h2{ font-family:"Monoglyphic",system-ui,sans-serif; font-weight:700; font-size:clamp(32px,7vw,72px); line-height:1.04; color:#fff; margin:0; white-space:nowrap; }
@media(max-width:440px){ .services h2{ white-space:normal; } }
.services h2 .word{ display:inline-block; opacity:0; transform:translateY(32px) rotateX(20deg); transition:opacity .65s cubic-bezier(.22,1,.36,1), transform .65s cubic-bezier(.22,1,.36,1); transform-origin:bottom center; perspective:400px; }
.services.is-visible h2 .word{ opacity:1; transform:translateY(0) rotateX(0deg); }
.services h2 .word:nth-child(1){ transition-delay:.7s; }
.services h2 .word:nth-child(2){ transition-delay:.8s; }
.services h2 .word:nth-child(3){ transition-delay:.9s; }
.services-rule{ width:0; height:3px; background:linear-gradient(90deg, transparent, #f4c860 40%, #f4c860 60%, transparent); margin:28px auto 0; border-radius:2px; transition:width .7s cubic-bezier(.22,1,.36,1) 1.1s; }
.services.is-visible .services-rule{ width:min(72px,20vw); }
.services-cta{ margin-top:34px; display:inline-flex; opacity:0; transform:translateY(12px); transition:opacity .6s ease 1.2s, transform .6s cubic-bezier(.22,1,.36,1) 1.2s; }
.services.is-visible .services-cta{ opacity:1; transform:translateY(0); }
.services-cta a{ background:#fff; color:var(--blue); text-decoration:none; padding:14px 26px; border-radius:999px; font:700 14px/1 "Monoglyphic",system-ui,sans-serif; letter-spacing:.08em; text-transform:uppercase; transition:transform .2s ease, background .2s ease; }
.services-cta a:hover{ transform:translateY(-2px); background:#eaf1fb; }

@media(prefers-reduced-motion:reduce){
  .services-wipe,.services-burst,.services-eyebrow,.services h2 .word,.services-rule,.services-inner,.services-cta{ transition:none; opacity:1; transform:none; clip-path:none; filter:none; }
  .services.is-visible .services-wipe{ clip-path:circle(160% at 50% 50%); }
  .services.is-visible h2::after{ animation:none; display:none; }
  .hero-card__inner{ transition:none; }
  .media[data-reveal3d]{ opacity:1; transform:none; transition:none; }
}

.services h2{ position:relative; transform:scale(.965); transition:transform .8s cubic-bezier(.22,1,.36,1) .55s; }
.services.is-visible h2{ transform:scale(1); }
.services h2 .word{ filter:blur(7px); transition:opacity .65s cubic-bezier(.22,1,.36,1), transform .65s cubic-bezier(.22,1,.36,1), filter .65s ease; }
.services.is-visible h2 .word{ filter:blur(0); }
.services-inner::before{
  content:""; position:absolute; left:50%; top:50%; width:min(620px,86vw); aspect-ratio:1 / 1;
  transform:translate(-50%,-50%) scale(.4); border-radius:50%; z-index:-1; pointer-events:none;
  background:radial-gradient(circle, rgba(255,255,255,.22), transparent 62%);
  opacity:0; transition:opacity 1s ease .4s, transform 1.4s cubic-bezier(.16,1,.3,1) .4s;
}
.services.is-visible .services-inner::before{ opacity:1; transform:translate(-50%,-50%) scale(1); }

.media[data-reveal3d]{
  opacity:0;
  transform:perspective(1200px) translateY(50px) rotateX(14deg) scale(.94); transform-origin:center bottom;
  transition:opacity .7s ease, transform .9s cubic-bezier(.22,1,.36,1);
}
.media[data-reveal3d].in{ opacity:1; transform:perspective(1200px) translateY(0) rotateX(0deg) scale(1); }

@media (max-width:767px){
  .hero-card.is-active:hover .hero-card__inner{ transform:none; }
}