/* ===== v20: clear text + simple visible animation + technology info ===== */
:root{--v20-ink:#0c1207;--v20-body:#26301c;--v20-green:#3d6b00;--v20-lime:#7acc05;--v20-line:#c9d3bb}
html{font-size:17px}
body[data-v20]{color:var(--v20-ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
/* --- text clarity: darker body text, no faint greys, no text on busy areas --- */
body[data-v20] p,body[data-v20] li,body[data-v20] .lead,body[data-v20] .section-head p,body[data-v20] .card p,body[data-v20] .muted{color:var(--v20-body)!important;opacity:1!important;text-shadow:none!important}
body[data-v20] .lead{font-size:1.1rem;line-height:1.65;max-width:820px}
body[data-v20] p{line-height:1.65}
body[data-v20] .eyebrow,body[data-v20] .num{color:var(--v20-green)!important;font-weight:900;letter-spacing:.1em}
body[data-v20] .breadcrumb{color:#3f4a36}
body[data-v20] h1,body[data-v20] h2,body[data-v20] h3,body[data-v20] h4{color:var(--v20-ink);text-shadow:none;line-height:1.05}
body[data-v20] .tag,body[data-v20] .tech-micro span{font-size:.75rem!important;color:#25400a!important;background:#eef6dc!important;border-color:#a9c17f!important}
body[data-v20] .card{border-color:var(--v20-line);box-shadow:0 2px 10px rgba(20,30,10,.06)}
body[data-v20] .card h3{font-size:1.3rem}
/* dark areas: pure white text on a solid dark base */
body[data-v20] .dark-feature,body[data-v20] .footer{background:#10190a!important;color:#fff}
body[data-v20] .dark-feature h1,body[data-v20] .dark-feature h2,body[data-v20] .dark-feature h3,body[data-v20] .footer h3,body[data-v20] .footer h4{color:#fff!important}
body[data-v20] .dark-feature p,body[data-v20] .dark-feature li,body[data-v20] .dark-feature .lead,body[data-v20] .dark-feature span,body[data-v20] .footer p,body[data-v20] .footer a,body[data-v20] .footer span{color:#eef5e0!important}
body[data-v20] .dark-feature .eyebrow,body[data-v20] .dark-feature h2 span{color:#b6f24a!important}
body[data-v20] .dark-feature .feature-row strong{color:#b6f24a!important}
/* page banners: photo sits behind a strong light wash so text stays crisp */
body[data-v20] .page-hero h1{font-size:clamp(2.4rem,5vw,4.4rem)}
body[data-v20]{--ov-page:.94;--ov-hero:.94}
/* nav & buttons readable */
body[data-v20] .navlinks a,body[data-v20] .navdrop>button{color:var(--v20-ink);font-size:.82rem}
body[data-v20] .btn{font-size:.9rem;padding:13px 20px}
body[data-v20] .btn-primary{background:var(--v20-lime);color:#0c1207!important}
body[data-v20] .btn-ghost{border:2px solid #3d6b00;color:#1f3a05!important;background:#fff}
body[data-v20] :focus-visible{outline:3px solid #3f8f00;outline-offset:2px}

/* --- animation: switch off every busy decorative loop, keep only .v20a --- */
body[data-v20] *:not(.v20a),body[data-v20] *:not(.v20a)::before,body[data-v20] *:not(.v20a)::after{animation:none!important}
body[data-v20] .tech-tilt,body[data-v20] .cv-tilt{transform:none!important;transition:box-shadow .2s,border-color .2s}
body[data-v20] .hero-system-scan,body[data-v20] .hero-system-network,body[data-v20] .orbit,body[data-v20] .orb-dot,body[data-v20] .tech-label,
body[data-v20] .cv-scan,body[data-v20] .cv-node,body[data-v20] .cv-grid,body[data-v20] .staffing-track,body[data-v20] .staffing-nodes,body[data-v20] .staffing-signal{display:none!important}
body[data-v20] .hero-system-grid{opacity:.35}
body[data-v20] .card:hover{border-color:#5d9800;box-shadow:0 8px 22px rgba(30,50,10,.14)}
/* simple reveal: fade + small rise only */
body[data-v20] .reveal{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
body[data-v20] .reveal.is-visible{opacity:1;transform:none}
/* the one simple loop we keep: slow drifting soft shapes */
@keyframes v20drift{0%{transform:translate(0,0)}50%{transform:translate(40px,-24px)}100%{transform:translate(0,0)}}
@keyframes v20drift2{0%{transform:translate(0,0)}50%{transform:translate(-46px,20px)}100%{transform:translate(0,0)}}
@keyframes v20pulse{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes v20flow{from{background-position:0 0}to{background-position:64px 0}}
.v20-rel{position:relative;z-index:2}
.v20-blob{position:absolute;border-radius:50%;filter:blur(50px);z-index:1;pointer-events:none}
.v20-blob.b1{width:340px;height:340px;left:-80px;top:-60px;background:rgba(122,204,5,.28);animation:v20drift 14s ease-in-out infinite}
.v20-blob.b2{width:300px;height:300px;right:-60px;bottom:-60px;background:rgba(122,204,5,.16);animation:v20drift2 16s ease-in-out infinite}
.v20-band{position:relative;overflow:hidden;background:#f4f8ea}
.v20-bg-staffing{background:#eef3f8}
.v20-band:before{content:"";position:absolute;inset:0;z-index:0;background-image:linear-gradient(90deg,rgba(60,100,10,.08) 1px,transparent 1px);background-size:64px 100%;animation:v20flow 6s linear infinite}
.v20-band.v20-band:before{}
/* photos */
.v20-photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.v20-photo{margin:0;border-radius:14px;overflow:hidden;background:#fff;border:1px solid var(--v20-line);box-shadow:0 6px 18px rgba(20,30,10,.1)}
.v20-photo img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;transition:transform .5s ease}
.v20-photo:hover img{transform:scale(1.04)}
.v20-photo figcaption{padding:12px 15px;font-weight:800;font-size:.95rem;color:var(--v20-ink);background:#fff;border-top:3px solid var(--v20-lime)}
.v20-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:22px}
.v20-facts div{background:#fff;border:1px solid var(--v20-line);border-left:5px solid var(--v20-lime);border-radius:10px;padding:14px 16px}
.v20-facts b{display:block;font-size:1.05rem;color:var(--v20-ink)}.v20-facts span{font-size:.92rem;color:var(--v20-body)}
/* technology matrix */
.v20-tech{background:#fff}
.v20-tgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px}
.v20-tcard{background:#f7faef;border:1px solid var(--v20-line);border-top:5px solid var(--v20-lime);border-radius:12px;padding:20px}
.v20-tcard h3{font-size:1.15rem;margin:0 0 12px;text-transform:none;letter-spacing:0}
.v20-tcard ul{list-style:none;margin:0;padding:0}
.v20-tcard li{position:relative;padding:6px 0 6px 20px;border-bottom:1px dashed #d5dec5;font-size:.95rem;line-height:1.4}
.v20-tcard li:last-child{border-bottom:0}
.v20-tcard li:before{content:"";position:absolute;left:2px;top:13px;width:8px;height:8px;border-radius:2px;background:var(--v20-lime)}
.v20-tcard:hover li:before{animation:v20pulse 1.2s ease-in-out infinite}
.v20-tcard li:before{animation-name:none}
/* standards grid */
.v20-std-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.v20-std-grid div{background:#fff;border:1px solid var(--v20-line);border-radius:10px;padding:16px}
.v20-std-grid b{display:block;font-size:1.05rem;color:#1f3a05;margin-bottom:5px}.v20-std-grid span{font-size:.93rem;color:var(--v20-body);line-height:1.45}
/* simple path */
.v20-path{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;position:relative}
.v20-path.four{grid-template-columns:repeat(4,1fr)}
.v20-step{position:relative;background:#f7faef;border:1px solid var(--v20-line);border-radius:12px;padding:20px 16px}
.v20-step i{display:inline-flex;width:34px;height:34px;align-items:center;justify-content:center;border-radius:50%;background:var(--v20-lime);color:#0c1207;font-style:normal;font-weight:900;margin-bottom:10px}
.v20-step h3{font-size:1.15rem;margin:0 0 6px;text-transform:none;letter-spacing:0}.v20-step p{font-size:.95rem;margin:0 0 8px}
.v20-step small{display:block;font-weight:800;color:var(--v20-green);font-size:.78rem}
.v20-step:not(:last-child):after{content:"→";position:absolute;right:-13px;top:50%;transform:translateY(-50%);z-index:3;font-weight:900;color:var(--v20-green);background:#fff;border-radius:50%;width:22px;height:22px;text-align:center;line-height:22px;font-size:.85rem;box-shadow:0 0 0 1px var(--v20-line)}
.v20-step.on{border-color:#5d9800;background:#eaf6d0;transition:background .3s}
@media(max-width:1020px){.v20-std-grid,.v20-facts{grid-template-columns:repeat(2,1fr)}.v20-path,.v20-path.four{grid-template-columns:repeat(2,1fr)}.v20-step:after{display:none}.v20-photo-grid{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.v20-photo-grid,.v20-std-grid,.v20-facts,.v20-path,.v20-path.four{grid-template-columns:1fr}html{font-size:16px}}
@media(prefers-reduced-motion:reduce){.v20-blob,.v20-band:before{animation:none!important}.reveal{opacity:1!important;transform:none!important}}
/* hero system panel: bright, readable labels for every stage */
body[data-v20] .hero-stage b{color:#f2fbe0!important;font-size:.9rem!important;opacity:1!important}
body[data-v20] .hero-stage small{color:#cfe0b4!important;font-size:.72rem!important;opacity:1!important}
body[data-v20] .hero-stage{opacity:1!important;filter:none!important}
body[data-v20] .hero-stage.active b{color:#b6f24a!important}
body[data-v20] .hero-stage .stage-icon{border-color:#7acc05!important;opacity:1!important}
body[data-v20] .hero-system-footer span{color:#e4f0cf!important;font-size:.76rem!important}
body[data-v20] .hero-reference-techline,body[data-v20] .hero-reference-state span{color:#1f3a05!important;font-size:.8rem!important}
body[data-v20] .hero-reference{--ov-hero:.96}

/* ===== v21: reference-style interactive cards (realistic illustration + static hotspots) ===== */
.cvx{margin:0 0 16px;border-radius:14px;overflow:hidden;background:#0a1a0d;border:1px solid #22421f;box-shadow:0 10px 26px rgba(8,17,6,.25)}
.cvx-stage{position:relative;aspect-ratio:8/5;overflow:hidden;background:#0a1a0d}
.cvx-stage img{display:block;width:100%;height:100%;object-fit:cover}
.cvx-dot{position:absolute;width:22px;height:22px;margin:-11px 0 0 -11px;padding:0;border-radius:50%;border:2px solid #b6f24a;background:rgba(8,17,6,.6);cursor:pointer;transition:background .15s,transform .15s}
.cvx-dot:before{content:"";position:absolute;inset:-9px}
.cvx-dot i{position:absolute;inset:5px;border-radius:50%;background:#b6f24a}
.cvx-dot:hover,.cvx-dot:focus-visible{transform:scale(1.15)}
.cvx-dot:focus-visible{outline:3px solid #fff;outline-offset:2px}
.cvx-dot.on{background:#b6f24a}.cvx-dot.on i{background:#0a1a0d}
body[data-v20] .cvx-cap{background:#0f2a14;border-top:1px solid #22421f;padding:10px 13px 11px;min-height:78px}
body[data-v20] .cvx-cap b{display:block;color:#b6f24a;font-size:.84rem;margin-bottom:3px}
body[data-v20] .cvx-cap span{display:block;color:#eef5e0;font-size:.8rem;line-height:1.45}
.tx-scan{display:none}
/* legibility fix: dark cards must have light text (was dark-on-dark) */
body[data-v20] .service-card h2,body[data-v20] .service-card h3,body[data-v20] .service-card .num{color:#fff!important}
body[data-v20] .service-card p,body[data-v20] .service-card li{color:#dfe9cf!important}
body[data-v20] .service-card .eyebrow,body[data-v20] .service-card .tag{color:#b6f24a!important}
/* v21: cards are dark-green by design (style.css) -> keep text light; drop the old schematic strip (replaced by .cvx) */
.gs-card-visual{display:none!important}
/* v24: removed legacy light-on-dark card rule (cards are white since v23) */
/* v24: removed legacy light-on-dark card rule (cards are white since v23) */
/* v24: removed legacy light-on-dark card rule (cards are white since v23) */
/* v24: removed legacy light-on-dark card rule (cards are white since v23) */
