/* Archivo Variable (SIL OFL 1.1), self-hosted. See /assets/fonts/OFL.txt */
@font-face{font-family:"Archivo";font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;
  src:url("../fonts/archivo-latin-wdth-normal.woff2") format("woff2-variations"),url("../fonts/archivo-latin-wdth-normal.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{
  --ink:#16232E; --ink-2:#22333F; --ink-line:#34495A; --ink-text:#C8D3DA;
  --paper:#F4F6F5; --panel:#E6EBEA; --rule:#C7D0CF; --text:#1D2A33; --muted:#52636E;
  --link:#2A64A8; --signal:#E8822A;
  --w-orange:#E8822A; --w-green:#3A9A5B; --w-blue:#3B78C4; --w-brown:#8A5A3B; --w-white:#F2F4F3;
  --font:"Archivo", "Helvetica Neue", Arial, sans-serif;
  --measure:64ch; --wrap:1180px; --gutter:clamp(1.25rem,4vw,2.5rem);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:6.5rem}
body{margin:0;background:var(--paper);color:var(--text);font-family:var(--font);font-size:1.0625rem;line-height:1.6;-webkit-font-smoothing:antialiased}
img,svg{max-width:100%;display:block}
a{color:var(--link)}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--signal);outline-offset:3px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}
.skip{position:absolute;left:-999px;top:0;background:var(--signal);color:var(--ink);padding:.6rem 1rem;z-index:10}
.skip:focus{left:1rem}
h1,h2,h3{font-stretch:75%;font-weight:750;line-height:1.05;margin:0;letter-spacing:-.005em}
h2{font-size:clamp(2rem,4.2vw,3.1rem)}
h3{font-size:1.5rem;font-stretch:85%}
p{margin:0 0 1rem;max-width:var(--measure)}

/* Header */
.site-head{position:sticky;top:0;z-index:5;background:var(--paper);border-bottom:1px solid var(--rule)}
.site-head .wrap{display:flex;align-items:center;gap:1.5rem;min-height:5.75rem;flex-wrap:wrap;padding-top:.4rem;padding-bottom:.4rem}
.brand{display:block;margin-right:auto;color:var(--ink);font-weight:800}
.brand img{height:76px;width:auto}
.nav{display:flex;gap:1.5rem;list-style:none;margin:0;padding:0}
.nav a{color:var(--ink-2);text-decoration:none;font-weight:600}
.nav a:hover{color:var(--link)}
.head-call{color:var(--ink);background:var(--signal);text-decoration:none;font-weight:700;padding:.45rem .9rem;border-radius:4px;white-space:nowrap}

/* Hero */
.hero{background:var(--ink);color:#fff;overflow:hidden}
.hero .wrap{padding-top:clamp(3.5rem,9vw,7rem);padding-bottom:2.5rem}
.hero h1{font-size:clamp(2.8rem,7.4vw,6rem);max-width:13ch;font-stretch:68%}
.hero .lede{color:var(--ink-text);font-size:clamp(1.1rem,1.6vw,1.3rem);margin:1.5rem 0 2rem;max-width:52ch}
.actions{display:flex;flex-wrap:wrap;gap:.9rem}
.btn{display:inline-block;font:inherit;font-weight:700;text-decoration:none;padding:.85rem 1.35rem;border-radius:4px;border:2px solid transparent;cursor:pointer}
.btn-primary{background:var(--signal);color:var(--ink)}
.btn-primary:hover{background:#F39446}
.btn-ghost{color:#fff;border-color:var(--ink-line)}
.btn-ghost:hover{border-color:var(--ink-text)}
.wires{width:100%;height:clamp(120px,17vw,210px);margin-top:1rem}
.wire-run{animation:run 1.6s cubic-bezier(.3,.7,.2,1) .2s both}
@keyframes run{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@media (prefers-reduced-motion:reduce){.wire-run{animation:none}html{scroll-behavior:auto}}

/* Sections */
section{padding:clamp(4rem,9vw,7rem) 0}
.intro{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(2rem,6vw,5rem);align-items:start}
.intro p{color:var(--muted)}
.intro-photo{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;border-radius:6px;margin-top:2rem}
.intro p.strong{color:var(--text);font-size:1.2rem}
.facts{list-style:none;margin:2rem 0 0;padding:0;border-top:1px solid var(--rule)}
.facts li{padding:1rem 0;border-bottom:1px solid var(--rule)}
.facts b{display:block;font-stretch:85%;font-size:1.15rem}

/* Services */
#services{background:var(--panel)}
.svc-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem 3rem;align-items:end;margin-bottom:3rem}
.svc-head p{color:var(--muted);margin:0;max-width:46ch}
.svc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;border-top:2px solid var(--ink)}
.svc{display:grid;grid-template-columns:14px 1fr;gap:1.25rem;padding:2rem 2rem 2.25rem 0;border-bottom:1px solid var(--rule)}
.svc:nth-child(odd){border-right:1px solid var(--rule)}
.svc:nth-child(even){padding-left:2rem}
.pair{display:flex;gap:3px;align-self:stretch}
.pair i{flex:1;border-radius:2px}
.pair i:first-child{background:repeating-linear-gradient(180deg,var(--c) 0 10px,var(--w-white) 10px 18px);box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.pair i:last-child{background:var(--c)}
.pair.blue{--c:var(--w-blue)}.pair.orange{--c:var(--w-orange)}.pair.green{--c:var(--w-green)}.pair.brown{--c:var(--w-brown)}
.svc p{color:var(--muted);margin:.75rem 0 1rem}
.svc ul{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:.4rem}
.svc li{font-size:.9rem;padding:.2rem .6rem;border:1px solid var(--rule);border-radius:3px;background:var(--paper)}
.svc .with-icons li{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .7rem .3rem .4rem}
.svc .with-icons img{width:26px;height:26px;object-fit:contain;flex:0 0 auto}

.steps{margin-top:4.5rem}
.steps h3{margin-bottom:1.5rem}
.steps ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.5rem;counter-reset:s}
.steps li{counter-increment:s;position:relative}
.steps li img{width:72px;height:72px;margin-bottom:1rem}
.steps li:not(:last-child)::after{content:"";position:absolute;top:36px;left:84px;right:calc(-1.5rem + 12px);border-top:2px solid var(--rule)}
.steps b{display:block;font-size:1.1rem}
.steps b::before{content:counter(s) ". ";color:var(--muted);font-weight:600}
.steps span{color:var(--muted);font-size:.95rem}

/* Partners */
.partners-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem 3rem;align-items:end;margin-bottom:3rem}
.partners-head p{color:var(--muted);margin:0;max-width:52ch}
.vendor-group + .vendor-group{margin-top:3rem}
.vendor-group h3{font-size:1.15rem;margin-bottom:.35rem}
.vendor-group > p{color:var(--muted);font-size:.95rem;margin-bottom:1rem}
/* Logo sliders: CSS only, no JS (CSP script-src 'none' stays intact) */
.marquee{overflow:hidden;padding:14px 0 18px;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.track{display:flex;width:max-content;list-style:none;margin:0;padding:0;animation:slide 36s linear infinite}
.marquee.ltr .track{animation-name:slide-ltr}
.marquee.rtl .track{animation-name:slide-rtl}
.marquee:hover .track{animation-play-state:paused}
.track li{flex:0 0 auto;width:200px;height:100px;margin-right:20px;display:flex;align-items:center;justify-content:center;padding:1.25rem 1.6rem;background:#fff;border:1px solid var(--rule);border-radius:8px;box-shadow:0 1px 2px rgba(22,35,46,.06),0 6px 16px -6px rgba(22,35,46,.18);position:relative;z-index:1}
.track img{max-height:44px;max-width:100%;width:auto;height:auto;object-fit:contain}
@keyframes slide-ltr{from{transform:translateX(-50%)}to{transform:translateX(0)}}
@keyframes slide-rtl{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){
  .marquee{-webkit-mask-image:none;mask-image:none}
  .track{animation:none;width:auto;flex-wrap:wrap;justify-content:center;row-gap:20px}
  .track .dup{display:none}
}
@media (max-width:700px){.track li{width:150px;height:84px;margin-right:14px;padding:1rem 1.2rem}}

/* Connect */
#connect{background:var(--ink);color:#fff}
#connect h2{margin-bottom:1rem}
.connect{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,4fr);gap:clamp(2rem,6vw,5rem)}
.connect .lede{color:var(--ink-text);margin-bottom:2rem}
form{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.field{display:flex;flex-direction:column;gap:.35rem}
.field.full{grid-column:1/-1}
label{font-weight:600;font-size:.95rem}
label small{font-weight:400;color:var(--ink-text)}
input,textarea{font:inherit;color:#fff;background:var(--ink-2);border:1px solid var(--ink-line);border-radius:4px;padding:.75rem .85rem}
input:hover,textarea:hover{border-color:#4D6476}
textarea{min-height:9rem;resize:vertical}
.hp{position:absolute;left:-9999px}
.form-note{grid-column:1/-1;color:var(--ink-text);font-size:.9rem;margin:0}
.details{border-left:1px solid var(--ink-line);padding-left:clamp(1.25rem,3vw,2.5rem)}
.details .phone{display:block;color:#fff;text-decoration:none;font-stretch:70%;font-weight:800;font-size:clamp(2rem,3.6vw,2.8rem);line-height:1.1;margin-bottom:1.75rem}
.details dl{margin:0}
.details dt{color:var(--ink-text);font-size:.9rem}
.details dd{margin:0 0 1.1rem;font-weight:600}
.details dd a{color:#fff}
.support{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--ink-line)}
.support p{color:var(--ink-text);font-size:.95rem;margin-bottom:.75rem}

/* Footer */
.site-foot{background:var(--ink);color:var(--ink-text);border-top:1px solid var(--ink-line);padding:2rem 0;font-size:.9rem}
.site-foot .wrap{display:flex;flex-wrap:wrap;gap:1rem 2rem;justify-content:space-between}
.site-foot a{color:var(--ink-text)}

@media (max-width:900px){
  .intro,.connect{grid-template-columns:1fr}
  .steps ol{grid-template-columns:repeat(2,minmax(0,1fr))}
  .steps li::after{display:none}
  .details{border-left:0;padding-left:0;border-top:1px solid var(--ink-line);padding-top:2rem}
}
@media (max-width:700px){
  .brand img{height:58px}
  .svc-grid{grid-template-columns:1fr}
  .svc:nth-child(n){padding:1.75rem 0;border-right:0}
  form{grid-template-columns:1fr}
  .site-nav{order:3;width:100%;padding-bottom:.75rem}
  .nav{justify-content:space-between}
  .head-call{font-size:.9rem}
}
@media (max-width:420px){.steps ol{grid-template-columns:1fr}}

/* 404 / thanks / error pages: centred */
.notfound{min-height:70vh;display:flex;align-items:center;justify-content:center;text-align:center}
.notfound .wrap{display:flex;flex-direction:column;align-items:center}
.notfound h1{font-size:clamp(2.6rem,6vw,4.5rem);font-stretch:68%;margin-bottom:1rem;max-width:18ch}
.notfound p{color:var(--muted);margin:0 auto 2rem;max-width:52ch}

/* phone numbers never break across lines */
a[href^="tel:"]{white-space:nowrap}

/* contact form security question */
.captcha-row{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap}
.captcha-img{border-radius:4px;border:1px solid var(--ink-line);background:var(--paper)}
.captcha-row input{width:6.5rem;font-size:1.15rem;text-align:center}
.captcha-help{color:var(--ink-text);font-size:.85rem}

/* nav: 6 items, scroll on small screens */
@media (max-width:700px){.nav{overflow-x:auto;gap:1.1rem;justify-content:flex-start;white-space:nowrap;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}}

/* contact icons */
.icon-link{display:inline-flex;align-items:center;gap:.55rem}
.icon-link img{width:24px;height:24px;flex:0 0 auto}

/* partners now on the grey panel (sections alternate) */
#partners{background:var(--panel)}

/* ---------- Threat watch (live KEV dashboard, v6: compact + expandable, no JS) ---------- */
#threats{background:var(--ink);color:#fff}
#threats a{color:#9CC4F2}
.threats-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem 3rem;align-items:end;margin-bottom:1.75rem}
.threats-head p{color:var(--ink-text);margin:0;max-width:56ch}
#threats h3{font-size:1.05rem;font-stretch:85%;margin:0 0 .8rem}

/* stat chips */
.kev-stats{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1.75rem}
.kev-stat{display:flex;align-items:baseline;gap:.5rem;padding:.55rem .9rem;border:1px solid var(--ink-line);border-radius:999px;background:var(--ink-2);cursor:help}
.kev-stat b{font-stretch:70%;font-weight:800;font-size:1.45rem;line-height:1}
.kev-stat span{color:var(--ink-text);font-size:.85rem}
.kev-stat.hot b{color:var(--signal)}
.kev-stat.ransom b{color:#F07A6A}

.kev-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(1rem,2.5vw,1.75rem);align-items:stretch}

/* compact rows */
.kev-list,.world-list{border:1px solid var(--ink-line);border-radius:8px;overflow:hidden}
.kev-row + .kev-row{border-top:1px solid var(--ink-line)}
.kev-row summary{display:grid;grid-template-columns:6px minmax(0,1fr) auto auto;align-items:center;gap:.4rem .8rem;padding:.6rem .9rem .6rem .7rem;cursor:pointer;list-style:none}
.kev-row summary::-webkit-details-marker{display:none}
.kev-row summary::after{content:"";width:.5rem;height:.5rem;border-right:2px solid var(--ink-text);border-bottom:2px solid var(--ink-text);transform:rotate(-45deg);transition:transform .15s;grid-column:4;grid-row:1}
.kev-row[open] summary::after{transform:rotate(45deg)}
.kev-row summary:hover,.kev-row summary:focus-visible{background:var(--ink-2)}
.kev-row summary:focus-visible{outline:2px solid var(--signal);outline-offset:-2px}
.kev-row[open]{background:var(--ink-2)}
.mark{align-self:stretch;border-radius:3px;min-height:2.1rem}
.r-main{display:flex;flex-direction:column;min-width:0}
.r-top{display:flex;gap:.6rem;align-items:baseline;min-width:0}
.r-cve{font-size:.92rem;white-space:nowrap}
.r-vp{color:var(--ink-text);font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.r-name{font-size:.82rem;color:var(--ink-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-height:1.4em;transition:max-height .2s}
.kev-row summary:hover .r-name,.kev-row summary:focus-visible .r-name,.kev-row[open] .r-name{white-space:normal;max-height:4.5em;color:#fff}
.r-flags{display:flex;gap:.3rem;flex-wrap:wrap;justify-content:flex-end}
.r-age{color:var(--ink-text);font-size:.78rem;white-space:nowrap;grid-column:3;grid-row:1;justify-self:end;display:none}
.chip{font-size:.72rem;font-weight:700;padding:.1rem .45rem;border-radius:3px;white-space:nowrap}
.chip-ransom{background:#5A2622;color:#FFD3CC}
.chip-new{background:#5A3A16;color:#FFD9B0}
.chip-due{background:#2C3E4C;color:#D6E3EC}
.r-body{padding:.2rem 1rem 1rem 1.6rem;font-size:.9rem}
.r-body p{color:#DCE5EB;margin:.4rem 0 .7rem;max-width:72ch}
.r-facts{display:flex;flex-wrap:wrap;gap:.4rem 1.6rem;margin:0 0 .7rem}
.r-facts dt{color:var(--ink-text);font-size:.75rem}
.r-facts dd{margin:0;font-weight:600}
.r-action{font-size:.85rem}
.r-links{display:flex;flex-wrap:wrap;gap:.4rem 1rem;margin:0}
.r-links a{font-weight:600;font-size:.85rem}
.kev-hint{color:var(--ink-text);font-size:.8rem;margin:.6rem 0 0;max-width:none}

/* vendor drill-down */
.vendor-list{border-top:1px solid var(--ink-line)}
.vendor{border-bottom:1px solid var(--ink-line)}
.vendor summary{display:grid;grid-template-columns:8.5rem 1fr 2rem;align-items:center;gap:.6rem;padding:.42rem .2rem;cursor:pointer;list-style:none;font-size:.88rem}
.vendor summary::-webkit-details-marker{display:none}
.vendor summary:hover,.vendor summary:focus-visible,.vendor[open] summary{background:var(--ink-2)}
.vendor summary:focus-visible{outline:2px solid var(--signal);outline-offset:-2px}
.v-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v-n{font-weight:700;text-align:right}
.bar-track{height:8px;background:var(--ink-2);border-radius:4px;overflow:hidden}
.vendor summary:hover .bar-track,.vendor[open] .bar-track{background:var(--ink)}
.bar{display:block;height:100%;background:var(--signal);border-radius:4px}
.w0{width:0}.w5{width:5%}.w10{width:10%}.w15{width:15%}.w20{width:20%}.w25{width:25%}.w30{width:30%}.w35{width:35%}.w40{width:40%}.w45{width:45%}.w50{width:50%}
.w55{width:55%}.w60{width:60%}.w65{width:65%}.w70{width:70%}.w75{width:75%}.w80{width:80%}.w85{width:85%}.w90{width:90%}.w95{width:95%}.w100{width:100%}
.v-body{padding:.3rem .2rem .8rem;font-size:.84rem}
.v-body p{margin:0 0 .4rem}
.v-body ul{list-style:none;margin:0;padding:0}
.v-body li{padding:.25rem 0;display:flex;flex-wrap:wrap;gap:0 .5rem}
.v-body li span,.v-body time{color:var(--ink-text)}
#threats .muted{color:var(--ink-text)}

/* newest, all vendors */
.world{margin-top:1.5rem}
.world > summary{cursor:pointer;font-weight:700;font-stretch:85%;font-size:1.05rem;padding:.3rem 0;list-style:none}
.world > summary::-webkit-details-marker{display:none}
.world > summary::before{content:"+ ";color:var(--signal)}
.world[open] > summary::before{content:"\2212  "}
.world-list{margin-top:.6rem}
.world-list .r-flags{display:none}

#threats .feed-meta{color:var(--ink-text);font-size:.8rem;margin-top:1.5rem;max-width:none}
.threats-cta{margin:1.5rem 0 0;font-weight:600}
.feed-empty{color:var(--ink-text);padding:1.5rem 0}
@media (min-width:1100px){.r-age{display:block}.kev-row summary{grid-template-columns:6px minmax(0,1fr) auto 5.5rem 1rem}.kev-row summary::after{grid-column:5}.r-age{grid-column:4}}
@media (prefers-reduced-motion:reduce){.kev-row summary::after,.r-name{transition:none}}

/* ---------- Security news ---------- */
.news-wrap{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:clamp(2rem,6vw,5rem)}
.news-wrap > div > p{color:var(--muted)}
#news h2{margin-bottom:1.25rem}
.news-list{list-style:none;margin:0;padding:0;counter-reset:n;border-top:2px solid var(--ink)}
.news-list li{counter-increment:n;display:grid;grid-template-columns:2.2rem 1fr;gap:.2rem 0;padding:1rem 0;border-bottom:1px solid var(--rule)}
.news-list li::before{content:counter(n);grid-row:1/3;font-stretch:70%;font-weight:800;font-size:1.5rem;line-height:1.2;color:var(--rule)}
.news-list a{color:var(--text);font-weight:650;text-decoration:none;font-size:1.05rem;line-height:1.35}
.news-list a:hover{color:var(--link);text-decoration:underline}
.news-meta{color:var(--muted);font-size:.85rem}
#news .feed-meta{color:var(--muted);font-size:.85rem;margin-top:1rem}
#news .feed-empty{color:var(--muted)}

@media (max-width:900px){
  .kev-layout,.news-wrap{grid-template-columns:1fr}
}
@media (max-width:520px){
  .kev-row summary{grid-template-columns:5px minmax(0,1fr) 1rem}
  .kev-row summary::after{grid-column:3}
  .r-flags{grid-column:2;grid-row:2;justify-content:flex-start}
  .r-body{padding-left:1rem}
}

/* ===================== v7 ===================== */
/* Hero: text vertically centred, actions to the right */
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2rem 3rem}
.hero-text{display:flex;flex-direction:column;justify-content:center}
.hero-grid .lede{margin-bottom:0}
.hero-grid .actions{flex-direction:column;align-items:stretch;justify-self:end;min-width:16rem}
.hero-grid .actions .btn{text-align:center}
@media (max-width:900px){.hero-grid{grid-template-columns:1fr}.hero-grid .actions{justify-self:start;flex-direction:row;flex-wrap:wrap;min-width:0}}

/* About: image spans the full section height; card lifts on hover/focus */
.intro{align-items:stretch}
.intro-lead{display:flex;flex-direction:column}
.intro-photo{flex:1 1 auto;min-height:16rem;height:100%;aspect-ratio:auto}
.intro-card{border-radius:12px;padding:clamp(1rem,2.5vw,2rem);margin:calc(-1 * clamp(1rem,2.5vw,2rem));transition:transform .28s ease,box-shadow .28s ease,background-color .28s ease;outline:none}
.intro-card:hover,.intro-card:focus-visible,.intro-card:focus-within{background:#fff;transform:translateY(-4px);box-shadow:0 2px 4px rgba(22,35,46,.05),0 18px 40px -18px rgba(22,35,46,.35)}
.intro-card:focus-visible{box-shadow:0 0 0 3px var(--signal),0 18px 40px -18px rgba(22,35,46,.35)}
@media (max-width:900px){.intro-photo{height:auto;aspect-ratio:3/2;flex:none}}

/* Services: every icon takes its service colour (icons used as masks) */
.svc.blue{--c:var(--w-blue)}.svc.orange{--c:var(--w-orange)}.svc.green{--c:var(--w-green)}.svc.brown{--c:var(--w-brown)}
.svc .with-icons li{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .7rem .3rem .45rem}
.ic{display:inline-block;width:24px;height:24px;flex:0 0 auto;background-color:var(--c,var(--ink));
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}
.ic-aerial-buried-icon{-webkit-mask-image:url("../icons/aerial_buried_icon.png");mask-image:url("../icons/aerial_buried_icon.png")}
.ic-backup-design{-webkit-mask-image:url("../icons/backup_design.png");mask-image:url("../icons/backup_design.png")}
.ic-backup-offsite{-webkit-mask-image:url("../icons/backup_offsite.png");mask-image:url("../icons/backup_offsite.png")}
.ic-backup-recovery{-webkit-mask-image:url("../icons/backup_recovery.png");mask-image:url("../icons/backup_recovery.png")}
.ic-backup-restore{-webkit-mask-image:url("../icons/backup_restore.png");mask-image:url("../icons/backup_restore.png")}
.ic-cat6-icon-v2{-webkit-mask-image:url("../icons/cat6_icon_v2.png");mask-image:url("../icons/cat6_icon_v2.png")}
.ic-certification-icon{-webkit-mask-image:url("../icons/certification_icon.png");mask-image:url("../icons/certification_icon.png")}
.ic-cyber-assess{-webkit-mask-image:url("../icons/cyber_assess.png");mask-image:url("../icons/cyber_assess.png")}
.ic-cyber-endpoint{-webkit-mask-image:url("../icons/cyber_endpoint.png");mask-image:url("../icons/cyber_endpoint.png")}
.ic-cyber-firewall{-webkit-mask-image:url("../icons/cyber_firewall.png");mask-image:url("../icons/cyber_firewall.png")}
.ic-cyber-remote{-webkit-mask-image:url("../icons/cyber_remote.png");mask-image:url("../icons/cyber_remote.png")}
.ic-fibre-icon{-webkit-mask-image:url("../icons/fibre_icon.png");mask-image:url("../icons/fibre_icon.png")}
.ic-managed-monitoring{-webkit-mask-image:url("../icons/managed_monitoring.png");mask-image:url("../icons/managed_monitoring.png")}
.ic-managed-sdwan{-webkit-mask-image:url("../icons/managed_sdwan.png");mask-image:url("../icons/managed_sdwan.png")}
.ic-managed-switching{-webkit-mask-image:url("../icons/managed_switching.png");mask-image:url("../icons/managed_switching.png")}
.ic-managed-vpn{-webkit-mask-image:url("../icons/managed_vpn.png");mask-image:url("../icons/managed_vpn.png")}
.ic-managed-wifi{-webkit-mask-image:url("../icons/managed_wifi.png");mask-image:url("../icons/managed_wifi.png")}
.ic-wireless-ap-icon{-webkit-mask-image:url("../icons/wireless_ap_icon.png");mask-image:url("../icons/wireless_ap_icon.png")}

/* How a project runs: each step brought forward in turn, looping 1-4 */
.steps li{transition:opacity .4s}
.steps li img{border-radius:50%;transition:transform .4s,box-shadow .4s}
@media (prefers-reduced-motion:no-preference){
  .steps li{animation:step-dim 8s ease-in-out infinite}
  .steps li img{animation:step-pop 8s ease-in-out infinite}
  .steps li:nth-child(1),.steps li:nth-child(1) img{animation-delay:0s}
  .steps li:nth-child(2),.steps li:nth-child(2) img{animation-delay:-6s}
  .steps li:nth-child(3),.steps li:nth-child(3) img{animation-delay:-4s}
  .steps li:nth-child(4),.steps li:nth-child(4) img{animation-delay:-2s}
  .steps ol:hover li,.steps ol:hover li img,.steps ol:focus-within li,.steps ol:focus-within li img{animation-play-state:paused}
}
@keyframes step-dim{0%,22%{opacity:1}30%,92%{opacity:.45}100%{opacity:1}}
@keyframes step-pop{0%,22%{transform:translateY(-6px) scale(1.12);box-shadow:0 10px 24px -8px rgba(22,35,46,.45)}30%,92%{transform:none;box-shadow:none}100%{transform:translateY(-6px) scale(1.12);box-shadow:0 10px 24px -8px rgba(22,35,46,.45)}}

/* Threat watch v7: equal panels, top 10, severity + vendor filters (CSS :has, no JS) */
.panel{background:var(--ink-2);border:1px solid var(--ink-line);border-radius:10px;padding:1rem 1rem 1.1rem;display:flex;flex-direction:column;min-width:0}
.kev-side{gap:0}
.kev-side .vendor-list{flex:1 1 auto}
.kf{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.kev-filters{display:none;flex-direction:column;gap:.45rem;margin-bottom:.8rem}
.kf-row{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}
.kf-title{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-text);width:4.6rem}
.kf-row label{font-size:.8rem;font-weight:600;padding:.22rem .65rem;border:1px solid var(--ink-line);border-radius:999px;color:var(--ink-text);cursor:pointer;user-select:none;background:var(--ink)}
.kf-row label small{font-weight:500;opacity:.75}
.kf-row label:hover{border-color:var(--ink-text);color:#fff}
.kev-list{border:1px solid var(--ink-line);border-radius:8px;overflow:hidden;background:var(--ink);flex:1 1 auto}
.kev-row summary{min-height:3.4rem}
.kev-row .mark{background:var(--ink-line)}
.sv-critical .mark{background:#E5534B}.sv-high .mark{background:var(--signal)}.sv-medium .mark{background:#D9A93B}.sv-low .mark{background:#4A90C2}
.sev{font-size:.72rem;font-weight:800;padding:.1rem .45rem;border-radius:3px;white-space:nowrap;letter-spacing:.02em}
.sev-critical{background:#6B1F1B;color:#FFD1CC}.sev-high{background:#5A3A16;color:#FFD9B0}.sev-medium{background:#4E4216;color:#F6E7B4}.sev-low{background:#1E3A52;color:#CFE6F7}.sev-none{background:#2C3E4C;color:#C8D3DA}
.chip-new{background:#2C3E4C;color:#E6EEF3}
.kev-none{display:none;color:var(--ink-text);padding:1rem;margin:0}
.world-list{border:1px solid var(--ink-line);border-radius:8px;overflow:hidden;background:var(--ink)}
/* Fallback (no :has support): newest 10, no filters */
.kev-list .kev-row:nth-child(n+11){display:none}
@supports selector(:has(*)){
  .kev-filters{display:flex}
  .kev-list .kev-row{display:none}
  .kev-feed:has(#ks-all:checked):has(#kv-all:checked) .kev-row:nth-child(-n+10 of .r){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-all:checked) .kev-list:not(:has(.r)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-microsoft:checked) .kev-row:nth-child(-n+10 of .v-microsoft){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-microsoft:checked) .kev-list:not(:has(.v-microsoft)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-cisco:checked) .kev-row:nth-child(-n+10 of .v-cisco){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-cisco:checked) .kev-list:not(:has(.v-cisco)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-fortinet:checked) .kev-row:nth-child(-n+10 of .v-fortinet){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-fortinet:checked) .kev-list:not(:has(.v-fortinet)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-sophos:checked) .kev-row:nth-child(-n+10 of .v-sophos){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-sophos:checked) .kev-list:not(:has(.v-sophos)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-check-point:checked) .kev-row:nth-child(-n+10 of .v-check-point){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-check-point:checked) .kev-list:not(:has(.v-check-point)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-ubiquiti:checked) .kev-row:nth-child(-n+10 of .v-ubiquiti){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-ubiquiti:checked) .kev-list:not(:has(.v-ubiquiti)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-watchguard:checked) .kev-row:nth-child(-n+10 of .v-watchguard){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-watchguard:checked) .kev-list:not(:has(.v-watchguard)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-dell:checked) .kev-row:nth-child(-n+10 of .v-dell){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-dell:checked) .kev-list:not(:has(.v-dell)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-lenovo:checked) .kev-row:nth-child(-n+10 of .v-lenovo){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-lenovo:checked) .kev-list:not(:has(.v-lenovo)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-acronis:checked) .kev-row:nth-child(-n+10 of .v-acronis){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-acronis:checked) .kev-list:not(:has(.v-acronis)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-adobe:checked) .kev-row:nth-child(-n+10 of .v-adobe){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-adobe:checked) .kev-list:not(:has(.v-adobe)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-hikvision:checked) .kev-row:nth-child(-n+10 of .v-hikvision){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-hikvision:checked) .kev-list:not(:has(.v-hikvision)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-apc-schneider-electric:checked) .kev-row:nth-child(-n+10 of .v-apc-schneider-electric){display:block}
  .kev-feed:has(#ks-all:checked):has(#kv-apc-schneider-electric:checked) .kev-list:not(:has(.v-apc-schneider-electric)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-all:checked) .kev-row:nth-child(-n+10 of .sv-critical){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-all:checked) .kev-list:not(:has(.sv-critical)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-microsoft:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-microsoft){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-microsoft:checked) .kev-list:not(:has(.sv-critical.v-microsoft)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-cisco:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-cisco){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-cisco:checked) .kev-list:not(:has(.sv-critical.v-cisco)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-fortinet:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-fortinet){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-fortinet:checked) .kev-list:not(:has(.sv-critical.v-fortinet)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-sophos:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-sophos){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-sophos:checked) .kev-list:not(:has(.sv-critical.v-sophos)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-check-point:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-check-point){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-check-point:checked) .kev-list:not(:has(.sv-critical.v-check-point)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-ubiquiti:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-ubiquiti){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-ubiquiti:checked) .kev-list:not(:has(.sv-critical.v-ubiquiti)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-watchguard:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-watchguard){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-watchguard:checked) .kev-list:not(:has(.sv-critical.v-watchguard)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-dell:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-dell){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-dell:checked) .kev-list:not(:has(.sv-critical.v-dell)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-lenovo:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-lenovo){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-lenovo:checked) .kev-list:not(:has(.sv-critical.v-lenovo)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-acronis:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-acronis){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-acronis:checked) .kev-list:not(:has(.sv-critical.v-acronis)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-adobe:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-adobe){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-adobe:checked) .kev-list:not(:has(.sv-critical.v-adobe)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-hikvision:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-hikvision){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-hikvision:checked) .kev-list:not(:has(.sv-critical.v-hikvision)) .kev-none{display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-apc-schneider-electric:checked) .kev-row:nth-child(-n+10 of .sv-critical.v-apc-schneider-electric){display:block}
  .kev-feed:has(#ks-critical:checked):has(#kv-apc-schneider-electric:checked) .kev-list:not(:has(.sv-critical.v-apc-schneider-electric)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-all:checked) .kev-row:nth-child(-n+10 of .sv-high){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-all:checked) .kev-list:not(:has(.sv-high)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-microsoft:checked) .kev-row:nth-child(-n+10 of .sv-high.v-microsoft){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-microsoft:checked) .kev-list:not(:has(.sv-high.v-microsoft)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-cisco:checked) .kev-row:nth-child(-n+10 of .sv-high.v-cisco){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-cisco:checked) .kev-list:not(:has(.sv-high.v-cisco)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-fortinet:checked) .kev-row:nth-child(-n+10 of .sv-high.v-fortinet){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-fortinet:checked) .kev-list:not(:has(.sv-high.v-fortinet)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-sophos:checked) .kev-row:nth-child(-n+10 of .sv-high.v-sophos){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-sophos:checked) .kev-list:not(:has(.sv-high.v-sophos)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-check-point:checked) .kev-row:nth-child(-n+10 of .sv-high.v-check-point){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-check-point:checked) .kev-list:not(:has(.sv-high.v-check-point)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-ubiquiti:checked) .kev-row:nth-child(-n+10 of .sv-high.v-ubiquiti){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-ubiquiti:checked) .kev-list:not(:has(.sv-high.v-ubiquiti)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-watchguard:checked) .kev-row:nth-child(-n+10 of .sv-high.v-watchguard){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-watchguard:checked) .kev-list:not(:has(.sv-high.v-watchguard)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-dell:checked) .kev-row:nth-child(-n+10 of .sv-high.v-dell){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-dell:checked) .kev-list:not(:has(.sv-high.v-dell)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-lenovo:checked) .kev-row:nth-child(-n+10 of .sv-high.v-lenovo){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-lenovo:checked) .kev-list:not(:has(.sv-high.v-lenovo)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-acronis:checked) .kev-row:nth-child(-n+10 of .sv-high.v-acronis){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-acronis:checked) .kev-list:not(:has(.sv-high.v-acronis)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-adobe:checked) .kev-row:nth-child(-n+10 of .sv-high.v-adobe){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-adobe:checked) .kev-list:not(:has(.sv-high.v-adobe)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-hikvision:checked) .kev-row:nth-child(-n+10 of .sv-high.v-hikvision){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-hikvision:checked) .kev-list:not(:has(.sv-high.v-hikvision)) .kev-none{display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-apc-schneider-electric:checked) .kev-row:nth-child(-n+10 of .sv-high.v-apc-schneider-electric){display:block}
  .kev-feed:has(#ks-high:checked):has(#kv-apc-schneider-electric:checked) .kev-list:not(:has(.sv-high.v-apc-schneider-electric)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-all:checked) .kev-row:nth-child(-n+10 of .sv-medium){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-all:checked) .kev-list:not(:has(.sv-medium)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-microsoft:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-microsoft){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-microsoft:checked) .kev-list:not(:has(.sv-medium.v-microsoft)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-cisco:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-cisco){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-cisco:checked) .kev-list:not(:has(.sv-medium.v-cisco)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-fortinet:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-fortinet){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-fortinet:checked) .kev-list:not(:has(.sv-medium.v-fortinet)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-sophos:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-sophos){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-sophos:checked) .kev-list:not(:has(.sv-medium.v-sophos)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-check-point:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-check-point){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-check-point:checked) .kev-list:not(:has(.sv-medium.v-check-point)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-ubiquiti:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-ubiquiti){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-ubiquiti:checked) .kev-list:not(:has(.sv-medium.v-ubiquiti)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-watchguard:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-watchguard){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-watchguard:checked) .kev-list:not(:has(.sv-medium.v-watchguard)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-dell:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-dell){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-dell:checked) .kev-list:not(:has(.sv-medium.v-dell)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-lenovo:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-lenovo){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-lenovo:checked) .kev-list:not(:has(.sv-medium.v-lenovo)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-acronis:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-acronis){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-acronis:checked) .kev-list:not(:has(.sv-medium.v-acronis)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-adobe:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-adobe){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-adobe:checked) .kev-list:not(:has(.sv-medium.v-adobe)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-hikvision:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-hikvision){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-hikvision:checked) .kev-list:not(:has(.sv-medium.v-hikvision)) .kev-none{display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-apc-schneider-electric:checked) .kev-row:nth-child(-n+10 of .sv-medium.v-apc-schneider-electric){display:block}
  .kev-feed:has(#ks-medium:checked):has(#kv-apc-schneider-electric:checked) .kev-list:not(:has(.sv-medium.v-apc-schneider-electric)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-all:checked) .kev-row:nth-child(-n+10 of .sv-low){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-all:checked) .kev-list:not(:has(.sv-low)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-microsoft:checked) .kev-row:nth-child(-n+10 of .sv-low.v-microsoft){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-microsoft:checked) .kev-list:not(:has(.sv-low.v-microsoft)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-cisco:checked) .kev-row:nth-child(-n+10 of .sv-low.v-cisco){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-cisco:checked) .kev-list:not(:has(.sv-low.v-cisco)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-fortinet:checked) .kev-row:nth-child(-n+10 of .sv-low.v-fortinet){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-fortinet:checked) .kev-list:not(:has(.sv-low.v-fortinet)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-sophos:checked) .kev-row:nth-child(-n+10 of .sv-low.v-sophos){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-sophos:checked) .kev-list:not(:has(.sv-low.v-sophos)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-check-point:checked) .kev-row:nth-child(-n+10 of .sv-low.v-check-point){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-check-point:checked) .kev-list:not(:has(.sv-low.v-check-point)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-ubiquiti:checked) .kev-row:nth-child(-n+10 of .sv-low.v-ubiquiti){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-ubiquiti:checked) .kev-list:not(:has(.sv-low.v-ubiquiti)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-watchguard:checked) .kev-row:nth-child(-n+10 of .sv-low.v-watchguard){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-watchguard:checked) .kev-list:not(:has(.sv-low.v-watchguard)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-dell:checked) .kev-row:nth-child(-n+10 of .sv-low.v-dell){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-dell:checked) .kev-list:not(:has(.sv-low.v-dell)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-lenovo:checked) .kev-row:nth-child(-n+10 of .sv-low.v-lenovo){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-lenovo:checked) .kev-list:not(:has(.sv-low.v-lenovo)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-acronis:checked) .kev-row:nth-child(-n+10 of .sv-low.v-acronis){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-acronis:checked) .kev-list:not(:has(.sv-low.v-acronis)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-adobe:checked) .kev-row:nth-child(-n+10 of .sv-low.v-adobe){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-adobe:checked) .kev-list:not(:has(.sv-low.v-adobe)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-hikvision:checked) .kev-row:nth-child(-n+10 of .sv-low.v-hikvision){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-hikvision:checked) .kev-list:not(:has(.sv-low.v-hikvision)) .kev-none{display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-apc-schneider-electric:checked) .kev-row:nth-child(-n+10 of .sv-low.v-apc-schneider-electric){display:block}
  .kev-feed:has(#ks-low:checked):has(#kv-apc-schneider-electric:checked) .kev-list:not(:has(.sv-low.v-apc-schneider-electric)) .kev-none{display:block}
  .kev-feed:has(#ks-all:checked) label[for=ks-all],.kev-feed:has(#ks-critical:checked) label[for=ks-critical],.kev-feed:has(#ks-high:checked) label[for=ks-high],.kev-feed:has(#ks-medium:checked) label[for=ks-medium],.kev-feed:has(#ks-low:checked) label[for=ks-low]{background:var(--signal);color:var(--ink);border-color:var(--signal)}
  .kev-feed:has(#ks-all:focus-visible) label[for=ks-all],.kev-feed:has(#ks-critical:focus-visible) label[for=ks-critical],.kev-feed:has(#ks-high:focus-visible) label[for=ks-high],.kev-feed:has(#ks-medium:focus-visible) label[for=ks-medium],.kev-feed:has(#ks-low:focus-visible) label[for=ks-low]{outline:3px solid #fff;outline-offset:2px}
  .kev-feed:has(#kv-all:checked) label[for=kv-all],.kev-feed:has(#kv-microsoft:checked) label[for=kv-microsoft],.kev-feed:has(#kv-cisco:checked) label[for=kv-cisco],.kev-feed:has(#kv-fortinet:checked) label[for=kv-fortinet],.kev-feed:has(#kv-sophos:checked) label[for=kv-sophos],.kev-feed:has(#kv-check-point:checked) label[for=kv-check-point],.kev-feed:has(#kv-ubiquiti:checked) label[for=kv-ubiquiti],.kev-feed:has(#kv-watchguard:checked) label[for=kv-watchguard],.kev-feed:has(#kv-dell:checked) label[for=kv-dell],.kev-feed:has(#kv-lenovo:checked) label[for=kv-lenovo],.kev-feed:has(#kv-acronis:checked) label[for=kv-acronis],.kev-feed:has(#kv-adobe:checked) label[for=kv-adobe],.kev-feed:has(#kv-hikvision:checked) label[for=kv-hikvision],.kev-feed:has(#kv-apc-schneider-electric:checked) label[for=kv-apc-schneider-electric]{background:var(--signal);color:var(--ink);border-color:var(--signal)}
  .kev-feed:has(#kv-all:focus-visible) label[for=kv-all],.kev-feed:has(#kv-microsoft:focus-visible) label[for=kv-microsoft],.kev-feed:has(#kv-cisco:focus-visible) label[for=kv-cisco],.kev-feed:has(#kv-fortinet:focus-visible) label[for=kv-fortinet],.kev-feed:has(#kv-sophos:focus-visible) label[for=kv-sophos],.kev-feed:has(#kv-check-point:focus-visible) label[for=kv-check-point],.kev-feed:has(#kv-ubiquiti:focus-visible) label[for=kv-ubiquiti],.kev-feed:has(#kv-watchguard:focus-visible) label[for=kv-watchguard],.kev-feed:has(#kv-dell:focus-visible) label[for=kv-dell],.kev-feed:has(#kv-lenovo:focus-visible) label[for=kv-lenovo],.kev-feed:has(#kv-acronis:focus-visible) label[for=kv-acronis],.kev-feed:has(#kv-adobe:focus-visible) label[for=kv-adobe],.kev-feed:has(#kv-hikvision:focus-visible) label[for=kv-hikvision],.kev-feed:has(#kv-apc-schneider-electric:focus-visible) label[for=kv-apc-schneider-electric]{outline:3px solid #fff;outline-offset:2px}
}
@media (max-width:900px){.kev-layout{grid-template-columns:1fr}}

/* Security news: top 3 cards */
.news-cards{list-style:none;margin:0;padding:0;display:grid;gap:.9rem}
.news-card{display:flex;flex-direction:column;gap:.35rem;padding:1rem 1.1rem;background:#fff;border:1px solid var(--rule);border-left:4px solid var(--ink-line);border-radius:8px;transition:transform .2s,box-shadow .2s}
.news-card:hover,.news-card:focus-within{transform:translateY(-2px);box-shadow:0 12px 26px -16px rgba(22,35,46,.4)}
.news-card a{color:var(--text);font-weight:700;text-decoration:none;font-size:1.08rem;line-height:1.35}
.news-card a:hover{color:var(--link);text-decoration:underline}
.news-topic{font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.nt-ransomware{border-left-color:#E5534B}.nt-ransomware .news-topic{color:#B4322B}
.nt-data-breach{border-left-color:var(--signal)}.nt-data-breach .news-topic{color:#A55A12}
.nt-cyberattack{border-left-color:#8E6BC9}.nt-cyberattack .news-topic{color:#6A4BA3}
.nt-exploited-flaw{border-left-color:var(--w-blue)}.nt-exploited-flaw .news-topic{color:var(--w-blue)}
@media (prefers-reduced-motion:reduce){.intro-card,.news-card{transition:none}.intro-card:hover,.intro-card:focus-visible,.intro-card:focus-within,.news-card:hover{transform:none}}

/* Partner news: swipe / scroll card slider (scroll-snap, no JS) */
.vendor-news{margin-top:3.5rem}
.vn-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1rem}
.vn-head h3{font-size:1.4rem}
.vn-hint{color:var(--muted);font-size:.85rem;margin:0}
.vn-track{display:grid;grid-auto-flow:column;grid-auto-columns:min(19rem,82%);gap:1rem;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding:0 .25rem;padding:.4rem .25rem 1rem;scrollbar-width:thin}
.vn-track:focus-visible{outline:3px solid var(--signal);outline-offset:4px;border-radius:8px}
.vn-card{scroll-snap-align:start;display:flex;flex-direction:column;background:#fff;border:1px solid var(--rule);border-radius:10px;padding:1.1rem 1.2rem 1.2rem;transition:transform .2s,box-shadow .2s}
.vn-card:hover,.vn-card:focus-within{transform:translateY(-3px);box-shadow:0 14px 28px -18px rgba(22,35,46,.45)}
.vn-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}
.vn-top img{max-height:28px;max-width:7rem;width:auto;height:auto;object-fit:contain}
.vn-date{font-size:.78rem;font-weight:700;color:var(--muted)}
.vn-card h4{font-size:1.1rem;font-stretch:85%;margin:0 0 .4rem;line-height:1.2}
.vn-card p{color:var(--muted);font-size:.92rem;margin:0 0 1rem;flex:1 1 auto}
.vn-card a{font-weight:700;font-size:.88rem}
@media (prefers-reduced-motion:reduce){.vn-card{transition:none}.vn-card:hover{transform:none}}
/* v7: roomier rows in the equal-width panel — flags drop to their own line; vendor list fills the panel */
.kev-row summary{grid-template-columns:6px minmax(0,1fr) auto 1rem;grid-template-rows:auto auto;row-gap:.3rem}
.kev-row summary .mark{grid-row:1/3}
.kev-row summary .r-main{grid-column:2;grid-row:1}
.kev-row summary .r-flags{grid-column:2/4;grid-row:2;justify-content:flex-start}
.kev-row summary .r-age{display:block;grid-column:3;grid-row:1;align-self:start}
.kev-row summary::after{grid-column:4;grid-row:1}
.kev-side .vendor-list{flex:0 0 auto}
.kev-side .world{margin-top:1.25rem;flex:1 1 auto;display:flex;flex-direction:column}
.kev-side .world-list{flex:1 1 auto}
@media (max-width:520px){.kev-row summary .r-age{display:none}.kev-row summary .r-flags{grid-column:2/5}}

/* ===================== v8 ===================== */
/* Hero: one-line headline, centred, description and actions centred beneath */
.hero-grid{grid-template-columns:1fr;justify-items:center;text-align:center;gap:1.4rem}
.hero-text{align-items:center}
.hero h1{max-width:none;font-size:clamp(2.1rem,4.4vw,4rem);line-height:1.04}
@media (min-width:900px){.hero h1{white-space:nowrap}}
.hero-grid .lede{max-width:62ch;margin:1.25rem auto 0}
.hero-grid .actions{flex-direction:row;flex-wrap:wrap;justify-content:center;justify-self:center;min-width:0}
.hero .wrap.hero-grid{padding-bottom:3rem}

/* Partner / supplier logos: no tile background, logo fills the card */
.marquee{padding:10px 0 14px}
.track li{background:transparent;border:0;box-shadow:none;width:210px;height:96px;padding:.4rem 1.2rem;margin-right:12px}
.track img{max-height:72px;width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply}
@media (max-width:700px){.track li{width:150px;height:76px}.track img{max-height:56px}}

/* Threat watch: side panel = newest 10, same rhythm as the list */
.kev-side h3{margin-bottom:.8rem}
.kev-side .world-list{flex:1 1 auto}
.kev-side .kev-hint{margin-top:.6rem}
.world-list .r-flags{display:flex}
.world-list .chip-new,.world-list .chip-due{display:none}

/* Security news: pulsing "live" visual aligned with the feed */
.news-wrap{align-items:stretch}
.news-wrap > div:first-child{display:flex;flex-direction:column}
.news-visual{flex:1 1 auto;display:flex;align-items:flex-end;margin-top:1.5rem;min-height:12rem}
.news-live{width:100%;height:auto;max-height:100%;display:block}
.nl-bg{fill:var(--ink)}
.nl-globe{stroke:#3E5568}
.nl-sweep path{fill:rgba(232,130,42,.16)}
.nl-sweep{transform-origin:160px 128px}
.hit{fill:#E5534B}
.ring{fill:none;stroke:#E5534B;stroke-width:2;transform-box:fill-box;transform-origin:center}
.nl-badge rect{fill:#5A2622}
.nl-badge text{fill:#FFD3CC;font:700 13px/1 var(--font);letter-spacing:.12em}
.nl-dot{fill:#FF6B5E}
.nl-caption{fill:#9FB0BA;font:600 12px/1 var(--font)}
@media (prefers-reduced-motion:no-preference){
  .nl-sweep{animation:nl-spin 6s linear infinite}
  .ring{animation:nl-ping 2.4s ease-out infinite}
  .r2{animation-delay:.8s}.r3{animation-delay:1.6s}
  .hit{animation:nl-glow 2.4s ease-in-out infinite}
  .h2{animation-delay:.8s}.h3{animation-delay:1.6s}
  .nl-dot{animation:nl-blink 1.6s ease-in-out infinite}
}
@keyframes nl-spin{to{transform:rotate(360deg)}}
@keyframes nl-ping{0%{transform:scale(1);opacity:.9}100%{transform:scale(4.2);opacity:0}}
@keyframes nl-glow{0%,100%{opacity:.55}40%{opacity:1}}
@keyframes nl-blink{0%,100%{opacity:1}50%{opacity:.25}}
@media (max-width:900px){.news-visual{min-height:0;max-width:26rem}}

/* What's new from our partners: themed cards, enlarge on hover / focus */
.vn-track{grid-auto-columns:min(18.5rem,82%);padding:1.4rem .9rem 1.8rem;scroll-padding:0 .9rem}
.vn-card{--a:var(--w-blue);--a-soft:#E3ECF7;padding:0;overflow:hidden;border:1px solid var(--rule);border-top:4px solid var(--a);transform-origin:center;transition:transform .22s ease,box-shadow .22s ease;outline:none;position:relative}
.vn-card.t-blue{--a:var(--w-blue);--a-soft:#E3ECF7}
.vn-card.t-orange{--a:var(--w-orange);--a-soft:#FBE9D8}
.vn-card.t-green{--a:var(--w-green);--a-soft:#E0F1E6}
.vn-card.t-brown{--a:var(--w-brown);--a-soft:#F1E6DE}
.vn-top{background:var(--a-soft);padding:.9rem 1.1rem;margin:0;min-height:4.4rem}
.vn-top img{max-height:40px;max-width:9rem;mix-blend-mode:multiply}
.vn-date{color:var(--ink);background:#fff;padding:.15rem .5rem;border-radius:999px}
.vn-body{display:flex;flex-direction:column;flex:1 1 auto;padding:1rem 1.15rem 1.2rem}
.vn-card h4{color:var(--ink)}
.vn-card a{color:var(--ink);text-decoration-color:var(--a);text-decoration-thickness:2px;text-underline-offset:3px}
.vn-card:hover,.vn-card:focus-visible,.vn-card:focus-within{transform:translateY(-4px) scale(1.045);box-shadow:0 18px 36px -18px rgba(22,35,46,.5);z-index:2}
.vn-card:focus-visible{box-shadow:0 0 0 3px var(--a),0 18px 36px -18px rgba(22,35,46,.5)}
@media (prefers-reduced-motion:reduce){.vn-card{transition:none}.vn-card:hover,.vn-card:focus-visible,.vn-card:focus-within{transform:none}}

/* ===================== v9 (queued) ===================== */
/* Threat watch: single full-width panel; newest-in-catalog removed */
.kev-layout{grid-template-columns:1fr}
.kev-feed{width:100%}
@media (min-width:1000px){
  .kev-row summary{grid-template-columns:6px minmax(0,1fr) auto 6.5rem 1rem;grid-template-rows:auto;row-gap:0}
  .kev-row summary .mark{grid-row:1}
  .kev-row summary .r-flags{grid-column:3;grid-row:1;justify-content:flex-end}
  .kev-row summary .r-age{grid-column:4;grid-row:1;align-self:center;text-align:right}
  .kev-row summary::after{grid-column:5}
  .kev-row summary .r-name{white-space:nowrap}
}

/* v9 (queued): Services redesign: equal cards, wire-colour accents, clean bold feature list */
#services .svc-grid{border-top:0;gap:1.25rem;grid-template-columns:repeat(2,minmax(0,1fr))}
#services .svc,#services .svc:nth-child(n){display:flex;flex-direction:column;gap:0;padding:1.6rem 1.7rem 1.7rem;border:1px solid var(--rule);border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);border-radius:14px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--c) 7%,var(--paper)) 0%,var(--paper) 55%);position:relative;overflow:hidden;
  transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
#services .svc::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--c)}
#services .svc:hover,#services .svc:focus-within{transform:translateY(-4px);border-color:color-mix(in srgb,var(--c) 45%,var(--rule));box-shadow:0 22px 40px -26px color-mix(in srgb,var(--c) 70%,#000)}
#services .pair{flex-direction:column;width:44px;height:auto;gap:3px;margin-bottom:1.1rem;align-self:flex-start}
#services .pair i{height:5px;flex:none;border-radius:3px}
#services .pair i:first-child{background:repeating-linear-gradient(90deg,var(--c) 0 8px,var(--w-white) 8px 13px);box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
#services .svc h3{font-size:1.6rem;font-stretch:75%;letter-spacing:-.005em}
#services .svc p{margin:.6rem 0 1.3rem;max-width:46ch}
#services .with-icons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem 1.2rem;margin-top:auto;padding-top:1.1rem;border-top:1px dashed color-mix(in srgb,var(--c) 35%,var(--rule))}
#services .with-icons li,#services .svc .with-icons li{display:flex;align-items:center;gap:.6rem;padding:0;border:0;border-radius:0;background:none;font-size:.95rem;font-weight:700;color:var(--ink);line-height:1.25}
#services .ic{width:26px;height:26px;transition:transform .2s ease}
#services .with-icons li:hover .ic{transform:scale(1.15)}
@media (max-width:700px){#services .svc-grid{grid-template-columns:1fr}#services .with-icons{grid-template-columns:1fr 1fr}}
@media (max-width:420px){#services .with-icons{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){#services .svc,#services .ic{transition:none}#services .svc:hover{transform:none}}

/* v9 (queued): About copy, one consistent size and colour */
.intro p,.intro p.strong{font-size:1.1rem;line-height:1.65;color:var(--text);font-weight:400}

/* v9 (queued, from preview comment): About facts: hovered item enlarges and comes forward; siblings recede */
.facts li{position:relative;padding:1rem .75rem;margin:0 -.75rem;border-radius:10px;transform-origin:left center;transition:transform .25s ease,box-shadow .25s ease,background-color .25s ease,opacity .25s ease;outline:none}
.facts:hover li,.facts:focus-within li{opacity:.55}
.facts li:hover,.facts li:focus-visible{opacity:1;z-index:2;background:#fff;transform:scale(1.06);border-bottom-color:transparent;box-shadow:0 2px 4px rgba(22,35,46,.06),0 18px 36px -16px rgba(22,35,46,.45)}
.facts li:focus-visible{box-shadow:0 0 0 3px var(--signal),0 18px 36px -16px rgba(22,35,46,.45)}
@media (prefers-reduced-motion:reduce){.facts li{transition:none}.facts li:hover,.facts li:focus-visible{transform:none}}

/* ===================== v9: ONE hover / focus "lift" for the whole site =====================
   Used by: About card, About facts, Services cards, Security news cards, Partner news cards.
   Same scale, lift, shadow, timing and focus ring everywhere; siblings recede the same way. */
:root{
  --lift-scale:1.03; --lift-y:-4px; --lift-dur:.25s; --lift-ease:cubic-bezier(.2,.7,.2,1);
  --lift-shadow:0 2px 4px rgba(22,35,46,.06),0 20px 40px -20px rgba(22,35,46,.45);
  --lift-ring:0 0 0 3px var(--signal); --recede:.6;
}
.intro-card,.facts li,#services .svc,.news-card,.vn-card{
  transition:transform var(--lift-dur) var(--lift-ease),box-shadow var(--lift-dur) var(--lift-ease),opacity var(--lift-dur) var(--lift-ease),background-color var(--lift-dur) var(--lift-ease),border-color var(--lift-dur) var(--lift-ease);
  transform-origin:center;position:relative;outline:none}
/* lift */
.intro-card:hover,.intro-card:focus-visible,
.facts li:hover,.facts li:focus-visible,
#services .svc:hover,#services .svc:focus-visible,#services .svc:focus-within,
.news-card:hover,.news-card:focus-within,
.vn-card:hover,.vn-card:focus-visible,.vn-card:focus-within{
  transform:translateY(var(--lift-y)) scale(var(--lift-scale));box-shadow:var(--lift-shadow);z-index:2;opacity:1}
/* keyboard focus ring, identical everywhere */
.intro-card:focus-visible,.facts li:focus-visible,#services .svc:focus-visible,.news-card:focus-within:has(a:focus-visible),.vn-card:focus-visible,.vn-card:focus-within:has(a:focus-visible){box-shadow:var(--lift-ring),var(--lift-shadow)}
/* the About card itself stays put while a fact inside it is lifted, so they don't stack */
.intro-card:has(.facts li:hover),.intro-card:has(.facts li:focus-visible){transform:none}
.intro-card:focus-within:not(:focus-visible){transform:none;box-shadow:none}
/* siblings recede only while one item in the group is hovered or focused */
.facts:has(> li:hover,> li:focus-visible) > li:not(:hover):not(:focus-visible),
#services .svc-grid:has(> .svc:hover,> .svc:focus-within) > .svc:not(:hover):not(:focus-within),
.news-cards:has(> .news-card:hover,> .news-card:focus-within) > .news-card:not(:hover):not(:focus-within),
.vn-track:has(> .vn-card:hover,> .vn-card:focus-within) > .vn-card:not(:hover):not(:focus-within){opacity:var(--recede)}
.facts:hover li,.facts:focus-within li{opacity:1}   /* replaces the earlier blanket fade */
.facts:has(> li:hover,> li:focus-visible) > li:not(:hover):not(:focus-visible){opacity:var(--recede)}
/* lifted surfaces are white on light sections */
.facts li:hover,.facts li:focus-visible,.intro-card:hover,.intro-card:focus-visible{background:#fff}
@media (prefers-reduced-motion:reduce){
  .intro-card,.facts li,#services .svc,.news-card,.vn-card{transition:none}
  .intro-card:hover,.intro-card:focus-visible,.facts li:hover,.facts li:focus-visible,#services .svc:hover,#services .svc:focus-within,#services .svc:focus-visible,.news-card:hover,.news-card:focus-within,.vn-card:hover,.vn-card:focus-visible,.vn-card:focus-within{transform:none}
}

/* support-link: allow the menu to wrap on small screens */
@media (max-width:640px){.nav{flex-wrap:wrap;row-gap:.45rem}}

/* === V10-SERVICES-SYSTEMS : security & life-safety grid ===================== */
#services .sx-head{margin-top:4rem}
#services .svc.sx-red{--c:#d4433b}
#services .svc.sx-aud{--c:var(--w-orange,#e8792b)}
#services .sx-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
#services .sx-ic{width:22px;height:22px;flex:0 0 22px;color:var(--c);transition:transform .2s ease}
#services .with-icons li:hover .sx-ic{transform:scale(1.15)}
#services .sx-split{display:grid;gap:.9rem;margin:.6rem 0 1.2rem}
#services .sx-split b{display:block;color:var(--c);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;margin-bottom:.2rem}
#services .sx-split p{margin:0}
#services .sx-cta{display:inline-block;margin-top:auto;padding:.7rem 1.1rem;border-radius:999px;background:var(--c);color:#fff;font-weight:700;text-decoration:none;transition:filter .2s ease}
#services .sx-cta:hover{filter:brightness(1.08)}
#services .sx-cta:focus-visible{outline:3px solid var(--c);outline-offset:3px}
#services .svc.sx-aud > div:last-child{display:flex;flex-direction:column;height:100%}
@media (max-width:1000px){#services .sx-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:700px){#services .sx-grid{grid-template-columns:1fr}#services .sx-head{margin-top:3rem}}
@media (prefers-reduced-motion:reduce){#services .sx-ic,#services .sx-cta{transition:none}}
/* === V10-SERVICES-SYSTEMS END ============================================= */

/* === V10.1-WA-STYLE : one WhatsApp button style site-wide ================== */
.wa-pair{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.75rem 1.4rem}
a.wa-btn{display:inline-flex!important;align-items:center;gap:.55rem;padding:.75rem 1.15rem!important;
  border:1px solid #4f9a90!important;border-radius:4px!important;background:transparent!important;
  color:inherit!important;font-weight:700!important;font-size:1rem;line-height:1.2;text-decoration:none!important;
  box-shadow:none!important;transition:border-color .2s ease,background-color .2s ease}
a.wa-btn:hover{border-color:#25d366!important;background:color-mix(in srgb,#25d366 10%,transparent)!important}
a.wa-btn:focus-visible{outline:3px solid var(--w-orange,#e8792b);outline-offset:3px}
a.wa-btn .wa-ic{width:18px;height:18px;flex:0 0 18px}
a.wa-tel{color:inherit;font-weight:700;text-decoration:none;white-space:nowrap}
a.wa-tel:hover{text-decoration:underline}
@media (prefers-reduced-motion:reduce){a.wa-btn{transition:none}}
/* === V10.1-WA-STYLE END ===================================================== */

/* =====================================================================
   WEB-10.2.0 — Colour theme: Light / Navy / Auto, matching the support portal.
   No JavaScript (the site's CSP allows none): a radio group in the header plus :has(),
   the same technique as the KEV filters. Auto (default) follows the device setting.
   The choice lasts while the page is open; browsers without :has() stay Light.
   The portal loads a copy of this file; there the header follows its own data-theme.
   ===================================================================== */
.theme-switch{position:relative;display:inline-flex;align-items:center}
.t-radio{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.t-btn{display:none;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;border-radius:999px;
  border:1px solid var(--rule);color:var(--ink-2);cursor:pointer;transition:color .15s,border-color .15s}
.t-btn:hover{color:var(--link);border-color:var(--link)}
#t-light:checked~.t-is-light,#t-navy:checked~.t-is-navy,#t-auto:checked~.t-is-auto{display:inline-flex}
.theme-switch:has(.t-radio:focus-visible) .t-btn{outline:3px solid var(--signal);outline-offset:2px}
/* Far right of the bar, outside the content column, so the call button lines up with the column edge */
@media (min-width:1260px){.site-head .theme-switch{position:absolute;right:1.25rem;top:50%;transform:translateY(-50%)}}
@media (prefers-reduced-motion:reduce){.t-btn{transition:none}}

html:has(#t-navy:checked){color-scheme:dark;--paper:#0D1720;--panel:#16232E;--rule:#2F4353;--text:#D3DCE2;--muted:#94A5B0;--link:#8DB9EE}
html:has(#t-navy:checked) .site-head{background:#0D1720;border-bottom-color:#2F4353}
html:has(#t-navy:checked) .brand img{filter:invert(1) hue-rotate(180deg)}
html:has(#t-navy:checked) .nav a{color:#C8D3DA}
html:has(#t-navy:checked) .nav a:hover{color:#fff}
html:has(#t-navy:checked) .t-btn{color:#C8D3DA;border-color:#34495A}
html:has(#t-navy:checked) h1,html:has(#t-navy:checked) h2,html:has(#t-navy:checked) h3,html:has(#t-navy:checked) h4{color:#EEF3F6}
html:has(#t-navy:checked) .news-card,html:has(#t-navy:checked) .vn-card,html:has(#t-navy:checked) .vn-date{background:#16232E}
html:has(#t-navy:checked) .intro-card:hover,html:has(#t-navy:checked) .intro-card:focus-visible,html:has(#t-navy:checked) .intro-card:focus-within,html:has(#t-navy:checked) .facts li:hover,html:has(#t-navy:checked) .facts li:focus-visible{background:#1E2E3A}
html:has(#t-navy:checked) .vn-card h4,html:has(#t-navy:checked) .vn-card a,html:has(#t-navy:checked) .vn-date,html:has(#t-navy:checked) #services .with-icons li{color:#EEF3F6}
html:has(#t-navy:checked) .vn-card,html:has(#t-navy:checked) .vn-card.t-blue{--a-soft:#1B3350}
html:has(#t-navy:checked) .vn-card.t-orange{--a-soft:#3D2A17}
html:has(#t-navy:checked) .vn-card.t-green{--a-soft:#183626}
html:has(#t-navy:checked) .vn-card.t-brown{--a-soft:#33261D}
html:has(#t-navy:checked) .track li{background:#F2F4F3;border-radius:8px}
html:has(#t-navy:checked) .captcha-img{background:#F4F6F5}
@media (prefers-color-scheme:dark){
html:has(#t-auto:checked){color-scheme:dark;--paper:#0D1720;--panel:#16232E;--rule:#2F4353;--text:#D3DCE2;--muted:#94A5B0;--link:#8DB9EE}
html:has(#t-auto:checked) .site-head{background:#0D1720;border-bottom-color:#2F4353}
html:has(#t-auto:checked) .brand img{filter:invert(1) hue-rotate(180deg)}
html:has(#t-auto:checked) .nav a{color:#C8D3DA}
html:has(#t-auto:checked) .nav a:hover{color:#fff}
html:has(#t-auto:checked) .t-btn{color:#C8D3DA;border-color:#34495A}
html:has(#t-auto:checked) h1,html:has(#t-auto:checked) h2,html:has(#t-auto:checked) h3,html:has(#t-auto:checked) h4{color:#EEF3F6}
html:has(#t-auto:checked) .news-card,html:has(#t-auto:checked) .vn-card,html:has(#t-auto:checked) .vn-date{background:#16232E}
html:has(#t-auto:checked) .intro-card:hover,html:has(#t-auto:checked) .intro-card:focus-visible,html:has(#t-auto:checked) .intro-card:focus-within,html:has(#t-auto:checked) .facts li:hover,html:has(#t-auto:checked) .facts li:focus-visible{background:#1E2E3A}
html:has(#t-auto:checked) .vn-card h4,html:has(#t-auto:checked) .vn-card a,html:has(#t-auto:checked) .vn-date,html:has(#t-auto:checked) #services .with-icons li{color:#EEF3F6}
html:has(#t-auto:checked) .vn-card,html:has(#t-auto:checked) .vn-card.t-blue{--a-soft:#1B3350}
html:has(#t-auto:checked) .vn-card.t-orange{--a-soft:#3D2A17}
html:has(#t-auto:checked) .vn-card.t-green{--a-soft:#183626}
html:has(#t-auto:checked) .vn-card.t-brown{--a-soft:#33261D}
html:has(#t-auto:checked) .track li{background:#F2F4F3;border-radius:8px}
html:has(#t-auto:checked) .captcha-img{background:#F4F6F5}
}

/* Portal copy of the header follows the portal's own theme setting */
:root[data-theme="navy"] .site-head{background:#0D1720;border-bottom-color:#2F4353}
:root[data-theme="navy"] .brand img{filter:invert(1) hue-rotate(180deg)}
:root[data-theme="navy"] .nav a{color:#C8D3DA}
:root[data-theme="navy"] .nav a:hover{color:#fff}
@media (prefers-color-scheme:dark){
:root[data-theme="auto"] .site-head{background:#0D1720;border-bottom-color:#2F4353}
:root[data-theme="auto"] .brand img{filter:invert(1) hue-rotate(180deg)}
:root[data-theme="auto"] .nav a{color:#C8D3DA}
:root[data-theme="auto"] .nav a:hover{color:#fff}
}

/* Version line: written into OFFLINE and STAGING builds only by deploy.sh.
   Production never carries it (no version disclosure, NIST SI-11 / CM-7). */
.site-ver{max-width:var(--wrap);margin:0 auto;padding:.6rem var(--gutter) 1rem;text-align:right;font-size:.85rem;color:var(--muted)}
.site-ver b{color:var(--w-green)}

/* WEB-10.3.0 — Pause / Play for the moving partner logos (WCAG 2.2.2). CSS-only (no scripts).
   Also pauses while touched; reduced-motion users already get a static grid. */
.partners-head{position:relative}
.mq-toggle{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.mq-pause{display:inline-flex;align-items:center;gap:.4rem;margin-top:.75rem;padding:.35rem .8rem;border:1px solid var(--rule);
  border-radius:999px;font-size:.85rem;font-weight:650;color:var(--muted);cursor:pointer;background:transparent}
.mq-pause:hover{color:var(--link);border-color:var(--link)}
.mq-pause::before{content:"";width:.6rem;height:.7rem;border-left:3px solid currentColor;border-right:3px solid currentColor}
.mq-on{display:none}
#mq-pause:checked+.mq-pause .mq-on{display:inline}#mq-pause:checked+.mq-pause .mq-off{display:none}
#mq-pause:checked+.mq-pause::before{width:0;height:0;border:0;border-left:.6rem solid currentColor;border-top:.38rem solid transparent;border-bottom:.38rem solid transparent}
.mq-toggle:focus-visible+.mq-pause{outline:3px solid var(--signal);outline-offset:2px}
html:has(#mq-pause:checked) .marquee .track,.marquee:active .track{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){.mq-toggle,.mq-pause{display:none}}   /* logos are static then: no control needed */

/* WEB-10.3.0 — contrast fixes from the axe WCAG 2.2 AA scan */
#services .sx-cta{background:color-mix(in srgb,var(--c) 62%,#16232E)}   /* white text >= 4.5:1 on every service colour */
.site-ver b{color:#23663A}
html:has(#t-navy:checked) .site-ver b{color:#86D6A0}
@media (prefers-color-scheme:dark){html:has(#t-auto:checked) .site-ver b{color:#86D6A0}}
/* "How a project runs": keep the icon pop in turn, but never dim the step text
   (dimmed text fell to ~1.9:1 contrast for 6 of every 8 seconds) */
@media (prefers-reduced-motion:no-preference){.steps li{animation:none;opacity:1}}
