/* ==========================================================================
   DreamBridgeUSA — design system
   نظام التصميم — يحافظ على الهوية البصرية للموقع السابق
   ========================================================================== */
:root{
  --navy:#0b1d3a; --navy-2:#1b3a6b; --navy-d:#061426;
  --red:#b22234; --red-b:#c92a3d;
  --sky:#dce6f2; --sky-2:#c2d2e6; --sky-3:#93a9c6;
  --paper:#f2f2f2; --ink:#0b1d3a; --muted:#5a6b80; --line:#dfe5ec;
  --ok:#0f7a52; --warn:#a56a0a;
  --green:#3e5a54; --green-2:#2f4641; --green-3:#6e8882;  /* patina, from the mark */
  --grey:#f2f2f2;

  /* ------------------------------------------------------------- roles ---
     A colour that is both a fill and an ink needs two values, not one.
     Old Glory Red carries white text at 6.6:1 — an excellent button. As text
     it sits at 6.6:1 on white too, so on paper one value served both jobs.
     On a #06111c ground the same red drops to 2.87:1 and the error messages,
     the required-field marks and the section eyebrows all faded into the
     background. The same happened to the greens and the amber.
     So each of these now has a FILL role (a surface white text sits on) and an
     INK role (text that sits on the page). In light mode the two are identical;
     in dark they part company, and that is the whole fix.
     اللون الواحد كان يؤدي دورين: خلفية ونصاً. على الورق الأبيض نجح الدوران
     بقيمة واحدة، وعلى الأرضية الداكنة سقط النص إلى ٢٫٨٧ فبهت واختفى.
     لكل لون الآن قيمة للتعبئة وقيمة للنص — تتطابقان نهاراً وتفترقان ليلاً. */
  --navy-fill:#0b1d3a;   /* solid brand surface; always carries white text */
  --red-ink:#b22234;     /* red as text: errors, eyebrows, required marks */
  --ok-ink:#0f7a52;
  --warn-ink:#a56a0a;
  --green-ink:#3e5a54;
  --font-display:'Playfair Display',Georgia,'Times New Roman',serif;
  --font-ui:'Montserrat',system-ui,-apple-system,'Segoe UI',sans-serif;
  --font-ar:'Cairo','Montserrat',system-ui,sans-serif;
  --font-deva:'Noto Sans Devanagari','Nirmala UI','Mangal',system-ui,sans-serif;
  --font-han:'Noto Sans SC','PingFang SC','Hiragino Sans GB','Microsoft YaHei',system-ui,sans-serif;
  --shadow:0 20px 50px -22px rgba(11,29,58,.35);
  --r:14px;
}

/* --------------------------------------------------------------- scripts --
   A typeface is chosen by writing system, not by text direction. Montserrat
   and Playfair carry no Devanagari and no Han: left on them, Hindi and Chinese
   fall to whatever the device happens to substitute, at the wrong weight and
   the wrong size. Each script names its own stack, and the display face is
   dropped where it has no glyphs rather than silently mismatching.
   الخط يُختار حسب نظام الكتابة لا حسب اتجاه النص — الهندية والصينية لهما
   خطوط خاصة لأن خطوط الواجهة لا تحتوي حروفهما
   -------------------------------------------------------------------------- */
html[data-script="devanagari"]{--font-ui:var(--font-deva);--font-display:var(--font-deva)}
html[data-script="han"]{--font-ui:var(--font-han);--font-display:var(--font-han)}
html[data-script="arabic"]{--font-ui:var(--font-ar);--font-display:var(--font-ar)}

/* Devanagari and Han sit taller than Latin at the same size: the tracking that
   flatters Playfair crowds them, and 1.2 line-height clips their marks.
   الحروف الهندية والصينية أطول — نوسّع السطر ونلغي التقارب الحرفي */
html[data-script="devanagari"] h1,html[data-script="devanagari"] h2,
html[data-script="devanagari"] h3,html[data-script="devanagari"] h4,
html[data-script="han"] h1,html[data-script="han"] h2,
html[data-script="han"] h3,html[data-script="han"] h4{letter-spacing:0;line-height:1.45;font-weight:700}
html[data-script="devanagari"] body,html[data-script="han"] body{line-height:1.7}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--font-ui);background:#fff;color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.55}
html[dir="rtl"] body{font-family:var(--font-ar)}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
.wrap{width:min(1180px,93vw);margin:0 auto}
.hidden{display:none !important}

/* ------------------------------------------------------------- typography */
h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.01em;line-height:1.2;font-weight:700;color:var(--navy)}
/* Playfair carries no Arabic, so Arabic headings stay on Cairo. */
html[dir="rtl"] h1,html[dir="rtl"] h2,html[dir="rtl"] h3,html[dir="rtl"] h4,
html[dir="rtl"] .brand b{font-family:var(--font-ar);font-weight:800}
html[dir="rtl"] h1,html[dir="rtl"] h2,html[dir="rtl"] h3,html[dir="rtl"] h4{letter-spacing:0;line-height:1.4}
.muted{color:var(--muted)}
.small{font-size:13px}

/* ------------------------------------------------------------------ chrome */
.ribbon{background:var(--navy-fill);color:#dce3ed;font-size:12.5px;padding:8px 0;text-align:center}
.nav{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.nav .wrap{display:flex;align-items:center;gap:14px;padding:11px 0}
.brand{display:flex;align-items:center;gap:10px}
.brand .mark{width:42px;height:42px;flex:0 0 42px;object-fit:contain}
.brand b{display:block;font-size:20px;font-weight:800;letter-spacing:-.03em;color:var(--navy);position:relative}.brand b::after{content:'';display:none}
html[dir="rtl"] .brand b{letter-spacing:0}
.brand small{display:block;font-size:10.5px;color:var(--muted);font-weight:600}
.nav-links{display:flex;gap:2px;margin-inline-start:auto;align-items:center;flex-wrap:wrap}
.nav-links>a{color:#33455c;font-size:14px;font-weight:600;padding:9px 13px;border-radius:9px;transition:.2s}
.nav-links>a:hover{color:var(--navy);background:var(--sky)}
.nav-links>a.active{color:var(--navy);background:var(--sky)}

/* ------------------------------------------------------------------ buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:0;cursor:pointer;
  padding:13px 26px;border-radius:10px;font-size:14.5px;font-weight:700;transition:.22s;white-space:nowrap}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn-primary{background:var(--red);color:#fff;box-shadow:0 12px 26px -12px rgba(178,34,52,.9)}
.btn-primary:hover:not(:disabled){background:var(--red-b);transform:translateY(-2px)}
.btn-navy{background:var(--navy-fill);color:#fff}
.btn-navy:hover:not(:disabled){background:var(--navy-2);transform:translateY(-2px)}
.btn-ghost{background:#fff;color:var(--navy);border:2px solid var(--navy)}
.btn-ghost:hover:not(:disabled){background:var(--navy-fill);color:#fff}
.btn-soft{background:var(--sky);color:var(--navy);border:1px solid var(--line)}
.btn-soft:hover:not(:disabled){background:var(--sky-2)}
.btn-sm{padding:8px 15px;font-size:13px;border-radius:8px}
.btn-danger{background:#fff;color:var(--red-ink);border:1px solid var(--red)}
.btn-danger:hover:not(:disabled){background:var(--red);color:#fff}

/* -------------------------------------------------------------------- cards */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:22px}
.card+.card{margin-top:14px}
.card h3{font-size:17px;margin-bottom:12px}
.grid{display:grid;gap:16px}
.grid-3{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
.grid-2{grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}
.grid-4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}

/* -------------------------------------------------------------------- forms */
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;font-weight:700;margin-bottom:6px;color:#2b3f57}
.field .req{color:var(--red-ink)}
.field input,.field select,.field textarea{
  width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:9px;
  background:#f7f9fc;font-size:14.5px;outline:none;transition:.2s}
.field textarea{min-height:90px;resize:vertical;font-family:inherit}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--navy);background:#fff;box-shadow:0 0 0 4px rgba(11,29,58,.08)}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--red);background:#fff5f6}
.field .err{color:var(--red-ink);font-size:12px;margin-top:5px;display:none}
.field.invalid .err{display:block}
.field-check{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:#4c5f75;margin-bottom:12px}
.field-check input{width:17px;height:17px;flex:0 0 17px;margin-top:2px;accent-color:var(--navy)}
.row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
@media(max-width:640px){.row,.row-3{grid-template-columns:1fr}}

/* ------------------------------------------------------------------- badges */
.badge{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  padding:4px 9px;border-radius:6px;background:var(--sky);color:var(--navy);white-space:nowrap}
html[dir="rtl"] .badge{letter-spacing:0;font-size:12px}
.badge.ok{background:rgba(15,122,82,.12);color:var(--ok-ink)}
.badge.warn{background:rgba(165,106,10,.14);color:var(--warn-ink)}
.badge.red{background:rgba(178,34,52,.1);color:var(--red-ink)}
.chip{font-size:12.5px;background:var(--sky);color:#33455c;padding:5px 10px;border-radius:7px;display:inline-block;margin:2px}

/* ------------------------------------------------------------------ notices */
.notice{display:flex;gap:11px;align-items:flex-start;border:1px solid var(--line);
  border-inline-start:4px solid var(--navy);background:#f6f8fb;border-radius:10px;
  padding:12px 15px;font-size:13.5px;line-height:1.65;color:#2b3f57;margin-bottom:16px}
.notice.legal{border-inline-start-color:var(--red);background:#fff6f7}
.notice.ok{border-inline-start-color:var(--ok);background:#f2fbf7}
.notice svg{flex:0 0 18px;margin-top:2px}

/* ------------------------------------------------------------------- tables */
.table{width:100%;border-collapse:collapse;font-size:13.8px}
.table th{text-align:start;font-weight:800;color:var(--navy);padding:11px 10px;border-bottom:2px solid var(--line);white-space:nowrap}
.table td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.table tr:hover td{background:#f7f9fc}
.table-wrap{overflow-x:auto}

/* ------------------------------------------------------------------ toast */
/* Hidden by visibility, not by a percentage transform: translateY is relative
   to the element's own height, so an empty toast may not travel far enough to
   leave the screen — and an invisible box in the corner still eats clicks.
   الإخفاء بالرؤية لا بالإزاحة النسبية — الصندوق غير المرئي يبتلع النقر */
.toast{position:fixed;bottom:22px;inset-inline-end:22px;z-index:200;background:var(--navy-fill);color:#fff;
  padding:14px 20px;border-radius:11px;box-shadow:var(--shadow);border-inline-start:4px solid var(--red);
  opacity:0;visibility:hidden;pointer-events:none;transform:translateY(150%);
  transition:transform .35s cubic-bezier(.2,.8,.3,1),opacity .24s ease,visibility 0s linear .35s;
  font-size:14px;max-width:min(420px,88vw)}
.toast.show{opacity:1;visibility:visible;pointer-events:auto;transform:none;
  transition:transform .35s cubic-bezier(.2,.8,.3,1),opacity .24s ease,visibility 0s}
.toast.ok{border-inline-start-color:var(--ok)}

/* ------------------------------------------------------------------ modal */
.overlay{position:fixed;inset:0;background:rgba(6,20,38,.66);backdrop-filter:blur(5px);z-index:100;
  display:none;align-items:flex-start;justify-content:center;padding:26px 16px;overflow-y:auto}
.overlay.open{display:flex}
.modal{background:#fff;width:min(720px,100%);border-radius:18px;overflow:hidden;box-shadow:0 40px 90px -30px rgba(0,0,0,.6)}
.modal-head{background:var(--navy-fill);color:#fff;padding:20px 26px;position:relative}
.modal-head h3{color:#fff;font-size:19px}
.modal-head p{font-size:13px;color:#b8c6d8;margin-top:4px}
.modal-body{padding:22px 26px;max-height:66vh;overflow-y:auto}
.modal-foot{padding:15px 26px;background:var(--paper);border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.close-x{position:absolute;top:16px;inset-inline-end:16px;background:rgba(255,255,255,.15);border:0;color:#fff;
  width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:19px;line-height:1}
.close-x:hover{background:var(--red)}

/* --------------------------------------------------------------- dashboard */
.dash{display:grid;grid-template-columns:238px 1fr;gap:22px;align-items:start;padding:24px 0 60px}
.side{position:sticky;top:74px;background:linear-gradient(180deg,#0b1d3a 0%,#071d43 100%);border:1px solid rgba(255,255,255,.08);border-radius:var(--r);padding:12px;display:grid;gap:3px;box-shadow:0 18px 40px -28px rgba(6,20,38,.65)}
.side a{display:flex;align-items:center;gap:9px;padding:10px 13px;border-radius:9px;font-size:14px;font-weight:650;color:#fff;transition:.18s}
.side a:hover{background:rgba(255,255,255,.12);color:#fff;transform:translateX(-2px)}
.side a.active{background:var(--red);color:#fff;box-shadow:0 8px 18px -10px rgba(178,34,52,.95)}
.side .side-head{font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#fff;padding:12px 13px 7px;opacity:1}
.side a[data-v="profile"],.side a[data-v="dashboard"]{color:#fff}
.side a[data-v="profile"]:hover,.side a[data-v="dashboard"]:hover{color:#fff}
html[dir="rtl"] .side .side-head{letter-spacing:0}
.view h2{font-size:23px;margin-bottom:6px}
.view>p.muted{margin-bottom:18px}
@media(max-width:860px){.dash{grid-template-columns:1fr}.side{position:static;display:flex;flex-wrap:wrap}}

/* --------------------------------------------------------------- stat tiles */
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:18px;position:relative;overflow:hidden}
.stat::after{content:'';position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,var(--navy),var(--red))}
.stat b{display:block;font-size:28px;font-weight:900;color:var(--navy);line-height:1}
.stat span{display:block;margin-top:6px;font-size:12.5px;color:var(--muted);font-weight:600}

/* -------------------------------------------------------------- job / uni */
.item{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:20px;display:flex;flex-direction:column;transition:.25s}
.item:hover{transform:translateY(-4px);box-shadow:0 22px 44px -26px rgba(11,29,58,.5);border-color:var(--sky-3)}
.item h3{font-size:16.5px;margin-bottom:3px}
.item .org{color:var(--muted);font-size:13px;margin-bottom:10px}
.item .meta{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:11px}
.item p.desc{font-size:13.6px;color:#54637a;flex:1;margin-bottom:14px}
.item .foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:13px;border-top:1px dashed var(--line)}
.salary{font-weight:900;font-size:15px;color:var(--navy)}
.salary small{display:block;font-weight:500;font-size:11px;color:var(--muted)}

/* ------------------------------------------------------------- timeline */
.timeline{position:relative;padding-inline-start:22px}
.timeline::before{content:'';position:absolute;inset-inline-start:5px;top:6px;bottom:6px;width:2px;background:var(--line)}
.timeline li{list-style:none;position:relative;padding:0 0 16px 0;font-size:13.6px}
.timeline li::before{content:'';position:absolute;inset-inline-start:-22px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--sky-3);border:2px solid #fff;box-shadow:0 0 0 2px var(--sky-2)}
.timeline li.done::before{background:var(--ok);box-shadow:0 0 0 2px rgba(15,122,82,.25)}
.timeline li b{display:block;color:var(--navy)}
.timeline li span{color:var(--muted);font-size:12.5px}

/* ------------------------------------------------------------------ meter */
.meter{height:7px;border-radius:99px;background:var(--sky);overflow:hidden;min-width:70px}
.meter i{display:block;height:100%;background:linear-gradient(90deg,var(--navy),var(--red))}

/* ------------------------------------------------------------------ footer */
footer{background:var(--navy-d);color:#a3b1c4;padding:44px 0 20px;font-size:13.5px;margin-top:60px}
footer h5{color:#fff;font-size:14px;margin-bottom:12px}
footer a{display:block;padding:5px 0}
footer a:hover{color:#fff}
.f-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:28px;padding-bottom:26px;border-bottom:1px solid rgba(255,255,255,.1)}
.f-bottom{padding-top:16px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:12px;color:#78889c}
@media(max-width:760px){.f-grid{grid-template-columns:1fr}}

/* ------------------------------------------------------------------- misc */
.spinner{width:22px;height:22px;border:3px solid var(--sky);border-top-color:var(--navy);border-radius:50%;animation:spin .7s linear infinite;margin:30px auto}
@keyframes spin{to{transform:rotate(360deg)}}
.empty{text-align:center;padding:46px 20px;color:var(--muted)}
.pill-row{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:18px}
.pill{padding:8px 15px;border-radius:99px;border:1px solid var(--line);background:#fff;color:#33455c;font-weight:700;font-size:13px;cursor:pointer;transition:.18s}
.pill:hover{border-color:var(--navy)}
.pill.on{background:var(--navy-fill);color:#fff;border-color:var(--navy-fill)}
.filters{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:10px;background:#fff;padding:12px;border-radius:var(--r);border:1px solid var(--line);margin-bottom:20px}
.filters input,.filters select{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:9px;background:#f7f9fc;font-size:14px;outline:none}
@media(max-width:860px){.filters{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.filters{grid-template-columns:1fr}}

/* ========================================================================
   Premium dashboard sidebar + theme system
   ======================================================================== */
/* ---------------------------------------------------------------- DARK ----
   The single place the dark palette is defined. It used to be split across
   two blocks a hundred lines apart — one owning the neutrals, the other the
   surfaces — which is how the state colours ended up in neither and kept
   their daylight values.
   كانت الألوان الليلية معرّفة في كتلتين متباعدتين، فسقطت ألوان الحالات
   بينهما واحتفظت بقيم النهار — الآن كتلة واحدة
   -------------------------------------------------------------------------- */
html[data-theme="dark"]{
  color-scheme:dark;

  /* grounds and neutrals */
  --paper:#08131f; --ink:#e9eef4; --muted:#a3b1c4; --line:#243549;
  --page:#06111c; --surface:#0d1a2c; --surface-2:#091625;
  --sky:#12233a; --sky-2:#1a2f4c; --sky-3:#3a5677;

  /* brand, as ink */
  --navy:#7ba2d8; --navy-2:#93b6e4; --navy-d:#050e1c;

  /* brand, as fill — a light blue behind white text is unreadable, so the
     filled surfaces keep a deep navy that white still sits on at 11:1.
     الأسطح المملوءة تبقى داكنة ليقرأ النص الأبيض فوقها */
  --navy-fill:#1d3c6b;

  /* state colours, re-tuned for this ground. Every one clears AA on both the
     page and a card; see the ratios in the header comment of :root. */
  --red-ink:#f0808f;     /* 7.41 on the page, 6.82 on a card */
  --ok-ink:#6fb894;      /* 8.11 / 7.46 */
  --warn-ink:#d6a24a;    /* 8.26 / 7.60 */
  --green-ink:#8fb8ab;   /* 8.70 / 8.00 */
  --green-3:#8fb8ab;

  /* --red keeps its daylight value: it is a fill, and white on it is 6.6:1
     in both themes. Only the ink role above needed to change.
     الأحمر يبقى كما هو لأنه لون تعبئة — النص الأبيض فوقه مقروء في الوضعين */

  --ring:rgba(122,170,240,.16);
  --grad-navy:linear-gradient(135deg,#12294a 0%,#0a1c36 55%,#050e1c 100%);
  --shadow:0 24px 60px -24px rgba(0,0,0,.55);
  --lift:0 24px 48px -28px rgba(0,0,0,.6);
  --lift-lg:0 40px 80px -40px rgba(0,0,0,.7);

  /* ---- the action blue, night values (see the v12 block at the end) ------
     Same fill/ink split as the brand colours above: --blue-fill is a surface
     white text sits on and therefore stays dark in both themes, while --blue
     and --blue-ink are inks and lighten for this ground.
     نفس الفصل: لون التعبئة يبقى داكناً ليحمل النص الأبيض، والحبر يفتح ليلاً */
  --blue:#3b82e8;          /* 6.35 on the page — icons, rules, marks */
  --blue-2:#5c9bf0;
  --blue-3:#7db0f5;
  --blue-ink:#7db0f5;      /* 7.9 on the page, 7.3 on a card */
  --blue-fill:#1a56b8;     /* white on it: 6.85 */
  --blue-soft:#12294a;
  --blue-soft-2:#183358;
  --bar:#071527;
  --bar-2:#050f1d;
  --band:#08131f;
}
html[data-theme="dark"] body{background:#06111c;color:var(--ink)}
html[data-theme="dark"] h1,html[data-theme="dark"] h2,html[data-theme="dark"] h3,html[data-theme="dark"] h4{color:#f1f4f8}
html[data-theme="dark"] .nav{background:rgba(7,18,38,.92);border-color:#1e3452}
html[data-theme="dark"] .nav-links>a{color:#c2cddb}
html[data-theme="dark"] .nav-links>a:hover,html[data-theme="dark"] .nav-links>a.active{background:#13253c;color:#fff}
html[data-theme="dark"] .card,
html[data-theme="dark"] .item,
html[data-theme="dark"] .stat,
html[data-theme="dark"] .path{background:#0d1a2c;border-color:#243549}
html[data-theme="dark"] .field label{color:#b4c1d1}
html[data-theme="dark"] .field input,
html[data-theme="dark"] .field select,
html[data-theme="dark"] .field textarea{background:#081422;border-color:#27394e;color:#e9eef4}
html[data-theme="dark"] .field input:focus,
html[data-theme="dark"] .field select:focus,
html[data-theme="dark"] .field textarea:focus{background:#0b1a2d;border-color:#7ba2d8;box-shadow:0 0 0 4px rgba(106,160,237,.14)}
html[data-theme="dark"] .table tr:hover td{background:#0f1e33}
html[data-theme="dark"] .notice{background:#0d1c2f;color:#bdd0e9;border-color:#27394e}
html[data-theme="dark"] .modal{background:#0d1a2c}
html[data-theme="dark"] .modal-foot{background:#081422;border-color:#243549}
html[data-theme="dark"] .btn-ghost{background:transparent;color:#d7dfea;border-color:#6a8db8}
html[data-theme="dark"] .btn-soft{background:#13253c;color:#d7dfea;border-color:#2a3d55}
/* A white button on a dark page reads as a hole punched in the screen, and its
   red ink — now lightened for the dark ground — would be sitting on white.
   So in dark it becomes an outlined button on the card it lives in.
   الزر الأبيض على صفحة داكنة يبدو ثقباً، وحبره الفاتح فوق أبيض غير مقروء */
html[data-theme="dark"] .btn-danger{background:transparent;color:var(--red-ink);border-color:var(--red-ink)}
html[data-theme="dark"] .btn-danger:hover:not(:disabled){background:var(--red);color:#fff;border-color:var(--red)}
html[data-theme="dark"] .chip{background:#13253c;color:#d2dbe7}
html[data-theme="dark"] .item p.desc{color:#aab7c8}
html[data-theme="dark"] .stat span{color:#9aa7b8}
html[data-theme="dark"] .ribbon{background:#050e1c}

.dash{grid-template-columns:252px minmax(0,1fr);transition:grid-template-columns .32s cubic-bezier(.2,.8,.25,1);position:relative}
.dash.sidebar-collapsed{grid-template-columns:78px minmax(0,1fr)}
.side{
  min-height:calc(100vh - 120px);
  position:sticky;top:86px;
  padding:10px;
  gap:4px;
  overflow:hidden;
  transition:width .32s cubic-bezier(.2,.8,.25,1),padding .32s ease,box-shadow .25s ease;
}
.side-top{display:flex;align-items:center;gap:8px;padding:5px 4px 10px;margin-bottom:3px}
.side-brand{min-width:0;flex:1;display:flex;align-items:center;gap:10px;color:#fff}
.side-brand-mark{width:36px;height:36px;flex:0 0 36px;border-radius:10px;background:rgba(255,255,255,.12);display:grid;place-items:center;font-weight:900;font-size:15px}
.side-brand-copy{min-width:0;overflow:hidden}
.side-brand-copy b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-brand-copy span{display:block;font-size:10px;color:#b4c1d1;white-space:nowrap}
.side-toggle{
  width:34px;height:34px;flex:0 0 34px;border:1px solid rgba(255,255,255,.15);
  border-radius:9px;background:rgba(255,255,255,.08);color:#fff;cursor:pointer;
  display:grid;place-items:center;transition:.2s;
}
.side-toggle:hover{background:var(--red);transform:translateY(-1px)}
.side a{min-height:42px;position:relative}
.side a .side-icon{width:19px;height:19px;flex:0 0 19px;display:grid;place-items:center;opacity:.95}
.side a .side-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .18s,transform .25s}
.side-divider{height:1px;background:rgba(255,255,255,.12);margin:8px 4px}
.side-bottom{margin-top:auto;display:grid;gap:4px}
.side-tool{
  display:flex;align-items:center;gap:9px;width:100%;min-height:42px;padding:10px 13px;
  border:0;border-radius:9px;background:rgba(255,255,255,.06);color:#fff;cursor:pointer;text-align:start;
  transition:.2s;
}
.side-tool:hover{background:rgba(255,255,255,.13)}
.side-tool .side-icon{width:19px;height:19px;flex:0 0 19px}
.side-tool .side-label{white-space:nowrap}
.side-account{display:flex;align-items:center;gap:10px;padding:10px 8px 4px;color:#fff}
.side-avatar{width:34px;height:34px;flex:0 0 34px;border-radius:50%;background:linear-gradient(135deg,#fff,#d2dbe7);color:var(--navy);display:grid;place-items:center;font-weight:900}
.side-account-copy{min-width:0}
.side-account-copy b,.side-account-copy span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-account-copy b{font-size:12px}.side-account-copy span{font-size:10px;color:#b4c1d1}
.dash.sidebar-collapsed .side{padding-inline:8px}
.dash.sidebar-collapsed .side-head,.dash.sidebar-collapsed .side-brand-copy,
.dash.sidebar-collapsed .side-label,
.dash.sidebar-collapsed .side-account-copy{display:none}
.dash.sidebar-collapsed .side-top{justify-content:center}
.dash.sidebar-collapsed .side-brand{flex:0}
.dash.sidebar-collapsed .side-toggle{transform:rotate(180deg)}
.dash.sidebar-collapsed .side a,
.dash.sidebar-collapsed .side-tool{justify-content:center;padding-inline:0}
.dash.sidebar-collapsed .side a .side-icon,
.dash.sidebar-collapsed .side-tool .side-icon{margin:0}
.dash.sidebar-collapsed .side-account{justify-content:center}
.dash.sidebar-collapsed .side-avatar{margin:0}
.side a[data-tooltip]::after,.side-tool[data-tooltip]::after{
  content:attr(data-tooltip);position:absolute;inset-inline-start:calc(100% + 10px);top:50%;transform:translateY(-50%) translateX(-4px);
  background:#061426;color:#fff;padding:7px 10px;border-radius:7px;font-size:11px;white-space:nowrap;pointer-events:none;
  opacity:0;transition:.16s;z-index:20;box-shadow:0 10px 25px rgba(0,0,0,.25)
}
html[dir="rtl"] .side a[data-tooltip]::after,html[dir="rtl"] .side-tool[data-tooltip]::after{transform:translateY(-50%) translateX(4px)}
.dash.sidebar-collapsed .side a:hover::after,.dash.sidebar-collapsed .side-tool:hover::after{opacity:1;transform:translateY(-50%) translateX(0)}
.sidebar-backdrop{display:none}
@media(max-width:860px){
  .dash,.dash.sidebar-collapsed{display:block;padding-top:14px}
  .side,.dash.sidebar-collapsed .side{
    position:fixed;z-index:120;top:0;bottom:0;inset-inline-start:0;width:min(310px,88vw);height:100vh;min-height:0;
    border-radius:0 18px 18px 0;margin:0;padding:14px;transform:translateX(-110%);
    transition:transform .32s cubic-bezier(.2,.8,.25,1);box-shadow:0 30px 80px rgba(0,0,0,.35)
  }
  html[dir="rtl"] .side,html[dir="rtl"] .dash.sidebar-collapsed .side{inset-inline-start:auto;inset-inline-end:0;border-radius:18px 0 0 18px;transform:translateX(110%)}
  .dash.sidebar-open .side{transform:translateX(0)}
  .dash.sidebar-collapsed .side-head,.dash.sidebar-collapsed .side-brand-copy,.dash.sidebar-collapsed .side-label,.dash.sidebar-collapsed .side-account-copy{display:block}
  .dash.sidebar-collapsed .side a,.dash.sidebar-collapsed .side-tool{justify-content:flex-start;padding:10px 13px}
  .dash.sidebar-collapsed .side-top{justify-content:initial}
  .dash.sidebar-collapsed .side-brand{flex:1}
  .dash.sidebar-collapsed .side-toggle{transform:none}
  .sidebar-backdrop{position:fixed;inset:0;z-index:110;background:rgba(3,12,28,.58);backdrop-filter:blur(3px);display:block;opacity:0;pointer-events:none;transition:opacity .25s}
  .dash.sidebar-open .sidebar-backdrop{opacity:1;pointer-events:auto}
  .mobile-side-trigger{display:inline-grid!important}
}
.mobile-side-trigger{display:none;width:40px;height:40px;border:1px solid var(--line);background:var(--paper);color:var(--navy);border-radius:10px;place-items:center;cursor:pointer}
@media(min-width:861px){.dash .side{transform:none!important}}

/* ==========================================================================
   Landing chrome — v11
   نظام الصفحة العامة: شريط تنقل متجاوب، وضع ليلي، أقسام جديدة
   ========================================================================== */

/* ---------------------------------------------------------------- surfaces */
:root{
  --surface:#ffffff;            /* cards, nav, anything raised */
  --surface-2:#f6f9fe;          /* quiet fills inside a card   */
  --page:#ffffff;               /* the page itself             */
  --ring:rgba(11,29,58,.09);    /* focus + hairline glow       */
  --grad-navy:linear-gradient(135deg,#1b3a6b 0%,#0b1d3a 55%,#061426 100%);
  --grad-accent:linear-gradient(90deg,var(--navy),var(--red));
  --lift:0 24px 48px -28px rgba(11,29,58,.45);
  --lift-lg:0 40px 80px -40px rgba(11,29,58,.55);
  --ease:cubic-bezier(.2,.8,.25,1);
}
/* The dark palette lives in one block only — see the DARK section above. */
body{background:var(--page)}

/* Keyboard users get a visible ring everywhere, mouse users never see it. */
a:focus-visible,button:focus-visible,input:focus-visible,
select:focus-visible,textarea:focus-visible,summary:focus-visible{
  outline:3px solid var(--red);outline-offset:2px;border-radius:8px
}

/* ------------------------------------------------------------ reveal on scroll */
[data-reveal]{opacity:0;transform:translateY(18px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
[data-reveal].shown{opacity:1;transform:none}
[data-reveal][data-delay="1"]{transition-delay:.05s}
[data-reveal][data-delay="2"]{transition-delay:.1s}
[data-reveal][data-delay="3"]{transition-delay:.15s}
[data-reveal][data-delay="4"]{transition-delay:.2s}
[data-reveal][data-delay="5"]{transition-delay:.25s}
@media(prefers-reduced-motion:reduce){
  [data-reveal]{opacity:1;transform:none;transition:none}
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
}

/* ------------------------------------------------------------------- nav v11 */
.nav{background:color-mix(in srgb,var(--surface) 92%,transparent);border-bottom:1px solid var(--line)}
@supports not (background:color-mix(in srgb,#fff 90%,transparent)){.nav{background:var(--surface)}}
.nav .wrap{gap:10px}
.brand .mark{width:44px;height:44px;flex:0 0 44px;border-radius:11px;transition:transform .3s var(--ease)}
.brand:hover .mark{transform:translateY(-2px) rotate(-3deg)}
.brand b{font-size:19px}
.nav-tools{display:inline-flex;align-items:center;gap:6px;margin-inline-start:6px}
.icon-btn{
  width:36px;height:36px;flex:0 0 36px;display:grid;place-items:center;cursor:pointer;
  border:1px solid var(--line);border-radius:10px;background:var(--surface-2);color:var(--navy);
  transition:.2s var(--ease)
}
.icon-btn:hover{background:var(--sky);border-color:var(--sky-3);transform:translateY(-1px)}
.nav-toggle{display:none}
@media(max-width:920px){
  .nav .wrap{flex-wrap:wrap}
  .nav-toggle{display:grid;margin-inline-start:auto}
  .nav-links{
    order:3;flex-basis:100%;flex-direction:column;align-items:stretch;gap:4px;
    max-height:0;overflow:hidden;opacity:0;
    transition:max-height .34s var(--ease),opacity .24s ease,padding .24s ease;padding:0
  }
  .nav.nav-open .nav-links{max-height:520px;opacity:1;padding:10px 0 14px;border-top:1px solid var(--line);margin-top:8px}
  .nav-links>a{padding:12px 14px;font-size:15px}
  .nav-links>a.btn{justify-content:center;margin-top:4px}
  .nav-tools{margin:8px 0 0;justify-content:flex-start}
}

/* ------------------------------------------------------------------- buttons */
.btn{position:relative;overflow:hidden}
.btn-lg{padding:15px 30px;font-size:15.5px;border-radius:12px}
.btn-white{background:#fff;color:var(--navy-fill);box-shadow:0 12px 26px -14px rgba(0,0,0,.5)}
.btn-white:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 18px 34px -16px rgba(0,0,0,.55)}
.btn-outline-light{background:transparent;color:#fff;border:2px solid rgba(255,255,255,.55)}
.btn-outline-light:hover:not(:disabled){background:rgba(255,255,255,.14);border-color:#fff}

/* ---------------------------------------------------------------- eyebrows */
.eyebrow{
  display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:800;
  letter-spacing:.16em;text-transform:uppercase;color:var(--red-ink);margin-bottom:12px
}
html[dir="rtl"] .eyebrow{letter-spacing:0;font-size:13px}
.eyebrow::before{content:'';width:22px;height:2px;background:var(--red);border-radius:2px}
.sec-head .eyebrow{justify-content:center}

/* ------------------------------------------------------------------ trustbar */
.trustbar{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 22px;margin-top:26px}
.trustbar li{
  list-style:none;display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:650;
  color:var(--muted)
}
.trustbar svg{flex:0 0 16px;color:var(--ok-ink)}

/* --------------------------------------------------------------- step cards */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;counter-reset:step}
@media(max-width:980px){.steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.steps{grid-template-columns:1fr}}
.step{
  position:relative;background:var(--surface);border:1px solid var(--line);border-radius:16px;
  padding:26px 22px 22px;transition:.28s var(--ease)
}
.step:hover{transform:translateY(-5px);box-shadow:var(--lift);border-color:var(--sky-3)}
.step .num{
  counter-increment:step;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;
  background:var(--sky);color:var(--navy);font-weight:900;font-size:16px;margin-bottom:14px
}
.step .num::before{content:counter(step,decimal)}
.step:hover .num{background:var(--navy-fill);color:#fff}
.step h3{font-size:17px;margin-bottom:7px}
.step p{font-size:13.8px;color:var(--muted);line-height:1.75}
/* the connecting rule between steps, desktop only */
@media(min-width:981px){
  .step:not(:last-child)::after{
    content:'';position:absolute;top:46px;inset-inline-end:-16px;width:16px;height:2px;
    background:var(--line)
  }
}

/* ------------------------------------------------------------ feature cards */
.features{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:980px){.features{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.features{grid-template-columns:1fr}}
.feature{
  background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:24px 22px;
  transition:.28s var(--ease)
}
.feature:hover{transform:translateY(-4px);box-shadow:var(--lift);border-color:var(--sky-3)}
.feature .pic{
  width:44px;height:44px;border-radius:12px;display:grid;place-items:center;
  background:var(--sky);color:var(--navy);margin-bottom:14px;transition:.28s var(--ease)
}
.feature:hover .pic{background:var(--red);color:#fff}
.feature h3{font-size:16.5px;margin-bottom:7px}
.feature p{font-size:13.8px;color:var(--muted);line-height:1.75}

/* --------------------------------------------------------------------- FAQ */
.faq{max-width:820px;margin:0 auto;display:grid;gap:10px}
.faq details{
  background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;
  transition:border-color .2s ease,box-shadow .2s ease
}
.faq details[open]{border-color:var(--sky-3);box-shadow:var(--lift)}
.faq summary{
  list-style:none;cursor:pointer;padding:18px 20px;font-weight:700;font-size:15.5px;color:var(--navy);
  display:flex;align-items:center;gap:14px
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:'';margin-inline-start:auto;flex:0 0 11px;width:11px;height:11px;
  border-inline-end:2.5px solid var(--muted);border-block-end:2.5px solid var(--muted);
  transform:rotate(45deg);transition:transform .25s var(--ease);margin-block-start:-4px
}
.faq details[open] summary::after{transform:rotate(-135deg);margin-block-start:2px}
.faq summary:hover{color:var(--red-ink)}
.faq .ans{padding:0 20px 20px;font-size:14.2px;line-height:1.85;color:var(--muted)}

/* --------------------------------------------------------------- CTA band */
.cta-band{
  background:var(--grad-navy);color:#fff;border-radius:24px;padding:clamp(34px,5vw,58px);
  text-align:center;position:relative;overflow:hidden
}
.cta-band::before{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(60% 90% at 80% 0%,rgba(178,34,52,.34),transparent 62%),
             radial-gradient(50% 80% at 12% 100%,rgba(143,184,224,.26),transparent 62%)
}
.cta-band>*{position:relative}
.cta-band h2{color:#fff;font-size:clamp(24px,3.4vw,36px)}
.cta-band p{color:#c4cfdd;max-width:560px;margin:14px auto 26px;line-height:1.8}
.cta-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

/* -------------------------------------------------------------- footer v11 */
footer{background:var(--navy-d)}
.f-grid{grid-template-columns:1.7fr 1fr 1fr 1fr}
@media(max-width:900px){.f-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.f-grid{grid-template-columns:1fr}}
.f-brand{display:flex;align-items:center;gap:11px;margin-bottom:14px}
.f-brand img{width:40px;height:40px;border-radius:10px}
.f-brand b{color:#fff;font-size:18px;font-weight:800}
.f-note{
  margin-top:18px;padding-top:16px;border-top:1px solid rgba(255,255,255,.1);
  font-size:12px;line-height:1.8;color:#8593a6;max-width:640px
}
.to-top{
  position:fixed;inset-inline-end:22px;bottom:22px;z-index:90;width:44px;height:44px;border-radius:50%;
  display:grid;place-items:center;border:1px solid var(--line);background:var(--surface);color:var(--navy);
  cursor:pointer;box-shadow:var(--lift);opacity:0;pointer-events:none;transform:translateY(12px);
  transition:.28s var(--ease)
}
.to-top.on{opacity:1;pointer-events:auto;transform:none}
.to-top:hover{background:var(--red);color:#fff;border-color:var(--red)}

/* ----------------------------------------------- dark theme, public surfaces */
html[data-theme="dark"] .ribbon{background:#050e1c;color:#a8bfe0}
html[data-theme="dark"] .step,
html[data-theme="dark"] .feature,
html[data-theme="dark"] .faq details{background:var(--surface);border-color:var(--line)}
html[data-theme="dark"] .step .num,
html[data-theme="dark"] .feature .pic{background:#152945;color:#d2dbe7}
html[data-theme="dark"] .icon-btn{background:#0e1c30;border-color:#24384e;color:#ced8e5}
html[data-theme="dark"] .icon-btn:hover{background:#162b47;border-color:#3a5677}
html[data-theme="dark"] .faq summary{color:#e2e8f0}
html[data-theme="dark"] .btn-navy{background:#1d3c6b;color:#fff}
html[data-theme="dark"] .btn-navy:hover:not(:disabled){background:#26497e}
html[data-theme="dark"] .to-top{background:#0e1c30;border-color:#24384e;color:#ced8e5}
html[data-theme="dark"] .flagchip{background:#13253c;border-color:#24384e;color:#d2dbe7}
html[data-theme="dark"] .pill{background:#0e1c30;border-color:#24384e;color:#d2dbe7}
html[data-theme="dark"] .pill.on{background:#1d3c6b;border-color:#1d3c6b;color:#fff}
html[data-theme="dark"] .filters{background:var(--surface);border-color:var(--line)}
html[data-theme="dark"] .filters input,
html[data-theme="dark"] .filters select{background:#081422;border-color:#27394e;color:#e9eef4}
html[data-theme="dark"] .notice.legal{background:#2a1219;border-color:#4a2028}
html[data-theme="dark"] .notice.ok{background:#0c2a20;border-color:#1d4a38}
html[data-theme="dark"] .auth-card,
html[data-theme="dark"] .pay-card{border-color:var(--line)}
html[data-theme="dark"] .role-opt{background:#091625;border-color:#24384e}
html[data-theme="dark"] .role-opt:hover{border-color:#3a5677}
html[data-theme="dark"] .role-opt.on{background:#152945;border-color:#5e88c4}
html[data-theme="dark"] .role-opt span{color:#a3b1c4}
html[data-theme="dark"] .field-check{color:#b4c1d1}
html[data-theme="dark"] .legal-doc th{background:#13253c;color:#dce3ed}
html[data-theme="dark"] .legal-doc th,
html[data-theme="dark"] .legal-doc td{border-color:#24384e}
html[data-theme="dark"] .auth-foot{color:#a3b1c4}
html[data-theme="dark"] .auth-foot a{color:#89aede}
html[data-theme="dark"] .hero-badge{background:var(--surface);border-color:var(--line);color:#dce3ed}
html[data-theme="dark"] .btn-ghost{border-color:#5e88c4;color:#d2dbe7}
html[data-theme="dark"] .btn-ghost:hover:not(:disabled){background:#1d3c6b;color:#fff;border-color:#1d3c6b}

/* ==========================================================================
   Identity — the board's palette and typefaces applied
   الهوية: لوحة الألوان والخطوط من لوحة الهوية
   ========================================================================== */

/* The wordmark: Playfair, wide-tracked, exactly as the identity sets it. */
.brand b{
  font-family:var(--font-display);font-weight:700;letter-spacing:.06em;
  font-size:18px;text-transform:uppercase
}
.brand small{
  font-family:var(--font-ui);font-size:9.5px;font-weight:600;letter-spacing:.13em;
  text-transform:uppercase;color:var(--red-ink);margin-top:2px
}
html[dir="rtl"] .brand b{letter-spacing:0;text-transform:none;font-size:19px}
html[dir="rtl"] .brand small{letter-spacing:0;text-transform:none;font-size:10.5px}

/* Playfair's numerals and small text are for display only — UI copy, buttons,
   labels and tables stay on Montserrat so they hold at 12–14px.
   بلايفير للعناوين فقط، وواجهة الاستخدام على مونتسيرات */
.btn,.badge,.chip,.pill,.field label,.table th,.side a,.side-tool,
.stat span,.eyebrow,.hire-card .n,.f-bottom,.ribbon{font-family:var(--font-ui)}
html[dir="rtl"] .btn,html[dir="rtl"] .badge,html[dir="rtl"] .chip,
html[dir="rtl"] .pill,html[dir="rtl"] .field label,html[dir="rtl"] .table th,
html[dir="rtl"] .side a,html[dir="rtl"] .side-tool,html[dir="rtl"] .stat span,
html[dir="rtl"] .eyebrow,html[dir="rtl"] .ribbon{font-family:var(--font-ar)}

/* The stat figures are the one place Playfair's numerals earn their keep. */
.stat b{font-family:var(--font-display);font-weight:700;letter-spacing:-.01em}

/* Patina green — the statue's colour — is the identity's third ink. Used for
   confirmation and for the marks of trust, never for a call to action.
   الأخضر الباتينا لونٌ ثالث: للتأكيد وعلامات الثقة، لا للأزرار */
.trustbar svg{color:var(--green-ink)}
.notice.ok{border-inline-start-color:var(--green);background:#eef3f1}
.badge.ok{background:rgba(62,90,84,.13);color:var(--green-ink)}
.timeline li.done::before{background:var(--green);box-shadow:0 0 0 2px rgba(62,90,84,.24)}
.meter i{background:linear-gradient(90deg,var(--navy),var(--green))}
html[data-theme="dark"] .notice.ok{background:#12211d;border-color:#25403a}
html[data-theme="dark"] .badge.ok{background:rgba(110,136,130,.18);color:#9dbab3}

/* The lockup — mark over wordmark — for auth cards and anywhere the brand has
   to introduce itself rather than just sit in a corner. */
.brand-lockup{display:block;margin:0 auto 22px;width:min(240px,72%)}
.brand-lockup img{width:100%;height:auto}

/* ═══════════════════════════════════════════════════════════════════════════
   PHASES 5–8 — compliance, travel, billing, insights
   المراحل ٥–٨
   ═══════════════════════════════════════════════════════════════════════════ */

/* ------------------------------------------------------- completion bar */
/* Same visual language as .meter, but a standalone block with an accessible
   role — a percentage a screen reader can announce, not just a coloured strip.
   نفس لغة .meter لكن ككتلة مستقلة يقرؤها قارئ الشاشة */
.progress{height:9px;border-radius:99px;background:var(--sky);overflow:hidden;width:100%}
.progress > i{display:block;height:100%;background:linear-gradient(90deg,var(--navy),var(--ok));
  transition:width .5s cubic-bezier(.2,.8,.25,1)}

/* ------------------------------------------------------------ stat states */
.stat.warn b{color:var(--red-ink)}
.stat.warn::after{background:linear-gradient(90deg,var(--red),#f0a33c)}

/* --------------------------------------------------------- monthly bars */
/* A chart small enough not to need a charting library: twelve columns, a
   title attribute for the exact figure, and a scroll container so a narrow
   phone scrolls the chart rather than the page.
   رسم بسيط بلا مكتبة — وحاوية تمرير كي لا تتمدّد الصفحة على الهاتف */
.bars{display:flex;align-items:flex-end;gap:6px;height:150px;overflow-x:auto;padding-top:8px}
.bar-col{flex:1 0 34px;display:flex;flex-direction:column;justify-content:flex-end;
  align-items:center;height:100%;gap:6px}
.bar-col > i{display:block;width:100%;min-height:3px;border-radius:6px 6px 0 0;
  background:linear-gradient(180deg,var(--navy),#3d6fb4)}
.bar-col > span{font-size:11px;color:var(--muted);white-space:nowrap}

/* ------------------------------------------------------ screen-reader only */
/* Table captions and skip links: read aloud, never drawn. `display:none`
   would hide them from assistive technology too, which defeats the purpose.
   يُقرأ ولا يُرسم — و display:none يخفيه عن قارئ الشاشة أيضاً */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* A skip link is invisible until it has focus, then it must be clearly visible. */
.skip-link{position:absolute;inset-inline-start:-9999px;top:8px;z-index:100;
  background:var(--navy-fill);color:#fff;padding:10px 16px;border-radius:8px;font-weight:700}
.skip-link:focus{inset-inline-start:8px}

/* --------------------------------------------------------------- focus ring */
/* Every interactive element gets a visible focus ring. Several controls are
   rendered as <button> inside table rows, and without this a keyboard user
   cannot tell where they are.
   حلقة تركيز واضحة — بدونها لا يعرف مستخدم لوحة المفاتيح موضعه */
a:focus-visible,button:focus-visible,input:focus-visible,
select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{
  outline:3px solid var(--red);outline-offset:2px;border-radius:6px}

@media (prefers-reduced-motion: reduce){
  .progress > i{transition:none}
}

html[data-theme="dark"] .progress{background:#13253c}
html[data-theme="dark"] .bar-col > i{background:linear-gradient(180deg,#3d6fb4,#1c3a63)}
html[data-theme="dark"] .bar-col > span{color:#9aa7b8}

/* --------------------------------------------------------- language menu --
   Nine languages do not fit in a toggle. Each row is labelled in its own
   script — someone hunting for their language recognises its letters, not the
   English word for it — with the English name underneath as a second handle.
   قائمة اللغات: كل لغة باسمها وحروفها، والاسم الإنجليزي تحتها كمرجع
   -------------------------------------------------------------------------- */
.lang-wrap{position:relative;display:inline-block}
.lang-btn{display:inline-flex;align-items:center;gap:6px;max-width:190px}
.lang-btn > span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lang-btn svg{flex:none;opacity:.75}

.lang-menu{
  position:absolute;top:calc(100% + 8px);inset-inline-end:0;z-index:120;
  min-width:236px;max-height:min(62vh,430px);overflow-y:auto;overscroll-behavior:contain;
  background:#fff;border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow);padding:6px;list-style:none;margin:0
}
.lang-menu[hidden]{display:none}

.lang-item{
  display:grid;grid-template-columns:1fr auto;align-items:center;gap:2px 10px;
  width:100%;text-align:start;background:none;border:0;cursor:pointer;
  padding:9px 11px;border-radius:9px;color:var(--ink);line-height:1.3
}
.lang-item:hover,.lang-item:focus-visible{background:var(--paper)}
.lang-item.on{background:var(--sky)}
.lang-name{font-size:15px;font-weight:600}
.lang-sub{grid-column:1;font-size:11.5px;color:var(--muted);letter-spacing:.02em}
.lang-tick{grid-row:1 / span 2;color:var(--red-ink);display:flex;align-items:center}

/* Each row renders in the face of the language it names, so the Hindi row is
   set in Devanagari even while the page around it is in English.
   كل صف يُعرض بخط لغته حتى لو كانت الصفحة بلغة أخرى */
.lang-item[lang="ar"] .lang-name{font-family:var(--font-ar)}
.lang-item[lang="hi"] .lang-name{font-family:var(--font-deva)}
.lang-item[lang="zh"] .lang-name{font-family:var(--font-han)}
.lang-sub{font-family:var(--font-ui)}

/* On a phone the nav has already collapsed; anchoring the menu to the button
   would push it off-screen, so it becomes a sheet pinned to the viewport.
   على الجوال تصبح القائمة لوحة ملتصقة بأسفل الشاشة بدل أن تخرج عن حدودها */
@media (max-width:920px){
  .lang-wrap{position:static}
  .lang-menu{inset-inline:8px;inset-inline-end:8px;min-width:0;top:auto;
    position:fixed;bottom:12px;max-height:56vh}
}

html[data-theme="dark"] .lang-menu{background:#0e1c30;border-color:#24384e}
html[data-theme="dark"] .lang-item{color:#ced8e5}
html[data-theme="dark"] .lang-item:hover,
html[data-theme="dark"] .lang-item:focus-visible{background:#162b47}
html[data-theme="dark"] .lang-item.on{background:#1c3a63}
html[data-theme="dark"] .lang-sub{color:#8fa0b5}
html[data-theme="dark"] .lang-tick{color:#e0798a}

/* Shown above a policy that has no version in the reader's language. */
.legal-lang-note{
  margin:0 0 18px;padding:11px 14px;border-radius:10px;
  background:var(--sky);border:1px solid var(--sky-2);
  color:var(--navy);font-size:13.5px;line-height:1.6
}
html[data-theme="dark"] .legal-lang-note{background:#132743;border-color:#24384e;color:#ced8e5}

/* ---------------------------------------------------------------- messages --
   The applicant/company thread. Two panes on a desktop, stacked on a phone —
   the list is what you scan, the thread is what you read, and on a narrow
   screen showing both at once means neither is usable.
   لوحتان على الشاشة الواسعة وواحدة تحت الأخرى على الهاتف — إظهارهما معاً في
   شاشة ضيّقة يجعل كلتيهما غير صالحة للاستعمال
   -------------------------------------------------------------------------- */
.chat-wrap{display:grid;grid-template-columns:290px 1fr;gap:16px;align-items:start}
.chat-list{padding:6px;max-height:70vh;overflow-y:auto}
.chat-item{display:flex;flex-direction:column;gap:3px;width:100%;text-align:inherit;
  padding:11px 12px;border:0;border-radius:10px;background:transparent;cursor:pointer;font:inherit;color:inherit}
.chat-item:hover{background:var(--surface-2)}
.chat-item.on{background:var(--surface-2);box-shadow:inset 0 0 0 1.5px var(--navy)}
.chat-item-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.chat-pane{display:flex;flex-direction:column;min-height:420px}
.chat-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.chat-log{flex:1;overflow-y:auto;max-height:52vh;display:flex;flex-direction:column;gap:10px;padding:4px 2px}
.chat-log-admin{max-height:46vh}
.chat-msg{display:flex;flex-direction:column;align-items:flex-start;max-width:78%}
.chat-msg.mine{align-self:flex-end;align-items:flex-end}
.chat-bubble{padding:9px 13px;border-radius:14px;background:var(--surface-2);color:var(--ink);
  font-size:14.5px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}
.chat-msg.mine .chat-bubble{background:var(--navy-fill);color:#fff}
.chat-bubble.flagged{box-shadow:inset 0 0 0 2px var(--red)}
.chat-flags{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}
.chat-time{font-size:11.5px;color:var(--muted);margin-top:4px}
.chat-form{display:flex;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.chat-form input{flex:1;min-width:0}
@media (max-width:820px){
  .chat-wrap{grid-template-columns:1fr}
  .chat-list{max-height:230px}
  .chat-msg{max-width:88%}
}
html[data-theme="dark"] .chat-item:hover,
html[data-theme="dark"] .chat-item.on,
html[data-theme="dark"] .chat-bubble{background:#0e2136}

.company-identity{display:flex;flex-direction:column;gap:4px;margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.14);font-size:12px;color:rgba(255,255,255,.72);line-height:1.6}
.company-identity strong{color:#fff;font-size:13px}
.company-identity a{color:#fff;text-decoration:underline;text-underline-offset:3px}

/* ══════════════════════════════════════════════════════════════════════════
   v12 — Corporate blue system
   النظام الأزرق — تخطيط وألوان الواجهة الجديدة مع الإبقاء على هوية الشعار

   The layout and the palette move to the corporate blue reference; the mark,
   the wordmark and Old Glory Red stay exactly where the identity put them.
   Blue becomes the ACTION colour (buttons, links, icons), navy stays the
   STRUCTURE colour (top bar, footer, headings) and red stays the ACCENT
   (the mark, the eyebrows, the required-field marks) — one job each, so a
   page never has two colours competing to be pressed.
   الأزرق للأفعال، الكحلي للبنية، الأحمر لمسات الهوية — لكل لون وظيفة واحدة
   ═════════════════════════════════════════════════════════════════════════ */

:root{
  /* Action blue. 5.54:1 against white, so white text on it and it as text on
     the page both clear WCAG AA at body size — not only at heading size.
     الأزرق يحقق تبايناً ٥٫٥:١ مع الأبيض في الاتجاهين */
  --blue:#1663d6;
  --blue-2:#0f4fb5;        /* pressed / hover — 7.48:1 */
  --blue-3:#3b82e8;        /* light accent on dark grounds */
  --blue-ink:#1358c4;      /* blue as text on paper */
  /* A fill is a surface white text sits on; an ink is text on the page. In
     daylight the two can share a value, at night they cannot — a blue light
     enough to read as text carries white at 3.8:1, which fails. So the fill
     is named separately and stays dark in both themes.
     التعبئة سطحٌ يحمل نصاً أبيض، والحبر نصٌّ على الصفحة — يفترقان ليلاً */
  --blue-fill:#1663d6;     /* white on it: 5.54 */
  --blue-soft:#e8f1fd;     /* the circular icon badges, quiet fills */
  --blue-soft-2:#d3e4fb;

  --bar:#0f2c4f;           /* utility bar + footer ground */
  --bar-2:#0a2039;         /* footer bottom rule */
  --band:#f5f8fc;          /* the statistics strip */

  --grad-blue:linear-gradient(135deg,#1663d6 0%,#0f4fb5 100%);
  --grad-hero:linear-gradient(90deg,rgba(8,24,45,.86) 0%,rgba(8,24,45,.66) 46%,rgba(8,24,45,.42) 100%);
}

/* ------------------------------------------------------------------ buttons
   The primary button is blue. Red keeps a button of its own (.btn-red) for
   the places the identity asks for it, and .btn-danger is untouched.
   الزر الأساسي أزرق، والأحمر يحتفظ بزره الخاص */
.btn-primary{background:var(--blue-fill);box-shadow:0 12px 26px -14px rgba(22,99,214,.85)}
.btn-primary:hover:not(:disabled){background:var(--blue-2)}
.btn-red{background:var(--red);color:#fff;box-shadow:0 12px 26px -14px rgba(178,34,52,.85)}
.btn-red:hover:not(:disabled){background:var(--red-b);transform:translateY(-2px)}
.btn-outline{background:transparent;color:var(--blue-ink);border:1.5px solid var(--blue);font-weight:700}
.btn-outline:hover:not(:disabled){background:var(--blue-fill);color:#fff}
html[data-theme="dark"] .btn-outline{color:var(--blue-ink);border-color:var(--blue-3)}
html[data-theme="dark"] .btn-outline:hover:not(:disabled){background:var(--blue-fill);color:#fff}

/* The focus ring follows the action colour so it reads as "you are here",
   not as an error. حلقة التركيز بلون الفعل لا بلون الخطأ */
a:focus-visible,button:focus-visible,input:focus-visible,
select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{
  outline:3px solid var(--blue);outline-offset:2px}

/* ═══════════════════════════════════════════════════════════ utility bar ═══
   Support, help and the language switch — the things a visitor hunts for when
   something has gone wrong, kept above the navigation so they are never in
   the way and never hard to find.
   شريط علوي للدعم واللغة — فوق التنقل لا داخله */
.topbar{background:var(--bar);color:#c6d5e6;font-size:12.6px}
.topbar .wrap{display:flex;align-items:center;gap:14px;min-height:38px;flex-wrap:wrap;padding:5px 0}
.topbar-r{margin-inline-start:auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.topbar a{display:inline-flex;align-items:center;gap:7px;padding:5px 9px;border-radius:7px;
  color:#c6d5e6;transition:.18s var(--ease)}
.topbar a:hover{color:#fff;background:rgba(255,255,255,.09)}
.topbar svg{flex:none;opacity:.85}
.topbar-mail{font-weight:600}
@media(max-width:760px){
  .topbar{font-size:12px}
  .topbar .wrap{justify-content:center;gap:2px}
  .topbar-r{margin-inline-start:0;justify-content:center;width:100%}
  .topbar-mail span{display:none}
}

/* The language button sits in the utility bar, so it wears that bar's colours
   rather than the page's. زر اللغة يرتدي ألوان الشريط الذي يسكنه */
.topbar .lang-btn{background:transparent;border:1px solid rgba(255,255,255,.2);color:#e2ebf5;
  padding:5px 10px;font-size:12.6px;font-weight:600}
.topbar .lang-btn:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.34)}
.topbar .lang-wrap .lang-menu{inset-inline-start:0;inset-inline-end:auto;text-align:start}
html[dir="rtl"] .topbar .lang-wrap .lang-menu{inset-inline-end:0;inset-inline-start:auto}

/* ══════════════════════════════════════════════════════════ navigation ═══ */
.nav{background:var(--surface);backdrop-filter:none;box-shadow:0 1px 0 var(--line)}
.nav .wrap{padding:12px 0;gap:16px}
.brand{gap:11px}
.brand .mark{width:46px;height:46px;flex:0 0 46px;border-radius:0;background:none}
.brand:hover .mark{transform:translateY(-1px) rotate(0)}
.brand b{font-size:23px;letter-spacing:.005em;text-transform:none;color:var(--navy);line-height:1.05}
.brand small{font-size:9px;letter-spacing:.2em;color:var(--muted);margin-top:3px}
html[dir="rtl"] .brand b{font-size:22px}
html[data-theme="dark"] .brand b{color:#e8eef6}

.nav-links{gap:4px}
.nav-links>a{font-size:14.5px;font-weight:600;color:#40536b;padding:10px 14px;border-radius:8px;
  position:relative}
.nav-links>a:hover{color:var(--blue-ink);background:var(--blue-soft)}
.nav-links>a.active{color:var(--blue-ink);background:transparent;font-weight:700}
/* The active page is marked with a rule under the word, the way the reference
   marks it — a filled pill would read as a button next to real buttons.
   الصفحة الحالية تُعلَّم بخط تحتها لا بخلفية، كي لا تُقرأ كزر */
.nav-links>a.active::after{content:'';position:absolute;inset-inline:14px;bottom:2px;height:2.5px;
  border-radius:2px;background:var(--blue)}
.nav-links>a.btn{color:#fff}
.nav-links>a.btn-outline{color:var(--blue-ink)}
.nav-links>a.btn-outline:hover{color:#fff;background:var(--blue-fill)}
.nav-links>a.btn::after,.nav-links>a.btn:hover{background:none}
.nav-links>a.btn-primary:hover{background:var(--blue-2)}
.nav-auth{display:inline-flex;align-items:center;gap:9px;margin-inline-start:14px}
@media(max-width:1080px){.nav-links>a{padding:10px 10px;font-size:14px}.nav-auth{margin-inline-start:8px}}
@media(max-width:920px){
  .nav-auth{margin:8px 0 0;width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .nav-auth .btn{width:100%}
  .nav-links>a.active::after{inset-inline:14px auto;width:3px;height:auto;top:8px;bottom:8px}
}
html[data-theme="dark"] .nav{background:#0a1728;box-shadow:0 1px 0 #1e3452}
html[data-theme="dark"] .nav-links>a{color:#b9c8da}
html[data-theme="dark"] .nav-links>a:hover,
html[data-theme="dark"] .nav-links>a.active{color:#a8c9f6;background:transparent}

/* ═══════════════════════════════════════════════════════════════ hero ═════
   One picture, one sentence, one search box, and the three doors into the
   product on the right. Everything below the fold is elaboration.
   صورة واحدة وجملة واحدة وحقل بحث — والأبواب الثلاثة إلى يمين الشاشة */
.hero-x{position:relative;isolation:isolate;overflow:hidden;background:#0b1d3a;
  padding:clamp(38px,5.4vw,62px) 0 clamp(42px,5.6vw,64px)}
.hero-x-media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-3;
  filter:saturate(1.05)}
.hero-x-scrim{position:absolute;inset:0;z-index:-2;pointer-events:none;background:var(--grad-hero)}
/* A second, warmer wash on the right so the skyline reads as evening rather
   than as a blue-grey smear. تدرّج دافئ يمين الصورة ليقرأ المشهد كغروب */
.hero-x-scrim::after{content:'';position:absolute;inset:0;
  background:radial-gradient(72% 108% at 88% 42%,rgba(214,124,74,.30),transparent 62%)}
html[dir="rtl"] .hero-x-scrim{transform:scaleX(-1)}

/* The skyline is drawn, not photographed: a silhouette costs 2 kB, scales to
   any width without a second file, and repaints for dark mode for free.
   الأفق مرسوم لا مصوَّر — كيلوبايتان بدل صورة، ويتمدّد لأي عرض */
.hero-x-sky{position:absolute;inset-inline:0;bottom:0;width:100%;height:auto;z-index:-1;
  pointer-events:none;opacity:.5;color:#02080f}
html[dir="rtl"] .hero-x-sky{transform:scaleX(-1)}

.hero-x-grid{display:grid;grid-template-columns:minmax(0,1fr) 342px;gap:34px;align-items:center}
@media(max-width:1020px){.hero-x-grid{grid-template-columns:1fr;gap:26px}}

.hero-eyebrow{display:block;color:#c8dbf4;font-size:12.5px;font-weight:700;letter-spacing:.26em;
  text-transform:uppercase;margin-bottom:14px}
html[dir="rtl"] .hero-eyebrow{letter-spacing:.06em;font-size:13.5px}
.hero-x h1{color:#fff;font-size:clamp(31px,4.4vw,54px);font-weight:800;line-height:1.14;
  letter-spacing:-.02em;max-width:15ch;text-shadow:0 2px 18px rgba(0,0,0,.32)}
html[dir="rtl"] .hero-x h1{letter-spacing:0;max-width:19ch;line-height:1.32}
.hero-x-sub{color:#d7e4f3;font-size:clamp(15px,1.5vw,17.5px);line-height:1.75;max-width:56ch;
  margin-top:16px;text-shadow:0 1px 10px rgba(0,0,0,.3)}

/* ------------------------------------------------------------------ search */
.seek{margin-top:26px;max-width:860px}
.seek-tabs{display:flex;gap:0;width:fit-content;max-width:100%;flex-wrap:wrap}
.seek-tab{display:inline-flex;align-items:center;gap:9px;border:0;cursor:pointer;
  padding:13px 26px;font-size:14.5px;font-weight:700;font-family:var(--font-ui);
  background:rgba(255,255,255,.86);color:#33455c;border-radius:10px 10px 0 0;transition:.2s var(--ease)}
html[dir="rtl"] .seek-tab{font-family:var(--font-ar)}
.seek-tab+.seek-tab{margin-inline-start:2px}
.seek-tab:hover{background:#fff}
.seek-tab[aria-selected="true"]{background:var(--blue-fill);color:#fff}
.seek-tab svg{flex:none}

.seek-row{display:grid;grid-template-columns:minmax(0,1fr) 232px auto;gap:10px;align-items:center;
  background:rgba(255,255,255,.96);border-radius:0 12px 12px 12px;padding:11px;
  box-shadow:0 26px 60px -30px rgba(3,14,30,.85)}
html[dir="rtl"] .seek-row{border-radius:12px 0 12px 12px}
.seek-field{position:relative;display:flex;align-items:center}
.seek-field>svg{position:absolute;inset-inline-start:14px;color:#8194ac;pointer-events:none;flex:none}
.seek-field input,.seek-field select{width:100%;border:1px solid transparent;background:#fff;
  border-radius:9px;padding:13px 14px 13px 42px;font-size:14.5px;color:#0b1d3a;outline:none;
  transition:.18s;appearance:none}
html[dir="rtl"] .seek-field input,html[dir="rtl"] .seek-field select{padding:13px 42px 13px 14px}
.seek-field select{cursor:pointer;padding-inline-end:34px}
.seek-field input::placeholder{color:#8194ac}
.seek-field input:focus,.seek-field select:focus{border-color:var(--blue);
  box-shadow:0 0 0 3px rgba(22,99,214,.16)}
.seek-field.sel::after{content:'';position:absolute;inset-inline-end:15px;width:8px;height:8px;
  border-inline-end:2px solid #8194ac;border-block-end:2px solid #8194ac;transform:translateY(-2px) rotate(45deg);
  pointer-events:none}
.seek-go{padding:14px 34px;border-radius:9px;font-size:15px}
@media(max-width:820px){
  .seek-row{grid-template-columns:1fr;border-radius:0 12px 12px 12px}
  .seek-go{width:100%}
  .seek-tab{flex:1;justify-content:center;padding:12px 14px;font-size:13.6px}
}

.seek-pop{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:16px;
  color:#c8dbf4;font-size:13px}
.seek-pop b{color:#fff;font-weight:700}
.seek-pop a{padding:5px 11px;border-radius:99px;background:rgba(255,255,255,.13);
  border:1px solid rgba(255,255,255,.2);color:#eaf2fb;font-weight:600;transition:.18s var(--ease)}
.seek-pop a:hover{background:#fff;color:#0f4fb5;border-color:#fff}

/* --------------------------------------------------------- audience card */
.aud{background:rgba(255,255,255,.97);border-radius:14px;padding:10px;
  box-shadow:0 30px 70px -34px rgba(3,14,30,.9);display:grid;gap:2px}
.aud-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;
  padding:17px 15px;border-radius:11px;transition:.2s var(--ease)}
.aud-row+.aud-row{border-top:1px solid var(--line)}
.aud-row:hover{background:var(--blue-soft);border-top-color:transparent}
.aud-ico{width:36px;height:36px;display:grid;place-items:center;color:var(--blue);flex:none}
.aud-txt b{display:block;font-family:var(--font-ui);font-size:15.5px;font-weight:700;color:var(--navy);
  margin-bottom:3px}
html[dir="rtl"] .aud-txt b{font-family:var(--font-ar)}
.aud-txt span{display:block;font-size:12.8px;color:var(--muted);line-height:1.55}
.aud-chev{color:#9fb0c6;flex:none;transition:.2s var(--ease)}
.aud-row:hover .aud-chev{color:var(--blue);transform:translateX(3px)}
html[dir="rtl"] .aud-chev{transform:scaleX(-1)}
html[dir="rtl"] .aud-row:hover .aud-chev{transform:scaleX(-1) translateX(3px)}
html[data-theme="dark"] .aud{background:#0d1a2c}
html[data-theme="dark"] .aud-row:hover{background:#132743}
html[data-theme="dark"] .aud-txt b{color:#e8eef6}

/* ══════════════════════════════════════════════════════ statistics strip ══
   The five claims a visitor checks before trusting the site with a passport.
   الأرقام الخمسة التي يفحصها الزائر قبل أن يثق */
.statstrip{background:var(--band);border-block:1px solid var(--line)}
.statstrip .wrap{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:22px 0}
.statstrip-item{display:flex;align-items:center;gap:13px;padding:6px 14px;position:relative;
  justify-content:center}
.statstrip-item+.statstrip-item::before{content:'';position:absolute;inset-inline-start:0;top:6px;bottom:6px;
  width:1px;background:var(--line)}
.statstrip-ico{color:var(--blue);flex:none}
.statstrip-copy b{display:block;font-family:var(--font-ui);font-size:20px;font-weight:800;
  color:var(--navy);line-height:1.15}
html[dir="rtl"] .statstrip-copy b{font-family:var(--font-ar)}
.statstrip-copy span{display:block;font-size:12.5px;color:var(--muted);margin-top:2px}
@media(max-width:1000px){
  .statstrip .wrap{grid-template-columns:repeat(2,1fr);gap:14px}
  .statstrip-item{justify-content:flex-start}
  .statstrip-item+.statstrip-item::before{display:none}
}
@media(max-width:520px){.statstrip .wrap{grid-template-columns:1fr}}
html[data-theme="dark"] .statstrip-copy b{color:#e8eef6}

/* ═════════════════════════════════════════════════════════ why-choose row ══ */
.whygrid{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;margin-top:6px}
@media(max-width:980px){.whygrid{grid-template-columns:repeat(2,1fr);gap:30px 22px}}
@media(max-width:560px){.whygrid{grid-template-columns:1fr}}
.whyitem{display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px;align-items:start}
.whyitem .ring{width:58px;height:58px;flex:none;border-radius:50%;display:grid;place-items:center;
  background:var(--blue-soft);color:var(--blue);transition:.26s var(--ease)}
.whyitem:hover .ring{background:var(--blue-fill);color:#fff;transform:translateY(-3px)}
.whyitem h3{font-family:var(--font-ui);font-size:16px;font-weight:700;margin-bottom:6px;letter-spacing:0}
html[dir="rtl"] .whyitem h3{font-family:var(--font-ar)}
.whyitem p{font-size:13.8px;color:var(--muted);line-height:1.7}
@media(max-width:560px){.whyitem{grid-template-columns:1fr;gap:12px}}

/* ═════════════════════════════════════════════════════════════ footer ═════ */
.site-foot{background:var(--bar);color:#a9bcd2;padding:32px 0 0;margin-top:0;position:relative;
  overflow:hidden;font-size:13.2px}
.site-foot::after{content:'';position:absolute;inset-inline-end:-30px;top:20px;width:min(330px,34%);
  aspect-ratio:2/1;opacity:.13;pointer-events:none;
  background:no-repeat center/contain
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 100'%3E%3Cg fill='%23ffffff'%3E%3Cpath d='M18 34l7-6 10 2 5 7-3 9-8 5-6-4-2-8z'/%3E%3Cpath d='M36 52l8 3 4 10-3 14-7 9-5-8 2-12-4-9z'/%3E%3Cpath d='M86 22l14-4 9 5-2 8-10 3-9-4z'/%3E%3Cpath d='M92 40l10 2 4 9-3 12-8 6-5-10 1-12z'/%3E%3Cpath d='M112 26l18-6 16 3 8 8-5 9-14 4-16-6z'/%3E%3Cpath d='M144 44l14 2 10 8-4 10-12 4-9-9z'/%3E%3Cpath d='M164 62l12 4 5 9-9 6-10-6z'/%3E%3Cpath d='M60 18l14-2 8 5-6 7-13 1-5-6z'/%3E%3C/g%3E%3C/svg%3E")}
.site-foot .wrap{position:relative;z-index:1}
.site-foot-grid{display:grid;grid-template-columns:1.7fr .8fr .8fr 1.2fr;gap:26px;
  padding-bottom:22px}
@media(max-width:980px){.site-foot-grid{grid-template-columns:1fr 1fr;gap:24px}}
@media(max-width:600px){.site-foot-grid{grid-template-columns:1fr;gap:20px}}

.foot-brand{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.foot-brand img{width:40px;height:40px;flex:0 0 40px}
.foot-brand b{display:block;color:#fff;font-family:var(--font-display);font-size:20px;font-weight:700;
  line-height:1.05}
html[dir="rtl"] .foot-brand b{font-family:var(--font-ar);font-weight:800}
.foot-brand small{display:block;font-size:9px;letter-spacing:.2em;text-transform:uppercase;
  color:#8fa5be;margin-top:3px}
html[dir="rtl"] .foot-brand small{letter-spacing:0;font-size:10.5px;text-transform:none}
.site-foot p{line-height:1.7;max-width:40ch;color:#a9bcd2}
.site-foot h5{color:#fff;font-family:var(--font-ui);font-size:13.5px;font-weight:700;margin-bottom:9px}
html[dir="rtl"] .site-foot h5{font-family:var(--font-ar)}
.site-foot a{display:block;padding:3.5px 0;color:#a9bcd2;transition:.16s}
.site-foot a:hover{color:#fff}
.foot-contact{display:grid;gap:9px;margin-top:1px}
.foot-line{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;align-items:start;
  line-height:1.6;font-size:12.6px}
.foot-line svg{color:#7f97b3;margin-top:3px;flex:none}
.foot-line a{display:inline;padding:0}
.foot-social{display:flex;gap:7px;margin-top:12px}
.foot-social a{width:30px;height:30px;padding:0;display:grid;place-items:center;border-radius:7px;
  background:rgba(255,255,255,.09);color:#cfdcea;transition:.2s var(--ease)}
.foot-social a:hover{background:var(--blue-fill);color:#fff;transform:translateY(-2px)}
/* The two statutory statements, set as one small paragraph rather than two
   blocks: they must be present on every page, and they are not what anyone
   came to the footer to read.
   البيانان القانونيان في فقرة صغيرة واحدة — واجبان لكنهما ليسا مقصد القارئ */
.foot-note{border-top:1px solid rgba(255,255,255,.1);padding-top:12px;margin-top:2px;
  font-size:11.4px;line-height:1.65;color:#7d90a6;max-width:none}
.foot-bottom{border-top:1px solid rgba(255,255,255,.1);padding:11px 0;display:flex;
  justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:11.8px;color:#8195ab}
.site-foot .company-identity{border-top-color:rgba(255,255,255,.14)}

/* ═══════════════════════════════════════════════════ shared page furniture ══ */
/* The strip under the navigation on every page that is not the home page:
   the page's name, and the trail back to where the reader came from.
   ترويسة الصفحات الداخلية: اسم الصفحة والطريق الذي أتى منه القارئ */
.pagehead{background:var(--grad-navy);color:#fff;padding:clamp(34px,4.6vw,54px) 0;position:relative;
  overflow:hidden}
.pagehead::before{content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(58% 100% at 82% 0%,rgba(22,99,214,.42),transparent 62%)}
.pagehead .wrap{position:relative}
.pagehead .eyebrow{color:#9dc2f4}
.pagehead .eyebrow::before{background:var(--blue-3)}
.pagehead h1{color:#fff;font-size:clamp(27px,3.6vw,42px)}
.pagehead p{color:#c2d3e6;max-width:62ch;margin-top:12px;line-height:1.8}
.crumbs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.6px;color:#9fb6d0;
  margin-bottom:14px}
.crumbs a{color:#cfe0f3}
.crumbs a:hover{color:#fff;text-decoration:underline;text-underline-offset:3px}
.crumbs span[aria-hidden]{opacity:.55}
html[dir="rtl"] .crumbs span[aria-hidden]{transform:scaleX(-1);display:inline-block}

/* A quiet band to separate two white sections without a hard rule. */
.band{background:var(--band)}
html[data-theme="dark"] .band{background:#08131f}

/* Section heads keep the reference's blue eyebrow. */
.eyebrow{color:var(--blue-ink)}
.eyebrow::before{background:var(--blue)}
/* …except where the identity's red is the point. */
.eyebrow.red{color:var(--red-ink)}
.eyebrow.red::before{background:var(--red)}

/* Icon tiles across the site follow the action colour. */
.feature .pic,.step .num,.path .pic{background:var(--blue-soft);color:var(--blue-ink)}
.feature:hover .pic,.path:hover .pic{background:var(--blue-fill);color:#fff}
.step:hover .num{background:var(--blue-fill);color:#fff}
.path::before{background:var(--grad-blue)}
.pill.on{background:var(--blue-fill);border-color:var(--blue-fill)}
.badge{background:var(--blue-soft);color:var(--blue-ink)}
.chip{background:var(--blue-soft);color:var(--blue-ink)}
.meter i,.progress>i{background:linear-gradient(90deg,var(--blue),var(--blue-2))}
.stat::after{background:linear-gradient(90deg,var(--blue),var(--red))}
.notice{border-inline-start-color:var(--blue)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue);
  box-shadow:0 0 0 4px rgba(22,99,214,.12)}
.field-check input{accent-color:var(--blue)}
.faq summary:hover{color:var(--blue-ink)}
.side a.active{background:var(--blue-fill);box-shadow:0 8px 18px -10px rgba(22,99,214,.95)}
.side-toggle:hover{background:var(--blue)}
.to-top:hover{background:var(--blue-fill);border-color:var(--blue-fill)}
.chat-msg.mine .chat-bubble{background:var(--blue-fill)}
.lang-tick{color:var(--blue-ink)}
.legal-lang-note{background:var(--blue-soft);border-color:var(--blue-soft-2)}
html[data-theme="dark"] .feature .pic,
html[data-theme="dark"] .step .num,
html[data-theme="dark"] .path .pic{background:#12294a;color:#a8c9f6}
html[data-theme="dark"] .badge,html[data-theme="dark"] .chip{background:#12294a;color:#a8c9f6}
html[data-theme="dark"] .legal-lang-note{background:#12294a;border-color:#1d3a63;color:#cfe0f3}
html[data-theme="dark"] .whyitem .ring{background:#12294a;color:#a8c9f6}
html[data-theme="dark"] .seek-row,html[data-theme="dark"] .aud{background:rgba(13,26,44,.97)}
html[data-theme="dark"] .seek-field input,
html[data-theme="dark"] .seek-field select{background:#0a1728;color:#e9eef4;border-color:#22374f}
html[data-theme="dark"] .seek-tab{background:rgba(13,26,44,.9);color:#b9c8da}
html[data-theme="dark"] .statstrip{background:#08131f;border-color:#1b2b3f}
html[data-theme="dark"] .hero-x-sky{color:#02060c;opacity:.66}

/* The old red-gradient accents that were tuned to the previous palette. */
.hero-video-caption span{background:linear-gradient(90deg,#fff 0%,#dce6f2 46%,#8fbcf5 100%)}
.cta-band::before{background:radial-gradient(64% 94% at 82% 0%,rgba(38,120,236,.5),transparent 64%),
  radial-gradient(54% 82% at 10% 100%,rgba(16,64,150,.44),transparent 66%)}
.hire::before{background:radial-gradient(55% 80% at 88% 8%,rgba(22,99,214,.34),transparent 60%)}
.hire-card .n{color:#8fbcf5}
.hire .notice svg{color:#8fbcf5}

/* --------------------------------------------------- print (offer letters)
   A page sent to a printer should not carry the navigation, the utility bar
   or the footer — only the document.
   الطباعة: المستند وحده بلا شريط تنقل ولا تذييل */
@media print{
  .topbar,.nav,.site-foot,.to-top,.ribbon,.seek,.aud,.foot-social{display:none!important}
  body{background:#fff}
  .pagehead{background:#fff;color:#000}
  .pagehead h1,.pagehead p{color:#000}
}

/* ══════════════════════════════════════════════════════════════════════════
   v12.1 — page rhythm and chrome fit
   إيقاع الصفحة وضبط الشريط العلوي

   The section shell used to live in an inline <style> on the old home page,
   which meant the four new pages had no vertical rhythm at all and everything
   ran together. It belongs here, where every page reads it.
   هيكل الأقسام كان داخل الصفحة الرئيسية وحدها، فبقيت الصفحات الجديدة بلا
   إيقاع رأسي والتصق كل شيء ببعضه — مكانه هنا حيث تقرؤه كل صفحة
   ═════════════════════════════════════════════════════════════════════════ */

/* ------------------------------------------------------------ section shell
   One rhythm for the whole site. A section is either on paper or on the quiet
   band, and the two alternate — that alternation is what tells a reader where
   one idea ends and the next begins, without a single rule or border.
   إيقاع واحد للموقع كله، والتناوب بين الورق والشريط الهادئ هو ما يفصل الأفكار */
section.pad{padding:clamp(58px,7.5vw,100px) 0}
section.pad+section.pad{padding-top:clamp(58px,7.5vw,100px)}

.sec-head{text-align:center;max-width:680px;margin:0 auto clamp(34px,4vw,50px)}
.sec-head h2{font-size:clamp(26px,3.5vw,40px);letter-spacing:-.022em;line-height:1.18}
html[dir="rtl"] .sec-head h2{letter-spacing:0;line-height:1.35}
.sec-head p{margin-top:14px;color:var(--muted);line-height:1.8;font-size:clamp(14.5px,1.5vw,16.5px)}
.sec-head .eyebrow{justify-content:center}
.sec-foot{text-align:center;margin-top:clamp(28px,3.4vw,42px)}

/* A section head that sits left — used where the section is a list rather than
   an argument, and centring it would leave the eye with nowhere to start. */
.sec-head.start{text-align:start;margin-inline:0}
.sec-head.start .eyebrow{justify-content:flex-start}

.flagchip{display:inline-flex;align-items:center;gap:6px;background:var(--blue-soft);
  border:1px solid var(--blue-soft-2);color:var(--blue-ink);font-size:13px;font-weight:600;
  padding:6px 12px;border-radius:99px;margin:3px}
html[data-theme="dark"] .flagchip{background:#12294a;border-color:#1d3a63;color:#a8c9f6}

/* ------------------------------------------------------------ employer band
   The one dark section in the middle of the page. It carries the pitch to
   employers, who are a different reader from everyone else on the page, and
   the change of ground is what says so.
   القسم الداكن الوحيد — يخاطب صاحب العمل، وتغيّر الأرضية هو ما يقول ذلك */
.hire{background:var(--grad-navy);color:#fff;position:relative;overflow:hidden}
.hire::before{content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(62% 88% at 84% 2%,rgba(38,120,236,.46),transparent 64%),
             radial-gradient(52% 74% at 6% 100%,rgba(16,64,150,.42),transparent 66%)}
.hire>*{position:relative}
.hire h2,.hire h3{color:#fff}
.hire .sec-head p{color:#bccbdd}
.hire .eyebrow{color:#8fbcf5}
.hire .eyebrow::before{background:var(--blue-3)}
.hire-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;max-width:1040px;
  margin:0 auto clamp(26px,3vw,36px)}
@media(max-width:900px){.hire-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.hire-grid{grid-template-columns:1fr}}
.hire-card{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.15);
  border-radius:16px;padding:24px 22px;transition:.28s var(--ease)}
.hire-card:hover{background:rgba(255,255,255,.12);transform:translateY(-4px);
  border-color:rgba(255,255,255,.26)}
.hire-card .n{font-family:var(--font-ui);font-size:12px;font-weight:800;color:#8fbcf5;
  letter-spacing:.1em;margin-bottom:10px}
html[dir="rtl"] .hire-card .n{letter-spacing:0}
.hire-card h3{font-size:16.5px;margin-bottom:8px}
.hire-card p{font-size:13.6px;color:#bccbdd;line-height:1.72}
.hire .notice{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.18);color:#d3dded}
.hire .notice svg{color:#8fbcf5}
.hire-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

/* ═══════════════════════════════════════════════════ navigation, made to fit
   The signature wrapped onto three lines and pushed the two buttons down to a
   row of their own. A navigation bar that reflows at desktop width reads as
   broken before a single word of it is read — so the signature is pinned to
   one line and the bar is told not to wrap above the breakpoint.
   التوقيع كان ينكسر ثلاثة أسطر فيدفع الزرّين إلى سطر ثانٍ — الشريط الذي
   ينكسر على شاشة عريضة يبدو معطوباً قبل أن يُقرأ */
.nav .wrap{flex-wrap:nowrap;padding:13px 0;gap:18px}
.brand{flex:0 0 auto;min-width:0}
.brand>span{min-width:0}
.brand b{white-space:nowrap;font-size:22px;line-height:1.06}
/* Clipping a tagline mid-word ("SUCCEED …") looks like a bug, not a design
   choice. It is given the room it needs, and dropped whole when there is none.
   قصّ الشعار في منتصف كلمة يبدو عطلاً لا اختياراً — يُعطى مساحته أو يُحذف كاملاً */
.brand small{white-space:nowrap;font-size:8.4px;letter-spacing:.12em;margin-top:4px;display:block}
html[dir="rtl"] .brand small{letter-spacing:0;font-size:10px}
.nav-links{flex-wrap:nowrap;gap:2px}
.nav-links>a{white-space:nowrap}
.nav-auth{flex:0 0 auto;white-space:nowrap;display:inline-flex;align-items:center;gap:9px}

/* The appearance switch moved up into the utility bar, next to the language
   picker. Both are preferences, neither is a destination, and sitting beside
   "Get Started" it read as a third action the visitor was being offered.
   مفتاح المظهر انتقل إلى الشريط العلوي بجانب اللغة — كلاهما تفضيل لا وجهة */
.topbar .icon-btn{width:28px;height:28px;flex:0 0 28px;border-radius:7px;
  background:transparent;border:1px solid rgba(255,255,255,.2);color:#dbe6f2}
.topbar .icon-btn:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.34);
  transform:none}
.topbar-l{display:inline-flex;align-items:center;gap:8px}

/* Between 921 and 1180 the six links and two buttons stop fitting together.
   The tagline goes first — it is the least load-bearing thing in the bar.
   عند الضيق يُحذف الشعار النصي أولاً لأنه أقلّ العناصر حملاً */
@media(max-width:1180px){
  .brand small{display:none}
  .brand b{font-size:20px}
  .nav-links>a{padding:10px 9px;font-size:13.6px}
  .nav .wrap{gap:12px}
}
@media(max-width:1010px) and (min-width:921px){
  .brand .mark{width:38px;height:38px;flex:0 0 38px}
  .brand b{font-size:18px}
  .nav-auth .btn{padding:8px 12px;font-size:12.5px}
}
@media(max-width:920px){
  .nav .wrap{flex-wrap:wrap}
  .nav-links{flex-wrap:wrap}
  .brand small{display:block}
}

/* ═══════════════════════════════════════════════════════════ hero, breathing
   The block was too tight for what it holds: an eyebrow, a headline, a lede,
   a two-mode search and a row of shortcuts, stacked with no room between them.
   Height is the cheapest way to make a first screen look considered.
   الكتلة كانت ضيّقة على ما تحمله — والمساحة أرخص وسيلة لجعل أول شاشة متقنة */
/* The floor is measured against the page's WIDTH, not the viewport's height.
   A hero pinned to vh is a different shape on every device — tiny on a phone
   held sideways, and absurd on a tall window — and it makes the block resize
   under its own content. Width is the stable axis for a band like this.
   الارتفاع يُقاس بعرض الصفحة لا بارتفاع النافذة — القياس بالارتفاع يعطي شكلاً
   مختلفاً على كل جهاز ويجعل الكتلة تتمدّد تحت محتواها */
.hero-x{padding:clamp(52px,6.4vw,86px) 0 clamp(64px,7.4vw,104px);min-height:clamp(500px,44vw,640px);
  display:flex;align-items:center}
.hero-x>.wrap{width:min(1180px,93vw)}
.hero-x-grid{grid-template-columns:minmax(0,1fr) 360px;gap:44px}
@media(max-width:1080px){.hero-x-grid{grid-template-columns:1fr;gap:30px}}

/* Two lines, not three. A headline that breaks mid-phrase reads as an accident.
   سطران لا ثلاثة — العنوان الذي ينكسر في منتصف العبارة يبدو خطأً */
.hero-x h1{max-width:19ch;font-size:clamp(33px,4.6vw,56px);line-height:1.1}
html[dir="rtl"] .hero-x h1{max-width:20ch;line-height:1.34}
.hero-x-sub{margin-top:18px;max-width:52ch}
.hero-eyebrow{margin-bottom:16px}
.seek{margin-top:30px}
.seek-pop{margin-top:18px;row-gap:9px}

/* The photograph is a waving flag: red and white stripes directly under white
   type. The scrim has to be a real wash on the reading side, not a tint, or
   the headline sits on stripes and the lede disappears into them.
   الصورة عَلَمٌ مخطّط تحت نصّ أبيض — فالتعتيم غسلٌ حقيقي لا مجرّد صبغة */
.hero-x-scrim{background:
  linear-gradient(90deg,rgba(6,18,36,.93) 0%,rgba(6,18,36,.86) 34%,rgba(6,18,36,.62) 58%,rgba(6,18,36,.44) 100%),
  linear-gradient(180deg,rgba(6,18,36,.55) 0%,rgba(6,18,36,.10) 34%,rgba(6,18,36,.72) 100%)}
.hero-x-scrim::after{background:radial-gradient(66% 100% at 90% 40%,rgba(214,132,78,.24),transparent 64%)}

/* The skyline had the weight of a black bar across the foot of the hero. It is
   scenery: it should register only once the eye has finished with the words.
   الأفق كان شريطاً أسود يشدّ العين — وهو خلفية تُلاحَظ بعد النصّ لا قبله */
.hero-x-sky{opacity:.26;color:#020a14;mix-blend-mode:multiply}
html[data-theme="dark"] .hero-x-sky{opacity:.42}
@media(max-width:820px){.hero-x-sky{opacity:.2}}

/* --------------------------------------------------------- audience card */
.aud{padding:8px;box-shadow:0 34px 76px -36px rgba(3,14,30,.95),0 0 0 1px rgba(255,255,255,.1)}
.aud-row{padding:18px 16px}
.aud-txt b{font-size:15.5px}

/* ═══════════════════════════════════════════════════ statistics strip, level
   Five items on one baseline. Left-aligning the icon and letting the copy
   centre itself put every pair at a different indent, so the row read as five
   unrelated things rather than one claim.
   خمسة عناصر على خط أساس واحد — وإلا قُرئت كخمسة أشياء لا كدعوى واحدة */
.statstrip .wrap{padding:26px 0}
.statstrip-item{justify-content:flex-start;gap:14px;padding:4px 18px}
.statstrip-item:first-child{padding-inline-start:0}
.statstrip-item:last-child{padding-inline-end:0}
.statstrip-copy{min-width:0}
.statstrip-copy b{font-size:21px;white-space:nowrap;letter-spacing:-.01em}
.statstrip-copy span{font-size:12.4px;line-height:1.4}
/* The fifth cell is a phrase, not a figure; it takes the same weight so the
   row still scans as one line. الخانة الخامسة عبارة لا رقم — بنفس الوزن */
.statstrip-item:last-child .statstrip-copy b{font-size:15.5px;white-space:normal;line-height:1.25}
@media(max-width:1180px){
  .statstrip-item{padding:4px 12px}
  .statstrip-copy b{font-size:19px}
}

/* -------------------------------------------------------------- why-choose */
/* The ring was eating the column: a two-word title broke across two lines in
   a four-up row, which makes four identical items look like four different
   shapes. The mark gives back six pixels and the titles hold one line.
   الدائرة كانت تأكل عرض العمود فينكسر العنوان سطرين — فتبدو الأربعة مختلفة */
.whygrid{gap:30px 22px;margin-top:4px}
.whyitem{gap:14px}
.whyitem .ring{width:52px;height:52px}
.whyitem h3{font-size:15.8px;line-height:1.3}

/* Where a heading must wrap, it wraps evenly rather than leaving one word
   stranded on the last line. Ignored by browsers that do not know it.
   حين ينكسر العنوان ينكسر متوازناً بدل أن تبقى كلمة وحيدة في السطر الأخير */
.sec-head h2,.whyitem h3,.step h3,.hire-card h3,.cta-band h2,.pagehead h1,.hero-x h1{
  text-wrap:balance}

/* ------------------------------------------------------------- step cards */
.steps{gap:18px}
.step{padding:28px 24px 24px}
.step h3{font-size:17.5px;margin-bottom:8px}

/* ---------------------------------------------------------------- filters */
.filters{padding:14px;gap:12px;border-radius:16px;box-shadow:0 14px 34px -26px rgba(11,29,58,.5)}
.filters input,.filters select{padding:12px 14px;border-radius:10px}
.filters input:focus,.filters select:focus{border-color:var(--blue);
  box-shadow:0 0 0 3px rgba(22,99,214,.14);background:var(--surface)}

/* ------------------------------------------------------------- job cards */
/* A grid row stretches its cards to the tallest one, so a card whose title
   runs to two lines left the others' buttons floating mid-air. The last
   control is pushed to the floor of the card and the row ends on one line.
   الشبكة تمطّ البطاقات لأطولها — فيُدفع آخر عنصر إلى قاع البطاقة ليستوي الصف */
.item{border-radius:16px;padding:22px}
.item .meta{gap:6px}
.item .foot{padding-top:15px;margin-top:auto}
.item>.btn:last-child{margin-top:auto}

/* ------------------------------------------------------------- CTA band */
.cta-band{padding:clamp(38px,5.2vw,64px)}
.cta-band h2{font-size:clamp(25px,3.5vw,38px);letter-spacing:-.022em}
html[dir="rtl"] .cta-band h2{letter-spacing:0}

/* ------------------------------------------------------------ page header */
.pagehead{padding:clamp(40px,5.2vw,64px) 0}
.pagehead h1{letter-spacing:-.022em;line-height:1.16}
html[dir="rtl"] .pagehead h1{letter-spacing:0;line-height:1.34}

/* ----------------------------------------------------------------- footer
   `.site-foot p` sets a reading measure for the description column; the two
   statutory lines are not in a column and were being squeezed into it by the
   same rule. They run the full width.
   قاعدة الفقرة كانت تضغط السطرين القانونيين داخل عرض عمود — وهما بعرض الصفحة */
.site-foot .foot-note{max-width:none}
.site-foot .foot-contact span{max-width:none}

/* ────────────────────────────────────────────────────── narrow-screen fit
   Two things crowded the first screen on a phone: a mode tab whose label
   broke onto a second line and left the pair uneven, and five shortcuts that
   took three rows before the reader had seen the search box.
   شيئان يزحمان أول شاشة على الهاتف: لسان ينكسر سطرين، وخمسة اختصارات تأخذ
   ثلاثة صفوف قبل أن يرى القارئ صندوق البحث */
@media(max-width:560px){
  /* "Study in USA" is four words that must survive at 390px: the label is
     given a size that fits rather than a truncation that hides it. A tab
     reading "Study in …" tells the reader nothing.
     العبارة تُصغَّر لتتّسع بدل أن تُقصّ — لسانٌ مقصوص لا يقول شيئاً */
  .seek-tab{padding:12px 12px;font-size:12.6px;gap:6px;white-space:nowrap;min-width:0;
    letter-spacing:-.01em}
  .seek-tab svg{width:15px;height:15px}
  .seek-pop a:nth-of-type(n+4){display:none}
  .seek-pop{margin-top:14px}
  .hero-x{min-height:0;padding-bottom:clamp(40px,9vw,64px)}
  .aud-row{padding:15px 13px}
}

/* The support address is the one thing in the utility bar a stranded visitor
   needs; on a phone it keeps its icon as a tap target after the text goes.
   عنوان الدعم يبقى هدفاً قابلاً للنقر على الهاتف بعد اختفاء نصّه */
@media(max-width:760px){
  .topbar-mail{padding-inline:10px}
  .topbar .wrap{row-gap:0}
}

/* The auth card's signature is a link home. توقيع البطاقة رابط إلى الرئيسية */
.brand-lockup{display:block;transition:transform .25s var(--ease)}
.brand-lockup:hover{transform:translateY(-2px)}

/* Two addresses in one box ran together into one unreadable string. Each
   address is a line of its own, which is also how anyone copies one.
   عنوانان في صندوق واحد التصقا فصارا سلسلة غير مقروءة — كل عنوان في سطره */
.contact-item a{display:block;word-break:break-word;color:var(--blue-ink);font-weight:700}
.contact-item a+a{margin-top:4px}
.contact-item{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px}
html[data-theme="dark"] .contact-item{background:#0d1a2c;border-color:var(--line)}
.identity-box{background:var(--blue-soft);border-color:var(--blue-soft-2)}
html[data-theme="dark"] .identity-box{background:#12294a;border-color:#1d3a63}
.info-card .pill{background:var(--blue-soft);border-color:var(--blue-soft-2);color:var(--blue-ink)}

/* ═══════════════════════════════════════════ interview training / التدريب ══
   The practice screen. Everything here is built from the tokens above, so it
   follows the light and dark grounds without a second set of colours — and
   the score bars are the one new shape: a number out of a hundred means very
   little to read, and the same number as four filled bars says immediately
   which part of an answer lost the points.
   شاشة التدريب مبنية من نفس الرموز فتتبع الوضعين — والأشرطة هي الشكل الجديد
   الوحيد: الرقم وحده لا يُقرأ، وأربعة أشرطة تقول فوراً أين ضاعت الدرجة */
.prep-question{margin:18px 0 6px;font-size:19px;line-height:1.4}
.prep-meter{display:block;height:7px;border-radius:99px;background:var(--sky);overflow:hidden;margin:8px 0}
.prep-meter.big{height:10px;margin:10px 0 4px}
.prep-meter>i{display:block;height:100%;border-radius:99px;background:var(--navy-fill);
  transition:width .45s var(--ease, ease)}
.prep-parts{display:grid;gap:8px;margin:14px 0}
.prep-part{display:grid;grid-template-columns:minmax(84px,1fr) 2fr auto;gap:10px;align-items:center}
.prep-part .prep-meter{margin:0}
.prep-score{font-size:22px;font-weight:800;color:var(--navy);display:inline-flex;align-items:center;gap:8px}
.prep-score small{font-size:13px;font-weight:600;color:var(--muted)}
.prep-feedback{margin-top:18px;padding:16px;border-radius:12px;background:var(--surface);
  border:1px solid var(--line)}
.prep-feedback.strong{border-color:var(--ok-ink)}
.prep-feedback.weak{border-color:var(--red-ink)}
.prep-notes{margin-top:12px}
.prep-notes ul,.prep-list{margin:6px 0 0;padding-inline-start:20px}
.prep-notes li,.prep-list li{margin:4px 0;font-size:14px;line-height:1.65;color:var(--muted)}
.prep-notes.ok li{color:var(--ok-ink)}
.prep-notes.tip p{margin:6px 0 0;font-size:14px;line-height:1.7}
.row-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}

/* On a phone the four score bars stack rather than squeeze: a label clipped to
   three characters is worse than one on its own line.
   على الهاتف تُكدَّس الأشرطة بدل ضغطها — التسمية المبتورة أسوأ من سطر إضافي */
@media(max-width:560px){
  .prep-part{grid-template-columns:1fr auto;grid-template-areas:"label value" "bar bar"}
  .prep-part>span:first-child{grid-area:label}
  .prep-part>b{grid-area:value}
  .prep-part .prep-meter{grid-area:bar}
  .prep-question{font-size:17px}
}

/* ---------------------------------------------- sign in with Google/Apple ---
   Each provider publishes brand rules for its button — Google's must stay on
   white or black with its own mark, Apple's must keep its proportions and may
   not be recoloured. These follow both rather than styling them as ordinary
   buttons, because a button that looks "designed by us" is the one users do
   not trust with their account.
   كل مزوّد يفرض قواعد شكل زره — ونلتزم بها لأن الزر المُعاد تصميمه هو الذي
   يتردّد المستخدم في الوثوق به بحسابه
   -------------------------------------------------------------------------- */
.oauth-buttons{display:grid;gap:10px;margin-bottom:6px}
.oauth-btn{
  display:flex;align-items:center;justify-content:center;gap:10px;
  width:100%;min-height:44px;                 /* the 44px touch target */
  font-family:inherit;font-size:15px;font-weight:600;
  border-radius:10px;cursor:pointer;
  transition:filter .15s ease, box-shadow .15s ease;
}
.oauth-btn:disabled{opacity:.6;cursor:progress}
.oauth-btn svg{flex:0 0 auto}

.oauth-google{background:#fff;color:#1f1f1f;border:1px solid #dadce0}
.oauth-google:hover:not(:disabled){box-shadow:0 1px 3px rgba(60,64,67,.3);background:#f8faff}

.oauth-apple{background:#000;color:#fff;border:1px solid #000}
.oauth-apple:hover:not(:disabled){filter:brightness(1.18)}

/* Apple's guidance inverts the button in dark mode so it stays visible
   against a dark surface; Google's keeps its light treatment. */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .oauth-apple{background:#fff;color:#000;border-color:#fff}
}
:root[data-theme="dark"] .oauth-apple{background:#fff;color:#000;border-color:#fff}

.oauth-divider{
  display:flex;align-items:center;gap:12px;
  margin:16px 0;color:var(--muted-ink,#6a7c96);font-size:13px;
}
.oauth-divider::before,.oauth-divider::after{
  content:"";flex:1;height:1px;background:var(--line,#e5edf7);
}
