.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 .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 .pf-gap-md{gap:24px}
.pf .pf-gap-lg{gap:40px}
.pf .pf-col{min-width:0;flex:1 1 0}
.pf .pf-col-1{flex:0 1 8.333%}.pf .pf-col-2{flex:0 1 16.666%}.pf .pf-col-3{flex:0 1 25%}
.pf .pf-col-4{flex:0 1 33.333%}.pf .pf-col-5{flex:0 1 41.666%}.pf .pf-col-6{flex:0 1 50%}
.pf .pf-col-7{flex:0 1 58.333%}.pf .pf-col-8{flex:0 1 66.666%}.pf .pf-col-9{flex:0 1 75%}
.pf .pf-col-10{flex:0 1 83.333%}.pf .pf-col-11{flex:0 1 91.666%}.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 .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-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 .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}
/* 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;
}