/* RepairNowUSA V281 — VISIBLE ALIGNMENT RAIL CONTRACT
   The 1280px outer frame is retained. On desktop, visible header content sits 28px
   inside that frame, so interior page content and footer content use the same rail.
   At tablet/mobile widths the header removes that inset; body/footer follow it. */
:root{
  --rn-frame-max:1280px;
  --rn-frame-edge:32px;
  --rn-frame-gutters:64px;
  --rn-desktop-inner:28px;
  --rn-content-max:1224px; /* 1280 - (28 * 2) */
}
*,*::before,*::after{box-sizing:border-box}
html,body{max-width:100%;margin-left:0;margin-right:0;overflow-x:clip}
img,svg,video,canvas,iframe{max-width:100%}
img{height:auto}

/* Outer frame: header and footer frame stay on the approved 1280px geometry. */
.rn-v281-header-shell .wrap,
.rn-v103-footer-shell .wrap{
  width:min(var(--rn-frame-max),calc(100% - var(--rn-frame-gutters)))!important;
  max-width:var(--rn-frame-max)!important;
  margin-left:auto!important;
  margin-right:auto!important;
}

/* Desktop visible-content rail.
   Header .nav-row already has 28px left/right padding; these blocks therefore
   center to the exact same visible left/right edge instead of the outer frame edge. */
@media (min-width:981px){
  body.rn-interior-v280 main.service-page > :is(.service-hero,.service-section,.safety-band,.answer-strip,.rn-legal-grid),
  .rn-v103-footer-shell .bridge-inner{
    width:min(var(--rn-content-max),calc(100% - 120px))!important;
    max-width:var(--rn-content-max)!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }
  .rn-v103-footer-shell .footer-main{
    width:calc(100% - 56px)!important;
    max-width:var(--rn-content-max)!important;
    margin-left:auto!important;
    margin-right:auto!important;
    padding-left:0!important;
    padding-right:0!important;
  }
  .rn-v103-footer-shell .lower{
    width:min(var(--rn-content-max),calc(100% - 120px))!important;
    max-width:var(--rn-content-max)!important;
    margin-left:auto!important;
    margin-right:auto!important;
    padding-left:0!important;
    padding-right:0!important;
  }
}

/* Tablet: header padding is zero at this breakpoint, so body/footer return to the
   same 24px frame edge instead of retaining the desktop inset. */
@media (max-width:980px){
  :root{--rn-frame-edge:24px;--rn-frame-gutters:48px}
  body.rn-interior-v280 main.service-page > :is(.service-hero,.service-section,.safety-band,.answer-strip,.rn-legal-grid),
  .rn-v103-footer-shell .bridge-inner{
    width:min(var(--rn-frame-max),calc(100% - 48px))!important;
    max-width:var(--rn-frame-max)!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }
  .rn-v103-footer-shell .footer-main{
    width:100%!important;
    max-width:none!important;
    margin-left:auto!important;
    margin-right:auto!important;
    padding-left:0!important;
    padding-right:0!important;
  }
  .rn-v103-footer-shell .lower{
    width:min(var(--rn-frame-max),calc(100% - 48px))!important;
    max-width:var(--rn-frame-max)!important;
    margin-left:auto!important;
    margin-right:auto!important;
    padding-left:0!important;
    padding-right:0!important;
  }
}

/* Mobile: one 16px edge system everywhere. */
@media (max-width:620px){
  :root{--rn-frame-edge:16px;--rn-frame-gutters:32px}
  body.rn-interior-v280 main.service-page > :is(.service-hero,.service-section,.safety-band,.answer-strip,.rn-legal-grid),
  .rn-v103-footer-shell .bridge-inner,
  .rn-v103-footer-shell .lower{
    width:min(var(--rn-frame-max),calc(100% - 32px))!important;
  }
}

/* Main wrappers remain full-bleed; direct designed blocks own the alignment rail. */
main.service-page{width:100%!important;max-width:none!important;margin-left:0!important;margin-right:0!important;min-width:0}
body.rn-interior-v280 main.service-page>*{min-width:0}

/* Full-bleed support blocks must never introduce a competing horizontal system. */
body.rn-interior-v280 :is(.safety-band,.component-band,.closing-cta){
  max-width:var(--rn-content-max);
}

/* Allow grid/flex children to shrink instead of forcing horizontal overflow. */
main :where(.demand-grid,.service-route-grid,.commercial-photo-grid,.commercial-routes,.knowledge-card-grid,
.priority-guides,.signal-grid,.related-paths,.service-hero,.decision-grid,.problem-grid,.evidence-grid,.split-feature,
.expect-grid,.process-grid,.audience-grid,.operations-panel,.ops-grid,.two-column,.related-grid,.reference-list,
.request-ready-grid,.request-ready-list,.impact-grid,.topic-graph-grid,.qa-preview-inner,.property-grid,.scope-grid,
.request-list,.answer-strip,.faq-list,.rn-legal-grid,.rn-process-flow,.rn-publish-flow,.rn-role-matrix,.rn-visual-pair,
.rn-callout-grid,.rn-trust-strip)>*{min-width:0}

/* Desktop mega menus may never escape the viewport. */
@media (min-width:981px){
  .rn-v281-header-shell .site-header{position:relative}
  .rn-v281-header-shell .mega-item{position:static}
  .rn-v281-header-shell .mega-panel,
  .rn-v281-header-shell .mega-panel.two{
    left:50%!important;right:auto!important;transform:translateX(-50%)!important;
    max-width:calc(100vw - 32px)!important;
  }
  .rn-v281-header-shell .mega-panel{width:min(760px,calc(100vw - 32px))!important}
  .rn-v281-header-shell .mega-panel.two{width:min(560px,calc(100vw - 32px))!important}
}

/* V281 FINAL-CASCADE CROP CONTRACT
   This file loads after family styles, so no later knowledge/service rule may
   reintroduce cover-cropping or forced aspect ratios on interior photography. */
body.rn-interior-v280 .service-hero,
body.rn-interior-v280 .rn-hero-visual{align-items:start!important}
body.rn-interior-v280 .service-hero-media,
body.rn-interior-v280 .rn-hero-visual-media{
  min-height:0!important;
  height:auto!important;
  align-self:start!important;
}
body.rn-interior-v280 .service-hero-media img,
body.rn-interior-v280 .rn-hero-visual-media img,
body.rn-interior-v280 .rn-visual-pair img{
  width:100%!important;
  height:auto!important;
  max-height:none!important;
  aspect-ratio:auto!important;
  object-fit:contain!important;
  object-position:center center!important;
}

/* V281 STRUCTURAL REGRESSION REPAIR — one visible content rail for every interior page. */
body.rn-interior-v280 main.service-page > :where(section,nav,div,article,aside,header,figure){
  width:min(var(--rn-content-max),calc(100% - 120px))!important;
  max-width:var(--rn-content-max)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  min-width:0!important;
}
body.rn-interior-v280 main.service-page :where(section,nav,div,article,aside,header,figure,ul,ol,p,h1,h2,h3,h4,a,details,summary,img,svg){
  min-width:0;
  max-width:100%;
}
body.rn-interior-v280 main.service-page :where(p,h1,h2,h3,h4,a,summary,li){overflow-wrap:break-word;word-break:normal;hyphens:manual}
body.rn-interior-v280 main.service-page :where(.service-section,.rn-k-toc,.answer-strip,.rn-legal-grid,.service-hero,.safety-band){overflow-x:clip}
body.rn-interior-v280 .rn-process-card:not(:last-child)::after,
body.rn-interior-v280 .rn-publish-flow article:not(:last-child)::after{right:-7px!important;width:14px!important}
body.rn-interior-v280 .faq-list details,
body.rn-interior-v280 .faq-column details{overflow:hidden}
body.rn-interior-v280 .faq-list summary,
body.rn-interior-v280 .faq-column summary{touch-action:manipulation;user-select:none}
@media(max-width:980px){
  body.rn-interior-v280 main.service-page > :where(section,nav,div,article,aside,header,figure){
    width:min(var(--rn-frame-max),calc(100% - 48px))!important;
    max-width:var(--rn-frame-max)!important;
  }
}
@media(max-width:620px){
  body.rn-interior-v280 main.service-page > :where(section,nav,div,article,aside,header,figure){
    width:min(var(--rn-frame-max),calc(100% - 32px))!important;
  }
}
body.rn-interior-v280 .faq-list summary,
body.rn-interior-v280 .faq-column summary{position:relative!important;z-index:2!important;pointer-events:auto!important;cursor:pointer!important}
body.rn-interior-v280 .faq-list details[open] > :not(summary),
body.rn-interior-v280 .faq-column details[open] > :not(summary){display:block}

/* V281 container repair.
   interior-page and knowledge-guide pages were not on the service-page rail, so
   sections without an inner .wrap sat on the left edge. Once those mains carry
   service-page, an inner .wrap must not add a second gutter. */
body.rn-interior-v280 main.service-page .wrap,
body.rn-interior-v280 main.interior-page .wrap,
body.rn-interior-v280 main.knowledge-guide .wrap{
  width:auto!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
}

/* V281 launch-hardening: keyboard access and focus visibility */
.rn-skip-link{position:fixed;left:16px;top:8px;z-index:100000;transform:translateY(-180%);padding:10px 14px;background:#fff;color:#0B4F5C;border:2px solid #0B4F5C;border-radius:6px;font-weight:700;text-decoration:none;box-shadow:0 4px 16px rgba(0,0,0,.16)}
.rn-skip-link:focus{transform:translateY(0)}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #CC3F0A;outline-offset:3px}

/* V281 internal text links.
   Menu colors: link and visited #0B4F5C, active and hover #CC3F0A. Underline stays on. */
.rn-help-widget{display:none!important}
main :is(p,li,dd,dt,td,th,figcaption,blockquote,h2,h3,h4,.service-lead,.rn-form-help,.rn-faq-intro,.content-review-v280,.legal-content-v280,.source-notes,.hero-quiet,.hero-expanded-copy,.intent-copy) a[href]:is(:link,:visited):not([href^="tel:"]):not([href^="mailto:"]):not([href^="http://"]):not([href^="https://"]):not(.btn):not(.service-call):not(.decision-call):not(.white-call):not(.teal-call):not(.callbtn):not(.rn-contact-phone):not(.growth-action):not(.action){
  color:#0B4F5C!important;
  text-decoration:underline!important;
  text-underline-offset:2px;
  text-decoration-thickness:1px;
}
main :is(p,li,dd,dt,td,th,figcaption,blockquote,h2,h3,h4,.service-lead,.rn-form-help,.rn-faq-intro,.content-review-v280,.legal-content-v280,.source-notes,.hero-quiet,.hero-expanded-copy,.intent-copy) a[href]:is(:hover,:active):not([href^="tel:"]):not([href^="mailto:"]):not([href^="http://"]):not([href^="https://"]):not(.btn):not(.service-call):not(.decision-call):not(.white-call):not(.teal-call):not(.callbtn):not(.rn-contact-phone):not(.growth-action):not(.action),
main :is(.related-paths,.related-links,.request-list,.secondary-guides,.rn-start-path-grid) a[href]:is(:hover,:active),
main .demand-card-body>a[href]:is(:hover,:active){
  color:#CC3F0A!important;
  text-decoration:underline!important;
  text-underline-offset:2px;
}
main :is(.related-paths,.related-links,.request-list,.secondary-guides,.rn-start-path-grid) a[href]:is(:link,:visited),
main .demand-card-body>a[href]:is(:link,:visited){
  color:#0B4F5C!important;
  text-decoration:underline!important;
  text-underline-offset:2px;
  text-decoration-thickness:1px;
}

/* V281 phone-link hard gate: every visible canonical number is clickable and underlined. */
a.rn-inline-phone{color:inherit!important;text-decoration:underline!important;text-underline-offset:2px;text-decoration-thickness:1px}
