/* ==========================================================================
   RALLY LABOR // PLACEMENT MAP WIDGET
   Ported 1:1 from rally-labor-social-proof.html (Section 1).
   Every selector is prefixed with the widget wrapper class so Hello Elementor
   reset + Elementor Kit globals (p, h2, h3, button) cannot override it.
   The prefix is applied uniformly, so the relative specificity between rules
   is identical to the source file.
   Fonts (IBM Plex Sans / Sans Condensed / Mono) are enqueued in functions.php.
   ========================================================================== */
.elementor-widget-rally_placement_map .rl-scope{
  --rl-amber:#fbb03b;
  --rl-amber-lo:#c8871f;
  --rl-ink:#333333;
  --rl-ink-deep:#292929;
  --rl-paper:#ffffff;
  --rl-fog:#f3f2f0;
  --rl-line:#dedcd8;
  --rl-mute:#6f6c66;
  --rl-onink-dim:#a5a19a;
  --rl-state-off:#454545;
  --rl-state-line:#565656;

  --rl-display:"IBM Plex Sans Condensed",Arial Narrow,sans-serif;
  --rl-body:"IBM Plex Sans",system-ui,-apple-system,sans-serif;
  --rl-data:"IBM Plex Mono",ui-monospace,monospace;

  --rl-pad:clamp(3rem,7vw,6.5rem);
  --rl-max:1240px;
}
.elementor-widget-rally_placement_map .rl-scope *,.elementor-widget-rally_placement_map .rl-scope *::before,.elementor-widget-rally_placement_map .rl-scope *::after{box-sizing:border-box;}
.elementor-widget-rally_placement_map .rl-scope p,.elementor-widget-rally_placement_map .rl-scope h2,.elementor-widget-rally_placement_map .rl-scope h3,.elementor-widget-rally_placement_map .rl-scope ul,.elementor-widget-rally_placement_map .rl-scope li{margin:0;padding:0;list-style:none;}

/* ---- shared type ---- */
.elementor-widget-rally_placement_map .rl-scope .rl-eyebrow{
  font-family:var(--rl-data);font-size:.6875rem;font-weight:500;
  letter-spacing:.22em;text-transform:uppercase;
  display:flex;align-items:center;gap:.75rem;
}
.elementor-widget-rally_placement_map .rl-scope .rl-eyebrow::after{content:"";height:1px;flex:1;max-width:120px;background:currentColor;opacity:.35;}
.elementor-widget-rally_placement_map .rl-scope .rl-h2{
  font-family:var(--rl-display);font-weight:700;
  font-size:clamp(2.1rem,5.2vw,3.85rem);line-height:.98;letter-spacing:-.018em;
  text-wrap:balance;
}
.elementor-widget-rally_placement_map .rl-scope .rl-lede{
  font-family:var(--rl-body);font-size:clamp(1rem,1.35vw,1.0625rem);
  line-height:1.62;max-width:46ch;
}

/* ==========================================================================
   PLACEMENT MAP
   Default = dark charcoal. "Surface Color" in the widget's Style tab maps to
   --rl-surface; roster cells and state borders derive from it.
   Light variant = class "rl-theme-light" (widget switch).
   ========================================================================== */
.elementor-widget-rally_placement_map .rl-map-sec{
  --rl-surface:#333333;
  --rl-surface-txt:#ffffff;
  --rl-surface-dim:#a5a19a;
  --rl-accent-txt:#fbb03b;
  --rl-hair:rgba(255,255,255,.14);
  --rl-cell:var(--rl-surface);
  --rl-cell-hover:rgba(255,255,255,.07);
  --rl-st-off:#4a4a4a;
  --rl-st-off-line:#5b5b5b;
  --rl-st-on-stroke:var(--rl-surface);
  --rl-st-lit:#ffd489;
  --rl-glow:rgba(251,176,59,.10);
  --rl-note-txt:#8b8781;

  background:var(--rl-surface);color:var(--rl-surface-txt);
  padding:var(--rl-pad) 1.5rem;
  font-family:var(--rl-body);
  position:relative;overflow:hidden;
}
.elementor-widget-rally_placement_map .rl-map-sec.rl-theme-light{
  --rl-surface:#f3f2f0;
  --rl-surface-txt:#333333;
  --rl-surface-dim:#6f6c66;
  --rl-accent-txt:#c8871f;
  --rl-hair:#dedcd8;
  --rl-cell:#ffffff;
  --rl-cell-hover:#faf9f7;
  --rl-st-off:#dcdbd8;
  --rl-st-off-line:#f3f2f0;
  --rl-st-lit:#e09a20;
  --rl-glow:rgba(251,176,59,.13);
  --rl-note-txt:#87837c;
}
.elementor-widget-rally_placement_map .rl-map-sec::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(120% 90% at 62% 42%,var(--rl-glow),transparent 58%);
}
.elementor-widget-rally_placement_map .rl-map-sec .rl-inner{max-width:var(--rl-max);margin:0 auto;position:relative;}
.elementor-widget-rally_placement_map .rl-map-sec .rl-eyebrow{color:var(--rl-accent-txt);}
.elementor-widget-rally_placement_map .rl-map-sec .rl-h2{margin:1.25rem 0 1.1rem;color:var(--rl-surface-txt);}
.elementor-widget-rally_placement_map .rl-map-sec .rl-h2 em{font-style:normal;color:var(--rl-accent-txt);}
.elementor-widget-rally_placement_map .rl-map-sec .rl-lede{color:var(--rl-surface-dim);}

/* stat strip (off by default, widget switch) */
.elementor-widget-rally_placement_map .rl-statbar{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:1px;background:var(--rl-hair);border:1px solid var(--rl-hair);
  margin:2.75rem 0 0;
}
.elementor-widget-rally_placement_map .rl-stat{background:var(--rl-cell);padding:1.15rem 1.25rem;}
.elementor-widget-rally_placement_map .rl-stat b{
  display:block;font-family:var(--rl-display);font-weight:700;
  font-size:clamp(1.75rem,3.4vw,2.6rem);line-height:1;color:var(--rl-accent-txt);
  font-variant-numeric:tabular-nums;
}
.elementor-widget-rally_placement_map .rl-stat span{
  display:block;margin-top:.45rem;font-family:var(--rl-data);
  font-size:.625rem;letter-spacing:.17em;text-transform:uppercase;color:var(--rl-surface-dim);
}

/* map + roster layout */
.elementor-widget-rally_placement_map .rl-mapgrid{
  display:grid;grid-template-columns:minmax(0,1.68fr) minmax(255px,.85fr);
  gap:clamp(1.75rem,3.5vw,3.25rem);align-items:start;
  margin-top:clamp(2.25rem,4vw,3.25rem);
}
.elementor-widget-rally_placement_map .rl-mapwrap{position:relative;}
.elementor-widget-rally_placement_map .rl-mapwrap svg{width:100%;height:auto;display:block;overflow:visible;}

.elementor-widget-rally_placement_map .rl-scope .rl-st{
  fill:var(--rl-st-off);stroke:var(--rl-st-off-line);stroke-width:.7;
  stroke-linejoin:round;
}
.elementor-widget-rally_placement_map .rl-scope .rl-st.is-on{
  fill:var(--rl-amber);stroke:var(--rl-st-on-stroke);stroke-width:1.1;
  transform-box:fill-box;transform-origin:center;
  transition:fill .16s ease;
}
/* staged reveal */
.elementor-widget-rally_placement_map .rl-mapwrap[data-anim="1"] .rl-st.is-on{opacity:0;}
.elementor-widget-rally_placement_map .rl-mapwrap[data-anim="1"].is-live .rl-st.is-on{
  animation:rl-stamp .42s cubic-bezier(.2,.75,.3,1) both;
  animation-delay:var(--d,0ms);
}
@keyframes rl-stamp{
  0%{opacity:0;transform:scale(.9);}
  60%{opacity:1;transform:scale(1.03);}
  100%{opacity:1;transform:scale(1);}
}
.elementor-widget-rally_placement_map .rl-scope .rl-st.is-on.is-lit{fill:var(--rl-st-lit);}

/* roster */
.elementor-widget-rally_placement_map .rl-roster{border-top:1px solid var(--rl-hair);}
.elementor-widget-rally_placement_map .rl-roster h3{
  font-family:var(--rl-data);font-size:.625rem;font-weight:500;letter-spacing:.2em;
  text-transform:uppercase;color:var(--rl-surface-dim);padding:.9rem 0;
}
.elementor-widget-rally_placement_map .rl-roster ul{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;
  background:var(--rl-hair);border-top:1px solid var(--rl-hair);
}
.elementor-widget-rally_placement_map .rl-roster li{background:var(--rl-cell);}
.elementor-widget-rally_placement_map .rl-roster button{
  all:unset;display:flex;align-items:baseline;gap:.55rem;width:100%;
  padding:.62rem .7rem;cursor:pointer;box-sizing:border-box;
  transition:background .16s ease;
}
.elementor-widget-rally_placement_map .rl-roster button:hover,.elementor-widget-rally_placement_map .rl-roster button:focus-visible{background:var(--rl-cell-hover);}
.elementor-widget-rally_placement_map .rl-roster button:focus-visible{outline:2px solid var(--rl-amber);outline-offset:-2px;}
.elementor-widget-rally_placement_map .rl-roster .rl-ab{
  font-family:var(--rl-data);font-size:.6875rem;font-weight:600;letter-spacing:.06em;
  color:var(--rl-accent-txt);min-width:1.9em;
}
.elementor-widget-rally_placement_map .rl-roster .rl-nm{font-size:.8125rem;color:var(--rl-surface-txt);line-height:1.2;}
.elementor-widget-rally_placement_map .rl-note{
  margin-top:1.5rem;font-family:var(--rl-data);font-size:.6875rem;line-height:1.7;
  color:var(--rl-note-txt);letter-spacing:.02em;
}

/* ---- theme guard ----------------------------------------------------------
   The source file was built on a bare page (16px / line-height normal).
   rallylabor.com's Elementor Kit sets body 1.15rem / 1.7em (inherited),
   h2 uppercase, and Hello sets h1-h6 line-height 1.2. Restore source values. */
.elementor-widget-rally_placement_map .rl-scope{font-size:1rem;line-height:normal;}
.elementor-widget-rally_placement_map .rl-scope .rl-h2{text-transform:none;}
.elementor-widget-rally_placement_map .rl-roster h3{line-height:normal;}

/* Hello reset / Elementor Kit style button:focus with a pink or kit-colored
   fill. Keep roster cells transparent unless hovered. */
.elementor-widget-rally_placement_map .rl-roster button:not(:hover):not(:focus-visible){background:transparent;}
.elementor-widget-rally_placement_map .rl-roster button:focus:not(:focus-visible){outline:none;}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media(max-width:960px){
  .elementor-widget-rally_placement_map .rl-mapgrid{grid-template-columns:1fr;}
  .elementor-widget-rally_placement_map .rl-roster ul{grid-template-columns:repeat(3,minmax(0,1fr));}
}
@media(max-width:600px){
  .elementor-widget-rally_placement_map .rl-statbar{grid-template-columns:1fr;}
  .elementor-widget-rally_placement_map .rl-roster ul{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(prefers-reduced-motion:reduce){
  .elementor-widget-rally_placement_map .rl-scope *{animation:none!important;transition:none!important;}
  .elementor-widget-rally_placement_map .rl-mapwrap[data-anim="1"] .rl-st.is-on{opacity:1!important;}
}
