:root{
  --navy:#081F63; --navy-deep:#04143F; --gold:#D79A17; --gold-bright:#F1BD3B; --red:#D10B15;
  --ink:#142033; --muted:#6E7786; --soft:#F4F6FA; --line:#E4E8F0; --white:#fff;
  --radius:2px; --shadow:0 18px 42px rgba(15,31,66,.10); --max:1180px;
}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;color:var(--ink);font-family:'Montserrat',Arial,sans-serif;background:#fff;font-size:15px;line-height:1.65} a{color:inherit;text-decoration:none} img{max-width:100%;display:block} .container{width:min(var(--max),calc(100% - 40px));margin:auto}.narrow{width:min(900px,calc(100% - 40px));margin:auto}.skip-link{position:absolute;left:-999px;top:10px;background:#fff;padding:10px;z-index:1000}.skip-link:focus{left:10px}
/* Consuloan-derived header grammar */
.ecosystem-bar{background:#f0f2f6;border-bottom:1px solid #e0e4eb;font-size:12.5px;color:#4d5768;padding:7px 0}.ecosystem-links{display:flex;gap:16px;align-items:center}.ecosystem-links strong{color:var(--navy);font-weight:800}.ecosystem-links a:hover{color:var(--red)}.ecosystem-meta{display:flex;gap:18px}.contact-header{background:#fff}.contact-head-inner{min-height:86px;display:flex;align-items:center;gap:22px}.brand-lockup{display:flex;align-items:center;gap:12px;min-width:305px}.brand-lockup img{width:66px;height:66px;object-fit:contain}.brand-lockup span{display:flex;flex-direction:column;line-height:1.2}.brand-lockup b{font-size:20px;color:var(--navy);letter-spacing:-.3px}.brand-lockup small{font-size:12px;color:var(--muted);font-weight:600;margin-top:4px}.contact-points{margin-left:auto;display:flex;align-items:center;gap:20px}.contact-points>a,.contact-static{display:flex;align-items:center;gap:9px;min-width:145px}.contact-points small{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.7px;color:#9098a6}.contact-points b{font-size:12.5px;color:var(--ink)}.contact-ico{width:33px;height:33px;border:1px solid #d9dee8;border-radius:50%;display:grid;place-items:center;color:var(--gold)}.ui-icon{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.header-cta{white-space:nowrap}.nav-toggle{display:none;background:none;border:0;padding:8px}.nav-toggle span{display:block;width:26px;height:2px;background:var(--navy);margin:5px}.primary-nav{background:var(--navy-deep);color:#fff;position:relative;z-index:50}.nav-inner{min-height:48px;display:flex;align-items:center;justify-content:space-between}.primary-nav ul{list-style:none;display:flex;padding:0;margin:0}.primary-nav li a{display:block;padding:16px 14px 15px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.55px;border-bottom:3px solid transparent}.primary-nav li a:hover,.primary-nav li a.active{background:rgba(255,255,255,.06);border-bottom-color:var(--gold)}.nav-tools a{display:grid;place-items:center;width:40px;height:40px}.nav-tools .ui-icon{width:16px;height:16px}
.btn{border:0;border-radius:1px;padding:12px 22px;font-size:12.5px;text-transform:uppercase;font-weight:800;letter-spacing:.45px;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:.2s ease}.btn-gold{background:var(--gold);color:#fff}.btn-gold:hover{background:var(--red);color:#fff;transform:translateY(-1px)}.btn-outline-light{border:1px solid rgba(255,255,255,.8);color:#fff;background:transparent}.btn-outline-light:hover{background:#fff;color:var(--navy)}
/* Hero */
.hero{min-height:515px;background-image:linear-gradient(90deg,rgba(2,18,58,.83) 0%,rgba(2,18,58,.58) 43%,rgba(2,18,58,.08) 75%),var(--hero);background-size:cover;background-position:center;position:relative;display:flex;align-items:center}.hero-compact{min-height:385px}.hero-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,20,63,.04),rgba(4,20,63,.08));pointer-events:none}.hero-inner{position:relative;z-index:2}.hero-copy{max-width:680px;color:#fff}.hero-copy .eyebrow{display:inline-block;font-size:12.5px;text-transform:uppercase;letter-spacing:1.8px;font-weight:800;color:var(--gold-bright);margin-bottom:10px}.hero-copy h1{font-size:clamp(36px,5.3vw,68px);line-height:1.02;letter-spacing:-2.4px;margin:0 0 18px;font-weight:800}.hero-compact .hero-copy h1{font-size:clamp(34px,4.4vw,56px)}.hero-copy h1 span{color:var(--gold-bright)}.hero-copy p{max-width:620px;font-size:16px;line-height:1.7;color:rgba(255,255,255,.92);margin-bottom:26px}.hero-actions{display:flex;gap:10px;flex-wrap:wrap}
.cta-strip{background:var(--navy-deep);color:#fff}.cta-strip-inner{min-height:74px;display:flex;align-items:center;justify-content:space-between;gap:20px}.cta-strip b{display:block;font-size:14.5px}.cta-strip span{font-size:12px;color:rgba(255,255,255,.72)}
/* Sections */
.section{padding:78px 0}.section-soft{background:var(--soft)}.section-title{text-align:center;max-width:760px;margin:0 auto 38px}.section-title>span{display:inline-block;color:var(--gold);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:1.5px;margin-bottom:8px}.section-title h2{font-size:32px;line-height:1.15;color:var(--navy);font-weight:800;letter-spacing:-.8px;margin:0 0 12px}.section-title h2:after{content:'';display:block;width:48px;height:3px;background:var(--gold);margin:13px auto 0}.section-title p{max-width:690px;margin:15px auto 0;color:var(--muted);font-size:14.5px}.section-title.light h2,.section-title.light p{color:#fff}.section-title.light h2:after{background:var(--gold-bright)}
.feature-trio{display:grid;grid-template-columns:repeat(3,1fr);max-width:940px;margin:0 auto;box-shadow:var(--shadow);background:#fff}.feature-card{padding:38px 32px;text-align:center;border-right:1px solid var(--line);min-height:250px;display:flex;flex-direction:column;align-items:center;justify-content:center}.feature-card:last-child{border-right:0}.feature-card.featured{background:linear-gradient(rgba(8,31,99,.95),rgba(4,20,63,.97)),url('/assets/images/media/photo-1454165804606-c3d57bc86b40-800.jpg') center/cover;color:#fff}.feature-card h3{font-size:15px;font-weight:800;margin:11px 0 9px;color:var(--navy)}.feature-card.featured h3{color:#fff}.feature-card p{font-size:12.5px;color:var(--muted);margin:0}.feature-card.featured p{color:rgba(255,255,255,.78)}.feature-icon{width:45px;height:45px;border:1px solid var(--gold);border-radius:50%;display:grid;place-items:center;color:var(--gold)}.feature-card a{font-size:12px;text-transform:uppercase;font-weight:800;color:var(--gold);display:inline-flex;align-items:center;gap:6px;margin-top:16px}.feature-card a .ui-icon{width:13px}
.impact-band{min-height:315px;position:relative;background:var(--band) center/cover fixed;color:#fff;display:flex;align-items:center}.impact-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(4,20,63,.96),rgba(8,31,99,.88))}.impact-content{position:relative;z-index:2;text-align:center;padding:58px 0}.impact-content h2{font-size:28px;font-weight:800;margin:0 0 6px}.impact-content>p{font-size:12.5px;color:rgba(255,255,255,.72);margin-bottom:34px}.band-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.band-item{display:flex;flex-direction:column;align-items:center;gap:5px}.band-item>span{width:42px;height:42px;border:1px solid rgba(255,255,255,.45);border-radius:50%;display:grid;place-items:center;color:var(--gold-bright)}.band-item strong{font-size:26px;line-height:1;font-weight:800;color:#fff;margin-top:5px}.band-item small{font-size:12px;color:rgba(255,255,255,.75);text-transform:uppercase;letter-spacing:.75px}
.service-grid{display:grid;gap:28px 34px}.service-grid.cols-3{grid-template-columns:repeat(3,1fr)}.service-grid.cols-4{grid-template-columns:repeat(4,1fr)}.service-item{display:flex;gap:14px;align-items:flex-start;padding:8px}.service-item .grid-link{display:flex;gap:14px;color:inherit}.service-icon{min-width:40px;height:40px;background:var(--gold);border-radius:50%;display:grid;place-items:center;color:#fff}.service-item h3{font-size:14.5px;font-weight:800;color:var(--navy);margin:2px 0 6px}.service-item p{font-size:13px;color:var(--muted);margin:0}.service-item:hover h3{color:var(--red)}
.content-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.content-card{background:#fff;border:1px solid var(--line);box-shadow:0 10px 28px rgba(18,37,76,.06);position:relative}.content-image{height:200px;background-size:cover;background-position:center;display:block;position:relative}.content-image:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent,rgba(4,20,63,.35))}.content-image span{position:absolute;bottom:12px;left:14px;background:var(--gold);color:#fff;padding:5px 9px;font-size:12px;text-transform:uppercase;font-weight:800;z-index:1}.content-body{padding:20px 20px 24px;min-height:175px;position:relative}.content-body h3{font-size:16px;color:var(--navy);font-weight:800;line-height:1.25;margin:0 0 10px}.content-body p{font-size:13px;color:var(--muted);margin:0 0 16px}.round-arrow{position:absolute;right:15px;bottom:14px;width:30px;height:30px;border-radius:50%;background:var(--navy);color:#fff;display:grid;place-items:center}.round-arrow .ui-icon{width:13px}
/* Forms */
.callback{position:relative;background:var(--cb) center/cover;color:#fff}.callback-shade{position:absolute;inset:0;background:rgba(4,20,63,.87)}.callback-inner{position:relative;z-index:2;padding:58px 0}.callback .section-title{margin-bottom:24px}.callback-form{display:grid;grid-template-columns:1.2fr 1.2fr 1fr auto;max-width:980px;margin:auto}.callback-form input,.full-form input,.full-form select,.full-form textarea,.search-form input{border:1px solid #dfe3ea;background:#fff;color:var(--ink);padding:13px 14px;font:inherit;font-size:12.5px;outline:none}.callback-form input{border-right:0}.callback-form .btn{min-width:135px}.form-status{font-size:12.5px;margin-top:8px;color:#fff;grid-column:1/-1}.full-form{display:grid;grid-template-columns:1fr 1fr;gap:18px;background:#fff;border:1px solid var(--line);padding:28px;box-shadow:var(--shadow)}.form-field{display:flex;flex-direction:column;gap:7px}.form-field label{font-size:12px;text-transform:uppercase;font-weight:800;color:var(--navy);letter-spacing:.55px}.form-field-full{grid-column:1/-1}.full-form textarea{resize:vertical}.full-form .form-status{color:var(--navy)}
.search-form{display:flex;box-shadow:var(--shadow)}.search-form input{flex:1}.search-demo-results{padding:20px 0;color:var(--muted);font-size:13.5px}
/* table, accordion, article */
.table-wrap{overflow-x:auto;border:1px solid var(--line);box-shadow:0 10px 28px rgba(18,37,76,.05)}.alfi-table{width:100%;border-collapse:collapse;background:#fff}.alfi-table th{background:var(--navy);color:#fff;text-align:left;padding:14px;font-size:12px;text-transform:uppercase;letter-spacing:.5px}.alfi-table td{padding:14px;border-bottom:1px solid var(--line);font-size:12.5px}.alfi-table tr:last-child td{border-bottom:0}.alfi-accordion .accordion-item{border:1px solid var(--line);border-radius:0!important;margin-bottom:8px}.alfi-accordion .accordion-button{font-size:13.5px;font-weight:700;color:var(--navy);box-shadow:none!important}.alfi-accordion .accordion-button:not(.collapsed){background:#fff8e8;color:var(--navy)}.alfi-accordion .accordion-body{font-size:12.5px;color:var(--muted)}
.article-layout{display:grid;grid-template-columns:minmax(0,760px) 260px;gap:60px;align-items:start}.article-body{font-size:15px;color:#394253;line-height:1.9}.article-body .lead{font-size:19px;color:var(--navy);font-weight:600;line-height:1.65}.article-body h2{font-size:25px;color:var(--navy);font-weight:800;margin:35px 0 10px}.article-body blockquote{border-left:4px solid var(--gold);margin:32px 0;padding:18px 24px;background:#fff8e8;color:var(--navy);font-size:19px;font-weight:700}.article-meta{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--gold);font-weight:800;margin-bottom:18px}.article-aside{position:sticky;top:20px}.aside-box{border-top:3px solid var(--gold);background:var(--soft);padding:18px;margin-bottom:18px;display:flex;flex-direction:column;gap:10px}.aside-box b{font-size:12.5px;text-transform:uppercase;color:var(--navy)}.aside-box a{font-size:12px;color:var(--muted)}.share-row{display:flex;gap:7px}.share-row button{width:30px;height:30px;border:0;border-radius:50%;background:var(--navy);color:#fff;font-weight:800}
/* Footer */
.partner-strip{background:#eef1f5;border-top:1px solid #e0e4e9}.partner-row{min-height:86px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;color:#8c94a0;font-weight:700;font-size:14px}.site-footer{background:var(--navy-deep);color:#fff;padding:50px 0 0}.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1.2fr 1fr;gap:45px}.footer-brand img{width:72px;height:72px;object-fit:contain;background:#fff;padding:4px}.footer-brand p{font-size:12px;color:rgba(255,255,255,.65);max-width:300px}.footer-tag{color:var(--gold-bright)!important;font-weight:700}.site-footer h3{font-size:12.5px;text-transform:uppercase;letter-spacing:.7px;color:#fff;margin:0 0 14px}.site-footer a,.site-footer span{display:block;font-size:12.5px;color:rgba(255,255,255,.63);margin:8px 0}.site-footer a:hover{color:var(--gold-bright)}.footer-bottom{border-top:1px solid rgba(255,255,255,.1);margin-top:35px;padding:16px 0;display:flex;justify-content:space-between;align-items:center}.footer-bottom span,.footer-bottom a{display:inline;margin:0}
/* Site personality remains within shared source-truth grammar */
.site-magazine .hero-copy h1{max-width:900px}.site-magazine .primary-nav{background:#050e29}.site-magazine .content-body h3{font-size:17px}.site-magazine .section-title h2{letter-spacing:-1px}.site-consultancy .hero{background-position:center 35%}.site-languages .hero{background-position:center 45%}
@media (max-width:1050px){.contact-points{display:none}.contact-head-inner{min-height:74px}.header-cta{margin-left:auto}.brand-lockup{min-width:auto}.content-grid{grid-template-columns:repeat(2,1fr)}.service-grid.cols-4{grid-template-columns:repeat(2,1fr)}.article-layout{grid-template-columns:1fr}.article-aside{position:static;display:grid;grid-template-columns:1fr 1fr}}
@media (max-width:820px){.ecosystem-meta{display:none}.ecosystem-links{overflow-x:auto;white-space:nowrap;width:100%;padding-bottom:2px}.nav-toggle{display:block}.header-cta{display:none}.primary-nav{display:none}.primary-nav.open{display:block}.nav-inner{align-items:flex-start;flex-direction:column}.primary-nav ul{width:100%;flex-direction:column;padding:7px 0}.primary-nav li a{padding:12px 4px;border-bottom:1px solid rgba(255,255,255,.07)}.nav-tools{display:none}.hero,.hero-compact{min-height:440px;background-image:linear-gradient(90deg,rgba(4,20,63,.88),rgba(4,20,63,.55)),var(--hero)}.hero-copy h1,.hero-compact .hero-copy h1{font-size:42px;letter-spacing:-1.5px}.cta-strip-inner{padding:14px 0;align-items:flex-start;flex-direction:column}.feature-trio{grid-template-columns:1fr}.feature-card{border-right:0;border-bottom:1px solid var(--line);min-height:210px}.band-grid{grid-template-columns:repeat(2,1fr);row-gap:30px}.service-grid.cols-3{grid-template-columns:repeat(2,1fr)}.callback-form{grid-template-columns:1fr}.callback-form input{border-right:1px solid #dfe3ea;border-bottom:0}.full-form{grid-template-columns:1fr}.form-field-full{grid-column:auto}.footer-grid{grid-template-columns:1fr 1fr}.section{padding:58px 0}}
@media (max-width:560px){.container,.narrow{width:min(100% - 28px,var(--max))}.brand-lockup img{width:54px;height:54px}.brand-lockup b{font-size:17px}.brand-lockup small{font-size:12px}.hero,.hero-compact{min-height:500px;align-items:flex-end;padding-bottom:50px}.hero-copy h1,.hero-compact .hero-copy h1{font-size:37px}.hero-copy p{font-size:14.5px}.hero-actions .btn{width:100%}.section-title h2{font-size:27px}.content-grid,.service-grid.cols-3,.service-grid.cols-4{grid-template-columns:1fr}.content-image{height:220px}.band-grid{grid-template-columns:1fr 1fr}.band-item strong{font-size:20px}.impact-band{background-attachment:scroll}.footer-grid{grid-template-columns:1fr}.footer-bottom{align-items:flex-start;gap:10px;flex-direction:column}.partner-row{justify-content:center;padding:20px 0}.article-aside{grid-template-columns:1fr}.ecosystem-links a{font-size:12px}.ecosystem-links{gap:11px}}


/* ===== 2026-09 Magazine editorial upgrade + language service detail system ===== */
/* Mobile menu must occupy the far-right edge of the header row. */
@media (max-width:820px){
  .contact-head-inner{width:100%;}
  .nav-toggle{margin-left:auto;flex:0 0 auto;}
  .brand-lockup{max-width:calc(100% - 58px);}
}

/* Magazine: article-grid hero rather than a generic corporate hero */
.magazine-mast{padding:46px 0 24px;background:#fff;border-bottom:1px solid var(--line)}
.magazine-mast .eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:1.2px;color:var(--gold);font-weight:800}
.magazine-mast h1{font-size:45px;line-height:1.05;letter-spacing:-2px;color:var(--navy);font-weight:800;max-width:900px;margin:9px 0 8px}
.magazine-mast p{font-size:13.5px;color:var(--muted);max-width:720px;margin:0}
.mag-hero-grid{display:grid;grid-template-columns:1.35fr .8fr .8fr;grid-template-rows:245px 245px;gap:16px;padding:28px 0 34px}
.mag-hero-story{position:relative;overflow:hidden;min-height:245px;background:#13203a;border:1px solid var(--line)}
.mag-hero-story.lead{grid-row:1/3;grid-column:1/2}
.mag-hero-story.wide{grid-column:2/4}
.mag-hero-story img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.mag-hero-story:hover img{transform:scale(1.025)}
.mag-hero-story:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,20,63,.02) 20%,rgba(4,20,63,.86) 100%)}
.mag-story-panel{position:absolute;left:18px;right:18px;bottom:17px;z-index:2;color:#fff}
.mag-story-panel .story-kicker{display:inline-block;background:var(--gold);padding:5px 8px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px}
.mag-story-panel h2,.mag-story-panel h3{margin:0;color:#fff;font-weight:800;line-height:1.17;letter-spacing:-.55px}
.mag-story-panel h2{font-size:28px;max-width:600px}.mag-story-panel h3{font-size:17px;max-width:480px}
.mag-story-panel small{display:block;margin-top:9px;color:rgba(255,255,255,.72);font-size:12px}
.mag-category-pills{display:flex;gap:9px;overflow-x:auto;padding:0 0 28px;scrollbar-width:none}.mag-category-pills::-webkit-scrollbar{display:none}
.mag-category-pills a{white-space:nowrap;border:1px solid var(--line);background:#fff;padding:8px 13px;font-size:12px;font-weight:700;color:var(--navy)}
.mag-category-pills a:hover{border-color:var(--gold);color:var(--red)}

/* Real magazine body structure: editorial stream + slim sidebar */
.magazine-body-section{background:#f6f7f9;padding:58px 0}
.magazine-shell{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:34px;align-items:start}
.mag-main{min-width:0}.mag-sidebar{position:sticky;top:18px;display:flex;flex-direction:column;gap:16px}
.mag-section-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:18px;padding-bottom:12px;border-bottom:2px solid var(--navy)}
.mag-section-head h2{margin:0;font-size:24px;color:var(--navy);font-weight:800;letter-spacing:-.8px}.mag-section-head span{font-size:12px;text-transform:uppercase;color:var(--gold);font-weight:800;letter-spacing:.8px}.mag-section-head a{font-size:12px;text-transform:uppercase;color:var(--navy);font-weight:800}
.mag-latest-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:16px;margin-bottom:34px}
.mag-feature-card,.mag-small-card,.mag-rec-card{background:#fff;border:1px solid var(--line);box-shadow:0 8px 22px rgba(18,37,76,.045)}
.mag-feature-card img{width:100%;height:310px;object-fit:cover}.mag-card-copy{padding:18px}.mag-card-copy .story-kicker{color:var(--gold);font-size:12px;text-transform:uppercase;font-weight:800}.mag-card-copy h3{font-size:20px;color:var(--navy);font-weight:800;line-height:1.22;margin:7px 0 9px}.mag-card-copy p{font-size:13px;color:var(--muted);margin:0}.mag-card-meta{font-size:12px;color:#98a0ad;margin-top:12px}
.mag-small-stack{display:grid;gap:14px}.mag-small-card{display:grid;grid-template-columns:112px 1fr;min-height:115px}.mag-small-card img{width:112px;height:100%;object-fit:cover}.mag-small-card .mag-card-copy{padding:12px}.mag-small-card .mag-card-copy h3{font-size:13.5px;margin:4px 0 5px}.mag-small-card .mag-card-copy p{display:none}
.mag-category-block{margin:0 0 38px}.mag-category-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.mag-rec-card img{height:150px;width:100%;object-fit:cover}.mag-rec-card .mag-card-copy{padding:14px}.mag-rec-card .mag-card-copy h3{font-size:14.5px;margin:5px 0 6px}
.sidebar-box{background:#fff;border:1px solid var(--line);padding:17px;box-shadow:0 8px 22px rgba(18,37,76,.04)}
.sidebar-box h3{font-size:12.5px;text-transform:uppercase;letter-spacing:.7px;color:var(--navy);font-weight:800;margin:0 0 13px;padding-bottom:10px;border-bottom:2px solid var(--gold)}
.top-story{display:grid;grid-template-columns:26px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.top-story:last-child{border-bottom:0}.top-story strong{font-size:18px;color:var(--gold);line-height:1}.top-story a{font-size:12px;line-height:1.35;font-weight:700;color:var(--navy)}.top-story small{display:block;font-size:12px;color:#929aa7;margin-top:4px}
.sidebar-categories{display:grid;gap:5px}.sidebar-categories a{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:12.5px;color:#596375}.sidebar-categories a:last-child{border-bottom:0}.sidebar-categories b{color:var(--navy)}
.sidebar-cta{background:var(--navy-deep);color:#fff;border-top:4px solid var(--gold);padding:20px}.sidebar-cta .eyebrow{font-size:12px;color:var(--gold-bright);text-transform:uppercase;font-weight:800}.sidebar-cta h3{font-size:19px;color:#fff;margin:8px 0 7px;line-height:1.15}.sidebar-cta p{font-size:12.5px;color:rgba(255,255,255,.68);margin-bottom:14px}.sidebar-cta .btn{width:100%;padding:10px}
.recommended-section{padding:55px 0;background:#fff}.recommended-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}

/* Category archive pages */
.category-banner{background:var(--navy-deep);color:#fff;padding:44px 0;border-bottom:5px solid var(--gold)}.category-banner .eyebrow{color:var(--gold-bright);font-size:12px;text-transform:uppercase;letter-spacing:1px;font-weight:800}.category-banner h1{font-size:40px;margin:6px 0 4px;font-weight:800;letter-spacing:-1.3px}.category-banner p{font-size:12.5px;color:rgba(255,255,255,.67);max-width:670px;margin:0}.archive-list{display:grid;gap:15px}.archive-story{display:grid;grid-template-columns:220px 1fr;background:#fff;border:1px solid var(--line)}.archive-story img{width:220px;height:155px;object-fit:cover}.archive-story .mag-card-copy{padding:16px}.archive-story .mag-card-copy h3{font-size:17px}

/* Service hub links and standalone detail pages */
.service-detail-link{display:flex;gap:14px;align-items:flex-start;width:100%;color:inherit}.service-detail-link:hover h3{color:var(--red)}
.service-detail-link .service-icon{flex:0 0 40px}
.service-quote-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.service-note{background:#fff8e8;border-left:4px solid var(--gold);padding:18px 20px;font-size:12.5px;color:#5f6674}.related-services{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.related-service{border:1px solid var(--line);background:#fff;padding:18px;transition:.2s ease}.related-service:hover{transform:translateY(-2px);border-color:var(--gold)}.related-service small{font-size:12px;color:var(--gold);font-weight:800;text-transform:uppercase}.related-service h3{font-size:14px;color:var(--navy);margin:6px 0 5px}.related-service p{font-size:12.5px;color:var(--muted);margin:0}

@media(max-width:1050px){
 .magazine-shell{grid-template-columns:1fr}.mag-sidebar{position:static;display:grid;grid-template-columns:1fr 1fr 1fr}.recommended-grid{grid-template-columns:repeat(2,1fr)}
 .mag-hero-grid{grid-template-columns:1.2fr .8fr;grid-template-rows:260px 220px}.mag-hero-story.lead{grid-row:1/3}.mag-hero-story.wide{grid-column:2/3}
}
@media(max-width:820px){
 .magazine-mast{padding:34px 0 16px}.magazine-mast h1{font-size:36px}.mag-hero-grid{grid-template-columns:1fr 1fr;grid-template-rows:350px 220px}.mag-hero-story.lead{grid-column:1/3;grid-row:1}.mag-hero-story.wide{grid-column:auto}.mag-story-panel h2{font-size:24px}
 .mag-latest-grid{grid-template-columns:1fr}.mag-small-stack{grid-template-columns:1fr 1fr}.mag-category-grid{grid-template-columns:repeat(2,1fr)}.mag-sidebar{grid-template-columns:1fr 1fr}.sidebar-cta{grid-column:1/-1}.archive-story{grid-template-columns:180px 1fr}.archive-story img{width:180px}.related-services{grid-template-columns:1fr 1fr}
}
@media(max-width:560px){
 .magazine-mast h1{font-size:31px;letter-spacing:-1px}.mag-hero-grid{display:flex;overflow-x:auto;gap:12px;padding:20px 0 25px;scroll-snap-type:x mandatory}.mag-hero-story,.mag-hero-story.lead,.mag-hero-story.wide{flex:0 0 86%;height:330px;min-height:330px;scroll-snap-align:start}.mag-story-panel h2,.mag-story-panel h3{font-size:20px}.mag-category-pills{padding-bottom:20px}
 .magazine-body-section{padding:42px 0}.mag-small-stack{grid-template-columns:1fr}.mag-small-card{grid-template-columns:105px 1fr}.mag-category-grid,.recommended-grid{grid-template-columns:1fr}.mag-sidebar{display:flex}.archive-story{grid-template-columns:1fr}.archive-story img{width:100%;height:210px}.related-services{grid-template-columns:1fr}.service-quote-grid{grid-template-columns:1fr}
}

/* ===== 2026-09 production QA pass: live form states, focus, print, motion ===== */

/* Form feedback is now real server feedback, so it needs real states. */
.form-status{font-size:12.5px;line-height:1.5;margin-top:10px;min-height:1em}
.form-status.is-pending{color:#6E7786}
.callback-form .form-status.is-pending{color:rgba(255,255,255,.8)}
.form-status.is-success{color:#12693f;font-weight:700}
.form-status.is-error{color:#B3121B;font-weight:700}
.callback-form .form-status.is-success{color:#BBF2D4}
.callback-form .form-status.is-error{color:#FFC9CC}
.form-status.is-success:before{content:'✓ ';font-weight:800}
.form-status.is-error:before{content:'! ';font-weight:800}
form button[type=submit]:disabled{opacity:.62;cursor:progress}

/* A light-background counterpart to .btn-outline-light */
.btn-outline-navy{border:1px solid var(--navy);color:var(--navy);background:transparent}
.btn-outline-navy:hover{background:var(--navy);color:#fff}

/* Visible keyboard focus everywhere (the base build had none). */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{
  outline:3px solid var(--gold);outline-offset:2px;border-radius:2px}
.primary-nav a:focus-visible,.btn-outline-light:focus-visible{outline-color:var(--gold-bright)}
.skip-link{border:1px solid var(--navy);color:var(--navy);font-weight:700}

/* Field focus so people can see where they are typing. */
.full-form input:focus,.full-form select:focus,.full-form textarea:focus,
.callback-form input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(215,154,23,.25)}
/* :placeholder-shown was the wrong hook - .full-form fields carry a <label>
   and no placeholder attribute, so :not(:placeholder-shown) matched from the
   start and every required field rendered in the error colour before anyone
   typed. :user-invalid only matches once the field has been interacted with. */
.full-form input:user-invalid,.full-form select:user-invalid,.full-form textarea:user-invalid{border-color:#D10B15}

/* The hamburger becomes a close icon while the menu is open. */
.nav-toggle.is-open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle.is-open span:nth-child(2){opacity:0}
.nav-toggle.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.nav-toggle span{transition:transform .2s ease,opacity .2s ease}

/* Search results rendered from the magazine API */
.search-results,.search-demo-results{margin-top:26px}
.search-results .mag-rec-card p,.search-demo-results .mag-rec-card p{font-size:13px}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
}

@media print{
  .ecosystem-bar,.primary-nav,.nav-toggle,.callback,.cta-strip,.site-footer,.partner-row,.hero-actions{display:none!important}
  body{font-size:12pt;color:#000}
  a[href^="http"]:after{content:" (" attr(href) ")";font-size:9pt;color:#444}
}

/* ===== Accessibility utility the markup already used but never defined ===== */
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* ===== Database-driven magazine components ===== */
.empty-editorial{background:#fff;border:1px solid var(--line);border-top:4px solid var(--gold);padding:38px 34px;text-align:center;box-shadow:0 8px 22px rgba(18,37,76,.045)}
.empty-editorial h3{font-size:20px;color:var(--navy);margin:0 0 10px;font-weight:800;letter-spacing:-.4px}
.empty-editorial p{font-size:14px;color:var(--muted);max-width:60ch;margin:0 auto 6px;line-height:1.7}
.empty-actions{margin-top:20px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

.mag-pager{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:28px;flex-wrap:wrap;font-size:13px;color:var(--muted)}

.mag-breadcrumb{font-size:12px;color:var(--muted);margin-bottom:10px;display:flex;gap:8px;flex-wrap:wrap}
.mag-breadcrumb a{color:var(--navy);font-weight:700}
.mag-breadcrumb a:hover{color:var(--red)}

.article-standfirst{font-size:17px;line-height:1.66;color:#42506a;max-width:68ch;margin:6px 0 14px}
.article-lead-image{margin:26px auto 0}
.article-lead-image img{width:100%;max-height:560px;object-fit:cover;border-radius:3px}
.article-body{font-size:16.5px;line-height:1.82;color:#22304a;max-width:70ch}
.article-body h2{font-size:25px;color:var(--navy);font-weight:800;letter-spacing:-.6px;margin:34px 0 12px}
.article-body h3{font-size:19px;color:var(--navy);font-weight:800;margin:26px 0 10px}
.article-body p{margin:0 0 18px}
.article-body ul{margin:0 0 18px;padding-left:22px}
.article-body li{margin-bottom:8px}

.article-share{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:34px;padding-top:22px;border-top:1px solid var(--line);font-size:13px}
.article-share span{font-weight:800;color:var(--navy);text-transform:uppercase;letter-spacing:.6px;font-size:12px}
.article-share a{border:1px solid var(--line);padding:8px 14px;color:var(--navy);font-weight:700}
.article-share a:hover{border-color:var(--gold);color:var(--red)}

.preview-bar{background:#2b2213;color:#ffd77a;text-align:center;padding:10px 16px;font-size:13px;font-weight:600}
.preview-bar a{color:#fff;text-decoration:underline}

.opportunity-row{grid-template-columns:190px 1fr}
.opportunity-meta{background:var(--navy-deep);color:#fff;padding:20px 18px;display:flex;flex-direction:column;justify-content:center;gap:6px}
.opportunity-type{font-size:12px;text-transform:uppercase;letter-spacing:.9px;color:var(--gold-bright);font-weight:800}
.opportunity-meta strong{font-size:16px;line-height:1.25}
.opportunity-meta small{font-size:12.5px;color:rgba(255,255,255,.7)}
.opportunity-meta small.closing-soon{color:#FFC9CC;font-weight:700}

.search-form{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.search-form input[type=search]{flex:1 1 280px;padding:14px 16px;border:1px solid #d5dbe6;border-radius:2px;font:inherit;font-size:15px;background:#fff}
.search-form input[type=search]:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(215,154,23,.25)}

@media(max-width:820px){
  .opportunity-row{grid-template-columns:1fr}
  .opportunity-meta{flex-direction:row;align-items:center;gap:14px;padding:12px 16px}
  .article-body{font-size:16px}
  .empty-editorial{padding:28px 20px}
}

/* ===== Magazine grids adapt to however much has actually been published ===== */
.mag-hero-grid.count-1{grid-template-columns:1fr;grid-template-rows:380px}
.mag-hero-grid.count-1 .mag-hero-story.lead{grid-row:auto;grid-column:auto}
.mag-hero-grid.count-1 .mag-story-panel h2{font-size:32px;max-width:760px}
.mag-hero-grid.count-2{grid-template-columns:1.25fr 1fr;grid-template-rows:330px}
.mag-hero-grid.count-2 .mag-hero-story.lead{grid-row:auto;grid-column:auto}
.mag-hero-grid.count-2 .mag-hero-story.wide{grid-column:auto}
.mag-hero-grid.count-3{grid-template-columns:1.35fr 1fr;grid-template-rows:220px 220px}
.mag-hero-grid.count-3 .mag-hero-story.lead{grid-row:1/3;grid-column:1/2}
.mag-hero-grid.count-3 .mag-hero-story.wide{grid-column:2/3}

.mag-latest-grid.count-1{grid-template-columns:1fr}
.mag-latest-grid.count-1 .mag-feature-card img{height:360px}

.mag-category-grid.count-1{grid-template-columns:minmax(0,560px)}
.mag-category-grid.count-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.mag-category-grid.count-1 .mag-rec-card img{height:240px}
.mag-category-grid.count-2 .mag-rec-card img{height:200px}

@media(max-width:820px){
  .mag-hero-grid.count-1,.mag-hero-grid.count-2,.mag-hero-grid.count-3{grid-template-columns:1fr;grid-template-rows:auto}
  .mag-hero-grid.count-2 .mag-hero-story,.mag-hero-grid.count-3 .mag-hero-story{grid-column:auto;grid-row:auto}
  .mag-category-grid.count-1,.mag-category-grid.count-2{grid-template-columns:1fr}
}

/* ===== Mobile QA pass: tap targets, overflow, skip link ===== */

/* The skip link used a negative offset, which can widen the scroll area.
   Clip it instead, and show it properly on focus. */
.skip-link{position:absolute;left:0;top:0;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;padding:0;margin:0}
.skip-link:focus{width:auto;height:auto;overflow:visible;clip:auto;clip-path:none;margin:0;padding:11px 18px;background:#fff;color:var(--navy);border:2px solid var(--gold);z-index:1000;border-radius:0 0 4px 0}

/* File inputs have an intrinsic width that pushed the form grid past the
   viewport on narrow screens. */
.form-field{min-width:0}
.full-form input,.full-form select,.full-form textarea,.callback-form input{max-width:100%;min-width:0}
input[type=file]{max-width:100%;font-size:13.5px}

@media (max-width:820px){
  /* WCAG 2.2 target size: these link lists were 15–21px tall on a phone. */
  .footer-grid a:not(.footer-brand a),
  .footer-grid li a,
  .footer-bottom a,
  .ecosystem-links a,
  .mag-section-head a,
  .partner-row a,
  .sidebar-categories a,
  .top-story a{display:inline-flex;align-items:center;min-height:34px}
  .footer-grid a:not(.footer-brand a),.footer-grid li a,.sidebar-categories a{width:100%}
  .footer-bottom span a{min-height:34px;padding:0 4px}
  .ecosystem-links{gap:6px}
  .ecosystem-links a{padding:0 6px}
}

/* Error page link cards */
.error-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:16px}
.error-link{display:block;background:#fff;border:1px solid var(--line);padding:24px;transition:.2s ease}
.error-link:hover{border-color:var(--gold);transform:translateY(-2px);box-shadow:var(--shadow)}
.error-link h3{color:var(--navy);margin:0 0 6px;font-size:17px;font-weight:800}
.error-link p{margin:0;color:var(--muted);font-size:13.5px}
.back-link{display:inline-flex;align-items:center;min-height:34px;font-weight:700;color:var(--navy)}
.back-link:hover{color:var(--red)}

/* Planned-issue marker on the magazine issues page */
.issue-badge{position:absolute;right:15px;bottom:14px;background:var(--navy);color:#fff;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;padding:5px 10px}

/* ===== 2026-09 responsive pass ==============================================
   The build had three hard breakpoints (1050 / 820 / 560) and hard-coded type
   sizes inside each one, so headings jumped between steps and the largest of
   them ran off a 320px screen. This block sits last in the file on purpose:
   every rule here is the same specificity as the one it replaces above, so
   source order lets it win.
   ========================================================================== */

/* --- Nothing may push the page sideways ---------------------------------- */
html{-webkit-text-size-adjust:100%}
h1,h2,h3,h4,h5,p,li,dt,dd,blockquote,figcaption,label,td,th{overflow-wrap:break-word}
img,svg,video,iframe{max-width:100%}

/* --- One continuous type ramp instead of three steps ---------------------- */
/* Each clamp reaches the original desktop size at ~1180px (the content max
   width) and bottoms out at a size that still fits a 320px screen. */
.hero-copy h1{font-size:clamp(33px,3.65vw + 21px,68px);letter-spacing:-.035em}
.hero-compact .hero-copy h1{font-size:clamp(30px,2.65vw + 22px,56px);letter-spacing:-.035em}
.hero-copy p{font-size:clamp(14.5px,.38vw + 13.1px,16px)}
.section-title h2{font-size:clamp(24px,.87vw + 21.7px,32px);letter-spacing:-.025em}
.impact-content h2{font-size:clamp(22px,.75vw + 19.2px,28px)}
.magazine-mast h1{font-size:clamp(28px,1.86vw + 23px,45px);letter-spacing:-.04em}
.category-banner h1{font-size:clamp(26px,1.55vw + 20.2px,40px);letter-spacing:-.03em}
.mag-story-panel h2{font-size:clamp(20px,1.1vw + 15.9px,28px)}
.mag-section-head h2{font-size:clamp(19px,.62vw + 16.7px,24px)}
.article-body{font-size:clamp(15.5px,.25vw + 14.6px,16.5px)}
.article-body h2{font-size:clamp(20px,.62vw + 17.7px,25px)}
.article-standfirst{font-size:clamp(15.5px,.4vw + 14px,17px)}

/* --- Section rhythm scales with the viewport too --------------------------
   Each ramp lands on the original desktop value at 1180px (--max), so nothing
   above the content width changes; only the squeeze below it is smoothed. */
.section{padding:clamp(42px,4.47vw + 25.2px,78px) 0}
.callback-inner{padding:clamp(38px,2.48vw + 28.7px,58px) 0}
.magazine-body-section{padding:clamp(38px,2.48vw + 28.7px,58px) 0}
.recommended-section{padding:clamp(36px,2.36vw + 27.1px,55px) 0}
.site-footer{padding:clamp(38px,1.49vw + 32.4px,50px) 0 0}

/* --- Primary nav: long menus must survive tablets and small laptops -------
   The magazine nav carries ten items and needed ~1016px in a container that
   is only 720px wide at 860px viewport, so it ran off the right edge from
   821px (where the hamburger stops) up to ~1100px. Tighten the items, and
   let them wrap rather than overflow when tightening is not enough. */
@media (min-width:821px) and (max-width:1100px){
  /* The ul wraps internally; .nav-inner must not, or .nav-tools drops to a
     row of its own below the menu. */
  .nav-inner{flex-wrap:nowrap;gap:0 8px;align-items:center}
  .nav-tools{display:flex;align-items:center;flex:0 0 auto}
  .primary-nav ul{flex-wrap:wrap;min-width:0}
  .primary-nav li a{padding:13px 9px 12px;font-size:11.5px;letter-spacing:.3px}
}

/* --- Parallax is janky on touch and unsupported on iOS -------------------- */
@media (max-width:1050px),(hover:none){
  .impact-band{background-attachment:scroll}
}

/* --- A landscape phone is ~375px tall; a 515px hero hides everything ------ */
@media (max-width:920px) and (max-height:520px) and (orientation:landscape){
  .hero,.hero-compact{min-height:0;padding:44px 0;align-items:center}
  .hero-copy h1{font-size:clamp(26px,2.6vw + 16px,40px)}
  .hero-copy p{margin-bottom:18px}
}

/* --- Phone-sized touch and input fixes ------------------------------------ */
@media (max-width:820px){
  /* Safari on iOS zooms the page when a focused field is under 16px. */
  .callback-form input,.full-form input,.full-form select,.full-form textarea,
  .search-form input,.search-form input[type=search],input[type=file]{font-size:16px}
  /* WCAG 2.2 target size for the buttons themselves, not just link lists. */
  .btn{min-height:46px;padding:13px 20px}
  .hero-actions{gap:12px}
  /* The ecosystem bar scrolls sideways by design - hide its scrollbar. */
  .ecosystem-links{scrollbar-width:none}
  .ecosystem-links::-webkit-scrollbar{display:none}
}

/* --- Wide tables scroll instead of squeezing ------------------------------
   .table-wrap already scrolls, but .alfi-table{width:100%} meant a four
   column table crushed itself into 347px rather than using that scroller.
   A per-cell minimum makes wide tables scroll and leaves narrow ones alone. */
@media (max-width:640px){
  .alfi-table th,.alfi-table td{min-width:132px;padding:12px}
  .table-wrap{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
}

/* --- Footer link lists -----------------------------------------------------
   The magazine footer marks its columns up as <ul>, which never got the reset
   the rest of the footer grammar assumes, so it rendered with browser bullets
   and a 32px indent while every other footer column sat flush left. */
.footer-grid ul{list-style:none;margin:0;padding:0}
.footer-grid li{margin:0}

/* --- Footer reads as two columns on a phone --------------------------------
   The 560px block above stacked all four groups into one very long column.
   Two columns halve that height. The brand blurb and the last group each span
   the full width - the brand because its paragraph needs the measure, the last
   group because three link columns in a two column grid would otherwise leave
   a dead cell; its own links run two-up instead. */
@media (max-width:560px){
  .footer-grid{grid-template-columns:1fr 1fr;gap:26px 20px}
  .footer-grid>:first-child,.footer-grid>:last-child{grid-column:1/-1}
  .footer-brand p{max-width:none}
  .footer-grid>:last-child{display:grid;grid-template-columns:1fr 1fr;column-gap:20px;align-content:start}
  .footer-grid>:last-child>h3,.footer-grid>:last-child>b,.footer-grid>:last-child>ul{grid-column:1/-1}
  .footer-grid>:last-child>ul{display:grid;grid-template-columns:1fr 1fr;column-gap:20px}
  .site-footer h3,.footer-grid b{margin:0 0 9px}
  /* Scoped to the column grid so .footer-bottom keeps its own inline rhythm. */
  .footer-grid a,.footer-grid span{font-size:12px;margin:5px 0}
}
/* The magazine footer heads its columns with <b>; make it a block so it takes
   the same spacing as the <h3> the other footers use. */
.footer-grid>div>b{display:block;margin:0 0 12px}
/* Non-link footer entries (e.g. "Accra, Ghana") share the link row rhythm. */
@media (max-width:820px){
  .footer-grid>div>span{display:inline-flex;align-items:center;min-height:34px}
}

/* --- Developer credit ------------------------------------------------------
   Sits in .footer-bottom beside the copyright. It is a credit, not navigation,
   so it stays quieter than the legal links until hovered. */
.footer-credit{color:rgba(255,255,255,.5)}
.footer-credit a{color:rgba(255,255,255,.78);font-weight:700}
.footer-credit a:hover{color:var(--gold-bright)}
.footer-bottom{gap:10px 24px;flex-wrap:wrap}
