/* ==========================================================
   CONTACT PAGE — modern, map-led, presentable
   ========================================================== */

/* ---------- Hero: 2-column with animated comms scene on right ---------- */
.page-hero .hero-grid{
  display:grid;grid-template-columns:1fr auto;gap:60px;align-items:center;
}
@media(max-width:980px){
  .page-hero .hero-grid{grid-template-columns:1fr;gap:50px;justify-items:start}
  .page-hero .hero-grid h1{max-width:14ch}
}
.page-hero .hero-grid > div:first-child h1{max-width:none}

/* Breadcrumbs in hero (dark bg variant) */
.page-hero .crumbs{
  font-size:12px;color:rgba(255,255,255,.55);margin-bottom:24px;
}
.page-hero .crumbs a{
  color:rgba(255,255,255,.55);
  transition:color .2s var(--ease);
}
.page-hero .crumbs a:hover{color:var(--gold-2)}
.page-hero .crumbs .sep{opacity:.35;margin:0 8px}
.page-hero .crumbs span:not(.sep){color:#fff}

/* === Animated comms scene === */
.comms-scene{
  position:relative;
  width:300px;height:300px;
  margin:0 auto;
  pointer-events:none;
  user-select:none;
}
@media(max-width:980px){
  .comms-scene{width:260px;height:260px;margin:0}
}

/* Concentric pulse rings */
.comms-scene .ring{
  position:absolute;top:50%;left:50%;
  border-radius:50%;
  border:1px solid rgba(176,180,184,.18);
  transform:translate(-50%,-50%);
}
.comms-scene .ring.r1{width:38%;height:38%;animation:ringPulse 4s ease-in-out infinite}
.comms-scene .ring.r2{width:62%;height:62%;animation:ringPulse 4s ease-in-out infinite .8s;border-color:rgba(176,180,184,.12)}
.comms-scene .ring.r3{width:88%;height:88%;animation:ringPulse 4s ease-in-out infinite 1.6s;border-color:rgba(176,180,184,.08)}
@keyframes ringPulse{
  0%,100%{opacity:.6;transform:translate(-50%,-50%) scale(1)}
  50%{opacity:1;transform:translate(-50%,-50%) scale(1.04)}
}

/* Rotating dashed ring — feels like a signal sweep */
.comms-scene .sweep{
  position:absolute;top:50%;left:50%;
  width:75%;height:75%;
  transform:translate(-50%,-50%);
  border-radius:50%;
  border:1px dashed rgba(184,140,84,.25);
  animation:sweepSpin 28s linear infinite;
}
@keyframes sweepSpin{
  to{transform:translate(-50%,-50%) rotate(360deg)}
}

/* Soft radial glow behind core */
.comms-scene::before{
  content:"";
  position:absolute;inset:15%;
  background:radial-gradient(circle,rgba(176,180,184,.18) 0%,transparent 65%);
  filter:blur(20px);
  animation:glowBreath 6s ease-in-out infinite;
}
@keyframes glowBreath{
  0%,100%{opacity:.6;transform:scale(1)}
  50%{opacity:1;transform:scale(1.08)}
}

/* Center logo medallion */
.comms-scene .core{
  position:absolute;top:50%;left:50%;
  width:88px;height:88px;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:linear-gradient(140deg,rgba(255,255,255,.08) 0%,rgba(255,255,255,.02) 100%);
  border:1px solid rgba(255,255,255,.18);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  display:grid;place-items:center;
  box-shadow:
    0 0 0 1px rgba(184,140,84,.15) inset,
    0 12px 40px -10px rgba(0,0,0,.5),
    0 0 60px -10px rgba(184,140,84,.3);
  z-index:3;
}
.comms-scene .core .vita-logo-img{
  width:54px;height:auto;
  max-height:54px;
  object-fit:contain;
  filter:drop-shadow(0 2px 8px rgba(0,0,0,.4));
}

/* Floating channel chips around the core */
.comms-scene .chip{
  position:absolute;
  width:46px;height:46px;
  border-radius:12px;
  background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  display:grid;place-items:center;
  color:#fff;
  box-shadow:
    0 10px 24px -8px rgba(0,0,0,.4),
    0 0 0 1px rgba(184,140,84,.08) inset;
  z-index:2;
}
.comms-scene .chip svg{width:18px;height:18px;stroke-width:1.6}

/* Notification badge dot */
.comms-scene .chip .badge{
  position:absolute;top:-3px;right:-3px;
  width:11px;height:11px;border-radius:50%;
  background:var(--gold);
  border:2px solid var(--hero);
  animation:badgePop 8s ease-in-out infinite;
  opacity:0;transform:scale(0);
}
@keyframes badgePop{
  0%,80%,100%{transform:scale(0);opacity:0}
  10%,70%{transform:scale(1);opacity:1}
}

/* Chip placement + gentle float */
.comms-scene .chip.c1{top:8%;left:50%;animation:floatY 5s ease-in-out infinite}
.comms-scene .chip.c2{top:50%;right:6%;animation:floatX 6s ease-in-out infinite}
.comms-scene .chip.c3{bottom:8%;left:50%;animation:floatY 5s ease-in-out infinite -2.5s}
.comms-scene .chip.c4{top:50%;left:6%;animation:floatX 6s ease-in-out infinite -3s}

@keyframes floatY{
  0%,100%{transform:translate(-50%,0)}
  50%{transform:translate(-50%,-8px)}
}
@keyframes floatX{
  0%,100%{transform:translate(0,-50%)}
  50%{transform:translate(8px,-50%)}
}

/* Stagger badge appearances so they don't all pop in sync */
.comms-scene .chip.c1 .badge{animation-delay:0s}
.comms-scene .chip.c2 .badge{animation-delay:2s}
.comms-scene .chip.c3 .badge{animation-delay:4s}
.comms-scene .chip.c4 .badge{animation-delay:6s}

/* Connection lines — chips → core */
.comms-scene .lines{
  position:absolute;inset:0;
  width:100%;height:100%;
  z-index:1;
}
.comms-scene .lines line{
  stroke:rgba(184,140,84,.3);
  stroke-width:1;
  stroke-dasharray:3 5;
  animation:dashFlow 8s linear infinite;
}
@keyframes dashFlow{
  to{stroke-dashoffset:-32}
}

/* Tiny floating dots for depth */
.comms-scene .dot{
  position:absolute;
  width:4px;height:4px;border-radius:50%;
  background:var(--gold-2);
  opacity:.5;
}
.comms-scene .dot.d1{top:22%;left:18%;animation:dotDrift 7s ease-in-out infinite}
.comms-scene .dot.d2{top:78%;left:22%;animation:dotDrift 8s ease-in-out infinite -3s;width:3px;height:3px}
.comms-scene .dot.d3{top:30%;right:14%;animation:dotDrift 9s ease-in-out infinite -1.5s;width:3px;height:3px}
.comms-scene .dot.d4{bottom:24%;right:20%;animation:dotDrift 7.5s ease-in-out infinite -4s}
@keyframes dotDrift{
  0%,100%{transform:translate(0,0);opacity:.4}
  50%{transform:translate(6px,-10px);opacity:.9}
}

/* Caption beneath the scene */
.comms-scene .caption{
  position:absolute;
  bottom:-32px;left:50%;
  transform:translateX(-50%);
  font-size:9px;letter-spacing:.28em;text-transform:uppercase;
  color:rgba(255,255,255,.45);font-weight:600;
  white-space:nowrap;
  display:flex;align-items:center;gap:8px;
}
.comms-scene .caption .live-dot{
  width:6px;height:6px;border-radius:50%;
  background:#5fd388;
  box-shadow:0 0 0 0 #5fd388;
  animation:liveDot 2s ease-out infinite;
}
@keyframes liveDot{
  0%{box-shadow:0 0 0 0 rgba(95,211,136,.6)}
  100%{box-shadow:0 0 0 8px rgba(95,211,136,0)}
}

/* Reduced motion respect */
@media(prefers-reduced-motion:reduce){
  .comms-scene *,
  .comms-scene::before{animation:none !important}
}

/* ---------- Quick stats strip under hero ---------- */
.contact-stats{
  background:var(--bg-2);border-bottom:1px solid var(--line);
  padding:28px 0;
}
.contact-stats .row{
  display:grid;grid-template-columns:repeat(4,1fr);gap:24px;align-items:center;
}
.contact-stats .stat{display:flex;align-items:center;gap:14px}
.contact-stats .stat .ico{
  flex:0 0 40px;height:40px;border-radius:99px;
  background:#fff;border:1px solid var(--line);
  display:grid;place-items:center;color:var(--gold);
}
.contact-stats .stat .lbl{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:2px}
.contact-stats .stat .val{font-size:14px;font-weight:600;color:var(--ink)}
@media(max-width:880px){.contact-stats .row{grid-template-columns:repeat(2,1fr);gap:18px}}
@media(max-width:520px){.contact-stats .row{grid-template-columns:1fr}}

/* ---------- Map + Form split (top) ---------- */
.contact-main{
  background:var(--bg);
  padding:clamp(60px,8vw,100px) 0;
}
.contact-main .top-row{
  display:grid;grid-template-columns:1.15fr 1fr;gap:40px;align-items:stretch;
  margin-bottom:40px;
}
@media(max-width:980px){
  .contact-main .top-row{grid-template-columns:1fr;gap:30px}
  /* On mobile: form first, then map */
  .contact-main .top-row .map-card{order:2}
  .contact-main .top-row .contact-form-wrap{order:1}
}

/* Map column */
.map-card{
  position:relative;
  border-radius:14px;overflow:hidden;
  border:1px solid var(--line);
  box-shadow:0 18px 40px -16px rgba(0,0,0,.12),0 6px 14px -4px rgba(0,0,0,.06);
  background:#1a1d24;
  display:flex;flex-direction:column;
  min-height:560px;
}
.map-card .map{
  flex:1 1 auto;
  width:100%;min-height:560px;
  filter:saturate(.85);
}
.map-card .map-overlay{
  position:absolute;left:24px;bottom:24px;right:24px;
  background:rgba(255,255,255,.96);
  backdrop-filter:blur(10px);
  border-radius:10px;padding:20px 22px;
  box-shadow:0 14px 36px -12px rgba(0,0,0,.25);
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  z-index:500;
}
.map-card .map-overlay .lhs{flex:1 1 auto;min-width:200px}
.map-card .map-overlay .eyebrow{
  font-size:10px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold);font-weight:700;margin-bottom:4px;
}
.map-card .map-overlay h4{
  font-family:var(--serif);font-size:22px;font-weight:500;line-height:1.2;
  margin-bottom:2px;
}
.map-card .map-overlay .addr{font-size:13px;color:var(--muted)}
.map-card .map-overlay .actions{display:flex;gap:8px;flex-shrink:0}
.map-card .map-overlay .btn-mini{
  display:inline-flex;align-items:center;gap:6px;
  padding:9px 14px;border-radius:8px;
  border:1px solid var(--line-2);
  font-size:12px;font-weight:600;color:var(--ink);
  background:#fff;
  transition:all .2s var(--ease);
  white-space:nowrap;
}
.map-card .map-overlay .btn-mini:hover{
  background:var(--ink);color:#fff;border-color:var(--ink);
}
.map-card .map-overlay .btn-mini.primary{
  background:var(--ink);color:#fff;border-color:var(--ink);
}
.map-card .map-overlay .btn-mini.primary:hover{
  background:var(--gold);border-color:var(--gold);
}

/* Custom map marker pulse */
.vita-marker{
  width:34px;height:34px;border-radius:99px;
  background:var(--gold);
  border:3px solid #fff;
  box-shadow:0 4px 14px rgba(0,0,0,.3);
  position:relative;
  display:grid;place-items:center;
  color:#fff;font-weight:700;font-size:11px;
}
.vita-marker::after{
  content:"";position:absolute;inset:-8px;border-radius:99px;
  background:rgba(176,134,84,.4);
  animation:vitaPulse 2.4s infinite;
  z-index:-1;
}
@keyframes vitaPulse{
  0%{transform:scale(1);opacity:.8}
  100%{transform:scale(2.2);opacity:0}
}

/* ---------- Form (right column of top row) ---------- */
.contact-form-wrap{
  display:flex;flex-direction:column;
}
.contact-form{
  background:#fff;
  border:1px solid var(--line);
  border-radius:14px;
  padding:32px;
  display:flex;flex-direction:column;
  box-shadow:0 18px 40px -16px rgba(0,0,0,.08),0 6px 14px -4px rgba(0,0,0,.04);
  flex:1;
}
.contact-form-title{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  margin-bottom:22px;padding-bottom:18px;border-bottom:1px solid var(--line);
}
.contact-form-title h3{font-family:var(--serif);font-size:24px;font-weight:500}
.contact-form-title .badge{
  font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  background:var(--bg-2);padding:5px 10px;border-radius:99px;
  color:var(--muted);font-weight:700;
  display:inline-flex;align-items:center;gap:6px;
}
.contact-form-title .badge .dot{
  width:6px;height:6px;border-radius:99px;background:#3aa763;
  box-shadow:0 0 0 3px rgba(58,167,99,.2);
}
.contact-form .form-intro{
  color:var(--muted);font-size:14px;line-height:1.6;margin-bottom:22px;
}
.contact-form button[type=submit]{margin-top:auto}

/* ---------- Info cards row (below) ---------- */
.contact-info-row{
  display:grid;grid-template-columns:repeat(4,1fr);gap:18px;
}
@media(max-width:980px){
  .contact-info-row{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:560px){
  .contact-info-row{grid-template-columns:1fr}
}

.info-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:12px;
  padding:24px;
  display:flex;flex-direction:column;gap:14px;
  transition:all .25s var(--ease);
  text-decoration:none;color:inherit;
  position:relative;
  min-height:200px;
}
.info-card:hover{
  border-color:var(--line-2);
  transform:translateY(-3px);
  box-shadow:0 14px 30px -14px rgba(0,0,0,.12);
}
.info-card .ico{
  width:42px;height:42px;border-radius:10px;
  background:linear-gradient(135deg,var(--gold) 0%,var(--gold-2) 100%);
  display:grid;place-items:center;color:#fff;
}
.info-card .label{
  font-size:10px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--muted);font-weight:700;margin-bottom:4px;
}
.info-card h4{
  font-family:var(--serif);font-size:18px;font-weight:500;line-height:1.25;
  margin-bottom:6px;color:var(--ink);
  word-break:break-word;
}
.info-card h4 a{color:inherit}
.info-card p{font-size:13px;color:var(--muted);line-height:1.55}
.info-card .arrow{
  position:absolute;top:24px;right:24px;
  width:30px;height:30px;border-radius:99px;
  border:1px solid var(--line-2);
  display:grid;place-items:center;
  color:var(--ink);
  transition:all .25s var(--ease);
  opacity:0;
}
.info-card:hover .arrow{
  opacity:1;
  background:var(--ink);color:#fff;border-color:var(--ink);
}

/* Hours card variant — compact list */
.info-card .hours-list{
  display:flex;flex-direction:column;gap:6px;font-size:12px;
}
.info-card .hours-list .h{display:flex;justify-content:space-between;align-items:center}
.info-card .hours-list .day{color:var(--muted);font-weight:600}
.info-card .hours-list .time{color:var(--ink);font-weight:600;font-feature-settings:'tnum' 1}
.info-card .hours-list .h.closed .time{color:#c44}

/* ---------- Departments ---------- */
.depts{
  background:var(--bg);
  padding:clamp(60px,8vw,100px) 0;
  border-top:1px solid var(--line);
}
.depts .head{text-align:center;margin-bottom:50px}
.depts .head h2{font-size:clamp(28px,3.8vw,42px);margin-bottom:8px}
.depts .head h2 em{font-style:italic;color:var(--gold)}
.depts .head p{color:var(--muted);font-size:15px}

.dept-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:20px;
}
@media(max-width:880px){.dept-grid{grid-template-columns:1fr}}

.dept-card{
  background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:28px;
  transition:all .25s var(--ease);
}
.dept-card:hover{
  border-color:var(--gold);
  transform:translateY(-3px);
  box-shadow:0 14px 30px -14px rgba(176,134,84,.2);
}
.dept-card .ico{
  width:46px;height:46px;border-radius:10px;
  background:var(--paper);
  display:grid;place-items:center;color:var(--gold);
  margin-bottom:18px;
}
.dept-card h4{font-family:var(--serif);font-size:20px;font-weight:500;margin-bottom:6px}
.dept-card p{font-size:13px;color:var(--muted);line-height:1.6;margin-bottom:14px}
.dept-card a{
  font-size:13px;font-weight:600;color:var(--ink);
  display:inline-flex;align-items:center;gap:6px;
}
.dept-card a:hover{color:var(--gold)}

/* ---------- FAQ teaser ---------- */
.faq-cta{
  background:var(--ink);color:#fff;
  padding:clamp(50px,7vw,80px) 0;
  text-align:center;
}
.faq-cta h2{color:#fff;font-size:clamp(28px,3.8vw,40px);margin-bottom:10px}
.faq-cta h2 em{font-style:italic;color:var(--gold-2)}
.faq-cta p{color:rgba(255,255,255,.7);max-width:48ch;margin:0 auto 24px;font-size:15px}
