/* ============================== fonts ==================================== */
/* Fraunces carries the Latin display voice; IBM Plex Sans Arabic carries body
   text in BOTH languages (its Latin is IBM Plex Sans), so Arabic never falls
   back to a mismatched system face. All files are served from this box. */
@font-face{
  font-family:"Fraunces";font-style:normal;font-weight:400 700;font-display:swap;
  src:url("/fonts/fraunces-var-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+2013-2014,U+2018-201D,U+2026,U+00D7;
}
@font-face{font-family:"Plex Arabic";font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/plexarabic-400-arabic.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+FB50-FDFF,U+FE70-FEFF}
@font-face{font-family:"Plex Arabic";font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/plexarabic-400-latin.woff2") format("woff2");unicode-range:U+0000-00FF}
@font-face{font-family:"Plex Arabic";font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/plexarabic-500-arabic.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+FB50-FDFF,U+FE70-FEFF}
@font-face{font-family:"Plex Arabic";font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/plexarabic-500-latin.woff2") format("woff2");unicode-range:U+0000-00FF}
@font-face{font-family:"Plex Arabic";font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/plexarabic-600-arabic.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+FB50-FDFF,U+FE70-FEFF}
@font-face{font-family:"Plex Arabic";font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/plexarabic-600-latin.woff2") format("woff2");unicode-range:U+0000-00FF}
@font-face{font-family:"Plex Arabic";font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/plexarabic-700-arabic.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+FB50-FDFF,U+FE70-FEFF}
@font-face{font-family:"Plex Arabic";font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/plexarabic-700-latin.woff2") format("woff2");unicode-range:U+0000-00FF}

/* ============================== design tokens ============================ */
/* The ledger: warm paper, viridian ink, one measured line of gold. */
:root{
  --ground:#F3EFE6; --surface:#FBF9F2; --surface-2:#EDE8DA; --surface-3:#E2DBC8;
  --ink:#1B2823; --ink-2:#57675E; --ink-3:#84907F;
  --rule:#E0DAC8; --rule-2:#C8C0A8;
  --accent:#175C4C; --accent-2:#0F4237; --accent-ink:#F6F3E9; --accent-soft:#E0EAE2;
  --gold:#A9852E; --gold-2:#8D6E22; --gold-soft:#F0E7CE;
  --good:#1E6B4F; --good-bg:#DFECE0; --warn:#8A5A12; --warn-bg:#F4E8CD;
  --bad:#A6392E;  --bad-bg:#F4DFD8;  --info:#4C5B54; --info-bg:#E7E8DD;
  --shadow-1:0 .5px 1px rgba(27,40,35,.05),0 2px 6px rgba(27,40,35,.05);
  --shadow-2:0 1px 2px rgba(27,40,35,.06),0 6px 16px rgba(27,40,35,.07),0 16px 40px rgba(27,40,35,.07);
  --serif:"Fraunces","Plex Arabic",Georgia,serif;
  --sans:"Plex Arabic",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"SF Mono","Cascadia Mono",Consolas,Menlo,monospace;
  --r:12px; --r-sm:7px;
  --safe-b:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]){ color-scheme:dark;
  --ground:#0D1412; --surface:#151E1A; --surface-2:#1C2721; --surface-3:#263129;
  --ink:#E7ECE3; --ink-2:#9CAB9E; --ink-3:#6D7B6E;
  --rule:#243029; --rule-2:#374437;
  --accent:#5FAE93; --accent-2:#7CC3AA; --accent-ink:#0A1611; --accent-soft:#18302A;
  --gold:#CFA84F; --gold-2:#E0BE6C; --gold-soft:#2E2814;
  --good:#4FB98C; --good-bg:#122C21; --warn:#D9A83E; --warn-bg:#2E2410;
  --bad:#E28070;  --bad-bg:#331B15;  --info:#94A69A; --info-bg:#1B2620;
  --shadow-1:0 1px 2px rgba(0,0,0,.5);
  --shadow-2:0 1px 2px rgba(0,0,0,.5),0 10px 28px rgba(0,0,0,.4);
}}
:root[data-theme="dark"]{ color-scheme:dark;
  --ground:#0D1412; --surface:#151E1A; --surface-2:#1C2721; --surface-3:#263129;
  --ink:#E7ECE3; --ink-2:#9CAB9E; --ink-3:#6D7B6E;
  --rule:#243029; --rule-2:#374437;
  --accent:#5FAE93; --accent-2:#7CC3AA; --accent-ink:#0A1611; --accent-soft:#18302A;
  --gold:#CFA84F; --gold-2:#E0BE6C; --gold-soft:#2E2814;
  --good:#4FB98C; --good-bg:#122C21; --warn:#D9A83E; --warn-bg:#2E2410;
  --bad:#E28070;  --bad-bg:#331B15;  --info:#94A69A; --info-bg:#1B2620;
  --shadow-1:0 1px 2px rgba(0,0,0,.5);
  --shadow-2:0 1px 2px rgba(0,0,0,.5),0 10px 28px rgba(0,0,0,.4);
}

*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{
  margin:0; background:var(--ground); color:var(--ink);
  font:15px/1.55 var(--sans); -webkit-font-smoothing:antialiased;
  overscroll-behavior-y:none;
}
/* A whisper of paper grain, on everything. */
body::before{
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none; opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .43 0 0 0 0 .36 0 0 0 .05 0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}
#app{position:relative;z-index:1}
[dir="rtl"] body,[dir="rtl"] .btn,[dir="rtl"] input,[dir="rtl"] select{letter-spacing:0}

h1,h2,h3{font-family:var(--serif);font-weight:560;font-variation-settings:"opsz" 40;letter-spacing:-.015em;margin:0;text-wrap:balance}
[dir="rtl"] h1,[dir="rtl"] h2,[dir="rtl"] h3{letter-spacing:0;font-weight:700}
.muted{color:var(--ink-2)}
.num,.spark-val{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em;direction:ltr;unicode-bidi:isolate}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation-duration:.01ms!important}}

/* ================================ controls =============================== */
.btn{
  font:inherit;font-size:14px;font-weight:600;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  min-height:40px;padding:0 15px;border-radius:var(--r-sm);cursor:pointer;
  border:1px solid var(--rule-2);background:var(--surface);color:var(--ink);
  transition:background .14s,border-color .14s,opacity .14s,transform .08s;
  text-decoration:none;
}
.btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--ink-3)}
.btn:active:not(:disabled){transform:translateY(1px)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.primary{
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 88%,#fff 12%),var(--accent));
  border-color:var(--accent);color:var(--accent-ink);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),var(--shadow-1);
}
.btn.primary:hover:not(:disabled){background:var(--accent-2);border-color:var(--accent-2)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}
.btn.ghost:hover:not(:disabled){background:var(--surface-2);color:var(--ink)}
.btn.sm{min-height:32px;font-size:13px;padding:0 11px}
.btn.block{width:100%}
.btn.danger{color:var(--bad)}
.btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
@media (pointer:coarse){
  .btn,.btn.sm{min-height:44px}
  .btn.sm{padding:0 14px}
  select.btn{padding-inline:12px}
}

/* Segmented control (language / theme). */
.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--rule);border-radius:var(--r-sm);padding:2px;gap:2px}
.seg button{
  font:inherit;font-size:12px;font-weight:600;border:0;background:transparent;color:var(--ink-2);
  min-height:26px;padding:0 9px;border-radius:5px;cursor:pointer;
}
.seg button{transition:background .18s,color .18s,box-shadow .18s}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}
@media (pointer:coarse){.seg button{min-height:34px}}

.fld{display:block;margin-block-end:14px}
.fld>span{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-block-end:5px}
.fld input,.fld select{
  font:inherit;width:100%;min-height:44px;padding:10px 12px;
  border:1px solid var(--rule-2);border-radius:var(--r-sm);
  background:var(--surface);color:var(--ink);
}
.fld input:focus,.fld select:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}
.hint{display:block;font-size:12px;color:var(--ink-3);margin-block-start:5px;line-height:1.45}
.err{background:var(--bad-bg);color:var(--bad);font-size:13.5px;padding:10px 12px;border-radius:var(--r-sm);margin:0 0 14px;line-height:1.45}
.ok{background:var(--good-bg);color:var(--good);font-size:13.5px;padding:10px 12px;border-radius:var(--r-sm);margin:0 0 14px}

/* ================================= boot ================================== */
.boot{display:grid;place-items:center;min-height:100vh}
.spinner{width:26px;height:26px;border-radius:50%;border:2.5px solid var(--rule-2);border-block-start-color:var(--accent);animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ================================= brand ================================= */
.brandmark{
  display:grid;place-items:center;flex:none;
  width:34px;height:34px;border-radius:9px;
  background:linear-gradient(150deg,var(--accent),var(--accent-2));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),var(--shadow-1);
}
.brandmark svg{width:22px;height:22px;--mark-stroke:#F6F3E9;--mark-pivot:#C9A257}
.brandmark.lg{width:56px;height:56px;border-radius:15px}
.brandmark.lg svg{width:36px;height:36px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit}
.brand-word{font-family:var(--serif);font-size:19px;font-weight:600;letter-spacing:-.01em}
[dir="rtl"] .brand-word{letter-spacing:0}

/* ================================= auth ================================== */
.auth{min-height:100dvh;display:grid;place-items:center;align-content:center;gap:18px;padding:24px;position:relative}
.auth::after{
  content:""; position:absolute; inset-inline:0; top:0; height:42vh; z-index:-1;
  background:
    radial-gradient(120% 100% at 50% 0%, var(--accent-soft) 0%, transparent 70%);
}
.auth-lang{position:absolute;top:14px;inset-inline-end:14px}
.auth-card{
  width:100%;max-width:400px;background:var(--surface);
  border:1px solid var(--rule);border-radius:18px;box-shadow:var(--shadow-2);
  padding:30px 28px 26px;position:relative;overflow:hidden;
  animation:cardin .5s cubic-bezier(.2,.7,.25,1) both;
}
/* One measured line of gold across the head of the card. */
.auth-card::before{content:"";position:absolute;inset-inline:0;top:0;height:3px;
  background:linear-gradient(90deg,transparent,var(--gold) 30%,var(--gold) 70%,transparent)}
@keyframes cardin{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
.auth-brand{display:flex;flex-direction:column;align-items:center;gap:10px;margin-block-end:20px;text-align:center}
.auth-word{font-family:var(--serif);font-size:30px;font-weight:600;letter-spacing:-.02em;line-height:1}
[dir="rtl"] .auth-word{letter-spacing:0}
.auth-tagline{font-size:12.5px;color:var(--ink-3)}
.auth-card h1{font-size:22px;margin:4px 0 6px;text-align:center}
.auth-card .muted{font-size:13.5px;margin:0 0 20px;line-height:1.5;text-align:center}
.auth-foot{font-size:12px;color:var(--ink-3);margin:0}

/* ================================= shell ================================= */
.shell{display:grid;min-height:100dvh}
.rail{display:none}
.main{min-width:0;padding-block-end:calc(66px + var(--safe-b))}

@media (min-width:900px){
  .shell{grid-template-columns:248px 1fr}
  .rail{
    display:flex;flex-direction:column;gap:6px;
    background:var(--surface);border-inline-end:1px solid var(--rule);
    padding:20px 14px 16px;position:sticky;top:0;height:100dvh;
  }
  .rail .brand{padding:0 8px 18px}
  .rail-nav{display:flex;flex-direction:column;gap:2px;flex:1}
  .rail-foot{border-block-start:1px solid var(--rule);padding-block-start:12px;display:flex;flex-direction:column;gap:10px}
  .prefrow{display:flex;gap:6px;flex-wrap:wrap;padding:0 4px}
  .who{padding:0 4px;min-width:0;display:flex;align-items:center;gap:9px}
  .who-ava{
    width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center;
    background:var(--gold-soft);color:var(--gold-2);font-size:12.5px;font-weight:700;
  }
  .who-id{min-width:0}
  .who-id span{display:block;font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .who-id small{display:block;font-size:11.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .main{padding-block-end:40px}
  .tabbar{display:none}
}
.prefrow{display:none}
@media (min-width:900px){.prefrow{display:flex}}

.navitem{
  display:flex;align-items:center;gap:11px;width:100%;
  font:inherit;font-size:14px;font-weight:500;text-align:start;
  padding:9px 11px;border-radius:var(--r-sm);border:0;background:transparent;
  color:var(--ink-2);cursor:pointer;text-decoration:none;position:relative;
}
.navitem:hover{background:var(--surface-2);color:var(--ink)}
.navitem[aria-current="page"]{background:var(--accent-soft);color:var(--accent);font-weight:600}
.navitem[aria-current="page"]::before{
  content:"";position:absolute;inset-inline-start:-14px;inset-block:8px;width:3px;
  border-start-end-radius:3px;border-end-end-radius:3px;background:var(--gold);
}
.navitem svg{width:17px;height:17px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.navitem .cnt{margin-inline-start:auto;font-family:var(--mono);font-size:11px;color:var(--ink-3)}

/* =============================== tab bar ================================= */
.tabbar{
  position:fixed;inset-inline:0;bottom:0;z-index:40;
  display:grid;grid-auto-flow:column;grid-auto-columns:1fr;
  background:color-mix(in srgb,var(--surface) 88%,transparent);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border-block-start:1px solid var(--rule);
  padding-block-end:var(--safe-b);
}
.tab{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  min-height:58px;border:0;background:transparent;color:var(--ink-3);
  font:inherit;font-size:10.5px;font-weight:600;cursor:pointer;text-decoration:none;position:relative;
}
.tab svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tab[aria-current="page"]{color:var(--accent)}
.tab[aria-current="page"]::before{
  content:"";position:absolute;top:0;inset-inline:24%;height:2.5px;border-radius:0 0 3px 3px;background:var(--gold);
}
/* Declared after the base rule so it actually wins on wide screens. */
@media (min-width:900px){.tabbar{display:none}}

/* =============================== page frame ============================== */
.page{max-width:1240px;margin:0 auto;padding:0 16px}
@media (min-width:900px){.page{padding:0 28px}}

.topbar{
  position:sticky;top:0;z-index:30;
  background:color-mix(in srgb,var(--ground) 86%,transparent);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  border-block-end:1px solid var(--rule);
  padding:14px 0 12px;margin-block-end:20px;
}
.topbar-in{max-width:1240px;margin:0 auto;padding:0 16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
@media (min-width:900px){.topbar-in{padding:0 28px}}
.topbar h1{font-size:22px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topbar .sub{font-size:12.5px;color:var(--ink-3);width:100%;margin:2px 0 0}
.topbar .acts{display:flex;gap:8px;flex-wrap:wrap}
/* Period labels like "2026-Q3" must not be bidi-reordered in Arabic. */
select[data-el="period"],input[data-el="period"]{direction:ltr}

.card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);box-shadow:var(--shadow-1)}
.stack{display:flex;flex-direction:column;gap:14px}

/* Staggered entrance for the main content of each view. */
.rise{animation:rise-in .45s cubic-bezier(.2,.7,.25,1) both}
.rise:nth-child(2){animation-delay:.05s}.rise:nth-child(3){animation-delay:.1s}
.rise:nth-child(4){animation-delay:.15s}.rise:nth-child(5){animation-delay:.2s}
.rise:nth-child(6){animation-delay:.24s}.rise:nth-child(7){animation-delay:.28s}
@keyframes rise-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* =============================== portfolio =============================== */
.co-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:14px}
.co{
  padding:17px;display:flex;flex-direction:column;gap:13px;
  cursor:pointer;text-align:start;font:inherit;color:inherit;
  border:1px solid var(--rule);background:var(--surface);border-radius:var(--r);
  box-shadow:var(--shadow-1);
  transition:border-color .15s,box-shadow .15s,transform .15s;
}
.co:hover{border-color:var(--rule-2);box-shadow:var(--shadow-2);transform:translateY(-2px)}
.co-head{display:flex;align-items:flex-start;gap:12px}
.co-name{font-family:var(--serif);font-size:17px;font-weight:600;line-height:1.25;flex:1;min-width:0}
.co-sector{display:block;font-family:var(--sans);font-size:12px;color:var(--ink-3);font-weight:400;margin-block-start:3px}
.co-org{display:inline-block;font-family:var(--sans);font-size:10.5px;font-weight:600;color:var(--gold-2);background:var(--gold-soft);border-radius:4px;padding:1px 6px;margin-block-start:5px}
.ring{position:relative;width:54px;height:54px;flex:none}
.ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ring .bg{stroke:var(--surface-3)}
.ring .fg{stroke-linecap:round;transition:stroke-dasharray .6s cubic-bezier(.2,.7,.25,1)}
.ring .tick{stroke:var(--gold);stroke-width:2}
.ring b{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--mono);font-size:14.5px;font-weight:600;font-variant-numeric:tabular-nums}
.co-figs{display:flex;gap:18px;flex-wrap:wrap}
.fig{min-width:0}
.fig i{display:block;font-style:normal;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:600}
[dir="rtl"] .fig i{letter-spacing:0}
.fig b{display:block;font-family:var(--mono);font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;margin-block-start:2px;direction:ltr;unicode-bidi:isolate;text-align:start}
.co-foot{display:flex;align-items:center;gap:10px;margin-block-start:auto;padding-block-start:2px}
.chips{display:flex;gap:5px}
.chip{font-family:var(--mono);font-size:10.5px;font-weight:600;padding:2px 6px;border-radius:4px}
.chip.g{background:var(--good-bg);color:var(--good)}
.chip.w{background:var(--warn-bg);color:var(--warn)}
.chip.b{background:var(--bad-bg);color:var(--bad)}
/* Time axes stay left-to-right even in Arabic — financial-chart convention. */
.spark{margin-inline-start:auto;height:22px;width:76px;overflow:visible;direction:ltr}
.spark path{fill:none;stroke:var(--gold);stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
.spark circle{fill:var(--gold)}

.empty{text-align:center;padding:58px 24px;border:1.5px dashed var(--rule-2);border-radius:var(--r);color:var(--ink-2)}
.empty .brandmark{margin:0 auto 14px;opacity:.9}
.empty h3{font-size:19px;margin-block-end:7px;color:var(--ink)}
.empty p{margin:0 auto 18px;max-width:46ch;font-size:14px;line-height:1.55}

/* ============================== KPI display ============================== */
.summary{display:grid;gap:12px;grid-template-columns:1fr;margin-block-end:22px}
@media (min-width:620px){.summary{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1020px){.summary{grid-template-columns:1.35fr repeat(3,1fr)}}
.health{padding:17px;display:flex;flex-direction:column;gap:12px;position:relative;overflow:hidden}
.health::before{content:"";position:absolute;inset-inline-start:0;inset-block:0;width:3px;background:linear-gradient(var(--gold),transparent)}
.health-top{display:flex;align-items:center;gap:14px}
.health-num{font-family:var(--mono);font-size:40px;font-weight:600;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.02em;direction:ltr;unicode-bidi:isolate}
.health-lab{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:650}
[dir="rtl"] .health-lab{letter-spacing:0}
.statusbar{display:flex;gap:2px;height:9px;border-radius:5px;overflow:hidden;background:var(--surface-2)}
.legend{display:flex;flex-wrap:wrap;gap:11px;font-size:12px;color:var(--ink-2)}
.legend i{width:9px;height:9px;border-radius:2px;display:inline-block;margin-inline-end:5px}
.legend b{font-family:var(--mono);font-variant-numeric:tabular-nums}
.tile{padding:15px 16px;display:flex;flex-direction:column;gap:3px}
.tile i{font-style:normal;font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);font-weight:650}
[dir="rtl"] .tile i{letter-spacing:0}
.tile b{font-family:var(--mono);font-size:21px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1.2;direction:ltr;unicode-bidi:isolate;text-align:start}
.tile small{font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums}

.sec{margin-block-end:24px}
.sec-head{display:flex;align-items:center;gap:10px;padding-block-end:8px;margin-block-end:12px;border-block-end:1px solid var(--rule)}
.sec-head h3{font-size:17.5px}
.sec-head .cnt{margin-inline-start:auto;font-family:var(--mono);font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}

.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:11px}
.kpi{
  position:relative;padding:12px 14px 11px 17px;display:flex;flex-direction:column;gap:7px;
  background:var(--surface);border:1px solid var(--rule);border-radius:10px;box-shadow:var(--shadow-1);
  padding-inline:17px 14px;
}
.kpi::before{content:"";position:absolute;inset-inline-start:0;top:10px;bottom:10px;width:3px;border-start-end-radius:3px;border-end-end-radius:3px;background:var(--info)}
.kpi.good::before{background:var(--good)} .kpi.warn::before{background:var(--warn)} .kpi.bad::before{background:var(--bad)}
.kpi-top{display:flex;gap:7px;align-items:flex-start}
.kpi-no{font-family:var(--mono);font-size:10px;color:var(--ink-3);padding-block-start:2px;min-width:16px;font-variant-numeric:tabular-nums}
.kpi-name{font-size:13px;font-weight:640;line-height:1.3;flex:1;min-width:0}
.kpi-desc{display:block;font-size:11.5px;font-weight:400;color:var(--ink-3);line-height:1.35;margin-block-start:1px}
.kpi-val{font-family:var(--mono);font-size:22px;font-weight:600;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.02em;direction:ltr;unicode-bidi:isolate;text-align:start}
.kpi-foot{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-block-start:auto}
.pill{font-size:10px;font-weight:680;letter-spacing:.06em;text-transform:uppercase;padding:3px 6px;border-radius:4px;white-space:nowrap}
[dir="rtl"] .pill{letter-spacing:0;font-size:10.5px}
.pill.good{background:var(--good-bg);color:var(--good)}
.pill.warn{background:var(--warn-bg);color:var(--warn)}
.pill.bad{background:var(--bad-bg);color:var(--bad)}
.pill.info{background:var(--info-bg);color:var(--info)}
.pill.unavailable{background:transparent;color:var(--ink-3);border:1px dashed var(--rule-2)}
.pill.gold{background:var(--gold-soft);color:var(--gold-2)}

.kpi.unavailable{background:transparent;border-style:dashed;box-shadow:none}
.kpi.unavailable::before{background:var(--rule-2)}
.kpi.unavailable .kpi-name,.kpi.unavailable .kpi-val{color:var(--ink-3)}
.kpi.unavailable .kpi-val{font-weight:400}
.kpi-needs{font-size:11px;line-height:1.45;color:var(--ink-3);background:var(--surface-2);padding:5px 7px;border-radius:4px}
.kpi-needs b{color:var(--ink-2);font-weight:600}

.coverage{padding:17px;display:flex;flex-direction:column;gap:12px}
.cov-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.cov-num{font-family:var(--mono);font-size:26px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.cov-groups{display:flex;flex-direction:column;gap:7px}
.cov-row{display:grid;grid-template-columns:1fr 62px 46px;gap:10px;align-items:center;font-size:12.5px}
.cov-row span{color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cov-bar{height:5px;border-radius:3px;background:var(--surface-3);overflow:hidden}
.cov-bar i{display:block;height:100%;border-radius:3px;background:var(--accent)}
.cov-row b{font-family:var(--mono);font-size:11.5px;font-variant-numeric:tabular-nums;color:var(--ink-3);text-align:end}
.cov-row.done b{color:var(--good)}
.cov-unlock{font-size:12.5px;color:var(--ink-2);line-height:1.5;border-block-start:1px solid var(--rule);padding-block-start:10px}
.cov-unlock b{color:var(--ink)}
.cov-unlock a{
  display:inline-flex;align-items:center;min-height:44px;margin-block-start:4px;padding-inline:14px;
  border:1px solid var(--rule-2);border-radius:var(--r-sm);
  color:var(--accent);text-decoration:none;font-size:13px;font-weight:600;
}
.cov-unlock a:hover{background:var(--surface-2)}
.bench{font-size:11px;color:var(--ink-3)}
.kpi-note{font-size:11px;line-height:1.4;color:var(--warn);background:var(--warn-bg);padding:5px 7px;border-radius:4px}

/* ============================== data entry =============================== */
.entry{display:grid;gap:16px;grid-template-columns:1fr}
@media (min-width:1020px){.entry{grid-template-columns:1fr 324px;align-items:start}}
.grp{border:1px solid var(--rule);border-radius:var(--r);background:var(--surface);overflow:hidden;box-shadow:var(--shadow-1)}
.grp+.grp{margin-block-start:12px}
.grp>summary{
  cursor:pointer;list-style:none;padding:14px 17px;font-size:13px;font-weight:650;
  letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);
  display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;
}
[dir="rtl"] .grp>summary{letter-spacing:0;font-size:13.5px}
.grp>summary::-webkit-details-marker{display:none}
.grp>summary::after{content:"+";font-family:var(--mono);font-size:16px;color:var(--ink-3);font-weight:400}
.grp[open]>summary::after{content:"–"}
.grp>summary:hover{background:var(--surface-2)}
.grp-body{padding:2px 17px 17px;display:grid;gap:10px}
@media (min-width:620px){.grp-body{grid-template-columns:repeat(2,1fr);gap:10px 18px}}
.row{display:grid;grid-template-columns:1fr 130px;gap:10px;align-items:center}
.row label{font-size:13.5px;color:var(--ink-2);line-height:1.3}
.row input{
  font-family:var(--mono);font-size:13.5px;font-variant-numeric:tabular-nums;text-align:end;
  min-height:42px;padding:8px 10px;border:1px solid var(--rule-2);border-radius:var(--r-sm);
  background:var(--ground);color:var(--ink);width:100%;direction:ltr;
}
.row input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}
.side{position:sticky;top:82px;padding:17px;display:flex;flex-direction:column;gap:12px}

.notes{padding:4px 0}
.notes summary{cursor:pointer;list-style:none;padding:14px 17px;font-weight:640;font-size:14px;display:flex;gap:9px;align-items:center;min-height:48px}
.notes summary::-webkit-details-marker{display:none}
.notes summary::before{content:"▸";color:var(--ink-3);font-size:11px}
[dir="rtl"] .notes summary::before{content:"◂"}
.notes[open] summary::before{content:"▾"}
.notes ol{margin:0;padding-block:0 16px;padding-inline:40px 18px;display:flex;flex-direction:column;gap:10px}
.notes li{font-size:13.5px;color:var(--ink-2);line-height:1.55}
.notes li b{color:var(--ink);font-weight:640}

.tblwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.tbl{border-collapse:collapse;width:100%;font-size:13px;min-width:640px}
.tbl th,.tbl td{text-align:start;padding:8px 12px;border-block-end:1px solid var(--rule);white-space:nowrap}
.tbl th{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);font-weight:650;position:sticky;top:0;background:var(--surface)}
[dir="rtl"] .tbl th{letter-spacing:0}
.tbl td.n{text-align:end;font-family:var(--mono);font-variant-numeric:tabular-nums;direction:ltr}
.tbl tr:hover td{background:var(--surface-2)}

/* ============================== import panel ============================= */
.import-zone{
  border:1.5px dashed var(--rule-2);border-radius:var(--r);padding:18px;
  display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;
  color:var(--ink-2);font-size:13px;cursor:pointer;transition:border-color .15s,background .15s;
}
.import-zone:hover,.import-zone.drag{border-color:var(--accent);background:var(--accent-soft)}
.import-zone svg{width:22px;height:22px;stroke:var(--ink-3);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.prop-list{display:flex;flex-direction:column;gap:6px;max-height:320px;overflow-y:auto;padding-inline-end:4px}
.prop{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;font-size:12.5px;padding:7px 10px;border:1px solid var(--rule);border-radius:7px;background:var(--surface)}
.prop span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2)}
.prop b{font-family:var(--mono);font-variant-numeric:tabular-nums;direction:ltr}

/* ================================ admin ================================== */
.org-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px}
.org{
  padding:17px;display:flex;flex-direction:column;gap:10px;cursor:pointer;text-align:start;font:inherit;color:inherit;
  border:1px solid var(--rule);background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow-1);
  transition:border-color .15s,box-shadow .15s,transform .15s;
}
.org:hover{border-color:var(--rule-2);box-shadow:var(--shadow-2);transform:translateY(-2px)}
.org-name{font-family:var(--serif);font-size:17px;font-weight:600}
.org-meta{display:flex;gap:14px;font-size:12.5px;color:var(--ink-2)}
.org-meta b{font-family:var(--mono);font-variant-numeric:tabular-nums}
.mem{display:flex;align-items:center;gap:10px;padding:10px 0;border-block-end:1px solid var(--rule);font-size:13.5px}
.mem:last-child{border-block-end:0}
.mem-ava{width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:700}
.mem-id{flex:1;min-width:0}
.mem-id b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mem-id small{display:block;color:var(--ink-3);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.audit-row{display:flex;gap:10px;padding:9px 0;border-block-end:1px solid var(--rule);font-size:12.5px;align-items:baseline}
.audit-row:last-child{border-block-end:0}
.audit-act{font-family:var(--mono);font-size:11px;color:var(--accent);white-space:nowrap}
.audit-det{flex:1;color:var(--ink-2);min-width:0;overflow:hidden;text-overflow:ellipsis}
.audit-at{color:var(--ink-3);font-size:11px;white-space:nowrap;font-family:var(--mono)}
.invite-link{
  font-family:var(--mono);font-size:11.5px;background:var(--ground);border:1px solid var(--rule);
  border-radius:6px;padding:8px 10px;word-break:break-all;direction:ltr;text-align:left;
}

/* =============================== variance ================================ */
.var-tree{display:flex;flex-direction:column;gap:4px}
.var-node{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:8px 12px;border-radius:7px;font-size:13px}
.var-node[data-depth="0"]{background:var(--surface-2);font-weight:650}
.var-node .vn-label{display:flex;align-items:center;gap:8px;min-width:0}
.var-node .vn-code{font-family:var(--mono);font-size:10.5px;color:var(--ink-3);background:var(--surface-2);padding:1px 5px;border-radius:4px}
.var-node[data-depth="0"] .vn-code{background:var(--surface-3)}
.var-node b{font-family:var(--mono);font-variant-numeric:tabular-nums;direction:ltr}
.var-lines{display:flex;flex-direction:column;gap:8px}
.var-line{display:grid;grid-template-columns:1.4fr repeat(4,1fr) auto;gap:6px;align-items:center}
.var-line input{
  font:inherit;font-size:12.5px;min-height:38px;padding:6px 8px;border:1px solid var(--rule-2);
  border-radius:6px;background:var(--ground);color:var(--ink);width:100%;
}
.var-line input[type=number]{font-family:var(--mono);text-align:end;direction:ltr}
.var-line .btn{min-height:38px}
.var-head{display:grid;grid-template-columns:1.4fr repeat(4,1fr) auto;gap:6px;font-size:10.5px;color:var(--ink-3);font-weight:650;text-transform:uppercase;letter-spacing:.05em}
[dir="rtl"] .var-head{letter-spacing:0}
@media (max-width:640px){
  .var-line,.var-head{grid-template-columns:1fr 1fr 1fr}
  .var-head{display:none}
}

/* ================================ modal ================================== */
.modal-bg{position:fixed;inset:0;background:rgba(10,18,14,.55);display:grid;place-items:center;padding:20px;z-index:60;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.modal{
  width:100%;max-width:430px;background:var(--surface);border-radius:16px;box-shadow:var(--shadow-2);
  padding:22px 22px 20px;position:relative;overflow:hidden;max-height:88dvh;overflow-y:auto;
  animation:cardin .3s cubic-bezier(.2,.7,.25,1) both;
}
.modal::before{content:"";position:absolute;inset-inline:0;top:0;height:3px;
  background:linear-gradient(90deg,transparent,var(--gold) 30%,var(--gold) 70%,transparent)}
.modal h2{font-size:19px;margin-block-end:5px}
.modal .muted{font-size:13.5px;margin:0 0 18px}
.modal-acts{display:flex;gap:9px;justify-content:flex-end;margin-block-start:6px}
.modal.wide{max-width:560px}

.toast{
  position:fixed;inset-inline-start:50%;transform:translateX(-50%);
  bottom:calc(74px + var(--safe-b));z-index:70;
  background:var(--ink);color:var(--ground);font-size:13.5px;font-weight:600;
  padding:10px 18px;border-radius:22px;box-shadow:var(--shadow-2);
  animation:toast-rise .22s ease;max-width:calc(100vw - 40px);
}
[dir="rtl"] .toast{transform:translateX(50%)}
@media (min-width:900px){.toast{bottom:26px}}
@keyframes toast-rise{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}

/* ============================ unread badge =============================== */
.badge{
  margin-inline-start:auto;min-width:17px;height:17px;padding:0 5px;border-radius:9px;
  display:inline-grid;place-items:center;
  background:var(--gold);color:#20180A;font-size:10.5px;font-weight:700;
  font-family:var(--mono);line-height:1;
}
.tab .badge{position:absolute;top:7px;inset-inline-start:calc(50% + 6px);margin:0}

/* ============================ activity feed ============================== */
.act-row{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-block-end:1px solid var(--rule)}
.act-row:last-child{border-block-end:0}
.act-ico{
  width:30px;height:30px;border-radius:9px;flex:none;display:grid;place-items:center;
  background:var(--surface-2);color:var(--ink-2);
}
.act-ico svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.act-row.alert .act-ico{background:var(--bad-bg);color:var(--bad)}
.act-body{min-width:0;flex:1}
.act-text{display:block;font-size:13.5px;line-height:1.45}
.act-text a{color:var(--bad);font-weight:600;text-decoration:none}
.act-text a:hover{text-decoration:underline}
.act-body small{display:block;font-size:11.5px;color:var(--ink-3);margin-block-start:2px}

/* ============================= AI adviser ================================ */
.ai{padding:18px;position:relative;overflow:hidden}
.ai::before{content:"";position:absolute;inset-inline:0;top:0;height:2.5px;
  background:linear-gradient(90deg,transparent,var(--gold) 25%,var(--accent) 75%,transparent)}
.ai-head{display:flex;gap:12px;align-items:flex-start;margin-block-end:14px}
.ai-head h3{font-size:17px}
.ai-mark{
  width:36px;height:36px;border-radius:11px;flex:none;display:grid;place-items:center;
  background:linear-gradient(150deg,var(--gold-soft),var(--accent-soft));color:var(--gold-2);
}
.ai-mark svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.ai-acts{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.ai-form{display:flex;gap:8px;flex:1;min-width:230px}
.ai-form input{
  font:inherit;font-size:13.5px;flex:1;min-height:36px;padding:6px 12px;
  border:1px solid var(--rule-2);border-radius:18px;background:var(--ground);color:var(--ink);
}
.ai-form input:focus{outline:2px solid var(--accent);outline-offset:-1px}
.ai-out{margin-block-start:14px;border-block-start:1px solid var(--rule);padding-block-start:14px}
.ai-think{display:flex;gap:10px;align-items:center;font-size:13.5px;color:var(--ink-2)}
.ai-answer{font-size:14px;line-height:1.65;color:var(--ink)}
.ai-answer p{margin:0 0 10px}
.ai-answer h4{font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);margin:14px 0 6px;font-family:var(--sans);font-weight:650}
[dir="rtl"] .ai-answer h4{letter-spacing:0}
.ai-answer ul{margin:0 0 10px;padding-inline-start:20px}
.ai-answer li{margin-block-end:5px}
.ai-answer b{color:var(--accent)}

/* =========================== view transitions ============================ */
::view-transition-old(root){animation:vt-out .16s ease both}
::view-transition-new(root){animation:vt-in .22s ease both}
@keyframes vt-out{to{opacity:0}}
@keyframes vt-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
