/* Coastal Snow & Ice - "Snow Handled, Before You're Up" section */
.ccsi{--ccsi-navy:#0F3A6B;--ccsi-deep:#0a2747;--ccsi-sky:#2E9BD6;--ccsi-orange:#E8732B;--ccsi-orange-d:#c95f1d;--ccsi-ink:#1E2430;--ccsi-muted:#5d6676;--ccsi-bg:#f3f7fb;--ccsi-card:#ffffff;--ccsi-line:#dbe5ef;
  max-width:1100px;margin:32px auto;border-radius:18px;overflow:hidden;background:var(--ccsi-bg);color:var(--ccsi-ink);font-family:inherit;line-height:1.55;text-align:left;box-shadow:0 10px 40px rgba(15,58,107,.12)}
.ccsi *{box-sizing:border-box}
/* shared: snow canvas + reveal */
[data-ccs-snow]{position:relative;isolation:isolate}
.ccs-snowcanvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
.ccs-wait{opacity:0;transform:translateY(22px)}
.ccs-in{opacity:1;transform:none;transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}

.ccsi-hero{background:radial-gradient(120% 90% at 80% 0%,#1d5a96 0%,var(--ccsi-navy) 45%,var(--ccsi-deep) 100%);color:#fff;padding:56px 24px 120px}
.ccsi-inner{position:relative;z-index:1;max-width:760px;margin:0 auto;text-align:center}
.ccsi-emblem{display:block;width:84px;height:84px;margin:0 auto 14px;border-radius:50%;box-shadow:0 0 0 4px rgba(255,255,255,.15),0 8px 24px rgba(0,0,0,.35);animation:ccsiSpin 1.2s cubic-bezier(.2,.7,.2,1) both}
.ccsi-kicker{margin:0 0 8px;color:#ffb37a;font-weight:700;font-size:13px;letter-spacing:.14em;text-transform:uppercase}
.ccsi-title{margin:0 0 18px;font-family:"Playfair Display",Lora,Georgia,serif;font-weight:700;font-size:clamp(32px,5.4vw,56px);line-height:1.08;color:#fff;text-wrap:balance}
.ccsi-title span{display:block;color:#bfe0f5;animation:ccsiRise .9s .25s cubic-bezier(.2,.7,.2,1) both}
.ccsi-lead{margin:0 auto 14px;max-width:640px;font-size:clamp(16px,1.9vw,19px);color:#e6eef7}
.ccsi-lead b{color:#fff}
.ccsi-steps{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:22px 0 26px}
.ccsi-steps span{display:inline-flex;align-items:center;gap:8px;padding:8px 14px 8px 8px;border-radius:999px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);font-size:15px;font-weight:600;backdrop-filter:blur(2px)}
.ccsi-steps b{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--ccsi-orange);color:#fff;font-size:14px}
.ccsi-btns{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}
.ccsi-btn{display:inline-block;padding:14px 24px;border-radius:10px;background:var(--ccsi-orange);color:#fff !important;font-weight:700;font-size:17px;text-decoration:none !important;box-shadow:0 6px 18px rgba(232,115,43,.45);transition:transform .15s,background .15s}
.ccsi-btn:hover{background:var(--ccsi-orange-d);transform:translateY(-2px)}
.ccsi-btn:focus-visible{outline:3px solid #fff;outline-offset:3px}
.ccsi-ghost{background:transparent;border:2px solid rgba(255,255,255,.7);box-shadow:none}
.ccsi-ghost:hover{background:rgba(255,255,255,.12)}
/* snow drift + plow crossing along the bottom */
.ccsi-ground{position:absolute;left:0;right:0;bottom:-1px;height:110px;z-index:1;pointer-events:none}
.ccsi-drift{position:absolute;left:0;bottom:0;width:100%;height:90px}
.ccsi-truck{position:absolute;bottom:34px;left:100%;width:120px;height:56px;animation:ccsiDrive 22s linear infinite}
.ccsi-beacon{animation:ccsiBlink .8s steps(2) infinite}

.ccsi-clear{padding:8px 24px 40px}
.ccsi-k2{color:var(--ccsi-orange);text-align:center}
.ccsi-h3{margin:0 0 22px;text-align:center;font-family:"Playfair Display",Lora,Georgia,serif;font-size:clamp(26px,3.4vw,36px);color:var(--ccsi-navy)}
.ccsi-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.ccsi-grid li{background:var(--ccsi-card);border:1px solid var(--ccsi-line);border-radius:14px;padding:18px 18px 20px;min-width:0;transition:transform .2s,box-shadow .2s}
.ccsi-grid li:hover{transform:translateY(-4px);box-shadow:0 10px 24px rgba(15,58,107,.14)}
.ccsi-grid h4{margin:12px 0 4px;font-size:19px;color:var(--ccsi-navy)}
.ccsi-grid p{margin:0;font-size:15.5px;color:var(--ccsi-muted)}
.ccsi-ic{display:block;height:104px;border-radius:10px;background:linear-gradient(180deg,#e7f1fb,#f6fafd);overflow:hidden}
.ccsi-ic svg{display:block;width:100%;height:100%;padding:12px 12px 0}
.ccsi-mv{transform-box:fill-box;transform-origin:center}
.ccsi-grid li:hover .ccsi-ic-plow .ccsi-mv,.ccsi-grid li.ccs-in .ccsi-ic-plow .ccsi-mv{animation:ccsiPush 1.4s ease-in-out}
.ccsi-grid li:hover .ccsi-ic-shovel .ccsi-mv{animation:ccsiScoop .9s ease-in-out}
.ccsi-grains rect{animation:ccsiGrain 1.6s linear infinite}
.ccsi-grains rect:nth-child(2){animation-delay:.3s}.ccsi-grains rect:nth-child(3){animation-delay:.6s}.ccsi-grains rect:nth-child(4){animation-delay:.9s}.ccsi-grains rect:nth-child(5){animation-delay:1.2s}
.ccsi-arrow{animation:ccsiNudge 1.6s ease-in-out infinite}
.ccsi-grid li:hover .ccsi-ic-bank .ccsi-mv{animation:ccsiShove 1s ease-in-out}

@keyframes ccsiSpin{from{opacity:0;transform:rotate(-120deg) scale(.6)}to{opacity:1;transform:none}}
@keyframes ccsiRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes ccsiDrive{0%{left:100%}100%{left:-140px}}
@keyframes ccsiBlink{0%{opacity:1}100%{opacity:.25}}
@keyframes ccsiPush{0%,100%{transform:translateX(0)}50%{transform:translateX(-8px)}}
@keyframes ccsiScoop{0%,100%{transform:rotate(0)}40%{transform:rotate(-14deg) translateY(-4px)}}
@keyframes ccsiGrain{0%{transform:translateY(-6px);opacity:0}20%{opacity:1}100%{transform:translateY(12px);opacity:0}}
@keyframes ccsiNudge{0%,100%{transform:translateX(0)}50%{transform:translateX(5px)}}
@keyframes ccsiShove{0%,100%{transform:translateX(0)}50%{transform:translateX(6px)}}

@media (max-width:900px){.ccsi-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.ccsi{margin:20px auto;border-radius:14px}.ccsi-hero{padding:40px 16px 104px}.ccsi-clear{padding:8px 16px 28px}.ccsi-grid{grid-template-columns:1fr}.ccsi-steps span{font-size:14px}.ccsi-btn{width:100%;text-align:center}}
@media (prefers-reduced-motion:reduce){.ccsi *,.ccsi{animation:none !important;transition:none !important}.ccsi-truck{display:none}}
