/* FactorPrint CMS 1.2.58 — gradient backgrounds/borders, shaped dividers, geometric decoration,
 * inner-card hover, staggered reveals, parallax backing and animated-counter cards. CSS Snapshot 2026.
 * Opt-in only; all older blocks render as before. Respect reduced-motion. */
.content-block:is([class*="fp-gradient-bg-"],[class*="fp-gradient-border-"],[class*="fp-divider-"],[class*="fp-shapes-"]){position:relative;isolation:isolate}
.content-block.fp-gradient-bg-mist{--fp-gradient-start:#f2faff;--fp-gradient-end:#eee8ff}
.content-block.fp-gradient-bg-sunrise{--fp-gradient-start:#fff5e9;--fp-gradient-end:#ffe5ed}
.content-block.fp-gradient-bg-ocean{--fp-gradient-start:#e1f5ff;--fp-gradient-end:#a9d9f7}
.content-block.fp-gradient-bg-forest{--fp-gradient-start:#e5faf0;--fp-gradient-end:#d6f0e1}
.content-block.fp-gradient-bg-night{--fp-gradient-start:#0e1927;--fp-gradient-end:#25384d;color:#f7fafc}
.content-block.fp-gradient-bg-custom{--fp-gradient-start:#e9f4ff;--fp-gradient-end:#fff1f8}
.content-block:is(.fp-gradient-bg-mist,.fp-gradient-bg-sunrise,.fp-gradient-bg-ocean,.fp-gradient-bg-forest,.fp-gradient-bg-night,.fp-gradient-bg-custom){
  background-image:linear-gradient(var(--fp-gradient-angle,135deg),var(--fp-gradient-start),var(--fp-gradient-end));
}
/* Preset variables can be overridden only by validated inline #RRGGBB. */
.content-block.fp-gradient-bg-night > :is(h1,h2,h3,p){color:inherit}
.fp-decoration-divider,.fp-decoration-shapes,.fp-decoration-gradient-border{position:absolute;pointer-events:none;inset-inline:0;z-index:0}
.fp-decoration-divider{height:26px;background:var(--fp-divider-color,#fff);clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}
.fp-decoration-divider-top{inset-block-start:0}
.fp-decoration-divider-bottom{inset-block-end:0;transform:rotate(180deg)}
.fp-divider-top-wave > .fp-decoration-divider-top,.fp-divider-bottom-wave > .fp-decoration-divider-bottom{
  clip-path:polygon(0 0,100% 0,100% 50%,95% 65%,90% 78%,85% 82%,80% 78%,75% 65%,70% 50%,65% 35%,60% 22%,55% 18%,50% 22%,45% 35%,40% 50%,35% 65%,30% 78%,25% 82%,20% 78%,15% 65%,10% 50%,5% 35%,0 22%)}
.fp-divider-top-diagonal > .fp-decoration-divider-top,.fp-divider-bottom-diagonal > .fp-decoration-divider-bottom{
  clip-path:polygon(0 0,100% 0,100% 0,0 100%)}
.fp-divider-top-curve > .fp-decoration-divider-top,.fp-divider-bottom-curve > .fp-decoration-divider-bottom{
  clip-path:ellipse(88% 90% at 50% -18%)}
.fp-divider-top-zigzag > .fp-decoration-divider-top,.fp-divider-bottom-zigzag > .fp-decoration-divider-bottom{
  clip-path:polygon(0 0,100% 0,100% 40%,95% 90%,90% 40%,85% 90%,80% 40%,75% 90%,70% 40%,65% 90%,60% 40%,55% 90%,50% 40%,45% 90%,40% 40%,35% 90%,30% 40%,25% 90%,20% 40%,15% 90%,10% 40%,5% 90%,0 40%)}
.fp-decoration-shapes{inset:0;overflow:hidden;opacity:.65}
.fp-decoration-shapes::before,.fp-decoration-shapes::after{content:"";position:absolute;display:block;pointer-events:none}
.fp-shapes-circles .fp-decoration-shapes::before{inline-size:180px;block-size:180px;border-radius:50%;background:rgb(64 155 225 / .17);inset-block-start:-85px;inset-inline-end:-45px}
.fp-shapes-circles .fp-decoration-shapes::after{inline-size:90px;block-size:90px;border-radius:50%;background:rgb(197 96 219 / .16);inset-block-end:-28px;inset-inline-start:-28px}
.fp-shapes-blobs .fp-decoration-shapes::before{inline-size:220px;block-size:150px;border-radius:54% 46% 65% 35%;background:rgb(95 165 238 / .20);inset-block-start:-52px;inset-inline-end:-70px;transform:rotate(-24deg)}
.fp-shapes-blobs .fp-decoration-shapes::after{inline-size:150px;block-size:150px;border-radius:35% 65% 45% 55%;background:rgb(239 155 114 / .15);inset-block-end:-80px;inset-inline-start:-35px}
.fp-shapes-rings .fp-decoration-shapes::before{inline-size:180px;block-size:180px;border:22px solid rgb(80 164 205 / .14);border-radius:50%;inset-block-start:-82px;inset-inline-end:-52px}
.fp-shapes-rings .fp-decoration-shapes::after{inline-size:100px;block-size:100px;border:12px solid rgb(151 98 218 / .13);border-radius:50%;inset-block-end:-48px;inset-inline-start:4%}
.fp-shapes-grid .fp-decoration-shapes{background-image:linear-gradient(rgb(85 145 175 / .10) 1px,transparent 1px),linear-gradient(90deg,rgb(85 145 175 / .10) 1px,transparent 1px);background-size:32px 32px}
.fp-decoration-gradient-border{inset:0;padding:2px;border-radius:inherit;background:linear-gradient(135deg,var(--fp-border-start,#60a5fa),var(--fp-border-end,#c084fc));
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude}
.fp-gradient-border-soft{--fp-border-start:#93c5fd;--fp-border-end:#ddd6fe}
.fp-gradient-border-vivid{--fp-border-start:#0ea5e9;--fp-border-end:#e879f9}
.fp-gradient-border-custom{--fp-border-start:#60a5fa;--fp-border-end:#c084fc}
/* Child hover targets use a whitelist of CMS card types; do not affect form controls. */
.content-block:is(.fp-child-hover-lift,.fp-child-hover-scale,.fp-child-hover-glow,.fp-child-hover-outline)
  :is(.fp-feature-card,.fp-process-step,.fp-counter-card,.fp-price-list>li,.fp-columns>*,.fp-icon-list>li){
    transition:transform .25s ease,box-shadow .25s ease,outline-color .25s ease;
}
@media(hover:hover) and (pointer:fine){
  .fp-child-hover-lift :is(.fp-feature-card,.fp-process-step,.fp-counter-card,.fp-price-list>li,.fp-columns>*,.fp-icon-list>li):hover{transform:translateY(-5px)}
  .fp-child-hover-scale :is(.fp-feature-card,.fp-process-step,.fp-counter-card,.fp-price-list>li,.fp-columns>*,.fp-icon-list>li):hover{transform:scale(1.025)}
  .fp-child-hover-glow :is(.fp-feature-card,.fp-process-step,.fp-counter-card,.fp-price-list>li,.fp-columns>*,.fp-icon-list>li):hover{box-shadow:0 12px 30px rgb(40 98 158 / .20)}
  .fp-child-hover-outline :is(.fp-feature-card,.fp-process-step,.fp-counter-card,.fp-price-list>li,.fp-columns>*,.fp-icon-list>li):hover{outline:2px solid var(--fp-accent,#1685bb);outline-offset:2px}
}
/* JS opt-in reveal: content remains visible with no JS, no observer, or reduced motion. */
.fp-stagger-ready{opacity:0}
.fp-stagger-play{animation:fp-stagger-enter 650ms ease-out var(--fp-stagger-delay,0ms) both}
.fp-stagger-fade{--fp-stagger-transform:none}
.fp-stagger-rise{--fp-stagger-transform:translateY(22px)}
.fp-stagger-zoom{--fp-stagger-transform:scale(.92)}
@keyframes fp-stagger-enter{from{opacity:0;transform:var(--fp-stagger-transform,none)}to{opacity:1;transform:none}}
/* Numbers never depend on scripting to be readable. */
.fp-counters > h2{margin:0 0 1rem}
.fp-counter-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:16px}
.fp-counter-card{padding:24px 16px;text-align:center;min-width:0}
.fp-counter-number{font-weight:750;font-variant-numeric:tabular-nums;font-size:clamp(1.9rem,4vw,3.4rem);line-height:1.1;overflow-wrap:anywhere}
.fp-counter-label{margin:12px 0 0;font-size:1rem;color:inherit;opacity:.85}
.fp-counters-soft .fp-counter-card{background:#edf7ff;border-radius:12px}
.fp-counters-dark .fp-counter-card{background:#162638;border-radius:12px;color:#f6f9fc}
.fp-counters-outline .fp-counter-card{border:1px solid #9dbbd1;border-radius:12px}
/* Parallax only applies to an explicit background image; JS provides the offset. */
.content-block[data-fp-parallax]{background-attachment:scroll;will-change:background-position}
@media(max-width:767px){.fp-decoration-divider{height:14px}.content-block[data-fp-parallax]{background-position:center center!important;will-change:auto}}
@media(prefers-reduced-motion:reduce){.fp-stagger-ready{opacity:1!important}.fp-stagger-play{animation:none!important;opacity:1!important;transform:none!important}
 .content-block[data-fp-parallax]{background-position:center center!important;will-change:auto}
 .fp-child-hover-lift :is(.fp-feature-card,.fp-process-step,.fp-counter-card):hover,
 .fp-child-hover-scale :is(.fp-feature-card,.fp-process-step,.fp-counter-card):hover{transform:none!important}}
/* A light child-card theme must override white text inherited from a dark section. */
.content-block.fp-gradient-bg-night .fp-counters-soft .fp-counter-card,
.content-block.fp-gradient-bg-night .fp-counters-outline .fp-counter-card{color:#22364b}
