/* ============================================================
   SANAD PLATFORM — Marketing site design system
   Shared across all pages. Bilingual EN/AR, RTL-aware via
   CSS logical properties.
   ============================================================ */

:root{
  /* brand */
  --navy:#0E1B33; --navy-deep:#0A1426; --navy-soft:#16264a; --navy-700:#1b2e54;
  --blue:#2A6BFF; --blue-bright:#3b7bff; --blue-dim:#6f94d6; --blue-ghost:rgba(42,107,255,.08);
  --light:#F4F6FA; --paper:#FFFFFF; --paper-2:#FBFCFE;
  --ink:#0E1B33; --muted:#5B647A; --faint:#8b94a8;
  --line:rgba(14,27,51,.10); --line-2:rgba(14,27,51,.07); --line-strong:rgba(14,27,51,.16);
  --line-navy:rgba(255,255,255,.12);

  /* product accents (used sparingly for wayfinding) */
  --c-itsm:#2A6BFF; --c-cms:#4F63E0; --c-dms:#1796A0; --c-tasks:#E0833A; --c-wf:#7A5AF8; --c-ai:#5B7BFF;
  --c-spm:#C0497B; --c-evt:#1E9E6A; --c-cx:#0E9BB5;
  --ntx-red:#E0312E;

  /* type */
  --font:'Plus Jakarta Sans',-apple-system,system-ui,'Segoe UI',sans-serif;
  --font-ar:'Readex Pro','Plus Jakarta Sans',system-ui,sans-serif;
  --mono:'Plus Jakarta Sans',-apple-system,system-ui,'Segoe UI',sans-serif;

  /* layout */
  --maxw:1240px; --gutter:40px; --radius:18px; --radius-lg:26px; --radius-sm:12px;
  --shadow-sm:0 2px 10px -4px rgba(14,27,51,.16);
  --shadow:0 24px 60px -28px rgba(14,27,51,.32);
  --shadow-lg:0 50px 100px -40px rgba(14,27,51,.45);
  --header-h:78px;
  --ease:cubic-bezier(.2,.7,.2,1);
}

*{box-sizing:border-box;}
[hidden]{display:none !important;}
/* toast notifications */
.toast-wrap{position:fixed; inset-block-end:28px; inset-inline-end:28px; z-index:2000; display:flex; flex-direction:column; gap:12px; pointer-events:none;}
.toast{display:flex; align-items:center; gap:14px; background:var(--navy); color:#fff; border-radius:14px; padding:16px 16px 16px 18px; box-shadow:0 24px 60px -18px rgba(14,27,51,.6); max-width:400px; pointer-events:auto; opacity:0; transform:translateY(16px) scale(.97); transition:opacity .35s var(--ease), transform .35s var(--ease);}
.toast.in{opacity:1; transform:none;}
.toast-ic{width:36px; height:36px; flex:none; border-radius:10px; background:#1E9E6A; color:#fff; display:grid; place-items:center;}
.toast-ic svg{width:20px; height:20px;}
.toast-error .toast-ic{background:#E0833A;}
.toast-msg{flex:1; font-size:15px; font-weight:500; line-height:1.4;}
.toast-x{flex:none; background:none; border:none; color:rgba(255,255,255,.55); font-size:22px; line-height:1; padding:2px 4px; cursor:pointer; transition:color .2s;}
.toast-x:hover{color:#fff;}
@media (max-width:560px){.toast-wrap{inset-inline:16px; inset-block-end:16px;} .toast{max-width:none;}}
@media (prefers-reduced-motion:reduce){.toast{transition:opacity .2s;}}
html{scroll-behavior:smooth; -webkit-text-size-adjust:100%;}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;}}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--font); font-size:18px; line-height:1.6; font-weight:400;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
html[dir="rtl"] body{font-family:var(--font-ar);}
html[dir="rtl"] .mono, html[dir="rtl"] [class*="kicker"]{font-family:var(--mono);}

img{max-width:100%; display:block;}
a{color:inherit; text-decoration:none;}
h1,h2,h3,h4,p{margin:0; text-wrap:pretty;}
button{font-family:inherit; cursor:pointer;}
:focus-visible{outline:2px solid var(--blue); outline-offset:3px; border-radius:4px;}

/* ---------- language visibility helpers ---------- */
[data-en],[data-ar]{}
html[dir="rtl"] .ltr-only{display:none !important;}
html[dir="ltr"] .rtl-only{display:none !important;}

/* ---------- typography scale ---------- */
.kicker{
  font-family:var(--mono); font-size:14px; font-weight:500; letter-spacing:.18em;
  text-transform:uppercase; color:var(--blue); display:inline-flex; align-items:center; gap:12px;
}
html[dir="rtl"] .kicker{letter-spacing:.06em;}
.kicker::before{content:""; width:26px; height:2px; background:currentColor; display:inline-block; opacity:.9;}
.kicker.center::before{display:none;}

.display{font-size:clamp(40px,6vw,82px); font-weight:800; line-height:1.02; letter-spacing:-.03em;}
.h1{font-size:clamp(34px,4.6vw,60px); font-weight:800; line-height:1.05; letter-spacing:-.025em;}
.h2{font-size:clamp(28px,3.4vw,46px); font-weight:800; line-height:1.08; letter-spacing:-.02em;}
.h3{font-size:clamp(21px,1.7vw,27px); font-weight:700; line-height:1.2; letter-spacing:-.01em;}
.lead{font-size:clamp(18px,1.5vw,23px); line-height:1.55; color:var(--muted); font-weight:400;}
.lead strong{color:var(--ink); font-weight:700;}
.eyebrow{font-family:var(--mono); font-size:13px; letter-spacing:.14em; text-transform:uppercase; color:var(--faint);}
html[dir="rtl"] .display,html[dir="rtl"] .h1,html[dir="rtl"] .h2{letter-spacing:0; line-height:1.14;}

.muted{color:var(--muted);}
.accent{color:var(--blue);}

/* ---------- layout ---------- */
.wrap{max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gutter);}
.section{padding-block:clamp(64px,9vw,128px);}
.section-sm{padding-block:clamp(48px,6vw,84px);}
.center{text-align:center;}
.center .kicker{justify-content:center;}
.measure{max-width:760px;}
.measure-sm{max-width:580px;}
.center.measure,.center .measure{margin-inline:auto;}
.stack-3>*+*{margin-top:14px;}
.stack-4>*+*{margin-top:22px;}
.grid{display:grid; gap:24px;}
.g-2{grid-template-columns:repeat(2,1fr);}
.g-3{grid-template-columns:repeat(3,1fr);}
.g-4{grid-template-columns:repeat(4,1fr);}
.split{display:grid; grid-template-columns:1fr 1fr; gap:clamp(40px,6vw,90px); align-items:center;}
.split>*{min-width:0;}
.frame{max-width:100%;}
.split.wide-l{grid-template-columns:1.1fr .9fr;}
.split.wide-r{grid-template-columns:.9fr 1.1fr;}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:10px; font-weight:700; font-size:16px;
  padding:15px 26px; border-radius:999px; border:1px solid transparent; line-height:1;
  transition:transform .25s var(--ease), background .25s var(--ease), box-shadow .25s var(--ease), color .2s;
  white-space:nowrap;
}
.btn svg{width:18px; height:18px;}
.btn .arr{transition:transform .25s var(--ease);}
.btn:hover .arr{transform:translateX(4px);}
html[dir="rtl"] .btn .arr{transform:scaleX(-1);}
html[dir="rtl"] .btn:hover .arr{transform:scaleX(-1) translateX(4px);}
.btn-primary{background:#3563D9; color:#fff; box-shadow:0 8px 18px -10px rgba(47,89,199,.45);}
.btn-primary:hover{background:#2F59C7; transform:translateY(-2px); box-shadow:0 12px 24px -12px rgba(47,89,199,.5);}
.btn-ghost{background:transparent; color:var(--ink); border-color:var(--line-strong);}
.btn-ghost:hover{border-color:var(--ink); transform:translateY(-2px);}
.btn-white{background:#fff; color:var(--navy);}
.btn-white:hover{transform:translateY(-2px); box-shadow:0 18px 40px -14px rgba(0,0,0,.4);}
.btn-line-light{background:transparent; color:#fff; border-color:rgba(255,255,255,.28);}
.btn-line-light:hover{border-color:#fff; background:rgba(255,255,255,.06); transform:translateY(-2px);}
.btn-line{background:transparent; color:var(--navy); border-color:var(--line);}
.btn-line:hover{border-color:var(--blue); color:var(--blue); background:var(--blue-ghost); transform:translateY(-2px);}
.btn-lg{padding:18px 32px; font-size:17px;}
.textlink{color:var(--blue); font-weight:700; font-size:15.5px; letter-spacing:.01em; display:inline-flex; align-items:center; gap:8px; white-space:nowrap; padding-bottom:3px; border-bottom:2px solid transparent; transition:border-color .25s var(--ease);}
.textlink:hover{border-bottom-color:currentColor;}
.textlink .arr{display:none;}
.textlink::after{content:"\2192"; font-weight:700; display:inline-block; transition:transform .25s var(--ease);}
.textlink:hover::after{transform:translateX(4px);}
html[dir="rtl"] .textlink::after{content:"\2190";}
html[dir="rtl"] .textlink:hover::after{transform:translateX(-4px);}

/* ---------- header ---------- */
.site-header{
  position:sticky; top:0; z-index:100; background:rgba(255,255,255,.86);
  backdrop-filter:saturate(180%) blur(14px); -webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid transparent; transition:border-color .3s, box-shadow .3s, background .3s;
}
.site-header.scrolled{border-bottom-color:var(--line); box-shadow:0 6px 24px -16px rgba(14,27,51,.4);}
.nav{display:flex; align-items:center; gap:30px; height:var(--header-h);}
.brand{display:flex; align-items:center; gap:10px; flex:none;}
.brand img{height:34px; width:auto;}
.nav-links{display:flex; align-items:center; gap:6px; margin-inline-start:18px;}
.nav-links a, .nav-trigger{
  font-size:15.5px; font-weight:600; color:var(--ink); padding:10px 14px; border-radius:10px;
  display:inline-flex; align-items:center; gap:6px; background:none; border:none; transition:background .2s, color .2s;
  white-space:nowrap;
}
.nav-links a:hover, .nav-trigger:hover{background:var(--blue-ghost); color:var(--blue);}
.nav-links a.active{color:var(--blue);}
.nav-spacer{flex:1;}
.nav-actions{display:flex; align-items:center; gap:12px; flex:none;}
.lang-toggle{
  font-family:var(--mono); font-size:13px; font-weight:600; letter-spacing:.04em;
  padding:9px 14px; border-radius:999px; border:1px solid var(--line-strong); background:none; color:var(--ink);
  display:inline-flex; align-items:center; gap:7px; transition:border-color .2s, background .2s;
}
.lang-toggle:hover{border-color:var(--blue); color:var(--blue); background:var(--blue-ghost);}
.lang-toggle svg{width:15px; height:15px; opacity:.8;}

/* products dropdown */
.has-drop{position:relative;}
.has-drop::after{content:""; position:absolute; top:100%; left:0; right:0; height:18px; display:none;}
.has-drop:hover::after, .has-drop:focus-within::after{display:block;}
.drop{
  position:absolute; inset-inline-start:0; inset-inline-end:auto; transform:translateY(10px);
  top:calc(100% + 10px); width:540px; background:#fff; border:1px solid var(--line);
  border-radius:var(--radius); box-shadow:var(--shadow); padding:14px; opacity:0; visibility:hidden;
  transition:opacity .22s var(--ease), transform .22s var(--ease); z-index:120;
}
html[dir="rtl"] .drop{transform:translateY(10px);}
.has-drop:hover .drop, .has-drop:focus-within .drop{opacity:1; visibility:visible; transform:translateY(0);}
html[dir="rtl"] .has-drop:hover .drop, html[dir="rtl"] .has-drop:focus-within .drop{transform:translateY(0);}
.drop-grid{display:grid; grid-template-columns:1fr 1fr; gap:6px;}
.drop a{display:flex; gap:13px; padding:13px; border-radius:12px; align-items:flex-start; transition:background .18s;}
.drop a:hover{background:var(--light);}
.drop .di{width:38px; height:38px; border-radius:10px; flex:none; display:grid; place-items:center; background:var(--blue-ghost);}
.drop .di svg{width:20px; height:20px; stroke:var(--blue); fill:none; stroke-width:1.7;}
.drop .dt{display:block; font-weight:700; font-size:15px; line-height:1.2;}
.drop .dd{display:block; font-size:13px; color:var(--muted); line-height:1.3; margin-top:3px;}
.drop-foot{display:flex; align-items:center; justify-content:flex-end; gap:8px; margin-top:8px; padding:13px 13px 6px; border-top:1px solid var(--line-2); font-size:14px; font-weight:700; color:var(--blue);}
.drop-foot .arr{width:16px; height:16px; transition:transform .25s var(--ease);}
.drop-foot:hover .arr{transform:translateX(4px);}
html[dir="rtl"] .drop-foot{justify-content:flex-start;}
html[dir="rtl"] .drop-foot .arr{transform:scaleX(-1);}
html[dir="rtl"] .drop-foot:hover .arr{transform:scaleX(-1) translateX(4px);}

/* mobile nav */
.burger{display:none; width:44px; height:44px; border:1px solid var(--line-strong); border-radius:12px; background:none; align-items:center; justify-content:center;}
.burger span{display:block; width:20px; height:2px; background:var(--ink); position:relative; transition:.25s;}
.burger span::before,.burger span::after{content:""; position:absolute; left:0; width:20px; height:2px; background:var(--ink); transition:.25s;}
.burger span::before{top:-6px;} .burger span::after{top:6px;}
.mobile-panel{
  position:fixed; inset:var(--header-h) 0 0 0; background:#fff; z-index:90; padding:24px var(--gutter) 60px;
  transform:translateY(-12px); opacity:0; visibility:hidden; transition:.28s var(--ease); overflow-y:auto;
}
.mobile-panel.open{transform:none; opacity:1; visibility:visible;}
.mobile-panel a{display:block; font-size:20px; font-weight:700; padding:16px 4px; border-bottom:1px solid var(--line-2);}
.mobile-panel .sub a{font-size:16px; font-weight:600; color:var(--muted); padding-inline-start:18px;}

/* ---------- footer ---------- */
.site-footer{background:var(--navy-deep); color:rgba(255,255,255,.7); padding-block:72px 36px;}
.site-footer a{color:rgba(255,255,255,.7); transition:color .2s;}
.site-footer a:hover{color:#fff;}
.footer-top{display:grid; grid-template-columns:1.6fr 1.5fr 1fr 1fr; gap:40px; padding-bottom:48px; border-bottom:1px solid var(--line-navy);}
.footer-brand img{height:32px; margin-bottom:18px;}
.footer-col h4{font-family:var(--mono); font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--blue-dim); margin-bottom:18px; font-weight:600;}
.footer-col a{display:block; font-size:15px; margin-bottom:11px; font-weight:500;}
.footer-col-wide{display:grid; grid-template-columns:1fr 1fr; gap:0 24px; align-content:start;}
.footer-col-wide h4{grid-column:1 / -1;}
.footer-col-wide a{white-space:nowrap;}
.footer-bottom{display:flex; justify-content:space-between; align-items:center; padding-top:28px; font-size:13.5px; color:rgba(255,255,255,.5); gap:20px; flex-wrap:wrap;}
.footer-bottom .mono{font-family:var(--mono); letter-spacing:.04em;}

/* ---------- surfaces ---------- */
.navy-section{background:var(--navy); color:#fff; position:relative; overflow:hidden;}
.navy-section .lead{color:rgba(255,255,255,.72);} .navy-section .lead strong{color:#fff;}
.navy-section .h1,.navy-section .h2,.navy-section .display{color:#fff;}
.navy-section .muted{color:rgba(255,255,255,.6);}
.glow{position:absolute; inset:0; pointer-events:none; background:
  radial-gradient(900px 560px at 80% 0%, rgba(42,107,255,.22), transparent 62%),
  radial-gradient(680px 520px at 8% 100%, rgba(42,107,255,.12), transparent 60%);}
.light-section{background:var(--light);}

/* card */
.card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:32px; transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s;}
.card.hover:hover{transform:translateY(-5px); box-shadow:var(--shadow); border-color:transparent;}
.card .ic{width:54px; height:54px; border-radius:14px; background:var(--blue-ghost); display:grid; place-items:center; margin-bottom:22px;}
.card .ic svg{width:27px; height:27px; stroke:var(--blue); fill:none; stroke-width:1.7;}
.card h3{font-size:22px; font-weight:700; letter-spacing:-.01em; margin-bottom:9px;}
.card p{font-size:16px; color:var(--muted); line-height:1.5;}

/* feature row with check */
.checks{display:grid; gap:14px;}
.checks li{list-style:none; display:flex; gap:13px; align-items:flex-start; font-size:17px; line-height:1.45;}
.checks .ck{width:24px; height:24px; flex:none; border-radius:7px; background:var(--blue-ghost); display:grid; place-items:center; margin-top:1px;}
.checks .ck svg{width:14px; height:14px; stroke:var(--blue); fill:none; stroke-width:2.4;}
ul.bare{margin:0; padding:0;} ul.bare li{list-style:none;}

/* pill / badge */
.pill{display:inline-flex; align-items:center; gap:9px; font-family:var(--mono); font-size:13px; letter-spacing:.04em;
  text-transform:uppercase; color:var(--navy); background:#fff; border:1px solid var(--line-strong); border-radius:999px; padding:9px 16px;}
.pill.on-navy{background:rgba(255,255,255,.06); border-color:var(--line-navy); color:#fff;}
.pill-row{display:flex; flex-wrap:wrap; gap:11px;}

/* stat */
.stat .n{font-family:var(--mono); font-size:clamp(34px,4vw,52px); font-weight:600; color:var(--blue-bright); letter-spacing:-.02em; line-height:1;}
.navy-section .stat .n{color:var(--blue-bright);}
.stat .l{font-size:15px; color:var(--muted); margin-top:10px; line-height:1.35;}
.navy-section .stat .l{color:rgba(255,255,255,.65);}

/* screenshot frame */
.frame{border-radius:var(--radius); overflow:hidden; background:#fff; border:1px solid var(--line); box-shadow:var(--shadow);}
.frame .bar{height:40px; background:#eef1f6; display:flex; align-items:center; gap:8px; padding-inline:16px; border-bottom:1px solid var(--line);}
.frame .bar i{width:11px; height:11px; border-radius:50%; background:#cfd6e2;}
.frame img{width:100%; height:auto; display:block;}
.frame.float{box-shadow:var(--shadow-lg);}

/* product chip/icon block */
.pchip{width:60px; height:60px; border-radius:16px; display:grid; place-items:center; flex:none;}
.pchip svg{width:30px; height:30px; stroke:#fff; fill:none; stroke-width:1.7;}

/* ---------- reveal animation ---------- */
.reveal{opacity:0; transform:translateY(26px); transition:opacity .7s var(--ease), transform .7s var(--ease);}
.reveal.in{opacity:1; transform:none;}
.reveal.d1{transition-delay:.08s;} .reveal.d2{transition-delay:.16s;} .reveal.d3{transition-delay:.24s;} .reveal.d4{transition-delay:.32s;}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1 !important; transform:none !important; transition:none !important;}}

/* hero shared */
/* product visual cards (graphical mockups in lieu of screenshots) */
.pv-card{background:#fff; color:var(--ink); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-lg); padding:22px; max-width:460px; margin-inline:auto;}
.pv-head{display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; padding:0 4px;}
.pv-head b{font-size:16px; font-weight:700;}
.pv-badge{font-family:var(--mono); font-size:12px; font-weight:600; letter-spacing:.03em; color:#fff; background:var(--c); border-radius:999px; padding:5px 12px;}
.pv-row{display:flex; align-items:center; gap:13px; padding:13px 4px; border-top:1px solid var(--line-2);}
.pv-ic{width:38px; height:38px; border-radius:10px; flex:none; display:grid; place-items:center; background:color-mix(in srgb, var(--c) 13%, transparent); color:var(--c);}
.pv-ic svg{width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.8;}
.pv-body{flex:1; min-width:0;}
.pv-body b{font-size:15px; font-weight:700; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.pv-body i{font-style:normal; font-size:12.5px; color:var(--muted); display:block; margin-top:2px; font-family:var(--mono);}
.pv-tag{font-family:var(--mono); font-size:11px; letter-spacing:.03em; text-transform:uppercase; border-radius:7px; padding:5px 10px; flex:none; white-space:nowrap;}
.pv-tag.c{color:var(--c); background:color-mix(in srgb, var(--c) 13%, transparent);}
.pv-tag.ok{color:#1E9E6A; background:rgba(30,158,106,.13);}
.pv-tag.warn{color:#E0833A; background:rgba(224,131,58,.14);}
.pv-tag.mut{color:var(--muted); background:var(--light);}

/* hero shared */
.hero-back{display:inline-flex; align-items:center; gap:8px; font-family:var(--mono); font-size:13px; letter-spacing:.06em; text-transform:uppercase; font-weight:600; color:rgba(255,255,255,.7); margin-bottom:28px; transition:color .2s;}
.hero-back:hover{color:#fff;}
.hero-back svg{width:17px; height:17px; transition:transform .2s var(--ease);}
.hero-back:hover svg{transform:translateX(-3px);}
html[dir="rtl"] .hero-back svg{transform:scaleX(-1);}
html[dir="rtl"] .hero-back:hover svg{transform:scaleX(-1) translateX(-3px);}
.hero{position:relative; overflow:hidden; padding-block:clamp(72px,11vw,150px) clamp(60px,8vw,110px);}
.hero-navy{background:var(--navy); color:#fff;}
.hero .eyebrow{color:var(--blue-dim);}

/* dot grid bg decoration */
.dotgrid{position:absolute; inset:0; background-image:radial-gradient(rgba(255,255,255,.07) 1.4px, transparent 1.4px); background-size:34px 34px; mask-image:linear-gradient(to bottom, black, transparent 80%); pointer-events:none;}

/* CTA band */
.cta-band{background:var(--navy); color:#fff; border-radius:var(--radius-lg); padding:clamp(40px,6vw,72px); position:relative; overflow:hidden;}

/* ---------- responsive ---------- */
@media (max-width:1024px){
  .footer-top{grid-template-columns:1fr 1fr;}
  .drop{width:440px;}
}
@media (max-width:1320px){
  .nav-links, .nav-actions .desktop{display:none;}
  .burger{display:flex;}
}
@media (max-width:900px){
  :root{--gutter:24px;}
  .split, .split.wide-l, .split.wide-r{grid-template-columns:1fr; gap:40px;}
  .g-4{grid-template-columns:repeat(2,1fr);}
  .g-3{grid-template-columns:1fr 1fr;}
  .order-media{order:-1;}
}
@media (max-width:620px){
  body{font-size:17px;}
  .g-2,.g-3,.g-4{grid-template-columns:1fr;}
  .footer-top{grid-template-columns:1fr; gap:32px;}
  .footer-col-wide a{white-space:normal;}
  .footer-bottom{flex-direction:column; align-items:flex-start;}
  .btn{width:100%; justify-content:center;}
  .hero-actions .btn{width:auto;}
}


/* ============================================================
   BY NEWTECX — company section additions
   ============================================================ */

/* header brand lockup */
.brand{display:flex; align-items:center; gap:14px;}
.by-ntx{display:flex; align-items:center; gap:7px; padding-inline-start:14px; border-inline-start:1px solid var(--line-strong);}
.by-ntx span{font-family:var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--faint);}
.by-ntx img{height:15px; width:auto; opacity:.85;}
@media (max-width:560px){.by-ntx{display:none;}}

/* footer newtecx band */
.footer-ntx{display:flex; align-items:center; justify-content:space-between; gap:34px; flex-wrap:wrap;
  padding:30px 0 26px; border-bottom:1px solid var(--line-navy);}
.fn-left{display:flex; align-items:center; gap:22px; flex:1; min-width:280px;}
.fn-logo{height:26px; width:auto; flex:none;}
.fn-left p{font-size:14px; line-height:1.5; color:rgba(255,255,255,.6); max-width:520px;}
.fn-right{display:flex; align-items:center; gap:12px; flex-wrap:wrap;}
.fn-right a{display:inline-flex; align-items:center; gap:9px; font-family:var(--mono); font-size:13.5px; letter-spacing:.02em;
  background:rgba(255,255,255,.06); border:1px solid var(--line-navy); border-radius:999px; padding:10px 17px; transition:background .2s, border-color .2s;}
.fn-right a:hover{background:rgba(255,255,255,.12); border-color:rgba(255,255,255,.3);}
.fn-right svg{width:15px; height:15px; opacity:.8;}

/* customer logo grid — large flat cells, hairline-separated, name on hover */
.logo-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line-2);
  border:1px solid var(--line); border-radius:18px; overflow:hidden;}
.logo-tile{position:relative; display:grid; place-items:center; background:#fff;
  padding:34px 28px 46px; min-height:212px; transition:background .35s var(--ease);}
.logo-tile img{max-height:104px; max-width:78%; width:auto; object-fit:contain;
  transition:transform .35s var(--ease);}
.logo-tile::after{content:attr(title); position:absolute; left:16px; right:16px; bottom:16px;
  text-align:center; font-size:13.5px; font-weight:600; color:var(--muted); line-height:1.3;
  opacity:0; transform:translateY(5px); transition:opacity .3s var(--ease), transform .3s var(--ease);
  pointer-events:none;}
.logo-tile:hover{background:#f4f7fd;}
.logo-tile:hover img{transform:translateY(-6px) scale(1.03);}
.logo-tile:hover::after{opacity:1; transform:none;}
.logo-tile.on-dark{background:var(--navy);}
.logo-tile.on-dark:hover{background:#16274a;}
.logo-tile.on-dark::after{color:rgba(200,216,255,.8);}
@media (max-width:1024px){.logo-grid{grid-template-columns:repeat(3,1fr);} .logo-tile{min-height:180px; padding:26px 20px 42px;} .logo-tile img{max-height:86px;}}
@media (max-width:760px){.logo-grid{grid-template-columns:repeat(2,1fr);} .logo-tile{min-height:150px;} .logo-tile img{max-height:70px;} .logo-tile::after{font-size:12px;}}
@media (max-width:400px){.logo-grid{grid-template-columns:1fr;}}

/* country group header */
.country-head{display:flex; align-items:center; gap:16px; margin-bottom:24px;}
.country-head h3{font-size:26px; font-weight:800; letter-spacing:-.01em;}
.country-head .cnt{font-family:var(--mono); font-size:13px; font-weight:600; color:#fff; background:var(--blue);
  border-radius:999px; padding:6px 14px;}
.country-head .rule{flex:1; height:1px; background:var(--line);}

/* sector cards */
.sector-grid{display:grid; grid-template-columns:repeat(5,1fr); gap:16px;}
.sector-card{background:#fff; border:1px solid var(--line); border-radius:16px; padding:24px; transition:transform .3s var(--ease), box-shadow .3s var(--ease);}
.sector-card:hover{transform:translateY(-4px); box-shadow:var(--shadow);}
.sector-card .si{width:44px; height:44px; border-radius:11px; background:var(--blue-ghost); display:grid; place-items:center; margin-bottom:16px;}
.sector-card .si svg{width:23px; height:23px; stroke:var(--blue); fill:none; stroke-width:1.7;}
.sector-card h3{font-size:17px; font-weight:700; line-height:1.25; letter-spacing:-.01em;}
.sector-card p{font-size:13.5px; color:var(--muted); line-height:1.45; margin-top:7px;}
@media (max-width:1024px){.sector-grid{grid-template-columns:repeat(3,1fr);}}
@media (max-width:640px){.sector-grid{grid-template-columns:repeat(2,1fr);}}

/* partner cards */
.partner-card{background:#fff; border:1px solid var(--line); border-radius:18px; padding:30px; display:flex; flex-direction:column; min-width:0;}
.partner-card .pl{height:38px; display:flex; align-items:center; margin-bottom:20px;}
.partner-card .pl img{max-height:38px; max-width:100%; width:auto; object-fit:contain;}
.partner-card .pl .txt{font-size:22px; font-weight:800; color:var(--navy); letter-spacing:-.01em;}
.partner-card .tier{display:inline-flex; align-self:flex-start; font-family:var(--mono); font-size:11.5px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--blue); background:var(--blue-ghost); border-radius:999px; padding:6px 13px; margin-bottom:14px;}
.partner-card p{font-size:15px; color:var(--muted); line-height:1.5;}

/* tech logo row */
.tech-row{display:grid; grid-template-columns:repeat(8,1fr); gap:14px;}
.tech-tile{display:grid; place-items:center; background:#fff; border:1px solid var(--line); border-radius:14px; height:94px; padding:16px;}
.tech-tile img{max-height:46px; max-width:100%; width:auto; object-fit:contain;}
@media (max-width:1024px){.tech-row{grid-template-columns:repeat(4,1fr);}}
@media (max-width:560px){.tech-row{grid-template-columns:repeat(3,1fr);}}

/* 3-step flow */
.step3{display:grid; grid-template-columns:repeat(3,1fr); gap:22px;}
.step-card{background:#fff; border:1px solid var(--line); border-top:3px solid var(--blue); border-radius:16px; padding:30px;}
.step-card .sn{font-family:var(--mono); font-size:14px; font-weight:600; color:var(--blue); letter-spacing:.1em;}
.step-card h3{font-size:24px; font-weight:800; letter-spacing:-.01em; margin:14px 0 10px;}
.step-card p{font-size:16px; color:var(--muted); line-height:1.5;}
.navy-section .step-card{background:rgba(255,255,255,.05); border-color:var(--line-navy); border-top-color:var(--blue-bright);}
.navy-section .step-card h3{color:#fff;}
.navy-section .step-card p{color:rgba(255,255,255,.68);}
@media (max-width:820px){.step3{grid-template-columns:1fr;}}

/* office cards */
.office-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:18px;}
.office-card{background:#fff; border:1px solid var(--line); border-radius:16px; padding:26px;}
.office-card.hq{background:var(--navy); border-color:transparent;}
.office-card .flag{font-size:26px; line-height:1; margin-bottom:14px;}
.office-card h3{font-size:21px; font-weight:800; letter-spacing:-.01em;}
.office-card .role{font-family:var(--mono); font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--blue); margin-top:8px;}
.office-card.hq h3{color:#fff;} .office-card.hq .role{color:var(--blue-bright);}
@media (max-width:900px){.office-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:520px){.office-grid{grid-template-columns:1fr;}}

/* careers */
.role-card{display:flex; align-items:center; gap:22px; background:#fff; border:1px solid var(--line); border-radius:16px;
  padding:24px 28px; transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s;}
.role-card:hover{transform:translateY(-3px); box-shadow:var(--shadow); border-color:transparent;}
.role-card .rc-ic{width:48px; height:48px; flex:none; border-radius:12px; background:var(--blue-ghost); display:grid; place-items:center;}
.role-card .rc-ic svg{width:24px; height:24px; stroke:var(--blue); fill:none; stroke-width:1.7;}
.role-card .rc-body{flex:1; min-width:0;}
.role-card h3{font-size:20px; font-weight:700; letter-spacing:-.01em;}
.role-card p{font-size:14.5px; color:var(--muted); margin-top:5px; line-height:1.45;}
.role-card .rc-tags{display:flex; gap:8px; flex-wrap:wrap; flex:none;}
.role-card .rc-tags span{font-family:var(--mono); font-size:11.5px; letter-spacing:.04em; text-transform:uppercase;
  color:var(--muted); background:var(--light); border-radius:7px; padding:6px 11px;}
@media (max-width:700px){.role-card{flex-wrap:wrap; gap:14px;}}
.value-card{background:#fff; border:1px solid var(--line); border-radius:16px; padding:28px;}
.value-card .vn{font-family:var(--mono); font-size:13px; color:var(--blue); font-weight:600; letter-spacing:.1em;}
.value-card h3{font-size:21px; font-weight:700; letter-spacing:-.01em; margin:12px 0 9px;}
.value-card p{font-size:15px; color:var(--muted); line-height:1.5;}
.perk{display:flex; gap:14px; align-items:flex-start;}
.perk .pi{width:38px; height:38px; flex:none; border-radius:10px; background:rgba(255,255,255,.08); display:grid; place-items:center; color:var(--blue-bright);}
.perk .pi svg{width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.8;}
.perk b{display:block; font-size:17px; font-weight:700; color:#fff;}
.perk span{display:block; font-size:14.5px; color:rgba(255,255,255,.64); margin-top:4px; line-height:1.45;}

/* accreditation strip (large, legible competency badge) */
.accred{display:flex; align-items:center; gap:30px; background:#fff; border:1px solid var(--line);
  border-radius:18px; padding:26px 32px; flex-wrap:wrap;}
.accred img{height:72px; width:auto; flex:none;}
.accred .ac-txt{flex:1; min-width:260px;}
.accred .ac-txt b{display:block; font-size:19px; font-weight:700; letter-spacing:-.01em; color:var(--ink);}
.accred .ac-txt span{display:block; font-size:15px; line-height:1.5; color:var(--muted); margin-top:7px;}
@media (max-width:560px){.accred{padding:22px;} .accred img{height:54px;}}

/* ============================================================
   C2 (continuous-curvature) corners on button-like controls.
   Placed last so it overrides earlier border-radius values.
   Progressive enhancement: browsers without corner-shape
   support simply keep the existing pill shape.
   ============================================================ */
@supports (corner-shape: squircle){
  .btn, .lang-toggle, .burger, .fn-right a, .pill, .chip, .role-card .rc-tags span{corner-shape:squircle;}
  .btn{border-radius:20px;}
  .btn-lg{border-radius:22px;}
  .lang-toggle{border-radius:15px;}
  .burger{border-radius:15px;}
  .fn-right a{border-radius:15px;}
  .pill, .chip{border-radius:14px;}
}

/* Last nav dropdown (Company): same start anchor as the rest; the JS clamp
   pulls it back if the panel would overflow the viewport. */
.nav-links .has-drop:last-child .drop{
  inset-inline-start:0;
  inset-inline-end:auto;
  transform:translateY(10px);
}
.nav-links .has-drop:last-child:hover .drop,
.nav-links .has-drop:last-child:focus-within .drop{transform:translateY(0);}
html[dir="rtl"] .nav-links .has-drop:last-child .drop{transform:translateY(10px);}
html[dir="rtl"] .nav-links .has-drop:last-child:hover .drop,
html[dir="rtl"] .nav-links .has-drop:last-child:focus-within .drop{transform:translateY(0);}

/* Dropdown items are grid children: release the min-content floor so long
   descriptions wrap inside the panel instead of overflowing its right edge. */
.drop-grid{min-width:0;}
.drop-grid a{min-width:0;}
.drop-grid a > span{min-width:0;}
.drop .dt, .drop .dd{overflow-wrap:anywhere;}

/* Root cause: .nav-links a carries white-space:nowrap (added so top-level
   labels never wrap). Dropdown links inherit it, so long descriptions can't
   wrap and spill past the panel. Reset it inside the dropdown. */
.drop a, .drop .dt, .drop .dd, .drop-foot{white-space:normal;}

/* ============================================================
   CONNECTED SANAD ECOSYSTEM — hero visualization
   ============================================================ */
.eco{position:relative; width:100%; max-width:520px; margin-inline:auto;}
.eco-stage{position:relative; width:100%; aspect-ratio:1; transform-style:preserve-3d;}
.eco [data-depth]{will-change:transform;}

/* AI layer: a soft woven field behind everything */
.eco-ailayer{position:absolute; inset:4%; border-radius:50%; pointer-events:none;
  background:
    radial-gradient(circle at 50% 50%, rgba(91,123,255,.20), rgba(42,107,255,.06) 46%, transparent 68%),
    conic-gradient(from 0deg, rgba(59,123,255,.16), transparent 22%, rgba(59,123,255,.14) 48%, transparent 72%, rgba(59,123,255,.16));
  filter:blur(14px); animation:ecoDrift 26s linear infinite;}
@keyframes ecoDrift{to{transform:rotate(360deg);}}

.eco-airing{position:absolute; border-radius:50%; pointer-events:none; border:1px dashed rgba(143,182,255,.22);}
.eco-airing.r1{inset:12%; animation:ecoSpin 44s linear infinite;}
.eco-airing.r2{inset:1%; border-style:solid; border-color:rgba(143,182,255,.12); animation:ecoSpin 70s linear infinite reverse;}
@keyframes ecoSpin{to{transform:rotate(360deg);}}

/* connection lines + pulses */
.eco-links{position:absolute; inset:0; width:100%; height:100%; overflow:visible; pointer-events:none;}
.eco-paths path{transition:stroke-opacity .5s ease, stroke-width .5s ease;}
.eco-paths path.hot{stroke:#8fb6ff; stroke-opacity:1; stroke-width:2.2;}

/* central hub */
.eco-hub{position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
  display:flex; flex-direction:column; align-items:center; gap:12px; z-index:3;}
.eco-hub .hub-ring{position:absolute; top:-14px; left:50%; margin-left:-53px; width:106px; height:106px;
  border-radius:50%; border:1px solid rgba(143,182,255,.3); animation:hubPulse 3.6s ease-out infinite;}
@keyframes hubPulse{0%{transform:scale(.86); opacity:.9;}70%{transform:scale(1.28); opacity:0;}100%{opacity:0;}}
.eco-hub .hub-core{width:78px; height:78px; border-radius:24px; display:grid; place-items:center;
  background:linear-gradient(150deg, rgba(255,255,255,.16), rgba(255,255,255,.04));
  border:1px solid rgba(255,255,255,.22); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  box-shadow:0 20px 50px -18px rgba(0,0,0,.7), 0 0 46px rgba(42,107,255,.42); corner-shape:squircle;}
.eco-hub .hub-core img{width:40px; height:auto; filter:brightness(0) invert(1);}
.eco-hub .hub-label{font-size:14px; font-weight:700; color:#fff; letter-spacing:-.01em; white-space:nowrap;
  text-shadow:0 2px 10px rgba(0,0,0,.6);}

/* product nodes */
.eco-nodes{position:absolute; inset:0; z-index:2;}
.eco-node{position:absolute; transform:translate(-50%,-50%);
  display:flex; align-items:center; gap:9px; padding:10px 14px 10px 10px; border-radius:15px;
  background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(9px); -webkit-backdrop-filter:blur(9px); white-space:nowrap;
  box-shadow:0 12px 30px -14px rgba(0,0,0,.75); corner-shape:squircle;
  transition:background .45s ease, border-color .45s ease, box-shadow .45s ease, transform .45s cubic-bezier(.2,.7,.2,1);}
.eco-node .n-ic{width:30px; height:30px; flex:none; border-radius:9px; display:grid; place-items:center;
  background:color-mix(in srgb, var(--c) 42%, transparent); transition:background .45s ease;}
.eco-node .n-ic svg{width:17px; height:17px; stroke:#fff; fill:none; stroke-width:1.8;}
.eco-node b{font-size:13.5px; font-weight:700; color:#fff; letter-spacing:-.01em;}
.eco-node.hot{background:rgba(255,255,255,.14); border-color:color-mix(in srgb, var(--c) 70%, transparent);
  transform:translate(-50%,-50%) scale(1.07);
  box-shadow:0 16px 40px -14px rgba(0,0,0,.8), 0 0 30px color-mix(in srgb, var(--c) 45%, transparent);}
.eco-node.hot .n-ic{background:var(--c);}

/* AI + Microsoft chips */
.eco-chip{position:absolute; display:flex; align-items:center; gap:10px; z-index:4;
  padding:10px 15px; border-radius:15px; white-space:nowrap;
  background:rgba(10,20,38,.72); border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  box-shadow:0 16px 40px -16px rgba(0,0,0,.8); corner-shape:squircle;}
.eco-chip .ec-ic{width:30px; height:30px; flex:none; border-radius:9px; display:grid; place-items:center;
  background:linear-gradient(140deg,#3b7bff,#2A6BFF); color:#fff;}
.eco-chip .ec-ic svg{width:17px; height:17px;}
.eco-chip .ec-ms{width:26px; height:26px; flex:none; display:grid; place-items:center;}
.eco-chip .ec-ms svg{width:20px; height:20px;}
.eco-chip b{display:block; font-size:13px; font-weight:700; color:#fff; line-height:1.15;}
.eco-chip i{display:block; font-style:normal; font-size:11px; color:rgba(255,255,255,.6); margin-top:2px;}
.chip-ai-layer{top:-6px; inset-inline-start:-10px;}
.chip-ms-layer{bottom:-4px; inset-inline-end:-10px;}
.eco-chip.hot{border-color:rgba(143,182,255,.55); box-shadow:0 16px 40px -16px rgba(0,0,0,.8), 0 0 26px rgba(42,107,255,.5);}

/* flow caption */
.eco-flow{display:flex; align-items:center; justify-content:center; gap:10px; margin-top:0; margin-bottom:14px; min-height:22px;}
.eco-flow .ef-dot{width:7px; height:7px; border-radius:50%; background:#3b7bff; flex:none;
  box-shadow:0 0 12px rgba(59,123,255,.9); animation:efBlink 1.8s ease-in-out infinite;}
@keyframes efBlink{0%,100%{opacity:1;}50%{opacity:.35;}}
.eco-flow .ef-text{font-family:var(--mono); font-size:12.5px; letter-spacing:.05em; color:rgba(255,255,255,.66);
  transition:opacity .4s ease;}
.eco-flow.fading .ef-text{opacity:0;}

@media (max-width:1080px){
  .eco{max-width:440px;}
  .eco-node{padding:8px 12px 8px 8px;} .eco-node b{font-size:12.5px;}
  .eco-hub .hub-core{width:66px; height:66px; border-radius:20px;} .eco-hub .hub-core img{width:34px;}
}
@media (max-width:620px){
  .eco{max-width:330px;}
  .eco-node .n-ic{width:26px; height:26px;} .eco-node .n-ic svg{width:15px; height:15px;}
  .eco-node{padding:7px 10px 7px 7px; gap:7px;} .eco-node b{font-size:11.5px;}
  .eco-hub .hub-core{width:58px; height:58px; border-radius:18px;} .eco-hub .hub-core img{width:29px;}
  .eco-hub .hub-label{font-size:12.5px;}
  .eco-chip i{display:none;} .eco-chip{padding:8px 12px;}
  .chip-ai-layer{top:-14px; inset-inline-start:-6px;} .chip-ms-layer{bottom:-12px; inset-inline-end:-6px;}
  .eco-flow .ef-text{font-size:11px;}
}
@media (prefers-reduced-motion:reduce){
  .eco-ailayer,.eco-airing,.eco-hub .hub-ring,.eco-flow .ef-dot{animation:none !important;}
}

/* parallax offsets composed via custom properties so they never clobber
   an element's own centering transform */
.eco [data-depth]{transform:translate3d(var(--px,0),var(--py,0),0);}
.eco .eco-hub[data-depth]{transform:translate(-50%,-50%) translate3d(var(--px,0),var(--py,0),0);}
.eco .eco-ailayer[data-depth]{transform:translate3d(var(--px,0),var(--py,0),0);}
.eco .eco-airing[data-depth]{transform:none;}

/* Layer labels moved out of the circular stage — no absolute pinning, so they
   can never intersect the node orbit at any viewport. */
.eco-layers{display:flex; justify-content:center; gap:12px; flex-wrap:wrap; margin-top:20px;}
.eco-layers .eco-chip{position:static; inset:auto;}
@media (max-width:620px){
  .eco-layers{gap:8px; margin-top:16px;}
  .eco-layers .eco-chip i{display:none;}
}

/* ---- larger hub carrying the full white Sanad lockup (no filter hacks) ---- */
.eco{--hub-w:186px; --hub-h:80px; max-width:600px;}
.eco .eco-hub .hub-core{
  width:var(--hub-w); height:var(--hub-h); border-radius:24px; padding:0 20px;
  display:grid; place-items:center;}
.eco .eco-hub .hub-core img{width:auto; height:calc(var(--hub-h) - 34px); max-width:100%; filter:none;}
.eco .eco-hub .hub-ring{
  top:0; left:50%; margin-left:calc(var(--hub-w) / -2);
  width:var(--hub-w); height:var(--hub-h); border-radius:24px; corner-shape:squircle;}
@media (max-width:1080px){ .eco{--hub-w:164px; --hub-h:72px; max-width:500px;} }
@media (max-width:620px){ .eco{--hub-w:132px; --hub-h:58px; max-width:340px;}
  .eco .eco-hub .hub-core{border-radius:18px; padding:0 14px;}
  .eco .eco-hub .hub-ring{border-radius:18px;} }

/* Hub must never grow past the orbit's inner clearance on narrow stages. */
.eco-stage{container-type:inline-size;}
.eco .eco-hub .hub-core{width:min(var(--hub-w), 44cqw); height:min(var(--hub-h), 19cqw);}
.eco .eco-hub .hub-ring{width:min(var(--hub-w), 44cqw); height:min(var(--hub-h), 19cqw);
  margin-left:calc(min(var(--hub-w), 44cqw) / -2);}
.eco .eco-hub .hub-core img{height:auto; max-height:56%; max-width:82%;}

/* Compact the node cards when the stage itself is small, so the widest label
   still clears the hub regardless of viewport. */
@container (max-width: 430px){
  .eco-stage .eco-node{padding:6px 10px 6px 6px; gap:7px;}
  .eco-stage .eco-node b{font-size:11.5px;}
  .eco-stage .eco-node .n-ic{width:24px; height:24px; border-radius:8px;}
  .eco-stage .eco-node .n-ic svg{width:14px; height:14px;}
}

/* Logo art was ~46% transparent padding (now tight-cropped, aspect ~3.4).
   Size it from the card width so it reads at full scale. */
.eco .eco-hub .hub-core{padding:0 14px;}
.eco .eco-hub .hub-core img{width:100%; height:auto; max-height:none; max-width:none;}

/* Hub label moved out of the circular stage: inside it, its row sat exactly in
   the band the side nodes occupy on small screens. As a caption it can never
   intersect the orbit, and the clearance budget is just the hub card again. */
.eco-caption{margin-top:18px; text-align:center; font-size:17px; font-weight:700;
  color:#fff; letter-spacing:-.01em;}
.eco .eco-hub{gap:0;}
.eco .eco-hub .hub-label{display:none;}
@media (max-width:620px){ .eco-caption{margin-top:14px; font-size:15px;} }

/* Very small stages (≈320px viewports): compact the cards further so the
   widest labels still fit inside the orbit without spilling the stage. */
@container (max-width: 330px){
  .eco-stage .eco-node{padding:5px 8px 5px 5px; gap:6px; border-radius:12px;}
  .eco-stage .eco-node b{font-size:10.5px;}
  .eco-stage .eco-node .n-ic{width:21px; height:21px; border-radius:7px;}
  .eco-stage .eco-node .n-ic svg{width:12px; height:12px;}
}

/* ============================================================
   ECOSYSTEM REFINEMENT — no orbit rings, stronger core,
   connections as the focal effect, capabilities set apart.
   ============================================================ */

/* orbit scaffolding removed entirely */
.eco .eco-ailayer, .eco .eco-airing{display:none !important;}

/* soft light pooling around the platform core (no hard circle edge) */
.eco-corelight{position:absolute; inset:0; pointer-events:none; border-radius:50%;
  background:radial-gradient(closest-side at 50% 49%, rgba(66,124,255,.30), rgba(42,107,255,.10) 46%, transparent 74%);
  filter:blur(24px); animation:coreBreathe 9s ease-in-out infinite;}
@keyframes coreBreathe{0%,100%{opacity:.85; transform:scale(1);}50%{opacity:1; transform:scale(1.05);}}

/* --- connections carry the effect: quiet at rest, luminous when active --- */
.eco-paths path{stroke:rgba(143,182,255,.14); stroke-opacity:1; stroke-width:1;
  transition:stroke .55s ease, stroke-width .55s ease, filter .55s ease;}
.eco-paths path.hot{stroke:#9dc0ff; stroke-width:2.1;
  filter:drop-shadow(0 0 5px rgba(93,142,255,.85));}

/* --- central core: an illuminated platform, not another node --- */
.eco .eco-hub .hub-base{position:absolute; left:50%; top:50%; width:190%; height:78%;
  transform:translate(-50%,-32%); border-radius:50%; pointer-events:none;
  background:radial-gradient(closest-side, rgba(70,128,255,.34), rgba(42,107,255,.10) 58%, transparent 78%);
  filter:blur(13px);}
.eco .eco-hub .hub-core{
  background:linear-gradient(158deg, rgba(255,255,255,.20), rgba(255,255,255,.05) 52%, rgba(255,255,255,.09));
  border:1px solid rgba(255,255,255,.30);
  box-shadow:0 24px 60px -20px rgba(0,0,0,.8), 0 0 60px rgba(42,107,255,.34),
             inset 0 1px 0 rgba(255,255,255,.34);}
.eco .eco-hub .hub-ring{border-color:rgba(157,192,255,.34);}

/* --- platform-wide capabilities, set apart from the product nodes --- */
.eco-layers{flex-direction:column; align-items:center; gap:12px; margin-top:22px;
  padding-top:20px; border-top:1px solid rgba(255,255,255,.10);}
.eco-caps-label{font-family:var(--mono); font-size:11px; letter-spacing:.18em;
  text-transform:uppercase; color:rgba(255,255,255,.42);}
.eco-caps{display:flex; justify-content:center; gap:12px; flex-wrap:wrap;}
.eco-caps .eco-chip{background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.12);
  border-radius:14px; padding:11px 16px;}
.eco-caps .eco-chip i{color:rgba(255,255,255,.55);}
@media (max-width:620px){
  .eco-layers{margin-top:16px; padding-top:14px; gap:10px;}
  .eco-caps{gap:8px;} .eco-caps .eco-chip i{display:none;}
}

/* tighter hub cap on small stages so side nodes keep their clearance */
.eco .eco-hub .hub-core, .eco .eco-hub .hub-ring{width:min(var(--hub-w), 40cqw);}
.eco .eco-hub .hub-ring{margin-left:calc(min(var(--hub-w), 40cqw) / -2);}

/* below ~290px of stage (sub-320px viewports) shrink the cards once more so
   the outermost nodes still fit inside the stage */
@container (max-width: 290px){
  .eco-stage .eco-node{padding:4px 7px 4px 4px; gap:5px; border-radius:10px;}
  .eco-stage .eco-node b{font-size:9.5px;}
  .eco-stage .eco-node .n-ic{width:18px; height:18px; border-radius:6px;}
  .eco-stage .eco-node .n-ic svg{width:11px; height:11px;}
}

/* ---- balanced composition: bigger stage, capabilities back side-by-side ---- */
.eco{max-width:640px;}
@media (max-width:1080px){ .eco{max-width:520px;} }
@media (max-width:620px){ .eco{max-width:350px;} }

/* revert the stacked "Across the entire platform" block */
.eco-caps-label{display:none;}
.eco-layers{flex-direction:row; justify-content:center; align-items:center; gap:12px;
  margin-top:20px; padding-top:0; border-top:none;}
.eco-caps{display:contents;}
@media (max-width:620px){ .eco-layers{margin-top:16px; gap:8px;} }

/* keep the two capability cards on one row for as long as possible */
.eco-layers{flex-wrap:nowrap;}
.eco-caps .eco-chip{padding:10px 13px; min-width:0;}
.eco-caps .eco-chip .ec-tx{min-width:0;}
.eco-caps .eco-chip i{font-size:10.5px; overflow-wrap:anywhere;}
@media (max-width:520px){ .eco-caps .eco-chip i{display:none;} }

/* hero: give the ecosystem more room than the copy column */
.hero-split{grid-template-columns:.82fr 1.18fr;}
@media (max-width:900px){ .hero-split{grid-template-columns:1fr;} }
.hero-split .eco{max-width:700px;}
@media (max-width:1080px){ .hero-split .eco{max-width:560px;} }
@media (max-width:620px){ .hero-split .eco{max-width:350px;} }

/* Guard the copy column: the .82/1.18 ratio only applies where the left
   column still clears ~420px with display type at full size. Below that a
   gentler ratio, then a single column. */
@media (max-width:1150px){ .hero-split{grid-template-columns:1.02fr .98fr;} }
@media (max-width:1080px){ .hero-split{grid-template-columns:1fr;} }

/* Desktop: the 1240px wrap caps the copy column at ~422px, which equals the
   widest word at the 82px display max. Give the hero a wider wrap and a
   gentler ratio so the left track clears ~500px. */
@media (min-width:1151px){ .hero-split{grid-template-columns:.95fr 1.05fr;} }
.hero-split .display{font-size:clamp(40px,4.6vw,68px);}

/* ---- product logo lockups (icon + name) ---- */
.prod-lock{display:inline-flex; align-items:center; gap:12px; border-radius:13px;
  background:color-mix(in srgb, var(--c) 12%, transparent); padding:7px 18px 7px 7px;}
.prod-lock .pl-ic{width:38px; height:38px; flex:none; border-radius:9px; display:grid; place-items:center;
  background:color-mix(in srgb, var(--c) 16%, transparent);}
.prod-lock .pl-ic svg{width:22px; height:22px; stroke:var(--c); fill:none; stroke-width:1.75;}
.prod-lock .prod-tag{background:none; padding:0; border-radius:0;}
html[dir="rtl"] .prod-lock{padding:7px 7px 7px 18px;}

.phero .ptag-lock, span.ptag.ptag-lock{gap:12px; padding:7px 18px 7px 7px; border-radius:13px;}
.ptag-lock .pt-ic{width:38px; height:38px; flex:none; border-radius:9px; display:grid; place-items:center;
  background:rgba(255,255,255,.18);}
.ptag-lock .pt-ic svg{width:22px; height:22px; stroke:#fff; fill:none; stroke-width:1.75;}
.ptag-lock .pt-nm{white-space:nowrap;}
html[dir="rtl"] .phero .ptag-lock, html[dir="rtl"] span.ptag.ptag-lock{padding:7px 7px 7px 18px;}
@media (max-width:620px){
  .prod-lock .pl-ic{width:40px; height:40px; border-radius:11px;}
  .prod-lock .pl-ic svg{width:22px; height:22px;}
}

/* ============================================================
   PLATFORM CAPABILITIES — borderless, boxless treatment that
   separates spanning capabilities from the product nodes.
   ============================================================ */
.eco-layers{flex-direction:column; align-items:center; gap:14px; margin-top:24px;
  padding-top:0; border-top:none;}
.eco-caps-label{display:block; font-family:var(--mono); font-size:10.5px; letter-spacing:.22em;
  text-transform:uppercase; color:rgba(255,255,255,.34);}
.eco-caps{display:flex; align-items:center; justify-content:center; gap:26px; flex-wrap:wrap;}

/* no card, no border — icon + text only */
.eco-cap{display:flex; align-items:center; gap:12px; background:none; border:none;
  padding:0; box-shadow:none;}
.eco-cap .cap-ic{position:relative; width:34px; height:34px; flex:none; display:grid; place-items:center;
  border-radius:11px; corner-shape:squircle; overflow:hidden;
  background:linear-gradient(140deg,#3b7bff,#2A6BFF); color:#fff;
  box-shadow:0 0 22px rgba(42,107,255,.42);}
.eco-cap .cap-ic svg{position:relative; z-index:2; width:19px; height:19px;}
.eco-cap .cap-ic-plain{background:none; box-shadow:none; border-radius:0;}
.eco-cap .cap-ic-plain svg{width:24px; height:24px;}
.eco-cap b{display:block; font-size:14px; font-weight:700; color:#fff; letter-spacing:-.01em; line-height:1.2;}
.eco-cap i{display:block; font-style:normal; font-size:11.5px; color:rgba(255,255,255,.55);
  margin-top:3px; line-height:1.3;}

/* subtle shimmer sweeping the Sanad AI mark */
.cap-shimmer{position:absolute; inset:-40%; z-index:1; pointer-events:none;
  background:linear-gradient(115deg, transparent 34%, rgba(255,255,255,.55) 50%, transparent 66%);
  animation:capShimmer 4.6s ease-in-out infinite;}
@keyframes capShimmer{0%{transform:translateX(-120%);}55%,100%{transform:translateX(120%);}}
.cap-ai .cap-ic{animation:capGlow 4.6s ease-in-out infinite;}
@keyframes capGlow{0%,100%{box-shadow:0 0 18px rgba(42,107,255,.34);}50%{box-shadow:0 0 30px rgba(59,123,255,.72);}}

/* hairline separator between the two capabilities */
.cap-div{width:1px; height:30px; flex:none; background:rgba(255,255,255,.14);}

@media (max-width:620px){
  .eco-layers{margin-top:18px; gap:11px;}
  .eco-caps{gap:16px;}
  .eco-cap i{display:none;}
  .cap-div{height:22px;}
}
@media (prefers-reduced-motion:reduce){
  .cap-shimmer{animation:none; opacity:0;}
  .cap-ai .cap-ic{animation:none;}
}

/* active-state highlight for the boxless capabilities */
.eco-cap{transition:opacity .45s ease;}
.eco-cap.hot .cap-ic{box-shadow:0 0 34px rgba(59,123,255,.85);}
.eco-cap.hot b{color:#fff;}
.eco-cap.hot i{color:rgba(255,255,255,.78);}

/* ---- product nodes as links, with a one-line tooltip ---- */
.eco-node{text-decoration:none; cursor:pointer;}
.eco-node:hover{background:rgba(255,255,255,.13); border-color:color-mix(in srgb, var(--c) 62%, transparent);
  transform:translate(-50%,-50%) scale(1.06);
  box-shadow:0 16px 40px -14px rgba(0,0,0,.8), 0 0 26px color-mix(in srgb, var(--c) 42%, transparent);}
.eco-node:hover .n-ic{background:var(--c);}
.eco-node:focus-visible{outline:2px solid #9dc0ff; outline-offset:4px;}

.n-tip{position:absolute; bottom:calc(100% + 12px); left:50%; transform:translateX(-50%) translateY(5px);
  width:max-content; max-width:216px; z-index:12; pointer-events:none;
  background:rgba(8,16,32,.94); border:1px solid rgba(255,255,255,.16); border-radius:12px;
  corner-shape:squircle; padding:11px 14px; text-align:start; white-space:normal;
  box-shadow:0 18px 44px -16px rgba(0,0,0,.85);
  opacity:0; visibility:hidden; transition:opacity .22s var(--ease), transform .22s var(--ease);}
.n-tip b{display:block; font-size:12.5px; font-weight:700; color:#fff; letter-spacing:-.005em;}
.n-tip i{display:block; font-style:normal; font-size:11.5px; line-height:1.4;
  color:rgba(255,255,255,.66); margin-top:3px;}
.n-tip::after{content:""; position:absolute; top:100%; left:50%; margin-left:-5px;
  border:5px solid transparent; border-top-color:rgba(8,16,32,.94);}
.eco-node:hover .n-tip, .eco-node:focus-visible .n-tip{opacity:1; visibility:visible; transform:translateX(-50%) translateY(0);}

/* bottom-row nodes: flip the tooltip below so it never leaves the stage */
.eco-node.tip-below .n-tip{bottom:auto; top:calc(100% + 12px); transform:translateX(-50%) translateY(-5px);}
.eco-node.tip-below .n-tip::after{top:auto; bottom:100%; border-top-color:transparent; border-bottom-color:rgba(8,16,32,.94);}
.eco-node.tip-below:hover .n-tip, .eco-node.tip-below:focus-visible .n-tip{transform:translateX(-50%) translateY(0);}

/* keep edge tooltips inside the stage */
.eco-node.tip-start .n-tip{left:0; transform:translateX(0) translateY(5px);}
.eco-node.tip-start .n-tip::after{left:26px;}
.eco-node.tip-start:hover .n-tip, .eco-node.tip-start:focus-visible .n-tip{transform:translateX(0) translateY(0);}
.eco-node.tip-end .n-tip{left:auto; right:0; transform:translateX(0) translateY(5px);}
.eco-node.tip-end .n-tip::after{left:auto; right:26px;}
.eco-node.tip-end:hover .n-tip, .eco-node.tip-end:focus-visible .n-tip{transform:translateX(0) translateY(0);}
.eco-node.tip-start.tip-below .n-tip, .eco-node.tip-end.tip-below .n-tip{transform:translateX(0) translateY(-5px);}
.eco-node.tip-start.tip-below:hover .n-tip, .eco-node.tip-end.tip-below:hover .n-tip{transform:translateX(0) translateY(0);}

@media (max-width:620px){ .n-tip{max-width:170px; padding:9px 11px;} .n-tip i{display:none;} }

/* capabilities are links with the same tooltip treatment as product nodes */
.eco-cap{position:relative; text-decoration:none; cursor:pointer;
  transition:opacity .3s ease, transform .3s var(--ease);}
.eco-cap:hover{transform:translateY(-2px);}
.eco-cap:hover b{color:#fff;}
.eco-cap:hover i{color:rgba(255,255,255,.78);}
.cap-ai:hover .cap-ic{box-shadow:0 0 32px rgba(59,123,255,.8);}
.eco-cap:focus-visible{outline:2px solid #9dc0ff; outline-offset:5px; border-radius:12px;}
/* these sit at the very bottom of the visual, so open the tooltip upward and
   centre it on the row rather than the node grid */
.cap-tip{bottom:calc(100% + 14px); top:auto; max-width:250px;}
.eco-cap:hover .cap-tip, .eco-cap:focus-visible .cap-tip{opacity:1; visibility:visible; transform:translateX(-50%) translateY(0);}
@media (max-width:620px){ .cap-tip{max-width:200px;} .cap-tip i{display:block;} }

/* "by Newtecx" attribution beneath the Sanad core */
.eco-by{display:flex; align-items:center; justify-content:center; gap:9px; margin-top:9px;
  text-decoration:none; opacity:.62; transition:opacity .28s ease, transform .28s var(--ease);}
.eco-by:hover{opacity:1; transform:translateY(-1px);}
.eco-by:focus-visible{outline:2px solid #9dc0ff; outline-offset:5px; border-radius:8px; opacity:1;}
.eco-by-lbl{font-family:var(--mono); font-size:10px; letter-spacing:.16em; text-transform:uppercase;
  color:rgba(255,255,255,.55);}
.eco-by img{height:14px; width:auto;}
@media (max-width:620px){ .eco-by{margin-top:7px;} .eco-by img{height:12px;} }

/* larger Newtecx mark + its own tooltip */
.eco-by{position:relative; margin-top:11px; gap:10px;}
.eco-by img{height:20px;}
.eco-by-lbl{font-size:10.5px;}
.by-tip{bottom:calc(100% + 12px); top:auto; max-width:246px;}
.eco-by:hover .by-tip, .eco-by:focus-visible .by-tip{opacity:1; visibility:visible; transform:translateX(-50%) translateY(0);}
@media (max-width:620px){ .eco-by img{height:17px;} .by-tip{max-width:196px;} }

/* hero left column: contrast + rhythm polish */
.hero .hero-lead{color:rgba(255,255,255,.86);}
.hero .hero-meta{color:rgba(255,255,255,.68);}

/* ============================================================
   HERO REBALANCE — ecosystem becomes the primary visual
   ============================================================ */
/* 42 / 58 split above the copy-column guard width */
@media (min-width:1151px){ .hero-split{grid-template-columns:.84fr 1.16fr;} }

/* headline down ~12% */
.hero-split .display{font-size:clamp(38px,4.1vw,60px);}

/* ecosystem up ~18% */
.hero-split .eco{max-width:800px;}
@media (max-width:1080px){ .hero-split .eco{max-width:600px;} }
@media (max-width:620px){ .hero-split .eco{max-width:360px;} }

/* larger, more readable product cards */
.eco-node{padding:12px 18px 12px 12px; gap:12px; border-radius:17px;}
.eco-node .n-ic{width:36px; height:36px; border-radius:11px;}
.eco-node .n-ic svg{width:20px; height:20px;}
.eco-node b{font-size:15.5px;}

/* central platform slightly more prominent */
.eco{--hub-w:216px; --hub-h:92px;}
@media (max-width:1080px){ .eco{--hub-w:180px; --hub-h:78px;} }
@media (max-width:620px){ .eco{--hub-w:136px; --hub-h:60px;} }
.eco .eco-hub .hub-core{border:1px solid rgba(255,255,255,.34);
  box-shadow:0 26px 66px -20px rgba(0,0,0,.82), 0 0 72px rgba(42,107,255,.40),
             inset 0 1px 0 rgba(255,255,255,.38);}
.eco-caption{font-size:18.5px;}

/* capabilities stay proportionally smaller than the ecosystem */
.eco-cap .cap-ic{width:31px; height:31px;}
.eco-cap .cap-ic svg{width:17px; height:17px;}
.eco-cap .cap-ic-plain svg{width:21px; height:21px;}
.eco-cap b{font-size:13px;}
.eco-cap i{font-size:11px;}

/* comfortable gutter between the columns */
.hero-split{gap:clamp(48px,5vw,84px);}

/* mid tier: stages too small for the full-size cards but above the 430px tier */
@container (min-width: 431px) and (max-width: 560px){
  .eco-stage .eco-node{padding:8px 12px 8px 8px; gap:9px; border-radius:14px;}
  .eco-stage .eco-node b{font-size:13px;}
  .eco-stage .eco-node .n-ic{width:28px; height:28px; border-radius:9px;}
  .eco-stage .eco-node .n-ic svg{width:16px; height:16px;}
}

/* ---- right-column vertical balance ---- */
/* nudge the whole ecosystem down so it centres against the left column */
.hero-split .eco{margin-top:26px;}
/* tighten the gaps around the caption and pull the capability row up */
.eco-caption{margin-top:10px;}
.eco-by{margin-top:8px;}
.eco-layers{margin-top:14px;}
.eco-flow{margin-top:0;}
@media (max-width:900px){ .hero-split .eco{margin-top:8px;} }
@media (max-width:620px){
  .eco-caption{margin-top:8px;} .eco-layers{margin-top:11px;} .eco-flow{margin-bottom:9px;}
}

/* halve the hero's top padding so the section starts closer to the header */
.hero{padding-block:clamp(36px,5.5vw,75px) clamp(60px,8vw,110px);}
#sanad.hero{padding-block:clamp(14px,2vw,26px) clamp(60px,8vw,110px);}
/* the ecosystem's downward nudge is no longer needed with the tighter top */
.hero-split .eco{margin-top:0;}
/* pull the stage up under the flow caption (top nodes sit low in the square stage) */
.hero-split .eco .eco-stage{margin-top:clamp(-72px,-6vw,-36px);}
@media (max-width:900px){ .hero-split .eco{margin-top:0;} .hero-split .eco .eco-stage{margin-top:-24px;} }

/* On small stages the hub's half-width must stay inside the side nodes' inner
   edge (x=70/330 of the 400 viewBox → 17.5%/82.5%). 30cqw keeps ~2.5% clear. */
@container (max-width: 560px){
  .eco-stage .eco-hub .hub-core,
  .eco-stage .eco-hub .hub-ring{width:min(var(--hub-w), 30cqw);}
  .eco-stage .eco-hub .hub-ring{margin-left:calc(min(var(--hub-w), 30cqw) / -2);}
}

/* ecosystem width ladder — min-width query so it cannot override the
   narrower max-width rules that follow it in source order */
@media (min-width:1151px){ .hero-split .eco{max-width:820px;} }

/* Newtecx-first additions */
.brand-ntx img{height:27px; width:auto; display:block;}
.eyebrow.ntx-red::before{background:var(--ntx-red);}
.kicker.ntx-red{color:var(--ntx-red);} .kicker.ntx-red::before{background:var(--ntx-red);}

/* slim contact band (byline removed: the footer is already Newtecx-branded) */
.footer-ntx-slim{justify-content:flex-end; padding-block:18px;}
.footer-ntx-slim .fn-right{margin-inline-start:auto;}
