.pf .pf-btn{display:inline-flex;align-items:center;gap:8px;padding:14px 32px;border-radius:6px;font-weight:700;font-size:16.8px;text-decoration:none;text-align:center;cursor:pointer;transition:transform .2s,box-shadow .2s;border:none;letter-spacing:0.03em}
.pf .pf-btn:hover{transform:translateY(-2px);box-shadow:0 4px 15px rgba(0,0,0,.2)}
.pf .pf-btn-outline{display:inline-flex;align-items:center;gap:8px;padding:12px 28px;border-radius:6px;font-weight:600;font-size:16px;text-decoration:none;text-align:center;cursor:pointer;border:2px solid;background:transparent;transition:transform .2s}
.pf .pf-pill{display:inline-block;padding:5px 16px;border-radius:999px;font-size:13.6px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.pf .pf-section{padding:clamp(48px,8vw,96px) clamp(16px,5vw,80px)}
.pf .pf-sp-lg{padding:clamp(48px,8vw,96px) clamp(16px,5vw,80px)}
.pf .pf-sp-md{padding:clamp(32px,5vw,56px) clamp(16px,5vw,80px)}
.pf .pf-sp-sm{padding:clamp(16px,3vw,28px) clamp(16px,5vw,80px)}
.pf .pf-sp-none{padding:0}
.pf .pf-row{display:flex;flex-wrap:wrap;align-items:stretch;--pf-gap:0px}
.pf .pf-row.pf-align-start{align-items:flex-start}
.pf .pf-row.pf-align-center{align-items:center}
.pf .pf-gap-sm{gap:12px;--pf-gap:12px}
.pf .pf-gap-md{gap:24px;--pf-gap:24px}
.pf .pf-gap-lg{gap:40px;--pf-gap:40px}
.pf .pf-col{min-width:0;flex:1 1 0;box-sizing:border-box}
.pf .pf-col-1{flex:0 1 calc(8.333% - var(--pf-gap,0px)*0.9167)}.pf .pf-col-2{flex:0 1 calc(16.666% - var(--pf-gap,0px)*0.8334)}.pf .pf-col-3{flex:0 1 calc(25% - var(--pf-gap,0px)*0.75)}
.pf .pf-col-4{flex:0 1 calc(33.333% - var(--pf-gap,0px)*0.6667)}.pf .pf-col-5{flex:0 1 calc(41.666% - var(--pf-gap,0px)*0.5834)}.pf .pf-col-6{flex:0 1 calc(50% - var(--pf-gap,0px)*0.5)}
.pf .pf-col-7{flex:0 1 calc(58.333% - var(--pf-gap,0px)*0.4167)}.pf .pf-col-8{flex:0 1 calc(66.666% - var(--pf-gap,0px)*0.3334)}.pf .pf-col-9{flex:0 1 calc(75% - var(--pf-gap,0px)*0.25)}
.pf .pf-col-10{flex:0 1 calc(83.333% - var(--pf-gap,0px)*0.1667)}.pf .pf-col-11{flex:0 1 calc(91.666% - var(--pf-gap,0px)*0.0834)}.pf .pf-col-12{flex:0 1 100%}
.pf .pf-form-slot{width:100%}
.pf .pf-container{max-width:1200px;margin:0 auto;width:100%}
.pf .pf-grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:clamp(16px,3vw,32px)}
.pf .pf-grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:clamp(16px,3vw,32px)}
.pf .pf-card{border-radius:16px;padding:clamp(24px,3vw,40px);transition:transform .3s,box-shadow .3s}
.pf .pf-card:hover{transform:translateY(-4px);box-shadow:0 12px 40px rgba(0,0,0,.1)}
.pf .pf-icon-circle{width:56px;height:56px;min-width:56px;aspect-ratio:1;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pf .pf-heading-xl{font-size:clamp(28px,5vw,56px);font-weight:800;line-height:1.15;margin-bottom:16px}
.pf .pf-heading-lg{font-size:clamp(25.6px,4vw,40px);font-weight:700;line-height:1.2;margin-bottom:12px}
.pf .pf-body{font-size:clamp(16px,1.8vw,18px);line-height:1.7}
.pf .pf-stat{font-size:clamp(24px,4vw,48px);font-weight:800;line-height:1.1}
.pf .pf-logo-row{display:flex;flex-wrap:wrap;justify-content:center;gap:32px;align-items:center}
.pf .pf-logo-row img{max-height:56px;width:auto;object-fit:contain}
.pf [data-pf-gallery]{position:relative;overflow:hidden}
.pf .pf-gallery-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.pf .pf-gallery-track::-webkit-scrollbar{display:none}
.pf .pf-gallery-track>*{flex:0 0 33.333%;scroll-snap-align:start;box-sizing:border-box;padding:0 8px}
.pf [data-pf-scroll-track]>*{box-sizing:border-box}
@media (max-width:767px){.pf [data-pf-widget="comparison-table"] th,.pf [data-pf-widget="comparison-table"] td{padding:12px 8px !important}}
.pf .pf-gallery-prev,.pf .pf-gallery-next{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.95);color:#222;border:none;width:40px;height:40px;border-radius:50%;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 12px rgba(0,0,0,.3);z-index:10;transition:all .2s}
.pf .pf-gallery-prev{left:8px}
.pf .pf-gallery-next{right:8px}
.pf .pf-faq details{border-bottom:1px solid rgba(128,128,128,.2)}
.pf .pf-faq summary{padding:16px 0;font-weight:600;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}
.pf .pf-faq summary::-webkit-details-marker{display:none}
.pf .pf-faq summary::after{content:"+";font-size:20px;transition:transform .2s}
.pf .pf-faq details[open]>summary::after{content:"\2212"}
.pf .pf-faq-body{padding:0 0 16px}
.pf-lightbox{position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.92);display:flex;align-items:center;justify-content:center}
.pf-lightbox[hidden]{display:none}
.pf-lightbox img{max-width:90vw;max-height:85vh;object-fit:contain;border-radius:8px}
.pf-lb-close{position:absolute;top:16px;right:24px;background:none;border:none;color:#fff;font-size:40px;cursor:pointer;line-height:1}
@media (max-width:767px){.pf .pf-grid-2,.pf .pf-grid-3{grid-template-columns:1fr}.pf .pf-section{padding:48px 16px}.pf .pf-gallery-track>*{flex:0 0 100%}.pf .pf-col{flex-basis:100%}.pf .pf-row.pf-nostack>.pf-col-1{flex-basis:calc(8.333% - var(--pf-gap,0px)*0.9167)}.pf .pf-row.pf-nostack>.pf-col-2{flex-basis:calc(16.666% - var(--pf-gap,0px)*0.8334)}.pf .pf-row.pf-nostack>.pf-col-3{flex-basis:calc(25% - var(--pf-gap,0px)*0.75)}.pf .pf-row.pf-nostack>.pf-col-4{flex-basis:calc(33.333% - var(--pf-gap,0px)*0.6667)}.pf .pf-row.pf-nostack>.pf-col-5{flex-basis:calc(41.666% - var(--pf-gap,0px)*0.5834)}.pf .pf-row.pf-nostack>.pf-col-6{flex-basis:calc(50% - var(--pf-gap,0px)*0.5)}.pf .pf-row.pf-nostack>.pf-col-7{flex-basis:calc(58.333% - var(--pf-gap,0px)*0.4167)}.pf .pf-row.pf-nostack>.pf-col-8{flex-basis:calc(66.666% - var(--pf-gap,0px)*0.3334)}.pf .pf-row.pf-nostack>.pf-col-9{flex-basis:calc(75% - var(--pf-gap,0px)*0.25)}.pf .pf-row.pf-nostack>.pf-col-10{flex-basis:calc(83.333% - var(--pf-gap,0px)*0.1667)}.pf .pf-row.pf-nostack>.pf-col-11{flex-basis:calc(91.666% - var(--pf-gap,0px)*0.0834)}.pf .pf-sp-lg{padding:48px 16px}.pf .pf-sp-md{padding:32px 16px}.pf .pf-sp-sm{padding:16px}}
@media (min-width:768px) and (max-width:1023px){.pf .pf-gallery-track>*{flex:0 0 50%}}
@media (max-width:600px){.pf [style*="flex:0 0 auto"][style*="flex-wrap:wrap"]{flex-shrink:1!important;min-width:0!important}}
.pf .pf-overlay-dark{position:absolute;inset:0;background:rgba(0,0,0,0.5);z-index:1}
.pf .pf-overlay-gradient{position:absolute;inset:0;background:linear-gradient(135deg,rgba(0,0,0,0.85) 0%,rgba(0,0,0,0.4) 100%);z-index:1}
.pf .pf-texture-dots{position:absolute;inset:0;background-image:radial-gradient(circle,rgba(255,255,255,0.06) 1px,transparent 1px);background-size:22px 22px;z-index:0;pointer-events:none}
.pf .pf-texture-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,0.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,0.04) 1px,transparent 1px);background-size:40px 40px;z-index:0;pointer-events:none}
.pf .pf-texture-diagonal{position:absolute;inset:0;background-image:repeating-linear-gradient(45deg,transparent,transparent 10px,rgba(255,255,255,0.03) 10px,rgba(255,255,255,0.03) 20px);z-index:0;pointer-events:none}
.pf .pf-deco-circle{position:absolute;border-radius:50%;pointer-events:none;z-index:0}
.pf .pf-icon-check::before{content:"✓"}
.pf .pf-icon-phone::before{content:"☎"}
.pf .pf-icon-star::before{content:"★"}
.pf .pf-accent-line{width:56px;height:3px;background:var(--pf-accent,#F1C100);border-radius:2px}
.pf .pf-z-content{position:relative;z-index:2}
.pf [data-pf-slideshow] [data-pf-slide]{position:absolute!important;top:0!important;left:0!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:cover!important}
.pf [data-pf-embed-target]>div:has(>iframe){align-self:stretch}
.pf [data-pf-widget="blog-posts"] article a{display:inline-flex;align-items:center;min-height:44px}
.pf .pf-global-popup-overlay{position:fixed;inset:0;z-index:99998;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.pf .pf-global-popup-overlay[hidden]{display:none}
.pf .pf-global-popup-modal{background:#fff;border-radius:16px;padding:clamp(24px,4vw,40px);max-width:520px;width:90vw;position:relative;box-shadow:0 20px 60px rgba(0,0,0,.3);animation:pfGlobalPopIn .25s ease-out}
@keyframes pfGlobalPopIn{from{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:none}}
.pf .pf-global-popup-close{position:absolute;top:12px;right:16px;background:none;border:none;font-size:28.8px;cursor:pointer;color:#666;line-height:1}
.pf .pf-global-popup-body{font-size:16px;line-height:1.6}
@media (max-width:600px){.pf .pf-global-popup-modal{max-width:100vw!important;width:100vw!important;border-radius:0!important;min-height:100vh;max-height:100vh;overflow-y:auto;padding:24px 16px;padding-top:max(24px,env(safe-area-inset-top,24px));box-sizing:border-box}.pf .pf-global-popup-close{top:8px!important;right:12px!important;font-size:35.2px;z-index:1;color:#666!important}}
/* A ROW TOLD NEVER TO SHRINK STILL MUST NOT PUSH THE PAGE SIDEWAYS ON A PHONE.
   Measured on a real client page (Window Replacement Largo): 437px of content in a 390px
   window, and the whole 47px comes from one rule - .pfi-cf, the row holding the visit and phone
   buttons, set to flex:0 0 auto. A flex item with shrink 0 takes its max-content width and
   refuses to give any of it back, so the row stays 421px wide however narrow the screen is.
   With this rule the same page measures exactly 390px.
   Deliberately narrow: only the pfi- classes PageForge generates, only at phone width, and only
   the two properties that decide whether a flex item may shrink. It does not touch width, so an
   intentional full-bleed section is unaffected (Craft Law 19).
   It also corrects what the mobile count in this repo has been measuring: that count looks for a
   flex BASIS over 300px, finds fourteen on this page that can all shrink and are all harmless,
   and misses the one declaration that actually breaks the page, because it has no pixel basis. */
@media (max-width:600px){.pf [class*="pfi-"]{flex-shrink:1!important;min-width:0!important}}
.pf{--accent:var(--pf-accent,#0e7490);--accent-hover:var(--pf-cta,#b45309)}
.pf input[type="radio"][name^="pf-tab-"]{display:inline-block!important;position:absolute!important;opacity:0!important;width:1px!important;height:1px!important;overflow:hidden!important}
/* Keyboard focus on the Tabs widget. The real radios are visually hidden (so a keyboard visitor can still arrive on them), which also hid the focus ring: Tab into the tabs showed nothing. The ring is drawn round the tab row instead, and old saved pages get it too because this stylesheet is not saved with them. */
.pf input[type="radio"][name^="pf-tab-"]:focus-visible~[role="tablist"]{outline:2px solid var(--accent,#0e7490);outline-offset:2px}
/* A carousel whose cards all fit has nothing to scroll: the runtime puts pf-noscroll on it and the two arrows go away instead of sitting on the first and last card. */
.pf [data-pf-scroller].pf-noscroll [data-pf-scroll]{display:none!important}
/* Reduced motion: no gliding between carousel positions, no popup pop-in. */
@media (prefers-reduced-motion:reduce){.pf .pf-gallery-track,.pf [data-pf-scroll-track]{scroll-behavior:auto!important}.pf .pf-global-popup-modal{animation:none}}
/* MD-4 (F218): "Turn off on phones" for a video background. CSS-only, no runtime JS — below
   768px the video is hidden and the section's own poster image (carried in the --pf-video-poster
   custom property the editor sets inline) is shown as a plain background-image instead, so a
   phone visitor never downloads the video at all. */
@media (max-width:768px){.pf [data-pf-video-mobile="hide"]>[data-pf-video]{display:none}.pf [data-pf-video-mobile="hide"]{background-image:var(--pf-video-poster,none);background-size:cover;background-position:center}}
.pf .pf-on-hidden{display:none}@media (max-width: 768px) {.pf [data-pf-slideshow] > div:nth-of-type(2){
    background: linear-gradient(180deg, rgba(16,42,58,0.78) 0%, rgba(16,42,58,0.55) 100%);
  }
}.pf [data-pf-slideshow] [data-pf-slide]{
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: cover !important;
}