/* Homepage Locations only. A restrained map-led card with consistent editorial type. */
.vhloc {
  --vhloc-ink:var(--viv-ink); --vhloc-teal:var(--viv-primary); --vhloc-gold:var(--viv-accent);
  position:relative;isolation:isolate;overflow:hidden;
  background:linear-gradient(112deg,var(--viv-primary-soft) 0%,#f8fbfa 56%,var(--viv-primary-soft-2) 100%);
  padding:clamp(74px,7.3vw,106px) 0 clamp(76px,7.5vw,112px);color:var(--vhloc-ink);
}
.vhloc,.vhloc *,.vhloc *::before,.vhloc *::after {box-sizing:border-box;}
.vhloc__pattern {position:absolute;inset:0;z-index:-1;opacity:.43;pointer-events:none;background-image:linear-gradient(color-mix(in srgb,var(--viv-primary) 48%,var(--viv-white)) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--viv-primary) 48%,var(--viv-white)) 1px,transparent 1px);background-size:70px 70px;-webkit-mask-image:linear-gradient(100deg,#000 0,transparent 38%,transparent 74%,#000 100%);mask-image:linear-gradient(100deg,#000 0,transparent 38%,transparent 74%,#000 100%);}
.vhloc__shape {position:absolute;z-index:-1;pointer-events:none;}
.vhloc__shape--a {right:-65px;top:-105px;width:340px;height:340px;transform:rotate(28deg);border:1px solid color-mix(in srgb,var(--viv-primary) 48%,var(--viv-white));border-radius:45px;background:linear-gradient(140deg,color-mix(in srgb,var(--viv-primary) 12%,transparent),rgba(255,255,255,.05));box-shadow:0 0 0 24px rgba(255,255,255,.17),0 0 0 48px color-mix(in srgb,color-mix(in srgb,var(--viv-primary) 48%,var(--viv-white)) 17%,transparent);}
.vhloc__shape--b {left:-72px;bottom:-105px;width:240px;height:240px;transform:rotate(-25deg);border:1px solid color-mix(in srgb,var(--viv-primary) 48%,var(--viv-white));border-radius:26px;background:linear-gradient(135deg,color-mix(in srgb,var(--viv-accent) 13%,transparent),color-mix(in srgb,var(--viv-primary) 5%,transparent));box-shadow:22px -20px 0 -8px color-mix(in srgb,color-mix(in srgb,var(--viv-primary) 48%,var(--viv-white)) 28%,transparent);}
.vhloc__shell {position:relative;width:min(1280px,calc(100% - 64px));margin:0 auto;}
.vhloc__heading-row {display:flex;justify-content:space-between;align-items:end;gap:44px;margin-bottom:36px;}
.vhloc__intro {flex:1;min-width:0;}
.vhloc__eyebrow {display:inline-flex;align-items:center;gap:10px;color:var(--viv-primary);font-size:11px;font-weight:800;line-height:1.4;letter-spacing:.15em;text-transform:uppercase;margin-bottom:17px;}
.vhloc__eyebrow i {width:25px;height:2px;background:var(--vhloc-gold);}
.vhloc__intro h2 {max-width:720px;margin:0;color:var(--vhloc-ink);font-size:clamp(32px,3.6vw,48px);font-weight:750;letter-spacing:-.035em;line-height:1.16;text-wrap:balance;overflow-wrap:break-word;}
.vhloc__intro h2 em {font-style:normal;color:var(--vhloc-teal);}
.vhloc__description {flex:0 1 365px;min-width:0;margin:0 0 4px;padding-left:23px;border-left:2px solid color-mix(in srgb,var(--viv-primary) 48%,var(--viv-white));color:var(--viv-slate);font-size:15px;line-height:1.8;}
/* Homepage showcase cards — quiet editorial hierarchy, edge-to-edge map, useful information. */
.vhloc__grid {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:stretch;}
.vhloc__card {position:relative;display:flex;flex-direction:column;min-width:0;overflow:hidden;border:1px solid var(--viv-primary-soft-2);border-radius:17px;background:#fff;box-shadow:0 9px 28px color-mix(in srgb,var(--viv-primary-deep) 4.5%,transparent);transition:transform .28s ease,border-color .28s ease,box-shadow .28s ease;}
.vhloc__card:hover {transform:translateY(-4px);border-color:color-mix(in srgb,var(--viv-primary) 48%,var(--viv-white));box-shadow:0 16px 33px color-mix(in srgb,var(--viv-primary-deep) 9.5%,transparent);}
.vhloc__card-visual {position:relative;flex:0 0 186px;height:186px;overflow:hidden;background:var(--viv-primary-soft-2);border-bottom:1px solid var(--viv-primary-soft-2);}
.vhloc__map-frame {display:block;width:100%;height:100%;border:0;pointer-events:none;filter:saturate(.82) contrast(.98);}
.vhloc__map-fallback {display:grid;place-items:center;width:100%;height:100%;color:var(--vhloc-teal);background:linear-gradient(125deg,var(--viv-primary-soft-2),var(--viv-primary-soft));}
.vhloc__map-fallback svg {width:44px;height:44px;opacity:.7;}
.vhloc__number {position:absolute;left:19px;top:16px;z-index:2;display:grid;place-items:center;min-width:34px;height:34px;padding:0 8px;background:#fff;border:1px solid var(--viv-primary-soft-2);border-radius:9px;color:var(--viv-primary);font-size:11px;font-weight:650;letter-spacing:.03em;line-height:1;box-shadow:0 3px 12px color-mix(in srgb,var(--viv-primary-deep) 8%,transparent);}
.vhloc__map-open {position:absolute;right:18px;top:16px;z-index:2;display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:7px 11px;border:1px solid var(--viv-primary-soft-2);border-radius:9px;background:#fff;color:var(--viv-primary);text-decoration:none;font-size:11.5px;font-weight:600;line-height:1.2;box-shadow:0 3px 12px color-mix(in srgb,var(--viv-primary-deep) 8%,transparent);transition:background .2s,color .2s;}
.vhloc__map-open svg {width:14px;height:14px;flex:0 0 14px;}
.vhloc__map-open:hover {background:var(--viv-primary-deep);color:#fff;}
.vhloc__card-main {position:relative;display:flex;flex:1;flex-direction:column;min-width:0;padding:23px 23px 21px;}
.vhloc__card-main::before {content:"";position:absolute;top:0;left:23px;width:34px;height:2px;background:var(--viv-accent);}
.vhloc__card-topline {display:flex;align-items:center;justify-content:space-between;gap:8px 11px;flex-wrap:wrap;margin-bottom:12px;}
.vhloc__card-meta {display:inline-flex;align-items:center;gap:0;color:var(--viv-primary);font-size:10px;font-weight:650;letter-spacing:.11em;text-transform:uppercase;line-height:1.5;}
.vhloc__tiny-line {display:none;}
.vhloc__city {display:inline-flex;align-items:center;gap:4px;min-width:0;max-width:100%;color:var(--viv-primary);font-size:11px;line-height:1.45;font-weight:500;overflow-wrap:anywhere;}
.vhloc__city svg {width:13px;height:13px;flex:0 0 13px;}
.vhloc__card h3 {margin:0;color:var(--viv-primary-deep);font-size:18px;font-weight:600;letter-spacing:-.018em;line-height:1.35;overflow-wrap:break-word;text-wrap:pretty;}
.vhloc__card h3 a {color:inherit;text-decoration:none;}
.vhloc__card h3 a:hover {color:var(--viv-primary);}
.vhloc__details {display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:13px;min-width:0;margin:21px 0 23px;}
.vhloc__detail {display:flex;align-items:flex-start;min-width:0;gap:9px;}
.vhloc__detail:first-child {padding-bottom:14px;border-bottom:1px solid var(--viv-brand-border);}
.vhloc__detail-icon {display:grid;place-items:center;flex:0 0 28px;width:28px;height:28px;color:var(--viv-primary);background:var(--viv-primary-soft-2);border:1px solid var(--viv-primary-soft-2);border-radius:8px;}
.vhloc__detail-icon svg {display:block;width:15px;height:15px;}
/* Distinct, accessible icon palettes for each type of location information. */
.vhloc__detail--address .vhloc__detail-icon {background:var(--viv-accent-soft);border-color:color-mix(in srgb,var(--viv-accent) 55%,var(--viv-white));color:color-mix(in srgb,var(--viv-accent) 72%,var(--viv-ink));}
.vhloc__detail--phone .vhloc__detail-icon {background:#e7f7f1;border-color:#cceadf;color:#167f69;}
.vhloc__detail--hours .vhloc__detail-icon {background:#eaf0fa;border-color:var(--viv-brand-border);color:#456a9c;}

.vhloc__detail-copy {min-width:0;padding-top:1px;}
.vhloc .vhloc__detail-label {display:block;margin-bottom:4px;color:var(--viv-primary);font-size:11.5px;font-weight:800;line-height:1.4;letter-spacing:.035em;text-transform:uppercase;}
.vhloc__detail-copy p,.vhloc__phone {display:block;margin:0;color:var(--viv-primary);font-size:12.5px;font-weight:450;line-height:1.65;letter-spacing:0;overflow-wrap:anywhere;text-decoration:none;}
.vhloc__phone:hover {color:var(--viv-primary);text-decoration:underline;}
.vhloc__actions {display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;align-items:stretch;min-width:0;margin-top:auto;padding-top:16px;border-top:1px solid var(--viv-primary-soft-2);}
.vhloc__card-link,.vhloc__directions {display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 13px;border-radius:9px;text-decoration:none;font-size:12px;font-weight:600;line-height:1.35;white-space:nowrap;transition:background .2s ease,color .2s ease,border-color .2s ease,transform .2s ease;}
.vhloc__card-link {justify-content:space-between;background:var(--viv-primary-deep);border:1px solid var(--viv-primary-deep);color:#fff;}
.vhloc__card-link svg,.vhloc__directions svg {width:15px;height:15px;flex:0 0 15px;}
.vhloc__card-link:hover {background:var(--viv-primary);border-color:var(--viv-primary);color:#fff;}
.vhloc__card-link:hover svg {transform:translateX(2px);}
.vhloc__directions {background:color-mix(in srgb,var(--viv-accent) 55%,var(--viv-white));border:1px solid var(--viv-accent);color:#38301e;}
.vhloc__directions:hover {background:var(--viv-accent);border-color:var(--viv-accent);color:#312715;}
.vhloc__bottom {display:flex;justify-content:center;margin-top:34px;}
.vhloc__all {display:inline-flex;align-items:center;justify-content:center;gap:26px;min-height:54px;padding:13px 25px;border:1px solid var(--viv-primary-deep);border-radius:13px;background:var(--viv-primary-deep);color:#fff;text-decoration:none;font-size:14px;font-weight:750;line-height:1.4;transition:transform .25s ease,background .25s ease,border-color .25s ease;}
.vhloc__all svg {width:19px;height:19px;transition:transform .25s ease;}
.vhloc__all:hover {background:var(--viv-primary);border-color:var(--viv-primary);color:#fff;transform:translateY(-2px);}
.vhloc__all:hover svg {transform:translateX(4px);}
.vhloc a:focus-visible {outline:3px solid var(--viv-accent);outline-offset:3px;}
@media(max-width:1100px) {
 .vhloc__grid {grid-template-columns:repeat(2,minmax(0,1fr));}
 .vhloc__heading-row {gap:25px;}
 .vhloc__description {flex-basis:310px;}
}
@media(max-width:690px) {
 .vhloc {padding:38px 0 41px;}
 .vhloc__shell {width:calc(100% - 30px);}
 .vhloc__heading-row {display:block;margin-bottom:23px;}
 .vhloc__intro h2 {font-size:clamp(23px,6vw,29px);max-width:23ch;line-height:1.23;}
 .vhloc__eyebrow {font-size:10px;margin-bottom:12px;}
 .vhloc__description {max-width:44ch;margin-top:13px;padding:0;border:0;font-size:13px;line-height:1.65;}
 .vhloc__grid {grid-template-columns:minmax(0,1fr);gap:16px;}
 .vhloc__card {border-radius:16px;}
 .vhloc__card-visual {height:174px;flex-basis:174px;}
 .vhloc__card-main {padding:19px 18px 18px;}
 .vhloc__card-main::before {left:18px;}
 .vhloc__card h3 {font-size:17px;line-height:1.4;}
 .vhloc__details {margin:19px 0 21px;gap:12px 10px;}
 .vhloc__bottom {margin-top:23px;}
 .vhloc__all {font-size:13px;min-height:50px;}
 .vhloc__shape--a {right:-175px;top:-160px;}
 .vhloc__shape--b {left:-180px;bottom:-145px;}
}
@media(max-width:350px) {
 .vhloc__card-main {padding-right:15px;padding-left:15px;}
 .vhloc__card-main::before {left:15px;}
 .vhloc__details {grid-template-columns:minmax(0,1fr);}
 .vhloc__detail:first-child {grid-column:auto;}
 .vhloc__card-link,.vhloc__directions {font-size:11.5px;padding:8px 10px;gap:5px;}
}
@media(prefers-reduced-motion:reduce) {
 .vhloc__card,.vhloc__all,.vhloc__all svg,.vhloc__card-link,.vhloc__directions,.vhloc__map-open {transition:none!important;}
}
