/* City Page - scoped styles (auto-generated, !important applied to color/background/border/shadow/fill properties). Everything lives under the single ".citypage" wrapper class so it can never clash with any other plugin's CSS or the theme's own root/global CSS. */
html.citypage-html { scroll-behavior: smooth; }
.citypage { --citypage-red:#E31C24;--citypage-red-dark:#C4141B;--citypage-black:#111111;--citypage-text-secondary:#555555;--citypage-text-muted:#666666;--citypage-bg-light:#F7F8FA;--citypage-border:#E5E5E5;--citypage-white:#FFFFFF;--citypage-radius-lg:20px;--citypage-radius-md:16px;--citypage-radius-sm:12px;--citypage-shadow:0 10px 30px rgba(17,17,17,0.08);--citypage-shadow-sm:0 4px 14px rgba(17,17,17,0.06);--citypage-container:1320px; }
.citypage * { margin:0;padding:0;box-sizing:border-box; }
.citypage { font-family:'Poppins',sans-serif;color:var(--citypage-black) !important;background:var(--citypage-white) !important;font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:hidden; }
.citypage img { max-width:100%;display:block; }
.citypage a { text-decoration:none;color:inherit !important; }
.citypage ul { list-style:none; }
.citypage .container { width:100%;max-width:var(--citypage-container);margin:0 auto;padding:0 5px; }
.citypage h1, .citypage h2, .citypage h3, .citypage h4 { font-weight:700;line-height:1.15;letter-spacing:-0.01em; }
.citypage .accent { color:var(--citypage-red) !important; }
.citypage section { position:relative; }
.citypage .reveal { opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.2,.6,.2,1), transform .7s cubic-bezier(.2,.6,.2,1); }
.citypage .reveal.in-view { opacity:1;transform:translateY(0); }
.citypage .stagger-1 { transition-delay:.08s; }
.citypage .stagger-2 { transition-delay:.16s; }
.citypage .stagger-3 { transition-delay:.24s; }

  @media (prefers-reduced-motion:reduce){
.citypage .reveal { transition:none;opacity:1;transform:none; }
}
.citypage .btn { display:inline-flex;align-items:center;gap:10px;padding:12px 24px;border-radius:7px !important;font-weight:600;font-size:13px;transition:all .25s ease;cursor:pointer;border:2px solid transparent !important;white-space:nowrap; }
.citypage .btn-primary { background:var(--citypage-red) !important;color:var(--citypage-white) !important; }
.citypage .btn-primary:hover { background:var(--citypage-red-dark) !important;color:#fff !important;transform:translateY(-2px);box-shadow:0 10px 22px rgba(227,28,36,0.28) !important; }
.citypage .btn-outline { background:var(--citypage-white) !important;color:var(--citypage-black) !important;border:2px solid var(--citypage-border) !important; }
.citypage .btn-outline:hover { border-color:var(--citypage-black) !important;transform:translateY(-2px); }
.citypage .btn svg { transition:transform .25s ease; }
.citypage .btn-primary:hover svg { transform:translateX(3px); }
.citypage .breadcrumb { display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--citypage-text-muted) !important;font-weight:500;margin-bottom:22px; }
.citypage .breadcrumb .sep { color:#c9c9c9 !important; }
.citypage .breadcrumb .current { color:var(--citypage-red) !important;font-weight:600; }
.citypage .hero { position:relative;min-height:640px;display:flex;align-items:center;overflow:hidden;padding:70px 0; }
.citypage .hero-bg { position:absolute;inset:0;background-size:cover;background-position:center right; }
.citypage .hero-overlay { position:absolute;inset:0;background:linear-gradient(90deg,
      #ffffff 0%,
      #ffffff 38%,
      rgba(255,255,255,0.9) 50%,
      rgba(255,255,255,0.45) 66%,
      rgba(255,255,255,0.05) 82%) !important; }
.citypage .hero .container { position:relative;z-index:2; }
.citypage .hero-copy { max-width:600px; }
.citypage .hero-copy h1 { font-size:52px;text-transform:uppercase;margin-bottom:22px; }
.citypage .hero-copy h1 span { display:block; }
.citypage .hero-copy h1 .line-1 { color:var(--citypage-red) !important; }
.citypage .hero-copy h1 .line-2 { color:var(--citypage-black) !important; }
.citypage .hero-copy h1 .line-3 { color:var(--citypage-black) !important; }
.citypage .hero-copy h1 .line-3 em { font-style:normal;color:var(--citypage-red) !important; }
.citypage .hero-copy p { font-size:16.5px;line-height:1.75;color:var(--citypage-text-secondary) !important;max-width:480px;margin-bottom:34px; }
.citypage .hero-actions { display:flex;gap:16px;flex-wrap:wrap; }
.citypage .usp-strip { padding:44px 0;border-bottom:1px solid var(--citypage-border) !important; }
.citypage .usp-grid { display:grid;grid-template-columns:repeat(4,1fr);row-gap:36px; }
.citypage .usp-item { display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:0 14px;border-left:1px solid var(--citypage-border) !important; }
.citypage .usp-icon { width:42px;height:42px;color:var(--citypage-red) !important; }
.citypage .usp-icon svg { width:100%;height:100%; }
.citypage .usp-item h4 { font-size:14px;font-weight:600;line-height:1.3; }
.citypage .usp-item p { font-size:12px;color:var(--citypage-text-muted) !important;line-height:1.4;font-weight:400; }
.citypage .section-pad { padding:90px 0; }
.citypage .section-pad.tight { padding:64px 0; }
.citypage .bg-light { background:var(--citypage-bg-light) !important; }
.citypage .section-head h2 { font-size:34px;text-transform:uppercase;margin-bottom:20px; }
.citypage .trusted-grid { display:grid;grid-template-columns:0.85fr 1.15fr;gap:60px;align-items:center; }
.citypage .trusted-img { border-radius:var(--citypage-radius-lg);overflow:hidden;box-shadow:var(--citypage-shadow) !important;aspect-ratio:4/5; }
.citypage .trusted-img img { width:100%;height:100%;object-fit:cover;transition:transform .5s ease; }
.citypage .trusted-img:hover img { transform:scale(1.05); }
.citypage .trusted-copy h2 { font-size:32px;text-transform:uppercase;line-height:1.2; }
.citypage .trusted-copy h2 .line2 { display:block;color:var(--citypage-red) !important; }
.citypage .trusted-copy p { font-size:16px;line-height:1.85;color:var(--citypage-text-secondary) !important;margin-top:20px; }
.citypage .triple-grid { display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px;align-items:stretch; }
.citypage .card { background:var(--citypage-white) !important;border:1px solid var(--citypage-border) !important;border-radius:var(--citypage-radius-md);padding:32px;box-shadow:var(--citypage-shadow-sm) !important;overflow:hidden;display:flex;flex-direction:column; }
.citypage .card h3 { font-size:19px;text-transform:uppercase;line-height:1.3;margin-bottom:18px; }
.citypage .card h3 span { color:var(--citypage-red) !important;display:block; }
.citypage .card .rule-sm { width:36px;height:3px;background:var(--citypage-red) !important;border-radius:3px;margin:-10px 0 18px; }
.citypage .app-list { display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;margin-bottom:24px; }
.citypage .app-list li { display:flex;align-items:flex-start;gap:8px;font-size:13.5px;color:var(--citypage-black) !important;padding:6px 0;line-height:1.3; }
.citypage .app-list li::before { content:'';width:6px;height:6px;border-radius:50%;background:var(--citypage-red) !important;margin-top:5px;flex-shrink:0; }
.citypage .app-photo { margin:22px -32px -32px -32px;position:relative;aspect-ratio:16/10;overflow:hidden;border-radius:0 0 var(--citypage-radius-md) var(--citypage-radius-md);margin-top:auto; }
.citypage .app-photo::before { content:'';position:absolute;top:0;left:0;right:0;height:56px;background:linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%) !important;z-index:2; }
.citypage .app-photo img { width:100%;height:100%;object-fit:cover; }
.citypage .product-list { margin-top:6px; }
.citypage .product-list li { display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px dashed var(--citypage-border) !important;font-size:14px;font-weight:600; }
.citypage .product-list li:last-child { border-bottom:none !important; }
.citypage .product-swatch { width:34px;height:14px;border-radius:8px;flex-shrink:0; }
.citypage .sw-green { background:linear-gradient(90deg,#3c9a45,#5cb862) !important; }
.citypage .sw-red { background:linear-gradient(90deg,var(--citypage-red),#f04b52) !important; }
.citypage .sw-blue { background:linear-gradient(90deg,#1a56b0,#2f78e0) !important; }
.citypage .sw-black { background:linear-gradient(90deg,#222,#444) !important; }
.citypage .industries-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:10px; }
.citypage .industry-item { border:1px solid var(--citypage-border) !important;border-radius:12px;padding:16px 10px;text-align:center;transition:all .2s ease;cursor:default; }
.citypage .industry-item:hover { border-color:var(--citypage-red) !important;background:#fff6f6 !important;transform:translateY(-3px); }
.citypage .industry-item svg { width:30px;height:30px;color:var(--citypage-red) !important;margin-bottom:8px; }
.citypage .industry-item span { display:block;font-size:12.5px;font-weight:600; }
.citypage .specs-grid { display:grid;grid-template-columns:0.62fr 1.38fr;gap:50px;align-items:start; }
.citypage .specs-copy p { font-size:15.5px;line-height:1.85;color:var(--citypage-text-secondary) !important;margin-bottom:26px; }
.citypage .specs-highlights { display:flex;flex-direction:column;gap:14px; }
.citypage .highlight-chip { border-left:3px solid var(--citypage-red) !important;background:var(--citypage-bg-light) !important;border-radius:0 10px 10px 0;padding:14px 18px; }
.citypage .highlight-chip strong { display:block;font-size:16px;font-weight:700; }
.citypage .highlight-chip span { font-size:12px;color:var(--citypage-text-muted) !important;font-weight:500;text-transform:uppercase;letter-spacing:0.02em; }
.citypage .specs-table-wrap { background:var(--citypage-white) !important;border-radius:var(--citypage-radius-md);overflow:hidden;border:1px solid var(--citypage-border) !important;box-shadow:var(--citypage-shadow-sm) !important; }
.citypage table.specs { width:100%;border-collapse:collapse; }
.citypage table.specs thead th { background:var(--citypage-red) !important;color:#fff !important;text-align:left;padding:16px 24px;font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:0.02em; }
.citypage table.specs tbody td { padding:16px 24px;font-size:14.5px;border-bottom:1px solid var(--citypage-border) !important;vertical-align:top; }
.citypage table.specs tbody tr:last-child td { border-bottom:none !important; }
.citypage table.specs td.spec-label { font-weight:600;color:var(--citypage-black) !important;width:42%; }
.citypage table.specs td.spec-value { color:var(--citypage-text-secondary) !important; }
.citypage .choose-box { background:var(--citypage-white) !important;border:1px solid var(--citypage-border) !important;border-radius:var(--citypage-radius-lg);overflow:hidden;display:grid;grid-template-columns:1.3fr 1fr;box-shadow:var(--citypage-shadow) !important; }
.citypage .choose-copy { padding:42px 46px; }
.citypage .choose-copy h2 { font-size:26px;text-transform:uppercase;margin-bottom:20px; }
.citypage .choose-list { display:grid;grid-template-columns:1fr 1fr;gap:16px 26px; }
.citypage .choose-list li { display:flex;gap:10px;align-items:flex-start; }
.citypage .choose-list .tick { width:19px;height:19px;flex-shrink:0;color:var(--citypage-red) !important;margin-top:2px; }
.citypage .choose-list b { font-size:14px; }
.citypage .choose-list p { font-size:12.5px;color:var(--citypage-text-secondary) !important;line-height:1.5;margin-top:2px; }
.citypage .choose-visual { position:relative;min-height:100%; }
.citypage .choose-visual img { width:100%;height:100%;object-fit:cover;object-position:75% 35%; }
.citypage .choose-visual::before { content:'';position:absolute;inset:0;background:linear-gradient(90deg, rgba(255,255,255,0.85), rgba(255,255,255,0) 40%) !important; }
.citypage .serving-line { display:flex;align-items:center;justify-content:center;gap:10px;margin-top:36px;font-size:16px;font-weight:600; }
.citypage .serving-line svg { width:20px;height:20px;color:var(--citypage-red) !important; }
.citypage .process-row { display:grid;grid-template-columns:repeat(5,1fr);gap:0;position:relative;margin-top:20px; }
.citypage .process-row::before { content:'';position:absolute;top:28px;left:10%;right:10%;height:2px;background:var(--citypage-border) !important;z-index:0; }
.citypage .process-step { text-align:center;position:relative;z-index:1;padding:0 12px; }
.citypage .process-num { width:56px;height:56px;border-radius:50%;background:var(--citypage-white) !important;border:2px solid var(--citypage-red) !important;color:var(--citypage-red) !important;font-weight:700;font-size:18px;display:flex;align-items:center;justify-content:center;margin:0 auto 16px; }
.citypage .process-step h4 { font-size:14.5px;font-weight:600;text-transform:uppercase; }
.citypage .fusion-methods { margin-top:60px;display:grid;grid-template-columns:repeat(3,1fr);gap:20px; }
.citypage .fusion-card { border:1px solid var(--citypage-border) !important;border-radius:var(--citypage-radius-sm);padding:26px;background:var(--citypage-white) !important; }
.citypage .fusion-card h4 { font-size:15px;margin-bottom:8px; }
.citypage .fusion-card p { font-size:13.5px;color:var(--citypage-text-muted) !important;line-height:1.6; }
.citypage .service-wrap { display:grid;grid-template-columns:0.85fr 1.15fr;gap:56px;align-items:center; }
.citypage .service-wrap .section-head p { font-size:15.5px;line-height:1.85;color:var(--citypage-text-secondary) !important;margin:18px 0 26px; }
.citypage .city-chip-grid { display:flex;flex-wrap:wrap;gap:12px; }
.citypage .city-chip { padding:10px 18px;border-radius:50px;border:1px solid var(--citypage-border) !important;font-size:13.5px;font-weight:600;background:var(--citypage-white) !important; }
.citypage .city-chip.active { background:var(--citypage-red) !important;color:#fff !important;border-color:var(--citypage-red) !important; }
.citypage .coverage-card { background:var(--citypage-white) !important;border:1px solid var(--citypage-border) !important;border-radius:var(--citypage-radius-lg);padding:34px 38px;box-shadow:var(--citypage-shadow) !important; }
.citypage .coverage-row { display:flex;flex-wrap:wrap;gap:10px;padding:14px 0;border-bottom:1px dashed var(--citypage-border) !important; }
.citypage .coverage-row:first-child { padding-top:0; }
.citypage .coverage-row:last-child { border-bottom:none !important;padding-bottom:0; }
.citypage .city-tag { font-size:13.5px;font-weight:600;padding:8px 16px;border-radius:50px;background:var(--citypage-bg-light) !important;color:var(--citypage-black) !important;transition:all .2s ease; }
.citypage .city-tag:hover { background:var(--citypage-red) !important;color:#fff !important; }


  
  @media (max-width:1080px){
.citypage .triple-grid { grid-template-columns:1fr; }
}


  @media (max-width:900px){
.citypage .container { padding:0 24px; }
.citypage .hero { min-height:auto;padding:56px 0 42px; }
.citypage .hero-overlay { background:linear-gradient(180deg, rgba(255,255,255,0.97) 0%, rgba(255,255,255,0.93) 55%, rgba(255,255,255,0.72) 100%) !important; }
.citypage .hero-copy { max-width:100%; }
.citypage .hero-copy h1 { font-size:38px; }
.citypage .trusted-grid { grid-template-columns:1fr; }
.citypage .trusted-img { aspect-ratio:16/10; }
.citypage .specs-grid { grid-template-columns:1fr; }
.citypage .specs-table-wrap { overflow-x:auto; }
.citypage table.specs thead { display:none; }
.citypage table.specs, .citypage table.specs tbody, .citypage table.specs tr, .citypage table.specs td { display:block;width:100%; }
.citypage table.specs tr { border-bottom:1px solid var(--citypage-border) !important;padding:14px 20px; }
.citypage table.specs td { border:none !important;padding:6px 0;word-break:break-word; }
.citypage table.specs td.spec-label { color:var(--citypage-red) !important;font-size:12px;text-transform:uppercase;width:auto;margin-top:8px; }
.citypage table.specs td.spec-label:first-child { margin-top:0; }
.citypage table.specs td.spec-value { font-weight:600;font-size:15px; }
.citypage .choose-box { grid-template-columns:1fr; }
.citypage .choose-visual { min-height:260px; }
.citypage .choose-copy { padding:34px 26px; }
.citypage .service-wrap { grid-template-columns:1fr; }
}


  @media (max-width:640px){
.citypage .section-pad { padding:56px 0; }
.citypage .section-pad.tight { padding:44px 0; }
.citypage .section-head h2 { font-size:26px; }
.citypage .hero-copy h1 { font-size:30px; }
.citypage .usp-grid { grid-template-columns:repeat(2,1fr);row-gap:24px; }
.citypage .usp-item { border-left:none !important;padding:14px 8px; }
.citypage .usp-item:nth-child(odd) { border-right:1px solid var(--citypage-border) !important; }
.citypage .triple-grid { grid-template-columns:1fr; }
.citypage .choose-list { grid-template-columns:1fr; }
.citypage .process-row { grid-template-columns:1fr;gap:28px; }
.citypage .process-row::before { display:none; }
.citypage .fusion-methods { grid-template-columns:1fr; }
.citypage .coverage-card { padding:24px 22px; }
}

/* ---- Elementor icon-control colour + sizing ----
   Icons_Manager can render an icon two different ways depending on the
   library picked in the editor: a font icon <i class="fas fa-xxx">
   (colour comes from the CSS `color` property, inherited/painted by the
   font) OR an inline <svg><path fill="currentColor">...</path></svg>
   (colour comes from `color` too, via currentColor - but only if nothing
   else sets `fill` directly on the path). We force BOTH `color` and
   `fill`, on the element AND on every child, with a hard-coded hex
   fallback baked into var() itself (var(--x, #hex)), so the brand red
   always wins no matter which rendering path Elementor takes and even if
   the --citypage-* custom property fails to resolve for any reason. */
.citypage .usp-icon,
.citypage .usp-icon i,
.citypage .usp-icon svg,
.citypage .usp-icon svg *,
.citypage .industry-item i,
.citypage .industry-item svg,
.citypage .industry-item svg *,
.citypage .choose-list .tick,
.citypage .choose-list .tick i,
.citypage .choose-list .tick svg,
.citypage .choose-list .tick svg * {
	color: var(--citypage-red, #E31C24) !important;
	fill: var(--citypage-red, #E31C24) !important;
	-webkit-text-fill-color: var(--citypage-red, #E31C24) !important;
	stroke: none !important;
}
.citypage .usp-icon i,
.citypage .usp-icon svg { font-size: 42px; width: 42px; height: 42px; }
.citypage .industry-item i,
.citypage .industry-item svg { font-size: 30px; width: 30px; height: 30px; margin-bottom: 8px; display: inline-block; }
.citypage .choose-list .tick i,
.citypage .choose-list .tick svg { font-size: 19px; width: 19px; height: 19px; }

/* Elementor sometimes loads editor reset styles after ours in the *editor* only;
   these belt-and-braces rules keep our brand colours pinned everywhere our markup appears. */
.citypage,
.citypage * { box-sizing: border-box; }
.citypage a:hover,
.citypage a:focus,
.citypage a:visited { color: inherit !important; }
