/* Tashyid sales — shared style layer for every hosted dashboard (+ portfolio page).
   Loaded after each dashboard's own styles; refines, never restructures. Each project keeps its
   --accent; status colours are fixed company-wide. Executive-view components use .tx-* classes. */
:root{
  --tx-available:#1F6F54; --tx-held:#4C6B8A; --tx-sold:#8C968E; --tx-unavailable:#D14343;
  --tx-actual:#2F6FB5; --tx-plan:#B07A14;            /* validated pair (dataviz checker) */
  --tx-good:#1F6F54; --tx-warn:#9A6A0C; --tx-bad:#B42318;
  --tx-ink:var(--ink,#18222D); --tx-muted:var(--muted,#5F6B76); --tx-line:var(--line,#E4E7F0);
  --tx-card:var(--card,#fff); --tx-radius:14px;
  --tx-shadow:0 1px 2px rgba(16,24,40,.05),0 4px 14px rgba(16,24,40,.06);
}

/* ---------- Refinements to the existing dashboards ---------- */
body{font-feature-settings:"tnum" 1;letter-spacing:.005em}
[dir=rtl] body{font-family:'DIN Next Arabic',"Sora",system-ui,"Segoe UI",Tahoma,sans-serif}
.kpis{gap:12px;background:transparent;border-bottom:0;padding:14px 20px 4px;max-width:1500px;margin:0 auto}
.kpi{border:1px solid var(--tx-line);border-radius:12px;box-shadow:var(--tx-shadow)}
.kpi .val{font-variant-numeric:tabular-nums}
nav{position:sticky;top:0;z-index:20;backdrop-filter:saturate(1.2) blur(6px)}
.panel{border-radius:var(--tx-radius)}
table{font-variant-numeric:tabular-nums}
th{position:sticky;top:0;z-index:1}
tbody tr:hover td{background:rgba(16,24,40,.025)}
.tile.available{background:var(--tx-available)!important}   /* status colour, never the brand accent */
.tile.held{background:var(--tx-held)!important}
.tile.sold{background:var(--tx-sold)!important}
.tile.unavailable{background:var(--tx-unavailable)!important}
@media (max-width:900px){.kpis{grid-template-columns:repeat(3,1fr)}}
@media (max-width:560px){.kpis{grid-template-columns:repeat(2,1fr);padding:12px 12px 2px}}

/* ---------- Executive view components ---------- */
.tx-view{display:flex;flex-direction:column;gap:18px}
.tx-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.tx-seg{display:inline-flex;border:1px solid var(--tx-line);border-radius:999px;overflow:hidden;background:var(--tx-card)}
.tx-seg button{padding:6px 14px;font-size:13px;font-weight:600;color:var(--tx-muted);background:transparent;border:0;cursor:pointer}
.tx-seg button.on{background:var(--tx-ink);color:#fff}
.tx-note{font-size:12.5px;color:var(--tx-muted);background:#FAF7EE;border:1px solid #EFE4C6;border-radius:10px;padding:9px 12px}
.tx-hero{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.tx-card{background:var(--tx-card);border:1px solid var(--tx-line);border-radius:var(--tx-radius);box-shadow:var(--tx-shadow);padding:16px 18px;min-width:0}
.tx-card h3{margin:0 0 10px;font-size:13px;font-weight:700;color:var(--tx-muted);text-transform:uppercase;letter-spacing:.06em}
[dir=rtl] .tx-card h3{text-transform:none;letter-spacing:0}
.tx-big{font-size:34px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}
.tx-big small{font-size:15px;font-weight:600;color:var(--tx-muted)}
.tx-progress{height:8px;border-radius:999px;background:#ECEFF3;overflow:hidden;margin:12px 0 6px;position:relative}
.tx-progress span{display:block;height:100%;background:var(--tx-actual);border-radius:999px}
.tx-progress i{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--tx-plan)}
.tx-sub{font-size:12.5px;color:var(--tx-muted)}
.tx-flag{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;padding:2px 9px;border-radius:999px}
.tx-flag.good{color:var(--tx-good);background:#E7F3EE}
.tx-flag.warn{color:var(--tx-warn);background:#FBF1D9}
.tx-flag.bad{color:var(--tx-bad);background:#FEF3F2}
.tx-flag.none{color:var(--tx-muted);background:#F1F3F5}
.tx-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.tx-tile{background:var(--tx-card);border:1px solid var(--tx-line);border-radius:12px;padding:13px 15px;box-shadow:var(--tx-shadow)}
.tx-tile .k{font-size:11.5px;font-weight:700;color:var(--tx-muted);text-transform:uppercase;letter-spacing:.06em}
[dir=rtl] .tx-tile .k{text-transform:none;letter-spacing:0}
.tx-tile .v{font-size:23px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums}
.tx-tile .s{font-size:12px;color:var(--tx-muted);margin-top:2px}
.tx-delta.up{color:var(--tx-good)} .tx-delta.down{color:var(--tx-bad)}
.tx-grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.tx-chart{width:100%;height:auto;max-height:280px;display:block}  /* wide cards: keep proportions, don't grow tall */
.tx-chart .tx-grid{stroke:#E8EBEF;stroke-width:1}
.tx-chart .tx-axis{font-size:11px;fill:var(--tx-muted)}
.tx-chart .tx-bar{fill:var(--tx-actual)}
.tx-chart .tx-target{stroke:var(--tx-plan);stroke-width:3;stroke-linecap:round}
.tx-chart .tx-line-actual{stroke:var(--tx-actual);stroke-width:2.5}
.tx-chart .tx-line-plan{stroke:var(--tx-plan);stroke-width:2}
.tx-chart .tx-dot{fill:var(--tx-actual);stroke:var(--tx-card);stroke-width:2}
.tx-chart .tx-mark:hover .tx-bar{filter:brightness(1.12)}
.tx-legend{display:flex;gap:14px;font-size:12px;color:var(--tx-muted);margin-top:6px}
.tx-legend i{display:inline-block;width:12px;height:4px;border-radius:2px;margin-inline-end:6px;vertical-align:middle}
.tx-funnel{display:flex;flex-direction:column;gap:8px}
.tx-fstep{display:grid;grid-template-columns:110px 1fr 56px 56px;align-items:center;gap:10px;font-size:13px}
.tx-flabel{font-weight:600}
.tx-ftrack{height:14px;background:#EEF1F4;border-radius:999px;overflow:hidden}
.tx-fbar{display:block;height:100%;background:var(--tx-actual);border-radius:999px}
.tx-fval{font-weight:700;text-align:end;font-variant-numeric:tabular-nums}
.tx-fconv{font-size:12px;color:var(--tx-muted)}
.tx-table{width:100%;border-collapse:collapse;font-size:13px}
.tx-table th{background:#FAFBFC}
.tx-table td.num,.tx-table th.num{text-align:end;font-variant-numeric:tabular-nums}
.tx-scroll{max-height:360px;overflow:auto;border:1px solid var(--tx-line);border-radius:12px}
.tx-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600}
.tx-chip::before{content:"";width:9px;height:9px;border-radius:3px;background:currentColor}
.tx-chip.available{color:var(--tx-available)} .tx-chip.held{color:var(--tx-held)} .tx-chip.sold{color:var(--tx-sold)} .tx-chip.unavailable{color:var(--tx-unavailable)}
.tx-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px 14px}
.tx-form label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:600;color:var(--tx-muted)}
.tx-form input,.tx-form select{border:1px solid #D5DAE1;border-radius:9px;padding:8px 10px;font:inherit;color:var(--tx-ink);background:#fff}
.tx-dmeta{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.tx-dmeta span,.tx-dmeta button{font-size:11px;font-weight:600;border-radius:999px;padding:2px 8px;background:#F1F3F5;color:var(--tx-muted);border:0;cursor:pointer}
.tx-dmeta .on{background:#E7F3EE;color:var(--tx-good)}
.tx-extra{border-top:1px dashed var(--tx-line);margin-top:6px;padding-top:10px}
.tx-extra h4{margin:0 0 8px;font-size:12px;color:var(--tx-muted);font-weight:700}
@media (max-width:760px){.tx-hero,.tx-grid2{grid-template-columns:1fr}.tx-big{font-size:28px}.tx-fstep{grid-template-columns:84px 1fr 44px 48px}}
@media print{
  nav,.topbar .bell,.tx-toolbar,.tx-noprint,#reminder{display:none!important}
  .tx-card,.tx-tile{box-shadow:none;break-inside:avoid}
  body{background:#fff}
}
/* ↶ Undo in the top bar */
#txUndoBtn{font-size:20px}
#txUndoBtn[disabled]{opacity:.35;cursor:default}
/* Executive Summary cards inside the Executive tab */
.tx-section{margin:6px 0 10px;font-size:15px;font-weight:700;color:var(--tx-ink)}
[data-tx-snapshot]:empty{display:none}
/* Pricing rows open the plot editor */
.tx-table tr.tx-edit{cursor:pointer}
.tx-table tr.tx-edit:hover td{background:rgba(47,111,181,.06)}
/* Pricing: List / Achieved edited in place */
.tx-cell{width:118px;max-width:100%;border:1px solid #D5DAE1;border-radius:8px;padding:5px 8px;font:inherit;text-align:end;background:#fff;color:var(--tx-ink)}
.tx-cell:focus{outline:2px solid var(--tx-actual);outline-offset:0;border-color:transparent}
.tx-cell::placeholder{color:#9AA3AD}
@media print{.tx-cell{border:0;padding:0;background:transparent}}
/* Absorption vs plan: outlined plan bar (running total) with the sold bar inside */
.tx-chart .tx-plan-bar{fill:var(--tx-plan);fill-opacity:.14;stroke:var(--tx-plan);stroke-width:2}
.tx-chart .tx-val{font-size:12px;font-weight:700;fill:var(--tx-ink)}
.tx-chart .tx-now{font-weight:700;fill:var(--tx-ink)}
.tx-legend i.tx-key-sold{width:12px;height:12px;border-radius:3px;background:var(--tx-actual)}
.tx-legend i.tx-key-plan{width:12px;height:12px;border-radius:3px;background:color-mix(in srgb,var(--tx-plan) 14%,transparent);box-shadow:inset 0 0 0 2px var(--tx-plan)}
.tx-chart .tx-amt{font-size:11px;font-weight:600;fill:var(--tx-muted)}
