/* =================================================================
   Madrasati — Design System (design tokens + components)
   Brand: violet-indigo → bright-blue gradient + pink-violet glow.
   Light theme by default, .dark on <html> switches tokens.
   ================================================================= */

:root{
  --brand-rgb:   61 43 224;    /* #3D2BE0 violet-indigo (brand)  */
  --brand2-rgb:  67 166 246;   /* #43A6F6 bright blue (grad end) */
  --accent-rgb:  216 95 240;   /* #D85FF0 pink-violet glow       */
  --ai-rgb:      109 75 240;   /* #6D4BF0 indigo (AI)            */
  --ink-rgb:     14 17 40;     /* #0E1128 deep navy ink          */
  --muted-rgb:   100 110 140;  /* cool slate-500                 */
  --surface-rgb: 255 255 255;  /* cards / panels                 */
  --canvas-rgb:  246 247 253;  /* cool violet-tinted off-white   */
  --line-rgb:    226 230 244;  /* cool slate-200                 */
  --shadow:      14 17 40;
}
.dark{
  --brand-rgb:   122 110 250;  /* lifted violet for dark         */
  --brand2-rgb:  96 178 250;   /* light blue                     */
  --accent-rgb:  233 134 245;  /* brighter pink glow on dark     */
  --ai-rgb:      150 128 250;
  --ink-rgb:     228 231 246;
  --muted-rgb:   150 160 190;
  --surface-rgb: 18 22 48;     /* deep navy card                 */
  --canvas-rgb:  10 14 42;     /* #0A0E2A brand navy canvas      */
  --line-rgb:    36 42 78;
  --shadow:      0 0 0;
}

/* ---------- base ---------- */
*{ -webkit-tap-highlight-color: transparent; }
html{ scroll-behavior:smooth; }
body{ line-height:1.85; text-rendering:optimizeLegibility; -webkit-font-smoothing:antialiased; }
h1,h2,h3,h4{ line-height:1.35; font-family:Cairo,system-ui,sans-serif; font-weight:800; letter-spacing:-0.01em; }
::selection{ background: rgb(var(--brand2-rgb)/.25); }
a{ color:inherit; text-decoration:none; }
img{ display:block; max-width:100%; }

::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-track{ background:transparent; }
::-webkit-scrollbar-thumb{ background: rgb(var(--line-rgb)); border-radius:10px; border:2px solid rgb(var(--canvas-rgb)); }
::-webkit-scrollbar-thumb:hover{ background: rgb(var(--muted-rgb)/.5); }
.no-scrollbar::-webkit-scrollbar{ display:none; }
.no-scrollbar{ -ms-overflow-style:none; scrollbar-width:none; }

/* ---------- gradients & surfaces ---------- */
.grad-text{ background:linear-gradient(105deg, rgb(var(--brand-rgb)), rgb(var(--brand2-rgb))); -webkit-background-clip:text; background-clip:text; color:transparent; }
.grad-text-ai{ background:linear-gradient(105deg, rgb(var(--ai-rgb)), rgb(var(--brand2-rgb))); -webkit-background-clip:text; background-clip:text; color:transparent; }
.grad-brand{ background:linear-gradient(120deg, rgb(var(--brand-rgb)), rgb(var(--brand2-rgb))); }
.grad-ai{ background:linear-gradient(120deg, rgb(var(--ai-rgb)), rgb(var(--brand2-rgb))); }
.bg-mesh{
  background:
    radial-gradient(800px 460px at 88% -8%, rgb(var(--brand2-rgb)/.20), transparent 60%),
    radial-gradient(680px 460px at 2% 4%, rgb(var(--ai-rgb)/.12), transparent 55%),
    radial-gradient(560px 380px at 60% 110%, rgb(var(--accent-rgb)/.10), transparent 60%);
}
.glass{ background: rgb(var(--surface-rgb)/.72); backdrop-filter: blur(16px) saturate(150%); -webkit-backdrop-filter: blur(16px) saturate(150%); }

/* ---------- buttons ---------- */
.btn{ display:inline-flex; align-items:center; justify-content:center; gap:.5rem; font-weight:600; border-radius:.9rem;
  padding:.72rem 1.15rem; transition:.18s ease; cursor:pointer; border:1px solid transparent; font-size:.95rem; line-height:1; white-space:nowrap; }
.btn:active{ transform:translateY(1px); }
.btn-primary{ color:#fff; background:linear-gradient(120deg, rgb(var(--brand-rgb)), rgb(var(--brand2-rgb))); box-shadow:0 12px 26px -12px rgb(var(--brand-rgb)/.8); }
.btn-primary:hover{ filter:brightness(1.06); box-shadow:0 16px 34px -12px rgb(var(--brand-rgb)/.9); }
.btn-accent{ color:#fff; background:linear-gradient(120deg, rgb(var(--accent-rgb)), #f4a6ff); box-shadow:0 12px 26px -12px rgb(var(--accent-rgb)/.8); }
.btn-accent:hover{ filter:brightness(1.04); }
.btn-ai{ color:#fff; background:linear-gradient(120deg, rgb(var(--ai-rgb)), rgb(var(--brand2-rgb))); box-shadow:0 12px 26px -12px rgb(var(--ai-rgb)/.8); }
.btn-ai:hover{ filter:brightness(1.06); }
.btn-outline{ border-color:rgb(var(--line-rgb)); color:rgb(var(--ink-rgb)); background:rgb(var(--surface-rgb)); }
.btn-outline:hover{ border-color:rgb(var(--brand2-rgb)); color:rgb(var(--brand-rgb)); }
.btn-ghost{ color:rgb(var(--ink-rgb)); background:transparent; }
.btn-ghost:hover{ background:rgb(var(--ink-rgb)/.06); }
.btn-lg{ padding:.95rem 1.6rem; font-size:1.02rem; border-radius:1.05rem; }
.btn-sm{ padding:.5rem .85rem; font-size:.85rem; border-radius:.7rem; }
.btn-icon{ padding:.6rem; border-radius:.8rem; }

/* ---------- cards ---------- */
.card{ background:rgb(var(--surface-rgb)); border:1px solid rgb(var(--line-rgb)); border-radius:1.25rem;
  box-shadow:0 1px 2px rgb(var(--shadow)/.04), 0 16px 32px -26px rgb(var(--shadow)/.30); }
.card-hover{ transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease; }
.card-hover:hover{ transform:translateY(-5px); box-shadow:0 24px 56px -22px rgb(var(--shadow)/.34); border-color:rgb(var(--brand2-rgb)/.45); }

/* ---- Article cards (rich, elegant layout) ---- */
.post-card{ display:flex; flex-direction:column; height:100%; }
.post-cover{ position:relative; overflow:hidden; }
.post-cover img, .post-cover .ph{ transition:transform .5s ease; }
.post-card:hover .post-cover img, .post-card:hover .post-cover .ph{ transform:scale(1.06); }
.post-cover::after{ content:''; position:absolute; inset:0; background:linear-gradient(to top, rgb(8 9 30/.55), transparent 55%); }
.post-cover .post-cat{ position:absolute; inset-inline-start:.9rem; top:.9rem; z-index:2;
  backdrop-filter:blur(8px); background:rgb(255 255 255/.85); color:rgb(var(--brand-rgb)); box-shadow:0 4px 14px rgb(8 9 30/.16); }
.dark .post-cover .post-cat{ background:rgb(20 22 40/.78); color:rgb(var(--brand2-rgb)); }
.post-body{ display:flex; flex-direction:column; flex:1; }
.post-title{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.post-excerpt{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.post-foot{ margin-top:auto; }
.post-arrow{ transition:transform .25s ease, opacity .25s ease; opacity:.55; }
.post-card:hover .post-arrow{ transform:translateX(-4px); opacity:1; }
.post-featured .post-cover::after{ background:linear-gradient(to top, rgb(8 9 30/.45), transparent 60%); }

/* ---- Article page: hero cover + content styling ---- */
.post-hero{ position:relative; height:18rem; box-shadow:0 30px 60px -30px rgb(var(--brand-rgb)/.45); }
@media (min-width:768px){ .post-hero{ height:24rem; } }
.post-hero img{ width:100%; height:100%; object-fit:cover; }

/* Standard reading measure worldwide: ~66–75 characters/line ≈ 68ch.
   Apply measure to the text itself so it does not stretch beyond a comfortable width. */
.article-body{ color:rgb(var(--ink-rgb)/.92); font-size:1.125rem; }
.article-body > *{ max-width:68ch; margin-inline:auto; }
.article-body > * + *{ margin-top:1.4rem; }
.article-body h2{ font-size:1.7rem; font-weight:800; line-height:1.35; margin-top:2.6rem; }
.article-body h3{ font-size:1.35rem; font-weight:700; line-height:1.4; margin-top:2rem; }
.article-body h2, .article-body h3{ color:rgb(var(--ink-rgb)); scroll-margin-top:6rem; }
.article-body p{ line-height:1.9; }
/* Images and blockquotes breathe slightly wider than body text (modern editorial style) */
.article-body > img, .article-body > figure, .article-body > blockquote{ max-width:80ch; }
@media (max-width:640px){ .article-body{ font-size:1.05rem; } }
.article-body a{ color:rgb(var(--brand-rgb)); font-weight:600; text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1px; }
.article-body a:hover{ color:rgb(var(--brand2-rgb)); }
.article-body ul, .article-body ol{ padding-inline-start:1.4rem; display:flex; flex-direction:column; gap:.55rem; }
.article-body ul{ list-style:none; }
.article-body ul > li{ position:relative; padding-inline-start:1.4rem; }
.article-body ul > li::before{ content:''; position:absolute; inset-inline-start:0; top:.7rem; width:.5rem; height:.5rem; border-radius:999px;
  background:linear-gradient(120deg, rgb(var(--brand-rgb)), rgb(var(--brand2-rgb))); }
.article-body ol{ list-style:decimal; }
.article-body ol > li::marker{ color:rgb(var(--brand-rgb)); font-weight:700; }
.article-body img{ border-radius:1rem; width:100%; box-shadow:0 18px 40px -24px rgb(var(--shadow)/.4); }
.article-body blockquote{ border-inline-start:3px solid rgb(var(--brand-rgb)); background:rgb(var(--brand-rgb)/.05);
  padding:1rem 1.25rem; border-radius:0 1rem 1rem 0; color:rgb(var(--ink-rgb)); font-weight:500; }
.article-body code{ background:rgb(var(--ink-rgb)/.06); padding:.12rem .4rem; border-radius:.4rem; font-size:.9em; }
.article-body hr{ border:0; height:1px; background:rgb(var(--line-rgb)); margin:2rem 0; }

/* shimmer skeleton (loading placeholder during AJAX filtering) */
.skeleton{ position:relative; overflow:hidden; background:rgb(var(--line-rgb)/.85); }
.skeleton::after{ content:""; position:absolute; inset:0; transform:translateX(-100%);
  background:linear-gradient(90deg, transparent, rgb(255 255 255/.9), transparent);
  animation:shimmer 1.15s infinite; }
[dir="rtl"] .skeleton::after{ animation-name:shimmerRtl; }
@keyframes shimmer{ 0%{ transform:translateX(-100%); } 100%{ transform:translateX(100%); } }
@keyframes shimmerRtl{ 0%{ transform:translateX(100%); } 100%{ transform:translateX(-100%); } }

/* Favorite button (heart) — solid white background and dark icon so it shows on any light image */
.fav-btn{ background:#fff; color:rgb(var(--ink-rgb)); box-shadow:0 2px 8px rgb(var(--shadow)/.18); transition:color .18s ease, background .18s ease, transform .18s ease; cursor:pointer; }
.fav-btn:hover{ transform:scale(1.08); color:#ef4444; }
.fav-btn.is-fav{ color:#ef4444; }
.fav-btn.is-fav i{ fill:#ef4444; }
/* Detail-page heart button uses btn/btn-outline — apply red color on is-fav too */
[data-fav].is-fav{ color:#ef4444; border-color:#ef4444; }
[data-fav].is-fav svg, [data-fav].is-fav i{ fill:#ef4444; }

/* Compare toggle — when a school is in the compare set, fill the button with brand */
.compare-btn.is-active{ background:rgb(var(--brand-rgb)); color:#fff; border-color:transparent; }
.compare-btn.is-active:hover{ background:rgb(var(--brand-rgb)/.9); color:#fff; }

/* ---------- chips / pills ---------- */
.chip{ display:inline-flex; align-items:center; gap:.4rem; padding:.42rem .85rem; border-radius:999px; font-size:.85rem; font-weight:500;
  border:1px solid rgb(var(--line-rgb)); color:rgb(var(--muted-rgb)); background:rgb(var(--surface-rgb)); cursor:pointer; transition:.15s; }
.chip:hover{ border-color:rgb(var(--brand2-rgb)); color:rgb(var(--brand-rgb)); }
.chip.is-active{ background:rgb(var(--brand-rgb)/.10); border-color:rgb(var(--brand2-rgb)); color:rgb(var(--brand-rgb)); font-weight:600; }

/* ---------- form fields ---------- */
.field{ width:100%; background:rgb(var(--surface-rgb)); border:1px solid rgb(var(--line-rgb)); border-radius:.85rem; padding:.72rem .95rem;
  color:rgb(var(--ink-rgb)); font-size:.95rem; transition:.15s; font-family:inherit; }
.field::placeholder{ color:rgb(var(--muted-rgb)/.85); }
.field:focus{ outline:none; border-color:rgb(var(--brand2-rgb)); box-shadow:0 0 0 4px rgb(var(--brand2-rgb)/.16); }
.label{ font-size:.85rem; font-weight:600; color:rgb(var(--ink-rgb)); margin-bottom:.45rem; display:block; }

/* ===== Custom dropdown (.pretty-select) — replaces default <option> styling ===== */
.pretty-select{ position:relative; width:100%; }
/* Native <select> stays for forms/submission but is visually hidden (still focusable when required) */
.pretty-select > select{ position:absolute; inset:0; width:100%; height:100%; opacity:0; pointer-events:none; margin:0; border:0; padding:0; }
.ps-trigger{ display:flex; align-items:center; justify-content:space-between; gap:.5rem; text-align:start; cursor:pointer; font-family:inherit; }
.ps-label{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ps-label.is-placeholder{ color:rgb(var(--muted-rgb)/.85); }
.ps-chev{ width:1.05rem; height:1.05rem; flex:none; color:rgb(var(--muted-rgb)); transition:transform .2s; }
.pretty-select.open .ps-chev{ transform:rotate(180deg); }
.pretty-select.open .ps-trigger{ border-color:rgb(var(--brand2-rgb)); box-shadow:0 0 0 4px rgb(var(--brand2-rgb)/.16); }
.pretty-select.disabled .ps-trigger{ opacity:.6; cursor:not-allowed; }
.ps-panel{ position:absolute; top:calc(100% + .4rem); inset-inline:0; z-index:60;
  background:rgb(var(--surface-rgb)); border:1px solid rgb(var(--line-rgb)); border-radius:.9rem;
  box-shadow:0 18px 44px -16px rgb(var(--shadow)/.32); padding:.35rem; max-height:17rem; overflow-y:auto;
  opacity:0; visibility:hidden; transform:translateY(-.4rem); transition:opacity .15s, transform .15s, visibility .15s; }
.pretty-select.open .ps-panel{ opacity:1; visibility:visible; transform:translateY(0); }
.ps-opt{ padding:.55rem .7rem; border-radius:.6rem; font-size:.92rem; color:rgb(var(--ink-rgb)/.85); cursor:pointer;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; transition:background .12s, color .12s; }
.ps-opt:hover{ background:rgb(var(--brand-rgb)/.07); color:rgb(var(--ink-rgb)); }
.ps-opt.selected{ background:rgb(var(--brand-rgb)/.12); color:rgb(var(--brand-rgb)); font-weight:700; }
.ps-opt.disabled{ color:rgb(var(--muted-rgb)); cursor:default; opacity:.6; }
.ps-opt.disabled:hover{ background:transparent; color:rgb(var(--muted-rgb)); }
.ps-panel::-webkit-scrollbar{ width:8px; }
.ps-panel::-webkit-scrollbar-thumb{ background:rgb(var(--line-rgb)); border-radius:8px; }

/* ---------- badges ---------- */
.badge{ display:inline-flex; align-items:center; gap:.35rem; padding:.28rem .65rem; border-radius:999px; font-size:.74rem; font-weight:700; }
.badge-verified{ background:rgb(var(--brand-rgb)/.12); color:rgb(var(--brand-rgb)); }
.badge-accent{ background:rgb(var(--accent-rgb)/.16); color:#9a25b8; }
.badge-ai{ background:rgb(var(--ai-rgb)/.14); color:rgb(var(--ai-rgb)); }
.badge-soft{ background:rgb(var(--ink-rgb)/.06); color:rgb(var(--muted-rgb)); }
.dark .badge-accent{ color:rgb(var(--accent-rgb)); }

/* ---------- misc helpers ---------- */
.eyebrow{ display:inline-flex; align-items:center; gap:.45rem; font-weight:700; font-size:.82rem; color:rgb(var(--brand-rgb));
  background:rgb(var(--brand-rgb)/.10); padding:.4rem .85rem; border-radius:999px; }
.divider{ height:1px; background:rgb(var(--line-rgb)); }
.stars{ display:inline-flex; gap:1px; color:rgb(var(--accent-rgb)); }
.avatar{ display:inline-flex; align-items:center; justify-content:center; border-radius:999px; font-weight:700; color:#fff; }

/* ---------- nav (animated gradient underline) ---------- */
.nav-link{ position:relative; display:inline-flex; align-items:center; gap:.35rem; padding:.35rem .15rem;
  color:rgb(var(--muted-rgb)); font-weight:600; font-size:.93rem; white-space:nowrap; transition:color .18s ease; }
.nav-link:hover{ color:rgb(var(--ink-rgb)); }
.nav-link.active{ color:rgb(var(--brand-rgb)); }
.nav-link::after{ content:""; position:absolute; bottom:-.45rem; inset-inline:0; height:2.5px; border-radius:3px;
  background:linear-gradient(90deg, rgb(var(--brand-rgb)), rgb(var(--brand2-rgb)));
  transform:scaleX(0); transform-origin:center; transition:transform .25s ease; }
.nav-link:hover::after, .nav-link.active::after{ transform:scaleX(1); }

/* ---------- header / navbar (matches brand mockup: clean white row, electric-blue accents) ---------- */
:root{ --hdr-rgb: 26 22 245; }      /* #1A16F5 official deep electric blue (header only) */
.dark{ --hdr-rgb: 122 110 250; }    /* lifted on dark */
/* header sits in normal flow and scrolls away with the page (tamed.sa style) */
#site-header{ position:relative; z-index:50; }
.navbar{ background:#F9F8FE; border-bottom:1px solid rgb(var(--line-rgb)); }
.dark .navbar{ background:rgb(var(--surface-rgb)); }

/* once scrolled, the bar re-attaches to the top as a fixed sticky bar,
   sliding in from above (fadeInDown) with a solid white bg + soft shadow — like tamed.sa */
.navbar.is-sticky{
  position:fixed; inset-inline:0; top:0; z-index:60;
  background:#fff; border-color:transparent;
  box-shadow:0 2px 28px rgb(var(--shadow)/.10);
  animation:navFadeInDown .5s cubic-bezier(.4,0,.2,1) both;
  opacity:.9;
}
.dark .navbar.is-sticky{ background:rgb(var(--surface-rgb)); box-shadow:0 2px 28px rgb(0 0 0/.45); }
@keyframes navFadeInDown{ from{ opacity:0; transform:translateY(-100%); } to{ opacity:1; transform:translateY(0); } }
/* height stays constant whether stuck or not */

/* header nav links — active uses the electric blue */
.navbar .nav-link.active{ color:rgb(var(--hdr-rgb)); }
.navbar .nav-link::after{ background:linear-gradient(90deg, rgb(var(--hdr-rgb)), #7C4DFF); }

/* header buttons — match mockup: solid blue CAPSULE + plain-text login */
.hdr-btn-primary{ display:inline-flex; align-items:center; gap:.5rem; font-weight:700; font-size:.92rem; line-height:1;
  color:#fff; background:rgb(var(--hdr-rgb)); padding:.72rem 1.6rem; border-radius:999px;
  box-shadow:0 12px 24px -12px rgb(var(--hdr-rgb)/.85); transition:.18s ease; white-space:nowrap; }
.hdr-btn-primary:hover{ filter:brightness(1.08); box-shadow:0 16px 30px -12px rgb(var(--hdr-rgb)/.95); transform:translateY(-1px); }
/* login = outlined capsule pill with a thin light border (as in the mockup) */
.hdr-btn-ghost{ display:inline-flex; align-items:center; gap:.4rem; font-weight:600; font-size:.92rem; line-height:1;
  color:rgb(var(--ink-rgb)); background:rgb(var(--surface-rgb)); padding:.72rem 1.5rem; border-radius:999px;
  border:1px solid rgb(var(--line-rgb)); transition:.16s ease; white-space:nowrap; }
.hdr-btn-ghost:hover{ color:rgb(var(--hdr-rgb)); border-color:rgb(var(--hdr-rgb)/.4); }
/* language switcher */
.lang-btn{ display:inline-flex; align-items:center; gap:.4rem; font-weight:700; font-size:.88rem; line-height:1;
  color:rgb(var(--ink-rgb)); background:rgb(var(--surface-rgb)); padding:.55rem .9rem; border-radius:999px;
  border:1px solid rgb(var(--line-rgb)); transition:.16s ease; white-space:nowrap; cursor:pointer; }
.lang-btn:hover{ color:rgb(var(--hdr-rgb)); border-color:rgb(var(--hdr-rgb)/.4); }
.lang-flag{ width:20px; height:20px; border-radius:50%; object-fit:cover; flex:none; }
/* theme/menu icon button — round to echo the capsule language */
.hdr-icon-btn{ width:42px; height:42px; border-radius:999px; display:grid; place-items:center;
  color:rgb(var(--muted-rgb)); background:transparent; border:1px solid rgb(var(--line-rgb)); transition:.16s ease; cursor:pointer; }
.hdr-icon-btn:hover{ color:rgb(var(--hdr-rgb)); border-color:rgb(var(--hdr-rgb)/.4); }

/* ---------- hero (matches brand mockup) ---------- */
/* "For their future" gradient: electric-blue → violet → pink, like the mockup wordmark */
.hero-grad{ background:linear-gradient(95deg, #1A16F5 0%, #7C4DFF 55%, #E26BF0 100%);
  -webkit-background-clip:text; background-clip:text; color:transparent; }
.hero-btn-primary{ display:inline-flex; align-items:center; gap:.6rem; font-weight:700; font-size:1.02rem; line-height:1;
  color:#fff; background:#1A16F5; padding:1rem 1.9rem; border-radius:1.875rem;
  box-shadow:0 16px 32px -14px rgb(26 22 245/.85); transition:.18s ease; white-space:nowrap; }
.hero-btn-primary:hover{ filter:brightness(1.08); box-shadow:0 20px 40px -14px rgb(26 22 245/.95); transform:translateY(-2px); }
/* "Sign up" button: white fill, ~14px radius, thin BLUE/violet border, blue text (as in mockup) */
.hero-btn-outline{ display:inline-flex; align-items:center; gap:.5rem; font-weight:700; font-size:1.02rem; line-height:1;
  color:#1A16F5; background:rgb(var(--surface-rgb)); padding:1rem 1.9rem; border-radius:1.875rem;
  border:1.5px solid rgb(26 22 245/.35); transition:.18s ease; white-space:nowrap; }
.hero-btn-outline:hover{ background:rgb(26 22 245/.05); border-color:rgb(26 22 245/.6); transform:translateY(-2px); }
.dark .hero-btn-outline{ color:#9A80FF; border-color:rgb(122 110 250/.45); }
.dark .hero-grad{ background:linear-gradient(95deg, #6E6CFF 0%, #9A80FF 55%, #E986F5 100%); -webkit-background-clip:text; background-clip:text; }
.dark .hero-btn-primary{ background:#3D38FF; box-shadow:0 16px 32px -14px rgb(61 56 255/.7); }
.dark .hero-btn-outline:hover{ color:#9A80FF; border-color:rgb(122 110 250/.5); }

/* hero section background — clean near-white wash like the mockup (no colored mesh) */
.hero-section{ background:#F9F8FE; }
.dark .hero-section{ background:rgb(var(--canvas-rgb)); }

/* hero background blob — compact violet shape sitting right behind the child's head/shoulder
   (matches mockup: a defined splash, NOT a wash over the whole background) */
.hero-blob{ position:absolute; z-index:0; top:2%; inset-inline-start:18%; width:52%; height:62%;
  background:radial-gradient(closest-side, rgb(108 73 252/.85), rgb(108 73 252/.45) 55%, transparent 78%);
  border-radius:58% 42% 52% 48% / 56% 50% 50% 44%;
  filter:blur(6px); pointer-events:none; }
.dark .hero-blob{ background:radial-gradient(closest-side, rgb(108 73 252/.6), rgb(108 73 252/.3) 55%, transparent 78%); }

/* hero services — 4 services in ONE elevated card (no border, no dividers, soft radius) */
.services-card{ display:grid; grid-template-columns:repeat(2,1fr); border-radius:1rem;
  background:rgb(var(--surface-rgb)); overflow:hidden;
  box-shadow:0 2px 4px rgb(var(--shadow)/.04), 0 28px 60px -30px rgb(var(--shadow)/.30); }
@media (min-width:1024px){ .services-card{ grid-template-columns:repeat(4,1fr); } }
.hero-service{ display:flex; flex-direction:column; align-items:center; text-align:center; padding:2rem 1.25rem;
  position:relative; transition:background .2s ease; }
.hero-service:hover{ background:rgb(26 22 245/.035); }
/* brand SVG service icons — no background box, gradient is baked into the artwork */
.hero-service-ic{ width:56px; height:56px; object-fit:contain; display:block; transition:transform .2s ease; }
.hero-service:hover .hero-service-ic{ transform:translateY(-3px) scale(1.05); }

/* ---------- featured schools (grid/list) ---------- */
/* section heading with brand underline (matches mockup) */
.sec-heading{ font-size:1.9rem; font-weight:800; position:relative; padding-bottom:.6rem; }
.sec-heading::after{ content:""; position:absolute; bottom:0; inset-inline-end:0; width:78%; height:3px; border-radius:3px;
  background:linear-gradient(90deg, transparent, #1A16F5 40%, #7C4DFF); }
/* view toggle */
.view-toggle{ display:inline-flex; background:rgb(var(--ink-rgb)/.05); border-radius:.85rem; padding:.25rem; gap:.25rem; }
.view-btn{ width:40px; height:36px; border-radius:.65rem; display:grid; place-items:center; color:rgb(var(--muted-rgb)); transition:.16s; cursor:pointer; }
.view-btn.is-active{ background:#1A16F5; color:#fff; box-shadow:0 6px 14px -6px rgb(26 22 245/.7); }
.btn-adv{ display:inline-flex; align-items:center; gap:.5rem; font-weight:700; font-size:.9rem; color:#fff;
  background:#1A16F5; padding:.6rem 1.1rem; border-radius:.85rem; transition:.16s; white-space:nowrap; }
.btn-adv:hover{ filter:brightness(1.08); }
.btn-browse-all{ display:inline-flex; align-items:center; gap:.6rem; font-weight:700; font-size:.95rem; color:#fff;
  background:#1A16F5; padding:.85rem 1.6rem; border-radius:999px; transition:.18s; box-shadow:0 12px 26px -14px rgb(26 22 245/.7); }
.btn-browse-all:hover{ transform:translateY(-2px); filter:brightness(1.08); box-shadow:0 16px 32px -14px rgb(26 22 245/.85); }

/* grid container */
.schools-grid{ display:grid; grid-template-columns:repeat(1,1fr); gap:1.25rem; }
@media (min-width:640px){ .schools-grid{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1024px){ .schools-grid{ grid-template-columns:repeat(4,1fr); } }
.schools-grid.is-list{ grid-template-columns:1fr; gap:1rem; }

/* school card */
.school-card{ background:rgb(var(--surface-rgb)); border:1px solid rgb(var(--line-rgb)); border-radius:1.25rem; overflow:hidden;
  display:flex; flex-direction:column; transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.school-card:hover{ transform:translateY(-4px); box-shadow:0 24px 50px -28px rgb(var(--shadow)/.4); border-color:rgb(26 22 245/.3); }
/* logo placeholder area */
.school-logo{ position:relative; height:160px; display:grid; place-items:center; padding:1.25rem;
  background:repeating-conic-gradient(rgb(var(--ink-rgb)/.025) 0% 25%, transparent 0% 50%) 50%/22px 22px, rgb(var(--canvas-rgb)); }
.school-logo .ph{ width:62px; height:62px; border-radius:1rem; display:grid; place-items:center; color:#fff;
  background:linear-gradient(135deg,#1A16F5,#7C4DFF); box-shadow:0 10px 24px -12px rgb(26 22 245/.6); }
.school-logo .partner{ position:absolute; top:.7rem; inset-inline-start:.7rem; display:inline-flex; align-items:center; gap:.3rem;
  font-size:.72rem; font-weight:700; color:#1A16F5; background:#fff; border:1px solid rgb(26 22 245/.2); padding:.22rem .6rem; border-radius:999px; }
.school-body{ padding:1.1rem 1.15rem 1.25rem; display:flex; flex-direction:column; flex:1; }
.school-tags{ display:flex; flex-wrap:wrap; gap:.4rem; margin-bottom:.7rem; }
.s-tag{ font-size:.72rem; font-weight:700; padding:.25rem .65rem; border-radius:999px; border:1px solid rgb(var(--line-rgb)); color:rgb(var(--muted-rgb)); }
.s-tag.curr{ background:#fef6e6; border-color:#f6e2b6; color:#9a6b00; }
.dark .s-tag.curr{ background:rgb(245 158 11/.15); color:#fbbf24; border-color:transparent; }
.school-name{ font-weight:800; font-size:1.02rem; display:flex; align-items:center; gap:.35rem; margin-bottom:.3rem; }
.school-name .verified{ color:#1A16F5; flex:none; }
.school-loc{ font-size:.85rem; color:rgb(var(--muted-rgb)); display:flex; align-items:center; gap:.3rem; }
.school-foot{ display:flex; align-items:flex-end; justify-content:space-between; gap:.75rem; margin-top:1rem; padding-top:1rem; border-top:1px solid rgb(var(--line-rgb)); }
.school-price .lbl{ font-size:.72rem; color:rgb(var(--muted-rgb)); }
.school-price .val{ font-weight:800; color:#1A16F5; font-size:1.05rem; }
.btn-book{ display:inline-flex; align-items:center; justify-content:center; font-weight:700; font-size:.86rem; color:#fff;
  background:#1A16F5; padding:.62rem 1.1rem; border-radius:.7rem; transition:.16s; white-space:nowrap; }
.btn-book:hover{ filter:brightness(1.08); }
.btn-cmp{ width:38px; height:38px; border-radius:.6rem; display:grid; place-items:center; color:#7C4DFF;
  border:1px solid rgb(124 77 255/.4); background:transparent; transition:.16s; cursor:pointer; flex:none; }
.btn-cmp:hover, .btn-cmp.is-active{ background:#7C4DFF; color:#fff; border-color:transparent; }

/* list layout — card becomes a horizontal row; logo on the RIGHT (RTL) */
.is-list .school-card{ flex-direction:row; align-items:center; }
.is-list .school-logo{ width:200px; height:auto; align-self:stretch; flex:none; }
.is-list .school-body{ padding:1.5rem 1.75rem; }
.is-list .school-foot{ border-top:0; margin-top:.75rem; padding-top:0; }
@media (max-width:639px){ .is-list .school-card{ flex-direction:column; } .is-list .school-logo{ width:100%; } }

/* ---------- stats band ---------- */
.stats-band{ position:relative; overflow:hidden; margin:2.5rem 0; }
.stats-band-bg{ position:absolute; inset:0; z-index:0;
  background:linear-gradient(120deg,#1A16F5 0%, #4B2BE0 45%, #7C4DFF 100%); }
.stats-band-bg::after{ content:""; position:absolute; inset:0;
  background:radial-gradient(600px 300px at 85% -10%, rgb(255 255 255/.14), transparent 60%),
             radial-gradient(500px 320px at 5% 120%, rgb(216 95 240/.30), transparent 60%); }
.stat-cell{ position:relative; text-align:center; color:#fff; padding-bottom:1.4rem; }
.stat-cell::after{ content:""; position:absolute; bottom:0; inset-inline:18%; height:1px; background:rgb(255 255 255/.28); }
.stat-ic{ width:54px; height:54px; border-radius:1rem; display:inline-grid; place-items:center; margin-bottom:.9rem;
  background:rgb(255 255 255/.14); color:#fff; backdrop-filter:blur(4px); }
.stat-num{ font-size:2.5rem; line-height:1; font-weight:900; letter-spacing:-.02em; }
@media (min-width:1024px){ .stat-num{ font-size:3rem; } }
.stat-lbl{ font-size:.9rem; color:rgb(255 255 255/.85); margin-top:.7rem; line-height:1.6; max-width:15rem; margin-inline:auto; }

/* ---------- success partners (auto-scrolling marquee) ---------- */
.partners-marquee{ position:relative; overflow:hidden; width:100%; padding:1rem 0;
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
          mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.partners-track{ display:flex; align-items:center; width:max-content;
  animation:marqueeScroll var(--marquee-dur, 28s) linear infinite; }
.partners-marquee:hover .partners-track{ animation-play-state:paused; }
@keyframes marqueeScroll{ from{ transform:translateX(0); } to{ transform:translateX(var(--marquee-shift, -50%)); } }
.partner-logo{ height:48px; width:auto; object-fit:contain; opacity:.6; margin-inline:2rem;
  filter:grayscale(1); transition:.22s ease; flex:none; }
.partner-logo:hover{ opacity:1; filter:grayscale(0); transform:translateY(-2px); }

/* ---------- testimonials carousel ---------- */
.tst-carousel{ position:relative; }
.tst-viewport{ overflow:hidden; width:100%; }
.tst-track{ display:flex; transition:transform .5s cubic-bezier(.4,0,.2,1); will-change:transform; }
.tst-card{ flex:none; width:380px; margin-inline:.75rem; background:rgb(var(--surface-rgb));
  border:1px solid rgb(var(--line-rgb)); border-radius:1.25rem; padding:1.5rem;
  box-shadow:0 1px 2px rgb(var(--shadow)/.04), 0 18px 40px -30px rgb(var(--shadow)/.3); }
.tst-card blockquote{ font-size:.92rem; line-height:1.85; margin-bottom:1.25rem; color:rgb(var(--ink-rgb)); }
.tst-card figcaption{ display:flex; align-items:center; gap:.75rem; }
/* nav arrows — overlaid on left/right edge of viewport */
.tst-arrow{ position:absolute; top:0; bottom:2.5rem; margin:auto; height:2.5rem; z-index:3;
  width:2.5rem; border-radius:50%; border:1.5px solid rgb(var(--brand-rgb));
  background:rgb(var(--brand-rgb)); color:#fff; display:grid; place-items:center; cursor:pointer;
  transition:.18s ease; box-shadow:0 4px 14px rgb(var(--brand-rgb)/.35); }
.tst-arrow:hover{ background:rgb(var(--brand2-rgb)); border-color:rgb(var(--brand2-rgb)); box-shadow:0 6px 20px rgb(var(--brand2-rgb)/.45); }
.tst-arrow:disabled{ opacity:.35; cursor:default; pointer-events:none; }
[dir="rtl"] .tst-arrow.prev{ left:auto; right:-4rem; }
[dir="rtl"] .tst-arrow.next{ right:auto; left:-4rem; }
[dir="ltr"] .tst-arrow.prev{ right:auto; left:2.5rem; }
[dir="ltr"] .tst-arrow.next{ left:auto; right:2.5rem; }
@media(max-width:640px){ .tst-arrow{ top:auto; bottom:-3.2rem; transform:none; }
  [dir="rtl"] .tst-arrow.prev{ right:calc(50% + .4rem); left:auto; }
  [dir="rtl"] .tst-arrow.next{ left:calc(50% + .4rem); right:auto; }
  [dir="ltr"] .tst-arrow.prev{ left:calc(50% + .4rem); right:auto; }
  [dir="ltr"] .tst-arrow.next{ right:calc(50% + .4rem); left:auto; } }
/* dots */
.tst-dots{ display:flex; justify-content:center; gap:.5rem; margin-top:1.75rem; }
.tst-dot{ width:.5rem; height:.5rem; border-radius:50%; background:rgb(var(--line-rgb));
  cursor:pointer; transition:.2s ease; border:none; padding:0; }
.tst-dot.active{ width:1.5rem; border-radius:.25rem; background:rgb(var(--brand-rgb)); }

/* ---------- school reviews carousel ---------- */
.rv-carousel{ position:relative; }
.rv-viewport{ overflow:hidden; width:100%; }
.rv-track{ display:flex; transition:transform .45s cubic-bezier(.4,0,.2,1); will-change:transform; }
.rv-card{ flex:none; width:calc(50% - .5rem); margin-inline:.375rem; }
@media(max-width:639px){ .rv-card{ width:calc(100% - .75rem); } }
/* nav row */
.rv-nav{ display:flex; align-items:center; justify-content:space-between; margin-top:1.25rem; }
.rv-arrow{ width:2.25rem; height:2.25rem; border-radius:50%; border:1.5px solid rgb(var(--brand-rgb));
  background:rgb(var(--brand-rgb)); color:#fff; display:grid; place-items:center; cursor:pointer;
  transition:.18s ease; box-shadow:0 4px 14px rgb(var(--brand-rgb)/.35); }
.rv-arrow:hover{ background:#2a1fc7; border-color:#2a1fc7; box-shadow:0 6px 20px rgb(var(--brand-rgb)/.45); }
.rv-arrow:disabled{ opacity:.35; cursor:default; pointer-events:none; }
.rv-dots{ display:flex; align-items:center; gap:.4rem; }
.rv-dot{ width:.45rem; height:.45rem; border-radius:50%; background:rgb(var(--line-rgb));
  cursor:pointer; transition:.2s ease; border:none; padding:0; }
.rv-dot.active{ width:1.25rem; border-radius:.25rem; background:rgb(var(--brand-rgb)); }

/* ---------- floating WhatsApp ---------- */
/* WhatsApp: bottom-left in Arabic (RTL), bottom-right in English (LTR) — follows dir automatically */
#wa-fab{ position:fixed; inset-inline-end:1.5rem; bottom:1.5rem; z-index:55; display:inline-flex; align-items:center; gap:.7rem; }
.wa-ic{ width:60px; height:60px; border-radius:50%; display:grid; place-items:center; color:#fff; background:#25D366;
  box-shadow:0 12px 28px -8px rgb(37 211 102/.7); transition:transform .2s ease, box-shadow .2s ease; flex:none; }
#wa-fab:hover .wa-ic{ transform:scale(1.07); box-shadow:0 16px 34px -8px rgb(37 211 102/.85); }
.wa-ic{ position:relative; }
.wa-ic::after{ content:""; position:absolute; inset:0; border-radius:50%;
  background:#25D366; opacity:.45; z-index:-1; animation:waPulse 2.4s ease-out infinite; }
@keyframes waPulse{ 0%{ transform:scale(1); opacity:.45; } 70%,100%{ transform:scale(1.7); opacity:0; } }
.wa-tip{ background:rgb(var(--ink-rgb)); color:rgb(var(--canvas-rgb)); font-size:.82rem; font-weight:700;
  padding:.55rem .9rem; border-radius:.8rem; white-space:nowrap; box-shadow:0 8px 20px -10px rgb(var(--shadow)/.5);
  opacity:0; transform:translateX(8px); transition:.2s ease; pointer-events:none; }
#wa-fab:hover .wa-tip{ opacity:1; transform:translateX(0); }
@media (max-width:639px){ .wa-tip{ display:none; } .wa-ic{ width:54px; height:54px; } }

/* ---------- mobile drawer ---------- */
.drawer-bd{ position:fixed; inset:0; z-index:60; background:rgb(0 0 0/.45); backdrop-filter:blur(3px);
  opacity:0; visibility:hidden; transition:opacity .3s ease, visibility .3s ease; }
.drawer-bd.open{ opacity:1; visibility:visible; }
.drawer{ position:fixed; top:0; right:0; bottom:0; z-index:70; width:min(320px,86vw); padding:1.25rem;
  background:rgb(var(--surface-rgb)); border-inline-start:1px solid rgb(var(--line-rgb));
  box-shadow:-20px 0 50px -24px rgb(var(--shadow)/.5); transform:translateX(100%);
  transition:transform .32s cubic-bezier(.4,0,.2,1); overflow-y:auto; }
.drawer.open{ transform:translateX(0); }
.drawer-link{ display:flex; align-items:center; gap:.7rem; padding:.7rem .8rem; border-radius:.85rem;
  font-weight:600; color:rgb(var(--ink-rgb)); transition:.15s; }
.drawer-link:hover{ background:rgb(var(--ink-rgb)/.05); }
.drawer-link.active{ background:rgb(var(--brand-rgb)/.10); color:rgb(var(--brand-rgb)); }
.drawer-link.active i{ color:rgb(var(--brand-rgb)); }

/* ---------- social + footer ---------- */
/* footer is a deep electric-blue panel (matches mockup) */
.site-foot{ position:relative; background:#1A16F5; color:#fff; }
.dark .site-foot{ background:#13119E; }
.foot-col-title{ font-weight:800; font-size:.95rem; color:#fff; margin-bottom:1.1rem; }
.foot-link{ display:inline-block; color:rgb(255 255 255/.78); font-size:.9rem; transition:.16s ease; }
.foot-link:hover{ color:#fff; padding-inline-start:.25rem; }
.foot-contact{ display:flex; align-items:center; gap:.55rem; color:rgb(255 255 255/.78); font-size:.9rem; }
.foot-contact i{ color:rgb(255 255 255/.6); flex:none; }
.foot-divider{ height:1px; background:rgb(255 255 255/.15); }
/* faint vertical separator between footer columns (matches mockup) */
@media (min-width:1024px){
  .foot-col{ border-inline-start:1px solid rgb(255 255 255/.30); padding-inline-start:1.75rem; }
  .foot-col .foot-contact span, .foot-col .foot-contact{ white-space:nowrap; }
}
/* social buttons on the blue footer — white outline pills */
.social-btn{ width:38px; height:38px; border-radius:1.7rem; display:grid; place-items:center;
  border:1px solid rgb(255 255 255/.25); color:rgb(255 255 255/.85); transition:.18s ease; }
.social-btn:hover{ color:#1A16F5; border-color:transparent; background:#fff;
  transform:translateY(-2px); box-shadow:0 8px 18px -8px rgb(0 0 0/.4); }

/* ---------- lucide icons ---------- */
[data-lucide]{ width:1.15em; height:1.15em; stroke-width:2; flex:none; }

/* ---------- animations ---------- */
@keyframes fadeUp{ from{opacity:0; transform:translateY(22px) scale(.985)} to{opacity:1; transform:none} }
.reveal{ opacity:0; will-change:opacity, transform; }
.reveal.in{ animation:fadeUp .7s cubic-bezier(.22,.61,.36,1) forwards; }
@keyframes floaty{ 0%,100%{transform:translateY(0)} 50%{transform:translateY(-12px)} }
.floaty{ animation:floaty 6s ease-in-out infinite; }
/* hero layered shapes — gentle parallax drift */
@keyframes floatA{ 0%,100%{ transform:rotate(2deg) translateY(0) } 50%{ transform:rotate(2.6deg) translateY(-12px) } }
@keyframes floatB{ 0%,100%{ transform:rotate(-2deg) translateY(0) } 50%{ transform:rotate(-2.6deg) translateY(12px) } }
.shape-a{ animation:floatA 7s ease-in-out infinite; }
.shape-b{ animation:floatB 9s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce){ .reveal{ opacity:1 !important; } .reveal.in,.floaty,.shape-a,.shape-b{ animation:none; } }

/* button sheen micro-interaction (tamed-style polish) */
.btn-primary, .btn-ai, .btn-accent{ position:relative; overflow:hidden; isolation:isolate; }
.btn-primary::after, .btn-ai::after, .btn-accent::after{ content:""; position:absolute; top:0; bottom:0; width:45%; z-index:-1;
  background:linear-gradient(110deg, transparent, rgba(255,255,255,.30), transparent);
  transform:translateX(-180%); transition:transform .7s ease; pointer-events:none; }
.btn-primary:hover::after, .btn-ai:hover::after, .btn-accent:hover::after{ transform:translateX(320%); }
@keyframes blink{ 0%,100%{opacity:.2} 50%{opacity:1} }
.typing span{ width:7px; height:7px; border-radius:50%; background:rgb(var(--muted-rgb)); display:inline-block; animation:blink 1.2s infinite; }
.typing span:nth-child(2){ animation-delay:.2s } .typing span:nth-child(3){ animation-delay:.4s }

/* range slider — gray track + filled portion colored by value (--val %); works in Chrome/Firefox and RTL */
input[type=range]{ -webkit-appearance:none; appearance:none; width:100%; height:22px; background:transparent; cursor:pointer; margin:6px 0; }
input[type=range]:focus{ outline:none; }

/* Chrome/Safari/Edge */
input[type=range]::-webkit-slider-runnable-track{ height:6px; border-radius:999px;
  background:linear-gradient(to right, rgb(var(--brand-rgb)) 0%, rgb(var(--brand2-rgb)) var(--val,100%), rgb(var(--line-rgb)) var(--val,100%), rgb(var(--line-rgb)) 100%); }
input[type=range]::-webkit-slider-thumb{ -webkit-appearance:none; width:20px; height:20px; margin-top:-7px; border-radius:50%; cursor:pointer;
  background:linear-gradient(120deg, rgb(var(--brand-rgb)), rgb(var(--brand2-rgb))); border:3px solid rgb(var(--surface-rgb)); box-shadow:0 2px 6px rgb(var(--shadow)/.3); transition:transform .12s ease; }
input[type=range]:active::-webkit-slider-thumb{ transform:scale(1.12); }

/* Firefox */
input[type=range]::-moz-range-track{ height:6px; border-radius:999px; background:rgb(var(--line-rgb)); }
input[type=range]::-moz-range-progress{ height:6px; border-radius:999px; background:linear-gradient(to right, rgb(var(--brand-rgb)), rgb(var(--brand2-rgb))); }
input[type=range]::-moz-range-thumb{ width:20px; height:20px; border-radius:50%; cursor:pointer;
  background:linear-gradient(120deg, rgb(var(--brand-rgb)), rgb(var(--brand2-rgb))); border:3px solid rgb(var(--surface-rgb)); box-shadow:0 2px 6px rgb(var(--shadow)/.3); }

/* In RTL: reverse fill direction so progress starts from the right (start side) */
[dir="rtl"] input[type=range]::-webkit-slider-runnable-track{
  background:linear-gradient(to left, rgb(var(--brand-rgb)) 0%, rgb(var(--brand2-rgb)) var(--val,100%), rgb(var(--line-rgb)) var(--val,100%), rgb(var(--line-rgb)) 100%); }
[dir="rtl"] input[type=range]{ direction:rtl; }

/* hide raw lucide tags before hydration */
i[data-lucide]:not(svg){ display:inline-block; }

/* ============ interactive Syria map ============ */
.sy-map-wrap{ position:relative; }
svg.sy-map{ width:100%; height:auto; display:block; overflow:visible; }
svg.sy-map .region path{
  fill: rgb(var(--brand-rgb) / var(--a, .3));
  stroke: rgb(var(--surface-rgb)); stroke-width:1.4; stroke-linejoin:round;
  cursor:pointer; transition: fill .25s ease, filter .25s ease, transform .25s ease;
  transform-box: fill-box; transform-origin:center;
}
svg.sy-map .region path.hot{
  fill: rgb(var(--brand-rgb) / .92);
  transform: translateY(-4px) scale(1.03);
  filter: drop-shadow(0 12px 16px rgb(var(--shadow)/.45));
}
svg.sy-map .region path.active{
  fill: url(#gSyActive);
  stroke: rgb(var(--surface-rgb)); stroke-width:2;
  transform: translateY(-3px) scale(1.025);
  filter: drop-shadow(0 12px 18px rgb(var(--brand-rgb)/.55));
}
#gSyActive stop:first-child{ stop-color: rgb(var(--brand-rgb)); }
#gSyActive stop:last-child{ stop-color: rgb(var(--brand2-rgb)); }
.sy-pin, .sy-pin-pulse{ opacity:0; pointer-events:none; transition:opacity .3s; }
.sy-pin{ fill: rgb(var(--accent-rgb)); stroke:#fff; stroke-width:1.6; }
.sy-pin-pulse{ fill: rgb(var(--accent-rgb)); transform-box: fill-box; transform-origin:center; animation: syPulse 1.7s ease-out infinite; }
@keyframes syPulse{ 0%{ transform:scale(.35); opacity:.65 } 100%{ transform:scale(2.8); opacity:0 } }

/* tooltip */
.sy-tip{ position:fixed; z-index:90; pointer-events:none; transform:translate(-50%,-135%);
  background:rgb(var(--ink-rgb)); color:rgb(var(--canvas-rgb)); padding:.5rem .8rem; border-radius:.75rem;
  font-size:.82rem; font-weight:600; white-space:nowrap; opacity:0; transition:opacity .15s ease;
  box-shadow:0 10px 24px rgb(0 0 0/.32); }
.sy-tip.show{ opacity:1; }
.sy-tip .n{ color:#fff; } .sy-tip .c b{ color:rgb(var(--brand2-rgb)); }

/* governorate list */
.region-item{ display:flex; align-items:center; gap:.6rem; width:100%; padding:.55rem .7rem; border-radius:.75rem;
  border:1px solid transparent; transition:.15s; cursor:pointer; background:transparent; color:rgb(var(--ink-rgb)); text-align:right; }
.region-item:hover, .region-item.hl{ background: rgb(var(--brand-rgb)/.08); }
.region-item.sel{ background: rgb(var(--brand-rgb)/.13); border-color: rgb(var(--brand2-rgb)/.5); }
.region-item .dot{ width:13px; height:13px; border-radius:5px; flex:none; box-shadow:0 0 0 1px rgb(var(--line-rgb)); }

/* choropleth legend */
.legend-bar{ height:10px; border-radius:999px; background:linear-gradient(90deg,
  rgb(var(--brand-rgb)/.18), rgb(var(--brand-rgb)/.5), rgb(var(--brand-rgb)/.92)); }



/* gradient cards: keep gradient (more specific than .card white bg) */
.card.grad-brand{ background:linear-gradient(120deg, rgb(var(--brand-rgb)), rgb(var(--brand2-rgb))); border-color:transparent; }
.card.grad-ai{ background:linear-gradient(120deg, rgb(var(--ai-rgb)), rgb(var(--brand2-rgb))); border-color:transparent; }

/* ===== Page Loader ===== */
#page-loader{position:fixed;inset:0;z-index:99999;background:rgb(var(--canvas-rgb));display:flex;align-items:center;justify-content:center;transition:opacity .35s ease,visibility .35s ease;}
#page-loader.pl-done{opacity:0;visibility:hidden;pointer-events:none;}
.pl-ring{width:44px;height:44px;border:3px solid rgb(var(--line-rgb));border-top-color:rgb(var(--brand-rgb));border-radius:50%;animation:pl-spin .7s linear infinite;}
@keyframes pl-spin{to{transform:rotate(360deg);}}
