/* Moir Electric — shell rules the static port needs that the DC runtime handled itself.
 * Loaded after site.css + hover.css, before page CSS. */

/* Component display values are inline, so they outrank the UA [hidden] rule. */
[hidden]{display:none !important}

/* Phones: stop iOS Safari / Android Chrome from enlarging text on their own (it inflated the Home project-card
   text to ~20px on iPhone). Desktop browsers ignore this. Fix 2026-09-29. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}

/* Header: desktop nav <-> hamburger at 1080px (was a JS matchMedia in SiteHeader; approved exception — keep at 1080). */
.mr-mob{display:none !important}
@media (max-width:1080px){
  .mr-desk{display:none !important}
  .mr-mob{display:grid !important}
}
@media (min-width:1081px){#mr-mobile-nav{display:none !important}}
#mr-burger .mr-burger-x{display:none}
#mr-burger.is-open .mr-burger-x{display:block}
#mr-burger.is-open .mr-burger-bars{display:none}

/* WP admin bar is fixed; keep the sticky header below it for logged-in editors. */
.admin-bar #mr-header{top:32px !important}
@media (max-width:782px){.admin-bar #mr-header{top:46px !important}}
@media (max-width:600px){.admin-bar #mr-header{top:0 !important}}

/* Quote form card: Gravity Forms #2 styled to the design's QuoteForm fields (labels, inputs, submit, states).
 * Selectors carry .mr-formcard .gform_wrapper.gravity-theme so they outrank GF's theme CSS. */
.mr-formcard .gform_wrapper.gravity-theme{margin:0}
.mr-formcard .gform_wrapper.gravity-theme .gform_fields{grid-column-gap:16px;grid-row-gap:16px}
.mr-formcard .gform_wrapper.gravity-theme .gfield_label,
.mr-formcard .gform_wrapper.gravity-theme legend.gfield_label{font:600 12px/1 'Montserrat',sans-serif !important;letter-spacing:.06em;text-transform:uppercase;color:#262626;margin:0 0 7px;padding:0}
.mr-formcard .gform_wrapper.gravity-theme .gfield_required{color:#C54342}
.mr-formcard .gform_wrapper.gravity-theme .gform-field-label--type-sub{font:400 12px/1.4 'Open Sans',sans-serif !important;color:#7A7A7A;padding-top:6px}
.mr-formcard .gform_wrapper.gravity-theme .ginput_complex{row-gap:16px}
.mr-formcard .gform_wrapper.gravity-theme input[type=text],
.mr-formcard .gform_wrapper.gravity-theme input[type=email],
.mr-formcard .gform_wrapper.gravity-theme input[type=tel],
.mr-formcard .gform_wrapper.gravity-theme textarea{border:1px solid #D1D1D1;border-radius:4px;padding:12px 14px;font:400 15px/1.4 'Open Sans',system-ui,sans-serif;color:#262626;background:#fff;width:100%;margin:0}
.mr-formcard .gform_wrapper.gravity-theme textarea{resize:vertical;height:auto;min-height:0}
.mr-formcard .gform_wrapper.gravity-theme textarea.large{height:auto}
.mr-formcard .gform_wrapper.gravity-theme .gform_footer{margin:0;padding:0}
.mr-formcard .gform_wrapper.gravity-theme .gform_footer .gform_button{margin:22px 0 0 !important;width:100%;background:#C54342;color:#fff;border:none;cursor:pointer;font:700 14px/1 'Montserrat',sans-serif;letter-spacing:.04em;text-transform:uppercase;padding:16px 28px;border-radius:4px;transition:none}
.mr-formcard .gform_wrapper.gravity-theme .gform_footer .gform_button:hover{background:#A93635}
.mr-formcard .gform_wrapper.gravity-theme .gform_footer .gform_button:active{background:#8C2B2A;transform:translateY(1px)}
.mr-formcard .gform_wrapper.gravity-theme .gfield_validation_message,
.mr-formcard .gform_wrapper.gravity-theme .validation_message{font:400 13px/1.4 'Open Sans',sans-serif;color:#A93635;background:none;border:0;padding:6px 0 0;margin:0}
.mr-formcard .gform_wrapper.gravity-theme .gfield_error input,
.mr-formcard .gform_wrapper.gravity-theme .gfield_error textarea{border-color:#A93635}
.mr-formcard .gform_wrapper.gravity-theme .gform_validation_errors{border-radius:4px;box-shadow:none;margin:0 0 16px}
.mr-formcard .gform_confirmation_message{font:400 15px/1.6 'Open Sans',sans-serif;color:#262626}
/* The design's quote-form fields sat in a .mr-2 grid that stacks at <=768; GF's theme only stacks at <=640.
   Re-express the 768 stack for GF's structure (applies to every quote form: Home + Contact). */
@media (max-width:768px){
  .mr-formcard .gform_wrapper.gravity-theme .gfield--width-half{grid-column:span 12 !important}
  .mr-formcard .gform_wrapper.gravity-theme .ginput_complex:not(.ginput_container_address)>span{flex:0 0 100% !important;padding-left:0 !important;padding-right:0 !important}
}

/* WYSIWYG page-header subtitle (Contact, News) — reproduces the design's inline <p> exactly. */
.mr-rich--pagehdr p{font:400 17px/1.65 'Open Sans',sans-serif;color:rgba(255,255,255,.78);margin:14px 0 0;max-width:640px;text-wrap:pretty}
.mr-rich--pagehdr p+p{margin-top:10px}
.mr-rich--pagehdr a{color:#fff;font-weight:600;text-decoration:underline;text-underline-offset:3px}
.mr-rich--pagehdr a:hover{color:#E59392}
.mr-rich--pagehdr strong{font-weight:700;color:#fff}
/* WYSIWYG CTA-band body (Privacy Policy) — reproduces the design's inline <p> exactly. */
.mr-rich--cta p{font:400 16px/1.62 'Open Sans',sans-serif;color:rgba(255,255,255,.78);margin:0 0 24px;text-wrap:pretty}
.mr-rich--cta p+p{margin-top:-14px}
.mr-rich--cta a{color:#fff;font-weight:600;text-decoration:underline;text-underline-offset:3px}
.mr-rich--cta a:hover{color:#E59392}
.mr-rich--cta strong{font-weight:700;color:#fff}

/* WST company links line (footer, under the copyright/license row). Approved desktop addition 2026-09-28. */
.mr-wst-links{max-width:1240px;margin:14px auto 0;font:400 12px/1.5 'Open Sans',sans-serif;color:rgba(255,255,255,.66)}
.mr-wst-links:empty{display:none}
.mr-wst-links p{margin:0}
.mr-wst-links a{color:rgba(255,255,255,.66);text-decoration:underline;text-underline-offset:3px}
.mr-wst-links a:hover{color:#fff}

/* Mobile menu (<=1080): links turn Moir red on hover, tap and for the current page/section (Jesica 2026-09-28;
   not in the design). The red CTA button is excluded (it has no .mr-mnav). !important beats the inline colours. */
#mr-mobile-nav a.mr-mnav{transition:color 180ms cubic-bezier(.2,.6,.2,1)}
#mr-mobile-nav a.mr-mnav:hover,#mr-mobile-nav a.mr-mnav:active,#mr-mobile-nav a.mr-mnav:focus-visible,#mr-mobile-nav a.mr-mnav[aria-current="page"]{color:#C54342 !important}

/* Header row stays on one line at every width (fix 2026-09-28). site.css's <=480 rule *:has(>.mr-btnm){flex-wrap:wrap}
   matched the header row because the desktop CTA (.mr-btnm) is still in the markup, only hidden — in the design it is
   not rendered on mobile, so the row never wrapped and the hamburger stayed beside the logo down to 320px. */
.mr-hdr-row{flex-wrap:nowrap !important}

/* Mobile menu (fix 2026-09-29): site.css's <=480 rule *:has(>.mr-btnm){flex-wrap:wrap} made the height-capped menu
   column wrap, pushing the "Get a Free Estimate" button into a second column. Keep one column: button last. */
#mr-mobile-nav{flex-wrap:nowrap !important;overscroll-behavior:contain}
#mr-mobile-nav>*{flex-shrink:0}
/* Page behind the open mobile menu does not scroll. */
/* Lock the page root only: locking body too makes body a scroll container and breaks the sticky header. */
html.mr-menu-open,html.mr-modal-open{overflow:hidden !important;overscroll-behavior:none}
/* About bio pop-up scrolls inside itself without dragging the page. */
#mr-team-modal,#mr-team-modal>div{overscroll-behavior:contain}

/* Stacking under the sticky header (z-index 60), fix 2026-09-29: Leaflet's panes (400) and controls (1000) and the
   Home hero rolodex arrows (60) painted over the header while scrolling. Give each its own stacking context so its
   internal z-indexes stay inside it. No visual change otherwise. (About bio modal, 200, stays above the header.) */
service-area-map{position:relative;z-index:0;isolation:isolate}
#top{isolation:isolate}

/* Two-tone headings (black + red part): the design's forced line break applies above 768. At <=768 the red
   part flows on the same line and wraps naturally (Jesica 2026-09-29). The space after the <br> collapses at
   desktop, so desktop is unchanged. */
@media (max-width:768px){br.mr-brk{display:none}}

/* Carousels: sideways swipes go to the slider (swipe added 2026-09-29), vertical swipes still scroll the page. */
#mr-proj-view{touch-action:pan-y}

/* Quote form address field (GF complex Address, added by Jesica 2026-09-29): tighter layout so the form isn't so
   long — Street and Line 2 full width, City | State | ZIP on one row (<=640: City, then State | ZIP), 10px between
   parts, State select styled like the other inputs. Applies to every quote form (Contact + Home). */
.mr-formcard .gform_wrapper.gravity-theme .ginput_container_address{display:flex !important;flex-wrap:wrap;column-gap:12px;row-gap:10px;margin:0 !important}
.mr-formcard .gform_wrapper.gravity-theme .ginput_container_address>span{padding:0 !important;margin:0 !important;flex:0 0 100% !important;max-width:100% !important}
.mr-formcard .gform_wrapper.gravity-theme .ginput_container_address>.ginput_address_city{flex:1 1 42% !important;max-width:none !important}
.mr-formcard .gform_wrapper.gravity-theme .ginput_container_address>.ginput_address_state{flex:1 1 30% !important;max-width:none !important}
.mr-formcard .gform_wrapper.gravity-theme .ginput_container_address>.ginput_address_zip{flex:1 1 20% !important;max-width:none !important}
.mr-formcard .gform_wrapper.gravity-theme .ginput_container_address .gform-field-label--type-sub{padding-top:4px !important;margin:0 !important}
.mr-formcard .gform_wrapper.gravity-theme .ginput_container_address .gf_clear{display:none}
.mr-formcard .gform_wrapper.gravity-theme select{border:1px solid #D1D1D1;border-radius:4px;padding:12px 38px 12px 14px;font:400 15px/1.4 'Open Sans',system-ui,sans-serif;color:#262626;width:100%;margin:0;height:auto;min-height:0;
  -webkit-appearance:none;appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23262626' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center}
.mr-formcard .gform_wrapper.gravity-theme select:focus{outline:none;border-color:#C54342;box-shadow:0 0 0 3px rgba(212,99,98,.45)}
@media (max-width:640px){
  .mr-formcard .gform_wrapper.gravity-theme .ginput_container_address>.ginput_address_city{flex:0 0 100% !important}
  .mr-formcard .gform_wrapper.gravity-theme .ginput_container_address>.ginput_address_state,
  .mr-formcard .gform_wrapper.gravity-theme .ginput_container_address>.ginput_address_zip{flex:1 1 40% !important}
}
/* GF enlarges inputs to ~56px at <=640 (line-height 30px); the design's fields are 47px at every width and the
   State select already is — keep text inputs at the design size too. */
.mr-formcard .gform_wrapper.gravity-theme input[type=text],
.mr-formcard .gform_wrapper.gravity-theme input[type=email],
.mr-formcard .gform_wrapper.gravity-theme input[type=tel]{line-height:1.4 !important;min-height:0 !important}
/* Address line 1 + 2 on one row above 640 (Jesica 2026-09-29); stacked on phones. */
@media (min-width:641px){
  .mr-formcard .gform_wrapper.gravity-theme .ginput_container_address>.ginput_address_line_1{flex:1 1 55% !important;max-width:none !important}
  .mr-formcard .gform_wrapper.gravity-theme .ginput_container_address>.ginput_address_line_2{flex:1 1 35% !important;max-width:none !important}
}

/* Header top bar (reworked 2026-09-29): Fort Wayne left, Indianapolis right, each address + phone.
   <=1024 street drops (city + phone), <=640 phone drops (city/state link only, down to 320px). */
@media (max-width:1024px){.mr-tb-street{display:none}}
@media (max-width:640px){.mr-tb-phone{display:none !important}} /* <=640: city/state (Maps link) only; phones are in the mobile menu */
@media (max-width:480px){.mr-tb{padding:9px 20px !important}}
@media (max-width:360px){.mr-tb .mr-tb-phone{font-size:12px !important;gap:6px !important}}
/* Top-bar phones on touch widths: 32px tap height (same as the footer links) absorbed into the bar padding, so the bar
   stays ~38px instead of growing to 62px from the global 44px .mr-tap rule. */
@media (max-width:768px){.mr-tb .mr-tap{min-height:32px !important;margin:-6px 0}}

/* Mobile menu locations: 2 columns, 1 column at the standard 640 breakpoint (2026-09-29). */
@media (max-width:640px){.mr-mnav-locs{grid-template-columns:1fr !important}}

/* Projects + Team sliders: no text selection while mouse-dragging (drag handlers in home.js / about.js). */
#mr-proj-view{-webkit-user-select:none;user-select:none}

/* ---- BugHerd round 1 (2026-09-30) ---- */
/* #1 Home hero <=768: slider directly under the H1, then intro, checks, buttons. */
@media (max-width:768px){.mr-hero-grid{display:flex !important;flex-direction:column;gap:0 !important}.mr-hero-copy{display:contents}.mr-hero-copy>*,.mr-hero-copy>.mr-rich>*{order:2}.mr-hero-copy>h1{order:0}.mr-hero-grid>.mr-rolo-stage{order:1;margin:28px 0 4px !important}}
/* #4 Services hero chips <=768: one per row. */
@media (max-width:768px){.mr-chips{flex-direction:column;align-items:flex-start !important;gap:14px !important}}
/* #5 Location pages intro (hub, city, service): centred at every width (desktop change requested by design). */
.mr-intro-c{margin-left:auto;margin-right:auto;text-align:center;align-items:center;max-width:1040px !important}
.mr-intro-c.mr-intro-c :is(p,ul,ol){margin-left:auto;margin-right:auto;max-width:none}  /* 2026-09-30 Jesica: wider column (was 820px box, 68ch text) */
/* #6 Footer <=768: one centred column (logo, contact, Site, More, Social), bottom rows centred. */
@media (max-width:768px){
footer .mr-ftgrid{grid-template-columns:1fr !important;text-align:center;row-gap:40px !important}
footer .mr-ftgrid>:first-child{padding-right:0 !important}
footer .mr-ftgrid>*,footer .mr-ftgrid>:first-child>div{align-items:center}
footer .mr-ftgrid a,footer .mr-ftgrid>:first-child span{justify-content:center;text-align:center}
footer .mr-ftbot{flex-direction:column;align-items:center;text-align:center;gap:8px !important}
footer .mr-wst-links{text-align:center}
}
/* #7 Form fields 16px <=1024 so iOS Safari does not zoom on focus (all inputs sitewide: contact form, News filters). */
@media (max-width:1024px){input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]):not([type=hidden]),select,textarea{font-size:16px !important}}
/* Breadcrumbs <=768 (location pages): compact wrapped rows. Links keep a 28px tap height (WCAG 2.2 AA min is 24px). Jesica 2026-09-30. */
@media (max-width:768px){nav[aria-label="Breadcrumb"]{row-gap:2px !important}nav[aria-label="Breadcrumb"] .mr-tap{min-height:28px !important}nav[aria-label="Breadcrumb"]>*{line-height:1.3 !important}}
/* Breadcrumbs: top pad 1px MORE than bottom (Jesica 2026-09-30: the dark hero above makes an even gap read tight on top).
   <=768 every item (incl. the current-page span) gets the 28px row height, pads trimmed to match desktop (~18px). */
[data-screen-label="Breadcrumbs"]{padding-top:17px !important}
@media (max-width:768px){[data-screen-label="Breadcrumbs"]{padding-top:11px !important;padding-bottom:10px !important}nav[aria-label="Breadcrumb"]>*{min-height:28px;display:inline-flex !important;align-items:center}}
/* Desktop Locations flyout: current page link red, matching the mobile menu (Jesica 2026-10-19). */
#mr-loc-menu a[aria-current="page"]{color:#C54342 !important}
