/* Extra pages and features: lead form, news, tour, pricing, team, partners, stories, search, consent, install. */
.hidden{display:none!important}
.nav-search{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:12px;color:var(--navy)}
.nav-search:hover{background:var(--cyan-100)}
.nav-search .ico{width:26px;height:26px;margin:0;background:none!important;box-shadow:none!important;color:var(--navy)}
.nav-search .ico svg{width:22px;height:22px}
.pill-tag{display:inline-block;background:var(--cyan-100);color:var(--navy);border-radius:999px;font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:.15rem .6rem;vertical-align:middle;margin-left:.3rem}
.pill-tag.gold{background:var(--gold);color:#221a00}
.tiny-note{font-size:.85rem;color:var(--muted);margin:.8rem 0 0}
.empty-note{color:var(--muted);text-align:center;padding:1.4rem 0}
.toolbar-f{display:flex;flex-wrap:wrap;gap:.8rem;align-items:center;margin-bottom:1.2rem}
.toolbar-f input,.toolbar-f select{padding:.65rem .9rem;border:1.5px solid var(--line);border-radius:12px;font:inherit;background:var(--card-bg);min-width:240px}
.toolbar-f input:focus,.toolbar-f select:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(10,160,240,.16)}
.plain{list-style:none;padding:0;margin:0;display:grid;gap:.7rem}.plain small{display:block;color:var(--muted)}
/* news */
.ngrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2rem}.ngrid.n3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:900px){.ngrid,.ngrid.n3{grid-template-columns:1fr}}
.ncard{background:var(--card-bg);border:1px solid var(--line);border-radius:18px;border-top:5px solid var(--cyan);box-shadow:0 6px 18px rgba(6,48,122,.06);transition:transform .15s,box-shadow .15s}
.ncard:nth-child(3n+2){border-top-color:var(--gold)}.ncard:nth-child(3n){border-top-color:var(--navy)}
.ncard:hover{transform:translateY(-3px);box-shadow:0 14px 28px rgba(6,48,122,.13)}
.ncard a{display:block;padding:1.2rem 1.3rem;text-decoration:none;color:inherit;height:100%}
.ncat{font-size:.72rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--cyan)}
.ncard h3{margin:.3rem 0 .4rem;font-size:1.15rem}.ncard p{margin:0 0 .8rem;color:var(--muted)}
.nmeta{font-size:.85rem;color:var(--navy);font-weight:700}
.article{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:2.4rem;align-items:start}
@media(max-width:900px){.article{grid-template-columns:1fr}}
.prose h2{font-size:1.4rem;margin:1.6rem 0 .5rem}.prose p{font-size:1.05rem;line-height:1.75}.prose ul,.prose ol{line-height:1.7}
.share{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-top:2rem;padding-top:1.2rem;border-top:1px solid var(--line)}
.next{padding-left:1.2rem;display:grid;gap:.5rem}.next li::marker{color:var(--cyan);font-weight:800}
/* request form */
.lead-wrap{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:2rem;align-items:start;position:relative}
@media(max-width:960px){.lead-wrap{grid-template-columns:1fr}}
.lead fieldset{border:1px solid var(--line);border-radius:18px;padding:1.2rem 1.3rem 1.3rem;margin:0 0 1rem;background:var(--card-bg);box-shadow:0 4px 14px rgba(6,48,122,.05)}
.lead legend{font-weight:800;color:var(--heading);padding:0 .5rem;font-size:1.05rem}
.lead legend b{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--gold);color:#221a00;margin-right:.4rem;font-size:.85rem}
.lead legend small{font-weight:500;color:var(--muted)}
.lead .row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:.4rem}
@media(max-width:600px){.lead .row{grid-template-columns:1fr}}
.lead label{display:flex;flex-direction:column;gap:.35rem;font-weight:600;font-size:.92rem;color:var(--heading);min-width:0}
.lead input:not([type=checkbox]):not([type=radio]),.lead select,.lead textarea{padding:.7rem .85rem;border:1.5px solid var(--line);border-radius:12px;font:inherit;width:100%;background:var(--card-bg)}
.lead input:focus,.lead select:focus,.lead textarea:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(10,160,240,.16)}
.lbl{font-weight:700;font-size:.9rem;color:var(--heading);margin:.9rem 0 .4rem}
.choices{display:flex;flex-wrap:wrap;gap:.5rem}
.choice{flex-direction:row!important;position:relative}
.choice input{position:absolute;opacity:0;pointer-events:none}
.choice span{display:inline-block;padding:.5rem .95rem;border:1.5px solid var(--line);border-radius:999px;background:var(--card-bg);font-weight:600;font-size:.9rem;cursor:pointer;transition:all .12s}
.choice:hover span{border-color:var(--cyan)}
.choice input:checked + span{background:var(--navy);color:#fff;border-color:var(--navy)}
.choice input:focus-visible + span{box-shadow:0 0 0 3px rgba(10,160,240,.35)}
.check{flex-direction:row!important;align-items:flex-start;gap:.6rem;font-weight:500!important;margin-top:.9rem}
.check input{margin-top:.25rem;width:auto!important}
.lead-steps{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}
.lead-steps span{font-size:.8rem;font-weight:700;color:var(--muted);padding:.25rem .7rem;border-radius:999px;background:var(--cyan-100)}
.lead-steps span.on{background:var(--navy);color:#fff}
.lead-actions{display:flex;gap:1rem;align-items:center;margin-top:1rem;flex-wrap:wrap}
.lead-side{display:grid;gap:1rem;position:sticky;top:110px}
@media(max-width:960px){.lead-side{position:static}}
.lead-done{position:absolute;inset:0;background:var(--card-bg);border-radius:18px;text-align:center;padding:3rem 1rem;z-index:5}
.ok-ring{width:84px;height:84px;border-radius:50%;background:linear-gradient(135deg,#128c4a,#25d366);display:inline-grid;place-items:center;color:#fff;margin-bottom:1rem}
.ok-ring .ico{background:none;box-shadow:none;margin:0}.ok-ring svg{width:44px;height:44px}
.msg{margin-top:.8rem;font-weight:600}.msg.err{color:#c92a2a}
/* downloads */
.callout-box{margin-top:1rem;border:1px solid var(--line);border-left:5px solid var(--gold);border-radius:12px;padding:.8rem 1rem;background:var(--gold-100)}
/* tour */
.tour-bar{display:flex;gap:1rem;align-items:center;justify-content:space-between;margin-bottom:1rem;flex-wrap:wrap}
.tour-progress{flex:1;min-width:160px;height:8px;background:var(--cyan-100);border-radius:99px;overflow:hidden}
.tour-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--cyan),var(--gold));transition:width .35s}
.tour-ctrl{display:flex;gap:.5rem}
.js .slide{display:none}.js .slide.on{display:grid;animation:fadeup .35s ease}
.slide{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:2rem;align-items:center;margin-bottom:2.4rem}
@media(max-width:900px){.slide{grid-template-columns:1fr}}
@keyframes fadeup{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.step-no{display:inline-block;background:var(--gold);color:#221a00;font-weight:800;font-size:.75rem;border-radius:999px;padding:.15rem .7rem;letter-spacing:.05em;text-transform:uppercase}
.slide-text h3{font-size:1.6rem;margin:.6rem 0 .4rem}.slide-text p{color:var(--muted)}
.tour-thumbs{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}
.js .tour-thumbs{display:flex}.tour-thumbs:empty{display:none}
.tthumb{display:inline-flex;align-items:center;gap:.5rem;border:1.5px solid var(--line);background:var(--card-bg);border-radius:999px;padding:.35rem .9rem .35rem .4rem;font:inherit;font-weight:600;font-size:.85rem;cursor:pointer;color:var(--heading)}
.tthumb span{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--cyan-100);font-size:.75rem;font-weight:800}
.tthumb.on{background:var(--navy);color:#fff;border-color:var(--navy)}.tthumb.on span{background:var(--gold);color:#221a00}
.tour-bar [data-prev],.tour-bar [data-next],.tour-bar [data-play]{display:none}.js .tour-bar [data-prev],.js .tour-bar [data-next],.js .tour-bar [data-play]{display:inline-flex}
html:not(.js) .tour-thumbs{display:none}
/* pricing */
.plans{align-items:stretch}.plan{display:flex;flex-direction:column}.plan .checklist{flex:1;margin:.8rem 0 1.2rem}
.plan.feat{border:2px solid var(--gold);box-shadow:0 14px 34px rgba(253,184,19,.22);position:relative}
.price{font-size:1.7rem;font-weight:800;color:var(--navy);margin:.5rem 0 .2rem}
.cmp-big td,.cmp-big th{text-align:center}.cmp-big td:first-child,.cmp-big th:first-child{text-align:left}
.yes{color:#128c4a;font-weight:800}.no{color:#9aa8c2}
/* team, partners, stories */
.tgrid,.sgrid,.pgrid2{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.2rem}
@media(max-width:900px){.tgrid,.sgrid,.pgrid2{grid-template-columns:1fr}}
.tcard{background:var(--card-bg);border:1px solid var(--line);border-radius:20px;padding:1.6rem;text-align:center;box-shadow:0 6px 18px rgba(6,48,122,.06);border-top:5px solid var(--gold)}
.tcard img,.avatar{width:150px;height:150px;border-radius:50%;object-fit:cover;margin:0 auto .8rem;display:grid;place-items:center}
.avatar{background:linear-gradient(135deg,var(--navy),var(--cyan));color:#fff;font-size:2.1rem;font-weight:800;letter-spacing:.04em}
.tcard .role{color:var(--cyan);font-weight:700;font-size:.9rem}.tcard p{color:var(--muted);margin:.6rem 0 0}
.partner{display:flex;flex-direction:column;align-items:center;gap:.5rem;background:var(--card-bg);border:1px solid var(--line);border-radius:16px;padding:1.2rem;text-decoration:none;color:var(--heading);text-align:center}
.partner img{max-height:60px;width:auto}.partner small{color:var(--muted)}
.empty-block{text-align:center;padding:1rem}.empty-block .ico{margin:0 auto 1rem}
.story{margin:0;background:var(--card-bg);border:1px solid var(--line);border-radius:20px;padding:1.5rem;border-left:6px solid var(--gold);box-shadow:0 6px 18px rgba(6,48,122,.06)}
.story blockquote{margin:0 0 1rem;font-size:1.05rem;line-height:1.6;color:var(--heading)}.story figcaption b{display:block}.story figcaption span{color:var(--muted);font-size:.9rem}
/* search */
.sform{display:flex;gap:.6rem;margin-bottom:1.2rem}.sform input{flex:1;padding:.9rem 1.1rem;border:2px solid var(--line);border-radius:14px;font:inherit;font-size:1.05rem}
.sform input:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 4px rgba(10,160,240,.16)}
.results a.r{display:block;background:var(--card-bg);border:1px solid var(--line);border-left:5px solid var(--cyan);border-radius:14px;padding:.9rem 1.1rem;margin-bottom:.7rem;text-decoration:none;color:inherit}
.results a.r:hover{border-left-color:var(--gold);box-shadow:0 8px 20px rgba(6,48,122,.1)}
.results a.r b{display:block;color:var(--heading)}.results a.r span{color:var(--muted);font-size:.92rem}.results mark{background:var(--gold-100);padding:0 2px;border-radius:3px}
.search-modal{position:fixed;inset:0;background:rgba(4,31,82,.6);z-index:400;display:none;place-items:start center;padding:12vh 1rem 1rem}
.search-modal.open{display:grid}.search-modal .box{background:var(--card-bg);border-radius:20px;width:min(640px,100%);padding:1.2rem;box-shadow:0 30px 70px rgba(0,0,0,.35)}
.search-modal input{width:100%;padding:.9rem 1.1rem;border:2px solid var(--line);border-radius:14px;font:inherit;font-size:1.05rem}
.search-modal .results{max-height:48vh;overflow:auto;margin-top:.8rem}
/* consent + install */
.consent{position:fixed;left:16px;bottom:16px;max-width:420px;background:var(--navy-900);color:#e9f0ff;border-radius:16px;padding:1rem 1.1rem;z-index:300;box-shadow:0 16px 40px rgba(0,0,0,.35);border-left:5px solid var(--gold)}
.consent p{margin:0 0 .7rem;font-size:.9rem}.consent a{color:var(--gold)}.consent div{display:flex;gap:.5rem;flex-wrap:wrap}
.consent .btn-outline{color:#fff;border-color:rgba(255,255,255,.4)}
.install{position:fixed;left:16px;bottom:16px;z-index:290;display:flex;align-items:center;background:var(--navy-900);color:#fff;border:1px solid rgba(255,255,255,.35);border-radius:999px;box-shadow:0 6px 18px rgba(0,0,0,.3);font-size:.85rem;transition:opacity .4s}
.install button{border:0;background:none;color:inherit;font:inherit;cursor:pointer}
.install #installBtn{font-weight:800;padding:.5rem .4rem .5rem 1rem}.install #installX{padding:.5rem .8rem .5rem .4rem;font-size:1.2rem;line-height:1;opacity:.7}
.install.fade{opacity:0;pointer-events:none}
.consent:not(.hidden) ~ .install{display:none}
/* editor */
#editorRoot .form{display:grid;gap:.8rem;max-width:760px}#editorRoot .form label{display:flex;flex-direction:column;gap:.3rem;font-weight:600}
#editorRoot input,#editorRoot textarea,#editorRoot select{padding:.65rem .8rem;border:1.5px solid var(--line);border-radius:10px;font:inherit;width:100%}
#editorRoot .row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.ann-row{display:grid;grid-template-columns:120px 1fr 200px auto;gap:.5rem;margin-bottom:.5rem}
@media(max-width:800px){.ann-row{grid-template-columns:1fr}}
.btn-wa{background:#1fa855;color:#fff}
@media print{.topbar,.consent,.install{display:none!important}}
[hidden]{display:none!important}
.plan .pill-tag{align-self:flex-start;margin:0 0 .5rem}
.cmp-big{width:100%}
.pcard{scroll-margin-top:120px}.pcard:target{box-shadow:0 0 0 3px var(--gold),0 14px 30px rgba(6,48,122,.15)}
.big-code{font-size:1.6rem;letter-spacing:.12em;padding:.3rem .8rem}

/* long hashes and codes must wrap on phones */
code{overflow-wrap:anywhere;word-break:break-all}
.callout-box code{display:block;margin-top:.3rem;font-size:.82rem}

/* ---------------- featured products carousel ---------------- */
.feat-carousel{position:relative;margin-top:1.4rem}
.feat-track{position:relative;overflow:hidden;border-radius:20px}
.feat-slide{display:none;padding:.2rem 0 .4rem;animation:featIn .5s ease}
.feat-slide.is-active{display:block}
@keyframes featIn{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
.feat-slide.dir-back{animation-name:featInBack}
@keyframes featInBack{from{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:none}}
.feat-arrow{position:absolute;top:50%;translate:0 -50%;width:44px;height:44px;border-radius:999px;border:1px solid rgba(255,255,255,.35);background:rgba(10,20,50,.55);color:#fff;font-size:26px;line-height:1;display:grid;place-items:center;cursor:pointer;transition:background .15s,transform .15s;z-index:5}
.feat-arrow:hover{background:rgba(10,20,50,.85);transform:translateY(-50%) scale(1.06)}
.feat-prev{left:-6px}.feat-next{right:-6px}
.feat-dots{display:flex;justify-content:center;gap:.5rem;margin-top:1.1rem}
.feat-dot{width:10px;height:10px;border-radius:999px;border:0;background:rgba(255,255,255,.3);cursor:pointer;padding:0;transition:background .2s,width .2s}
.feat-dot.is-active{background:var(--gold);width:26px}
@media(max-width:820px){
  .feat-arrow{position:static;translate:none;width:40px;height:40px;font-size:22px;flex:none}
  .feat-controls{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.1rem}
  .feat-dots{margin-top:0}
}
@media(prefers-reduced-motion:reduce){.feat-slide{animation:none}}

/* visually hidden but readable by screen readers (used by the featured carousel's live status) */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* moving facts strip used on product landing pages (reuses the topbar's .ticker/.tk styling) */
.ticker-strip{background:linear-gradient(90deg,var(--navy-900),var(--navy));padding:.6rem 0}
.ticker-strip .ticker{max-width:1180px;margin:0 auto;padding:0 4%}

/* web apps hub */
.appgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.1rem}
.appcard{display:flex;gap:1rem;background:var(--card-bg);color:var(--ink);border:1px solid var(--line,#e2e8f2);border-radius:18px;padding:1.1rem;box-shadow:0 6px 22px rgba(6,48,122,.07);transition:transform .2s,box-shadow .2s}
.appcard:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(6,48,122,.13)}
.ap-logo{flex:none}.ap-logo img{width:72px;height:72px;border-radius:50%;object-fit:cover;background:#fff}
.ap-body h3{margin:.1rem 0 .1rem;font-size:1.15rem}.ap-body h3 a{color:inherit;text-decoration:none}.ap-tag{display:block;font-size:.85rem;opacity:.7;margin-bottom:.4rem}
.ap-body p{margin:.3rem 0 .8rem;font-size:.95rem}.ap-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.dl-row{display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr;gap:.8rem;align-items:center;padding:.9rem 0;border-bottom:1px solid var(--line,#e2e8f2)}
.dl-row:last-child{border-bottom:0}.dl-app{display:flex;gap:.8rem;align-items:center}.dl-app img{width:48px;height:48px;border-radius:50%}
.dl-btn{display:inline-flex;flex-direction:column;align-items:flex-start;gap:.1rem;padding:.55rem .9rem;border-radius:12px;border:1px solid var(--line,#e2e8f2);text-decoration:none;color:inherit;font-weight:600}
.dl-btn small{font-weight:400;opacity:.7}.dl-btn:hover{border-color:#0b4da2}
@media (max-width:820px){.appgrid{grid-template-columns:1fr}.dl-row{grid-template-columns:1fr 1fr}.dl-app{grid-column:1/-1}}
@media (max-width:480px){.appcard{flex-direction:column;align-items:flex-start}}

.subscribe{margin-top:2rem;background:var(--soft);border:1px solid var(--line);border-radius:16px;padding:1.4rem 1.6rem;display:flex;flex-wrap:wrap;gap:1.2rem;align-items:center;justify-content:space-between}
.subscribe h3{margin:0 0 .2rem;font-size:1.05rem}.subscribe p{margin:0;font-size:.9rem;color:var(--muted)}
.sub-form{display:flex;gap:.6rem;flex:none}
.sub-form input{padding:.7rem .9rem;border:1.5px solid var(--line);border-radius:999px 0 0 999px;background:var(--card-bg);color:var(--ink);min-width:220px;border-right:0}
.sub-form .btn{border-radius:0 999px 999px 0}
.subscribe .msg{width:100%;margin:0;font-size:.85rem;font-weight:600;color:var(--ok);display:none}
.subscribe .msg.show{display:block}
@media(max-width:600px){.subscribe{flex-direction:column;align-items:stretch}.sub-form{flex-direction:column}.sub-form input{border-radius:12px;border-right:1.5px solid var(--line)}.sub-form .btn{border-radius:12px}}

/* team: centre an incomplete last row (e.g. 5 people in 3 columns); without this file the plain grid still works, just left-aligned */
.tgrid-c{display:flex;flex-wrap:wrap;justify-content:center}
.tgrid-c .tcard{flex:0 1 calc((100% - 2.4rem)/3);min-width:0}
@media(max-width:900px){.tgrid-c .tcard{flex-basis:100%}}

/* ---- Redesign v1: grouped menus, pillars, footer groups ---- */
.nav .dd-menu .dd-group{display:block;margin:.55rem .8rem .15rem;font:800 .68rem/1.3 var(--font);letter-spacing:.12em;text-transform:uppercase;color:var(--cyan)}
.nav .dd-menu .dd-group:first-child{margin-top:.3rem}
.nav .dd-menu .dd-all{margin-top:.4rem;border-top:1px solid var(--line);border-radius:0 0 8px 8px;color:var(--navy);font-weight:700}
.nav .dd-menu.dd-wide{min-width:360px}
.nav>.btn.btn-sm{white-space:nowrap}
.hero-panel a span{display:block}.hero-panel a small{display:block;font-weight:500;color:var(--muted);font-size:.82rem}
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;align-items:stretch}
.pillar{position:relative;background:var(--card-bg);border:1px solid var(--line);border-top:5px solid var(--navy);border-radius:var(--radius);padding:1.6rem 1.5rem 1.4rem;box-shadow:var(--shadow)}
.pillar.p2{border-top-color:var(--cyan)}.pillar.p3{border-top-color:var(--gold)}
.pillar .pnum{font:800 2.4rem/1 var(--font-head);color:var(--cyan-100);position:absolute;top:.9rem;right:1.2rem}
.pillar h3{font-size:1.25rem;margin-right:2.6rem}
.pillar>p{color:var(--muted);margin:.2rem 0 1rem}
.pillar ul{list-style:none;margin:0;padding:0;display:grid;gap:.1rem}
.pillar li a{display:flex;align-items:center;gap:.65rem;padding:.55rem .4rem;border-radius:10px;font-weight:600;color:var(--heading);text-decoration:none}
.pillar li a:hover{background:var(--cyan-50)}
.pillar li a::before{content:"";flex:none;width:.55rem;height:.55rem;border-radius:50%;background:var(--cyan)}.pillar.p3 li a::before{background:var(--gold)}.pillar.p1 li a::before{background:var(--navy)}
.foot-grid .fg{display:block;margin:.7rem 0 .15rem;font:800 .68rem/1.3 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
.foot-grid .fg:first-of-type{margin-top:0}
@media(max-width:940px){.pillars{grid-template-columns:1fr}.nav .dd-menu.dd-wide{min-width:0}}
.nav a{white-space:nowrap}
@media(min-width:941px) and (max-width:1260px){.nav{gap:.8rem}.nav a{font-size:.88rem}.nav>a:first-child{display:none}.nav .dd>a::after{margin-left:.2rem;border-width:3px}.nav a.btn.btn-sm{padding:.5rem .8rem}.brand img{width:150px;height:auto}.nav-wrap{gap:.6rem}}
/* phone menu: each group opens on tap instead of listing everything at once */
@media(max-width:940px){
.nav .dd-menu{display:none}.nav .dd.open .dd-menu{display:block;margin:.1rem 0 .5rem}
.nav .dd>a{display:flex;justify-content:space-between;align-items:center}
.nav .dd>a::after{display:inline-block;margin-left:.5rem;border-width:5px;transition:transform .15s}
.nav .dd.open>a::after{transform:rotate(180deg)}
.nav .dd-menu small{display:none}
}
.checklist.two-col{columns:2;column-gap:2.4rem}.checklist.two-col li{break-inside:avoid}
@media(max-width:700px){.checklist.two-col{columns:1}}
.op-group{margin:.6rem 0 1rem}.op-title{display:block;font:800 .72rem/1.3 var(--font);letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);margin-bottom:.4rem}
.lead-card{display:flex;gap:1.1rem;align-items:flex-start}.lead-card img{width:110px;height:110px;border-radius:50%;object-fit:cover;flex:none}
.lead-card .role{color:var(--cyan);font-weight:700;margin:.1rem 0 .4rem}
.pillar-mini h3{font-size:1.1rem}.pillar-mini .mini-list{font-size:.9rem;color:var(--muted)}
@media(max-width:560px){.lead-card{flex-direction:column}}
/* ---- product catalogue ---- */
.pbadges{display:flex;flex-wrap:wrap;gap:.35rem;margin:.1rem 0 .5rem}
.pbadge{display:inline-block;padding:.12rem .55rem;border-radius:999px;font:700 .7rem/1.5 var(--font);letter-spacing:.02em;background:var(--soft);color:var(--heading);border:1px solid var(--line)}
.pbadge.st-released{background:#e7f7ee;color:#14663a;border-color:#bfe6cf}
.pbadge.st-on-request{background:var(--cyan-100);color:var(--navy);border-color:#bfe3fa}
.pbadge.st-in-development{background:var(--gold-100);color:#7a5200;border-color:#f3dc9b}
.pbadge.fl{background:var(--navy);color:#fff;border-color:var(--navy)}
.pbadge.off{background:#fff;color:var(--muted)}
.pcard.flagship{border-top:4px solid var(--gold)}
.pcard h3 a{color:inherit;text-decoration:none}.pcard h3 a:hover{text-decoration:underline}
.pcard.hidden{display:none}
.pacts{display:flex;flex-wrap:wrap;gap:.4rem}
.result-count{margin:.2rem 0 1rem;color:var(--muted);font-size:.92rem}
.page-hero .card,.page-hero .card td,.page-hero .card p{color:var(--ink)}
.page-hero .card h3{color:var(--heading)}
.page-hero .card table.cmp td:first-child{color:var(--muted);font-weight:600;width:38%}

/* ---- pictures ---- */
.pillar .ph{display:block;max-width:none;width:calc(100% + 3rem);margin:-1.6rem -1.5rem 1.1rem;aspect-ratio:3/2;object-fit:cover;border-radius:calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0 0}
.pillar .pnum{color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.45);z-index:1}
.dept-photo{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:var(--radius);box-shadow:var(--shadow)}
.kc-banner{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1.6rem;align-items:center;margin-bottom:1.6rem}
.kc-banner .ph{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:var(--radius);box-shadow:var(--shadow)}
@media(max-width:760px){.kc-banner{grid-template-columns:1fr}}
.kgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.2rem}
.kcard{background:var(--card-bg);border:1px solid var(--line);border-radius:var(--radius);padding:1.2rem 1.2rem 1rem;box-shadow:var(--shadow)}
.kcard h3{font-size:1.1rem;margin:.3rem 0 .4rem}.kcard h3 a{color:var(--heading);text-decoration:none}.kcard h3 a:hover{text-decoration:underline}
.kcard p{color:var(--muted);font-size:.95rem;margin:.2rem 0 .6rem}.kcard.hidden{display:none}
.proj-photo{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:var(--radius);margin-bottom:1rem}

.card.insight{text-decoration:none;color:inherit;display:block;overflow:hidden}
.card.insight .ph{display:block;max-width:none;width:calc(100% + 3.2rem);margin:-1.6rem -1.6rem 1rem;aspect-ratio:3/2;object-fit:cover}
.card.insight h3{color:var(--heading)}.card.insight .more{font-weight:700;color:var(--navy)}

/* ---- layout polish: aligned columns, justified body text, even cards, no stray gaps ---- */
main p{hyphens:auto;-webkit-hyphens:auto;overflow-wrap:break-word}
@media(min-width:761px){
  main .split>div>p:not(.lead):not(.tiny-note):not(.form-note),
  main .card>p,main .pillar>p,main .kcard>p,main .pcard .pbody>p,
  main .section-head>p,main .kc-banner p,main .cnote{text-align:justify;text-justify:inter-word}
  main .contact-card p,main .tile p,main .reach p,main .page-hero p,main .hero p,main .lead-done p{text-align:inherit}
}
.card>p:last-child,.kcard>p:last-child,.pillar>p:last-child,.cbox p:last-child{margin-bottom:0}
.card.dept,.card.aud,.card.insight,.kcard{display:flex;flex-direction:column}
.card.dept .more,.card.aud>a,.card.insight .more,.kcard .more{margin-top:auto;padding-top:.6rem}
.card.dept>p,.card.aud>p,.card.insight>p,.kcard>p{flex:0 0 auto}
p+.dept-photo,.card+.dept-photo,ul+.dept-photo{margin-top:1.4rem}
.split>div>.dept-photo:first-child{margin-top:0}
.section-head>div h2,.section-head h2{margin-bottom:0}
.kc-banner h2{margin-bottom:.5rem}
/* one consistent vertical rhythm */
.section{padding:clamp(2.2rem,4.5vw,3.4rem) 0}
.section.tight{padding:clamp(1.6rem,3.2vw,2.4rem) 0}
.section-head{margin-bottom:1.6rem}
.split{gap:clamp(1.6rem,3.5vw,3rem)}
.grid{gap:1.3rem}
h2{margin-bottom:.55em}

.hero-grid{align-items:center}
.hero-visual{display:grid;gap:1rem}
.hero-visual .ph{display:block;width:100%;max-width:none;aspect-ratio:16/9;object-fit:cover;border-radius:var(--radius);box-shadow:var(--shadow-lg)}
.hero-visual .hero-panel{margin:0}
.cinfo,.cinfo>*,.split>*{min-width:0}
.dept-photo,.kc-banner .ph{max-width:100%}
.cbox p,.cbox span,[data-email],[data-email2],.foot-contact a,.cmp td{overflow-wrap:anywhere}
.cbox>div{min-width:0}

/* ---- language switcher ---- */
.lang-switch{display:inline-flex;gap:.1rem;align-items:center;border:1px solid var(--line);border-radius:999px;padding:.12rem;background:var(--card-bg)}
.lang-switch a{padding:.22rem .55rem;border-radius:999px;font:700 .74rem/1 var(--font);color:var(--muted)!important;text-decoration:none;box-shadow:none!important}
.lang-switch a:hover{background:var(--cyan-50);color:var(--navy)!important}
.lang-switch a[aria-current="true"]{background:var(--navy);color:#fff!important}
.tr-notice{background:var(--gold-100);color:#6b4a00;text-align:center;font-size:.85rem;padding:.4rem 1rem}
@media(max-width:940px){.lang-switch{align-self:flex-start;margin:.3rem 0}}
/* longer menu words (French, Kinyarwanda): the logo never shrinks, the menu tightens instead */
.brand{flex:0 0 auto}.brand img{max-width:none}
@media(min-width:941px) and (max-width:1420px){.nav{gap:.65rem}.nav a{font-size:.84rem}.nav a.btn.btn-sm{padding:.45rem .7rem;font-size:.78rem;white-space:normal;line-height:1.15;text-align:center;max-width:9.5rem}.brand img{width:140px;height:auto}.lang-switch a{padding:.2rem .4rem}.nav .dd>a::after{margin-left:.15rem}}

/* ---- accessibility (WCAG 2.2 AA): contrast, link cues, touch targets ---- */
:root{--cyan-text:#00669e;--cyan-solid:#0873b3}
.kicker,.ncat,.pcat,.role,.op-title,.nav .dd-menu .dd-group{color:var(--cyan-text)}
.dark .kicker{color:var(--gold)}
.page-hero .kicker,.dark .ncat{color:var(--gold)}
.tile.sky{background:var(--cyan-solid)}.tile.sky,.tile.sky span,.tile.sky b{color:#fff}
.cta{background:var(--cyan-solid)}
p a:not(.btn):not(.more):not(.ra):not(.chip),li a:not(.btn):not(.more),.notice a,.tiny-note a,.form-note a,.crumbs a,.cnote a,details p a{text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}
.feat-dot{position:relative;width:24px;height:24px;background:transparent}
.feat-dot::before{content:"";position:absolute;left:7px;top:7px;width:10px;height:10px;border-radius:999px;background:rgba(255,255,255,.35);transition:background .2s,width .2s,left .2s}
.feat-dot.is-active{width:34px;background:transparent}
.feat-dot.is-active::before{background:var(--gold);width:26px;left:4px}
.lead-card .role,.tcard .role,.role{color:var(--cyan-text)!important}
.yes{color:#0f5c33!important}
.check a,.callout-box a,.lead-done a:not(.btn),.cmp a{text-decoration:underline;text-underline-offset:2px}
.no{color:#5d6b86!important}
.tile.sky small,.tile.sky span,.tile.sky p{color:#fff!important}
.tile.sky small,.tile.sky span{opacity:1!important}
/* dark mode keeps the light cyan for small text */
[data-theme="dark"]{--cyan-text:#6cc8ff}
[data-theme="dark"] .tile.sky,[data-theme="dark"] .cta{background:#0a5c92}
[data-theme="dark"] .no{color:#a9b6cf!important}
[data-theme="dark"] .yes{color:#6fe3a5!important}

/* ---- centred section headings, centred call-to-action bands, justified text everywhere it reads as prose ---- */
.section-head{display:block;text-align:center;max-width:860px;margin:0 auto 1.9rem}
.section-head>div{margin:0 auto}
.section-head .kicker{display:block;text-align:center}
.section-head>p{margin:.5rem auto 0}
@media(min-width:761px){
  main .section-head>p{text-align:center;text-justify:auto}
  main .lead,main .page-hero p,main .hero .lead,main .kc-banner p{text-align:justify;text-justify:inter-word}
  main .section-head+.grid,main .section-head+.pillars{margin-top:0}
}
.cta .container{justify-content:center;text-align:center}
.cta h2{flex:1 1 100%;text-align:center;margin-bottom:.4rem}
.reach{text-align:left}
.stats .tile,.contact-card,.lead-done,.empty-note{text-align:center}
.kicker{letter-spacing:.14em}
/* narrow card columns stay left-aligned: justified text there opens wide gaps */
@media(min-width:761px){
  .grid.g3 .card>p,.grid.g4 .card>p,.pillar>p,.kcard>p,.pcard .pbody>p,.card.dept>p,.card.aud>p,.card.insight>p,.step p,.reach p,.ptile{text-align:left!important}
}
/* announcement bar: links are 24px tall and the phone button is never covered by the scrolling text */
.ticker .tk{display:inline-flex;align-items:center;min-height:24px}
.tb-in{position:relative}
.ticker{position:relative;z-index:1;overflow:hidden;min-width:0}
.tb-call,.tb-clock{position:relative;z-index:2}
.tb-in .tb-call{background:var(--navy-900)}
.pillar li a,.dd-menu a,.foot-grid a,.foot-legal a,.foot-contact a,.lang-switch a{text-decoration:none}
.ptiles+p,.appgrid+p{text-align:center}
.stats:has(>.tile:nth-child(3):last-child){grid-template-columns:repeat(3,1fr);max-width:900px;margin-left:auto;margin-right:auto}
.stats:has(>.tile:nth-child(2):last-child){grid-template-columns:repeat(2,1fr);max-width:640px;margin-left:auto;margin-right:auto}
@media(max-width:700px){.stats:has(>.tile:nth-child(3):last-child),.stats:has(>.tile:nth-child(2):last-child){grid-template-columns:1fr}}
.toolbar-f input[type=search]{flex:1 1 280px;min-width:220px}

/* ---- phone action bar, back to top, language suggestion ---- */
.m-bar{display:none}
.to-top{position:fixed;right:1rem;bottom:5.2rem;z-index:80;width:44px;height:44px;border-radius:50%;border:0;background:var(--navy);color:#fff;font-size:1.3rem;cursor:pointer;box-shadow:var(--shadow-lg)}
.to-top[hidden]{display:none}
.to-top:hover{background:var(--navy-700)}
@media(max-width:760px){
  .m-bar{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:.5rem;position:fixed;left:0;right:0;bottom:0;z-index:90;padding:.5rem .6rem calc(.5rem + env(safe-area-inset-bottom));background:var(--card-bg);border-top:1px solid var(--line);box-shadow:0 -6px 18px rgba(6,48,122,.12)}
  .m-bar a{display:flex;align-items:center;justify-content:center;min-height:44px;border-radius:10px;border:1.5px solid var(--navy);color:var(--navy);font-weight:700;font-size:.92rem;text-decoration:none}
  .m-bar a.m-primary{background:var(--navy);color:#fff}
  body{padding-bottom:64px}
  .wa-float{display:none}
  .to-top{bottom:4.6rem;right:.8rem}
  .consent,.install{bottom:70px}
}
@media print{.m-bar,.to-top,.lang-suggest{display:none!important}}
.lang-suggest{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;justify-content:center;background:var(--gold-100);color:#5c4200;padding:.5rem 1rem;font-size:.92rem;text-align:center}
.lang-suggest .ls-x{background:none;border:0;color:#5c4200;text-decoration:underline;cursor:pointer;font:inherit;min-height:24px;padding:0 .4rem}

/* form messages must be visible (the base rule hides .msg until it has .show) */
.msg.err{display:block;padding:.8rem 1rem;border-radius:12px;background:#fdecec;border:1px solid #f1b5b5;color:#8f1d1d}
