* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: #F7F3EC; font-family: 'Geist Sans', sans-serif; }
::selection { background: #E7A9B4; color: #1B1B1A; }
a { color: #1F2A44; }
a:hover { color: #C9748A; }
img { max-width: 100%; display: block; }

@keyframes kenburns { 0% { transform: scale(1.08) translate(0,0); } 100% { transform: scale(1.18) translate(-1%,-1%); } }
@keyframes grainshift { 0%,100% { transform: translate(0,0); } 25% { transform: translate(-1%,1%); } 50% { transform: translate(1%,-1%); } 75% { transform: translate(-1%,-1%); } }
@keyframes leafletPop { from { opacity: 0; transform: scale(0.3); } to { opacity: 1; transform: scale(1); } }
@keyframes fernGrow { from { stroke-dashoffset: 220; } to { stroke-dashoffset: 0; } }
@keyframes loaderFade { from { opacity: 1; visibility: visible; } to { opacity: 0; visibility: hidden; } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}

/* ---------- Page loader ---------- */
.page-loader { position: fixed; inset: 0; z-index: 999; background: #F7F3EC; display: flex; align-items: center; justify-content: center; }
.page-loader.is-fading { animation: loaderFade 0.32s ease forwards; }
.fern-leaf { opacity: 0; animation: leafletPop 0.4s ease both; }
.fern-leaf:nth-child(2) { animation-delay: 0.5s; }
.fern-leaf:nth-child(3) { animation-delay: 0.6s; }
.fern-leaf:nth-child(4) { animation-delay: 0.7s; }
.fern-leaf:nth-child(5) { animation-delay: 0.8s; }
.fern-leaf:nth-child(6) { animation-delay: 0.9s; }
.fern-leaf:nth-child(7) { animation-delay: 1s; }
.fern-leaf:nth-child(8) { animation-delay: 1.1s; }
.fern-leaf:nth-child(9) { animation-delay: 1.2s; }

/* ---------- Grain overlay + touch glow ---------- */
.grain-overlay { position: fixed; inset: 0; z-index: 2; pointer-events: none; opacity: 0.045;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-repeat: repeat; animation: grainshift 8s steps(4) infinite; }
.glow-layer { position: fixed; inset: 0; z-index: 900; pointer-events: none; }
.touch-glow { position: fixed; width: 180px; height: 180px; border-radius: 50%; pointer-events: none;
  background: radial-gradient(circle, rgba(255,215,0,0.22) 0%, rgba(255,215,0,0) 70%); filter: blur(4px);
  transform: translate(-50%,-50%); opacity: 0.2; }

/* ---------- Header / Nav ---------- */
.site-header { position: sticky; top: 0; z-index: 940; background: rgba(31,42,68,0.97); border-bottom: 1px solid rgba(247,243,236,0.1); }
.header-inner { max-width: 1280px; margin: 0 auto; padding: 14px 24px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.brand { display: flex; align-items: center; gap: 10px; text-decoration: none; color: #F7F3EC; flex-shrink: 0; }
.brand-name { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: clamp(15px,4.2vw,19px); font-weight: 700; color: #F7F3EC; white-space: nowrap; }
.site-nav { display: flex; align-items: center; gap: 16px; }
.nav-links { display: flex; align-items: center; gap: 16px; list-style: none; margin: 0; padding: 0; }
.nav-link { font-family: 'Geist Sans', sans-serif; font-size: 15px; text-decoration: none; padding: 6px 0; color: #C7CBD8; border-bottom: 2px solid transparent; transition: color 0.2s, transform 0.2s; display: inline-flex; align-items: center; gap: 4px; }
.nav-link:hover { color: #E7A9B4; transform: translateY(-1px); }
.nav-link.active { color: #F7F3EC; font-weight: 600; border-bottom-color: #E7A9B4; }
.nav-utility { display: flex; align-items: center; gap: 2px; flex-shrink: 0; }
.icon-btn { width: 38px; height: 38px; display: flex; align-items: center; justify-content: center; background: transparent; border: none; border-radius: 50%; cursor: pointer; flex-shrink: 0; transition: background 0.2s, transform 0.2s; }
.icon-btn:hover { background: rgba(247,243,236,0.14); transform: scale(1.08); }
.icon-btn:active { transform: scale(0.9); }
.icon-btn-light:hover { background: rgba(27,27,26,0.06); }

/* Dropdown menus (Services nav, Contact) */
.nav-dropdown-wrap, .contact-wrap { position: relative; }
.nav-dropdown-menu, .contact-menu { position: absolute; left: 0; top: calc(100% + 8px); background: #FFFFFF; border: 1px solid rgba(27,27,26,0.1); border-radius: 4px; box-shadow: 0 12px 32px rgba(27,27,26,0.14); min-width: 230px; overflow: hidden; display: none; z-index: 945; }
.contact-menu { left: auto; right: 0; min-width: 180px; }
.nav-dropdown-wrap:hover .nav-dropdown-menu, .nav-dropdown-wrap:focus-within .nav-dropdown-menu, .nav-dropdown-menu.is-open,
.contact-wrap:hover .contact-menu, .contact-wrap:focus-within .contact-menu, .contact-menu.is-open { display: block; }
.nav-dropdown-menu a, .contact-menu a { display: block; padding: 12px 16px; font-size: 14px; color: #1B1B1A; text-decoration: none; }
.nav-dropdown-menu a:hover, .contact-menu a:hover { background: rgba(27,27,26,0.04); }
.nav-dropdown-menu a + a, .contact-menu a + a { border-top: 1px solid rgba(27,27,26,0.06); }

.contact-btn { display: flex; align-items: center; gap: 6px; padding: 8px 10px; background: transparent; border: none; border-radius: 20px; cursor: pointer; color: #F7F3EC; font-family: 'Geist Sans', sans-serif; font-size: 13px; font-weight: 600; white-space: nowrap; transition: background 0.2s, transform 0.2s; }
.contact-btn:hover { background: rgba(247,243,236,0.14); transform: scale(1.04); }
.contact-btn:active { transform: scale(0.9); }
.contact-phone-text { display: none; }
@media (min-width: 1010px) { .contact-phone-text { display: inline; } }

.cta-outline { font-family: 'Geist Sans', sans-serif; font-size: 14px; font-weight: 600; background: transparent; color: #E7A9B4; border: 1.5px solid #E7A9B4; padding: 9.5px 16px; border-radius: 4px; text-decoration: none; white-space: nowrap; transition: background 0.3s cubic-bezier(0.22,1,0.36,1), transform 0.3s cubic-bezier(0.22,1,0.36,1), color 0.3s; display: inline-block; }
.cta-outline:hover { background: #E7A9B4; color: #1F2A44; transform: translateY(-2px); }
.cta-outline:active { transform: translateY(0) scale(0.97); }

.hamburger { width: 44px; height: 44px; display: none; align-items: center; justify-content: center; background: transparent; border: none; flex-shrink: 0; transition: transform 0.2s; cursor: pointer; }
.hamburger:hover { transform: scale(1.1); }
.hamburger:active { transform: scale(0.9); }

@media (max-width: 768px) {
  .nav-links, .nav-utility { display: none; }
  .hamburger { display: flex; }
}
@media (min-width: 769px) {
  .mobile-drawer, .drawer-backdrop { display: none; }
}

/* ---------- Mobile drawer (nested in <nav>) ---------- */
.drawer-backdrop { position: fixed; inset: 0; background: rgba(27,27,26,0.4); z-index: 950; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; }
.drawer-backdrop.is-open { opacity: 1; pointer-events: auto; }
.mobile-drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(420px,92vw); background: #F7F3EC; z-index: 955; overflow-y: auto; transform: translateX(100%); transition: transform 0.4s cubic-bezier(0.22,1,0.36,1); }
.mobile-drawer.is-open { transform: translateX(0); }
.drawer-inner { max-width: 440px; margin: 0 auto; padding: 28px 24px 40px; display: flex; flex-direction: column; gap: 22px; }
.drawer-close-row { display: flex; justify-content: flex-end; }
.drawer-nav { display: flex; flex-direction: column; gap: 4px; }
.drawer-nav a { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: 24px; font-weight: 700; color: #1B1B1A; text-decoration: none; padding: 12px 4px; border-bottom: 1px solid rgba(27,27,26,0.08); }
.drawer-row { font-family: 'Geist Sans', sans-serif; font-size: 16px; color: #1B1B1A; text-decoration: none; padding: 10px 4px; display: block; }
.drawer-settings { border-top: 1px solid rgba(27,27,26,0.1); padding-top: 18px; display: flex; flex-direction: column; gap: 14px; }
.drawer-search { font-size: 16px; padding: 12px; border-radius: 4px; border: 1px solid rgba(27,27,26,0.2); font-family: 'Geist Sans', sans-serif; width: 100%; }
.close-btn { width: 38px; height: 38px; display: flex; align-items: center; justify-content: center; background: transparent; border: none; border-radius: 50%; cursor: pointer; flex-shrink: 0; transition: background 0.2s, transform 0.2s; }
.close-btn:hover { background: rgba(27,27,26,0.06); transform: scale(1.08); }
.close-btn:active { transform: scale(0.9); }

/* ---------- Search panel ---------- */
.search-panel { position: fixed; top: 0; left: 0; right: 0; z-index: 930; background: #F7F3EC; border-bottom: 1px solid rgba(27,27,26,0.1); padding: 20px 24px; box-shadow: 0 12px 32px rgba(27,27,26,0.1); display: none; }
.search-panel.is-open { display: block; }
.search-row { max-width: 900px; margin: 0 auto; display: flex; align-items: center; gap: 12px; }
.search-input { flex: 1; font-size: 18px; padding: 12px 4px; border: none; border-bottom: 2px solid #1F2A44; background: transparent; font-family: 'Geist Sans', sans-serif; outline: none; color: #1B1B1A; }
.search-results { max-width: 900px; margin: 12px auto 0; display: flex; flex-direction: column; }
.search-results a { padding: 10px 4px; font-size: 15px; color: #1B1B1A; text-decoration: none; border-top: 1px solid rgba(27,27,26,0.06); }

/* ---------- Settings panel ---------- */
.settings-backdrop { position: fixed; inset: 0; z-index: 960; background: rgba(27,27,26,0.35); display: none; }
.settings-backdrop.is-open { display: block; }
.settings-panel { position: fixed; top: 0; right: 0; bottom: 0; width: min(360px,88vw); background: #F7F3EC; z-index: 970; padding: 28px 24px; box-shadow: -16px 0 40px rgba(27,27,26,0.18); transform: translateX(110%); transition: transform 0.4s cubic-bezier(0.22,1,0.36,1); overflow-y: auto; }
.settings-panel.is-open { transform: translateX(0); }
.settings-title-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
.settings-title { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: 18px; font-weight: 700; margin: 0; color: #1B1B1A; }
.settings-row { display: flex; align-items: center; justify-content: space-between; padding: 14px 0; border-bottom: 1px solid rgba(27,27,26,0.08); }
.settings-row.no-border { border-bottom: none; }
.settings-label { font-family: 'Geist Sans', sans-serif; font-size: 15px; color: #1B1B1A; }
.settings-sliders { display: none; flex-direction: column; gap: 12px; padding: 14px 0 6px; border-top: 1px solid rgba(27,27,26,0.08); margin-top: 4px; }
.settings-sliders.is-open { display: flex; }
.settings-sliders label { font-size: 13px; color: #6B6862; }
.settings-sliders input { width: 100%; }
.lang-select { font-family: 'Geist Sans', sans-serif; font-size: 14px; padding: 8px 10px; border-radius: 4px; border: 1px solid rgba(27,27,26,0.2); background: #fff; color: #1B1B1A; }
.lang-notice { font-size: 12px; color: #6B6862; margin: 10px 0 0; line-height: 1.5; display: none; }
.switch { width: 42px; height: 24px; border-radius: 12px; border: none; padding: 2px; background: rgba(27,27,26,0.18); position: relative; cursor: pointer; transition: background 0.25s cubic-bezier(0.22,1,0.36,1); flex-shrink: 0; }
.switch.is-on { background: #1F2A44; }
.switch:active { transform: scale(0.94); }
.switch-dot { display: block; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: transform 0.25s cubic-bezier(0.22,1,0.36,1); transform: translateX(0); }
.switch.is-on .switch-dot { transform: translateX(18px); }

body.dyslexia-mode, body.dyslexia-mode * { font-family: 'Lexend', sans-serif !important; }

/* ---------- Hero ---------- */
.hero { position: relative; overflow: hidden; display: flex; }
.hero-media { position: absolute; inset: 0; overflow: hidden; }
.hero-media img { width: 100%; height: 100%; object-fit: cover; animation: kenburns 22s ease-in-out infinite alternate; }
.hero-scrim { position: absolute; inset: 0; }
.hero-content { position: relative; max-width: 1280px; margin: 0 auto; width: 100%; padding: 32px 24px 0; }
.eyebrow { display: inline-flex; align-items: center; gap: 8px; font-family: 'Geist Sans', sans-serif; font-size: 13px; letter-spacing: 0.12em; text-transform: uppercase; color: #E7A9B4; }
.eyebrow-plain { display: inline-flex; align-items: center; gap: 8px; font-family: 'Geist Sans', sans-serif; font-size: 13px; letter-spacing: 0.12em; text-transform: uppercase; color: #C9748A; margin-bottom: 20px; }

/* ---------- Fern-pattern cream section background ---------- */
.fern-bg { background-color: #F7F3EC; background-repeat: repeat; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='200'%3E%3Cg fill='%231F2A44' opacity='0.05'%3E%3Cline x1='30' y1='195' x2='30' y2='35' stroke='%231F2A44' stroke-width='1.5'/%3E%3Cellipse cx='20' cy='55' rx='9' ry='3.4' transform='rotate(-35 20 55)'/%3E%3Cellipse cx='40' cy='55' rx='9' ry='3.4' transform='rotate(35 40 55)'/%3E%3Cellipse cx='17' cy='80' rx='10' ry='3.8' transform='rotate(-30 17 80)'/%3E%3Cellipse cx='43' cy='80' rx='10' ry='3.8' transform='rotate(30 43 80)'/%3E%3Cellipse cx='14' cy='108' rx='11' ry='4' transform='rotate(-27 14 108)'/%3E%3Cellipse cx='46' cy='108' rx='11' ry='4' transform='rotate(27 46 108)'/%3E%3Cellipse cx='11' cy='138' rx='12' ry='4.4' transform='rotate(-24 11 138)'/%3E%3Cellipse cx='49' cy='138' rx='12' ry='4.4' transform='rotate(24 49 138)'/%3E%3Cellipse cx='8' cy='168' rx='13' ry='4.8' transform='rotate(-22 8 168)'/%3E%3Cellipse cx='52' cy='168' rx='13' ry='4.8' transform='rotate(22 52 168)'/%3E%3C/g%3E%3C/svg%3E"); }

/* ---------- Buttons used in body copy ---------- */
.cta-navy { display: inline-block; font-family: 'Geist Sans', sans-serif; font-size: 16px; font-weight: 600; background: #1F2A44; color: #F7F3EC; padding: 15px 28px; border-radius: 4px; text-decoration: none; border: none; cursor: pointer; transition: transform 0.35s cubic-bezier(0.22,1,0.36,1), background 0.35s cubic-bezier(0.22,1,0.36,1); }
.cta-navy:hover { transform: translateY(-4px); background: #C9748A; }
.cta-navy:active { transform: translateY(-1px) scale(0.97); }
.cta-hero-outline { font-family: 'Geist Sans', sans-serif; font-size: 16px; font-weight: 600; background: transparent; border: 1.5px solid #E7A9B4; color: #F7F3EC; padding: 14.5px 30px; border-radius: 4px; text-decoration: none; display: inline-block; transition: transform 0.35s cubic-bezier(0.22,1,0.36,1), background 0.35s cubic-bezier(0.22,1,0.36,1), color 0.35s; }
.cta-hero-outline:hover { transform: translateY(-4px); background: #E7A9B4; color: #1B1B1A; }
.cta-hero-outline:active { transform: translateY(-1px) scale(0.97); }
.cta-pink { display: inline-block; font-family: 'Geist Sans', sans-serif; font-size: 16px; font-weight: 600; background: #E7A9B4; color: #1F2A44; padding: 16px 32px; border-radius: 4px; text-decoration: none; transition: transform 0.35s cubic-bezier(0.22,1,0.36,1), background 0.35s cubic-bezier(0.22,1,0.36,1); }
.cta-pink:hover { transform: translateY(-4px) scale(1.03); background: #F7F3EC; }
.cta-pink:active { transform: translateY(-1px) scale(0.97); }
.learn-more { font-family: 'Geist Sans', sans-serif; font-size: 15px; font-weight: 600; color: #1F2A44; display: inline-flex; align-items: center; gap: 6px; text-decoration: none; }
.learn-more-arrow { transition: transform 0.3s cubic-bezier(0.22,1,0.36,1); display: inline-block; }
.learn-more:hover .learn-more-arrow { transform: translateX(4px); }

/* ---------- Image + text stacking grid ---------- */
.stack-grid { display: grid; align-items: center; gap: 56px; }

/* ---------- Service cards (home) ---------- */
.svc-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px,1fr)); gap: 32px; margin-bottom: 80px; }
.svc-card { display: flex; flex-direction: column; text-decoration: none; background: #FFFFFF; border: 1px solid rgba(27,27,26,0.08); border-radius: 6px; overflow: hidden; transition: box-shadow 0.35s cubic-bezier(0.22,1,0.36,1), transform 0.35s cubic-bezier(0.22,1,0.36,1); }
.svc-card:hover { box-shadow: 0 22px 48px rgba(27,27,26,0.14); transform: translateY(-6px); }
.svc-card-media { position: relative; aspect-ratio: 4/3; overflow: hidden; }
.svc-card-media img { width: 100%; height: 100%; object-fit: cover; }
.svc-card-body { padding: 28px 26px 30px; flex: 1; display: flex; flex-direction: column; }
.svc-card-body h3 { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: 22px; font-weight: 700; color: #1B1B1A; margin: 0 0 10px; }
.svc-card-body p { font-family: 'Geist Sans', sans-serif; font-size: 15px; line-height: 1.65; color: #4A4842; margin: 0 0 20px; flex: 1; }

/* ---------- Why choose us (navy card) ---------- */
.why-card { max-width: 1200px; margin: 0 auto; background: #1F2A44; border-radius: 6px; padding: 64px 48px; }
.why-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 36px; }
.why-item h3 { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: 18px; font-weight: 700; color: #F7F3EC; margin: 0 0 8px; }
.why-item p { font-family: 'Geist Sans', sans-serif; font-size: 15px; line-height: 1.65; color: #C7CBD8; margin: 0; }
.why-item .why-num { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: 13px; font-weight: 700; color: #E7A9B4; margin-bottom: 14px; }
.why-item { padding: 0 28px; border-left: 1px solid rgba(247,243,236,0.15); transition: transform 0.3s cubic-bezier(0.22,1,0.36,1); }
.why-item:first-child { padding-left: 0; border-left: none; }
.why-item:hover { transform: translateY(-4px); }
@media (max-width: 640px) { .why-grid { grid-template-columns: repeat(2,1fr); } }
@media (max-width: 420px) { .why-grid { grid-template-columns: 1fr; } }

/* ---------- Testimonials (static grid) ---------- */
.testimonial-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px,1fr)); gap: 28px; }
.testimonial-card { background: #FFFFFF; border: 1px solid rgba(27,27,26,0.08); border-radius: 6px; padding: 32px 28px; display: flex; flex-direction: column; gap: 18px; transition: transform 0.3s cubic-bezier(0.22,1,0.36,1), box-shadow 0.3s cubic-bezier(0.22,1,0.36,1); }
.testimonial-card:hover { transform: translateY(-6px); box-shadow: 0 18px 40px rgba(27,27,26,0.1); }
.testimonial-stars { font-family: 'Geist Sans', sans-serif; font-size: 13px; color: #C9748A; letter-spacing: 0.1em; }
.testimonial-quote { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: 18px; font-weight: 500; color: #1B1B1A; line-height: 1.55; margin: 0; flex: 1; }
.testimonial-name { font-family: 'Geist Sans', sans-serif; font-size: 14px; font-weight: 600; color: #4A4842; }

/* ---------- CTA strip ---------- */
.cta-strip { position: relative; background: #1F2A44; padding: 80px 24px; overflow: hidden; }
.cta-strip-fern { position: absolute; }
.cta-strip-fern.tl { top: -30px; left: -20px; opacity: 0.14; transform: rotate(15deg); }
.cta-strip-fern.br { bottom: -40px; right: -10px; opacity: 0.12; transform: rotate(-20deg) scaleX(-1); }
.cta-strip-inner { position: relative; max-width: 700px; margin: 0 auto; text-align: center; }
.cta-strip-inner h2 { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: clamp(26px,3.4vw,38px); font-weight: 700; color: #F7F3EC; margin: 0 0 16px; }
.cta-strip-inner p { font-family: 'Geist Sans', sans-serif; font-size: 17px; line-height: 1.6; color: #C7CBD8; margin: 0 0 32px; }

/* ---------- About: pill tags ---------- */
.pill-row { display: flex; justify-content: center; gap: 20px; flex-wrap: wrap; max-width: 900px; margin: 0 auto; padding: 0 24px 100px; }
.pill-tag { display: inline-flex; align-items: center; gap: 8px; font-family: 'Geist Sans', sans-serif; font-size: 14px; font-weight: 600; color: #1F2A44; background: #FFFFFF; border: 1px solid rgba(27,27,26,0.12); border-radius: 999px; padding: 10px 20px; text-decoration: none; transition: border-color 0.3s, transform 0.3s; }
.pill-tag:hover { border-color: #C9748A; transform: translateY(-2px); color: #1F2A44; }

/* ---------- Services detail sections ---------- */
.svc-detail-grid { display: grid; gap: 56px; align-items: start; }
.svc-card-img { position: relative; aspect-ratio: 4/3; overflow: hidden; border-radius: 4px; border: 1px solid rgba(27,27,26,0.08); }
.svc-card-img img { width: 100%; height: 100%; object-fit: cover; }
.svc-benefit-list { list-style: none; margin: 0 0 30px; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.svc-benefit-list li { display: flex; gap: 10px; font-family: 'Geist Sans', sans-serif; font-size: 15px; line-height: 1.6; color: #2A2924; transition: transform 0.25s cubic-bezier(0.22,1,0.36,1); }
.svc-benefit-list li:hover { transform: translateX(6px); }
.svc-benefit-list svg { flex-shrink: 0; margin-top: 3px; }

/* ---------- Form ---------- */
.form-input { font-family: 'Geist Sans', sans-serif; font-size: 16px; padding: 12px 14px; border-radius: 4px; border: 1px solid rgba(27,27,26,0.2); background: #fff; color: #1B1B1A; outline: none; transition: border-color 0.2s, transform 0.2s; }
.form-input:focus { border-color: #1F2A44; transform: scale(1.01); }

/* ---------- Footer ---------- */
.site-footer { background: #1F2A44; color: #F1EEE7; position: relative; z-index: 1; }
.footer-wave { display: block; }
.footer-grid { max-width: 1280px; margin: 0 auto; padding: 64px 24px 32px; display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 40px; }
.footer-col-label { font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; color: #8891A8; margin-bottom: 14px; }
.footer-links { display: flex; flex-direction: column; gap: 10px; }
.footer-links a { color: #C7CBD8; font-size: 15px; text-decoration: none; width: fit-content; background-image: linear-gradient(#E7A9B4,#E7A9B4); background-size: 0% 1px; background-repeat: no-repeat; background-position: left bottom; transition: background-size 0.35s cubic-bezier(0.22,1,0.36,1), color 0.2s; }
.footer-links a:hover { background-size: 100% 1px; color: #F1EEE7; }
.footer-contact { display: flex; flex-direction: column; gap: 10px; font-size: 15px; }
.footer-contact a { color: #F1EEE7; text-decoration: none; }
.footer-bottom { max-width: 1280px; margin: 0 auto; padding: 20px 24px; border-top: 1px solid rgba(241,238,231,0.12); font-size: 13px; color: #8891A8; }

@media (max-width: 640px) { .footer-grid { grid-template-columns: 1fr; } }

/* ---------- Mobile: stack image-with-text grids, image on top ---------- */
@media (max-width: 768px) {
  .stack-grid { grid-template-columns: 1fr !important; gap: 24px !important; }
  .stack-grid > *:last-child { order: -1 !important; margin-top: 0 !important; }
  .svc-detail-grid { grid-template-columns: 1fr !important; gap: 20px !important; }
  .svc-card-img { order: -1 !important; position: static !important; top: auto !important; }
  .contact-grid { grid-template-columns: 1fr !important; gap: 32px !important; }
}
