/*
Theme Name: NYGKEY Child
Theme URI: https://www.nygkey.com/
Description: Minimal Astra child theme for the NYGKEY rebuild.
Author: Golden Key Locksmith NYC
Template: astra
Version: 0.1.5
Text Domain: nygkey-child
*/

/* Brand fonts (Inter/Poppins) are served locally by Astra (astra-local-fonts);
   the former Bunny Fonts @import duplicated them and blocked rendering. */

/* -----------------------------------------------------------------------------
 * Design tokens (mirrors theme.json + AGENTS.md locked palette).
 * --------------------------------------------------------------------------- */
:root {
  --nygkey-gold: #ffd500;
  --nygkey-ink: #1a1a1a;
  --nygkey-navy: #111827; /* dark section/overlay navy (matches Info & Prices bar) */
  --nygkey-brand-navy: #113764; /* heading/title navy */
  --nygkey-white: #ffffff;
  --nygkey-text: #2c2c2c;
  --nygkey-text-muted: #6b6b6b;
  --nygkey-surface: #f6f6f6;
  --nygkey-font-heading: "Poppins", sans-serif;
  --nygkey-radius-pill: 999px;
  --nygkey-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);
  --nygkey-shadow-md: 0 4px 14px rgba(0, 0, 0, 0.08);
}

/* -----------------------------------------------------------------------------
 * Body baseline.  Astra + Elementor kit set most type, but the kit can be
 * empty during early bootstrap — these defaults keep the page readable
 * before the kit CSS lands.
 * --------------------------------------------------------------------------- */
body {
  color: var(--nygkey-text);
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

/* Prevent FOUT / FOIT shifting headings before Elementor Kit CSS lands. */
h1, h2, h3, h4, h5, h6 {
  font-family: "Poppins", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

/* -----------------------------------------------------------------------------
 * Phone CTA template part — used by template-parts/phone-cta.php and reused
 * inside Elementor templates via the [nygkey_phone_cta] shortcode.
 * --------------------------------------------------------------------------- */
.nygkey-phone-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  padding: 0.875em 1.75em;
  background: var(--nygkey-gold);
  color: var(--nygkey-ink);
  font-weight: 600;
  border-radius: var(--nygkey-radius-pill);
  text-decoration: none;
  transition: background-color 0.15s ease, color 0.15s ease;
}

.nygkey-phone-cta:hover,
.nygkey-phone-cta:focus {
  background: var(--nygkey-ink);
  color: var(--nygkey-white);
}

/* -----------------------------------------------------------------------------
 * Accessibility: visible focus states.  Astra hides outlines on a few
 * elements; restore for keyboard navigation.
 * --------------------------------------------------------------------------- */
a:focus-visible,
button:focus-visible,
[role="button"]:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 2px solid var(--nygkey-gold);
  outline-offset: 2px;
}

/* Static trust stats used on the rebuilt homepage. */
.nygkey-stat-number,
.nygkey-stat-label {
  display: block;
}

.nygkey-stat-number {
  color: var(--nygkey-gold);
  font-size: clamp(2rem, 3.5vw, 3rem);
  line-height: 0.95;
}

.nygkey-stat-label {
  color: var(--nygkey-ink);
  font-size: clamp(0.85rem, 1.1vw, 1rem);
  font-weight: 600;
  line-height: 1.25;
  margin-top: 0.35rem;
}

.elementor-widget-heading .nygkey-stat-number + .nygkey-stat-label {
  margin-top: 0.35rem;
}

/* Homepage final POC polish. */
.nygkey-testimonial-card {
  border-left: 4px solid var(--nygkey-gold) !important;
}

.nygkey-testimonial-name .elementor-heading-title {
  font-weight: 700 !important;
}

#home_quote_submit {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.18);
  min-height: 52px;
}

#home_quote_submit:hover,
#home_quote_submit:focus {
  transform: translateY(-1px);
}

.elementor-social-icon,
.elementor-icon.elementor-social-icon {
  min-width: 44px;
  min-height: 44px;
  align-items: center;
  justify-content: center;
}

body.page-id-34 .elementor-element-6fa9c54 .review-main {
  background: rgba(255, 255, 255, 0.2) !important;
  border-color: rgba(255, 255, 255, 0.28) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18), 0 8px 20px rgba(0, 0, 0, 0.12) !important;
}

body.page-id-34 .nygkey-hero-highlight {
  color: var(--nygkey-gold) !important;
}

body.page-id-34 .elementor-element-4923efc .elementor-button:hover,
body.page-id-34 .elementor-element-4923efc .elementor-button:focus,
body.page-id-34 .elementor-element-4923efc .elementor-button:hover .elementor-button-icon,
body.page-id-34 .elementor-element-4923efc .elementor-button:focus .elementor-button-icon,
body.page-id-34 .elementor-element-4923efc .elementor-button:hover .elementor-button-text,
body.page-id-34 .elementor-element-4923efc .elementor-button:focus .elementor-button-text {
  color: #113764 !important;
  fill: #113764 !important;
}

body.page-id-34 .elementor-element-1cd677d .elementor-heading-title {
  font-size: 24px !important;
  line-height: 1 !important;
  white-space: nowrap !important;
}

body.page-id-34 .elementor-element-d9a02d0 .elementor-heading-title {
  font-size: 45px !important;
  line-height: 1 !important;
}

body.page-id-34 .elementor-element-ea9c3fe {
  width: 36% !important;
}

body.page-id-34 .nygkey-home-section {
  position: relative;
}

body.page-id-34 .nygkey-home-1984 .e-con-inner,
body.page-id-34 .nygkey-home-about .e-con-inner,
body.page-id-34 .nygkey-home-service-lists .e-con-inner,
body.page-id-34 .nygkey-home-call-strip .e-con-inner,
body.page-id-34 .nygkey-home-why .e-con-inner,
body.page-id-34 .nygkey-home-benefits .e-con-inner,
body.page-id-34 .nygkey-home-appointment-banner .e-con-inner,
body.page-id-34 .nygkey-home-closing .e-con-inner {
  width: min(100%, var(--content-width, 1120px));
}

body.page-id-34 .nygkey-home-intro__year .elementor-heading-title {
  color: var(--nygkey-gold) !important;
  line-height: 0.9 !important;
}

body.page-id-34 .nygkey-home-intro__year .nygkey-since-label {
  display: block !important;
  color: #6b6b6b !important;
  font-family: "Inter", sans-serif !important;
  font-size: 22.5px !important;
  font-weight: 600 !important;
  line-height: 27px !important;
  letter-spacing: 0.8px !important;
  text-transform: uppercase !important;
  margin-left: 30px;
  margin-bottom: 6px;
}

body.page-id-34 .nygkey-home-intro__year .nygkey-year-number {
  display: block !important;
  color: var(--nygkey-gold) !important;
  margin-left: 30px;
  font-size: 64px !important;
  line-height: 1.02 !important;
}

body.page-id-34 .elementor-element-342da793 .elementor-heading-title .nygkey-since-label {
  display: block !important;
  color: #6b6b6b !important;
  font-family: "Inter", sans-serif !important;
  font-size: 22.5px !important;
  font-weight: 600 !important;
  line-height: 27px !important;
  letter-spacing: 0.8px !important;
  text-transform: uppercase !important;
  margin-left: 30px;
  margin-bottom: 6px;
}

body.page-id-34 .elementor-element-342da793 .elementor-heading-title .nygkey-year-number {
  display: block !important;
  color: var(--nygkey-gold) !important;
  margin-left: 30px;
  font-size: 64px !important;
  line-height: 1.02 !important;
}

body.page-id-34 .elementor-element-aaa0f42b .elementor-heading-title {
  margin-top: 4px;
  margin-left: 72px;
  font-size: 22.5px !important;
  line-height: 27px !important;
}

body.page-id-34 .nygkey-home-1984,
body.page-id-34 .nygkey-home-1984__row {
  overflow: visible !important;
}

body.page-id-34 .nygkey-home-1984__stats {
  position: relative;
  z-index: 10;
  min-height: 208px;
  flex-wrap: nowrap !important;
  background: var(--nygkey-gold) !important;
  box-shadow: 0 16px 34px rgba(15, 23, 42, 0.12);
}

body.page-id-34 .nygkey-home-1984__stats .nygkey-home-intro__stat {
  box-sizing: border-box;
  flex: 0 0 calc(50% - 5px) !important;
  width: calc(50% - 5px) !important;
}

body.page-id-34 .nygkey-home-1984__stats .nygkey-home-intro__stat + .nygkey-home-intro__stat {
  margin-left: 10px;
}


body.page-id-34 .nygkey-home-1984__stats .nygkey-home-intro__stat-number .elementor-heading-title,
body.page-id-34 .elementor-element-4ff49n1 .elementor-heading-title,
body.page-id-34 .elementor-element-5b794n1 .elementor-heading-title {
  font-family: "Inter", sans-serif !important;
  font-size: 42px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
}

body.page-id-34 .nygkey-home-1984__stats .nygkey-stat-plus {
  color: #ffffff !important;
  font-family: "Inter", sans-serif !important;
  font-size: 24px !important;
  font-weight: 500 !important;
  line-height: 1.3 !important;
  vertical-align: super;
}

body.page-id-34 .nygkey-home-1984__stats .nygkey-home-intro__stat-label .elementor-heading-title,
body.page-id-34 .elementor-element-4ff49l1 .elementor-heading-title,
body.page-id-34 .elementor-element-5b794l1 .elementor-heading-title {
  font-family: "Inter", sans-serif !important;
  font-size: 16px !important;
  font-weight: 300 !important;
  line-height: 1.5 !important;
}

body.page-id-34 .nygkey-home-about__image-wrap,
body.page-id-34 .elementor-element-nygaboutcar,
body.page-id-34 .nygkey-home-about__carousel,
body.page-id-34 .nygkey-home-about__carousel .swiper,
body.page-id-34 .nygkey-home-about__carousel .swiper-slide,
body.page-id-34 .elementor-element-nygaboutcar .swiper,
body.page-id-34 .elementor-element-nygaboutcar .swiper-slide {
  background: transparent !important;
}

body.page-id-34 .elementor-element-nygaboutcar,
body.page-id-34 .elementor-element-nygaboutcar .swiper,
body.page-id-34 .elementor-element-nygaboutcar .swiper-wrapper,
body.page-id-34 .elementor-element-nygaboutcar .swiper-slide,
body.page-id-34 .nygkey-home-about__carousel,
body.page-id-34 .nygkey-home-about__carousel .swiper,
body.page-id-34 .nygkey-home-about__carousel .swiper-wrapper,
body.page-id-34 .nygkey-home-about__carousel .swiper-slide {
  height: clamp(702px, 57.6vw, 828px) !important;
  min-height: 0 !important;
}

body.page-id-34 .elementor-element-nygaboutcar img,
body.page-id-34 .nygkey-home-about__carousel img {
  width: 100% !important;
  height: clamp(702px, 57.6vw, 828px) !important;
  border-radius: 10px;
  object-fit: cover !important;
  object-position: center center;
}

body.page-id-34 .nygkey-home-about__image-wrap {
  align-self: flex-start !important;
  height: auto !important;
  margin-top: 32px !important;
}

body.page-id-34 .elementor-element-502dfbcb .elementor-heading-title,
body.page-id-34 .elementor-element-15e603f7 .elementor-heading-title,
body.page-id-34 .elementor-element-0f518eb0 .elementor-heading-title,
body.page-id-34 .elementor-element-24eb163c .elementor-heading-title,
body.page-id-34 .elementor-element-280cb8ed .elementor-heading-title,
body.page-id-34 .nygkey-home-section__eyebrow .elementor-heading-title,
body.page-id-34 .nygkey-home-intro__copy-eyebrow .elementor-heading-title {
  position: relative;
  display: inline-block;
  padding-bottom: 12px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

body.page-id-34 .elementor-element-502dfbcb .elementor-heading-title::after,
body.page-id-34 .elementor-element-15e603f7 .elementor-heading-title::after,
body.page-id-34 .elementor-element-0f518eb0 .elementor-heading-title::after,
body.page-id-34 .elementor-element-24eb163c .elementor-heading-title::after,
body.page-id-34 .elementor-element-280cb8ed .elementor-heading-title::after,
body.page-id-34 .nygkey-home-section__eyebrow .elementor-heading-title::after,
body.page-id-34 .nygkey-home-intro__copy-eyebrow .elementor-heading-title::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 42px;
  height: 2px;
  transform: translateX(-50%);
  background: var(--nygkey-gold);
}

body.page-id-34 .elementor-element-502dfbcb .elementor-heading-title::after,
body.page-id-34 .nygkey-home-intro__copy-eyebrow .elementor-heading-title::after {
  left: 0;
  transform: none;
}

body.page-id-34 .nygkey-home-intro__service-list {
  min-height: 100%;
}

body.page-id-34 .nygkey-home-service-lists__row {
  align-items: stretch !important;
  gap: 24px !important;
}

body.page-id-34 .nygkey-home-intro__service-list {
  padding: 28px 26px !important;
  border: 1px solid rgba(17, 24, 39, 0.08);
  border-radius: 22px;
  background:
    linear-gradient(180deg, rgba(255, 213, 0, 0.06) 0%, rgba(255, 255, 255, 0) 45%),
    #ffffff;
  box-shadow: 0 16px 34px rgba(15, 23, 42, 0.06);
  transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}

body.page-id-34 .nygkey-home-intro__service-list:hover {
  border-color: rgba(255, 213, 0, 0.62);
  box-shadow: 0 22px 46px rgba(15, 23, 42, 0.1);
  transform: translateY(-2px);
}

body.page-id-34 .elementor-element-8d8ed2c5 .elementor-heading-title,
body.page-id-34 .elementor-element-51d87678 .elementor-heading-title,
body.page-id-34 .elementor-element-ff6d145f .elementor-heading-title,
body.page-id-34 .nygkey-home-intro__service-heading .elementor-heading-title {
  position: relative;
  display: inline-block;
  padding-bottom: 10px;
  white-space: nowrap;
}

body.page-id-34 .elementor-element-8d8ed2c5 .elementor-heading-title::after,
body.page-id-34 .elementor-element-51d87678 .elementor-heading-title::after,
body.page-id-34 .elementor-element-ff6d145f .elementor-heading-title::after,
body.page-id-34 .nygkey-home-intro__service-heading .elementor-heading-title::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 38px;
  height: 2px;
  background: var(--nygkey-gold);
}

body.page-id-34 .nygkey-home-intro__service-items .elementor-icon-list-item {
  padding: 8px 0;
  border-bottom: 1px solid rgba(17, 24, 39, 0.06);
}

body.page-id-34 .nygkey-home-intro__service-items .elementor-icon-list-item:last-child {
  border-bottom: 0;
}

body.page-id-34 .nygkey-home-intro__service-items .elementor-icon-list-icon i,
body.page-id-34 .nygkey-home-intro__service-items .elementor-icon-list-icon svg {
  color: var(--nygkey-gold) !important;
  fill: var(--nygkey-gold) !important;
}

body.page-id-34 .nygkey-home-intro__service-items .elementor-icon-list-text {
  line-height: 1.45;
}

body.page-id-34 .nygkey-home-service-lists__row {
  flex-wrap: nowrap !important;
}

body.page-id-34 .nygkey-home-intro__service-list {
  flex: 1 1 0 !important;
  min-width: 0;
}

body.page-id-34 .nygkey-home-call-strip {
  background: #ffffff !important;
}

body.page-id-34 .nygkey-home-call-strip .elementor-button {
  min-height: 64px;
  padding: 20px 74px !important;
  background: var(--nygkey-gold) !important;
  color: #111827 !important;
  border-color: var(--nygkey-gold) !important;
}

body.page-id-34 .elementor-element-d587f54e .elementor-button {
  background: transparent !important;
  color: #111827 !important;
  border-color: #113764 !important;
}

body.page-id-34 .elementor-element-d587f54e .elementor-button:hover,
body.page-id-34 .elementor-element-d587f54e .elementor-button:focus {
  background: #111827 !important;
  color: #ffffff !important;
  border-color: #111827 !important;
}

body.page-id-34 .elementor-element-7a2dfc0a .elementor-button {
  min-width: 182px;
}

body.page-id-34 .elementor-element-d587f54e .elementor-button {
  min-width: 197px;
}

body.page-id-34 a,
body.page-id-34 a:visited {
  color: inherit;
}

body.page-id-34 .elementor-button,
body.page-id-34 button.elementor-button {
  min-height: 44px;
  border-radius: var(--nygkey-radius-pill) !important;
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
}

body.page-id-34 .elementor-button:hover,
body.page-id-34 .elementor-button:focus {
  text-decoration: none;
}

body.page-id-34 .nygkey-why-choose-copy,
body.page-id-34 .nygkey-appointment-copy,
body.page-id-34 .nygkey-appointment-detail {
  margin: 0;
  line-height: 1.75;
}

body.page-id-34 .nygkey-appointment-copy,
body.page-id-34 .elementor-element-4dedc7c5,
body.page-id-34 .elementor-element-4dedc7c5 p {
  text-align: center;
}

body.page-id-34 .nygkey-why-choose-copy {
  max-width: 760px;
  margin-inline: auto;
  color: #e5e7eb;
  text-align: center;
}

body.page-id-34 .nygkey-why-bars {
  display: grid;
  gap: 14px;
  width: 100%;
  max-width: none;
  margin: 0;
}

body.page-id-34 .nygkey-why-bar {
  display: grid;
  gap: 7px;
}

body.page-id-34 .nygkey-why-bar__meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: #ffffff;
  font-size: 0.95rem;
  font-weight: 600;
}

body.page-id-34 .nygkey-why-bar__value {
  color: var(--nygkey-gold);
}

body.page-id-34 .nygkey-why-bar__track {
  overflow: hidden;
  height: 5px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.14);
}

body.page-id-34 .nygkey-why-bar__fill {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #ffd500 0%, #ffd500 100%);
}

body.page-id-34 .nygkey-live-bars {
  display: none !important;
}

body.page-id-34 .nygkey-home-why__body {
  gap: 40px !important;
}

body.page-id-34 .nygkey-home-why__progress,
body.page-id-34 .elementor-element-nygwhy01,
body.page-id-34 .nygkey-home-why__stats {
  flex: 0 1 calc(50% - 20px) !important;
  width: calc(50% - 20px) !important;
}

body.page-id-34 .elementor-element-80a71c3b {
  background-color: #111827 !important;
  background-image:
    linear-gradient(180deg, rgba(17, 24, 39, 0.52) 0%, rgba(17, 24, 39, 0.62) 100%),
    url("/wp-content/uploads/2026/05/locking-entrance-door-with-a-smart-phone-1.webp") !important;
  background-size: cover !important;
  background-position: center center !important;
}


body.page-id-34 .elementor-element-80a71c3b .elementor-widget-heading.elementor-widget-heading h6.elementor-heading-title {
  color: var(--nygkey-gold) !important;
}

body.page-id-34 .elementor-element-cdd142c0 {
  background: #ffffff !important;
}

body.page-id-34 .elementor-element-cdd142c0 .elementor-widget-heading h2.elementor-heading-title,
body.page-id-34 .elementor-element-cdd142c0 .elementor-widget-heading h3.elementor-heading-title,
body.page-id-34 .elementor-element-cdd142c0 .elementor-widget-heading h6.elementor-heading-title {
  color: #111827 !important;
}


body.page-id-34 .nygkey-service-card {
  min-height: 100%;
  border: 1px solid rgba(17, 24, 39, 0.08);
  border-radius: 22px;
  background: #ffffff;
  box-shadow: 0 14px 32px rgba(15, 23, 42, 0.07);
  overflow: hidden;
  transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}

body.page-id-34 .nygkey-service-card:hover {
  border-color: rgba(255, 213, 0, 0.58);
  box-shadow: 0 24px 52px rgba(15, 23, 42, 0.12);
  transform: translateY(-3px);
}

body.page-id-34 .nygkey-home-services__grid {
  flex-wrap: wrap !important;
  gap: 18px !important;
}

body.page-id-34 .nygkey-service-card--door,
body.page-id-34 .nygkey-service-card--blue {
  background: #111827 !important;
  border-color: #111827 !important;
}

body.page-id-34 .nygkey-service-card .elementor-widget-image {
  margin-bottom: 8px;
}

body.page-id-34 .nygkey-service-card .elementor-widget-image,
body.page-id-34 .nygkey-service-card .nygkey-service-card__image {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 68px;
  height: 68px;
  border-radius: 18px;
  background: rgba(255, 213, 0, 0.12);
}

body.page-id-34 .nygkey-service-card .elementor-widget-image img {
  width: clamp(48px, 4.6vw, 62px);
  height: auto;
}

body.page-id-34 .nygkey-service-card .elementor-heading-title {
  line-height: 1.2;
}

body.page-id-34 .nygkey-service-card .elementor-widget-text-editor p {
  margin: 0;
}

body.page-id-34 .nygkey-service-card .elementor-widget-button {
  margin-top: auto;
  padding-top: 16px;
}

body.page-id-34 .nygkey-service-card .elementor-button {
  padding: 0 !important;
  background: transparent !important;
  color: #111827 !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  font-size: 0.93rem;
  font-weight: 700;
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

body.page-id-34 .nygkey-service-card .elementor-button-text {
  position: relative;
  display: inline-block;
  padding-bottom: 9px;
}

body.page-id-34 .nygkey-service-card .elementor-button-text::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 34px;
  height: 2px;
  transform: translateX(-50%);
  background: currentColor;
}

body.page-id-34 .nygkey-service-card .elementor-button::after {
  content: "";
}

body.page-id-34 .nygkey-service-card .elementor-button:hover,
body.page-id-34 .nygkey-service-card .elementor-button:focus {
  color: var(--nygkey-gold) !important;
}



body.page-id-34 .nygkey-service-card--door .elementor-button,
body.page-id-34 .nygkey-service-card--blue .elementor-button {
  color: var(--nygkey-gold) !important;
}

body.page-id-34 .nygkey-service-card--door .elementor-widget-image,
body.page-id-34 .nygkey-service-card--blue .elementor-widget-image {
  background: rgba(255, 213, 0, 0.18);
}

body.page-id-34 .nygkey-feature-card {
  min-height: 100%;
  border: 1px solid rgba(17, 24, 39, 0.08);
  border-top: 4px solid var(--nygkey-gold);
  border-radius: 20px;
  background: #ffffff;
  box-shadow: 0 12px 28px rgba(15, 23, 42, 0.06);
}

body.page-id-34 .nygkey-feature-card .elementor-heading-title {
  color: #111827 !important;
}


body.page-id-34 .elementor-element-22b5a95d {
  background: var(--nygkey-gold);
  border-color: var(--nygkey-gold);
}

body.page-id-34 .elementor-element-22b5a95d .elementor-heading-title,
body.page-id-34 .elementor-element-22b5a95d .elementor-widget-text-editor,
body.page-id-34 .elementor-element-22b5a95d .elementor-widget-text-editor p,
body.page-id-34 .elementor-element-22b5a95d .elementor-icon {
  color: #111827 !important;
}

body.page-id-34 .elementor-element-bdb42d39 .elementor-icon,
body.page-id-34 .elementor-element-bdb42d39 .elementor-icon i,
body.page-id-34 .elementor-element-bdb42d39 .elementor-icon svg,
body.page-id-34 .elementor-element-bdb42d39 .elementor-icon svg path {
  color: #111827 !important;
  fill: #111827 !important;
}

body.page-id-34 .elementor-element-ab7f7629 {
  background: #111827;
  border-color: #111827;
  border-radius: 20px !important;
  box-shadow: 0 14px 30px rgba(15, 23, 42, 0.14);
  overflow: hidden;
}


body.page-id-34 .nygkey-home-benefits__card {
  width: calc((100% - 36px) / 3) !important;
  border-radius: 20px !important;
  box-shadow: 0 14px 30px rgba(15, 23, 42, 0.08);
  overflow: hidden;
}

body.page-id-34 .nygkey-home-benefits__grid {
  gap: 18px !important;
}


body.page-id-34 .nygkey-home-closing__solution-copy .elementor-icon-list-icon i,
body.page-id-34 .nygkey-home-closing__solution-copy .elementor-icon-list-icon svg {
  color: var(--nygkey-gold) !important;
  fill: var(--nygkey-gold) !important;
}

body.page-id-34 .nygkey-home-closing__solution-copy a,
body.page-id-34 .nygkey-home-closing__solution-copy a:visited,
body.page-id-34 .nygkey-home-closing__solution-copy .elementor-icon-list-item a,
body.page-id-34 .nygkey-home-closing__solution-copy .elementor-icon-list-item a:visited,
body.page-id-34 .nygkey-home-closing__solution-copy .elementor-icon-list-text {
  color: #ffffff !important;
  text-decoration: none;
}

body.page-id-34 .nygkey-home-closing__solution-copy a:hover,
body.page-id-34 .nygkey-home-closing__solution-copy a:focus {
  color: var(--nygkey-gold) !important;
}

body.page-id-34 .nygkey-home-closing__solution-copy .elementor-button {
  background: var(--nygkey-gold) !important;
  color: #111827 !important;
  border-color: var(--nygkey-gold) !important;
}

body.page-id-34 .nygkey-home-closing__form-card {
  border-radius: 0 8px 8px 0;
  background: #ffffff;
}

body.page-id-34 .elementor-element-6b9a28a3 .elementor-element-87c30075,
body.page-id-34 .nygkey-home-closing__solution-copy {
  align-self: stretch;
  overflow: hidden;
  border-radius: 20px;
  background: #111827 !important;
  box-shadow: 0 18px 42px rgba(15, 23, 42, 0.18);
}

body.page-id-34 .elementor-element-6b9a28a3 .elementor-element-24eb163c .elementor-heading-title,
body.page-id-34 .elementor-element-6b9a28a3 .elementor-element-a682eccb .elementor-heading-title,
body.page-id-34 .elementor-element-6b9a28a3 .elementor-element-ef44f1c1 .elementor-heading-title,
body.page-id-34 .elementor-element-6b9a28a3 .elementor-element-08141792 .elementor-heading-title {
  color: #ffffff !important;
}

body.page-id-34 .elementor-element-6b9a28a3 .elementor-element-24eb163c .elementor-heading-title {
  color: var(--nygkey-gold) !important;
}


body.page-id-34 .elementor-element-6b9a28a3 .elementor-icon-list-icon i,
body.page-id-34 .elementor-element-6b9a28a3 .elementor-icon-list-icon svg {
  color: var(--nygkey-gold) !important;
  fill: var(--nygkey-gold) !important;
}

body.page-id-34 .elementor-element-6b9a28a3 .elementor-icon-list-item a {
  color: inherit !important;
  text-decoration: none;
}

body.page-id-34 .elementor-element-6b9a28a3 .elementor-icon-list-item a:hover,
body.page-id-34 .elementor-element-6b9a28a3 .elementor-icon-list-item a:focus {
  color: #ffffff !important;
}

body.page-id-34 .elementor-element-c6b91116 .elementor-element-aa448300,
body.page-id-34 .nygkey-form-card {
  border-radius: 20px;
  background: #ffffff;
  box-shadow: 0 18px 42px rgba(15, 23, 42, 0.1);
}

body.page-id-34 .elementor-element-c6b91116 .elementor-field-group {
  margin-bottom: 12px;
}

body.page-id-34 .elementor-element-c6b91116 .elementor-field-textual,
body.page-id-34 .elementor-element-c6b91116 .elementor-field-select,
body.page-id-34 .elementor-element-c6b91116 .elementor-field-textual.elementor-size-sm {
  min-height: 50px;
  border: 1px solid rgba(148, 163, 184, 0.3);
  border-radius: 14px;
  background: #f6f6f6;
}

body.page-id-34 .elementor-element-c6b91116 textarea.elementor-field-textual {
  min-height: 132px;
}

body.page-id-34 .elementor-element-c6b91116 .elementor-button[type="submit"],
body.page-id-34 .elementor-element-c6b91116 button.elementor-button {
  min-height: 64px;
  background: var(--nygkey-gold) !important;
  color: #111827 !important;
  border-color: var(--nygkey-gold) !important;
}

body.page-id-34 .nygkey-testimonial-card {
  height: 100%;
  border-radius: 20px;
  background: #ffffff;
  box-shadow: 0 12px 28px rgba(15, 23, 42, 0.08);
}

body.page-id-34 .nygkey-testimonial-card .elementor-widget-text-editor,
body.page-id-34 .nygkey-testimonial-card .elementor-widget-text-editor p {
  line-height: 1.8;
}

/* Footer column widths/gap are owned natively by Elementor (template 37) per
   breakpoint. CSS keeps only last-mile polish below. */
.nygkey-footer-links .elementor-icon-list-text {
  white-space: nowrap;
}

.nygkey-footer-about p,
.nygkey-footer-license-text p,
.nygkey-footer-copyright p {
  margin: 0;
  line-height: 1.7;
}

.nygkey-footer-contact-card {
  box-shadow: 0 14px 32px rgba(0, 0, 0, 0.18);
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.nygkey-footer-contact-card:hover,
.nygkey-footer-contact-card:focus {
  transform: translateY(-2px);
  box-shadow: 0 18px 36px rgba(0, 0, 0, 0.24);
}

.nygkey-footer-contact-inner {
  max-width: 1240px;
  width: 100%;
}

.nygkey-footer-contact-card .elementor-icon-box-title,
.nygkey-footer-contact-card .elementor-icon-box-title a {
  font-size: 18px !important;
  font-weight: 500 !important;
  line-height: 1.2 !important;
}

@media (min-width: 1025px) {
  .elementor-location-header .nygkey-topbar-sticky {
    height: 42px !important;
    min-height: 42px !important;
    max-height: 42px !important;
  }

  .elementor-location-header .nygkey-topbar-sticky > .e-con-inner {
    height: 42px !important;
    min-height: 42px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    align-items: center !important;
  }

  .elementor-location-header .nygkey-topbar-sticky .elementor-icon-list-item > a,
  .elementor-location-header .nygkey-topbar-sticky .elementor-icon-list-item > .elementor-icon-list-text {
    min-height: 42px;
  }

  .elementor-location-header .nygkey-nav-sticky,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--active,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--effects {
    height: 112px !important;
    min-height: 112px !important;
    max-height: 112px !important;
  }

  .elementor-location-header .nygkey-nav-sticky > .e-con-inner,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--active > .e-con-inner,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--effects > .e-con-inner {
    min-height: 112px !important;
    padding-top: 20px !important;
    padding-bottom: 20px !important;
  }
}

.elementor-location-header .nygkey-nav-sticky .elementor-element-4a6c2b5 {
  display: flex;
  justify-content: center;
}

/* Brand the collapsed-menu hamburger: ink icon on a clean bordered chip,
   gold press/hover state. Default Elementor ships a gray box + pure black icon. */
.elementor-location-header .nygkey-nav-sticky .elementor-menu-toggle {
  color: #111827 !important;
  fill: #111827 !important;
  background: #ffffff !important;
  border: 1.5px solid #e5e7eb !important;
  border-radius: 10px;
  width: 44px;
  height: 44px;
}

.elementor-location-header .nygkey-nav-sticky .elementor-menu-toggle:hover,
.elementor-location-header .nygkey-nav-sticky .elementor-menu-toggle:focus,
.elementor-location-header .nygkey-nav-sticky .elementor-menu-toggle.elementor-active {
  color: #111827 !important;
  fill: #111827 !important;
  background: var(--nygkey-gold, #ffd500) !important;
  border-color: var(--nygkey-gold, #ffd500) !important;
}

.elementor-location-header .nygkey-nav-sticky .elementor-menu-toggle svg {
  fill: currentColor;
}

.elementor-location-header .nygkey-nav-sticky .elementor-element-4a6c2b5 .elementor-nav-menu {
  justify-content: center;
}

.elementor-location-header .nygkey-topbar-sticky .elementor-icon-list-item > a,
.elementor-location-header .nygkey-topbar-sticky .elementor-icon-list-item > .elementor-icon-list-text,
.elementor-location-header .nygkey-nav-sticky .elementor-nav-menu .elementor-item {
  align-items: center;
  display: inline-flex;
  min-height: 44px;
}

/* Desktop-only: the sticky-variant selectors here out-specify the tablet and
   mobile band overrides below, so this block must not apply under 1025px. */
@media (min-width: 1025px) {
  .elementor-location-header .nygkey-nav-sticky,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--active,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--effects {
    height: 103px !important;
    min-height: 103px !important;
    max-height: 103px !important;
  }

  .elementor-location-header .nygkey-nav-sticky > .e-con-inner,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--active > .e-con-inner,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--effects > .e-con-inner {
    min-height: 102px !important;
    padding-top: 20px !important;
    padding-bottom: 20px !important;
    align-items: center !important;
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-afbf42c img {
    width: 180px !important;
    max-width: 180px !important;
  }
}

.elementor-location-header .nygkey-nav-sticky .elementor-element-455f013,
.elementor-location-header .nygkey-header-phone-button {
  flex: 0 0 auto !important;
  min-width: max-content;
}

.elementor-location-header .nygkey-header-phone-button .elementor-button,
.elementor-location-header .nygkey-header-phone-button .elementor-button-content-wrapper,
.elementor-location-header .nygkey-header-phone-button .elementor-button-text {
  display: inline-flex;
  align-items: center;
  white-space: nowrap !important;
  flex-wrap: nowrap !important;
  flex-shrink: 0 !important;
}

.elementor-location-header .nygkey-header-phone-button .elementor-button:hover,
.elementor-location-header .nygkey-header-phone-button .elementor-button:focus {
  background: #111827 !important;
  border-color: #111827 !important;
  color: #ffffff !important;
}

body.page-id-34 .elementor-element-d587f54e.elementor-widget-button .elementor-button:hover,
body.page-id-34 .elementor-element-d587f54e.elementor-widget-button .elementor-button:focus {
  background: #111827 !important;
  background-color: #111827 !important;
  border-color: #111827 !important;
  color: #ffffff !important;
}

@media (min-width: 768px) and (max-width: 1024px) {
  body.page-id-34 .nygkey-service-card {
    flex: 0 1 calc((100% - 18px) / 2) !important;
    width: calc((100% - 18px) / 2) !important;
  }

  .elementor-location-header .nygkey-nav-sticky {
    gap: 16px !important;
    justify-content: center !important;
    height: 75px !important;
    min-height: 75px !important;
    max-height: 75px !important;
    /* Band is height-clamped: its own Elementor padding pushed the inner row
       below the clamp, so the logo/toggle/CTA rendered low over the hero. */
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }

  .elementor-location-header .nygkey-nav-sticky > .e-con-inner {
    min-height: 75px !important;
    height: 75px !important;
    padding-top: 14px !important;
    padding-bottom: 14px !important;
    align-items: center !important;
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-afbf42c {
    flex: 0 0 120px !important;
    max-width: 135px !important;
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-afbf42c img {
    width: 135px !important;
    max-width: 135px !important;
  }

  /* Match the phone header pattern: toggle hugs the left edge, logo is
     absolutely centered, phone pill keeps the right edge. */
  .elementor-location-header .nygkey-nav-sticky > .e-con-inner {
    position: relative;
    justify-content: space-between !important;
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-afbf42c {
    position: absolute !important;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    margin: 0 !important;
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-4a6c2b5 {
    flex: 0 0 auto !important;
    min-width: 44px;
    display: flex;
    justify-content: flex-start;
    position: relative; /* positioning context for the laptop-band dropdown overlay */
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-4a6c2b5 .elementor-menu-toggle {
    margin: 0;
  }

  /* Laptop / tablet-landscape (769-1024px): force the working hamburger on.
     Two nav-menu stylesheets disagree on the tablet breakpoint here — the stock
     asset (legacy tablet=1024) hides the full menu while the custom-breakpoint
     asset (tablet=768) hides the toggle, which left this band with no navigation.
     Pin the menu collapsed to the hamburger so the toggle (and its dropdown)
     work continuously from 1024px down. Desktop (>=1025px) is unaffected. */
  .elementor-location-header .nygkey-nav-sticky .elementor-nav-menu--main {
    display: none !important;
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-menu-toggle {
    display: flex !important;
  }

  /* Render the toggle's dropdown as an overlay card below the header instead of
     letting it expand the flex row. transform is left untouched so Elementor's
     built-in scaleY/max-height open animation keeps working. */
  .elementor-location-header .nygkey-nav-sticky nav.elementor-nav-menu__container.elementor-nav-menu--dropdown {
    display: block !important;
    position: absolute;
    top: 100%;
    left: 0; /* toggle column now sits at the left edge */
    width: 280px;
    margin-left: 0;
    z-index: 9997;
    border-radius: 10px;
    box-shadow: 0 16px 34px rgba(0, 0, 0, 0.18);
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-455f013 {
    flex: 0 0 auto !important;
    min-width: max-content;
  }

  .elementor-location-header .nygkey-header-phone-button .elementor-button {
    min-width: max-content;
    white-space: nowrap !important;
    padding-right: 18px !important;
    padding-left: 18px !important;
  }

  /* Let link labels wrap in the narrower laptop/large-tablet footer columns. */
  .nygkey-footer-links .elementor-icon-list-text {
    white-space: normal;
  }
}

@media (max-width: 820px) {
  body.page-id-34 .nygkey-home-service-lists__row > .e-con-inner {
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 18px !important;
  }

  body.page-id-34 .nygkey-home-service-lists__row > .e-con-inner > .e-con,
  body.page-id-34 .nygkey-home-service-lists__row > .e-con-inner > .nygkey-home-intro__service-list {
    width: 100% !important;
    max-width: 100% !important;
    flex: 1 1 auto !important;
  }
}

@media (max-width: 767px) {
  .elementor-location-header .nygkey-nav-sticky {
    height: 67px !important;
    min-height: 67px !important;
    max-height: 67px !important;
    /* The band is height-clamped, so its own padding pushed the inner row
       below the clamp and the logo rendered on top of the hero. */
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }

  .elementor-location-header .nygkey-nav-sticky > .e-con-inner {
    min-height: 67px !important;
    padding-top: 10px !important;
    padding-bottom: 10px !important;
    position: relative;
    justify-content: center !important;
    align-items: center !important;
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-afbf42c {
    position: absolute !important;
    left: 50%;
    top: 50%;
    flex: 0 0 auto !important;
    margin: 0 !important;
    max-width: 135px !important;
    transform: translate(-50%, -50%);
    order: 2;
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-afbf42c img {
    width: 135px !important;
    max-width: 135px !important;
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-4a6c2b5 {
    position: absolute;
    left: 0;
    top: 50%;
    width: auto !important;
    min-width: 44px !important;
    flex: 0 0 auto !important;
    transform: translateY(-50%);
    justify-content: flex-start !important;
    order: 1;
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-4a6c2b5 .elementor-menu-toggle {
    margin: 0 !important;
  }

  /* The dropdown lives inside the 44px absolutely-positioned toggle column, so
     by default it renders as a clipped sliver. Render it as an overlay card
     below the toggle instead. (position:fixed won't work here — the column's
     transform makes it the containing block.) */
  .elementor-location-header .nygkey-nav-sticky nav.elementor-nav-menu__container.elementor-nav-menu--dropdown {
    position: absolute;
    top: calc(100% + 10px);
    left: 0;
    width: calc(100vw - 48px);
    margin: 0;
    z-index: 9997;
    border-radius: 10px;
    box-shadow: 0 16px 34px rgba(0, 0, 0, 0.18);
  }

  .nygkey-footer-main,
  .nygkey-footer-contact-section,
  .nygkey-footer-strip,
  .nygkey-footer-bottom {
    padding-right: 18px !important;
    padding-left: 18px !important;
  }

  body.page-id-34 .nygkey-why-bar__meta {
    font-size: 0.88rem;
  }

  body.page-id-34 .elementor-element-c6b91116 .elementor-element-8cc42d38 {
    flex-direction: column !important;
  }

  body.page-id-34 .elementor-element-c6b91116 .elementor-element-87c30075,
  body.page-id-34 .elementor-element-c6b91116 .elementor-element-aa448300 {
    width: 100% !important;
  }

  body.page-id-34 .elementor-element-ea9c3fe {
    width: 100% !important;
  }

  body.page-id-34 .nygkey-home-services__grid {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    width: 100% !important;
    max-width: 100% !important;
    gap: 16px !important;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x proximity;
    padding-bottom: 10px;
  }

  body.page-id-34 .nygkey-service-card {
    flex: 0 0 min(78vw, 320px) !important;
    width: min(78vw, 320px) !important;
    min-height: 0 !important;
    scroll-snap-align: start;
    transform: none;
  }

  body.page-id-34 .nygkey-home-benefits__card {
    width: 100% !important;
  }

  body.page-id-34 .elementor-element-nygaboutcar,
  body.page-id-34 .elementor-element-nygaboutcar .swiper,
  body.page-id-34 .elementor-element-nygaboutcar .swiper-wrapper,
  body.page-id-34 .elementor-element-nygaboutcar .swiper-slide,
  body.page-id-34 .nygkey-home-about__carousel,
  body.page-id-34 .nygkey-home-about__carousel .swiper,
  body.page-id-34 .nygkey-home-about__carousel .swiper-wrapper,
  body.page-id-34 .nygkey-home-about__carousel .swiper-slide {
    height: clamp(320px, 90vw, 430px) !important;
    min-height: 0 !important;
  }

  body.page-id-34 .elementor-element-nygaboutcar img,
  body.page-id-34 .nygkey-home-about__carousel img {
    height: clamp(320px, 90vw, 430px) !important;
  }

  body.page-id-34 .nygkey-home-service-lists__row {
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    gap: 18px !important;
  }

  body.page-id-34 .nygkey-home-service-lists__row > .e-con,
  body.page-id-34 .nygkey-home-intro__service-list {
    width: 100% !important;
    max-width: 100% !important;
    flex: 1 1 auto !important;
  }

  body.page-id-34 .nygkey-home-intro__service-list {
    padding: 18px 18px !important;
    transform: none;
  }

  body.page-id-34 .nygkey-home-intro__service-items .elementor-icon-list-item {
    padding: 5px 0;
  }

  body.page-id-34 .nygkey-home-intro__service-heading .elementor-heading-title {
    white-space: normal;
  }

  body.page-id-34 .nygkey-home-intro__service-items,
  body.page-id-34 .nygkey-home-intro__service-items .elementor-icon-list-items,
  body.page-id-34 .nygkey-home-intro__service-items .elementor-icon-list-item,
  body.page-id-34 .nygkey-home-intro__service-items .elementor-icon-list-text {
    max-width: 100%;
  }

  body.page-id-34 .nygkey-home-1984__stats {
    min-height: 0;
    padding: 22px 18px !important;
  }

  body.page-id-34 .nygkey-home-1984__stats .nygkey-home-intro__stat-number .elementor-heading-title,
  body.page-id-34 .elementor-element-4ff49n1 .elementor-heading-title,
  body.page-id-34 .elementor-element-5b794n1 .elementor-heading-title {
    font-size: 34px !important;
  }

  body.page-id-34 .nygkey-home-about__image-wrap {
    margin-top: 16px !important;
  }

  body.page-id-34 .nygkey-home-about__copy,
  body.page-id-34 .nygkey-home-closing__solution-copy,
  body.page-id-34 .nygkey-home-closing__form-card {
    padding: 24px 20px !important;
  }

  body.page-id-34 .nygkey-home-why__body {
    gap: 22px !important;
  }

  body.page-id-34 .nygkey-home-closing__testimonials {
    gap: 16px !important;
  }

  body.page-id-34 .elementor-element-c6b91116 .elementor-field-group {
    margin-bottom: 8px;
  }

  body.page-id-34 .elementor-element-c6b91116 .elementor-field-textual,
  body.page-id-34 .elementor-element-c6b91116 .elementor-field-select,
  body.page-id-34 .elementor-element-c6b91116 .elementor-field-textual.elementor-size-sm {
    min-height: 44px;
  }

  body.page-id-34 .elementor-element-c6b91116 textarea.elementor-field-textual {
    min-height: 104px;
  }

  body.page-id-34 .elementor-element-c6b91116 .elementor-button[type="submit"],
  body.page-id-34 .elementor-element-c6b91116 button.elementor-button {
    min-height: 54px;
  }

  .nygkey-footer-links .elementor-icon-list-text {
    white-space: normal;
  }

  .nygkey-footer-contact-card {
    align-items: stretch !important;
  }

  .nygkey-footer-contact-iconbox.elementor-mobile-position-block-start .elementor-icon-box-wrapper {
    align-items: center !important;
    display: flex !important;
    flex-direction: row !important;
    gap: 12px !important;
    text-align: left !important;
  }

  .nygkey-footer-contact-iconbox.elementor-mobile-position-block-start .elementor-icon-box-icon {
    flex: 0 0 44px;
    margin: 0 !important;
    width: 44px;
  }

  .nygkey-footer-contact-iconbox.elementor-mobile-position-block-start .elementor-icon-box-content {
    flex: 1 1 auto;
  }

}

/* Header/footer tap-target polish. */
.nygkey-footer-links .elementor-icon-list-item > a,
.nygkey-footer-links .elementor-icon-list-item > .elementor-icon-list-text,
.nygkey-footer-contact-iconbox a,
.nygkey-footer-contact-iconbox .elementor-icon-box-title a {
  align-items: center;
  display: inline-flex;
  min-height: 44px;
}

/* Final header alignment against the local reference. */
@media (min-width: 1025px) {
  .elementor-location-header .nygkey-nav-sticky,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--active,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--effects {
    height: 112px !important;
    min-height: 112px !important;
    max-height: 112px !important;
  }

  .elementor-location-header .nygkey-nav-sticky > .e-con-inner,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--active > .e-con-inner,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--effects > .e-con-inner {
    min-height: 112px !important;
  }
}

@media (max-width: 767px) {
  .elementor-location-header .nygkey-nav-sticky,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--active,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--effects {
    height: 67px !important;
    min-height: 67px !important;
    max-height: 67px !important;
  }

  .elementor-location-header .nygkey-nav-sticky > .e-con-inner,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--active > .e-con-inner,
  .elementor-location-header .nygkey-nav-sticky.elementor-sticky--effects > .e-con-inner {
    min-height: 66px !important;
    height: 66px !important;
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-4a6c2b5 {
    width: 44px !important;
    max-width: 44px !important;
    min-width: 44px !important;
  }

  .elementor-location-header .nygkey-nav-sticky .elementor-element-4a6c2b5 .elementor-menu-toggle {
    width: 44px !important;
    min-width: 44px !important;
    height: 44px !important;
    min-height: 44px !important;
    justify-content: center !important;
  }
}

/* -----------------------------------------------------------------------------
 * Reusable component glue (stable classes, no generated IDs / page-id scoping).
 * Constrains inline Font Awesome SVG icons inside the saved component templates
 * (FAQ accordion, contact block). Needed because Elementor's e-font-icon-svg
 * sizing rule (width/height: 1em) is not always enqueued when a component is
 * embedded via the Template widget, which otherwise lets the SVG fill its box.
 * --------------------------------------------------------------------------- */
.nygkey-faq-accordion .elementor-accordion-icon svg,
.nygkey-solution-list .elementor-icon-list-icon svg,
.nygkey-solution-contact .elementor-icon-list-icon svg {
  width: 1em;
  height: 1em;
}

.nygkey-faq-accordion .elementor-accordion-icon {
  width: 1em;
  flex: 0 0 auto;
}

/* -----------------------------------------------------------------------------
 * Dynamic Service Page (ACF-driven template 289) shortcode markup.
 * These style the server-rendered output of inc/service-render.php so it matches
 * the look the old hardcoded child-service pages had (cards / proof list /
 * link lists / FAQ accordion / testimonials), without Elementor widgets.
 * --------------------------------------------------------------------------- */

/* Card grid */
.nygkey-template-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 22px;
}
.nygkey-template-card {
  flex: 1 1 280px;
  background: var(--nygkey-white);
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  padding: 28px;
  /* Unified branded card elevation across all service/hub pages (was an
   * inconsistent mix of shadow-sm vs per-page Elementor box-shadow). */
  box-shadow: 0 3px 16px rgba(17, 55, 100, 0.1);
  transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}
.nygkey-template-card:hover,
.nygkey-template-card:focus-within {
  border-color: rgba(255, 213, 0, 0.55);
  box-shadow: 0 16px 38px rgba(17, 55, 100, 0.16);
  transform: translateY(-3px);
}
.nygkey-template-card h3 {
  margin: 0 0 0.5rem;
  color: #111827;
}
.nygkey-template-card p:last-child {
  margin-bottom: 0;
}

/* Icon / link / proof lists */
.nygkey-icon-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.nygkey-icon-list li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  line-height: 1.4;
}
.nygkey-icon-list a {
  color: #113764;
  text-decoration: none;
  font-weight: 600;
}
.nygkey-icon-list a:hover,
.nygkey-icon-list a:focus {
  text-decoration: underline;
}
.nygkey-check {
  color: var(--nygkey-gold);
  font-weight: 700;
  flex: 0 0 auto;
  line-height: 1.4;
}

/* FAQ accordion (native <details>) */
.nygkey-faq-native {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.nygkey-faq-item {
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  background: var(--nygkey-white);
  overflow: hidden;
}
.nygkey-faq-item > summary.nygkey-faq-q {
  cursor: pointer;
  list-style: none;
  padding: 16px 20px;
  font-weight: 700;
  color: #111827;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}
.nygkey-faq-item > summary.nygkey-faq-q::-webkit-details-marker {
  display: none;
}
.nygkey-faq-item > summary.nygkey-faq-q::after {
  content: "+";
  font-size: 1.25rem;
  line-height: 1;
  color: var(--nygkey-gold);
  flex: 0 0 auto;
}
.nygkey-faq-item[open] > summary.nygkey-faq-q::after {
  content: "\2212"; /* minus */
}
.nygkey-faq-a {
  padding: 0 20px 16px;
  color: var(--nygkey-text);
}
.nygkey-faq-a p:last-child {
  margin-bottom: 0;
}

/* Testimonials */
.nygkey-testimonial-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 22px;
}
.nygkey-testimonial-grid .nygkey-testimonial-card {
  flex: 1 1 280px;
  background: var(--nygkey-white);
  border-radius: 12px;
  padding: 24px;
  box-shadow: var(--nygkey-shadow-sm);
}
.nygkey-testimonial-grid blockquote {
  margin: 0 0 14px;
  font-style: italic;
  color: var(--nygkey-text);
  line-height: 1.5;
}
.nygkey-testimonial-grid figcaption {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.nygkey-testimonial-name {
  font-weight: 700;
  color: #113764;
}
.nygkey-testimonial-title {
  font-size: 0.875rem;
  color: var(--nygkey-text-muted);
}

/* -----------------------------------------------------------------------------
 * Borough template (291) alignment to the service-page pattern.
 * Boroughs render via child-theme shortcodes (not Elementor widgets), so the
 * service-page look is applied here by stable class. Generalized to
 * .nygkey-borough-* (legacy .nygkey-brooklyn-* kept as fallback selectors).
 * --------------------------------------------------------------------------- */

/* Gold-bar FAQ accordion — match the Elementor accordion used on service pages
 * (gold title bar, navy text, minus on open). Scoped to the native FAQ so it
 * only restyles the shortcode-rendered <details> accordions. */
.nygkey-faq-native .nygkey-faq-item {
  border-color: #e5e7eb;
}
.nygkey-faq-native .nygkey-faq-item > summary.nygkey-faq-q {
  background: var(--nygkey-gold);
  color: var(--nygkey-navy, #111827);
  padding: 16px 22px;
  font-family: var(--nygkey-font-heading, "Poppins", sans-serif);
}
.nygkey-faq-native .nygkey-faq-item > summary.nygkey-faq-q::after {
  color: var(--nygkey-navy, #111827);
}
.nygkey-faq-native .nygkey-faq-item[open] > summary.nygkey-faq-q {
  border-bottom: 1px solid rgba(17, 24, 39, 0.12);
}
.nygkey-faq-native .nygkey-faq-a {
  padding-top: 16px;
}

/* Navy "Perfect Solution" panel — restyle the borough proof/near section as the
 * navy block used on service pages (white text, gold checklist accents). */
.nygkey-borough-proof,
.nygkey-brooklyn-near {
  background: var(--nygkey-navy, #111827);
  border-radius: 14px;
  color: #ffffff;
}
.nygkey-borough-proof :is(h1, h2, h3, h4, h5, h6),
.nygkey-brooklyn-near :is(h1, h2, h3, h4, h5, h6) {
  color: #ffffff;
}
.nygkey-borough-proof,
.nygkey-borough-proof p,
.nygkey-brooklyn-near,
.nygkey-brooklyn-near p {
  color: #dedede;
}
.nygkey-borough-proof .nygkey-template-proof-list li,
.nygkey-brooklyn-near .nygkey-template-proof-list li {
  color: #ffffff;
}
.nygkey-borough-proof .nygkey-check,
.nygkey-brooklyn-near .nygkey-check {
  color: var(--nygkey-gold);
}

/* Borough testimonials section spacing (shares .nygkey-testimonial-grid). */
.nygkey-borough-testimonials {
  text-align: center;
}
.nygkey-borough-testimonials .nygkey-testimonial-grid {
  text-align: left;
  margin-top: 22px;
}

/* -----------------------------------------------------------------------------
 * Blog Theme Builder templates (single post 271, archive 273, search 275).
 * Stable classes only — layout/spacing come from the Elementor containers;
 * these rules add brand typography polish the Elementor card/post-info skins
 * don't supply. No generated IDs, no page-id scoping.
 * --------------------------------------------------------------------------- */

/* NOTE: Elementor reliably outputs custom CSS classes on CONTAINERS but not
 * always on individual widgets when template data is DB-injected. So these
 * rules hook off the stable CONTAINER classes (.nygkey-post-hero, etc.) and
 * target descendant widgets by Elementor's own widget classes / tag. */

/* Archive photo hero — full-bleed van band + centered white copy (template 273). */
.nygkey-archive-hero {
  text-align: center;
  position: relative;
  width: 100%;
}
/* Archive canvas: Theme Builder archive templates render inside Astra's capped
 * .ast-container (~1240px), which insets the photo hero. Stretch to viewport
 * edges like service pages and single-post (see .single-post rules below). */
body.blog .site-content > .ast-container,
body.archive .site-content > .ast-container,
body.blog .ast-container,
body.archive .ast-container,
.elementor-page-273 .site-content > .ast-container,
.elementor-page-273 .ast-container {
  max-width: 100%;
  padding-left: 0;
  padding-right: 0;
}
body.blog #primary,
body.blog .content-area.primary,
body.blog .site-main,
body.archive #primary,
body.archive .content-area.primary,
body.archive .site-main,
.elementor-page-273 #primary,
.elementor-page-273 .site-main {
  margin-top: 0;
  padding-top: 0;
}
.nygkey-archive-hero > .e-con-inner,
.nygkey-archive-hero-inner {
  position: relative;
  z-index: 1;
}
.nygkey-archive-hero-inner {
  margin-inline: auto;
  text-align: center;
  max-width: 1140px;
  width: 100%;
}
.nygkey-archive-hero-inner .elementor-widget-heading:first-child .elementor-heading-title {
  color: var(--nygkey-gold);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: 0.85rem;
  margin-bottom: 0;
}
/* Dynamic archive-title when present (category/tag/date); static fallback on /blog/.
 * Widget css_classes are unreliable when template data is DB-injected, so target
 * the 2nd/3rd heading widgets inside the hero inner container (eyebrow, dynamic,
 * fallback). */
.nygkey-archive-hero-inner .elementor-widget-heading:nth-child(2):has(.elementor-heading-title:not(:empty))
  ~ .elementor-widget-heading:nth-child(3) {
  display: none;
}
.nygkey-archive-hero-inner
  .elementor-widget-heading:nth-child(2):not(:has(.elementor-heading-title:not(:empty))) {
  display: none;
}
.nygkey-archive-hero-inner h1.elementor-heading-title {
  color: #ffffff;
  text-shadow: 0 1px 14px rgba(0, 0, 0, 0.35);
}
.nygkey-archive-hero-inner .elementor-widget-text-editor {
  color: rgba(255, 255, 255, 0.92);
  max-width: 60ch;
  margin-inline: auto;
}
.nygkey-archive-hero-inner .nygkey-archive-breadcrumb {
  color: rgba(255, 255, 255, 0.92);
  font-size: 0.92rem;
  margin: 2px 0 0;
}
.nygkey-archive-hero-inner .nygkey-archive-breadcrumb a {
  color: #ffffff;
  text-decoration: none;
}
.nygkey-archive-hero-inner .nygkey-archive-breadcrumb a:hover,
.nygkey-archive-hero-inner .nygkey-archive-breadcrumb a:focus {
  color: var(--nygkey-gold);
  text-decoration: underline;
}
.nygkey-archive-hero-inner .nygkey-breadcrumb-sep {
  color: var(--nygkey-gold);
  margin: 0 0.4em;
}

/* Full-bleed surface band for the post grid (matches .nygkey-guides rhythm). */
.nygkey-archive-body {
  background: var(--nygkey-surface);
  border-top: 3px solid var(--nygkey-gold);
}
.nygkey-archive-body-inner {
  margin-inline: auto;
}

/* Blog hub pathways — inside the archive surface band; reuses template-card + guides. */
.nygkey-blog-hub-pathways {
  margin-bottom: 12px;
  padding-bottom: 40px;
  border-bottom: 1px solid #e5e7eb;
}
.nygkey-blog-hub-head {
  margin-bottom: 22px;
}
.nygkey-blog-hub-head .nygkey-template-eyebrow {
  color: #113764;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: 0.85rem;
  margin: 0 0 8px;
}
.nygkey-blog-hub-title {
  position: relative;
  margin: 0;
  padding-bottom: 16px;
  color: #111827;
  font-family: var(--nygkey-font-heading);
  font-size: clamp(1.35rem, 2.4vw, 1.75rem);
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.25;
}
.nygkey-blog-hub-title::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 64px;
  height: 5px;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--nygkey-gold), #ffd500);
}
.nygkey-blog-topic-grid {
  margin-bottom: 36px;
}
a.nygkey-blog-topic-card {
  display: block;
  height: 100%;
  text-decoration: none;
  color: inherit;
}
.nygkey-blog-popular {
  background: transparent;
  padding: 0;
  max-width: 960px;
}
.nygkey-blog-popular .nygkey-blog-guides-list ul {
  column-count: 1;
}
.nygkey-blog-popular-title {
  margin: 0 0 14px;
  color: #111827;
  font-family: var(--nygkey-font-heading);
  font-size: 1.15rem;
  font-weight: 700;
  line-height: 1.3;
}
/* Grid lead (category / paged archives only) */
.nygkey-blog-grid-lead-wrap:not(:has(.nygkey-blog-grid-lead)) {
  display: none;
}
.nygkey-blog-grid-lead {
  max-width: 720px;
}
.nygkey-blog-grid-lead .nygkey-blog-hub-heading {
  position: relative;
  margin: 0 0 8px;
  padding-bottom: 14px;
  color: #111827;
  font-family: var(--nygkey-font-heading);
  font-size: clamp(1.25rem, 2.2vw, 1.55rem);
  font-weight: 700;
  line-height: 1.25;
}
.nygkey-blog-grid-lead .nygkey-blog-hub-heading::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 56px;
  height: 4px;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--nygkey-gold), #ffd500);
}
.nygkey-blog-grid-lead .nygkey-blog-hub-intro {
  margin: 0 0 4px;
  color: var(--nygkey-text-muted);
  font-size: 1rem;
  line-height: 1.55;
}

/* --------------------------------------------------------------------------
 * Single-post photo hero (ports the production hero): full-bleed keys
 * background image + dark overlay are set on the .nygkey-post-hero CONTAINER
 * in Elementor; these rules handle the centered white content + legibility.
 * The inner boxed container is .nygkey-post-hero-inner.
 * ------------------------------------------------------------------------ */
/* Single-post canvas: posts render under Astra's Full Width / Stretched layout
 * (body.ast-page-builder-template). Unlike the Elementor-Canvas pages, Astra
 * still caps the post's .ast-container at its content width, which would inset
 * the photo hero. Stretch the container to the viewport so the hero (a
 * full-width Elementor container) is truly edge-to-edge like production; each
 * section then boxes its own content via its inner container. */
.single-post.ast-page-builder-template .ast-container {
  max-width: 100%;
  padding-left: 0;
  padding-right: 0;
}
/* Astra adds a top margin on the content area; remove it so the photo hero butts
 * directly against the header (matches production, which has a 0px gap). */
.single-post.ast-page-builder-template #primary,
.single-post.ast-page-builder-template .content-area.primary,
.single-post.ast-page-builder-template .site-main {
  margin-top: 0;
  padding-top: 0;
}

.nygkey-post-hero {
  text-align: center;
}
/* Lift content above the overlay and keep it readable on the photo. */
.nygkey-post-hero > .e-con-inner,
.nygkey-post-hero-inner {
  position: relative;
  z-index: 1;
}
.nygkey-post-hero-inner {
  margin-inline: auto;
  text-align: center;
}
/* Eyebrow (h6) — gold over the dark overlay */
.nygkey-post-hero-inner .elementor-widget-heading:first-child .elementor-heading-title {
  color: var(--nygkey-gold);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: 0.85rem;
  margin-bottom: 0;
}
/* Title (h1) — white, centered, with a subtle shadow for contrast */
.nygkey-post-hero-inner h1.elementor-heading-title {
  color: #ffffff;
  font-size: clamp(1.9rem, 4vw, 3rem);
  line-height: 1.15;
  margin: 0;
  text-shadow: 0 1px 14px rgba(0, 0, 0, 0.35);
}

/* Post meta row (author / date / category) — white, centered */
.nygkey-post-hero-inner .elementor-post-info {
  justify-content: center;
  gap: 18px;
  flex-wrap: wrap;
}
.nygkey-post-hero-inner .elementor-post-info .elementor-icon-list-text {
  color: rgba(255, 255, 255, 0.92);
  font-size: 0.9rem;
}
.nygkey-post-hero-inner .elementor-post-info a {
  color: rgba(255, 255, 255, 0.92);
  text-decoration: none;
}
.nygkey-post-hero-inner .elementor-post-info a:hover,
.nygkey-post-hero-inner .elementor-post-info a:focus {
  color: #ffffff;
  text-decoration: underline;
}
.nygkey-post-hero-inner .elementor-post-info .elementor-icon-list-icon svg {
  width: 0.95em;
  height: 0.95em;
  fill: var(--nygkey-gold);
}

/* The featured image sits right under the photo hero now; tighten the gap so
 * the two bands read as one unit (hero band -> overlapping/edge image). */
.nygkey-post-hero + .nygkey-post-featured {
  padding-top: 28px;
}

/* Featured image (image widget inside the featured container) */
.nygkey-post-featured img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 14px;
  box-shadow: var(--nygkey-shadow-md);
}

/* Post body readability (theme-post-content inside the body container) */
.nygkey-post-body .elementor-widget-theme-post-content,
.nygkey-post-body .elementor-widget-container {
  color: var(--nygkey-text);
  font-size: 1.05rem;
  line-height: 1.75;
}
.nygkey-post-body h2 {
  color: #111827;
  margin-top: 1.8em;
  font-size: clamp(1.4rem, 2.4vw, 1.9rem);
  line-height: 1.25;
}
.nygkey-post-body h3 {
  color: #111827;
  margin-top: 1.4em;
  font-size: clamp(1.15rem, 1.9vw, 1.45rem);
}
.nygkey-post-body img {
  max-width: 100%;
  height: auto;
  border-radius: 12px;
}
.nygkey-post-body ul,
.nygkey-post-body ol {
  padding-left: 1.25rem;
}
.nygkey-post-body li {
  margin-bottom: 0.5rem;
}
.nygkey-post-body a {
  color: #113764;
  text-decoration: underline;
}

.nygkey-archive-hero-inner h1.elementor-heading-title {
  font-size: clamp(2rem, 4.2vw, 3rem);
  font-weight: 600;
  line-height: 1.12;
  margin: 0;
}

/* Archive card grid polish (Elementor "cards" skin) */
.nygkey-archive-body .elementor-post__avatar,
.nygkey-archive-body .elementor-post-avatar {
  display: none !important;
}
.nygkey-archive-body .elementor-post__card {
  background: var(--nygkey-white);
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 3px 16px rgba(17, 55, 100, 0.1);
  transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}
.nygkey-archive-body .elementor-post__card:hover,
.nygkey-archive-body .elementor-post__card:focus-within {
  border-color: rgba(255, 213, 0, 0.55);
  box-shadow: 0 16px 38px rgba(17, 55, 100, 0.16);
  transform: translateY(-3px);
}
.nygkey-archive-body .elementor-post__badge {
  background: var(--nygkey-gold);
  color: #111827;
  font-weight: 700;
}
.nygkey-archive-body .elementor-post__title a {
  color: #111827;
}
.nygkey-archive-body .elementor-post__read-more {
  color: #113764;
  font-weight: 600;
  position: relative;
  visibility: hidden;
}
.nygkey-archive-body .elementor-post__read-more::after {
  content: "Read guide \2192";
  visibility: visible;
  position: absolute;
  left: 0;
  top: 0;
  color: #113764;
  font-weight: 600;
}
.nygkey-archive-body .elementor-post__excerpt {
  color: var(--nygkey-text-muted);
}
/* Pagination */
.nygkey-archive-body .elementor-pagination .page-numbers.current {
  background: var(--nygkey-gold);
  color: #111827;
  border-color: var(--nygkey-gold);
}

/* Blog CTA band — matches the header top bar (heading-ink #111827) */
.nygkey-blog-cta {
  background: #111827;
  border-radius: 18px;
  /* Guard against the boxed width + side margins exceeding the viewport on
   * mid-size screens (caused a ~4px horizontal scroll at ~820px). */
  max-width: calc(100% - 48px);
  margin-left: auto;
  margin-right: auto;
}
.nygkey-blog-cta .elementor-heading-title,
.nygkey-blog-cta .elementor-widget-text-editor {
  color: var(--nygkey-white);
}
.nygkey-blog-cta .elementor-widget-text-editor {
  opacity: 0.92;
}
/* Keep the CTA buttons (incl. the long phone label) from overflowing on
 * narrower viewports: let the button row wrap and the buttons size to content
 * without forcing the band wider than the viewport. */
.nygkey-blog-cta .elementor-widget-button {
  max-width: 100%;
}
.nygkey-blog-cta .elementor-button {
  white-space: normal;
}
@media (max-width: 1024px) {
  .nygkey-blog-cta > .e-con-inner > .e-con:last-child,
  .nygkey-blog-cta > .e-con:last-child {
    flex-wrap: wrap;
  }
}

/* Post navigation (prev / next) */
.nygkey-post-nav-wrap .elementor-post-navigation__link {
  color: #113764;
}
.nygkey-post-nav-wrap .post-navigation__prev--title,
.nygkey-post-nav-wrap .post-navigation__next--title {
  color: #111827;
  font-weight: 600;
}

/* ===================================================================== *
 * Page hero photo (B) + inline body photo (C) — template-driven pages.
 * Hero uses an ACF hero_image background; a brand image is the fallback
 * so pages without a per-page photo still render a styled hero band.
 * ===================================================================== */
.nygkey-hero-photo {
  background-image: url("/wp-content/uploads/2026/04/Golden-Key-Locksmith-Van-NYC.png");
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  position: relative;
}
/* Overlay/scrim is owned by Elementor (hero container background overlay) so it
 * is editable in the UI and consistent across pages. CSS only carries the
 * brand-image fallback and white hero text. */
.nygkey-hero-photo h1,
.nygkey-hero-photo h2,
.nygkey-hero-photo h3,
.nygkey-hero-photo p,
.nygkey-hero-photo .elementor-heading-title {
  color: #ffffff !important;
}

/* Inline links inside hero copy must stay readable on the dark photo scrim. */
.nygkey-hero-photo p a,
.nygkey-hero-photo .elementor-widget-text-editor a {
  color: var(--nygkey-gold) !important;
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Inline body text|photo layout (C). */
.nygkey-body-textphoto {
  align-items: flex-start;
  gap: 32px;
}
.nygkey-body-photo img {
  border-radius: 12px;
  width: 100%;
  height: auto;
  object-fit: cover;
}
@media (max-width: 1024px) {
  .nygkey-body-textphoto { flex-direction: column !important; }
  .nygkey-body-textphoto > .e-con,
  .nygkey-body-textphoto > .elementor-column { width: 100% !important; }
}

/* 404 page (template 277 rendered via 404.php). The child-theme 404.php wraps the
 * Elementor template in .site-main, which sits inside Astra's capped .ast-container.
 * Break the full-bleed keys hero out to the viewport edges to match production, and
 * remove Astra's default .site-main top/bottom margins so the hero sits flush against
 * the header and footer (no white gaps). */
body.error404 #primary.nygkey-404-page,
.nygkey-404-page,
.ast-container > .nygkey-404-page {
  max-width: 100% !important;
  width: 100%;
  margin: 0 !important;
  padding: 0 !important;
}
body.error404 .site-content > .ast-container,
body.error404 .ast-container {
  max-width: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
}
body.error404 .site-content {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
.nygkey-404-hero {
  position: relative;
  width: 100%;
}
/* Guaranteed dark scrim over the keys photo (Elementor's overlay element is not
 * always injected for templates; this CSS scrim matches the intended 0.55 dark
 * overlay so the gold 404 + white copy stay legible). */
.nygkey-404-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-color: rgba(13, 13, 13, 0.55);
  pointer-events: none;
  z-index: 0;
}
.nygkey-404-hero > .e-con-inner,
.nygkey-404-hero > .elementor-container,
.nygkey-404-inner {
  position: relative;
  z-index: 1;
}

/* =============================================================================
 * DESIGN ELEVATION LAYER (2026-06-08)
 * Site-wide UI/UX polish applied via stable nygkey-template-* / section classes
 * so every rebuilt page + dynamic template inherits it. Pure CSS (GPU-friendly
 * transforms + shadows, no JS, no new assets) to keep CWV impact negligible.
 * Honors prefers-reduced-motion.
 * ========================================================================== */

/* ---- Service-card: gold icon chip + accent rail + refined inner rhythm ---- */
.nygkey-template-card {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
/* Gold accent rail that wipes in on hover */
.nygkey-template-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--nygkey-gold), #ffd500);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.28s ease;
}
.nygkey-template-card:hover::before,
.nygkey-template-card:focus-within::before {
  transform: scaleX(1);
}
/* Icon chip: soft translucent NAVY underlay (like the gold tint, but navy) so the
 * gold icon keeps contrast without a solid block. */
.nygkey-template-card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 58px;
  height: 58px;
  border-radius: 16px;
  background: rgba(17, 55, 100, 0.1);
  margin-bottom: 6px;
  transition: background 0.22s ease, transform 0.22s ease;
}
.nygkey-template-card-icon .elementor-icon,
.nygkey-template-card-icon svg,
.nygkey-template-card-icon i {
  width: 30px;
  height: 30px;
  font-size: 28px;
  line-height: 1;
}
.nygkey-template-card:hover .nygkey-template-card-icon {
  background: rgba(17, 55, 100, 0.18);
  transform: translateY(-2px);
}
.nygkey-template-card--image .nygkey-template-card-img {
  margin-bottom: 8px;
}
.nygkey-template-card--image .nygkey-template-card-img img {
  width: 100%;
  height: clamp(170px, 17vw, 220px);
  object-fit: cover;
  border-radius: 12px;
}
.nygkey-template-card-title {
  letter-spacing: -0.01em;
}
/* Push the Read More to the bottom so cards in a row align */
.nygkey-template-card .nygkey-readmore,
.nygkey-template-card .elementor-widget-button:last-child {
  margin-top: auto;
}

/* ---- Read More: text-link affordance with animated arrow + underline ------ */
.nygkey-readmore .elementor-button,
a.nygkey-readmore,
.nygkey-template-card .elementor-button {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px; /* a11y touch target */
  padding: 6px 0 !important;
  background: transparent !important;
  color: #113764 !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  font-size: 13px;
}
.nygkey-readmore .elementor-button .elementor-button-text,
.nygkey-template-card .elementor-button .elementor-button-text {
  position: relative;
  padding-bottom: 3px;
}
.nygkey-readmore .elementor-button .elementor-button-text::after,
.nygkey-template-card .elementor-button .elementor-button-text::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 2px;
  background: var(--nygkey-gold);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.24s ease;
}
.nygkey-readmore .elementor-button .elementor-button-icon,
.nygkey-template-card .elementor-button .elementor-button-icon {
  transition: transform 0.24s ease;
}
.nygkey-template-card:hover .elementor-button .elementor-button-icon,
.nygkey-readmore .elementor-button:hover .elementor-button-icon {
  transform: translateX(4px);
}
.nygkey-template-card:hover .elementor-button .elementor-button-text::after,
.nygkey-readmore .elementor-button:hover .elementor-button-text::after {
  transform: scaleX(1);
}
.nygkey-template-card .elementor-button:hover {
  color: #113764 !important;
}

/* ---- Reusable section-title treatment (eyebrow accent + gold underline) ----
 * Applied to long-copy / guides / services / FAQ section H2s so each section
 * reads as a designed title block (like production's eyebrow + title), not bare
 * text. The gold accent bar sits above-left of the heading. */
.nygkey-longcopy .elementor-widget-heading .elementor-heading-title,
.nygkey-guides .elementor-widget-heading .elementor-heading-title,
.nygkey-longcopy .nygkey-longcopy-title,
.nygkey-section-title .elementor-heading-title {
  position: relative;
  padding-bottom: 18px;
  letter-spacing: -0.01em;
}
/* Gold accent line sits UNDER the title */
.nygkey-longcopy .elementor-widget-heading .elementor-heading-title::after,
.nygkey-guides .elementor-widget-heading .elementor-heading-title::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 64px;
  height: 5px;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--nygkey-gold), #ffd500);
}

/* ---- Guides section: turn bare bullet lists into styled link rows ---------
 * The related_links builder tags the list widgets with `nygkey-guides` (shared)
 * plus a page-prefixed `nygkey-<page>-guides-list`. Target the shared class on
 * the text-editor widget so every page's guide list is styled. */
.nygkey-guides [class*="-guides-list"] ul,
.nygkey-guides .nygkey-blog-guides-list ul,
.elementor-widget-text-editor.nygkey-guides ul {
  list-style: none;
  margin: 0;
  padding: 0;
  /* Flow the single list into two balanced columns */
  column-count: 2;
  column-gap: 24px;
}
@media (max-width: 640px) {
  .nygkey-guides [class*="-guides-list"] ul,
  .nygkey-guides .nygkey-blog-guides-list ul,
  .elementor-widget-text-editor.nygkey-guides ul {
    column-count: 1;
  }
}
.nygkey-guides [class*="-guides-list"] li,
.nygkey-guides .nygkey-blog-guides-list li,
.elementor-widget-text-editor.nygkey-guides li {
  margin: 0;
  padding: 0;
  /* Prevent a card-row from splitting across the two columns */
  break-inside: avoid;
  -webkit-column-break-inside: avoid;
}
.nygkey-guides [class*="-guides-list"] li a,
.nygkey-guides .nygkey-blog-guides-list li a,
.elementor-widget-text-editor.nygkey-guides li a {
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px 14px 14px;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  margin-bottom: 10px;
  background: var(--nygkey-white);
  color: #113764;
  font-weight: 600;
  text-decoration: none;
  line-height: 1.4;
  transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease, background 0.18s ease;
}
/* Navy/grey arrow chip bullet (matches the 24/7 aside palette, not gold-on-white) */
.nygkey-guides [class*="-guides-list"] li a::before,
.nygkey-guides .nygkey-blog-guides-list li a::before,
.elementor-widget-text-editor.nygkey-guides li a::before {
  content: "\2192"; /* → */
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 8px;
  background: #f3f5f8;
  color: #113764;
  font-weight: 700;
  transition: background 0.18s ease, color 0.18s ease, transform 0.18s ease;
}
.nygkey-guides [class*="-guides-list"] li a:hover,
.nygkey-guides .nygkey-blog-guides-list li a:hover,
.elementor-widget-text-editor.nygkey-guides li a:hover {
  border-color: #e5e7eb;
  box-shadow: 0 10px 26px rgba(17, 55, 100, 0.12);
  transform: translateX(3px);
  background: #f3f5f8;
}
.nygkey-guides [class*="-guides-list"] li a:hover::before,
.nygkey-guides .nygkey-blog-guides-list li a:hover::before,
.elementor-widget-text-editor.nygkey-guides li a:hover::before {
  background: #113764;
  color: #fff;
  transform: translateX(2px);
}

/* Constrain guides width (was full 1140 and felt too wide) + tighten columns */
.nygkey-guides > .e-con-inner,
.nygkey-guides > .elementor-container {
  max-width: 960px;
  margin-left: auto;
  margin-right: auto;
}
.nygkey-guides [class*="-guides-cols"] {
  gap: 18px 28px;
}

/* ---- FAQ: eyebrow above the title + lock-icon polish ---------------------- */
.nygkey-faq .nygkey-faq-eyebrow {
  display: inline-block;
  font-family: var(--nygkey-font-heading);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #113764;
  background: rgba(17, 55, 100, 0.08);
  padding: 6px 16px;
  border-radius: var(--nygkey-radius-pill);
  margin-bottom: 4px;
}
.nygkey-faq [class*="-eyebrow-wrap"] {
  text-align: center;
}
/* Gold accent bar centered under the FAQ title */
.nygkey-faq > .e-con-inner > .elementor-widget-heading .elementor-heading-title,
.nygkey-faq .elementor-widget-heading h3.elementor-heading-title {
  position: relative;
  padding-bottom: 16px;
}
.nygkey-faq > .e-con-inner > .elementor-widget-heading .elementor-heading-title::after,
.nygkey-faq .elementor-widget-heading h3.elementor-heading-title::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 60px;
  height: 5px;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--nygkey-gold), #ffd500);
}
/* FAQ subheading under the gold bar */
.nygkey-faq [class*="-subhead"] {
  text-align: center;
  color: var(--nygkey-text-muted);
  font-size: 1.02rem;
  max-width: 640px;
  margin: 6px auto 10px;
}

/* FAQ accordion reskin: cards. LOCKED (collapsed) rows use a light-gold fill;
 * the OPEN (active) row uses a blue-grey fill with a gold left-accent. */
.nygkey-faq-accordion .elementor-accordion-item {
  border: 1px solid #e5e7eb !important;
  border-radius: 12px !important;
  overflow: hidden;
  margin-bottom: 12px;
  box-shadow: 0 2px 10px rgba(17, 55, 100, 0.05);
  transition: box-shadow 0.18s ease, border-color 0.18s ease;
}
.nygkey-faq-accordion .elementor-accordion-item:hover {
  border-color: rgba(255, 213, 0, 0.6) !important;
  box-shadow: 0 8px 24px rgba(17, 55, 100, 0.09);
}
/* Collapsed/locked title bar: lighter blue-grey fill (no gold) */
.nygkey-faq-accordion .elementor-tab-title {
  background: #f3f5f8 !important;
  border: 0 !important;
  border-left: 4px solid transparent !important;
  padding: 20px 22px !important;
  transition: background 0.18s ease, border-color 0.18s ease;
  /* Vertically center the lock icon + question text (was top-aligned) */
  display: flex !important;
  align-items: center !important;
}
.nygkey-faq-accordion .elementor-tab-title .elementor-accordion-title {
  flex: 1;
}
.nygkey-faq-accordion .elementor-tab-title a,
.nygkey-faq-accordion .elementor-tab-title .elementor-accordion-title {
  color: #111827 !important;
  font-weight: 600;
}
.nygkey-faq-accordion .elementor-tab-title:hover {
  background: #f3f5f8 !important;
}
/* Open/unlocked title bar: deeper blue-grey fill + gold accent rail */
.nygkey-faq-accordion .elementor-tab-title.elementor-active {
  background: #f3f5f8 !important;
  border-left-color: var(--nygkey-gold) !important;
}
.nygkey-faq-accordion .elementor-tab-content {
  border: 0 !important;
  background: var(--nygkey-white) !important;
  padding: 4px 22px 22px 26px !important;
  color: var(--nygkey-text) !important;
}
/* Lock icons: NAVY when locked (collapsed), GOLD when unlocked (active) */
.nygkey-faq-accordion .elementor-accordion-icon {
  background: none !important;
  box-shadow: none !important;
  border: 0 !important;
  width: auto;
  height: auto;
  margin: 0 13px 0 0 !important;
  display: inline-flex;
  align-items: center;
  align-self: center;
  float: none !important;
}
.nygkey-faq-accordion .elementor-accordion-icon i {
  font-size: 16px;
  color: #113764;
}
.nygkey-faq-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon i {
  color: var(--nygkey-gold);
}

/* Constrain FAQ width (1140 felt too wide for a single-column accordion) */
.nygkey-faq > .e-con-inner,
.nygkey-faq > .elementor-container {
  max-width: 880px;
  margin-left: auto;
  margin-right: auto;
}

/* ---- FAQ: contact CTA row under the accordion ----------------------------- */
.nygkey-faq-contact {
  margin-top: 22px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 10px 18px;
  text-align: center;
  font-size: 1.02rem;
  color: var(--nygkey-text);
}
.nygkey-faq-contact a {
  font-weight: 700;
  color: #113764;
  text-decoration: none;
  border-bottom: 2px solid var(--nygkey-gold);
  transition: color 0.16s ease;
}
.nygkey-faq-contact a:hover {
  color: var(--nygkey-gold-ink, #113764);
}
.nygkey-faq-contact .nygkey-faq-phone {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  border-radius: var(--nygkey-radius-pill);
  background: var(--nygkey-gold);
  color: #111827;
  border-bottom: 0;
  box-shadow: 0 6px 18px rgba(255, 213, 0, 0.32);
  transition: transform 0.16s ease, box-shadow 0.16s ease, background 0.16s ease;
}
.nygkey-faq-contact .nygkey-faq-phone:hover {
  background: #111827;
  color: #fff;
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(17, 24, 39, 0.28);
}

/* ---- Section rhythm: subtle surface + accent divider ---------------------- */
.nygkey-guides {
  background: var(--nygkey-surface);
}
/* Long-copy: contained light-grey "aside" panel (matches the 24/7 emergency
 * aside reference) on a plain white section, with generous internal padding. */
.nygkey-longcopy {
  background: var(--nygkey-white);
  padding-top: 48px;
  padding-bottom: 48px;
}
.nygkey-longcopy > .e-con-inner,
.nygkey-longcopy > .elementor-container {
  max-width: 1000px;
  margin-left: auto;
  margin-right: auto;
  background: var(--nygkey-surface);
  border: 1px solid #e5e7eb;
  border-radius: 20px;
  padding: 48px 48px 44px;
}
/* Complete grey fill: ensure no inner widget (heading/text-editor) paints a white
 * background band behind the copy. */
.nygkey-longcopy .elementor-widget,
.nygkey-longcopy .elementor-widget-text-editor,
.nygkey-longcopy .elementor-widget-heading,
.nygkey-longcopy [class*="-longcopy-text"],
.nygkey-longcopy .elementor-widget-container {
  background: transparent !important;
}
@media (max-width: 600px) {
  .nygkey-longcopy {
    padding-top: 32px;
    padding-bottom: 32px;
  }
  .nygkey-longcopy > .e-con-inner,
  .nygkey-longcopy > .elementor-container {
    padding: 30px 22px 26px;
  }
}
.nygkey-longcopy,
.nygkey-guides,
.nygkey-services,
.nygkey-faq {
  border-radius: 0;
}
/* Short gold divider under centered section titles */
.nygkey-services-title,
.nygkey-faq .elementor-widget-heading h3,
.nygkey-faq .elementor-widget-heading h2 {
  position: relative;
}
.nygkey-services-title::after {
  content: "";
  display: block;
  width: 56px;
  height: 3px;
  border-radius: 2px;
  background: var(--nygkey-gold);
  margin: 14px auto 0;
}

/* ---- PREMIUM INCREMENT (2026-06-08): hero depth, card badges, testimonial -- */

/* Hero: add a bottom-weighted gradient scrim for depth + crisper text contrast.
 * Layered UNDER Elementor's own overlay color so it only deepens the base. */
.nygkey-hero-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(13, 22, 41, 0.15) 0%, rgba(13, 22, 41, 0.55) 100%);
  pointer-events: none;
  z-index: 0;
}
.nygkey-hero-photo > .e-con-inner,
.nygkey-hero-photo > .elementor-container {
  position: relative;
  z-index: 1;
}

/* Service cards: numbered badge in the top-right for a designed, premium feel */
.nygkey-services .nygkey-template-grid {
  counter-reset: nygkey-card;
}
.nygkey-services .nygkey-template-card {
  counter-increment: nygkey-card;
}
.nygkey-services .nygkey-template-card::after {
  content: counter(nygkey-card, decimal-leading-zero);
  position: absolute;
  top: 18px;
  right: 20px;
  font-family: var(--nygkey-font-heading);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: rgba(17, 55, 100, 0.18);
  transition: color 0.22s ease;
}
.nygkey-services .nygkey-template-card:hover::after {
  color: rgba(255, 213, 0, 0.9);
}

/* Image-carousel sections share the service-card media crop rhythm. */
.nygkey-gallery .swiper-slide img,
.nygkey-gallery .slick-slide img {
  width: 100%;
  height: clamp(210px, 22vw, 300px);
  object-fit: cover;
  border-radius: 14px;
}
.nygkey-gallery .elementor-image-carousel-wrapper {
  width: 100%;
}

/* Testimonial slide: a real quotation card with a gold quote glyph */
.nygkey-lightband .elementor-testimonial__text {
  position: relative;
  font-size: 1.06rem;
  line-height: 1.7;
  color: #2c2c2c;
}
.nygkey-lightband .elementor-testimonial__content {
  background: var(--nygkey-white);
  border: 1px solid #e5e7eb;
  border-radius: 16px;
  padding: 30px 28px 26px;
  box-shadow: 0 10px 30px rgba(17, 55, 100, 0.08);
  position: relative;
}
.nygkey-lightband .elementor-testimonial__content::before {
  content: "\201C"; /* “ */
  position: absolute;
  top: 2px;
  left: 18px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 66px;
  line-height: 1;
  color: rgba(255, 213, 0, 0.5);
}
.nygkey-lightband .elementor-testimonial__cite {
  margin-top: 6px;
}
.nygkey-lightband .elementor-testimonial__name {
  color: #113764;
  font-weight: 700;
}
.nygkey-lightband .elementor-swiper-button,
.nygkey-lightband .swiper-pagination-bullet {
  align-items: center;
  display: inline-flex;
  justify-content: center;
  min-height: 44px;
  min-width: 44px;
}
.nygkey-info-cta .elementor-button {
  align-items: center;
  display: inline-flex;
  min-height: 44px;
}
.nygkey-contact-list .elementor-icon-list-item > a {
  align-items: center;
  display: inline-flex;
  min-height: 44px;
}

/* Standalone component-library polish: saved templates 297/299/301 use the
 * same design language as rebuilt pages, but without adding heavier widgets. */
.nygkey-template-section-title .elementor-heading-title {
  position: relative;
}

.nygkey-template-section-title .elementor-heading-title::after {
  content: "";
  display: block;
  width: 56px;
  height: 3px;
  border-radius: 2px;
  background: var(--nygkey-gold);
  margin: 14px auto 0;
}

.nygkey-template-links .nygkey-template-link-list .elementor-icon-list-items,
.nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-items {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.nygkey-template-links .nygkey-template-link-list .elementor-icon-list-item,
.nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-item {
  margin: 0;
}

.nygkey-template-links .nygkey-template-link-list .elementor-icon-list-item > a,
.nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-item > a {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px 14px 14px;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  background: var(--nygkey-white);
  color: #113764;
  font-weight: 700;
  line-height: 1.35;
  text-decoration: none;
  transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease, background 0.18s ease;
}

.nygkey-template-links .nygkey-template-link-list .elementor-icon-list-icon,
.nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 9px;
  background: rgba(255, 213, 0, 0.16);
  color: #113764;
  transition: background 0.18s ease, transform 0.18s ease;
}

.nygkey-template-links .nygkey-template-link-list .elementor-icon-list-icon svg,
.nygkey-template-links .nygkey-template-link-list .elementor-icon-list-icon i,
.nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-icon svg,
.nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-icon i {
  width: 13px;
  height: 13px;
  font-size: 13px;
}

.nygkey-template-links .nygkey-template-link-list .elementor-icon-list-item > a:hover,
.nygkey-template-links .nygkey-template-link-list .elementor-icon-list-item > a:focus,
.nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-item > a:hover,
.nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-item > a:focus {
  border-color: rgba(255, 213, 0, 0.7);
  box-shadow: 0 10px 26px rgba(17, 55, 100, 0.1);
  transform: translateX(3px);
  background: #f6f6f6;
}

.nygkey-template-links .nygkey-template-link-list .elementor-icon-list-item > a:hover .elementor-icon-list-icon,
.nygkey-template-links .nygkey-template-link-list .elementor-icon-list-item > a:focus .elementor-icon-list-icon,
.nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-item > a:hover .elementor-icon-list-icon,
.nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-item > a:focus .elementor-icon-list-icon {
  background: var(--nygkey-gold);
  transform: translateX(2px);
}

.nygkey-child-service-testimonials .elementor-testimonial__text {
  position: relative;
  font-size: 1.06rem;
  line-height: 1.7;
  color: #2c2c2c;
}

.nygkey-child-service-testimonials .elementor-testimonial__content {
  position: relative;
  background: var(--nygkey-white);
  border: 1px solid #e5e7eb;
  border-radius: 16px;
  padding: 30px 28px 26px;
  box-shadow: 0 10px 30px rgba(17, 55, 100, 0.08);
}

.nygkey-child-service-testimonials .elementor-testimonial__content::before {
  content: "\201C";
  position: absolute;
  top: 2px;
  left: 18px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 66px;
  line-height: 1;
  color: rgba(255, 213, 0, 0.5);
}

.nygkey-child-service-testimonials .elementor-testimonial__name {
  color: #113764;
  font-weight: 700;
}

/* ---- Flagship UES: hero sub-line, trust grid, building cards, process steps */
.nygkey-ues-herosub {
  font-size: 1.12rem;
  font-weight: 600;
  color: #113764;
  margin: 0 0 0.6rem;
}
/* Trust grid: icon chip + tighter card; reuses .nygkey-template-card chrome */
.nygkey-trust-card .nygkey-template-card-title {
  font-size: 1.12rem;
  margin-top: 0.2rem;
}
.nygkey-trust-card .nygkey-template-card-desc {
  color: #2c2c2c;
  font-size: 0.96rem;
  line-height: 1.55;
}
/* Building archetype panels: grey surface + gold top rule */
.nygkey-building-card {
  border-top: 3px solid var(--nygkey-gold);
  box-shadow: 0 2px 10px rgba(17, 55, 100, 0.06);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.nygkey-building-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 26px rgba(17, 55, 100, 0.12);
}
.nygkey-building-card .nygkey-building-title {
  font-size: 1.1rem;
}
.nygkey-building-card .nygkey-building-desc {
  color: #2c2c2c;
  font-size: 0.96rem;
  line-height: 1.55;
}
/* Process: gold number chip via the injected span */
.nygkey-step {
  position: relative;
}
.nygkey-step .nygkey-step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--nygkey-gold);
  color: #111827;
  font-family: var(--nygkey-font-heading);
  font-weight: 700;
  font-size: 1.15rem;
  box-shadow: 0 4px 12px rgba(255, 213, 0, 0.35);
}
.nygkey-step .nygkey-step-title {
  font-size: 1.08rem;
  margin-top: 0.2rem;
}
.nygkey-step .nygkey-step-desc {
  color: #2c2c2c;
  font-size: 0.95rem;
  line-height: 1.55;
}
/* subtle connecting rule between steps on desktop */
@media (min-width: 1025px) {
  .nygkey-process-row .nygkey-step:not(:last-child)::after {
    content: "";
    position: absolute;
    top: 49px;
    right: -11px;
    width: 22px;
    height: 2px;
    background: rgba(17, 55, 100, 0.18);
  }
}

/* ---- Neighborhood 24/7 emergency callout (navy band under the hero) -------- */
.nygkey-emer-callout {
  box-shadow: 0 10px 30px rgba(13, 42, 77, 0.18);
}
.nygkey-emer-callout .nygkey-ues-emer-h,
.nygkey-emer-callout .elementor-heading-title {
  color: #ffffff !important;
  font-size: 1.18rem;
  margin: 0 0 0.25rem;
}
.nygkey-emer-callout .elementor-widget-text-editor,
.nygkey-emer-callout .elementor-widget-text-editor p {
  color: #ffffff !important;
  margin: 0;
  font-size: 1.02rem;
  line-height: 1.55;
}
.nygkey-emer-callout .elementor-widget-text-editor a {
  color: var(--nygkey-gold) !important;
  font-weight: 700;
  text-decoration: none;
}
.nygkey-emer-callout .elementor-widget-text-editor a:hover {
  text-decoration: underline;
}
.nygkey-emer-callout .elementor-widget-icon .elementor-icon {
  color: var(--nygkey-gold);
}
.nygkey-outline-navy-cta .elementor-button:hover,
.nygkey-outline-navy-cta .elementor-button:focus {
  background: var(--e-global-color-secondary, #113764) !important;
  border-color: var(--e-global-color-secondary, #113764) !important;
  color: #ffffff !important;
}
@media (max-width: 767px) {
  .nygkey-emer-callout [data-element_type="container"] {
    text-align: left;
  }
  .nygkey-emer-callout .nygkey-cta-gold,
  .nygkey-emer-callout [class*="-emer-cta"] .elementor-button {
    width: 100%;
    justify-content: center;
  }
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  .nygkey-template-card,
  .nygkey-template-card::before,
  .nygkey-template-card-icon,
  .nygkey-guides [class*="-guides-list"] li a,
.nygkey-guides .nygkey-blog-guides-list li a,
  .nygkey-template-links .nygkey-template-link-list .elementor-icon-list-item > a,
  .nygkey-template-links .nygkey-template-link-list .elementor-icon-list-icon,
  .nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-item > a,
  .nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-icon,
  .nygkey-readmore .elementor-button .elementor-button-icon,
  .nygkey-faq-contact .nygkey-faq-phone {
    transition: none !important;
  }
  .nygkey-template-card:hover,
  .nygkey-guides [class*="-guides-list"] li a:hover,
.nygkey-guides .nygkey-blog-guides-list li a:hover,
  .nygkey-template-links .nygkey-template-link-list .elementor-icon-list-item > a:hover,
  .nygkey-template-links .elementor-widget-icon-list .elementor-icon-list-item > a:hover {
    transform: none !important;
  }
}

/* ---- Contact page (130) --------------------------------------------------- */
.nygkey-contact-intro-wrap > .elementor-widget-heading:first-child .elementor-heading-title,
.nygkey-contact-eyebrow .elementor-heading-title {
  display: inline-block;
  font-family: var(--nygkey-font-heading);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #113764;
  background: rgba(17, 55, 100, 0.08);
  padding: 6px 16px;
  border-radius: var(--nygkey-radius-pill);
}

.nygkey-contact-intro-wrap > .elementor-widget-heading:nth-child(2) .elementor-heading-title,
.nygkey-contact-title .elementor-heading-title {
  color: #111827;
  font-family: var(--nygkey-font-heading);
}

.nygkey-contact-intro a {
  color: #113764;
  font-weight: 700;
  text-decoration: underline;
  text-decoration-color: rgba(255, 213, 0, 0.85);
  text-underline-offset: 3px;
}

.nygkey-contact-intro a:hover,
.nygkey-contact-intro a:focus {
  color: #113764;
}

.nygkey-contact-form-embed {
  margin-top: 8px;
}

.nygkey-contact-cards {
  margin-top: 12px;
}

.nygkey-contact-card .elementor-icon-box-title,
.nygkey-contact-card .elementor-icon-box-title a {
  color: #111827;
}

.nygkey-contact-card--phone .elementor-icon-box-title,
.nygkey-contact-card--phone .elementor-icon-box-title a {
  color: #111827;
}

.nygkey-contact-card--email .elementor-icon-box-title,
.nygkey-contact-card--email .elementor-icon-box-title a,
.nygkey-contact-card--email .elementor-icon-box-description {
  color: #111827;
}

.nygkey-contact-hours {
  margin-top: 8px;
}

.nygkey-contact-hours-card .elementor-icon-box-title,
.nygkey-contact-hours-card .elementor-icon-box-title a {
  color: #111827;
}

.nygkey-contact-hours-list p {
  margin: 0;
  color: #2c2c2c;
  font-size: 16px;
  line-height: 1.65;
}

.nygkey-contact-hours-list + .nygkey-contact-hours-list {
  margin-top: 0;
}

.nygkey-contact-map {
  margin-top: 24px;
}

.nygkey-contact-map .elementor-custom-embed iframe {
  border-radius: 16px;
}

.nygkey-form .elementor-field-group > label,
.nygkey-quote-form .elementor-field-group > label,
.nygkey-form .elementor-field-label,
.nygkey-quote-form .elementor-field-label {
  display: block;
  font-family: var(--nygkey-font-body);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.35;
  color: #111827;
  margin-bottom: 6px;
}

.nygkey-form .elementor-mark-required .elementor-field-label::after,
.nygkey-quote-form .elementor-mark-required .elementor-field-label::after {
  color: #113764;
}

@media (max-width: 767px) {
  .nygkey-contact-cards > .e-con-inner {
    gap: 16px;
  }

  .nygkey-contact-hours > .e-con-inner {
    gap: 16px;
  }

  .nygkey-contact-hours-list p {
    font-size: 15px;
  }
}

/* ============================================================
   Homepage rebuild draft (home2): statement band + borough map
   ============================================================ */

.nygkey-home2-statement-title .nygkey-gold {
  color: #ffd500;
}

.nygkey-map {
  width: 100%;
  max-width: 600px;
  margin: 0 auto;
}

.nygkey-map-svg {
  width: 100%;
  height: auto;
  display: block;
}

.nygkey-map-boro {
  fill: #113764;
  stroke: rgba(255, 213, 0, 0.45);
  stroke-width: 0.75;
  transition: fill 0.25s ease;
}

.nygkey-map-manhattan {
  fill: #ffd500;
}

.nygkey-map-svg a {
  cursor: pointer;
}

.nygkey-map-svg a:hover .nygkey-map-boro,
.nygkey-map-svg a:focus .nygkey-map-boro {
  fill: #ffd500;
}

.nygkey-map-svg a:focus {
  outline: none;
}

.nygkey-map-svg a:focus-visible .nygkey-map-boro {
  stroke: #ffffff;
  stroke-width: 2;
}

.nygkey-map-ghost {
  fill: #111827;
}

.nygkey-map-label {
  fill: #ffffff;
  font-family: var(--nygkey-font-heading, "Poppins", sans-serif);
  font-weight: 600;
  font-size: 17px;
  pointer-events: none;
  paint-order: stroke;
  stroke: rgba(17, 24, 39, 0.65);
  stroke-width: 3px;
}

@media (max-width: 767px) {
  .nygkey-map {
    max-width: 420px;
  }

  .nygkey-map-label {
    font-size: 22px;
  }
}

/* Utility pages: Workiz online-booking embed (appointment page).
   An <iframe> has an intrinsic 300px width that collapses the HTML widget and
   its wrapper; force the full container width and a sensible height. */
.nygkey-workiz-embed {
  width: 100%;
  display: block;
}

.nygkey-workiz-embed iframe {
  display: block;
  width: 100%;
  min-height: 1000px;
  border: 0;
  border-radius: 14px;
}

.nygkey-appointment-booking-frame,
.nygkey-appointment-booking-frame .elementor-widget-container {
  width: 100%;
}

@media (max-width: 767px) {
  .nygkey-workiz-embed iframe {
    min-height: 900px;
  }
}
