/* ميزان — Design System
   Palette: deep slate ground, mint-teal primary, warm gold for wealth signals. */
:root{
  --bg:#0b0f14;
  --bg-2:#0f151d;
  --surface:#131a24;
  --surface-2:#182231;
  --line:#233043;
  --line-soft:#1b2533;
  --text:#e8eef7;
  --text-2:#93a4bb;
  --text-3:#798aa1;            /* 4.5:1 on every surface — it carries real text (dates, labels) */
  --control:#5a6b82;           /* 3:1 border for inputs & controls (WCAG 1.4.11) */
  --primary:#31d0aa;
  --primary-dim:#1f9d80;
  --primary-ghost:rgba(49,208,170,.12);
  --on-primary:#04120e;
  --gold:#e5b567;
  --gold-ghost:rgba(229,181,103,.14);
  --on-gold:#1a1204;
  --danger:#f2718b;
  --danger-ghost:rgba(242,113,139,.13);
  --warn:#f0b45e;
  --info:#6aa9f5;
  --ring:#5ee0c0;              /* focus ring — 10:1+ on all app surfaces */
  /* مقياس المسافات — مبني على أعراف iOS: هامش المحتوى ٢٠pt، حشو البطاقة ١٨pt */
  --gutter:20px;          /* الهامش الأفقي للصفحة */
  --card-pad:18px;        /* الحشو الداخلي للبطاقة */
  --row-pad:14px;         /* الحشو الرأسي للصف */
  --gap-xs:6px; --gap-s:10px; --gap:14px; --gap-l:20px; --gap-xl:30px;
  --radius:20px;          /* بطاقة */
  --radius-sm:14px;       /* عنصر داخل بطاقة */
  --radius-xs:10px;
  --radius-lg:26px;       /* البطل والأوراق السفلية */
  --shadow:0 12px 40px rgba(0,0,0,.45);
  --shadow-card:0 1px 2px rgba(0,0,0,.28);
  --sidebar-w:264px;
  --ease-ios:cubic-bezier(.32,.72,0,1);
  --ease-out:cubic-bezier(.2,.8,.3,1);

  /* Liquid Glass — زجاج iOS 26: ضبابية عالية + إشباع + حافة لامعة */
  --glass:rgba(20,28,40,.44);               /* تعبئة خفيفة: 62% كانت تحجب ما خلفها فيبدو مصمتاً */
  --glass-edge:rgba(255,255,255,.14);       /* الانعكاس على الحافة العليا */
  --glass-rim:rgba(255,255,255,.07);        /* الإطار الخارجي */
  --glass-shadow:0 10px 34px rgba(0,0,0,.42);
  --glass-blur:blur(30px) saturate(190%) brightness(1.14);
  --glass-spec:linear-gradient(180deg,rgba(255,255,255,.17),rgba(255,255,255,.03) 42%,rgba(255,255,255,0) 62%,rgba(255,255,255,.07));
  --glass-hair:rgba(255,255,255,.18);        /* حافة الشعرة العاكسة */
  --glass-spec-blend:overlay;
  /* مادة الشريط وخط فصله — يقابلان systemChromeMaterial و separator في iOS */
  --bar-bg:rgba(18,24,33,.80);
  --bar-line:rgba(255,255,255,.16);
  --tab-idle:#8d99a8;                        /* secondaryLabel — رمادي لا أبيض */
  --font:"IBM Plex Sans Arabic",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;

  /* مقياس نص iOS (HIG). rem لا px — عشان يكبر مع إعداد حجم النص في النظام. */
  --fs-caption2:.6875rem;  /* 11 */
  --fs-caption :.75rem;    /* 12 */
  --fs-footnote:.8125rem;  /* 13 */
  --fs-subhead :.9375rem;  /* 15 */
  --fs-callout :1rem;      /* 16 */
  --fs-body    :1.0625rem; /* 17 — متن iOS القياسي */
  --fs-title3  :1.25rem;   /* 20 */
  --fs-title2  :1.375rem;  /* 22 */
  --fs-title   :1.75rem;   /* 28 */
  --fs-large   :2.125rem;  /* 34 */
}
:root[data-theme="light"]{
  --bg:#f4f6fa; --bg-2:#eef1f7; --surface:#ffffff; --surface-2:#f7f9fc;
  --line:#e0e6ef; --line-soft:#eaeff6;
  --control:#7d90ab;
  --text:#101823; --text-2:#5a6b82; --text-3:#5e718b;
  /* 0c8066 على خلفيته الشبحية = 4.40:1 — تحت عتبة AA بفارق بسيط */
  --primary:#0a7159; --primary-dim:#08604c; --primary-ghost:rgba(10,113,89,.08);
  --on-primary:#ffffff;
  --gold:#916a1b; --gold-ghost:rgba(145,106,27,.10); --on-gold:#ffffff;
  --danger:#cd3759; --danger-ghost:rgba(205,55,89,.10);
  --ring:#0a6a55; --shadow:0 10px 30px rgba(16,24,35,.10);
  --glass:rgba(255,255,255,.52);
  --glass-edge:rgba(255,255,255,.9);
  --glass-rim:rgba(16,24,35,.08);
  --glass-shadow:0 10px 30px rgba(16,24,35,.14);
  /* --warn و --info كانا يرثان قيمة الوضع الداكن فيصيران 1.6:1 على خلفية فاتحة */
  --warn:#8a5a00; --info:#0b5fa5;
  --glass-spec:linear-gradient(180deg,rgba(255,255,255,.55),rgba(255,255,255,.12) 38%,rgba(255,255,255,0) 60%,rgba(16,24,35,.05));
  --glass-spec-blend:soft-light;
  --bar-bg:rgba(249,250,252,.84);
  --bar-line:rgba(16,24,35,.16);
  --tab-idle:#66727f;   /* 4.66:1 على مادة الشريط — 6b7787 كانت 4.32 */
  --glass-hair:rgba(255,255,255,.9);
}

*,*::before,*::after{box-sizing:border-box}
html,body{height:100%;overflow:hidden;overscroll-behavior:none}
html{font-size:100%}          /* يحترم حجم النص الافتراضي في المتصفح/النظام */
body{
  margin:0;background:var(--bg);color:var(--text);font-family:var(--font);
  font-size:var(--fs-body);line-height:1.55;-webkit-font-smoothing:antialiased;
  overscroll-behavior-y:none;
}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:3px solid var(--ring);outline-offset:2px;border-radius:8px
}
.item:focus-visible,.chip:focus-visible{outline:3px solid var(--ring);outline-offset:-1px}
/* إعدادات الأيقونات. لازم تستثني المخططات: بدون :not(.chart) يرث كل <rect> و<text>
   داخل المخطط حداً أبيض بعرض 1.9 — وهذا اللي كان يخلّي الأعمدة والأرقام تبان
   بهالة بيضاء وكأن الخط مائل. حدود المخططات تجي من سماتها المباشرة فقط. */
svg:not(.chart):not(.riyal){width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.02em}
a{color:var(--primary);text-decoration:none}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:9px}
::-webkit-scrollbar-track{background:transparent}

/* ---------- Splash ---------- */
.splash{position:fixed;inset:0;display:grid;place-items:center;background:var(--bg);z-index:999;transition:opacity .35s ease}
.splash.out{opacity:0;pointer-events:none}
.splash-mark{font-size:34px;font-weight:700;color:var(--primary);letter-spacing:.02em;animation:pulse 1.4s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.45;transform:scale(.97)}50%{opacity:1;transform:scale(1)}}

/* ---------- Layout ---------- */
.app{height:100%;min-height:100dvh;max-height:100dvh;display:flex;flex-direction:column;overflow:hidden}
.topbar{
  flex:none;z-index:40;display:flex;align-items:center;gap:10px;
  padding-block:calc(env(safe-area-inset-top) + 8px) 8px;
  /* الوضع الأفقي مسموح و viewport-fit=cover، فبدون هذا تدخل الأزرار
     تحت حاضنة المستشعرات على الآيفون المائل. */
  padding-inline:max(var(--gutter), env(safe-area-inset-left))
                 max(var(--gutter), env(safe-area-inset-right));
  min-height:calc(env(safe-area-inset-top) + 56px);
  background:transparent;
  backdrop-filter:none;
  border-bottom:1px solid transparent;
  transition:border-color .25s ease,background .25s ease,backdrop-filter .25s ease;
}
/* الزجاج يظهر فقط لما ينزلق المحتوى تحته — سلوك iOS */
.topbar.scrolled{
  background:var(--glass);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border-bottom-color:var(--glass-rim);
  box-shadow:inset 0 1px 0 var(--glass-edge)
}
.topbar-title{font-weight:600;font-size:var(--fs-body);flex:1;text-align:center;letter-spacing:-.01em}
.topbar-actions{display:flex;gap:8px}
.icon-btn{
  display:grid;place-items:center;min-width:44px;height:44px;padding:0 10px;
  background:var(--surface);border:1px solid var(--line);border-radius:13px;
  cursor:pointer;font-size:12.5px;font-weight:600;color:var(--text-2);
  transition:transform .12s var(--ease-out),background .16s,color .16s;
  -webkit-tap-highlight-color:transparent
}
.icon-btn:hover{background:var(--surface-2);color:var(--text)}
.icon-btn.primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
.icon-btn.primary:hover{background:var(--primary-dim);border-color:var(--primary-dim)}
.icon-btn.primary svg{stroke-width:2.4}
.icon-btn:active{transform:scale(.92)}

.sidebar{
  position:fixed;inset-block:0;inset-inline-start:0;width:var(--sidebar-w);z-index:60;
  background:var(--bg-2);border-inline-end:1px solid var(--line-soft);
  display:flex;flex-direction:column;gap:14px;
  padding:calc(env(safe-area-inset-top) + 22px) 16px calc(env(safe-area-inset-bottom) + 20px);
  transform:translateX(var(--sb-off,100%));transition:transform .28s cubic-bezier(.4,0,.2,1);
}
html[dir="rtl"] .sidebar{--sb-off:100%}
html[dir="ltr"] .sidebar{--sb-off:-100%}
.sidebar.open{transform:translateX(0)}
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:50;opacity:0;pointer-events:none;transition:.28s}
.scrim.on{opacity:1;pointer-events:auto}

.brand{display:flex;align-items:center;gap:12px;padding:2px 6px 16px;border-bottom:1px solid var(--line-soft)}
.brand-mark{width:38px;height:38px;border-radius:12px;background:linear-gradient(140deg,var(--primary),var(--primary-dim));
  color:var(--on-primary);display:grid;place-items:center;overflow:hidden}
.brand-mark img{width:31px;height:31px;display:block}
.brand-name{font-weight:700;font-size:var(--fs-body)}
.brand-sub{font-size:var(--fs-caption);color:var(--text-3)}

.nav{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;flex:1;overflow:auto}
.nav a{
  display:flex;align-items:center;gap:12px;min-height:46px;padding:0 12px;border-radius:var(--radius-sm);
  color:var(--text-2);font-size:var(--fs-body);font-weight:500;transition:background .16s var(--ease-out),color .16s
}
.nav a:hover{background:var(--surface);color:var(--text)}
.nav a.active{background:var(--primary-ghost);color:var(--primary);font-weight:600}
.nav a:active{transform:scale(.98)}
.nav a svg{width:19px;height:19px}
.nav .lock{margin-inline-start:auto;font-size:var(--fs-caption2);color:var(--gold);background:var(--gold-ghost);padding:2px 6px;border-radius:6px}
.sidebar-foot{display:flex;flex-direction:column;gap:9px}
.tiny{font-size:var(--fs-caption2);color:var(--text-3);text-align:center}

.main{
  flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;
  overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
  padding-block:var(--gap-l) calc(env(safe-area-inset-bottom) + 49px + var(--gap));
  padding-inline:max(var(--gutter), env(safe-area-inset-left))
                 max(var(--gutter), env(safe-area-inset-right))
}
.main > *{max-width:1120px;margin-inline:auto}
/* اللمس المطوّل كان يفتح قائمة النسخ فوق الواجهة — النص قابل للتحديد في الحقول فقط */
.app{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
input,textarea,[contenteditable]{-webkit-user-select:text;user-select:text}
/* ── شريط التبويب — مواصفات UITabBar ────────────────────────────────
   ملتصق بالحواف لا كبسولة عائمة، شفّاف والمحتوى ينزلق تحته، خط شعرة فوقه،
   وارتفاعه ٤٩pt فوق المنطقة الآمنة. لا خلفية ولا عدسة تحت العنصر النشط:
   آبل تميّزه باللون وبتبديل الأيقونة من مفرّغة إلى ممتلئة، لا بمستطيل خلفه. */
.tabbar{
  position:absolute;z-index:40;display:flex;
  inset-inline:0;inset-block-end:0;
  padding-block:0 env(safe-area-inset-bottom);
  padding-inline:env(safe-area-inset-left) env(safe-area-inset-right);
  background:var(--bar-bg);
  backdrop-filter:blur(24px) saturate(180%);
  -webkit-backdrop-filter:blur(24px) saturate(180%);
  /* خط الفصل شعرة حقيقية: نصف بكسل منطقي لا واحد كامل */
  border-top:.33px solid var(--bar-line);
}
.tabbar a{
  display:flex;flex-direction:column;align-items:center;justify-content:flex-start;
  flex:1;min-width:0;height:49px;padding:7px 3px 0;gap:2px;
  font-size:10px;font-weight:500;letter-spacing:0;
  color:var(--tab-idle);
  transition:color .18s var(--ease-out);
  -webkit-tap-highlight-color:transparent;
}
.tabbar a:active{opacity:.45;transition:opacity 0s}
.tabbar a.active{color:var(--primary)}
.tabbar .tab-ico{position:relative;display:grid;place-items:center;width:25px;height:25px;flex:none}
.tabbar .tab-ico svg{position:absolute;width:25px;height:25px;
  transition:opacity .2s var(--ease-out)}
/* مفرّغة وهي خاملة، ممتلئة وهي نشطة — عُرف آبل الذي يعرفه كل مستخدم iOS */
.tabbar .out{opacity:1}
.tabbar .fill{opacity:0}
.tabbar a.active .out{opacity:0}
.tabbar a.active .fill{opacity:1}
svg.filled{fill:currentColor!important;stroke:none!important}
/* موازنة الوزن: حدّ بلون التعبئة يسمّك الأعضاء الرفيعة (عارضة الميزان، سيقان
   الأسهم) حتى تتساوى مع البيت والبطاقة. paint-order يبقي الحواف الداخلية نظيفة. */
svg.filled[data-bold]{stroke:currentColor!important;
  stroke-linejoin:round;stroke-linecap:round;paint-order:stroke fill}
.tabbar .tab-l{
  line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%
}

@media(min-width:900px){
  .sidebar{transform:none;position:fixed}
  .scrim{display:none}
  .app{padding-inline-start:var(--sidebar-w)}
  #menuBtn{display:none}
  .tabbar{display:none}
  .main{padding-bottom:40px}
  .topbar{background:var(--glass);backdrop-filter:var(--glass-blur)}
  .topbar-title{text-align:start;padding-inline-start:4px}
}

/* ---------- Primitives ---------- */
.card{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius);
  padding:var(--card-pad);box-shadow:var(--shadow-card)}
.card + .card{margin-top:var(--gap)}
.grid{display:grid;gap:var(--gap)}
/* minmax(0,1fr) لا 1fr: الحد الأدنى الضمني لـ1fr هو auto = عرض المحتوى،
   فمبلغ من ست خانات كان يوسّع خانته ويدفع البطاقة الثالثة خارج الشاشة. */
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:760px){.g4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:540px){
  .g3{gap:8px}
  .g3 .stat{padding:11px 9px}
  .g3 .stat .v{font-size:16px;letter-spacing:-.02em}
  .g3 .stat .k{font-size:10.5px}
}
@media(max-width:420px){.g2.tight{grid-template-columns:1fr}}
.row{display:flex;align-items:center;gap:10px;min-width:0}
/* الصفوف ما تكسر الصفحة أفقياً — التفاف احتياطي حتى لو نُسي .wrap */
.row > .btn{flex:0 1 auto;min-width:0}
.between{justify-content:space-between}
.wrap{flex-wrap:wrap}
.spacer{flex:1}
.mt{margin-top:var(--gap)}.mt-s{margin-top:var(--gap-s)}.mb{margin-bottom:var(--gap)}
.mt-l{margin-top:var(--gap-l)}
.muted{color:var(--text-2)}
.dim{color:var(--text-3)}
.small{font-size:var(--fs-footnote)}
.xs{font-size:var(--fs-caption2)}
.bold{font-weight:600}
.center{text-align:center}
.pos{color:var(--primary)}
.neg{color:var(--danger)}
.gold{color:var(--gold)}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum";direction:ltr;display:inline-block;unicode-bidi:isolate}

.section-title{display:flex;align-items:center;justify-content:space-between;
  margin:var(--gap-xl) 4px var(--gap-s);gap:12px}
.section-title h3{font-size:var(--fs-title3);letter-spacing:-.02em;font-weight:700}
.section-title:first-child{margin-top:var(--gap-l)}
.section-title .link{font-size:var(--fs-subhead);color:var(--primary);cursor:pointer;background:none;border:0;
  padding:11px 8px;margin:-11px -8px;min-height:44px;display:inline-flex;align-items:center}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;
  padding:13px 20px;border-radius:var(--radius-sm);border:1px solid var(--control);
  background:var(--surface-2);color:var(--text);font-weight:600;font-size:var(--fs-body);cursor:pointer;
  transition:transform .12s var(--ease-out),background .16s,border-color .16s;
  -webkit-tap-highlight-color:transparent
}
.btn:hover{border-color:var(--text-3)}
.btn:active{transform:scale(.965)}
.btn svg{width:19px;height:19px}
.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
.btn-primary:hover{background:var(--primary-dim);border-color:var(--primary-dim)}
.btn-pro{background:linear-gradient(120deg,var(--gold),color-mix(in oklab,var(--gold) 78%,#000));
  border-color:transparent;color:var(--on-gold)}
.btn-ghost{background:transparent}
.btn-danger{background:var(--danger-ghost);border-color:transparent;color:var(--danger)}
.btn-sm{padding:10px 15px;font-size:var(--fs-subhead);border-radius:var(--radius-xs);min-height:44px}
.btn-block{width:100%}
.btn:disabled{opacity:.45;cursor:not-allowed}

.pill{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;font-size:var(--fs-caption);font-weight:600;background:var(--surface-2);color:var(--text-2);border:1px solid var(--line-soft)}
.pill.p{background:var(--primary-ghost);color:var(--primary);border-color:transparent}
.pill.d{background:var(--danger-ghost);color:var(--danger);border-color:transparent}
.pill.g{background:var(--gold-ghost);color:var(--gold);border-color:transparent}

label{display:block;font-size:var(--fs-footnote);color:var(--text-2);margin-bottom:8px;font-weight:500}
.field{margin-bottom:var(--gap-l)}
.card > .field:last-child,.sheet > *:last-child,.card > *:last-child{margin-bottom:0}
input,select,textarea{
  width:100%;min-height:50px;padding:13px 15px;background:var(--bg-2);
  border:1px solid var(--control);border-radius:var(--radius-sm);
  transition:border-color .16s var(--ease-out)
}
input:focus,select:focus,textarea:focus{border-color:var(--primary)}
input[type="number"]{direction:ltr;text-align:start;font-variant-numeric:tabular-nums}
html[dir="rtl"] input[type="number"]{text-align:right}
/* الحقول الزمنية تُرتّب حقولها الداخلية حسب اتجاه العنصر — بدون ltr يطلع "Aug 2026 25" */
input[type="date"],input[type="month"],input[type="time"]{
  direction:ltr;
  /* iOS يفرض على هذي الحقول عرضاً داخلياً من تنسيق التاريخ ويتجاهل width:100%،
     فيتمدّد الحقل خارج البطاقة ويطلع النص برّا الصندوق. appearance:none + min-width:0
     يلغيان ذاك العرض المفروض فيلتزم بعرض أبيه مثل باقي الحقول. */
  -webkit-appearance:none;appearance:none;min-width:0;max-width:100%
}
html[dir="rtl"] input[type="date"],html[dir="rtl"] input[type="month"],
html[dir="rtl"] input[type="time"]{text-align:right}
/* الحاوية الداخلية للقيمة تجي بهوامش وعرض خاصين بها — نصفّرهما ونورّثها المحاذاة */
input[type="date"]::-webkit-date-and-time-value,
input[type="month"]::-webkit-date-and-time-value,
input[type="time"]::-webkit-date-and-time-value{
  text-align:inherit;margin:0;width:100%;min-width:0
}
input[type="date"]::-webkit-datetime-edit,
input[type="month"]::-webkit-datetime-edit,
input[type="time"]::-webkit-datetime-edit{padding:0}
/* زرّ التقويم يقف على الحافة المقابلة للنص بدل ما يزاحمه */
input[type="date"]::-webkit-calendar-picker-indicator{
  margin:0;padding:0 2px;opacity:.55;cursor:pointer
}
select{appearance:none;text-overflow:ellipsis;
  background-image:linear-gradient(45deg,transparent 50%,var(--text-3) 50%),linear-gradient(135deg,var(--text-3) 50%,transparent 50%);
  background-position:calc(0% + 16px) 23px,calc(0% + 21px) 23px;background-size:5px 5px;background-repeat:no-repeat}
/* نحجز مكان السهم بحشو، وإلا مرّ النص المقصوص فوقه على الشاشات الضيقة */
html[dir="rtl"] select{padding-left:34px}
html[dir="ltr"] select{padding-right:34px;
  background-position:calc(100% - 21px) 23px,calc(100% - 16px) 23px}
textarea{min-height:70px;resize:vertical}
.hint{font-size:var(--fs-footnote);color:var(--text-3);margin-top:7px;line-height:1.5}

.chips{display:flex;gap:9px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;min-height:44px;padding:8px 16px;border-radius:999px;
  background:var(--surface-2);border:1px solid var(--control);font-size:var(--fs-subhead);cursor:pointer;user-select:none;
  transition:transform .12s var(--ease-out),background .16s,border-color .16s,color .16s;
  -webkit-tap-highlight-color:transparent}
.chip:active{transform:scale(.96)}
.chip:hover{border-color:var(--text-3)}
.chip.on{background:var(--primary-ghost);border-color:var(--primary);color:var(--primary);font-weight:600}

.bar{height:8px;border-radius:99px;background:var(--line-soft);overflow:hidden}
.bar>i{display:block;height:100%;border-radius:99px;background:var(--primary);
  transition:width .6s var(--ease-ios)}
.bar.over>i{background:var(--danger)}
.bar.warn>i{background:var(--warn)}

.list{display:flex;flex-direction:column}
.list{margin:calc(var(--card-pad) * -1 + 2px) calc(var(--card-pad) * -1) calc(var(--card-pad) * -1)}
.item{position:relative;display:flex;align-items:center;gap:12px;min-height:60px;
  padding:var(--row-pad) var(--card-pad);cursor:pointer;
  transition:background .14s var(--ease-out)}
/* الفاصل مُزاح ليبدأ من بداية النص، مثل قوائم iOS */
.item::after{content:"";position:absolute;inset-block-end:0;
  inset-inline-start:calc(var(--card-pad) + 42px + 12px);inset-inline-end:var(--card-pad);
  height:1px;background:var(--line-soft)}
.item:last-child::after{display:none}
.item:hover{background:var(--surface-2)}
.item:active{background:var(--line-soft)}
.ico{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;font-size:19px;background:var(--surface-2);flex:none}
/* شيفرون الإفصاح — إشارة iOS القياسية إلى أن الصف يفتح شيئاً.
   يتّجه يساراً في RTL ويميناً في LTR. */
.item[role="button"]:not(.budget-row){padding-inline-end:calc(var(--card-pad) + 16px)}
.item[role="button"]:not(.budget-row)::before{
  content:"";position:absolute;inset-block-start:50%;inset-inline-end:var(--card-pad);
  width:8px;height:8px;margin-block-start:-5px;border-radius:1px;
  border-top:2px solid var(--text-3);border-right:2px solid var(--text-3);opacity:.7
}
html[dir="ltr"] .item[role="button"]:not(.budget-row)::before{transform:rotate(45deg)}
html[dir="rtl"] .item[role="button"]:not(.budget-row)::before{transform:rotate(-135deg)}
/* الفاصل ينتهي قبل الشيفرون */
.item[role="button"]:not(.budget-row)::after{inset-inline-end:calc(var(--card-pad) + 16px)}

.item.budget-row{align-items:flex-start;min-height:0;padding-block:16px}
.item.budget-row .ico{margin-top:2px}
.goal-card:active{transform:scale(.99);transition:transform .12s var(--ease-out)}
.item-main{flex:1;min-width:0}
.item-t{font-size:var(--fs-body);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item-s{font-size:var(--fs-footnote);color:var(--text-3);margin-top:2px}
.item-v{font-weight:600;font-size:var(--fs-body);font-variant-numeric:tabular-nums;white-space:nowrap;direction:ltr}

.empty{text-align:center;padding:44px 20px;color:var(--text-3);font-size:var(--fs-subhead)}
.empty .big{margin-bottom:14px;opacity:.55}

.stat{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius-sm);
  padding:15px 14px;box-shadow:var(--shadow-card)}
.stat .k{font-size:var(--fs-footnote);color:var(--text-3);margin-bottom:6px;font-weight:500}
.stat .v{font-size:var(--fs-title3);font-weight:700;font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}
html[dir="rtl"] .stat .v{text-align:right}

.hero{
  position:relative;overflow:hidden;border-radius:var(--radius-lg);padding:24px 22px;
  background:linear-gradient(150deg,#16382f 0%,#122029 55%,#131a24 100%);
  border:1px solid #1f4a3f
}
:root[data-theme="light"] .hero{background:linear-gradient(150deg,#e6f7f1,#f2f6fb);border-color:#cbe8de}
.hero::after{content:"";position:absolute;width:220px;height:220px;border-radius:50%;
  background:radial-gradient(circle,var(--primary-ghost),transparent 70%);inset-block-start:-90px;inset-inline-end:-60px}
.hero .k{font-size:var(--fs-subhead);color:var(--text-2);font-weight:500}
.hero .v{font-size:var(--fs-large);font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate;margin:2px 0 4px}
html[dir="rtl"] .hero .v{text-align:right}

table{width:100%;border-collapse:collapse;font-size:var(--fs-subhead)}
th,td{padding:12px 10px;text-align:start;border-bottom:1px solid var(--line-soft)}
th{font-size:var(--fs-footnote);color:var(--text-3);font-weight:600}
tr:last-child td{border-bottom:0}
/* الأرقام نفسها LTR، أما رأس العمود فنصّ يتبع اتجاه الصفحة — بدون هذا الفصل
   كان الرأس يحاذي اليمين وأرقامه اليسار في العربي. */
td.n{text-align:end;font-variant-numeric:tabular-nums;direction:ltr}
th.n{text-align:end;font-variant-numeric:tabular-nums}
html[dir="rtl"] td.n,html[dir="rtl"] th.n{text-align:left}
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* ---------- Sheet / Modal ---------- */
.sheet-host{position:fixed;inset:0;z-index:100;pointer-events:none}
.sheet{padding-top:max(8px,env(safe-area-inset-top,0px))}
.sheet-host.on{pointer-events:auto}
.sheet-bg{position:absolute;inset:0;background:rgba(0,0,0,.6);opacity:0;transition:.25s;backdrop-filter:blur(3px)}
.sheet-host.on .sheet-bg{opacity:1}
.sheet{
  position:absolute;inset-inline:0;inset-block-end:0;max-height:92dvh;overflow:auto;
  background:color-mix(in oklab,var(--surface) 88%,transparent);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border-top:1px solid var(--glass-edge);
  border-radius:var(--radius-lg) var(--radius-lg) 0 0;
  padding-block:8px calc(env(safe-area-inset-bottom) + 26px);
  padding-inline:max(var(--gutter), env(safe-area-inset-left))
                 max(var(--gutter), env(safe-area-inset-right));
  transform:translateY(100%);transition:transform .42s var(--ease-ios);box-shadow:var(--shadow)
}
.sheet-host.on .sheet{transform:translateY(0)}
.sheet-grip{width:40px;height:5px;border-radius:9px;background:var(--control);margin:10px auto 18px;opacity:.6}
.sheet h3{margin-bottom:var(--gap-l);font-size:var(--fs-title2);letter-spacing:-.02em;font-weight:700}
@media(min-width:760px){
  /* `inset-inline:auto` كانت تُلغي left:50% (لأنها left:auto و right:auto معاً)
     فيسقط الحوار على موضعه الساكن ثم يُزاح −50% بلا مرجع: نصفه خارج الشاشة
     في الإنجليزي عند أي عرض، وفي العربي عند 768px. الاختصار `inset` وحده
     يضبط الأربع الفيزيائية فوق inset-inline:0 القادمة من القاعدة الأساسية. */
  .sheet{inset:50% auto auto 50%;transform:translate(-50%,-46%) scale(.97);
    width:min(520px,92vw);border-radius:var(--radius-lg);max-height:86dvh;opacity:0}
  .sheet-host.on .sheet{transform:translate(-50%,-50%) scale(1);opacity:1}
  .sheet{transition:transform .34s var(--ease-ios),opacity .22s ease}
}

/* ---------- Toast ---------- */
.toast-host{position:fixed;inset-block-end:calc(env(safe-area-inset-bottom) + 76px);inset-inline:0;z-index:200;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}
.toast{background:var(--surface-2);border:1px solid var(--line);color:var(--text);padding:10px 16px;border-radius:999px;
  font-size:var(--fs-subhead);box-shadow:var(--shadow);animation:tin .25s ease, tout .3s ease 2.6s forwards}
.toast.ok{border-color:var(--primary);color:var(--primary)}
.toast.err{border-color:var(--danger);color:var(--danger)}
@keyframes tin{from{opacity:0;transform:translateY(12px)}}
@keyframes tout{to{opacity:0;transform:translateY(-6px)}}

/* ---------- Charts ---------- */
.chart{width:100%;height:auto;overflow:visible;display:block}
.chart.bars{max-height:200px}
.chart.line{max-height:150px}
.chart .lbl{fill:var(--text-3);font-size:10px;font-family:var(--font);font-weight:500;direction:ltr}
.chart .lbl.on{fill:var(--text-2)}
.chart .lbl.val{fill:var(--text-2);font-size:9.5px;font-variant-numeric:tabular-nums}
.chart-empty{display:grid;place-items:center;min-height:120px;color:var(--text-3);
  font-size:var(--fs-subhead);text-align:center;padding:20px;line-height:1.6}
.chart.donut,.chart.gauge{flex:none;max-width:100%}
.chart .axis{stroke:var(--line-soft);stroke-width:1}
.chart .lbl{fill:var(--text-3);font-size:9.5px;font-family:var(--font)}
.donut-legend{display:flex;flex-direction:column;gap:11px;flex:1;min-width:150px;max-width:260px}
.dot{width:10px;height:10px;border-radius:3px;flex:none}

/* ---------- Pro gate ---------- */
.gate{text-align:center;padding:40px 24px;background:linear-gradient(160deg,var(--gold-ghost),transparent);
  border:1px dashed var(--gold);border-radius:var(--radius)}
.gate .big{margin-bottom:12px}
.gate h3{color:var(--gold);margin-bottom:8px;font-size:var(--fs-title3)}
.price-tag{font-size:var(--fs-title);font-weight:700;color:var(--gold);direction:ltr;display:inline-block}
.feat{display:flex;gap:10px;align-items:flex-start;text-align:start;font-size:var(--fs-subhead);padding:7px 0}
.feat .c{color:var(--primary);flex:none;margin-top:3px}

.kbd{background:var(--bg-2);border:1px solid var(--line);border-radius:6px;padding:2px 7px;font-size:var(--fs-caption);direction:ltr;display:inline-block;font-family:ui-monospace,Menlo,monospace}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;direction:ltr;font-size:12px;word-break:break-all}
.fade-in{animation:fi .3s ease}
@keyframes fi{from{opacity:0;transform:translateY(6px)}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}


/* ── صرف سريع ───────────────────────────────────────────── */
.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
@media(max-width:380px){.quick-grid{grid-template-columns:repeat(2,1fr)}}
.quick-btn{
  display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 8px;
  background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius-sm);
  cursor:pointer;color:var(--text);box-shadow:var(--shadow-card);
  transition:transform .12s var(--ease-out),background .16s;-webkit-tap-highlight-color:transparent
}
.quick-btn:active{transform:scale(.94)}
.quick-btn:hover{background:var(--surface-2)}
.quick-ico{width:46px;height:46px;border-radius:15px;display:grid;place-items:center;font-size:22px}
.quick-l{font-size:var(--fs-caption);color:var(--text-2);text-align:center;line-height:1.3;font-weight:500;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}

.step-n{width:26px;height:26px;border-radius:9px;background:var(--primary-ghost);color:var(--primary);
  display:grid;place-items:center;font-size:13px;font-weight:700;flex:none}

/* ── لوحة الأرقام ───────────────────────────────────────── */
.amount-display{
  display:flex;align-items:baseline;justify-content:center;gap:10px;direction:ltr;
  font-size:52px;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums;
  padding:8px 0 26px;color:var(--text);line-height:1
}
.amount-cur{font-size:19px;font-weight:600;color:var(--text-3)}
/* لوحة الأرقام دائماً من اليسار لليمين — حتى في الواجهة العربية.
   بدون هذا يطلع الصف 3 2 1 وهو ترتيب ما يستخدمه أحد. */
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;direction:ltr}
.key{
  min-height:58px;border-radius:var(--radius-sm);border:1px solid var(--line-soft);
  background:var(--surface-2);color:var(--text);font-size:23px;font-weight:600;cursor:pointer;
  font-variant-numeric:tabular-nums;
  transition:transform .1s var(--ease-out),background .14s;-webkit-tap-highlight-color:transparent
}
.key:active{transform:scale(.93);background:var(--line-soft)}

/* ── محرّر التصنيفات ────────────────────────────────────── */
.cat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media(max-width:400px){.cat-grid{grid-template-columns:1fr}}
.cat-item{
  display:flex;align-items:center;gap:11px;padding:12px;min-height:64px;
  background:var(--surface-2);border:1px solid var(--line-soft);border-radius:var(--radius-sm);
  cursor:pointer;text-align:start;color:var(--text);width:100%;
  transition:transform .12s var(--ease-out),border-color .16s;-webkit-tap-highlight-color:transparent
}
.cat-item:active{transform:scale(.97)}
.cat-item:hover{border-color:var(--control)}
.cat-item .ico{width:40px;height:40px;border-radius:12px;font-size:19px}
.cat-name{font-size:var(--fs-subhead);font-weight:500;flex:1;min-width:0;line-height:1.35}
.cat-item.add{justify-content:center;border-style:dashed;border-color:var(--control);color:var(--primary);font-weight:600}

.picker-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;max-height:190px;overflow-y:auto;padding:4px}
@media(max-width:420px){.picker-grid{grid-template-columns:repeat(6,1fr)}}
.picker-grid button{
  aspect-ratio:1;min-height:40px;border-radius:12px;border:1px solid transparent;background:var(--surface-2);
  font-size:20px;cursor:pointer;display:grid;place-items:center;
  transition:transform .1s var(--ease-out),border-color .14s
}
.picker-grid button:active{transform:scale(.9)}
.picker-grid button.on{border-color:var(--primary);background:var(--primary-ghost)}
.color-row{display:flex;gap:10px;flex-wrap:wrap}
.swatch{width:40px;height:40px;border-radius:13px;border:2px solid transparent;cursor:pointer;
  transition:transform .1s var(--ease-out)}
.swatch:active{transform:scale(.9)}
.swatch.on{border-color:var(--text);box-shadow:0 0 0 2px var(--bg) inset}


/* ── رمز الريال السعودي الرسمي ─────────────────────────────
   يتبع لون النص وحجمه تلقائياً، ويقف على يسار الرقم مثل $ و €.
   ارتفاعه .74em ليطابق ارتفاع الأرقام لا ارتفاع السطر. */
.riyal{
  display:inline-block;width:.72em;height:.8em;
  fill:currentColor;stroke:none;flex:none
}
/* المبلغ: الرمز ثم الرقم، والمجموعة كلها LTR حتى ما ينقلب ترتيبها في السطر العربي.
   المحاذاة بالمنتصف لأن الـ SVG ما عنده خط قاعدة حقيقي يتحاذى عليه. */
.amt{
  display:inline-flex;align-items:center;gap:.3em;
  direction:ltr;unicode-bidi:isolate;white-space:nowrap;line-height:1
}
.amt-n{font-variant-numeric:tabular-nums}
/* داخل الأرقام الكبيرة نخفّف الرمز قليلاً حتى لا ينافس الرقم */
.hero .v .riyal,.stat .v .riyal{opacity:.85}
.amount-display .riyal{width:.54em;height:.6em;opacity:.5}
.amount-display .amt{gap:.24em}

/* شارة المبلغ السريع داخل بطاقة التصنيف */
.cat-item .pill{margin-inline-start:auto;flex:none}
