/* SAFACO V7.2 — visual layout system inspired by the content rhythm of the reference site,
   while keeping this MVC implementation and CMS fields independent. */
:root{
  --sf-visual-radius:28px;
  --sf-visual-radius-sm:18px;
  --sf-visual-shadow:0 30px 80px rgba(9,42,38,.16);
}

/* ===== Visual hero: image + text + floating proof points ===== */
.sf-split-hero{padding:clamp(4.5rem,7vw,7.25rem) 0;min-height:620px;display:flex;align-items:center}
.sf-split-hero:after{content:"";position:absolute;width:420px;height:420px;border-radius:50%;right:-180px;top:-210px;border:1px solid rgba(255,255,255,.08);box-shadow:0 0 0 70px rgba(255,255,255,.02),0 0 0 140px rgba(255,255,255,.018);pointer-events:none}
.sf-split-hero .container{z-index:2}
.sf-split-hero h1{font-size:clamp(3rem,5.3vw,5.35rem)!important;line-height:.98;letter-spacing:-.045em;max-width:940px}
.sf-split-hero .sf-hero-rich{max-width:720px;font-size:clamp(1.02rem,1.25vw,1.22rem);line-height:1.72}
.sf-hero-actions .btn{min-height:52px;display:inline-flex;align-items:center}
.sf-hero-phone{font-weight:800;text-decoration:none;display:inline-flex;align-items:center;padding:.75rem .25rem}

.sf-visual-hero-media-wrap{position:relative;padding:1.1rem 1.25rem 1.35rem 1rem;max-width:610px;margin-left:auto}
.sf-visual-hero-media-wrap:before{content:"";position:absolute;inset:8% -4% -5% 10%;border-radius:36px;background:color-mix(in srgb,var(--sf-orange) 85%,#fff);opacity:.9;transform:rotate(2.2deg);z-index:-1}
.sf-visual-hero-media{height:clamp(390px,37vw,570px)!important;min-height:390px!important;border-radius:32px!important;padding:.42rem!important;background:rgba(255,255,255,.12)!important;border:1px solid rgba(255,255,255,.25)!important;box-shadow:0 32px 90px rgba(0,0,0,.22)!important;overflow:hidden}
.sf-visual-hero-media img{border-radius:26px!important}
.sf-visual-hero-corner{position:absolute;width:85px;height:85px;right:-5px;top:-6px;border-top:2px solid rgba(255,255,255,.35);border-right:2px solid rgba(255,255,255,.35);border-radius:0 28px 0 0;pointer-events:none}
.sf-visual-hero-floats{position:absolute;inset:0;pointer-events:none}
.sf-visual-hero-float{position:absolute;min-width:145px;max-width:190px;padding:.92rem 1.05rem;border-radius:16px;background:rgba(255,255,255,.96);box-shadow:0 18px 46px rgba(6,32,29,.2);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.7);display:flex;flex-direction:column;gap:.15rem;z-index:3}
.sf-visual-hero-float strong{font-family:var(--sf-font-heading);font-size:1.22rem;color:var(--sf-green-3);letter-spacing:-.02em}
.sf-visual-hero-float span{font-size:.76rem;color:var(--sf-muted);line-height:1.35}
.sf-visual-hero-float--1{left:-22px;bottom:64px}
.sf-visual-hero-float--2{right:-22px;top:48px}
.sf-visual-hero-float--3{right:12px;bottom:-6px;background:var(--sf-green-3)}
.sf-visual-hero-float--3 strong{color:#fff}.sf-visual-hero-float--3 span{color:rgba(255,255,255,.68)}
.sf-service-hero--dark .sf-visual-hero-media-wrap:before{opacity:.72}

/* ===== Reusable content rhythm ===== */
.sf-reference-section{padding:clamp(4.6rem,7.2vw,7.5rem) 0;position:relative;overflow:hidden}
.sf-section-kicker{display:inline-flex;align-items:center;gap:.55rem;font-size:.73rem;letter-spacing:.14em;text-transform:uppercase;font-weight:900;color:var(--sf-orange)}
.sf-section-kicker:before{content:"";width:28px;height:2px;background:currentColor}
.sf-section-title{font-family:var(--sf-font-heading);font-weight:800;font-size:clamp(2.25rem,4.25vw,4rem);line-height:1.04;letter-spacing:-.04em;color:var(--sf-ink);margin:.75rem 0 1.25rem}
.sf-section-lead{font-size:1.08rem;line-height:1.8;color:var(--sf-muted)}
.sf-media-frame{position:relative;border-radius:var(--sf-visual-radius);overflow:hidden;box-shadow:var(--sf-visual-shadow);background:var(--sf-soft);min-height:360px}
.sf-media-frame>img{display:block;width:100%;height:100%;min-height:360px;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.sf-media-frame:hover>img{transform:scale(1.025)}
.sf-media-frame:after{content:"";position:absolute;inset:auto 20px 20px auto;width:70px;height:70px;border-right:2px solid rgba(255,255,255,.82);border-bottom:2px solid rgba(255,255,255,.82);border-radius:0 0 16px 0}
.sf-media-caption{position:absolute;left:22px;bottom:22px;background:rgba(11,47,42,.92);color:#fff;padding:.9rem 1rem;border-radius:14px;max-width:230px;box-shadow:0 10px 28px rgba(0,0,0,.16)}
.sf-media-caption strong{display:block;font-family:var(--sf-font-heading);font-size:1rem}.sf-media-caption span{display:block;font-size:.76rem;color:rgba(255,255,255,.68);margin-top:.25rem}

/* ===== Home: practical media + service presentation ===== */
.sf-home-media-grid{display:grid;grid-template-columns:1.35fr .85fr;grid-template-rows:repeat(2,minmax(190px,1fr));gap:1rem;min-height:520px}
.sf-home-media-grid figure{margin:0;position:relative;overflow:hidden;border-radius:22px;background:var(--sf-soft)}
.sf-home-media-grid figure:first-child{grid-row:1/3}
.sf-home-media-grid img{width:100%;height:100%;object-fit:cover;transition:transform .65s ease}
.sf-home-media-grid figure:hover img{transform:scale(1.03)}
.sf-home-media-grid figcaption{position:absolute;left:16px;right:16px;bottom:16px;border-radius:13px;padding:.75rem .9rem;background:rgba(8,38,34,.87);color:#fff;font-weight:800;font-size:.83rem;backdrop-filter:blur(8px)}
.sf-service-directory{border-top:1px solid var(--sf-line)}
.sf-service-directory-item{display:grid;grid-template-columns:55px minmax(0,1fr) auto;gap:1.2rem;align-items:center;padding:1.3rem 0;border-bottom:1px solid var(--sf-line);text-decoration:none;color:var(--sf-ink);transition:padding .25s ease,color .25s ease}
.sf-service-directory-item:hover{padding-left:.55rem;color:var(--sf-green)}
.sf-service-directory-item .num{font-family:var(--sf-font-heading);font-weight:900;color:var(--sf-orange);font-size:.86rem;letter-spacing:.08em}
.sf-service-directory-item strong{display:block;font-size:1.08rem}.sf-service-directory-item small{display:block;color:var(--sf-muted);margin-top:.2rem;line-height:1.45}
.sf-service-directory-item .arrow{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--sf-line);transition:.25s ease}
.sf-service-directory-item:hover .arrow{background:var(--sf-green);border-color:var(--sf-green);color:#fff;transform:translateX(3px)}
.sf-trust-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
.sf-trust-card{border:1px solid var(--sf-line);border-radius:18px;padding:1.4rem;background:#fff;min-height:155px}
.sf-trust-card i{font-size:1.5rem;color:var(--sf-orange)}.sf-trust-card h3{font-size:1.05rem;margin:1rem 0 .5rem}.sf-trust-card p{font-size:.86rem;color:var(--sf-muted);margin:0;line-height:1.6}

/* ===== About ===== */
.sf-value-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
.sf-value-card{border-radius:22px;background:#fff;border:1px solid var(--sf-line);padding:1.55rem;min-height:210px;position:relative;overflow:hidden;transition:.3s ease}
.sf-value-card:after{content:"";position:absolute;width:120px;height:120px;border-radius:50%;right:-65px;bottom:-65px;background:color-mix(in srgb,var(--sf-orange) 10%,transparent)}
.sf-value-card:hover{transform:translateY(-5px);box-shadow:0 22px 55px rgba(10,43,39,.1)}
.sf-value-icon{width:48px;height:48px;border-radius:14px;background:color-mix(in srgb,var(--sf-orange) 13%,#fff);display:grid;place-items:center;color:var(--sf-orange);font-size:1.25rem}
.sf-value-card h3{font-size:1.1rem;margin:1.15rem 0 .55rem}.sf-value-card p{color:var(--sf-muted);font-size:.9rem;line-height:1.65;margin:0}
.sf-timeline{position:relative;padding-left:1.5rem}.sf-timeline:before{content:"";position:absolute;left:10px;top:12px;bottom:12px;width:1px;background:var(--sf-line)}
.sf-timeline-item{position:relative;padding:0 0 1.8rem 1.7rem}.sf-timeline-item:last-child{padding-bottom:0}
.sf-timeline-item:before{content:"";position:absolute;left:-1.55rem;top:.42rem;width:13px;height:13px;border-radius:50%;background:var(--sf-orange);box-shadow:0 0 0 6px color-mix(in srgb,var(--sf-orange) 14%,#fff)}
.sf-timeline-item .year{font-family:var(--sf-font-heading);font-weight:900;color:var(--sf-orange);font-size:.82rem;letter-spacing:.08em}.sf-timeline-item h3{font-size:1.05rem;margin:.35rem 0}.sf-timeline-item p{color:var(--sf-muted);font-size:.9rem;margin:0;line-height:1.6}

/* ===== Service detail ===== */
.sf-service-intro{background:#fff}
.sf-service-intro .sf-media-frame{min-height:480px}.sf-service-intro .sf-media-frame>img{min-height:480px}
.sf-rich-feature .sf-prose ul,.sf-rich-feature .sf-prose ol{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}
.sf-rich-feature .sf-prose li{position:relative;background:#fff;border:1px solid var(--sf-line);border-radius:16px;padding:1rem 1rem 1rem 2.75rem;line-height:1.55;color:var(--sf-ink)}
.sf-rich-feature .sf-prose li:before{content:"✓";position:absolute;left:1rem;top:1rem;width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--sf-green) 10%,#fff);color:var(--sf-green);font-weight:900;font-size:.76rem}
.sf-process-visual .sf-prose ol{counter-reset:sfStep;list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.sf-process-visual .sf-prose ol li{counter-increment:sfStep;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.055);border-radius:18px;padding:1.25rem 1.25rem 1.25rem 4.25rem;position:relative;color:rgba(255,255,255,.72);min-height:105px}
.sf-process-visual .sf-prose ol li:before{content:counter(sfStep,decimal-leading-zero);position:absolute;left:1.15rem;top:1.08rem;color:var(--sf-orange);font-family:var(--sf-font-heading);font-weight:900;font-size:1.2rem}
.sf-related-service-card{display:block;text-decoration:none;color:var(--sf-ink);border:1px solid var(--sf-line);border-radius:22px;overflow:hidden;background:#fff;transition:.3s ease;height:100%}
.sf-related-service-card img{width:100%;height:190px;object-fit:cover;transition:.5s ease}.sf-related-service-card:hover img{transform:scale(1.035)}
.sf-related-service-card .body{padding:1.2rem}.sf-related-service-card h3{font-size:1.05rem;margin:.35rem 0 0}.sf-related-service-card:hover{transform:translateY(-4px);box-shadow:0 20px 50px rgba(8,43,38,.1)}

/* ===== Legal / policy article ===== */
.sf-policy-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:clamp(2rem,5vw,5rem);align-items:start}
.sf-policy-sidebar{position:sticky;top:120px}
.sf-policy-toc{border:1px solid var(--sf-line);border-radius:20px;background:#fff;padding:1.2rem}
.sf-policy-toc strong{display:block;font-size:.76rem;letter-spacing:.12em;text-transform:uppercase;color:var(--sf-orange);margin-bottom:.8rem}
.sf-policy-toc a{display:block;text-decoration:none;color:var(--sf-muted);font-size:.86rem;padding:.55rem .65rem;border-radius:9px;line-height:1.35;transition:.2s ease}.sf-policy-toc a:hover{background:var(--sf-soft);color:var(--sf-green)}
.sf-policy-help{margin-top:1rem;padding:1.2rem;border-radius:20px;background:var(--sf-green-3);color:#fff}.sf-policy-help p{color:rgba(255,255,255,.64);font-size:.84rem;line-height:1.6}.sf-policy-help a{color:#fff;text-decoration:none;font-weight:800}
.sf-policy-article{counter-reset:policySection;max-width:900px}.sf-policy-article>p:first-child{font-size:1.08rem;color:var(--sf-muted);line-height:1.85}
.sf-policy-article h2{counter-increment:policySection;position:relative;padding-left:3.5rem;margin:3.4rem 0 1rem!important;scroll-margin-top:130px}.sf-policy-article h2:first-child{margin-top:0!important}
.sf-policy-article h2:before{content:counter(policySection);position:absolute;left:0;top:-.08rem;width:42px;height:42px;border-radius:12px;background:var(--sf-green);color:#fff;display:grid;place-items:center;font-size:1rem;font-weight:900;font-family:var(--sf-font-heading)}
.sf-policy-article h3{scroll-margin-top:130px}.sf-policy-article p,.sf-policy-article li{font-size:1rem;line-height:1.9;color:#536762}
.sf-policy-article blockquote{margin:2rem 0;padding:1.25rem 1.4rem;background:color-mix(in srgb,var(--sf-orange) 7%,#fff);border-left:4px solid var(--sf-orange);border-radius:0 14px 14px 0}

/* ===== Generic rich page polish ===== */
.sf-cms-content-section{padding:clamp(4rem,6vw,6.5rem) 0!important}.sf-cms-content-section .sf-prose{font-size:1rem}.sf-cms-content-section .sf-prose>img,.sf-cms-content-section .sf-prose>p>img{border-radius:22px;box-shadow:0 18px 52px rgba(8,43,38,.12);margin:1.4rem 0}

@media(max-width:1199.98px){
  .sf-split-hero h1{font-size:clamp(2.7rem,6vw,4.5rem)!important}.sf-visual-hero-float--1{left:-5px}.sf-visual-hero-float--2{right:-5px}.sf-value-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:991.98px){
  .sf-split-hero{min-height:0;padding:4.5rem 0}.sf-visual-hero-media-wrap{max-width:none;margin:1rem auto 0;padding:1rem}.sf-visual-hero-media{height:auto!important;min-height:0!important;aspect-ratio:16/10}.sf-visual-hero-float--1{left:0;bottom:25px}.sf-visual-hero-float--2{right:0;top:30px}.sf-visual-hero-float--3{right:25px;bottom:-5px}
  .sf-home-media-grid{min-height:430px}.sf-trust-grid{grid-template-columns:repeat(2,1fr)}.sf-policy-layout{grid-template-columns:1fr}.sf-policy-sidebar{position:static}.sf-policy-toc{display:flex;gap:.35rem;overflow:auto;white-space:nowrap}.sf-policy-toc strong{display:none}.sf-policy-toc a{flex:0 0 auto;background:var(--sf-soft)}.sf-policy-help{display:none}
}
@media(max-width:767.98px){
  .sf-split-hero{padding:3.25rem 0}.sf-split-hero h1{font-size:clamp(2.35rem,11vw,3.2rem)!important;letter-spacing:-.035em}.sf-split-hero .sf-hero-rich{font-size:1rem}.sf-hero-actions{display:grid!important;grid-template-columns:1fr}.sf-hero-actions .btn{width:100%;justify-content:center}.sf-hero-phone{justify-content:center}
  .sf-visual-hero-media-wrap{padding:.7rem .7rem 1.25rem}.sf-visual-hero-media-wrap:before{inset:8% -1% -2% 8%;border-radius:24px}.sf-visual-hero-media{border-radius:22px!important;aspect-ratio:4/3}.sf-visual-hero-media img{border-radius:17px!important}.sf-visual-hero-float{min-width:118px;max-width:145px;padding:.7rem .78rem;border-radius:13px}.sf-visual-hero-float strong{font-size:1rem}.sf-visual-hero-float span{font-size:.68rem}.sf-visual-hero-float--1{left:0;bottom:16px}.sf-visual-hero-float--2{right:0;top:20px}.sf-visual-hero-float--3{display:none}
  .sf-reference-section{padding:4.2rem 0}.sf-section-title{font-size:clamp(2rem,9vw,2.7rem)}.sf-home-media-grid{grid-template-columns:1fr;grid-template-rows:none;min-height:0}.sf-home-media-grid figure,.sf-home-media-grid figure:first-child{grid-row:auto;min-height:240px}.sf-service-directory-item{grid-template-columns:40px minmax(0,1fr) auto;gap:.7rem}.sf-trust-grid,.sf-value-grid{grid-template-columns:1fr}.sf-media-frame,.sf-media-frame>img,.sf-service-intro .sf-media-frame,.sf-service-intro .sf-media-frame>img{min-height:300px}.sf-rich-feature .sf-prose ul,.sf-rich-feature .sf-prose ol,.sf-process-visual .sf-prose ol{grid-template-columns:1fr}.sf-policy-article h2{padding-left:3rem}.sf-policy-article h2:before{width:36px;height:36px;border-radius:10px}
}
@media(prefers-reduced-motion:reduce){.sf-media-frame>img,.sf-home-media-grid img,.sf-related-service-card img{transition:none!important}}

/* ============================================================
   V7.6 — Frontend interaction polish
   ============================================================ */
.sf-action-target{animation:sfActionTargetPulse .9s ease both;scroll-margin-top:110px}
@keyframes sfActionTargetPulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--sf-orange) 0%,transparent)}35%{box-shadow:0 0 0 8px color-mix(in srgb,var(--sf-orange) 12%,transparent)}100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--sf-orange) 0%,transparent)}}
[data-sf-submit][disabled]{cursor:wait;opacity:.88}
.sf-contact-sheet{position:fixed;inset:0;z-index:1085;display:grid;place-items:center;padding:20px;visibility:hidden;opacity:0;transition:opacity .2s ease,visibility .2s ease}
.sf-contact-sheet.is-open{visibility:visible;opacity:1}
.sf-contact-sheet__backdrop{position:absolute;inset:0;border:0;background:rgba(7,25,23,.52);backdrop-filter:blur(5px);cursor:default}
.sf-contact-sheet__dialog{position:relative;width:min(430px,100%);background:var(--sf-surface,#fff);border:1px solid color-mix(in srgb,var(--sf-line) 80%,transparent);border-radius:24px;padding:30px;box-shadow:0 30px 80px rgba(9,37,34,.24);transform:translateY(10px) scale(.985);transition:transform .22s ease}
.sf-contact-sheet.is-open .sf-contact-sheet__dialog{transform:none}
.sf-contact-sheet__close{position:absolute;top:14px;right:14px;width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--sf-line);border-radius:50%;background:#fff;color:var(--sf-ink)}
.sf-contact-sheet__icon{width:54px;height:54px;display:grid;place-items:center;border-radius:17px;background:color-mix(in srgb,var(--sf-orange) 13%,white);color:var(--sf-orange);font-size:1.25rem;margin-bottom:18px}
.sf-contact-sheet__dialog small{display:block;font-size:.74rem;font-weight:800;letter-spacing:.12em;color:var(--sf-orange);margin-bottom:7px}
.sf-contact-sheet__dialog strong{display:block;font:var(--sf-heading-weight) 1.8rem/1.15 var(--sf-font-heading);color:var(--sf-ink);margin-bottom:10px}
.sf-contact-sheet__dialog p{color:var(--sf-muted);margin:0 0 22px;line-height:1.6}
.sf-contact-sheet__actions{display:flex;flex-wrap:wrap;gap:10px}
.sf-contact-sheet__actions .btn{flex:1 1 170px;justify-content:center}
body.sf-contact-sheet-open{overflow:hidden}
.sf-contact-card,.sf-contact-mini a,.sf-footer-contact a,.sf-hero-phone,[data-sf-action]{-webkit-tap-highlight-color:transparent}
.btn,[data-sf-action],.sf-card-link,.sf-service-directory-item{transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease,border-color .18s ease,color .18s ease}
@media (hover:hover) and (pointer:fine){.btn[data-sf-action]:hover,.sf-contact-card:hover{transform:translateY(-2px)}.sf-float-call:hover{transform:translateY(-3px) scale(1.03)}}
@media (prefers-reduced-motion:reduce){.sf-action-target{animation:none}.sf-contact-sheet,.sf-contact-sheet__dialog,.btn,[data-sf-action]{transition:none!important}}
