/* Rounded-corner theme */
:root{--r-sm:10px;--r:16px;--r-lg:22px}
.btn,.nav .btn,.menu-toggle,.b-actions .btn,.bd-actions .btn{border-radius:999px}
.card,.service-card,.price-card,.tool-card,.dark-card,.b-sum-in,.contact-box,.map-wrap,.shots{border-radius:var(--r);overflow:hidden}
.zm-on .zm-copy{border-radius:var(--r-lg);border-left:0;box-shadow:inset 4px 0 0 var(--accent),0 30px 80px rgba(0,0,0,.35)}
.zm-copy{border-radius:var(--r-lg)}
.dd-menu{border-radius:var(--r-sm);overflow:hidden}
.chips button{border-radius:999px}
.foot-icons a{border-radius:12px}
.b-dialog{border-radius:var(--r-lg)}.b-form{border-radius:var(--r-lg)}
.b-form input{border-radius:var(--r-sm)}
.bd-sum,.b-hint{border-radius:var(--r-sm)}
ul.chk input{border-radius:6px}
.gal-count{border-radius:999px}
.price-card.feature::before{border-radius:999px}
.pillars a:hover{border-radius:0}
.shot-list{border-radius:var(--r-sm);overflow:hidden}
.lb-strip button,.lb-strip img{border-radius:8px}
.meter,.meter span{border-radius:999px}
.cta-band .wrap{gap:24px}
.price-card{overflow:visible}

/* Minimal closing line (replaces the big yellow CTA band) */
.cta-mini{padding:clamp(36px,5vw,56px) 0;border-top:1px solid #e3e1db;background:var(--paper)}
.cta-mini .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px 32px;flex-wrap:wrap}
.cta-mini p{margin:0;font-size:18px}
.cta-mini b{font-family:var(--serif);font-stretch:125%;font-weight:600;font-size:22px;margin-right:10px}
.cta-mini a{color:var(--ink);font-weight:600;text-decoration:none;border-bottom:2px solid var(--accent)}
.cta-mini a:hover{border-bottom-color:var(--ink)}
.cta-mini .alt-contact{color:var(--muted);font-size:15px}
.cta-mini .alt-contact a{font-weight:500;border-bottom-width:1px}
/* About headshot */
.about-hero .wrap{grid-template-columns:1.3fr .7fr;align-items:center}
.about-hero .portrait{margin:0;justify-self:end;width:100%;max-width:340px}
.about-hero .portrait img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:50% 22%;border-radius:var(--r-lg);box-shadow:0 24px 60px rgba(0,0,0,.45)}
@media (max-width:760px){.about-hero .wrap{grid-template-columns:1fr}.about-hero .portrait{justify-self:start;max-width:260px;order:-1}}

/* Animated registration pipeline (workflow page) */
.pipe{--dur:7s;position:relative;padding:8px 0 4px}
.pipe-track{position:absolute;left:10%;right:10%;top:44px;height:2px;background:#2f2f2f}
.pipe-fill{position:absolute;inset:0;background:var(--accent);transform-origin:left;transform:scaleX(0);animation:pipeFill var(--dur) linear infinite}
.pipe-dot{position:absolute;top:50%;left:0;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 6px rgba(255,212,0,.18),0 0 24px 6px rgba(255,212,0,.55);animation:pipeDot var(--dur) linear infinite}
.pipe-nodes{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:12px;position:relative}
.pipe-node{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}
.pipe-ico{width:72px;height:72px;border-radius:50%;display:grid;place-items:center;background:var(--ink-2);border:2px solid #333;color:#8a8a8a;animation:pipeNode var(--dur) linear infinite;animation-delay:calc(var(--i) * var(--dur) * .16)}
.pipe-ico svg{width:30px;height:30px}
.pipe-node b{font-family:var(--serif);font-stretch:125%;font-size:16px;letter-spacing:.04em}
.pipe-sub{font-size:13px;color:var(--muted-dark);max-width:160px;opacity:.45;animation:pipeSub var(--dur) linear infinite;animation-delay:calc(var(--i) * var(--dur) * .16)}
.pipe-feed{margin:28px auto 0;max-width:520px;text-align:center;font-size:14px;color:#cfcfcf;background:var(--ink-2);border:1px solid var(--line);border-radius:999px;padding:10px 18px;animation:pipeFeed var(--dur) ease infinite}
.pipe-live{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);background:var(--accent);border-radius:999px;padding:2px 8px;margin-right:6px}
@keyframes pipeDot{0%{left:0;opacity:0}3%{opacity:1}64%{left:100%;opacity:1}72%,100%{left:100%;opacity:0}}
@keyframes pipeFill{0%{transform:scaleX(0);opacity:1}64%{transform:scaleX(1);opacity:1}88%{transform:scaleX(1);opacity:1}96%,100%{transform:scaleX(1);opacity:0}}
@keyframes pipeNode{0%{background:var(--ink-2);border-color:#333;color:#8a8a8a;transform:scale(1)}3%{background:var(--accent);border-color:var(--accent);color:var(--ink);transform:scale(1.08)}8%{transform:scale(1)}30%{background:#1f1c0d;border-color:var(--accent);color:var(--accent)}75%{background:#1f1c0d;border-color:var(--accent);color:var(--accent)}85%,100%{background:var(--ink-2);border-color:#333;color:#8a8a8a}}
@keyframes pipeSub{0%{opacity:.45}4%,75%{opacity:1;color:#e9e9e9}85%,100%{opacity:.45}}
@keyframes pipeFeed{0%,62%{opacity:0;transform:translateY(8px)}70%,92%{opacity:1;transform:none}100%{opacity:0}}
@media (max-width:760px){
  .pipe-track{left:35px;right:auto;top:36px;bottom:90px;width:2px;height:auto}
  .pipe-fill{transform-origin:top;animation-name:pipeFillV}
  .pipe-dot{left:50%;top:0;margin:-7px 0 0 -7px;animation-name:pipeDotV}
  .pipe-nodes{grid-template-columns:1fr;gap:18px}
  .pipe-node{display:grid;grid-template-columns:72px 1fr;grid-template-rows:auto auto;column-gap:16px;text-align:left;align-items:center}
  .pipe-ico{grid-row:1/3}
  .pipe-node b{align-self:end}.pipe-sub{align-self:start;max-width:none}
  @keyframes pipeDotV{0%{top:0;opacity:0}3%{opacity:1}64%{top:100%;opacity:1}72%,100%{top:100%;opacity:0}}
  @keyframes pipeFillV{0%{transform:scaleY(0);opacity:1}64%{transform:scaleY(1)}88%{opacity:1}96%,100%{transform:scaleY(1);opacity:0}}
}
@media (prefers-reduced-motion:reduce){.pipe *{animation:none!important}.pipe-fill{transform:none}.pipe-dot{display:none}.pipe-ico{border-color:var(--accent);color:var(--accent)}.pipe-sub{opacity:1}.pipe-feed{opacity:1}}

/* Service page headers with a faint photo */
.page-hero.has-photo{background:var(--ink)}
.page-hero.has-photo::before{background-image:linear-gradient(90deg,var(--ink) 30%,rgba(11,11,11,.55) 65%,rgba(11,11,11,.35)),var(--hero-photo);background-size:cover;background-position:var(--hero-pos,center);mask-image:none;filter:grayscale(.35) contrast(1.05);opacity:.38}
.page-hero.hero-svg::before{filter:none;opacity:.5}
/* header photo as a real element (more reliable than a CSS variable url) */
.page-hero.has-photo::before{content:none}
.page-hero.has-photo .hero-bg{position:absolute;inset:0;background-size:cover;filter:grayscale(.35) contrast(1.05);opacity:.38}
.page-hero.has-photo .hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--ink) 28%,rgba(11,11,11,.55) 62%,rgba(11,11,11,.3))}
.page-hero.has-photo .wrap{z-index:1}

/* Utility ETL mini-animation (workflow page card) */
.etl{width:100%;height:100%;background:radial-gradient(120% 90% at 70% 50%,#1b1a14,#0e0e0e);display:grid;place-items:center}
.etl-svg{width:94%;height:auto;font-family:var(--sans)}
.etl-lines path{fill:none;stroke:#3a3a3a;stroke-width:2;stroke-dasharray:4 6;animation:etlDash 1.6s linear infinite}
.etl-src rect{fill:#161616;stroke:#3a3a3a}
.etl-src text{fill:#d8d8d8;font-size:13px}
.etl-src .led{fill:var(--accent);animation:etlLed 1.6s ease-in-out infinite}
.etl-hub polygon{fill:#1f1c0d;stroke:var(--accent);stroke-width:2}
.hub-t{fill:var(--accent);font-family:var(--serif);font-stretch:125%;font-weight:700;font-size:17px;letter-spacing:.08em}
.hub-s{fill:#bdbdbd;font-size:10px}
.etl-gis ellipse,.etl-gis path{fill:#161616;stroke:#e9e9e9;stroke-width:2}
.etl-gis .ring{fill:none;stroke:#555}
.gis-t{fill:#fff;font-size:11px;font-weight:700;letter-spacing:.12em}
.gis-s{fill:#bdbdbd;font-size:8.5px}
.etl .pkt{fill:var(--accent);filter:drop-shadow(0 0 4px rgba(255,212,0,.9))}
@keyframes etlDash{to{stroke-dashoffset:-20}}
@keyframes etlLed{0%,100%{opacity:.35}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){.etl *{animation:none!important}.etl .pkt{display:none}}

/* "What I do" cards: faint photo + yellow Learn more on hover */
.service-card .more{transition:color .15s}
.service-card:hover .more,.service-card:focus-visible .more{color:#e2b300}

/* Card "deal" animation */
.deal.is-stacked .service-card{transition:none!important}
.deal .service-card.dealing{transition:transform .7s cubic-bezier(.2,.9,.25,1.15),box-shadow .7s ease!important;box-shadow:0 18px 40px rgba(0,0,0,.18)}
