/* CALVARY / WORK NEAR YOU
   One self-owned fixed interaction block, per the Calvary design blueprint. */
.cal-workmap {
  --cal-map-red: #dc1f26;
  --cal-map-red-hot: #ef353b;
  --cal-map-black: #090b0e;
  --cal-map-deep: #080a0d;
  --cal-map-dark: #111419;
  --cal-map-charcoal: #15191e;
  --cal-map-paper: #f3f2ef;
  --cal-map-muted: #9da3aa;
  --cal-map-line: rgba(255,255,255,.13);
  --cal-map-ease: cubic-bezier(.2,.75,.2,1);
  position: relative;
  z-index: 2147483000;
  font-family: inherit;
}

.cal-workmap *,
.cal-workmap *::before,
.cal-workmap *::after { box-sizing: border-box; }

.cal-workmap__trigger-dock {
  position: fixed;
  z-index: 4;
  left: 0;
  top: 50%;
  width: 64px;
  height: 178px;
  transform: translateY(-50%);
  isolation: isolate;
  overflow: visible;
  transition: transform .32s var(--cal-map-ease);
}

/* Continuous blade system.
   The upper and lower layers meet behind the tab instead of relying on a
   separate bridge element. Desktop blade reach is intentionally restrained
   to 32dvh on each side so the red reads as a signal/handoff rather than a
   full-height rail. The solid signal blade stays slimmer than the translucent
   undercut, matching the Calvary transition language. */
.cal-workmap__trigger-blade {
  position: absolute;
  left: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0;
  will-change: transform, opacity;
  transition:
    transform .36s cubic-bezier(.18,.78,.20,1),
    opacity .16s ease;
}

.cal-workmap__trigger-blade--top,
.cal-workmap__trigger-blade--top-under {
  bottom: calc(50% - 2px);
  height: calc(32dvh + 2px);
  transform-origin: left bottom;
}

.cal-workmap__trigger-blade--bottom,
.cal-workmap__trigger-blade--bottom-under {
  top: calc(50% - 2px);
  height: calc(32dvh + 2px);
  transform-origin: left top;
}

/* Wider translucent undercut. The outer tip collapses to ~1px. */
.cal-workmap__trigger-blade--top-under {
  width: 42px;
  background: linear-gradient(90deg, rgba(239,53,59,.16) 0%, rgba(239,53,59,.40) 100%);
  clip-path: polygon(0 0, 1px 0, 100% 100%, 0 100%);
  transform: translateX(-38px);
}

.cal-workmap__trigger-blade--bottom-under {
  width: 42px;
  background: linear-gradient(90deg, rgba(239,53,59,.16) 0%, rgba(239,53,59,.40) 100%);
  clip-path: polygon(0 100%, 1px 100%, 100% 0, 0 0);
  transform: translateX(-38px);
}

/* Slim solid signal blade. */
.cal-workmap__trigger-blade--top {
  z-index: 1;
  width: 22px;
  background: linear-gradient(90deg, #d61a21 0%, var(--cal-map-red-hot) 100%);
  clip-path: polygon(0 0, 1px 0, 100% 100%, 0 100%);
  transform: translateX(-19px);
  box-shadow: inset -1px 0 rgba(255,255,255,.08);
}

.cal-workmap__trigger-blade--bottom {
  z-index: 1;
  width: 22px;
  background: linear-gradient(90deg, #d61a21 0%, var(--cal-map-red-hot) 100%);
  clip-path: polygon(0 100%, 1px 100%, 100% 0, 0 0);
  transform: translateX(-19px);
  box-shadow: inset -1px 0 rgba(255,255,255,.08);
}

.cal-workmap__trigger {
  position: absolute;
  z-index: 4;
  inset: 0 auto auto 0;
  width: 36px;
  height: 178px;
  padding: 0;
  border: 1px solid rgba(255,255,255,.16);
  border-left: 0;
  background:
    linear-gradient(90deg, rgba(220,31,38,.055), transparent 58%),
    linear-gradient(145deg, rgba(255,255,255,.024), transparent 44%),
    #090b0e;
  color: #fff;
  cursor: pointer;

  /* Utility-knife style isosceles trapezoid.
     Narrower body, longer profile, and a more aggressive taper toward the page. */
  clip-path: polygon(
    0 0,
    100% 16%,
    100% 84%,
    0 100%
  );

  box-shadow: 9px 16px 34px rgba(0,0,0,.20);
  transform: translate3d(0,0,0);
  transition:
    transform .20s cubic-bezier(.18,.78,.20,1) .16s,
    filter .20s ease .16s,
    box-shadow .20s ease .16s,
    border-color .20s ease .16s;
  isolation: isolate;
  overflow: hidden;
}

.cal-workmap__trigger::before {
  content: "";
  position: absolute;
  inset: 1px;
  pointer-events: none;
  clip-path: polygon(
    0 0,
    100% 16%,
    100% 84%,
    0 100%
  );
  background:
    repeating-linear-gradient(0deg, rgba(255,255,255,.022) 0 1px, transparent 1px 30px),
    linear-gradient(90deg, transparent 0 56%, rgba(255,255,255,.024) 56% 58%, transparent 58%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.07);
  z-index: -1;
}

.cal-workmap__trigger::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 16px;
  width: 8px;
  height: 8px;
  border: 1px solid rgba(239,53,59,.82);
  transform: translateX(-50%) rotate(45deg);
  box-shadow: 0 0 12px rgba(220,31,38,.17);
  pointer-events: none;
}

/* Blades deploy first. The tab begins following after the red geometry is
   already underway and only travels part of the blade's center reach. */
.cal-workmap__trigger-dock:hover .cal-workmap__trigger-blade,
.cal-workmap__trigger-dock:focus-within .cal-workmap__trigger-blade {
  opacity: 1;
}

.cal-workmap__trigger-dock:hover .cal-workmap__trigger-blade--top-under,
.cal-workmap__trigger-dock:focus-within .cal-workmap__trigger-blade--top-under,
.cal-workmap__trigger-dock:hover .cal-workmap__trigger-blade--bottom-under,
.cal-workmap__trigger-dock:focus-within .cal-workmap__trigger-blade--bottom-under {
  transform: translateX(3px);
}

.cal-workmap__trigger-dock:hover .cal-workmap__trigger-blade--top,
.cal-workmap__trigger-dock:focus-within .cal-workmap__trigger-blade--top,
.cal-workmap__trigger-dock:hover .cal-workmap__trigger-blade--bottom,
.cal-workmap__trigger-dock:focus-within .cal-workmap__trigger-blade--bottom {
  transform: translateX(0);
}

.cal-workmap__trigger-dock:hover .cal-workmap__trigger,
.cal-workmap__trigger-dock:focus-within .cal-workmap__trigger {
  outline: none;
  transform: translateX(10px);
  filter: brightness(1.07);
  border-color: rgba(239,53,59,.34);
  box-shadow: 10px 18px 36px rgba(0,0,0,.28);
}

.cal-workmap__trigger:focus-visible {
  outline: 1px solid rgba(239,53,59,.88);
  outline-offset: 4px;
}

.cal-workmap__trigger-index {
  position: absolute;
  top: 14px;
  left: 50%;
  transform: translateX(-50%);
  color: var(--cal-map-red-hot);
  font: 900 7px/1 Inter, Arial, sans-serif;
  letter-spacing: .14em;
}

.cal-workmap__trigger-title {
  position: absolute;
  left: 42%;
  top: 50%;
  white-space: nowrap;
  color: rgba(255,255,255,.97);
  font: 900 9px/1 "Arial Black", Arial, sans-serif;
  letter-spacing: .10em;
  text-transform: uppercase;
  transform: translate(-50%,-50%) rotate(90deg);
  transform-origin: center center;
}

.cal-workmap__trigger-signal {
  position: absolute;
  right: 0;
  top: 13px;
  width: 2px;
  height: 24px;
  background: linear-gradient(to bottom, var(--cal-map-red-hot), transparent);
  box-shadow: 0 0 14px rgba(220,31,38,.25);
}

.cal-workmap__scrim {
  position: fixed;
  z-index: 1;
  inset: 0;
  background: rgba(2,4,7,.64);
  backdrop-filter: blur(3px);
  opacity: 0;
  visibility: hidden;
  transition: opacity .34s ease, visibility .34s step-end;
}

.cal-workmap__drawer {
  position: fixed;
  z-index: 3;
  inset: 0 auto 0 0;
  width: min(610px, 92vw);
  min-height: 100dvh;
  display: grid;
  grid-template-rows: auto 1fr;
  overflow: hidden;
  color: #fff;
  background:
    radial-gradient(circle at 9% 13%, rgba(220,31,38,.16), transparent 25%),
    linear-gradient(140deg, rgba(255,255,255,.025), transparent 35%),
    var(--cal-map-black);
  border-right: 1px solid rgba(255,255,255,.14);
  box-shadow: 26px 0 80px rgba(0,0,0,.38);
  transform: translate3d(-104%,0,0);
  transition: transform .48s var(--cal-map-ease);
}

.cal-workmap.is-open .cal-workmap__scrim {
  opacity: 1;
  visibility: visible;
  transition: opacity .34s ease, visibility 0s;
}

.cal-workmap.is-open .cal-workmap__drawer { transform: translate3d(0,0,0); }
.cal-workmap.is-open .cal-workmap__trigger-dock { transform: translate(-115%, -50%); }

.cal-workmap__sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0,0,0,0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.cal-workmap__header {
  position: relative;
  min-height: 206px;
  padding: 25px 32px 19px;
  border-bottom: 1px solid var(--cal-map-line);
  overflow: hidden;
  isolation: isolate;
  background:
    linear-gradient(112deg, rgba(220,31,38,.11), transparent 34%),
    radial-gradient(circle at 82% 6%, rgba(255,255,255,.035), transparent 28%);
}

.cal-workmap__header::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -3;
  opacity: .42;
  background-image:
    linear-gradient(rgba(255,255,255,.032) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.026) 1px, transparent 1px);
  background-size: 52px 52px;
  mask-image: linear-gradient(90deg, #000, rgba(0,0,0,.74) 56%, transparent 100%);
}

.cal-workmap__meta {
  position: relative;
  z-index: 4;
  display: flex;
  align-items: center;
  gap: 10px;
  width: max-content;
  margin: 0 56px 20px 0;
  color: var(--cal-map-muted);
  text-transform: uppercase;
  font: 700 9px/1.2 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  letter-spacing: .17em;
}

.cal-workmap__diamond {
  width: 7px;
  height: 7px;
  flex: 0 0 auto;
  background: var(--cal-map-red);
  transform: rotate(45deg);
}

.cal-workmap__close {
  position: absolute;
  z-index: 7;
  top: 18px;
  right: 20px;
  width: 38px;
  height: 38px;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(255,255,255,.035);
  cursor: pointer;
  transition: border-color .2s ease, background .2s ease;
}

.cal-workmap__close:hover,
.cal-workmap__close:focus-visible {
  border-color: rgba(239,53,59,.8);
  background: rgba(220,31,38,.1);
  outline: none;
}

.cal-workmap__close span {
  position: absolute;
  left: 10px;
  right: 10px;
  top: 18px;
  height: 1px;
  background: #fff;
}
.cal-workmap__close span:first-child { transform: rotate(45deg); }
.cal-workmap__close span:last-child { transform: rotate(-45deg); }

.cal-workmap__abstract {
  position: absolute;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
}

.cal-workmap__ghost-count {
  position: absolute;
  right: -20px;
  top: 8px;
  color: rgba(255,255,255,.026);
  font-family: "Arial Black", Arial, sans-serif;
  font-size: 194px;
  font-weight: 900;
  line-height: .84;
  letter-spacing: -.095em;
  white-space: nowrap;
}

.cal-workmap__route {
  position: absolute;
  left: -54px;
  height: 1px;
  transform-origin: left center;
}

.cal-workmap__route--a {
  top: 144px;
  width: 510px;
  background: linear-gradient(90deg, transparent, rgba(220,31,38,.28) 14%, #ef353b 68%, rgba(239,53,59,.08));
  transform: rotate(-7deg);
  box-shadow: 0 0 15px rgba(220,31,38,.14);
}

.cal-workmap__route--b {
  top: 154px;
  width: 370px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.12), transparent);
  transform: rotate(-7deg) translateY(8px);
}

.cal-workmap__node {
  position: absolute;
  width: 8px;
  height: 8px;
  border: 1px solid rgba(239,53,59,.75);
  background: #0b0e12;
  transform: rotate(45deg);
}

.cal-workmap__node--a { left: 232px; top: 113px; }
.cal-workmap__node--b { left: 409px; top: 92px; width: 6px; height: 6px; }

.cal-workmap__field-lockup {
  position: relative;
  z-index: 3;
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: end;
  gap: 24px;
}

.cal-workmap__field-title {
  display: flex;
  flex-direction: column;
  width: max-content;
  text-transform: uppercase;
  font-family: "Arial Black", Arial, sans-serif;
  font-size: clamp(42px, 5.6vw, 68px);
  font-weight: 900;
  line-height: .78;
  letter-spacing: -.075em;
}

.cal-workmap__field-title span {
  color: #fff;
}

.cal-workmap__field-title strong {
  position: relative;
  left: 56px;
  color: var(--cal-map-red-hot);
  font: inherit;
}

.cal-workmap__field-data {
  display: grid;
  grid-template-columns: auto auto;
  align-items: end;
  gap: 10px;
  padding-bottom: 2px;
}

.cal-workmap__field-index {
  color: #fff;
  font-family: Inter, Arial, sans-serif;
  font-size: 31px;
  font-weight: 300;
  line-height: .82;
  letter-spacing: -.06em;
}

.cal-workmap__field-label {
  color: var(--cal-map-muted);
  text-transform: uppercase;
  font: 700 8px/1.2 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  letter-spacing: .11em;
}

.cal-workmap__field-footer {
  position: absolute;
  z-index: 4;
  left: 32px;
  right: 32px;
  bottom: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  color: rgba(255,255,255,.45);
  text-transform: uppercase;
  font: 700 7px/1.2 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  letter-spacing: .12em;
}

.cal-workmap__field-footer span:last-child {
  text-align: right;
}

.cal-workmap__map-shell {
  position: relative;
  min-height: 420px;
  background: #0b0e12;
  overflow: hidden;
}

.cal-workmap__map {
  position: absolute;
  inset: 0;
  background: #0c1014;
}

.cal-workmap__grid {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
  opacity: .18;
  background-image:
    linear-gradient(rgba(255,255,255,.07) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.07) 1px, transparent 1px);
  background-size: 54px 54px;
  mask-image: linear-gradient(to bottom, rgba(0,0,0,.52), transparent 70%);
}

.cal-workmap__map-status {
  position: absolute;
  z-index: 4;
  left: 20px;
  bottom: 18px;
  max-width: calc(100% - 40px);
  padding: 8px 10px;
  border-left: 2px solid var(--cal-map-red);
  background: rgba(8,10,13,.78);
  color: #d8dadd;
  font: 700 9px/1.2 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  letter-spacing: .09em;
  text-transform: uppercase;
  transition: opacity .2s ease;
}

.cal-workmap__map-status.is-ready { opacity: 0; pointer-events: none; }
.cal-workmap__map-status.is-error { color: #fff; opacity: 1; }

.cal-workmap__legend {
  position: absolute;
  z-index: 4;
  right: 18px;
  top: 18px;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border: 1px solid rgba(255,255,255,.13);
  background: rgba(8,10,13,.78);
  color: #c8ccd1;
  text-transform: uppercase;
  font: 700 8px/1 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  letter-spacing: .11em;
}

.cal-workmap__legend-pin {
  width: 8px;
  height: 8px;
  background: var(--cal-map-red-hot);
  transform: rotate(45deg);
  box-shadow: 0 0 0 2px rgba(239,53,59,.13);
}

.cal-workmap__marker {
  position: absolute;
  width: 48px;
  height: 72px;
  transform: translate(-50%, -100%);
  filter: drop-shadow(0 7px 9px rgba(0,0,0,.42));
  pointer-events: none;
}

.cal-workmap__marker img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  user-select: none;
  -webkit-user-drag: none;
}

.cal-workmap .gm-style .gm-style-cc,
.cal-workmap .gm-style a[href^="https://maps.google.com/maps"] { opacity: .88; }

body.cal-workmap-lock { overflow: hidden; }

@media (max-width: 860px) {
  .cal-workmap__marker {
    width: 42px;
    height: 63px;
  }

  .cal-workmap__trigger-dock {
    top: auto;
    left: 14px;
    right: auto;
    bottom: 14px;
    width: 168px;
    height: 44px;
    transform: none;
  }

  /* Same visual language, different geometry: the long desktop blades are
     removed on touch layouts and the red undercut becomes a compact edge. */
  .cal-workmap__trigger-blade {
    display: none;
  }

  .cal-workmap__trigger {
    inset: 0 auto auto 0;
    width: 168px;
    height: 44px;
    min-height: 0;
    transform: none;
    clip-path: polygon(9px 0, calc(100% - 9px) 0, 100% 100%, 0 100%);
    box-shadow:
      -4px 0 0 rgba(239,53,59,.28),
      7px 0 0 var(--cal-map-red),
      0 14px 28px rgba(0,0,0,.24);
    transition-delay: 0s;
  }

  .cal-workmap__trigger-dock:hover .cal-workmap__trigger,
  .cal-workmap__trigger-dock:focus-within .cal-workmap__trigger {
    transform: translateY(-2px);
  }

  .cal-workmap__trigger::before {
    clip-path: polygon(9px 0, calc(100% - 9px) 0, 100% 100%, 0 100%);
  }

  .cal-workmap__trigger::after {
    left: auto;
    right: 15px;
    bottom: 50%;
    transform: translateY(50%) rotate(45deg);
  }

  .cal-workmap__trigger-index {
    top: 50%;
    left: 16px;
    transform: translateY(-50%);
    font-size: 7px;
  }

  .cal-workmap__trigger-title {
    left: 41px;
    top: 50%;
    transform: translateY(-50%);
    transform-origin: left center;
    font-size: 9px;
    letter-spacing: .09em;
  }

  .cal-workmap__trigger-signal {
    top: 8px;
    right: 0;
    width: 2px;
    height: 26px;
  }

  .cal-workmap.is-open .cal-workmap__trigger-dock { transform: translateY(90px); }

  .cal-workmap__drawer {
    inset: auto 0 0 0;
    width: 100%;
    min-height: 0;
    height: min(88dvh, 820px);
    border-right: 0;
    border-top: 1px solid rgba(255,255,255,.14);
    transform: translate3d(0,105%,0);
    box-shadow: 0 -28px 80px rgba(0,0,0,.42);
  }

  .cal-workmap.is-open .cal-workmap__drawer { transform: translate3d(0,0,0); }

  .cal-workmap__header {
    min-height: 166px;
    padding: 18px 20px 16px;
  }

  .cal-workmap__meta { margin-bottom: 16px; font-size: 8px; }
  .cal-workmap__close { top: 13px; right: 14px; width: 36px; height: 36px; }
  .cal-workmap__close span { top: 17px; }
  .cal-workmap__ghost-count { right: -10px; top: 26px; font-size: 124px; }
  .cal-workmap__route--a { top: 119px; width: 360px; transform: rotate(-7deg); }
  .cal-workmap__route--b { top: 126px; width: 280px; }
  .cal-workmap__node--a { left: 174px; top: 94px; }
  .cal-workmap__node--b { left: 302px; top: 78px; }
  .cal-workmap__field-lockup { gap: 12px; }
  .cal-workmap__field-title { font-size: clamp(35px, 9vw, 48px); }
  .cal-workmap__field-title strong { left: 36px; }
  .cal-workmap__field-index { font-size: 24px; }
  .cal-workmap__field-label { display: none; }
  .cal-workmap__field-footer { left: 20px; right: 20px; bottom: 10px; font-size: 6px; gap: 12px; }
  .cal-workmap__field-footer span:last-child { max-width: 180px; }
  .cal-workmap__map-shell { min-height: 0; }
  .cal-workmap__legend { top: 12px; right: 12px; }
  .cal-workmap__map-status { left: 12px; bottom: 12px; }
}

@media (max-width: 520px) {
  .cal-workmap__drawer { height: 91dvh; }
  .cal-workmap__header { min-height: 150px; padding: 16px 16px 14px; }
  .cal-workmap__meta { max-width: calc(100% - 48px); margin-bottom: 15px; letter-spacing: .11em; }
  .cal-workmap__field-title { font-size: clamp(33px, 10.2vw, 43px); }
  .cal-workmap__field-title strong { left: 28px; }
  .cal-workmap__field-index { font-size: 21px; }
  .cal-workmap__ghost-count { font-size: 105px; top: 31px; right: -8px; }
  .cal-workmap__route--a { top: 111px; width: 310px; }
  .cal-workmap__route--b { top: 119px; width: 236px; }
  .cal-workmap__node--a { left: 145px; top: 90px; }
  .cal-workmap__node--b { left: 255px; top: 76px; }
  .cal-workmap__field-footer { left: 16px; right: 16px; bottom: 8px; }
  .cal-workmap__field-footer span:last-child { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .cal-workmap__drawer,
  .cal-workmap__scrim,
  .cal-workmap__trigger,
  .cal-workmap__trigger-dock,
  .cal-workmap__trigger-blade { transition-duration: .01ms !important; }
}


/* =========================================================
   HOMEPAGE / LOCAL SERVICE TERRITORY MAP

   The existing .cal-local__map frame remains the architecture.
   The plugin only replaces its static image surface with a live
   dark Google map. Red is reserved for the real service-county
   boundaries, in keeping with the Calvary signal-line system.
   ========================================================= */

.cal-local__map.cal-local__map--service-live {
  position: relative;
  isolation: isolate;
  overflow: hidden !important;
  background: #080a0d !important;
}

.cal-local__map.cal-local__map--service-live > span {
  display: none !important;
}

.cal-local__map .cal-service-map__canvas {
  position: absolute;
  z-index: 0;
  inset: 0;
  width: 100%;
  height: 100%;
  background: #080a0d;
}

.cal-local__map.cal-local__map--service-live::after {
  z-index: 2;
  pointer-events: none;
}

.cal-service-map__info {
  min-width: 154px;
  padding: 2px 1px;
  color: #101318;
  font-family: Inter, Arial, sans-serif;
}

.cal-service-map__info strong,
.cal-service-map__info span {
  display: block;
}

.cal-service-map__info strong {
  margin-bottom: 5px;
  color: #dc1f26;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .08em;
}

.cal-service-map__info span {
  font-size: 11px;
  line-height: 1.45;
}

.cal-local__map.cal-local__map--service-live .gm-style .gm-style-cc,
.cal-local__map.cal-local__map--service-live .gm-style a[href^="https://maps.google.com/maps"] {
  opacity: .82;
}

@media (max-width: 860px) {
  .cal-local__map.cal-local__map--service-live .gm-style .gm-style-iw-c {
    max-width: 210px !important;
  }
}

