/* Certifyi site chrome — header and footer.
   Scoped to .cfy-hdr / .cfy-ftr. Tokens are --cfy-* to avoid Astra/Elementor clashes.
   Stripe-style morphing mega-menu with glassmorphism. */

.cfy-hdr,.cfy-ftr{
  --cfy-primary:#123C20;
  --cfy-primary-hover:#1A5230;
  --cfy-hover:#F1F5F9;
  --cfy-ink:#1E293B;
  --cfy-ink-2:#475569;
  --cfy-ink-3:#64748B;
  --cfy-paper:#F8FAFC;
  --cfy-line:#E2E8F0;
  --cfy-line-strong:#CBD5E1;
  --cfy-f:Outfit,system-ui,-apple-system,"Segoe UI",sans-serif;
  --cfy-max:1200px;
  --cfy-gutter:clamp(1rem,.5rem + 2.5vw,2.5rem);
  --cfy-r:8px;
  --cfy-ease:cubic-bezier(.2,.7,.2,1);
  --cfy-d:200ms;
  font-family:var(--cfy-f);color:var(--cfy-ink);line-height:1.5;-webkit-font-smoothing:antialiased;
}
.cfy-hdr *,.cfy-ftr *{box-sizing:border-box}
.cfy-hdr ul,.cfy-ftr ul{list-style:none;margin:0;padding:0}
.cfy-hdr li,.cfy-ftr li{margin:0}
.cfy-hdr p,.cfy-ftr p{margin:0}
.cfy-hdr a,.cfy-ftr a{text-decoration:none;color:inherit;box-shadow:none}
.cfy-hdr img,.cfy-ftr img{display:block;max-width:100%}
.cfy-hdr :focus-visible,.cfy-ftr :focus-visible{outline:3px solid var(--cfy-primary);outline-offset:3px;border-radius:2px}
.cfy-ftr :focus-visible{outline-color:#fff}
.cfy-wrap{max-width:var(--cfy-max);margin:0 auto;padding:0 var(--cfy-gutter)}
.cfy-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.cfy-skip{position:absolute;left:-9999px;top:0;z-index:10000;background:#fff;padding:.75rem 1rem;color:var(--cfy-ink,#1E293B);font:600 1rem/1 var(--cfy-f,system-ui,sans-serif);text-decoration:none;border-radius:0 0 4px 0;box-shadow:0 2px 8px rgba(0,0,0,.12)}
.cfy-skip:focus{left:0;top:0}

/* Shared button */
.cfy-hdr .cfy-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.625rem 1.25rem;font:600 .9375rem/1 var(--cfy-f);color:#123C20;background:#fff;border-radius:var(--cfy-r);transition:background var(--cfy-d) var(--cfy-ease),box-shadow var(--cfy-d) var(--cfy-ease)}
.cfy-hdr .cfy-btn:hover{background:#E2E8F0;color:#123C20;box-shadow:0 4px 12px rgba(18,60,32,.3)}
.cfy-ftr .cfy-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.625rem 1.25rem;font:600 .9375rem/1 var(--cfy-f);color:var(--cfy-primary);background:#fff;border-radius:var(--cfy-r);transition:background var(--cfy-d) var(--cfy-ease),box-shadow var(--cfy-d) var(--cfy-ease)}
.cfy-ftr .cfy-btn:hover{background:#E2E8F0;color:var(--cfy-primary);box-shadow:none}
.cfy-hdr .cfy-nav-signin{font:500 .9375rem/1 var(--cfy-f);color:rgba(255,255,255,.8);padding:.75rem .5rem;border-radius:var(--cfy-r)}
.cfy-hdr .cfy-nav-signin:hover{color:#fff}
.cfy-ftr .cfy-nav-signin{font:500 .9375rem/1 var(--cfy-f);color:var(--cfy-ink);padding:.75rem .5rem;border-radius:var(--cfy-r)}
.cfy-ftr .cfy-nav-signin:hover{color:var(--cfy-primary)}

/* ---------- Header ---------- */
/* Solid navy: a backdrop blur here repainted the page under it on every scroll frame (audit 27 Oct, finding 1).
   The header is the top edge of a page-wide frame: a flat bar the width of the content column,
   with two hairline rails dropping from its edges down the viewport on every page. */
:root{--cfy-frame:min(1240px,calc(100% - 48px));--cfy-rail:rgba(100,116,139,.24)}
.cfy-hdr{position:fixed;top:0;left:50%;right:auto;transform:translateX(-50%);width:var(--cfy-frame);z-index:999;background:#123C20;border:1px solid var(--cfy-rail);border-top:0;border-radius:0;box-shadow:none;transition:box-shadow var(--cfy-d) var(--cfy-ease);overflow:visible}
.cfy-hdr::before,.cfy-hdr::after{content:"";position:absolute;top:100%;width:1px;height:100vh;background:var(--cfy-rail);pointer-events:none}
.cfy-hdr::before{left:-1px}
.cfy-hdr::after{right:-1px}
.cfy-hdr.cfy-scrolled{box-shadow:0 10px 30px -12px rgba(0,0,0,.35)}
.admin-bar .cfy-hdr{top:32px}
/* Elementor pages open on a light hero, so the strips either side of the framed header showed the white page
   behind it. A fixed band in the header's green, exactly the header's height, fills them. Templated pages and
   the homepage open on a dark hero that already fills that space, so they do not get it. */
body:not(.home):has(main .e-con.e-parent.cfy-hero)::before{content:"";position:fixed;top:0;left:0;right:0;height:var(--cfy-hdr-h,64px);background:#123C20;z-index:998;pointer-events:none}
body.admin-bar:not(.home):has(main .e-con.e-parent.cfy-hero)::before{top:32px}
@media (max-width:782px){body.admin-bar:not(.home):has(main .e-con.e-parent.cfy-hero)::before{top:46px}}
/* Every page's top-level sections start on a hairline, with a cross where it meets each rail.
   Custom templates render main#main > section; Elementor pages use top-level sections/containers. */
#main > * + section,
.elementor > :is(.elementor-top-section,.e-con.e-parent) + :is(.elementor-top-section,.e-con.e-parent){border-top:1px solid var(--cfy-rail);position:relative}
#main > * + section::before,
.elementor > :is(.elementor-top-section,.e-con.e-parent) + :is(.elementor-top-section,.e-con.e-parent)::before{content:"";position:absolute;left:50%;transform:translateX(-50%);width:calc(var(--cfy-frame) + 9px);height:9px;z-index:2;pointer-events:none;--cfy-x:rgba(203,213,225,.6);background:linear-gradient(var(--cfy-x),var(--cfy-x)) left 0 top 4px/9px 1px no-repeat,linear-gradient(var(--cfy-x),var(--cfy-x)) left 4px top 0/1px 9px no-repeat,linear-gradient(var(--cfy-x),var(--cfy-x)) right 0 top 4px/9px 1px no-repeat,linear-gradient(var(--cfy-x),var(--cfy-x)) right 4px top 0/1px 9px no-repeat;top:-5px}
#main > section:has(+ div){border-bottom:1px solid var(--cfy-rail);position:relative}
#main > section:has(+ div)::after{content:"";position:absolute;left:50%;transform:translateX(-50%);width:calc(var(--cfy-frame) + 9px);height:9px;z-index:2;pointer-events:none;--cfy-x:rgba(203,213,225,.6);background:linear-gradient(var(--cfy-x),var(--cfy-x)) left 0 top 4px/9px 1px no-repeat,linear-gradient(var(--cfy-x),var(--cfy-x)) left 4px top 0/1px 9px no-repeat,linear-gradient(var(--cfy-x),var(--cfy-x)) right 0 top 4px/9px 1px no-repeat,linear-gradient(var(--cfy-x),var(--cfy-x)) right 4px top 0/1px 9px no-repeat;bottom:-5px}

body:not(.elementor-editor-active){padding-top:0}
.admin-bar:not(.elementor-editor-active){padding-top:0}
.cfy-hdr .cfy-wrap{display:flex;align-items:center;gap:1.5rem;min-height:64px;position:relative;overflow:visible}
.cfy-brand img{height:32px;width:auto;filter:brightness(0) invert(1)}
.cfy-nav{margin-left:auto;display:flex;align-items:center;gap:.25rem}
.cfy-nav-list{display:flex;gap:0}
.cfy-nav-item{position:relative}
.cfy-hdr .cfy-nav-btn,.cfy-hdr button.cfy-nav-btn{display:flex;align-items:center;gap:.3rem;font:500 .9375rem/1 var(--cfy-f);color:rgba(255,255,255,.8);background:transparent;border:0;box-shadow:none;text-transform:none;letter-spacing:normal;padding:.5rem .65rem;border-radius:var(--cfy-r);cursor:pointer;min-height:40px;transition:color var(--cfy-d) var(--cfy-ease),background var(--cfy-d) var(--cfy-ease)}
.cfy-hdr .cfy-nav-btn:hover,.cfy-hdr .cfy-nav-btn:focus,.cfy-hdr .cfy-nav-btn[aria-expanded="true"]{color:#fff;background:rgba(255,255,255,.12)}
.cfy-nav-btn svg{transition:transform var(--cfy-d) var(--cfy-ease);opacity:.5}
.cfy-nav-btn[aria-expanded="true"] svg{transform:rotate(180deg);opacity:.7}

/* ---------- Morphing mega-menu container ---------- */
.cfy-morph{position:absolute;top:calc(100% + 4px);left:0;pointer-events:none;opacity:0;z-index:1000;transition:opacity 120ms var(--cfy-ease),transform 120ms var(--cfy-ease);transform:translateY(-4px)}
.cfy-morph.visible{pointer-events:auto;opacity:1;transform:translateY(0)}
.cfy-morph-bg{position:absolute;inset:0;background:#fff;border:1px solid var(--cfy-line);border-radius:var(--cfy-r);box-shadow:0 24px 48px -12px rgba(15,23,42,.10),0 8px 16px -8px rgba(15,23,42,.06),0 1px 3px rgba(15,23,42,.04);transition:width var(--cfy-d) var(--cfy-ease),height var(--cfy-d) var(--cfy-ease),left var(--cfy-d) var(--cfy-ease)}
.cfy-morph-inner{position:relative;overflow:hidden;border-radius:var(--cfy-r)}

/* Dropdown panels inside the morph container */
.cfy-menu{display:none;padding:1.25rem 1.5rem 1.5rem;grid-template-columns:repeat(3,minmax(0,1fr));gap:.25rem 2rem}
.cfy-menu.active{display:grid}
.cfy-menu-wide{width:min(820px,calc(100vw - 2rem));grid-template-columns:repeat(4,minmax(0,1fr))}
.cfy-menu-mid{width:min(620px,calc(100vw - 2rem))}
.cfy-menu-two{width:min(440px,calc(100vw - 2rem));grid-template-columns:repeat(2,minmax(0,1fr))}
.cfy-menu-narrow{width:240px;grid-template-columns:1fr}
/* Panels never extend below the viewport, so every link stays reachable at any zoom level. */
.cfy-morph .cfy-menu{max-height:calc(100vh - 7rem);max-height:calc(100dvh - 7rem);overflow-y:auto;overscroll-behavior:contain}

.cfy-menu-lead{grid-column:1/-1;display:block;padding:.25rem 0 .75rem;margin-bottom:.5rem;border-bottom:1px solid var(--cfy-line)}
.cfy-menu-lead strong{display:block;font-weight:600;font-size:.9375rem}
.cfy-menu-lead span{display:block;font-size:.8125rem;color:var(--cfy-ink-2);margin-top:.15rem}
.cfy-menu-lead:hover strong{color:var(--cfy-primary)}
.cfy-menu-h{font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--cfy-ink-3);padding:.6rem 0 .3rem}
.cfy-menu-col a{display:block;padding:.3rem 0;font-size:.875rem;color:var(--cfy-ink-2);transition:color 120ms ease}
.cfy-menu-col a:hover,.cfy-menu-col a:focus-visible{color:var(--cfy-primary)}
.cfy-menu :focus-visible{outline:2px solid var(--cfy-primary);outline-offset:2px}
.cfy-nav-cta{display:flex;align-items:center;gap:.5rem;margin-left:.75rem}
.cfy-hdr .cfy-burger,.cfy-hdr button.cfy-burger{display:none;margin-left:auto;align-items:center;justify-content:center;background:transparent;color:#fff;border:1px solid rgba(255,255,255,.25);border-radius:var(--cfy-r);min-height:44px;min-width:44px;padding:0;box-shadow:none;cursor:pointer}

/* Panel content crossfade */
.cfy-menu{opacity:0;transition:opacity 180ms cubic-bezier(.22,1,.36,1)}
.cfy-menu.active{opacity:1}
/* Columns arrive one after another: 180ms fade with a 6px rise, 30ms apart. */
.cfy-menu.active>*{animation:cfy-item 180ms cubic-bezier(.22,1,.36,1) both}
.cfy-menu.active>:nth-child(2){animation-delay:30ms}
.cfy-menu.active>:nth-child(3){animation-delay:60ms}
.cfy-menu.active>:nth-child(4){animation-delay:90ms}
.cfy-menu.active>:nth-child(5){animation-delay:120ms}
.cfy-menu.active>:nth-child(n+6){animation-delay:150ms}
@keyframes cfy-item{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* Entrance and exit for non-morphing fallback */
.cfy-menu.open{display:grid;animation:cfy-in var(--cfy-d) var(--cfy-ease)}
@keyframes cfy-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

/* ---------- FAQ accordions (chrome.js animates them) ---------- */
details.faq-item .faq-ans{overflow:hidden}
.faq-item.is-closing .faq-q svg{transform:none!important}
.cw-faq .faq-item.is-closing .faq-q::after{transform:translateY(-50%)!important}

/* ---------- Entrance motion on the templated pages (classes added by chrome.js) ---------- */
.cfy-rv{opacity:0;transform:translateY(24px);filter:blur(6px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1),filter .7s cubic-bezier(.22,1,.36,1);transition-delay:calc(var(--k,0) * 80ms)}
.cfy-rv.cfy-rv-in{opacity:1;transform:none;filter:none}

/* Pictures resolve from a soft, colour-shifted blur (chrome.js adds .cfy-prism below the first screen) */
.cfy-prism{opacity:0;filter:blur(14px) saturate(2.2) hue-rotate(-50deg) contrast(1.1);transform:scale(1.04);transition:opacity .9s cubic-bezier(.22,1,.36,1),filter 1.2s cubic-bezier(.22,1,.36,1),transform 1.2s cubic-bezier(.22,1,.36,1)}
.cfy-prism.cfy-prism-in{opacity:1;filter:none;transform:none}

/* ---------- Hover: labels roll, buttons lift, arrows nudge, cards rise ---------- */
.cfy-roll{display:inline-grid;overflow:hidden;vertical-align:top;padding:.08em 0;margin:-.08em 0}
.cfy-roll-in{grid-area:1/1;transition:transform .45s cubic-bezier(.22,1,.36,1)}
.cfy-roll-in+.cfy-roll-in{transform:translateY(110%)}
:is(a,button):hover .cfy-roll-in:first-child,:is(a,button):focus-visible .cfy-roll-in:first-child{transform:translateY(-110%)}
:is(a,button):hover .cfy-roll-in+.cfy-roll-in,:is(a,button):focus-visible .cfy-roll-in+.cfy-roll-in{transform:none}
:is(.cfy-btn,.cw-button,.cw-button-ghost,.btn,.elementor-button){transition:background-color .25s,color .25s,border-color .25s,box-shadow .25s,transform .25s cubic-bezier(.22,1,.36,1)}
:is(.cfy-btn,.cw-button,.cw-button-ghost,.btn,.elementor-button):hover{transform:translateY(-2px)}
:is(.cfy-btn,.cw-button,.cw-button-ghost,.btn,.elementor-button):active{transform:translateY(0) scale(.98);transition-duration:.08s}
:is(.arrow-link,.cw-post-all)::after{display:inline-block;transition:transform .3s cubic-bezier(.22,1,.36,1)}
.cw-post-all::after{content:"\2192";margin-left:.35rem}
:is(.arrow-link,.cw-post-all):hover::after{transform:translateX(4px)}
.cb-card{transition:opacity .7s cubic-bezier(.22,1,.36,1),filter .7s cubic-bezier(.22,1,.36,1),transform .45s cubic-bezier(.22,1,.36,1),box-shadow .35s,border-color .35s;transition-delay:calc(var(--k,0) * 80ms)}
.cb-card.cfy-rv-in:hover,.cb-card:not(.cfy-rv):hover{transition-delay:0s}
.cb-card:hover{transform:translateY(-4px)}
.cb-card .cb-art{overflow:hidden}
.cb-card .cb-art svg{transition:transform .8s cubic-bezier(.22,1,.36,1)}
.cb-card:hover .cb-art svg{transform:scale(1.04)}

/* ---------- Footer wordmark ---------- */
.cfy-foot-brand{display:flex;flex-direction:column;align-items:center;gap:16px;padding:clamp(2.5rem,1.5rem + 3vw,4.5rem) 0 1.75rem}
svg.cfy-foot-mark{display:block;width:100%;height:auto;color:#fff;opacity:.09;-webkit-mask-image:linear-gradient(#000 35%,transparent 105%);mask-image:linear-gradient(#000 35%,transparent 105%)}
.cfy-foot-bar{width:clamp(200px,40vw,520px);height:4px;border-radius:2px;background:linear-gradient(90deg,#123C20 0%,#368F4D 25%,#87C497 50%,#C5DCCB 70%,#368F4D 85%,#123C20 100%);background-size:200% 100%;opacity:0;transform:scaleX(0);transform-origin:center}
.cfy-foot-armed svg.cfy-foot-mark path{opacity:0;transform:translateY(8px)}
.cfy-foot-armed.cfy-foot-in svg.cfy-foot-mark path{animation:cfy-letter-in .5s var(--cfy-ease) forwards}
.cfy-foot-armed.cfy-foot-in svg.cfy-foot-mark path:nth-child(1){animation-delay:0ms}
.cfy-foot-armed.cfy-foot-in svg.cfy-foot-mark path:nth-child(2){animation-delay:45ms}
.cfy-foot-armed.cfy-foot-in svg.cfy-foot-mark path:nth-child(3){animation-delay:90ms}
.cfy-foot-armed.cfy-foot-in svg.cfy-foot-mark path:nth-child(4){animation-delay:135ms}
.cfy-foot-armed.cfy-foot-in svg.cfy-foot-mark path:nth-child(5){animation-delay:180ms}
.cfy-foot-armed.cfy-foot-in svg.cfy-foot-mark path:nth-child(6){animation-delay:225ms}
.cfy-foot-armed.cfy-foot-in svg.cfy-foot-mark path:nth-child(7){animation-delay:270ms}
.cfy-foot-armed.cfy-foot-in svg.cfy-foot-mark path:nth-child(8){animation-delay:315ms}
.cfy-foot-armed.cfy-foot-in svg.cfy-foot-mark path:nth-child(9){animation-delay:380ms}
@keyframes cfy-letter-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.cfy-foot-armed.cfy-foot-in .cfy-foot-bar{animation:cfy-bar-in .6s var(--cfy-ease) .45s forwards,cfy-bar-shimmer 3s ease-in-out .9s infinite}
@keyframes cfy-bar-in{to{opacity:1;transform:scaleX(1)}}
@keyframes cfy-bar-shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}

/* Header Footer Elementor ships its own scroll-to-top button. Its stylesheet is dropped on pages that
   do not use the plugin (certifyi-assets.php), which leaves its chevron SVG unsized at full page width
   above the footer. Astra's button below is the one the site uses, so the duplicate is hidden. */
.hfe-scroll-to-top-wrap,.hfe-scroll-to-top-button,#hfe-scroll-to-top{display:none!important}
/* Guard for any other widget printed after the page body (wp_footer): its icon may rely on a stylesheet
   the templated pages skip. Capped so it can never stretch across the page; Astra's button is 26px. */
body>:not(#page):not(main):not(.cfy-hdr):not(.cfy-ftr):not(script):not(style) svg{max-width:48px!important;max-height:48px!important}

/* Glossary terms linked from body text (certifyi-glossary.php): a quiet dotted underline, so they read as help
   rather than as calls to action, on templated pages and blog posts alike. */
a.cw-gloss{color:inherit;text-decoration:underline dotted;text-decoration-thickness:1px;text-underline-offset:.2em}
a.cw-gloss:hover{color:#123C20;text-decoration-style:solid}

/* ---------- Astra scroll-to-top: navy, matches the button system on every page type ---------- */
#ast-scroll-top,#ast-scroll-top.ast-scroll-top-icon{background:#123C20!important;color:#fff!important;border:0!important;border-radius:var(--cfy-r)!important;box-shadow:0 4px 12px rgba(18,60,32,.2)!important;width:44px;height:44px;right:24px!important;bottom:24px!important}
#ast-scroll-top:hover,#ast-scroll-top:focus-visible{background:#1A5230!important}
/* Templated views (certifyi-layout.php): Astra's content container must not cap the width or pad the sides,
   or heroes and bands stop short of the frame and leave a pale strip on each side. */
body.cfy-templated .site-content>.ast-container{max-width:none!important;width:100%!important;margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important}
#ast-scroll-top svg,#ast-scroll-top .ast-icon{fill:#fff;color:#fff}

/* ---------- Footer ----------
   Dark, inside the frame: link columns split by hairlines, a contact row, the wordmark at
   full frame width fading out, then the legal row. */
.cfy-ftr{--cfy-fl:rgba(255,255,255,.09);position:relative;background:#123C20;color:rgba(255,255,255,.7);border-top:1px solid var(--cfy-rail);padding:clamp(3.5rem,2.5rem + 3vw,5.5rem) 0 1.5rem;font-size:.9375rem;overflow:hidden}
/* Startup programmes Certifyi is part of, on the same hairline grid as the homepage integrations:
   single-colour white marks, crosses where the lines meet. */
.cfy-prog{padding-bottom:clamp(2.5rem,2rem + 2vw,3.5rem);margin-bottom:clamp(2.5rem,2rem + 2vw,3.5rem);border-bottom:1px solid var(--cfy-fl)}
.cfy-prog .cfy-ftr-h{margin:0 0 1.25rem}
.cfy-prog-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-top:1px solid var(--cfy-fl);border-left:1px solid var(--cfy-fl)}
.cfy-prog-cell{position:relative;min-width:0;height:104px;display:grid;place-items:center;padding:0 1rem;border-right:1px solid var(--cfy-fl);border-bottom:1px solid var(--cfy-fl);transition:background-color .3s var(--cfy-ease)}
.cfy-prog-cell:hover{background:rgba(255,255,255,.045)}
.cfy-prog-cell::after{content:"";position:absolute;right:-5px;bottom:-5px;width:9px;height:9px;z-index:1;pointer-events:none;background:linear-gradient(rgba(255,255,255,.4),rgba(255,255,255,.4)) center/1px 100% no-repeat,linear-gradient(rgba(255,255,255,.4),rgba(255,255,255,.4)) center/100% 1px no-repeat}
.cfy-prog-cell img{height:34px;width:auto;max-width:100%;object-fit:contain;opacity:.85;transition:opacity .3s var(--cfy-ease)}
.cfy-prog-cell:hover img,.cfy-prog-cell:hover .cfy-prog-pair{opacity:1;color:#fff}
.cfy-prog-cell img.cfy-prog-word{height:26px}
.cfy-prog-pair{display:flex;align-items:center;gap:.625rem;min-width:0;font:500 .9375rem/1.2 var(--cfy-f);color:rgba(255,255,255,.88);transition:color .3s var(--cfy-ease)}
.cfy-prog-pair small{display:block;font-size:.75rem;font-weight:400;color:rgba(255,255,255,.6);margin-top:.2rem}
.cfy-prog-cell img.cfy-prog-crest{height:44px}
.cfy-prog-stack{display:flex;flex-direction:column;align-items:center;gap:.5rem;min-width:0}
.cfy-prog-stack small{font:400 .75rem/1.2 var(--cfy-f);color:rgba(255,255,255,.7);white-space:nowrap}
.cfy-prog-cell img.cfy-prog-cf{height:28px}
.cfy-prog-cell img.cfy-prog-an{height:15px}
.cfy-ftr-grid{display:grid;grid-template-columns:2fr 1.2fr 1fr 1.6fr 1fr}
.cfy-ftr-grid > nav{min-width:0;padding:0 1.5rem;border-left:1px solid var(--cfy-fl)}
.cfy-ftr-grid > nav:first-child{padding-left:0;border-left:0}
.cfy-ftr-wide ul{columns:2;column-gap:1.5rem}
.cfy-ftr-h{font-size:.8125rem;font-weight:500;color:rgba(255,255,255,.62);margin-bottom:1rem}
.cfy-ftr-h a{display:inline-block;padding:.3rem 0}
.cfy-ftr-h a:hover{color:#fff}
.cfy-ftr li{break-inside:avoid}
.cfy-ftr li a{display:inline-block;padding:.3rem 0;color:rgba(255,255,255,.85);font-size:.875rem;transition:color 120ms ease}
.cfy-ftr li a:hover{color:#fff;text-decoration:underline;text-underline-offset:3px}
.cfy-ftr-top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;margin-top:clamp(3rem,2rem + 3vw,4.5rem);padding:1.5rem 0;border-top:1px solid var(--cfy-fl);border-bottom:1px solid var(--cfy-fl)}
.cfy-ftr-brand{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}
.cfy-ftr-brand img{height:28px;width:auto;filter:brightness(0) invert(1)}
.cfy-ftr-brand p{color:rgba(255,255,255,.6);font-size:.875rem;line-height:1.55}
.cfy-ftr-actions{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}
.cfy-ftr-mail{display:inline-block;padding:.5rem 0;color:rgba(255,255,255,.85);font-size:.875rem}
.cfy-ftr-mail:hover{color:#fff;text-decoration:underline;text-underline-offset:3px}
.cfy-ftr-offices{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 2.5rem;padding:1.25rem 0;border-bottom:1px solid var(--cfy-fl);font-size:.875rem;color:rgba(255,255,255,.72)}
.cfy-ftr-offices-h{font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.62)}
.cfy-ftr-offices address{font-style:normal;margin:0}
.cfy-ftr-base{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding-top:1.25rem;padding-right:56px;border-top:1px solid var(--cfy-fl);font-size:.8125rem;color:rgba(255,255,255,.62)}
.cfy-ftr-legal{display:flex;gap:1.25rem}
.cfy-ftr-legal a{display:inline-block;padding:.375rem 0}
.cfy-ftr-legal a:hover{color:#fff}

/* ---------- Responsive ---------- */
@media(max-width:1199px){
  :root{--cfy-frame:calc(100% - 24px)}
}
@media(max-width:1100px){
  .cfy-nav{display:none}
  .cfy-hdr .cfy-burger,.cfy-hdr button.cfy-burger{display:inline-flex}
  .cfy-morph{display:none!important}
  .cfy-nav.open{display:flex;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:var(--cfy-paper);border-bottom:1px solid var(--cfy-line);padding:.5rem var(--cfy-gutter) 1.25rem;max-height:calc(100dvh - 64px);overflow-y:auto;-webkit-overflow-scrolling:touch;box-shadow:0 18px 30px -24px rgba(15,23,42,.35)}
  .cfy-nav.open .cfy-nav-list{flex-direction:column}
  .cfy-hdr .cfy-nav.open .cfy-nav-btn{width:100%;justify-content:space-between;padding:1rem .25rem;border-bottom:1px solid var(--cfy-line);border-radius:0;color:var(--cfy-ink);font-weight:500}
  .cfy-hdr .cfy-nav.open .cfy-nav-btn:hover,.cfy-hdr .cfy-nav.open .cfy-nav-btn:focus,.cfy-hdr .cfy-nav.open .cfy-nav-btn[aria-expanded="true"]{color:var(--cfy-primary);background:transparent}
  .cfy-nav.open .cfy-nav-btn svg{opacity:.8}
  .cfy-nav.open{border-radius:0 0 4px 4px}
  .cfy-nav.open .cfy-menu{position:static;width:auto;box-shadow:none;border:0;padding:.25rem .25rem 1rem;grid-template-columns:1fr;animation:none}
  .cfy-nav.open .cfy-menu.active,.cfy-nav.open .cfy-menu.open{display:grid;grid-template-columns:1fr}
  .cfy-nav.open .cfy-menu-lead{border-bottom:0;padding-bottom:.25rem;margin:0}
  .cfy-nav-cta{flex-direction:column;align-items:stretch;gap:.5rem;margin:1rem 0 0}
  .cfy-nav-cta .cfy-nav-signin{text-align:center;border:1px solid var(--cfy-line-strong);min-height:48px;display:flex;align-items:center;justify-content:center}
  .cfy-nav-cta .cfy-btn{min-height:48px}
  .cfy-prog-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .cfy-ftr-grid{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:2.5rem}
  .cfy-ftr-wide{grid-column:span 2}
  .cfy-ftr-grid > nav:nth-child(3n){padding-left:0;border-left:0}
}
@media(max-width:640px){
  .cfy-ftr{padding-top:3rem}
  .cfy-prog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cfy-prog-cell{height:88px}
  .cfy-prog-pair{font-size:.8125rem}
  .cfy-ftr-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem 0}
  .cfy-ftr-wide{grid-column:1/-1}
  .cfy-ftr-grid > nav,.cfy-ftr-grid > nav:nth-child(3n){padding:0 0 0 1.25rem;border-left:1px solid var(--cfy-fl)}
  .cfy-ftr-grid > nav:first-child,.cfy-ftr-grid > nav:nth-child(2n){padding-left:0;border-left:0}
  .cfy-ftr-actions{width:100%}
  .cfy-ftr-actions .cfy-btn{flex:1}
}
@media(max-width:640px){
  .cfy-foot-brand{padding:16px 0 28px}
  .cfy-foot-bar{height:2px}
}
@media(prefers-reduced-motion:reduce){
  .cfy-hdr *,.cfy-ftr *{transition-duration:0ms!important;animation:none!important}
  .cfy-rv,.cfy-prism{opacity:1!important;transform:none!important;filter:none!important}
  :is(.cfy-btn,.cw-button,.cw-button-ghost,.btn,.elementor-button,.cb-card,.cb-card .cb-art svg){transform:none!important;transition:none!important}
  .cfy-morph-bg{transition:none!important}
  .cfy-foot-mark path{opacity:1!important;transform:none!important;transition:none!important}
  svg.cfy-foot-mark{opacity:.09!important}
  .cfy-foot-bar{opacity:.6!important;animation:none!important}
}

/* No previous/next article links under posts (certifyi-post.php also switches them off in Astra). */
.single-post .post-navigation{display:none!important}

/* ==========================================================================================================
   Refinement layer (28 Oct 2026): typography rhythm, where-am-I cues, hero entrance, trust line, contents
   lists. Uses the existing tokens; every motion here is off with reduced motion and never hides content
   without JavaScript.
   ========================================================================================================== */

/* Typography: headings break into balanced lines, paragraphs avoid one-word last lines, figures line up. */
:where(main) :where(h1,h2,h3){text-wrap:balance}
:where(main) :where(p,li,dd,figcaption){text-wrap:pretty}
:where(main) :where(table,.cw-roi-v,[class*="stat"]){font-variant-numeric:tabular-nums}
::selection{background:#C5DCCB;color:#0B1A10}
html{scroll-padding-top:calc(var(--cfy-hdr-h,64px) + 1.5rem)}
/* A visible focus ring wherever a page has not set its own (zero specificity, so existing rings win). */
:where(main) :where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid #123C20;outline-offset:3px}

/* Header: the section you are in */
.cfy-hdr .cfy-nav-btn.is-current{color:#fff}
.cfy-hdr .cfy-nav-btn.is-current::after{content:"";position:absolute;left:.75rem;right:.75rem;bottom:.3rem;height:2px;border-radius:1px;background:#9ED1AB}
.cfy-hdr .cfy-nav-btn{position:relative}
.cfy-menu a[aria-current="page"]{color:var(--cfy-primary);font-weight:600}
.cfy-menu a[aria-current="page"]::before{content:"";display:inline-block;width:6px;height:6px;margin-right:.45rem;border-radius:50%;background:#368F4D;vertical-align:.12em}
.cfy-ftr a[aria-current="page"]{color:var(--cfy-primary);font-weight:600}
@media (max-width:1100px){.cfy-hdr .cfy-nav-btn.is-current::after{display:none}}

/* Dark heroes on templated pages: a soft light from the top right gives the flat field some depth. */
.cw-fw-hero{background-image:radial-gradient(900px 520px at 88% -12%,rgba(158,209,171,.13),transparent 62%),radial-gradient(700px 420px at -6% 110%,rgba(54,143,77,.12),transparent 60%)}

/* Hero entrance: eyebrow, headline, lead, actions, then the side panel, 80ms apart. The class comes from a
   head script (certifyi-site-chrome.php), so nothing is shown and then hidden. */
@keyframes cfy-hero-in{from{opacity:0;transform:translateY(18px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
html.cfy-anim main.cw-page>:first-child :is(.cw-eyebrow,.cb-crumb,h1,.cw-lead,.cw-post-dek,.cw-cta-row,.cw-gloss-search,.cw-post-byline,.cw-glance,.cw-facts),
html.cfy-anim main.cw-page>:first-child+.cw-post-art,html.cfy-anim main.cw-post .cw-post-art{animation:cfy-hero-in .8s cubic-bezier(.22,1,.36,1) both}
html.cfy-anim main.cw-page>:first-child h1{animation-delay:80ms}
html.cfy-anim main.cw-page>:first-child :is(.cw-lead,.cw-post-dek){animation-delay:160ms}
html.cfy-anim main.cw-page>:first-child :is(.cw-cta-row,.cw-gloss-search,.cw-post-byline){animation-delay:240ms}
html.cfy-anim main.cw-page>:first-child :is(.cw-glance,.cw-facts){animation-delay:320ms}
html.cfy-anim main.cw-post .cw-post-art{animation-delay:320ms}

/* Trust line under the closing call to action (certifyi_trust_line()) */
.cfy-trust{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem 1.75rem;margin:2.5rem auto 0;padding:1.5rem 0 0;max-width:62rem;border-top:1px solid rgba(255,255,255,.14)}
#main .cfy-trust li{display:flex;align-items:center;gap:.5rem;margin:0;font-size:.875rem;line-height:1.4;color:rgba(255,255,255,.78)}
.cfy-trust svg{flex:none;color:#9ED1AB}
@media (max-width:640px){.cfy-trust{flex-direction:column;align-items:flex-start;width:max-content;max-width:100%;text-align:left}}

/* Contents lists: folded behind a button up to 1024px (chrome.js), sidebar with the current section above. */
.cw-toc-toggle{display:none}
.cw-toc.is-foldable .cw-toc-h{display:none}
.cw-toc.is-foldable .cw-toc-toggle{display:flex;align-items:center;gap:.75rem;width:100%;min-height:44px;padding:0;border:0;background:none;font:600 .8125rem/1.2 var(--cw-f,Outfit,sans-serif);letter-spacing:.08em;text-transform:uppercase;color:var(--cw-ink,#1E293B);cursor:pointer;text-align:left}
.cw-toc-toggle .cw-toc-count{margin-left:auto;font-weight:500;letter-spacing:0;text-transform:none;color:var(--cw-ink-3,#64748B)}
.cw-toc-toggle svg{flex:none;transition:transform .3s cubic-bezier(.22,1,.36,1)}
.cw-toc-toggle[aria-expanded="true"] svg{transform:rotate(180deg)}
.cw-toc.is-foldable ol{margin-top:.75rem}
.cw-toc.is-folded ol{display:none}
#main .cw-toc a[aria-current="true"]{color:var(--cw-ink,#1E293B);border-left-color:var(--cw-primary,#123C20);font-weight:500}

/* Tap targets: breadcrumb and card links at least 24px tall (WCAG 2.2 target size). */
#main.cw-post .cw-eyebrow a{display:inline-block;padding:.3rem 0}
.cb-card-title a{display:inline-block;padding:.15rem 0}

@media (prefers-reduced-motion:reduce){
  html.cfy-anim main.cw-page *{animation:none!important}
  .cw-toc-toggle svg{transition:none}
}
