/* ==========================================================================
   REDEFINE PHYSIOTHERAPY AND REHAB — Design System v3 (professional theme)
   ========================================================================== */
:root{
  --navy:#0B1E3D;          /* deep indigo-navy — primary dark */
  --navy-deep:#071630;
  --navy-mid:#14315C;
  --ink:#101828;
  --teal:#12B8A6;          /* teal accent */
  --teal-deep:#0C9488;
  --sky:#0EA5E9;            /* sky-blue, paired with teal for gradients */
  --coral:#FF7A59;          /* warm highlight — hotspots, badges */
  --teal-tint:#E8FBF8;
  --base:#F7F9FC;
  --stone:#EEF2F7;
  --grey:#56606F;
  --line:#E2E8F0;
  --white:#FFFFFF;
  --grad-accent: linear-gradient(120deg, var(--teal), var(--sky));
  --grad-navy: linear-gradient(160deg, var(--navy) 0%, var(--navy-mid) 55%, #1B3A66 100%);
  --shadow-soft: 0 20px 50px -20px rgba(11,30,61,0.25);
  --shadow-card: 0 10px 30px -12px rgba(11,30,61,0.18);
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--base);
  color:var(--ink);
  font-family:'Public Sans', sans-serif;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
h1,h2,h3,h4{
  font-family:'Fraunces', serif;
  font-weight:600;
  margin:0;
  letter-spacing:-0.01em;
  color:var(--navy);
}
p{margin:0;}
.mono{font-family:'IBM Plex Mono', monospace; letter-spacing:0.06em; text-transform:uppercase; font-size:12px;}
.wrap{max-width:1200px; margin:0 auto; padding:0 32px;}
section{padding:100px 0;}
@media(max-width:768px){section{padding:64px 0;} .wrap{padding:0 22px;}}

.eyebrow{
  color:var(--teal-deep);
  font-family:'IBM Plex Mono', monospace;
  font-size:12px; letter-spacing:0.14em; text-transform:uppercase;
  display:inline-flex; align-items:center; gap:10px; margin-bottom:18px;
}
.eyebrow::before{content:""; width:22px; height:1px; background:var(--teal); display:inline-block;}
.eyebrow.on-dark{color:#7FE3D6;}
.eyebrow.on-dark::before{background:#7FE3D6;}
.grad-text{background:var(--grad-accent); -webkit-background-clip:text; background-clip:text; color:transparent;}

::selection{background:var(--teal); color:#fff;}
:focus-visible{outline:2px solid var(--teal); outline-offset:2px;}

/* ==========================================================================
   SCROLL PROGRESS BAR
   ========================================================================== */
.scroll-progress{position:fixed; top:0; left:0; height:3px; width:0%; background:var(--grad-accent); z-index:200; transition:width .1s linear;}

/* ==========================================================================
   SCROLL REVEAL SYSTEM
   ========================================================================== */
.reveal{opacity:0; transform:translateY(30px); transition:opacity .85s cubic-bezier(.2,.7,.2,1), transform .85s cubic-bezier(.2,.7,.2,1);}
.reveal.in{opacity:1; transform:translateY(0);}
.reveal-left{opacity:0; transform:translateX(-34px); transition:opacity .85s ease, transform .85s ease;}
.reveal-left.in{opacity:1; transform:translateX(0);}
.reveal-right{opacity:0; transform:translateX(34px); transition:opacity .85s ease, transform .85s ease;}
.reveal-right.in{opacity:1; transform:translateX(0);}
.reveal-scale{opacity:0; transform:scale(0.92); transition:opacity .9s ease, transform .9s ease;}
.reveal-scale.in{opacity:1; transform:scale(1);}
.stagger > *{opacity:0; transform:translateY(22px); transition:opacity .6s ease, transform .6s ease;}
.stagger.in > *{opacity:1; transform:translateY(0);}
.stagger.in > *:nth-child(1){transition-delay:.05s;}
.stagger.in > *:nth-child(2){transition-delay:.14s;}
.stagger.in > *:nth-child(3){transition-delay:.23s;}
.stagger.in > *:nth-child(4){transition-delay:.32s;}
.stagger.in > *:nth-child(5){transition-delay:.41s;}
.stagger.in > *:nth-child(6){transition-delay:.5s;}
.stagger.in > *:nth-child(7){transition-delay:.59s;}
.stagger.in > *:nth-child(8){transition-delay:.68s;}
.stagger.in > *:nth-child(9){transition-delay:.77s;}

/* ---- Sliding stagger variant: cards alternate slide-in from left/right ---- */
.stagger-slide > *{opacity:0; transition:opacity .6s ease, transform .6s cubic-bezier(.2,.7,.2,1);}
.stagger-slide > *:nth-child(odd){transform:translateX(-30px);}
.stagger-slide > *:nth-child(even){transform:translateX(30px);}
.stagger-slide.in > *{opacity:1; transform:translateX(0);}
.stagger-slide.in > *:nth-child(1){transition-delay:.05s;}
.stagger-slide.in > *:nth-child(2){transition-delay:.13s;}
.stagger-slide.in > *:nth-child(3){transition-delay:.21s;}
.stagger-slide.in > *:nth-child(4){transition-delay:.29s;}
.stagger-slide.in > *:nth-child(5){transition-delay:.37s;}
.stagger-slide.in > *:nth-child(6){transition-delay:.45s;}
.stagger-slide.in > *:nth-child(7){transition-delay:.53s;}
.stagger-slide.in > *:nth-child(8){transition-delay:.61s;}
.stagger-slide.in > *:nth-child(9){transition-delay:.69s;}
.stagger-slide.in > *:nth-child(10){transition-delay:.77s;}

@media (prefers-reduced-motion: reduce){
  .reveal,.reveal-left,.reveal-right,.reveal-scale,.stagger>*,.stagger-slide>*{opacity:1!important; transform:none!important; transition:none!important;}
  html{scroll-behavior:auto;}
}

/* ---- Mobile: shorter, snappier durations so animations feel smooth, not sluggish ---- */
@media(max-width:600px){
  .reveal,.reveal-left,.reveal-right{transition-duration:.55s!important; transform:translateY(20px)!important;}
  .reveal-left{transform:translateX(-20px)!important;}
  .reveal-right{transform:translateX(20px)!important;}
  .reveal-scale{transition-duration:.55s!important;}
  .stagger > *, .stagger-slide > *{transition-duration:.45s!important;}
  .stagger-slide > *:nth-child(odd){transform:translateX(-18px);}
  .stagger-slide > *:nth-child(even){transform:translateX(18px);}
  .img-reveal img{transition-duration:.7s!important;}
  .img-reveal::after{transition-duration:.6s!important;}
}

.img-reveal{position:relative; overflow:hidden;}
.img-reveal img{transform:scale(1.14); transition:transform 1.2s cubic-bezier(.2,.7,.2,1);}
.img-reveal::after{content:""; position:absolute; inset:0; background:var(--grad-accent); z-index:2; transform-origin:left; transform:scaleX(1); transition:transform .9s cubic-bezier(.76,0,.24,1);}
.img-reveal.in::after{transform:scaleX(0);}
.img-reveal.in img{transform:scale(1);}

/* ==========================================================================
   HERO WORD REVEAL (opening sequence)
   ========================================================================== */
.word-reveal{overflow:hidden; display:inline-block; vertical-align:top;}
.word-reveal span{display:inline-block; transform:translateY(115%); opacity:0; animation:wordUp .9s cubic-bezier(.2,.8,.2,1) forwards;}
@keyframes wordUp{to{transform:translateY(0); opacity:1;}}
.fade-in-up{opacity:0; transform:translateY(18px); animation:fadeInUp .9s cubic-bezier(.2,.8,.2,1) forwards;}
@keyframes fadeInUp{to{opacity:1; transform:translateY(0);}}
@media (prefers-reduced-motion: reduce){
  .word-reveal span{animation:none; transform:none; opacity:1;}
  .fade-in-up{animation:none; opacity:1; transform:none;}
}

/* ==========================================================================
   CURSOR DOT
   ========================================================================== */
.cursor-dot{
  position:fixed; width:9px; height:9px; border-radius:50%;
  background:var(--teal); pointer-events:none; z-index:9998;
  transform:translate(-50%,-50%); transition:width .2s ease, height .2s ease, background .2s ease, opacity .3s ease;
  mix-blend-mode:difference; opacity:0;
}
.cursor-dot.active{opacity:1;}
.cursor-dot.grow{width:38px; height:38px; background:rgba(18,184,166,0.45);}
@media(max-width:900px){.cursor-dot{display:none;}}

/* ==========================================================================
   MAGNETIC BUTTON
   ========================================================================== */
.magnetic{display:inline-block; will-change:transform;}
.magnetic .btn{transition:transform .18s ease, background .25s ease, border-color .25s ease, box-shadow .25s ease;}

/* ==========================================================================
   NAV
   ========================================================================== */
header{
  position:fixed; top:0; left:0; right:0; z-index:100;
  background:rgba(247,249,252,0.85);
  backdrop-filter:blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color .3s ease, background .3s ease;
}
header.scrolled{border-bottom:1px solid var(--line); background:rgba(247,249,252,0.96); box-shadow:0 8px 24px -18px rgba(11,30,61,0.3);}
nav{display:flex; align-items:center; justify-content:space-between; padding:14px 32px; max-width:1200px; margin:0 auto;}
.brand{display:flex; align-items:center; gap:10px;}
.brand img{height:34px; width:auto; border-radius:4px;}
.nav-links{display:flex; gap:28px; align-items:center;}
.nav-links a{font-size:13.6px; font-weight:500; color:var(--ink); position:relative; padding:4px 0;}
.nav-links a::after{content:""; position:absolute; left:0; bottom:0; width:0; height:2px; background:var(--grad-accent); border-radius:2px; transition:width .25s ease;}
.nav-links a:hover::after, .nav-links a.active::after{width:100%;}
.nav-cta{background:var(--grad-accent); color:#fff !important; padding:11px 22px; font-size:13.5px; font-weight:600; border-radius:6px; box-shadow:0 8px 20px -8px rgba(18,184,166,0.55);}
.nav-cta::after{display:none;}
.nav-cta:hover{filter:brightness(1.06); transform:translateY(-1px);}
.hamburger{display:flex; flex-direction:column; gap:5px; cursor:pointer; z-index:120; background:none; border:none; padding:6px;}
.hamburger span{width:24px; height:2px; background:var(--navy); display:block; transition:.3s;}
.hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.hamburger.open span:nth-child(2){opacity:0;}
.hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
.mobile-menu{
  display:none; position:fixed; inset:0; background:var(--grad-navy); z-index:110;
  flex-direction:column; align-items:flex-start; justify-content:center; padding:0 40px;
  transform:translateY(-100%); transition:transform .45s cubic-bezier(.76,0,.24,1);
}
.mobile-menu.open{transform:translateY(0);}
.mobile-menu a{color:#fff; font-family:'Fraunces',serif; font-size:26px; margin:10px 0; font-weight:500; opacity:0; transform:translateY(14px); transition:opacity .5s ease, transform .5s ease;}
.mobile-menu.open a{opacity:1; transform:translateY(0);}
.mobile-menu.open a:nth-child(1){transition-delay:.06s;}
.mobile-menu.open a:nth-child(2){transition-delay:.11s;}
.mobile-menu.open a:nth-child(3){transition-delay:.16s;}
.mobile-menu.open a:nth-child(4){transition-delay:.21s;}
.mobile-menu.open a:nth-child(5){transition-delay:.26s;}
.mobile-menu.open a:nth-child(6){transition-delay:.31s;}
.mobile-menu.open a:nth-child(7){transition-delay:.36s;}
.mobile-menu .nav-cta{margin-top:18px; display:inline-block;}
.mobile-header-actions{display:none; align-items:center; gap:10px;}
.mobile-nav-cta{padding:9px 16px; font-size:12.5px; white-space:nowrap;}
@media(max-width:900px){.nav-links{display:none;} .mobile-header-actions{display:flex;} .mobile-menu{display:flex;}}

/* ==========================================================================
   BUTTONS
   ========================================================================== */
.btn{display:inline-flex; align-items:center; gap:8px; padding:15px 27px; font-size:14.5px; font-weight:600; border-radius:6px; border:1px solid transparent; cursor:pointer; font-family:'Public Sans', sans-serif;}
.btn-primary{background:var(--grad-accent); color:#fff; box-shadow:0 12px 28px -10px rgba(18,184,166,0.55);}
.btn-primary:hover{filter:brightness(1.05); transform:translateY(-1px);}
.btn-ghost{border-color:rgba(255,255,255,0.35); color:#fff;}
.btn-ghost:hover{border-color:#fff; background:rgba(255,255,255,0.08);}
.btn-ghost-dark{border-color:rgba(11,30,61,0.25); color:var(--navy);}
.btn-ghost-dark:hover{border-color:var(--navy); background:rgba(11,30,61,0.04);}
.btn-dark{background:var(--navy); color:#fff;}
.btn-dark:hover{background:var(--navy-mid);}

/* ==========================================================================
   GLASS / ELEVATED CARDS
   ========================================================================== */
.glass-card{
  background:rgba(255,255,255,0.06);
  border:1px solid rgba(255,255,255,0.14);
  backdrop-filter:blur(10px);
  border-radius:10px;
}
.elevated-card{background:#fff; border:1px solid var(--line); border-radius:10px; box-shadow:var(--shadow-card); transition:transform .3s ease, box-shadow .3s ease;}
.elevated-card:hover{transform:translateY(-4px); box-shadow:var(--shadow-soft);}

/* ==========================================================================
   GONIOMETER MOTIF + PARALLAX
   ========================================================================== */
.goniometer{position:absolute; z-index:1; pointer-events:none; will-change:transform;}
.arc-dot{animation:arcmove 5s ease-in-out infinite; transform-origin:170px 170px;}
@keyframes arcmove{0%{transform:rotate(0deg);}50%{transform:rotate(150deg);}100%{transform:rotate(0deg);}}
@media (prefers-reduced-motion: reduce){.arc-dot{animation:none;}}

/* ==========================================================================
   TRUST STRIP
   ========================================================================== */
.trust-strip{background:var(--navy-deep); padding:26px 0;}
.trust-strip .wrap{display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:20px;}
.trust-item{display:flex; align-items:center; gap:12px; color:#D7E3F0;}
.trust-item .ti-num{font-family:'Fraunces',serif; font-weight:600; font-size:22px; color:#fff;}
.trust-item .ti-lbl{font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:#8FA3BE;}
.trust-item svg{flex-shrink:0;}
@media(max-width:800px){.trust-strip .wrap{justify-content:center; gap:26px 34px;}}

/* ==========================================================================
   PHOTO GALLERY
   ========================================================================== */
.gallery-grid{display:grid; gap:14px; grid-template-columns:1.4fr 1fr 1fr; grid-template-rows:220px 220px; grid-template-areas:"a b c" "a d e";}
.gallery-item{position:relative; overflow:hidden; border-radius:10px; box-shadow:var(--shadow-card);}
.gallery-item img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .6s cubic-bezier(.2,.7,.2,1);}
.gallery-item:hover img{transform:scale(1.06);}
.gallery-item .cap{position:absolute; left:0; right:0; bottom:0; padding:16px 18px; background:linear-gradient(0deg, rgba(7,22,48,0.85), transparent); color:#fff; font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.06em; text-transform:uppercase; opacity:0; transform:translateY(8px); transition:opacity .3s ease, transform .3s ease;}
.gallery-item:hover .cap{opacity:1; transform:translateY(0);}
.gallery-item.area-a{grid-area:a;} .gallery-item.area-b{grid-area:b;} .gallery-item.area-c{grid-area:c;} .gallery-item.area-d{grid-area:d;} .gallery-item.area-e{grid-area:e;}
@media(max-width:900px){.gallery-grid{grid-template-columns:1fr 1fr; grid-template-rows:200px 160px 160px; grid-template-areas:"a a" "b c" "d e";}}
@media(max-width:560px){.gallery-grid{grid-template-columns:1fr; grid-template-rows:220px 200px 200px 200px 200px; grid-template-areas:"a" "b" "c" "d" "e";}}

/* ==========================================================================
   3D MODEL + HOTSPOTS
   ========================================================================== */
.model-frame{border-radius:14px; border:1px solid rgba(255,255,255,0.14); background:radial-gradient(circle at 30% 20%, #0F2A52, #071022 70%); position:relative; width:100%; max-width:520px; margin:0 auto; aspect-ratio:3/4; min-height:460px; overflow:hidden; box-shadow:var(--shadow-soft);}
.model-frame iframe, .model-frame model-viewer{width:100%; height:100%; border:0; display:block; position:relative; z-index:1;}
.model-frame model-viewer::part(default-progress-bar){display:none;}
@media(max-width:600px){.model-frame{aspect-ratio:3/4; min-height:400px; max-width:100%;}}
.model-info-btn{
  position:absolute; top:14px; right:14px; z-index:5; width:34px; height:34px; border-radius:50%;
  background:rgba(7,22,48,0.7); border:1.5px solid rgba(255,255,255,0.35); color:#fff;
  font-family:'Fraunces',serif; font-style:italic; font-weight:600; font-size:16px; cursor:pointer;
  display:flex; align-items:center; justify-content:center; transition:background .2s ease, border-color .2s ease, transform .2s ease;
}
.model-info-btn:hover{background:var(--grad-accent); border-color:transparent; transform:scale(1.06);}
.model-desc{color:#B9C6D6; font-size:13.8px; margin-top:16px; max-width:560px;}
.model-loading{
  position:absolute; inset:0; z-index:0; display:flex; align-items:center; justify-content:center;
  transition:opacity .3s ease;
}
.model-loading span{
  width:34px; height:34px; border-radius:50%; border:2.5px solid rgba(127,227,214,0.25); border-top-color:#7FE3D6;
  animation:spin 0.9s linear infinite;
}
.model-loading.hide{opacity:0; pointer-events:none;}
@keyframes spin{to{transform:rotate(360deg);}}
.hotspot{
  background:var(--coral); width:16px; height:16px; border-radius:50%;
  border:2.5px solid #fff; box-shadow:0 0 0 4px rgba(255,122,89,0.28);
  cursor:pointer; animation:hpulse 2.2s ease-in-out infinite;
  padding:0; position:relative;
}
@keyframes hpulse{0%,100%{box-shadow:0 0 0 4px rgba(255,122,89,0.28);}50%{box-shadow:0 0 0 10px rgba(255,122,89,0.06);}}
.hotspot-label{
  position:absolute; left:22px; top:50%; transform:translateY(-50%); white-space:nowrap;
  background:rgba(7,22,48,0.96); color:#fff; font-family:'IBM Plex Mono',monospace; font-size:11.5px;
  padding:8px 12px; border-radius:6px; border:1px solid rgba(255,255,255,0.18);
  opacity:0; visibility:hidden; pointer-events:none; transition:opacity .2s ease;
}
.hotspot.show .hotspot-label{opacity:1; visibility:visible; pointer-events:auto;}
.hotspot-label a{color:#7FE3D6; border-bottom:1px solid rgba(127,227,214,0.4);}
.model-legend{display:flex; flex-wrap:wrap; gap:10px; margin-top:18px;}
.model-legend a{display:inline-flex; align-items:center; gap:8px; border:1px solid rgba(255,255,255,0.18); border-radius:20px; padding:8px 14px; font-size:12.5px; color:#D7E3F0;}
.model-legend a:hover{border-color:var(--coral); color:#fff;}
.model-legend .dotc{width:8px; height:8px; border-radius:50%; background:var(--coral);}
.model-credit{margin-top:16px; font-family:'IBM Plex Mono',monospace; font-size:11.5px; color:#8FA3BE;}
.model-credit a{border-bottom:1px solid rgba(143,163,190,0.4);}
.model-credit a:hover{color:#7FE3D6; border-color:#7FE3D6;}

/* ==========================================================================
   FAQ ACCORDION
   ========================================================================== */
.faq-list{border-top:1px solid var(--line);}
.faq-item{border-bottom:1px solid var(--line);}
.faq-q{width:100%; text-align:left; background:none; border:none; padding:24px 4px; display:flex; justify-content:space-between; align-items:center; gap:20px; cursor:pointer; font-family:'Fraunces',serif; font-size:17px; font-weight:600; color:var(--navy);}
.faq-q .plus{font-family:'IBM Plex Mono',monospace; font-size:18px; color:var(--teal-deep); transition:transform .3s ease; flex-shrink:0;}
.faq-item.open .faq-q .plus{transform:rotate(45deg);}
.faq-a{max-height:0; overflow:hidden; transition:max-height .4s ease;}
.faq-a p{color:var(--grey); font-size:14.6px; padding:0 4px 22px; max-width:640px;}

/* ==========================================================================
   FIRST VISIT STEPS
   ========================================================================== */
.visit-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:10px; overflow:hidden; margin-top:48px;}
.visit-card{background:var(--base); padding:32px 28px;}
.visit-card .vn{font-family:'Fraunces',serif; font-size:34px; font-weight:600; background:var(--grad-accent); -webkit-background-clip:text; background-clip:text; color:transparent; margin-bottom:12px;}
.visit-card h4{font-size:17px; margin-bottom:8px;}
.visit-card p{color:var(--grey); font-size:13.8px;}
@media(max-width:800px){.visit-grid{grid-template-columns:1fr;}}

/* ==========================================================================
   MODAL (click-to-expand details)
   ========================================================================== */
.modal-overlay{
  position:fixed; inset:0; background:rgba(7,22,48,0.72); backdrop-filter:blur(4px);
  z-index:300; display:flex; align-items:center; justify-content:center; padding:24px;
  opacity:0; pointer-events:none; transition:opacity .3s ease;
}
.modal-overlay.open{opacity:1; pointer-events:all;}
.modal-box{
  background:#fff; border-radius:14px; max-width:560px; width:100%; max-height:85vh; overflow-y:auto;
  padding:38px; position:relative; box-shadow:0 30px 70px -20px rgba(7,22,48,0.5);
  transform:translateY(18px) scale(0.97); transition:transform .3s cubic-bezier(.2,.8,.2,1);
}
.modal-overlay.open .modal-box{transform:translateY(0) scale(1);}
.modal-close{
  position:absolute; top:18px; right:18px; width:34px; height:34px; border-radius:50%;
  border:1px solid var(--line); background:var(--base); display:flex; align-items:center; justify-content:center;
  cursor:pointer; font-size:18px; color:var(--grey); line-height:1;
}
.modal-close:hover{background:var(--stone); color:var(--navy);}
.modal-eyebrow{font-family:'IBM Plex Mono',monospace; font-size:11.5px; color:var(--teal-deep); text-transform:uppercase; letter-spacing:.08em; margin-bottom:10px;}
.modal-box h3{font-size:24px; margin-bottom:16px; padding-right:30px;}
.modal-box img{width:100%; border-radius:10px; margin-bottom:20px;}
.modal-box p{color:var(--grey); font-size:14.8px; margin-bottom:12px;}
.modal-box p:last-child{margin-bottom:0;}
.modal-box .modal-tags{display:flex; flex-wrap:wrap; gap:8px; margin-top:18px;}
.modal-box .modal-tags span{border:1px solid var(--line); border-radius:16px; padding:6px 12px; font-size:12px; color:var(--grey);}

/* clickable cue on cards */
.service-card, .gallery-item, .photo-card{cursor:pointer;}
.service-card .click-hint{font-family:'IBM Plex Mono',monospace; font-size:10.5px; color:var(--teal-deep); text-transform:uppercase; letter-spacing:.06em; margin-top:14px; opacity:0; transition:opacity .2s ease;}
.service-card:hover .click-hint{opacity:1;}

/* ==========================================================================
   FACILITY & CARE PHOTO SECTION (always-visible details)
   ========================================================================== */
.photo-details{background:var(--stone);}
.photo-details-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:22px; margin-top:48px;}
.photo-card{background:#fff; border-radius:12px; overflow:hidden; box-shadow:var(--shadow-card); transition:transform .3s ease, box-shadow .3s ease;}
.photo-card:hover{transform:translateY(-5px); box-shadow:var(--shadow-soft);}
.photo-card .pc-img{position:relative; overflow:hidden; aspect-ratio:4/3;}
.photo-card .pc-img img{width:100%; height:100%; object-fit:cover; transition:transform .5s ease;}
.photo-card:hover .pc-img img{transform:scale(1.05);}
.photo-card .pc-body{padding:18px 20px 22px;}
.photo-card .pc-tag{font-family:'IBM Plex Mono',monospace; font-size:10.5px; color:var(--teal-deep); text-transform:uppercase; letter-spacing:.06em; margin-bottom:8px;}
.photo-card h4{font-size:16px; margin-bottom:8px;}
.photo-card p{color:var(--grey); font-size:13.2px; margin:0;}
@media(max-width:900px){.photo-details-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:560px){.photo-details-grid{grid-template-columns:1fr;}}
/* ==========================================================================
   FIXED BOTTOM CTA BAR
   ========================================================================== */
.sticky-cta-bar{
  position:fixed; left:0; right:0; bottom:0; z-index:250;
  display:flex; gap:0;
  background:#fff; border-top:1px solid var(--line);
  box-shadow:0 -8px 24px -12px rgba(11,30,61,0.25);
  padding:10px 10px calc(10px + env(safe-area-inset-bottom, 0px));
  gap:10px;
}
.sticky-cta-btn{
  flex:1; display:flex; align-items:center; justify-content:center; gap:8px;
  padding:13px 10px; border-radius:8px; font-size:14.5px; font-weight:600;
  font-family:'Public Sans', sans-serif; transition:transform .15s ease, filter .2s ease;
}
.sticky-cta-btn:active{transform:scale(0.97);}
.sticky-cta-btn svg{width:19px; height:19px; flex-shrink:0;}
.sticky-cta-btn.call{background:var(--grad-accent); color:#fff;}
.sticky-cta-btn.call:hover{filter:brightness(1.06);}
.sticky-cta-btn.whatsapp{background:#25D366; color:#fff;}
.sticky-cta-btn.whatsapp:hover{filter:brightness(1.06);}
body{padding-bottom:66px;}
@media(min-width:900px){
  .sticky-cta-bar{justify-content:center; padding:12px 16px;}
  .sticky-cta-btn{flex:none; width:220px; padding:13px 22px;}
  body{padding-bottom:70px;}
}

.counter{font-family:'Fraunces',serif; font-weight:600;}

/* ==========================================================================
   FOOTER
   ========================================================================== */
footer{background:var(--navy-deep); border-top:1px solid rgba(255,255,255,0.1); color:#B9C6D6; padding:48px 0 28px;}
.foot-wrap{display:flex; justify-content:space-between; align-items:flex-start; flex-wrap:wrap; gap:28px;}
.foot-brand img{height:28px;}
.foot-col h5{font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:#7FE3D6; margin-bottom:14px; font-weight:500;}
.foot-links{display:flex; flex-direction:column; gap:10px;}
.foot-links a{font-size:13.5px; color:#B9C6D6; width:fit-content;}
.foot-links a:hover{color:#7FE3D6;}
.foot-bottom{margin-top:36px; padding-top:22px; border-top:1px solid rgba(255,255,255,0.08); display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; font-size:12.5px; color:#6B7F99;}
@media(max-width:600px){.foot-wrap{flex-direction:column;}}

/* ==========================================================================
   PAGE-SPECIFIC STYLES (merged from former inline <style> block)
   ========================================================================== */
  /* ---- HERO ---- */
  .hero{position:relative; background:var(--navy-deep); color:#fff; padding:170px 0 100px; overflow:hidden;}
  .hero .wrap{display:grid; grid-template-columns:1.15fr 0.85fr; gap:60px; align-items:center; position:relative; z-index:2;}
  .hero h1{color:#fff; font-size:clamp(34px,5vw,58px); line-height:1.06; font-weight:600;}
  .hero h1 em{font-style:normal; color:#7FE3D6;}
  .hero p.lead{color:#B9C6D6; font-size:18px; max-width:480px; margin:26px 0 34px;}
  .hero-ctas{display:flex; gap:14px; flex-wrap:wrap;}
  .hero-cred{margin-top:44px; display:flex; gap:28px; flex-wrap:wrap;}
  .hero-cred div{border-left:1px solid rgba(255,255,255,0.22); padding-left:14px;}
  .hero-cred .num{font-size:22px; color:#fff;}
  .hero-cred .lbl{font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:#8FA3BE; margin-top:2px;}
  .hero-visual{position:relative;}
  .hero-portrait-frame{position:relative; border:1px solid rgba(242,164,136,0.35); padding:18px; background:rgba(255,255,255,0.02);}
  .hero-portrait-frame img{width:100%; height:auto; filter:grayscale(8%) contrast(1.03);}
  .hero .goniometer.g1{top:-60px; right:-90px; width:340px; opacity:0.5;}
  .hero .goniometer.g2{bottom:-100px; left:-140px; width:420px; opacity:0.28;}
  .scroll-cue{position:absolute; bottom:26px; left:50%; transform:translateX(-50%); display:flex; flex-direction:column; align-items:center; gap:8px; z-index:2;}
  .scroll-cue span{font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:#8FA3BE;}
  .scroll-cue .line{width:1px; height:34px; background:linear-gradient(#7FE3D6, transparent); animation:scrolldown 1.8s ease-in-out infinite;}
  @keyframes scrolldown{0%{transform:scaleY(0); transform-origin:top;}50%{transform:scaleY(1); transform-origin:top;}50.1%{transform-origin:bottom;}100%{transform:scaleY(0); transform-origin:bottom;}}
  @media(max-width:900px){
    .hero .wrap{grid-template-columns:1fr; text-align:left;}
    .hero{padding:130px 0 70px;}
    .hero-visual{max-width:340px;}
    .hero .goniometer.g2{display:none;}
    .scroll-cue{display:none;}
  }

  /* ---- INTRO ---- */
  .intro{background:var(--base); border-bottom:1px solid var(--line);}
  .intro .wrap{display:grid; grid-template-columns:0.9fr 1.1fr; gap:60px; align-items:center;}
  .intro h2{font-size:clamp(24px,3vw,34px); line-height:1.2;}
  .intro p{color:var(--grey); margin-top:16px; font-size:15.5px; max-width:480px;}
  .quad{display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); border:1px solid var(--line);}
  .quad div{background:var(--base); padding:24px 22px;}
  .quad .deg{font-family:'IBM Plex Mono',monospace; color:var(--teal-deep); font-size:11.5px; margin-bottom:8px;}
  .quad h4{font-size:16px; margin-bottom:6px;}
  .quad p{color:var(--grey); font-size:13.3px; margin:0; max-width:none;}
  @media(max-width:900px){.intro .wrap{grid-template-columns:1fr; gap:32px;} .quad{grid-template-columns:1fr;}}

  /* ---- MINI QUICK-CONTACT FORM ---- */
  .mini-form-section{background:var(--stone); border-bottom:1px solid var(--line);}
  .mini-form-box{max-width:640px; margin:0 auto; background:#fff; border:1px solid var(--line); border-radius:14px; padding:36px 34px; box-shadow:var(--shadow-card); text-align:center;}
  .mini-form-box h3{font-size:clamp(20px,2.4vw,24px); margin-bottom:8px;}
  .mini-form-box p{color:var(--grey); font-size:14px; margin-bottom:24px;}
  .mini-form-row{display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px;}
  .mini-form-row input{width:100%; border:1px solid var(--line); background:var(--base); padding:13px 14px; font-family:'Public Sans',sans-serif; font-size:14.5px; color:var(--ink); border-radius:6px; transition:border-color .2s ease;}
  .mini-form-row input:focus{outline:none; border-color:var(--teal);}
  .mini-form-box .btn{width:100%; justify-content:center; margin-top:16px;}
  @media(max-width:700px){.mini-form-row{grid-template-columns:1fr;}}

  /* ---- GALLERY ---- */
  .gallery{background:var(--stone);}
  .gallery-head{display:flex; justify-content:space-between; align-items:flex-end; gap:20px; flex-wrap:wrap;}
  .gallery-head h2{font-size:clamp(26px,3.4vw,38px); max-width:560px;}
  .gallery-head p{color:var(--grey); max-width:340px; font-size:15px;}

  /* ---- SERVICES ---- */
  .services{background:var(--base);}
  .fg-head{display:flex; justify-content:space-between; align-items:flex-end; gap:20px; flex-wrap:wrap;}
  .fg-head h2{font-size:clamp(26px,3.4vw,38px); max-width:560px;}
  .fg-head p{color:var(--grey); max-width:340px; font-size:15px;}
  .service-grid{margin-top:50px; display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); border-left:1px solid var(--line);}
  .service-card{border-right:1px solid var(--line); border-bottom:1px solid var(--line); padding:34px 28px; background:var(--base); transition:background .25s ease; min-height:210px; display:flex; flex-direction:column; justify-content:space-between;}
  .service-card:hover{background:var(--teal-tint);}
  .service-card .icon{width:32px; height:32px;}
  .service-card .idx{font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--teal-deep); margin-top:20px; display:block;}
  .service-card h3{font-size:18px; margin-top:10px; font-weight:600;}
  .service-card p{color:var(--grey); font-size:13.8px; margin-top:8px; margin-bottom:0;}
  @media(max-width:900px){.service-grid{grid-template-columns:1fr 1fr;}}
  @media(max-width:560px){.service-grid{grid-template-columns:1fr;}}

  /* ---- PROCESS ---- */
  .process{background:var(--navy-deep); color:#fff; position:relative; overflow:hidden;}
  .process h2{color:#fff; font-size:clamp(26px,3.4vw,38px); max-width:560px;}
  .process p.pintro{color:#B9C6D6; max-width:500px; margin-top:16px; font-size:15.3px;}
  .steps-row{display:grid; grid-template-columns:repeat(4,1fr); gap:0; position:relative; margin-top:56px;}
  .steps-row::before{content:""; position:absolute; top:9px; left:0; right:0; height:1px; background:rgba(255,255,255,0.16);}
  .step{padding-right:24px; position:relative;}
  .step .dot{width:18px; height:18px; border-radius:50%; background:var(--navy-deep); border:2px solid #7FE3D6; position:relative; z-index:2; margin-bottom:22px;}
  .step .deg{font-family:'IBM Plex Mono',monospace; font-size:11.5px; color:#7FE3D6; letter-spacing:.06em;}
  .step h4{color:#fff; font-size:18px; margin-top:8px;}
  .step p{color:#B9C6D6; font-size:13.6px; margin-top:8px;}
  @media(max-width:800px){.steps-row{grid-template-columns:1fr; gap:34px;} .steps-row::before{display:none;}}

  /* ---- GROUPS ---- */
  .groups{background:var(--stone);}
  .groups h2{font-size:clamp(26px,3.2vw,36px); max-width:560px;}
  .groups p.intro{color:var(--grey); max-width:520px; margin-top:16px; font-size:15.3px;}
  .group-list{margin-top:48px; display:flex; flex-direction:column;}
  .group-row{display:grid; grid-template-columns:220px 1fr; gap:30px; padding:26px 0; border-top:1px solid var(--line);}
  .group-list .group-row:last-child{border-bottom:1px solid var(--line);}
  .group-row .glabel{font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--teal-deep); text-transform:uppercase; letter-spacing:.06em; padding-top:4px;}
  .group-row .gitems{display:flex; flex-wrap:wrap; gap:10px;}
  .group-row .gitems span{border:1px solid var(--line); padding:8px 14px; font-size:13.5px; background:var(--base);}
  @media(max-width:700px){.group-row{grid-template-columns:1fr; gap:12px;}}

  /* ---- DOCTOR ---- */
  .doctor-full{background:var(--base);}
  .doctor-full .wrap{display:grid; grid-template-columns:0.55fr 1.45fr; gap:64px; align-items:center;}
  .doctor-full .img-reveal img{width:100%; border:1px solid var(--line);}
  .doctor-full h2{font-size:clamp(26px,3vw,36px);}
  .doctor-full .role{color:var(--teal-deep); font-family:'IBM Plex Mono',monospace; font-size:13px; letter-spacing:.06em; margin-top:10px; text-transform:uppercase;}
  .doctor-full .creds{display:flex; gap:10px; flex-wrap:wrap; margin-top:20px;}
  .doctor-full .creds span{border:1px solid var(--line); padding:7px 14px; font-size:12.5px; font-family:'IBM Plex Mono',monospace; color:var(--grey);}
  .doctor-full p.bio{color:var(--grey); margin-top:24px; max-width:640px; font-size:15.4px;}
  .doctor-full p.bio + p.bio{margin-top:14px;}
  @media(max-width:900px){.doctor-full .wrap{grid-template-columns:1fr; gap:32px;} .doctor-full .img-reveal{max-width:260px;}}

  /* ---- INSTAGRAM BADGE ---- */
  .ig-badge{
    display:inline-flex; align-items:center; gap:9px; margin-top:22px;
    background:linear-gradient(135deg,#f9ce34,#ee2a7b 55%,#6228d7); color:#fff;
    padding:11px 20px; border-radius:24px; font-size:13.5px; font-weight:600;
    box-shadow:0 10px 24px -10px rgba(238,42,123,0.5); transition:transform .2s ease, box-shadow .2s ease;
  }
  .ig-badge:hover{transform:translateY(-2px); box-shadow:0 14px 30px -10px rgba(238,42,123,0.6);}
  .ig-badge svg{width:18px; height:18px; flex-shrink:0;}
  .ig-badge.on-light{color:#fff;}
  .fb-badge{
    display:inline-flex; align-items:center; gap:9px;
    background:#1877F2; color:#fff;
    padding:11px 20px; border-radius:24px; font-size:13.5px; font-weight:600;
    box-shadow:0 10px 24px -10px rgba(24,119,242,0.5); transition:transform .2s ease, box-shadow .2s ease;
  }
  .fb-badge:hover{transform:translateY(-2px); box-shadow:0 14px 30px -10px rgba(24,119,242,0.6);}
  .fb-badge svg{width:18px; height:18px; flex-shrink:0;}

  /* ---- TESTIMONIALS ---- */
  .testimonials{background:var(--stone);}
  .test-head{display:flex; justify-content:space-between; align-items:flex-end; gap:20px; flex-wrap:wrap;}
  .test-head h2{font-size:clamp(26px,3.4vw,38px); max-width:560px;}
  .test-head .test-badge{
    display:flex; align-items:center; gap:8px; background:#fff; border:1px solid var(--line);
    border-radius:10px; padding:10px 16px; box-shadow:var(--shadow-card);
  }
  .test-badge .stars{color:#F5A623; font-size:14px; letter-spacing:1px;}
  .test-badge .num{font-family:'Fraunces',serif; font-weight:600; font-size:16px; color:var(--navy);}
  .test-badge .lbl{font-size:11.5px; color:var(--grey);}
  .test-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:22px; margin-top:48px;}
  .test-card{background:#fff; border:1px solid var(--line); border-radius:12px; padding:28px 26px; box-shadow:var(--shadow-card); transition:transform .3s ease, box-shadow .3s ease;}
  .test-card:hover{transform:translateY(-4px); box-shadow:var(--shadow-soft);}
  .test-card .stars{color:#F5A623; font-size:14px; letter-spacing:1px; margin-bottom:14px;}
  .test-card p{color:var(--ink); font-size:14.6px; line-height:1.65;}
  .test-card .meta{display:flex; justify-content:space-between; align-items:center; margin-top:18px; padding-top:16px; border-top:1px solid var(--line);}
  .test-card .who{font-family:'Fraunces',serif; font-weight:600; font-size:14.5px; color:var(--navy);}
  .test-card .when{font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--grey); text-transform:uppercase;}
  @media(max-width:800px){.test-grid{grid-template-columns:1fr;}}

  /* ---- 3D MODEL ---- */
  .model-section{background:var(--navy-deep); color:#fff;}
  .model-section h2{color:#fff; font-size:clamp(26px,3.2vw,36px); max-width:560px;}
  .model-section p.intro{color:#B9C6D6; max-width:520px; margin-top:16px; font-size:15.3px;}
  .model-section .wrap > .reveal-scale{margin-top:46px;}

  /* ---- WHY / IN PRACTICE ---- */
  .approach-note{background:var(--stone);}
  .approach-note .wrap{display:flex; gap:60px; flex-wrap:wrap; justify-content:space-between; align-items:flex-start;}
  .approach-note h2{font-size:clamp(24px,3vw,32px); max-width:440px;}
  .approach-note .points{max-width:480px;}
  .approach-note .point{display:flex; gap:16px; padding:18px 0; border-top:1px solid var(--line);}
  .approach-note .point:last-child{border-bottom:1px solid var(--line);}
  .approach-note .point .n{font-family:'IBM Plex Mono',monospace; color:var(--teal-deep); font-size:13px; padding-top:2px;}
  .approach-note .point h5{font-family:'Fraunces',serif; font-weight:600; font-size:16px; margin-bottom:6px;}
  .approach-note .point p{color:var(--grey); font-size:14px; margin:0;}

  /* ---- CONTACT ---- */
  .info-cards{background:var(--base);}
  .info-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line);}
  .info-card{background:var(--base); padding:34px 28px;}
  .info-card .lbl{font-family:'IBM Plex Mono',monospace; font-size:11.5px; color:var(--teal-deep); text-transform:uppercase; letter-spacing:.08em; margin-bottom:14px;}
  .info-card .val{font-family:'Fraunces',serif; font-size:19px; color:var(--navy-deep); font-weight:600; line-height:1.4;}
  .info-card .val a{border-bottom:1.5px solid var(--line); padding-bottom:2px;}
  .info-card .val a:hover{color:var(--teal-deep); border-color:var(--teal-deep);}
  @media(max-width:800px){.info-grid{grid-template-columns:1fr;}}

  .form-section{background:var(--stone);}
  .form-section .wrap{display:grid; grid-template-columns:0.85fr 1.15fr; gap:60px; align-items:flex-start;}
  .form-section h2{font-size:clamp(26px,3.2vw,36px); line-height:1.2;}
  .form-section p.intro{color:var(--grey); margin-top:16px; max-width:420px; font-size:15.3px;}
  .form-note{margin-top:26px; display:flex; gap:14px; align-items:flex-start; border-left:2px solid var(--teal); padding-left:16px;}
  .form-note p{color:var(--grey); font-size:13.6px; margin:0;}
  form{background:var(--base); border:1px solid var(--line); padding:36px;}
  .f-row{margin-bottom:22px;}
  .f-row label{display:block; font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--grey); margin-bottom:8px;}
  .f-row input, .f-row textarea{width:100%; border:1px solid var(--line); background:var(--base); padding:13px 14px; font-family:'Public Sans',sans-serif; font-size:15px; color:var(--ink); border-radius:1px; transition:border-color .2s ease;}
  .f-row input:focus, .f-row textarea:focus{outline:none; border-color:var(--teal);}
  .f-row textarea{resize:vertical; min-height:100px;}
  .f-submit{width:100%; justify-content:center;}
  @media(max-width:900px){.form-section .wrap{grid-template-columns:1fr; gap:36px;} form{padding:26px;}}

  .map-section{background:var(--navy-deep);}
  .map-section .wrap{padding:0;}
  .map-wrap{width:100%; min-height:420px; border-top:1px solid rgba(255,255,255,0.12);}
  .map-wrap iframe{width:100%; height:420px; border:0; filter:grayscale(20%) contrast(1.05); display:block;}

  .contact-cta{background:var(--teal-tint); border-top:1px solid var(--line);}
  .contact-cta .wrap{display:flex; justify-content:space-between; align-items:center; gap:30px; flex-wrap:wrap;}
  .contact-cta h2{font-size:clamp(22px,2.8vw,28px); max-width:480px;}
  .contact-cta .ctas{display:flex; gap:14px; flex-wrap:wrap;}
