/* ============================================================
   ALMA DE CONIL — Design System
   Apple-inspired premium aesthetic · Andalusian soul
   ============================================================ */

/* ---- Tokens ---- */
:root {
  --font-display: 'Cormorant Garamond', 'Georgia', serif;
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif;

  --bg:          #FAFAF8;
  --bg-alt:      #F2EDE6;
  --bg-card:     #FFFFFF;
  --text:        #1D1D1F;
  --text-2:      #6E6E73;
  --text-3:      #AEAEB2;
  --border:      rgba(0,0,0,0.08);

  --accent:      #C4844A;
  --accent-l:    rgba(196,132,74,0.12);
  --accent-h:    #B8753D;
  --blue:        #0071E3;
  --wp:          #25D366;

  --sh-xs: 0 1px 3px rgba(0,0,0,0.06);
  --sh-sm: 0 2px 8px rgba(0,0,0,0.08);
  --sh-md: 0 8px 32px rgba(0,0,0,0.10);
  --sh-lg: 0 24px 80px rgba(0,0,0,0.14);
  --sh-xl: 0 40px 120px rgba(0,0,0,0.18);

  --nav-bg:  rgba(250,250,248,0.82);
  --nav-h:   64px;
  --ease:    cubic-bezier(0.4,0,0.2,1);
  --t:       0.3s var(--ease);
  --t-slow:  0.65s var(--ease);
}

html.dark {
  --bg:      #0A0A0A;
  --bg-alt:  #1C1C1E;
  --bg-card: #2C2C2E;
  --text:    #F5F5F7;
  --text-2:  #98989D;
  --text-3:  #636366;
  --border:  rgba(255,255,255,0.08);
  --accent:  #D4956A;
  --accent-l:rgba(212,149,106,0.15);
  --accent-h:#C4844A;
  --sh-xs: 0 1px 3px rgba(0,0,0,0.35);
  --sh-sm: 0 2px 8px rgba(0,0,0,0.45);
  --sh-md: 0 8px 32px rgba(0,0,0,0.55);
  --sh-lg: 0 24px 80px rgba(0,0,0,0.65);
  --sh-xl: 0 40px 120px rgba(0,0,0,0.75);
  --nav-bg:  rgba(10,10,10,0.88);
}

/* ---- Reset & Base ---- */
*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
html { scroll-behavior:smooth; }
body {
  font-family: var(--font-body);
  background: var(--bg);
  color: var(--text);
  transition: background var(--t), color var(--t);
  overflow-x: hidden;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img { display:block; max-width:100%; }
a { text-decoration:none; color:inherit; }
button { font-family:var(--font-body); cursor:pointer; }

/* ---- Navigation ---- */
#navbar {
  position: fixed; top:0; left:0; right:0; z-index:1000;
  height: var(--nav-h);
  background: var(--nav-bg);
  backdrop-filter: saturate(180%) blur(20px);
  -webkit-backdrop-filter: saturate(180%) blur(20px);
  border-bottom: 1px solid var(--border);
  display: flex; align-items:center; justify-content:space-between;
  padding: 0 max(28px, env(safe-area-inset-left));
  transition: background var(--t), box-shadow var(--t);
}
#navbar.scrolled { box-shadow: var(--sh-sm); }

.nav-logo {
  font-family: var(--font-display);
  font-size: 1.375rem; font-weight:500;
  color: var(--text); letter-spacing:.02em;
  transition: opacity var(--t);
}
.nav-logo:hover { opacity:.72; }

.nav-links { display:flex; align-items:center; gap:2rem; list-style:none; }
.nav-link {
  font-size:.875rem; color:var(--text-2); letter-spacing:.01em;
  transition: color var(--t);
}
.nav-link:hover { color:var(--text); }

.nav-actions { display:flex; align-items:center; gap:.75rem; }

.icon-btn {
  width:40px; height:40px; border-radius:50%; border:none;
  background:transparent; color:var(--text-2);
  display:flex; align-items:center; justify-content:center;
  transition: background var(--t), color var(--t);
}
.icon-btn:hover { background:var(--accent-l); color:var(--text); }

.hamburger { display:none; flex-direction:column; gap:5px; }
.ham-line {
  width:20px; height:1.5px; background:var(--text);
  transition: transform .3s var(--ease), opacity .3s;
}

/* Mobile nav */
#mobile-nav {
  display:none; position:fixed; inset:0; z-index:999;
  background:var(--bg); flex-direction:column;
  align-items:center; justify-content:center; gap:48px;
}
#mobile-nav.open { display:flex; }
.mob-link {
  font-family:var(--font-display); font-size:2.75rem; font-weight:400;
  color:var(--text); transition:color var(--t);
}
.mob-link:hover { color:var(--accent); }
.mob-close {
  position:absolute; top:18px; right:22px;
  width:44px; height:44px; border-radius:50%;
  background:var(--bg-alt); border:none; color:var(--text);
  display:flex; align-items:center; justify-content:center;
  font-size:1.125rem; transition:background var(--t);
}
.mob-close:hover { background:var(--border); }

/* ---- Scroll progress bar ---- */
#scroll-progress {
  position:fixed; top:0; left:0; height:2px;
  background:var(--accent); z-index:1002;
  width:0%; will-change:width;
  transition:width .08s linear;
}

/* ---- Hero ---- */
#hero {
  position:relative; width:100%; height:100svh; min-height:600px;
  display:flex; align-items:center; justify-content:center; overflow:hidden;
}
/* Two layers: primary fades over secondary to create a smooth crossfade */
.hero-bg {
  position:absolute; inset:0;
  background-size:cover; background-position:center; background-repeat:no-repeat;
  transform:scale(1.06);
  transition: transform 9s ease-out;
  will-change:transform, opacity;
}
#hero.loaded .hero-bg { transform:scale(1); }

.hero-bg-primary {
  background-image: url('./Fotos/Imagen_Exterior/Portada_1.png');
  z-index:2;
  animation: hero-crossfade 20s ease-in-out infinite;
}
.hero-bg-secondary {
  background-image: url('./Fotos/Imagen_Exterior/Exterior_1.jpg');
  z-index:1;
}

@keyframes hero-crossfade {
  0%, 38%  { opacity:1; }
  50%, 90% { opacity:0; }
  100%     { opacity:1; }
}

.hero-overlay {
  position:absolute; inset:0;
  background: linear-gradient(to bottom,
    rgba(0,0,0,.04) 0%,
    rgba(0,0,0,.22) 28%,
    rgba(0,0,0,.58) 62%,
    rgba(0,0,0,.88) 100%
  );
}
.hero-content {
  position:relative; z-index:2;
  text-align:center; padding:0 24px; max-width:900px;
  will-change:opacity, transform;
  transition: opacity .06s linear, transform .06s linear;
}
.hero-badge {
  display:inline-block;
  font-size:.6875rem; font-weight:600; letter-spacing:.18em; text-transform:uppercase;
  color:rgba(255,255,255,.82);
  background:rgba(255,255,255,.10);
  backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.22);
  padding:6px 18px; border-radius:100px; margin-bottom:28px;
}
.hero-title {
  font-family:var(--font-display);
  font-size:clamp(4.5rem,13vw,10rem);
  font-weight:400; color:#FFF; line-height:1.0;
  letter-spacing:-.025em; margin-bottom:20px;
}
.hero-title em { font-style:italic; color:rgba(255,255,255,.88); }
.hero-sub {
  font-size:clamp(1rem,2.5vw,1.25rem);
  font-weight:300; color:rgba(255,255,255,.78);
  letter-spacing:.01em; margin-bottom:52px; line-height:1.6;
}
.hero-ctas {
  display:flex; align-items:center; justify-content:center;
  gap:12px; flex-wrap:wrap;
}

/* ---- Buttons ---- */
.btn {
  display:inline-flex; align-items:center; gap:8px;
  padding:14px 28px; border-radius:100px; border:none;
  font-family:var(--font-body); font-size:.9375rem;
  font-weight:500; letter-spacing:.01em; white-space:nowrap;
  transition: transform .2s var(--ease), box-shadow .2s var(--ease),
              background .2s, opacity .2s;
}
.btn:hover { transform:translateY(-2px); }
.btn:active { transform:translateY(0); }

.btn-white {
  background:#FFF; color:#1D1D1F;
  box-shadow: 0 4px 16px rgba(0,0,0,.16);
}
.btn-white:hover { background:rgba(255,255,255,.92); box-shadow:var(--sh-md); }

.btn-ghost {
  background:rgba(255,255,255,.12); color:#FFF;
  border:1px solid rgba(255,255,255,.28);
  backdrop-filter:blur(8px);
}
.btn-ghost:hover { background:rgba(255,255,255,.20); }

.btn-wp {
  background:var(--wp); color:#FFF;
  box-shadow:0 4px 16px rgba(37,211,102,.32);
}
.btn-wp:hover { background:#20BC58; box-shadow:0 8px 24px rgba(37,211,102,.42); }

.btn-phone {
  background:var(--blue); color:#FFF;
  box-shadow:0 4px 16px rgba(0,113,227,.30);
}
.btn-phone:hover { background:#0077ED; box-shadow:0 8px 24px rgba(0,113,227,.40); }

.btn-accent {
  background:var(--accent); color:#FFF;
  box-shadow:0 4px 16px rgba(196,132,74,.30);
}
.btn-accent:hover { background:var(--accent-h); box-shadow:0 8px 24px rgba(196,132,74,.42); }

.btn-outline {
  background:transparent; color:var(--text);
  border:1.5px solid var(--border);
}
.btn-outline:hover { border-color:var(--text); box-shadow:none; }

/* Scroll cue */
.scroll-cue {
  position:absolute; bottom:36px; left:50%; transform:translateX(-50%);
  z-index:2; display:flex; flex-direction:column; align-items:center; gap:6px;
  color:rgba(255,255,255,.55); font-size:.6875rem; font-weight:500;
  letter-spacing:.14em; text-transform:uppercase;
  animation:cue 2.2s ease-in-out infinite;
}
@keyframes cue {
  0%,100%{ transform:translateX(-50%) translateY(0); opacity:.55; }
  50%{ transform:translateX(-50%) translateY(-7px); opacity:.9; }
}

/* ---- Sections ---- */
.section { padding:120px 28px; }
.section-sm { padding:80px 28px; }
.container { max-width:1100px; margin:0 auto; }
.container-w { max-width:1280px; margin:0 auto; }

.label {
  font-size:.6875rem; font-weight:600; letter-spacing:.18em;
  text-transform:uppercase; color:var(--accent); margin-bottom:12px;
}
.divider {
  width:44px; height:2px; background:var(--accent);
  margin:24px 0; border-radius:1px;
}
.h2 {
  font-family:var(--font-display);
  font-size:clamp(2.25rem,5vw,3.75rem);
  font-weight:400; color:var(--text);
  line-height:1.1; letter-spacing:-.02em;
}
.body-lg {
  font-size:1.0625rem; color:var(--text-2); line-height:1.8;
}

/* ---- About ---- */
#sobre {
  background:var(--bg);
  position:relative; z-index:2;
  border-radius:32px 32px 0 0;
  margin-top:-36px;
  box-shadow:0 -16px 60px rgba(0,0,0,.14);
}
.about-grid {
  display:grid; grid-template-columns:1fr 1fr; gap:80px; align-items:center;
}
.about-img {
  position:relative; border-radius:24px; overflow:hidden;
  aspect-ratio:3/4; box-shadow:var(--sh-lg);
}
.about-img img {
  width:100%; height:100%; object-fit:cover;
  transition:transform var(--t-slow);
}
.about-img:hover img { transform:scale(1.04); }
.about-img::after {
  content:''; position:absolute; inset:0;
  background:linear-gradient(to bottom,transparent 60%,rgba(0,0,0,.12));
  pointer-events:none;
}
.loc-chip {
  display:inline-flex; align-items:center; gap:6px;
  font-size:.875rem; color:var(--text-2);
  background:var(--bg-alt); border-radius:100px;
  padding:6px 14px; margin-bottom:24px;
}

/* ---- Gallery ---- */
#galeria { background:var(--bg-alt); }
.gallery-grid {
  display:grid; grid-template-columns:repeat(3,1fr); gap:14px;
}
.g-item {
  position:relative; border-radius:16px; overflow:hidden; cursor:pointer;
}
.g-item:nth-child(1) { grid-column:span 2; aspect-ratio:16/9; }
.g-item:not(:nth-child(1)) { aspect-ratio:1; }
.g-item img {
  width:100%; height:100%; object-fit:cover;
  transition:transform .55s var(--ease); display:block;
}
.g-item:hover img { transform:scale(1.05); }
.g-overlay {
  position:absolute; inset:0;
  background:rgba(0,0,0,0); transition:background var(--t);
}
.g-item:hover .g-overlay { background:rgba(0,0,0,.18); }
.g-cap {
  position:absolute; bottom:14px; left:14px;
  font-size:.8125rem; font-weight:500; color:#FFF;
  background:rgba(0,0,0,.38); backdrop-filter:blur(8px);
  padding:4px 12px; border-radius:100px;
  opacity:0; transform:translateY(4px);
  transition:opacity var(--t), transform var(--t);
}
.g-item:hover .g-cap { opacity:1; transform:translateY(0); }

/* ---- Lightbox ---- */
#lightbox {
  position:fixed; inset:0; z-index:2000;
  background:rgba(0,0,0,.94);
  display:flex; align-items:center; justify-content:center;
  opacity:0; visibility:hidden; transition:opacity .3s var(--ease),visibility .3s;
}
#lightbox.open { opacity:1; visibility:visible; }
.lb-img {
  max-width:90vw; max-height:90svh;
  object-fit:contain; border-radius:8px; box-shadow:var(--sh-xl);
}
.lb-close {
  position:absolute; top:20px; right:24px;
  width:44px; height:44px; border-radius:50%;
  background:rgba(255,255,255,.12); border:none; color:#FFF;
  font-size:1.25rem; display:flex; align-items:center; justify-content:center;
  transition:background var(--t);
}
.lb-close:hover { background:rgba(255,255,255,.22); }
.lb-nav {
  position:absolute; top:50%; transform:translateY(-50%);
  width:44px; height:44px; border-radius:50%;
  background:rgba(255,255,255,.12); border:none; color:#FFF;
  font-size:1.25rem; display:flex; align-items:center; justify-content:center;
  transition:background var(--t); z-index:1;
}
.lb-nav:hover { background:rgba(255,255,255,.22); }
.lb-prev { left:16px; }
.lb-next { right:76px; }

/* ---- Amenities ---- */
#comodidades { background:var(--bg); }
.am-grid {
  display:grid; grid-template-columns:repeat(3,1fr); gap:20px;
}
.am-card {
  display:flex; flex-direction:column; gap:12px;
  padding:28px 24px;
  background:var(--bg-card); border:1px solid var(--border);
  border-radius:20px;
  transition:transform var(--t), box-shadow var(--t), border-color var(--t);
}
.am-card:hover {
  transform:translateY(-5px); box-shadow:var(--sh-md);
  border-color:var(--accent);
}
.am-icon {
  width:44px; height:44px; border-radius:12px;
  background:var(--accent-l); color:var(--accent);
  display:flex; align-items:center; justify-content:center;
}
.am-name { font-size:.9375rem; font-weight:600; color:var(--text); }
.am-desc { font-size:.8125rem; color:var(--text-2); line-height:1.55; }

/* ---- Experience ---- */
#experiencia { background:var(--bg-alt); }
.exp-grid {
  display:grid; grid-template-columns:1fr 1fr; gap:80px; align-items:center;
}
.exp-photos {
  display:grid; grid-template-columns:1fr 1fr; gap:12px;
}
.exp-photo {
  border-radius:16px; overflow:hidden; box-shadow:var(--sh-sm);
}
.exp-photo:first-child { grid-row:span 2; aspect-ratio:3/4; }
.exp-photo:not(:first-child) { aspect-ratio:1; }
.exp-photo img {
  width:100%; height:100%; object-fit:cover;
  transition:transform .5s var(--ease);
}
.exp-photo:hover img { transform:scale(1.04); }

/* ---- Contact ---- */
#contacto { background:var(--bg); }
.ct-card {
  background:var(--text); border-radius:32px;
  padding:88px 64px; text-align:center;
  position:relative; overflow:hidden;
}
html.dark .ct-card { background:var(--bg-alt); }
.ct-card::before {
  content:''; position:absolute; top:-120px; right:-120px;
  width:480px; height:480px;
  background:radial-gradient(circle,var(--accent) 0%,transparent 70%);
  opacity:.14; pointer-events:none;
}
.ct-card::after {
  content:''; position:absolute; bottom:-80px; left:-80px;
  width:320px; height:320px;
  background:radial-gradient(circle,var(--blue) 0%,transparent 70%);
  opacity:.08; pointer-events:none;
}
.ct-title {
  font-family:var(--font-display); font-size:clamp(2rem,5vw,3.75rem);
  font-weight:400; color:var(--bg); line-height:1.1; margin-bottom:16px;
}
html.dark .ct-title { color:var(--text); }
.ct-sub { font-size:1.0625rem; color:rgba(255,255,255,.62); margin-bottom:48px; }
html.dark .ct-sub { color:var(--text-2); }
.ct-phone {
  font-family:var(--font-display);
  font-size:clamp(2.5rem,7vw,5rem);
  font-weight:400; color:var(--bg);
  display:block; margin-bottom:44px;
  letter-spacing:.02em; transition:opacity var(--t);
}
html.dark .ct-phone { color:var(--text); }
.ct-phone:hover { opacity:.72; }
.ct-ctas {
  display:flex; align-items:center; justify-content:center;
  gap:12px; flex-wrap:wrap; position:relative; z-index:1;
}

/* Booking screenshot inside contact card */
.booking-proof {
  margin:40px auto 0;
  max-width:680px;
  border-radius:20px;
  overflow:hidden;
  box-shadow:0 12px 48px rgba(0,0,0,.32);
  position:relative; z-index:1;
  border:1px solid rgba(255,255,255,.10);
}
.booking-proof img {
  width:100%; display:block;
  transition:transform .5s var(--ease);
}
.booking-proof:hover img { transform:scale(1.02); }

/* ---- Floating CTAs ---- */
#float-ctas {
  position:fixed; bottom:96px; right:24px; z-index:900;
  display:flex; flex-direction:column; align-items:flex-end; gap:12px;
}
.f-btn {
  width:56px; height:56px; border-radius:50%; border:none;
  display:flex; align-items:center; justify-content:center;
  color:#FFF; box-shadow:var(--sh-md);
  transition:transform .2s var(--ease), box-shadow .2s var(--ease);
  position:relative;
}
.f-btn:hover { transform:scale(1.12); box-shadow:var(--sh-lg); }
.f-btn:active { transform:scale(.94); }
.f-tip {
  position:absolute; right:68px; white-space:nowrap;
  font-size:.8125rem; font-weight:500; color:#FFF;
  background:rgba(0,0,0,.72); backdrop-filter:blur(8px);
  padding:6px 12px; border-radius:8px;
  opacity:0; pointer-events:none;
  transform:translateX(8px);
  transition:opacity .2s var(--ease),transform .2s var(--ease);
}
.f-btn:hover .f-tip { opacity:1; transform:translateX(0); }
.f-wp  { background:var(--wp); }
.f-ph  { background:var(--blue); }

/* ---- Chat Widget ---- */
#chat-widget { position:fixed; bottom:24px; right:24px; z-index:950; }

.chat-toggle {
  width:56px; height:56px; border-radius:50%;
  background:var(--accent); border:none; color:#FFF;
  display:flex; align-items:center; justify-content:center;
  box-shadow:var(--sh-md);
  transition:transform .2s var(--ease), background var(--t);
  animation:chat-pulse 3s ease-out infinite;
}
@keyframes chat-pulse {
  0%  { box-shadow:var(--sh-md), 0 0 0 0 rgba(196,132,74,.42); }
  70% { box-shadow:var(--sh-md), 0 0 0 13px rgba(196,132,74,0); }
  100%{ box-shadow:var(--sh-md), 0 0 0 0 rgba(196,132,74,0); }
}
.chat-toggle:hover { transform:scale(1.08); }
.chat-toggle.open { animation:none; background:var(--text-2); }

.chat-panel {
  position:absolute; bottom:68px; right:0;
  width:356px; max-height:520px;
  background:var(--bg-card); border-radius:20px;
  box-shadow:var(--sh-xl); border:1px solid var(--border);
  display:flex; flex-direction:column; overflow:hidden;
  transform-origin:bottom right;
  transform:scale(.88) translateY(10px); opacity:0; visibility:hidden;
  transition:transform .3s var(--ease), opacity .3s var(--ease), visibility .3s;
}
.chat-panel.open {
  transform:scale(1) translateY(0); opacity:1; visibility:visible;
}

.chat-hdr {
  padding:16px 20px;
  background:var(--accent);
  display:flex; align-items:center; gap:12px; flex-shrink:0;
}
.chat-av {
  width:36px; height:36px; border-radius:50%;
  background:rgba(255,255,255,.18);
  display:flex; align-items:center; justify-content:center;
  color:#FFF; font-size:1rem; flex-shrink:0;
}
.chat-hdr-info { flex:1; }
.chat-hdr-name { font-size:.9375rem; font-weight:600; color:#FFF; line-height:1.3; }
.chat-hdr-sub  { font-size:.75rem; color:rgba(255,255,255,.72); }
.chat-hdr-close {
  width:32px; height:32px; border-radius:50%;
  background:rgba(255,255,255,.15); border:none; color:#FFF;
  display:flex; align-items:center; justify-content:center;
  font-size:1rem; transition:background var(--t);
}
.chat-hdr-close:hover { background:rgba(255,255,255,.28); }

.chat-msgs {
  flex:1; overflow-y:auto; padding:20px 16px;
  display:flex; flex-direction:column; gap:10px; scroll-behavior:smooth;
}
.chat-msgs::-webkit-scrollbar { width:3px; }
.chat-msgs::-webkit-scrollbar-thumb { background:var(--border); border-radius:2px; }

.msg {
  max-width:86%; padding:10px 14px; border-radius:16px;
  font-size:.875rem; line-height:1.55; animation:msg-in .3s var(--ease);
}
@keyframes msg-in {
  from { opacity:0; transform:translateY(8px); }
  to   { opacity:1; transform:translateY(0); }
}
.msg.bot  { align-self:flex-start; background:var(--bg-alt); color:var(--text); border-bottom-left-radius:4px; }
.msg.user { align-self:flex-end; background:var(--accent); color:#FFF; border-bottom-right-radius:4px; }

.typing {
  align-self:flex-start; display:flex; align-items:center; gap:4px;
  padding:12px 14px; background:var(--bg-alt);
  border-radius:16px; border-bottom-left-radius:4px;
}
.dot {
  width:6px; height:6px; background:var(--text-3); border-radius:50%;
  animation:blink 1.4s infinite;
}
.dot:nth-child(2){ animation-delay:.2s; }
.dot:nth-child(3){ animation-delay:.4s; }
@keyframes blink {
  0%,60%,100%{ transform:translateY(0); opacity:.4; }
  30%{ transform:translateY(-5px); opacity:1; }
}

.chat-foot {
  padding:12px 14px; border-top:1px solid var(--border);
  display:flex; align-items:flex-end; gap:8px; flex-shrink:0;
}
.chat-in {
  flex:1; border:1.5px solid var(--border); border-radius:14px;
  padding:10px 14px; font-family:var(--font-body); font-size:.875rem;
  background:var(--bg); color:var(--text); outline:none; resize:none;
  max-height:100px; line-height:1.5; transition:border-color var(--t);
}
.chat-in:focus { border-color:var(--accent); }
.chat-in::placeholder { color:var(--text-3); }
.chat-send {
  width:36px; height:36px; border-radius:50%;
  background:var(--accent); border:none; color:#FFF; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  transition:background var(--t), transform .2s;
}
.chat-send:hover:not(:disabled) { background:var(--accent-h); transform:scale(1.06); }
.chat-send:disabled { background:var(--text-3); cursor:not-allowed; }

/* ---- Footer ---- */
footer {
  padding:56px 28px;
  background:var(--bg-alt); border-top:1px solid var(--border);
  text-align:center;
}
.foot-logo {
  font-family:var(--font-display); font-size:1.625rem; font-weight:400;
  color:var(--text); margin-bottom:8px; letter-spacing:.02em;
}
.foot-tag { font-size:.875rem; color:var(--text-2); margin-bottom:28px; }
.foot-links {
  display:flex; align-items:center; justify-content:center;
  gap:24px; list-style:none; margin-bottom:28px; flex-wrap:wrap;
}
.foot-link { font-size:.8125rem; color:var(--text-2); transition:color var(--t); }
.foot-link:hover { color:var(--text); }
.foot-copy { font-size:.75rem; color:var(--text-3); }

/* ---- Reveal animations ---- */
.reveal {
  opacity:0; transform:translateY(28px);
  transition:opacity .75s var(--ease), transform .75s var(--ease);
}
.reveal.vis { opacity:1; transform:translateY(0); }
.d1 { transition-delay:.08s; } .d2 { transition-delay:.16s; }
.d3 { transition-delay:.24s; } .d4 { transition-delay:.32s; }
.d5 { transition-delay:.40s; } .d6 { transition-delay:.48s; }
.d7 { transition-delay:.56s; } .d8 { transition-delay:.64s; }

/* ---- Responsive ---- */
@media(max-width:1024px){
  .am-grid { grid-template-columns:repeat(2,1fr); }
}
@media(max-width:768px){
  .nav-links,.nav-actions>a { display:none; }
  .hamburger { display:flex; }
  .about-grid,.exp-grid { grid-template-columns:1fr; gap:48px; }
  .about-img { order:-1; aspect-ratio:4/3; }
  .gallery-grid { grid-template-columns:1fr 1fr; }
  .g-item:nth-child(1) { grid-column:span 2; aspect-ratio:4/3; }
  .g-item:not(:nth-child(1)) { aspect-ratio:3/4; }
  .am-grid { grid-template-columns:repeat(2,1fr); gap:14px; }
  .ct-card { padding:52px 32px; }
  .section { padding:80px 20px; }
  .chat-panel { width:calc(100vw - 48px); }
  #float-ctas { bottom:86px; right:16px; }
  #chat-widget { bottom:16px; right:16px; }
  .lb-prev { left:8px; }
  .lb-next { right:60px; }
}
@media(max-width:480px){
  .gallery-grid { grid-template-columns:1fr; }
  .g-item:nth-child(1) { grid-column:span 1; }
  .am-grid { grid-template-columns:1fr 1fr; }
  .exp-photos { grid-template-columns:1fr; }
  .exp-photo:first-child { grid-row:span 1; aspect-ratio:4/3; }
  .exp-photo:not(:first-child) { aspect-ratio:4/3; }
}
