/* Alpine hides x-cloak elements until it boots and removes the attribute (the follow
   dialog would otherwise flash open during first paint). Required by Alpine's docs. */
[x-cloak]{display:none!important}
:root{--bg:#f1f5f9; --card:#ffffff; --text:#0f172a; --muted:#64748b; --soft:#94a3b8;
    --line:#e5e9f0; --line2:#eef2f7; --accent:#2563eb; --accentd:#1d4ed8; --accentbg:#eff6ff;
    --red:#dc2626; --redbg:#fee2e2; --orange:#d97706; --orangebg:#fef3c7;
    --green:#16a34a; --greenbg:#dcfce7; --grey:#94a3b8; --greybg:#f1f5f9;
    --shadow:0 1px 3px rgba(15,23,42,.06),0 8px 24px rgba(15,23,42,.05);
    --font:"IBM Plex Sans Arabic","Plex Ar Fallback",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.5}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
svg{display:block}
.wrap{max-width:1280px;margin:0 auto;padding:20px 18px 70px}
header.top{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px}
header.top .brand-name{font-size:22px;font-weight:800;margin:0;letter-spacing:-.01em}
.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.home{display:inline-flex;align-items:center;gap:10px;color:var(--text)}
a.home:hover{text-decoration:none;color:var(--accent)}
.home .brand-logo{height:24px;width:21.25px;flex:none}
header.top .who{color:var(--muted);font-size:12.5px}
.grow{flex:1}
.subscribe-link{background:var(--accent);color:#fff;font-size:12.5px;font-weight:700;border-radius:999px;
    padding:6px 14px;text-decoration:none;white-space:nowrap}
.subscribe-link:hover{background:var(--accentd,#1d4ed8);text-decoration:none}
.logout{color:var(--muted);font-size:12.5px;display:inline-flex;align-items:center;gap:5px}
@keyframes spin{to{transform:rotate(360deg)}}
#loadbar{position:absolute;top:0;left:0;right:0;height:3px;z-index:6;background:transparent;
    overflow:hidden;opacity:0;transition:opacity .2s;pointer-events:none;border-radius:16px 16px 0 0}
#loadbar.on{opacity:1}
#loadbar::before{content:"";position:absolute;top:0;left:-35%;height:100%;width:35%;
    background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:loadslide 1s linear infinite}
@keyframes loadslide{0%{transform:translateX(0)}100%{transform:translateX(385.8%)}}
.twrap.reloading{opacity:.45;transition:opacity .15s;pointer-events:none}
.infinite.busy::before{content:"";display:inline-block;width:14px;height:14px;margin-inline-end:7px;
    vertical-align:-2px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;
    animation:spin .7s linear infinite}
.gearwrap{position:relative;display:inline-flex}
.setpop{top:calc(100% + 6px);inset-inline-start:auto;inset-inline-end:0;min-width:250px;padding:10px}
.setpop-head{font-size:12px;font-weight:700;color:var(--muted);padding:2px 4px 8px;border-bottom:1px solid var(--line2);margin-bottom:4px}
.setrow{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 4px;font-size:13px;font-weight:600;color:var(--text)}
.setrow.stack{flex-direction:column;align-items:stretch;gap:8px}
.setrow.stack .seg{display:flex}
.setrow.stack .seg button{flex:1;padding-inline:8px;white-space:nowrap}
.seg{display:inline-flex;background:var(--greybg);border-radius:9px;padding:2px}
.seg button{border:0;background:transparent;font:inherit;font-size:12px;font-weight:700;color:var(--muted);padding:5px 13px;border-radius:7px;cursor:pointer}
.seg button.on{background:#fff;color:var(--accent);box-shadow:0 1px 2px rgba(15,23,42,.14)}
.mobonly{display:none}
nav.tabs{display:inline-flex;flex-wrap:wrap;gap:4px;background:var(--greybg);border-radius:12px;padding:3px}
nav.tabs a{font-size:13px;font-weight:700;color:var(--muted);padding:7px 14px;border-radius:9px}
nav.tabs a:hover{text-decoration:none;color:var(--text)}
nav.tabs a.on{background:#fff;color:var(--text);box-shadow:0 1px 2px rgba(15,23,42,.12)}
/* Scroll-strip edge cues — a chevron in a white disc over a fade, one per edge — inserted by ui.js
   (the «header nav strip» block) as ABSOLUTELY positioned children of header.top (hence its
   position:relative), laid over the strip's two edges wherever the strip is a horizontal scroller:
   phones (the media block below) and the narrow standalone-page column (.acwrap & co. further
   down); display:none everywhere else, so a wrapping desktop strip is untouched. They live OUTSIDE
   the scroller on purpose: the first version made them sticky flex items inside nav.tabs, which
   Chrome pinned to the edges but iOS Safari displaced by the hidden-content width (sticky inside an
   RTL horizontal scroller — the owner's iPhone showed the disc beside «المنافسات», 2026-09-08). The
   strip is the header's LAST row wherever it scrolls (order:5, full width), so bottom:0 lands on it
   and ui.js copies its height. ui.js sets data-ov="start" / "end" / "start end" on the nav from the
   real scroll metrics, so a cue is visible only while tabs are hidden past THAT edge, and puts
   `.new` on the end cue while a «جديد» tab is out of view (the orange dot). The <button> stays a
   plain block and its <span> is the flex box (a flex-container <button> is unreliable in WebKit).
   Gradients are written for RTL (inline-end = left), like the rest of the site. No JS → nothing. */
header.top{position:relative}
header.top .tabsmore{display:none;position:absolute;bottom:0;z-index:2;width:48px;height:40px;padding:0;border:0;background:none;
    opacity:0;pointer-events:none;transition:opacity .18s;outline:none;cursor:pointer}
header.top .tabsmore[data-side=end]{inset-inline-end:0}
header.top .tabsmore[data-side=start]{inset-inline-start:0}
nav.tabs[data-ov~=start] ~ .tabsmore[data-side=start], nav.tabs[data-ov~=end] ~ .tabsmore[data-side=end]{opacity:1;pointer-events:auto}
header.top .tabsmore>span{display:flex;align-items:center;width:100%;height:100%;padding-inline:5px}
header.top .tabsmore[data-side=end]>span{justify-content:flex-end;background:linear-gradient(to right,var(--greybg) 30%,transparent);
    border-start-end-radius:12px;border-end-end-radius:12px}
header.top .tabsmore[data-side=start]>span{justify-content:flex-start;background:linear-gradient(to left,var(--greybg) 30%,transparent);
    border-start-start-radius:12px;border-end-start-radius:12px}
header.top .tabsmore i{position:relative;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;
    background:#fff;color:var(--muted);box-shadow:0 1px 3px rgba(15,23,42,.2)}
header.top .tabsmore:hover i{color:var(--text)}
header.top .tabsmore.new i::after{content:"";position:absolute;top:-2px;inset-inline-end:-2px;width:8px;height:8px;border-radius:50%;
    background:var(--orange);box-shadow:0 0 0 2px #fff}
.stats{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:8px;row-gap:4px;
    margin:2px 2px 12px;font-size:12.5px}
.stat{display:inline-flex;align-items:baseline;gap:6px;white-space:nowrap}
.stat .n{font-size:15px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.stat .l{color:var(--muted)}
.stat.active .n{color:var(--green)}
.stat:not(:last-child)::after{content:"·";color:var(--soft);margin-inline-start:8px}
.extline{order:1;margin-inline-start:auto;background:#1d1d1f;color:#d4d4d8;border-radius:10px;padding:6px 13px}   /* the Chrome extension line (app.php, 2026-10-07; .guestbar's black + yellow) */
.extline:hover{background:#2c2c2e;text-decoration:none}
.extline b{color:#ffd479}
.extline svg{display:inline-block;vertical-align:-3px}
.extline-ic{color:#ffd479;margin-inline-end:6px}
.extline-go{color:#fff;font-weight:700;white-space:nowrap}
.extline-go svg{margin-inline-start:4px}
.extline:hover .extline-go{text-decoration:underline;text-underline-offset:3px}
@media (max-width:720px){.extline{margin-inline-start:0}}
.rescount{font-size:12.5px;color:var(--muted);white-space:nowrap}
.rescount b{font-size:14px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}
.toolbar{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;
    box-shadow:var(--shadow);margin-bottom:14px;display:flex;flex-direction:column;gap:12px}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.search{position:relative;flex:1;min-width:240px;display:flex;align-items:center}
.search svg{position:absolute;inset-inline-start:13px;color:var(--soft);pointer-events:none}
.search input{width:100%;padding:11px 14px;padding-inline-start:40px;border:1px solid var(--line);
    border-radius:11px;font:inherit;color:var(--text);background:#fff}
.search input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accentbg)}
.lbl{color:var(--muted);font-size:12.5px;font-weight:600}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 15px;font:inherit;
    font-size:13px;font-weight:600;color:var(--text);cursor:pointer;transition:.12s}
.chip:hover{border-color:var(--accent);color:var(--accent)}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.chip.amber.on{background:var(--red);border-color:var(--red)}
/* the custom closing-date picker — a real chip in the group; the transparent date input
     covers the whole pill so tapping anywhere on it opens the native picker */
  .chippick{position:relative;display:inline-flex;align-items:center;gap:6px;cursor:pointer;overflow:hidden}
.chippick input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:0;padding:0}
.chippick input::-webkit-calendar-picker-indicator{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.regionsel{position:relative;display:inline-flex}
.regionbtn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--text);
    border-radius:999px;padding:7px 13px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:.12s}
.regionbtn:hover{border-color:var(--accent);color:var(--accent)}
.regionbtn .caret{color:var(--soft);transition:transform .15s}
.regionbtn[aria-expanded="true"]{border-color:var(--accent);color:var(--accent)}
.regionbtn[aria-expanded="true"] .caret{transform:rotate(180deg)}
.regionbtn.active{border-color:var(--accent);color:var(--accent);background:var(--accentbg)}
.regcount{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;
    border-radius:999px;background:var(--accent);color:#fff;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}
.regionpop{top:42px;inset-inline-start:0;min-width:230px;max-width:280px}
.regionpop .plist{max-height:320px}
.seg{display:inline-flex;background:var(--greybg);border-radius:11px;padding:3px}
.seg button{border:0;background:transparent;font:inherit;font-size:13px;font-weight:600;color:var(--muted);
    padding:7px 14px;border-radius:8px;cursor:pointer}
.seg button.on{background:#fff;color:var(--text);box-shadow:0 1px 2px rgba(15,23,42,.12)}
select.per{border:1px solid var(--line);border-radius:10px;padding:8px 12px;font:inherit;background:#fff;cursor:pointer}
select.per:focus{outline:none;border-color:var(--accent)}
.toggle{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-size:13px;font-weight:600;color:var(--muted)}
.toggle input{accent-color:var(--accent);width:16px;height:16px}
.card{position:relative;background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:visible;box-shadow:var(--shadow)}
.tbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;
    padding:8px 14px;border-bottom:1px solid var(--line);background:#fafbfc;border-radius:16px 16px 0 0}
.xlsdl{display:inline-flex;align-items:center;gap:6px;border:1px solid #c4dccd;background:#f4faf6;
    color:#0e6b3d;border-radius:9px;padding:6px 11px;font:inherit;font-size:12.5px;font-weight:700;
    cursor:pointer;transition:.12s;white-space:nowrap}
.xlsdl:hover{background:#e9f5ee;border-color:#0e6b3d}
.xlsdl:disabled{opacity:.55;cursor:default;pointer-events:none}
.xlsdl svg{flex:none}
/* results-bar actions: «تحديث» (neutral, secondary) beside «تصدير Excel» (green, primary) — same size
   and radius as .xlsdl so the two read as one group. Rebuilt 2026-09-08 after the owner saw it misbehave
   on his iPhone: NO transform on hover (a :hover transform sticks after a tap on touch screens, so the
   arrow sat rotated 90° until the next tap), hover colour only where a pointer can hover, the spin
   ends on a full revolution (spinStop in app.js) instead of snapping mid-turn, and none of it under
   prefers-reduced-motion. `.spin` is the visual state and outlives :disabled (which follows the load). */
.tbar-acts{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
.rfbtn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--muted);
    border-radius:9px;padding:6px 11px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;white-space:nowrap;
    -webkit-tap-highlight-color:transparent;transition:color .12s,border-color .12s,background .12s}
@media (hover:hover){.rfbtn:hover{border-color:var(--accent);color:var(--accent)}}
.rfbtn:active{background:var(--greybg)}
.rfbtn:disabled{opacity:.55;cursor:default;pointer-events:none}
.rfbtn.spin, .rfbtn.spin:disabled{opacity:1;color:var(--accent);border-color:var(--accent)}
.rfbtn svg{flex:none;display:block;transform-origin:50% 50%}
.rfbtn.spin svg{animation:spin .8s linear infinite}
@media (prefers-reduced-motion:reduce){.rfbtn.spin svg{animation:none}}
.xlspop-back{position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:300}
.xlspop{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:301;background:#fff;
    border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 50px rgba(15,23,42,.25);
    padding:18px 20px;width:min(92vw,360px)}
.xlspop h4{margin:0 0 8px;font-size:15px}
.xlspop p{margin:6px 0;font-size:13px;color:var(--muted);line-height:1.65}
.xlspop p b{color:var(--text)}
.xlspop-ok{margin-top:10px;border:1px solid var(--line);background:#fff;border-radius:9px;
    padding:7px 16px;font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.xlspop-ok:hover{border-color:var(--accent);color:var(--accent)}
.xlspop-cta{display:inline-block;margin:10px 0 0;margin-inline-end:8px;background:var(--accent);
    color:#fff;border-radius:9px;padding:8px 18px;font-size:13px;font-weight:700;text-decoration:none}
.xlspop-cta:hover{background:var(--accentd);text-decoration:none}
.twrap{overflow-x:visible;min-height:200px}
table{width:100%;border-collapse:collapse;font-size:13.5px}
/* density: 8 visible columns (نهاية التقديم promoted out of the ext set) — tighter side padding, secondary columns capped + smaller text. Columns are min/max BOUNDED both ways: without the
     min-widths, one long unbroken value (English product names, long branch lines) inflates td.name's
     preferred width and auto-layout crushes الجهة/النشاط to one-word-per-line (2026-07-15). */
  thead th{background:#f8fafc;color:var(--muted);font-weight:700;font-size:12px;text-align:right;
    padding:12px 9px;border-bottom:1px solid var(--line);white-space:nowrap;position:relative}
th .sort{display:inline-flex;align-items:center;gap:4px;cursor:pointer;user-select:text}
th .sort:hover{color:var(--text)}
th .sort.on{color:var(--accent)}
th .arr{font-size:10px}
td{padding:13px 9px;border-bottom:1px solid var(--line2);vertical-align:top;text-align:right}
th:first-child, td:first-child{padding-inline-start:14px}
th:last-child, td:last-child{padding-inline-end:14px}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:#f8fafc}
td.name{max-width:520px;min-width:230px;white-space:normal;overflow-wrap:anywhere}
td.name a.t{color:var(--text);font-weight:700;font-size:14.5px}
td.name a.t:hover{color:var(--accent)}
td.name .meta{color:var(--soft);font-size:12px;margin-top:3px}
td.agency{max-width:200px;min-width:120px;white-space:normal;color:var(--text);font-size:13px}
td.agency .br{display:block;color:var(--soft);font-size:12px;margin-top:1px}
/* display:flex (block-level), NOT inline-flex: with no .br branch line between them, an
     inline badge sat glued to the agency text on the same line («…بمنطقة تبوكتبوك») */
  td.agency .rgn{display:flex;width:fit-content;align-items:center;gap:5px;margin-top:3px;color:var(--muted);font-size:11.5px;font-weight:600}
td.agency .rgn::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--green);flex:none}
td.act{max-width:150px;min-width:90px;white-space:normal;color:var(--muted);font-size:12px}
.ty{display:inline-block;background:var(--greybg);color:var(--text);border-radius:999px;padding:3px 9px;font-size:11.5px;white-space:nowrap}
td.dl{white-space:nowrap}
td.dlend{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}
td.dlend .tm{color:var(--soft);font-size:11px;margin-top:1px}
td.dur{color:var(--muted);font-size:12px}
td.dur .dst{margin-top:3px;font-size:11.5px;font-weight:600}
td.dur .dst::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green);margin-inline-end:5px;vertical-align:middle}
td.dur .dst.end::before{background:var(--soft)}
/* both date columns render their date the same way — the pill + its «N ساعة متبقية» sub-line moved
     to نهاية التقديم (they count down to the CLOSING date), so .hrs is scoped there now. */
  td.dl .date, td.dlend .date{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12.5px}
td.dlend .hrs{color:var(--red);font-size:11.5px;font-weight:700;margin-top:2px}
.pill{display:inline-block;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:800;margin-bottom:4px}
.pill.red{background:var(--redbg);color:var(--red)}
.pill.orange{background:var(--orangebg);color:var(--orange)}
.pill.green{background:var(--greenbg);color:var(--green)}
.pill.grey{background:var(--greybg);color:var(--grey)}
.dot-new{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--accent);
    margin-inline-end:8px;vertical-align:middle}
/* flex-wrap + nowrap buttons: without them a narrow name cell (e.g. the «المحفوظة» view, where every row carries the wider محفوظ/مُتابَعة labels) crushed the buttons and broke
     the Arabic mid-word — «محفو/ظ». Buttons keep their natural width and wrap as whole pills. */
  .rev-actions{margin-top:6px;display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center}
.rev-btn{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:#fff;border-radius:7px;padding:3px 7px;font:inherit;
    font-size:11.5px;font-weight:700;color:var(--muted);cursor:pointer;white-space:nowrap;flex:none}
.rev-btn:hover{border-color:var(--accent);color:var(--accent)}
.rev-btn.save .bmk{fill:none;stroke:currentColor;stroke-width:1.3}
.rev-btn.save.on{border-color:var(--accent);color:var(--accent);background:var(--accentbg)}
.rev-btn.save.on .bmk{fill:currentColor;stroke:currentColor}
.rev-btn.bell .bel{fill:none;stroke:currentColor;stroke-width:1.3}
.rev-btn.bell.on{border-color:var(--accent);color:var(--accent);background:var(--accentbg)}
.rev-btn.bkt{border-style:dashed}
.rev-btn.bkt:hover{border-style:solid}
.rev-btn.bell.on .bel{fill:currentColor;stroke:currentColor}
.nmodal{position:fixed;inset:0;z-index:260;display:flex;align-items:center;justify-content:center;padding:18px}
.nmodal-ov{position:absolute;inset:0;background:rgba(0,0,0,.5)}
.nmodal-card{position:relative;width:100%;max-width:400px;padding:26px 24px;border-radius:16px;text-align:center;
    background:var(--card,#fff);color:var(--text);box-shadow:0 24px 64px rgba(0,0,0,.32)}
.nmodal-ic{width:52px;height:52px;margin:0 auto 12px;border-radius:50%;display:flex;align-items:center;justify-content:center;
    background:var(--accentbg,#eff6ff);color:var(--accent)}
.nmodal-card h3{margin:0 0 8px;font-size:18px;font-weight:800}
.nmodal-card p{margin:0 auto;color:var(--muted);font-size:13.5px;line-height:1.8;max-width:320px}
.nmodal-name{margin:12px 0 4px;font-size:14px;font-weight:700;color:var(--text);line-height:1.5}
.nmodal-acts{display:flex;gap:10px;justify-content:center;margin-top:20px}
.nmodal-btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 20px;font:inherit;font-size:13.5px;
    font-weight:700;cursor:pointer;color:var(--muted)}
.nmodal-btn.ghost:hover{border-color:var(--muted);color:var(--text)}
.nmodal-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.nmodal-btn.primary:hover{filter:brightness(.95)}
.ntoast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);z-index:280;max-width:88vw;
    background:#0f172a;color:#fff;font-size:13.5px;font-weight:600;padding:12px 20px;border-radius:12px;
    box-shadow:0 12px 34px rgba(0,0,0,.28);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}
.ntoast.show{opacity:1;transform:translate(-50%,0)}
.ntoast.bad{background:#b4423a}
tbody tr.reviewed td.name a.t{color:var(--muted);font-weight:600}
tbody tr.saved td.name a.t{color:var(--accentd)}
tbody tr.rejected{opacity:.55}
tbody tr.rejected td.name a.t{text-decoration:line-through;color:var(--soft)}
.savedbtn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--muted);
    border-radius:9px;padding:7px 14px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap}
.savedbtn .bmk{fill:none;stroke:currentColor;stroke-width:1.3}
.actbtns{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
.savedbtn:hover{border-color:var(--accent);color:var(--accent)}
.savedbtn.on{border-color:var(--accent);color:var(--accent);background:var(--accentbg)}
.savedbtn.on .bmk{fill:currentColor;stroke:currentColor}
.savedcount{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;
    border-radius:999px;background:var(--accent);color:#fff;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums}
.savedcount[hidden]{display:none}
.savedbtn.on .savedcount{background:var(--accentd)}
td.wins{max-width:380px;white-space:normal}
td .win{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:12.5px;margin-bottom:3px}
td .win:last-child{margin-bottom:0}
td.awardcol{max-width:230px}
td .win .wc{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
td .win .wa{flex:none;white-space:nowrap;font-variant-numeric:tabular-nums}
td .win b{font-variant-numeric:tabular-nums;color:var(--green);font-weight:800}
td .win.bid{color:var(--soft);font-variant-numeric:tabular-nums}
.awardcol{display:none}
.twrap.awards .awardcol{display:table-cell}
.bidscol{display:none}
.twrap.awards .bidscol{display:table-cell}
td.bidscol{font-variant-numeric:tabular-nums;color:var(--muted)}
.awdcol{display:none}
.twrap.awards .awdcol{display:table-cell}
td.awdcol{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}
td.awdcol .est{margin-inline-start:5px}
.tp-award-when .est{margin-inline-start:4px}
/* the glyph + its CSS-only tooltip (data-tip). CSS, not the JS .htip, because the tender page
     ($IS_AGG, no scripts) renders it too; styled to match .htip so the two are indistinguishable.
     Anchored inset-inline-end so the bubble grows INTO the page — the column sits near the
     viewport edge. tabindex on the span makes tap/focus show it where hover doesn't exist. */
  .est{position:relative;display:inline-flex;vertical-align:-2px;color:var(--orange);cursor:help}
.est svg{display:block}
.est:focus{outline:none}
/* bubble opens BELOW the icon — an above bubble on the first table row would slide under the
     sticky header (sticky paints over row content regardless of z-index). */
  .est::after{content:attr(data-tip);position:absolute;top:calc(100% + 8px);inset-inline-end:-6px;
    background:#1e293b;color:#fff;font-size:12px;font-weight:600;line-height:1.6;
    padding:7px 11px;border-radius:9px;box-shadow:0 8px 24px rgba(15,23,42,.28);
    width:max-content;max-width:250px;white-space:normal;text-align:center;
    opacity:0;visibility:hidden;transition:opacity .12s;pointer-events:none;z-index:300}
.est::before{content:'';position:absolute;top:calc(100% + 3px);inset-inline-end:2px;
    border:5px solid transparent;border-bottom-color:#1e293b;
    opacity:0;visibility:hidden;transition:opacity .12s;pointer-events:none;z-index:300}
.est:hover::after, .est:hover::before, .est:focus::after, .est:focus::before{opacity:1;visibility:visible}
.sort.off, .funnel.off{opacity:.4;cursor:not-allowed}
.sort.off:hover, .funnel.off:hover{color:inherit}
/* من/إلى date popover — the only .pop that is a form, not a checklist.
     It hangs off one of the LAST columns, and .pop anchors with inset-inline-start, so in RTL it
     would extend past the left edge of the screen. Anchor it from the other edge instead, so it
     opens INWARD over the table. (Mobile drops the anchoring entirely — see the media query.) */
  .pop.dpop{width:302px;min-width:0;padding-bottom:10px;inset-inline-start:auto;inset-inline-end:0}
/* quick ranges above the two inputs — a fixed width so the year chips settle into tidy rows
     instead of the shrink-to-fit width the two date rows alone used to give this panel */
  .pop.dpop .dquick{display:flex;flex-wrap:wrap;gap:5px;padding:0 12px}
.pop.dpop .dquick.dyears{margin-top:5px}
.pop.dpop .dchip{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:999px;
    padding:5px 10px;font:inherit;font-size:11.5px;font-weight:600;line-height:1.35;cursor:pointer;
    font-variant-numeric:tabular-nums;white-space:nowrap}
.pop.dpop .dchip:hover{border-color:var(--accent);color:var(--accent)}
.pop.dpop .dchip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.pop.dpop .dsep{display:flex;align-items:center;gap:8px;padding:11px 12px 3px;color:var(--soft);font-size:11px}
.pop.dpop .dsep span{flex:none}
.pop.dpop .dsep::after{content:'';flex:1;height:1px;background:var(--line2)}
.pop.dpop .drow{display:flex;align-items:center;gap:8px;padding:6px 12px}
.pop.dpop .drow span{flex:none;width:26px;color:var(--muted);font-size:12.5px}
.pop.dpop .drow input{flex:1;min-width:0;padding:5px 8px;border:1px solid var(--line);border-radius:8px;
    background:var(--card);color:var(--text);font:inherit;font-size:12.5px;font-variant-numeric:tabular-nums}
.pop.dpop .drow input:focus{outline:none;border-color:var(--accent)}
.pop.dpop .dnote{padding:4px 12px 0;color:var(--soft);font-size:11px;line-height:1.5}
td.awardcol .win b{color:var(--green);font-weight:800;font-variant-numeric:tabular-nums}
/* entity links (companies/agencies): a VISIBLE dashed underline so they read as clickable.
     text-decoration, NOT border-bottom — the award cell's .wc{overflow:hidden}
CLIPS a border
     at the bottom of the inline box, which is why the first attempt showed nothing. */
  a.clink{color:inherit;text-decoration:underline dashed #a4b2c3;text-decoration-thickness:1px;text-underline-offset:3px}
a.clink:hover{color:var(--blue);text-decoration-color:var(--blue)}
.chead{background:var(--card);border:1px solid var(--line2);border-radius:16px;padding:18px 20px;margin:2px 0 14px}
.chead .cname{font-size:22px;font-weight:700;letter-spacing:-.015em;line-height:1.3}
.chead .cstats{display:flex;gap:26px;flex-wrap:wrap;margin-top:12px}
/* «المزيد عن الشركة» — the company page's SEO blocks live inside this native <details>;
     content stays in the DOM (indexed), the reader sees one pill until they ask for more */
  .cmore{margin:10px 0 2px}
.cmore>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:7px;
    font-size:12.5px;font-weight:700;color:var(--muted);background:var(--greybg);border-radius:999px;padding:7px 14px;user-select:none}
.cmore>summary::-webkit-details-marker{display:none}
.cmore>summary::after{content:'▾';font-size:10px}
.cmore[open]>summary::after{content:'▴'}
.cmore>summary:hover{color:var(--text)}
.chead .cst .cv{font-size:19px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.chead .cst .cl{font-size:12px;color:var(--soft);margin-top:2px}
.chead .cvars{margin-top:12px;font-size:12px;color:var(--soft);line-height:2}
.chead .cvl{color:var(--sec)}
.chead .cvar{background:var(--bg);border:1px solid var(--line2);border-radius:20px;padding:2px 9px;margin-inline-end:5px;
    white-space:nowrap;display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}
.chead .cvar i{color:var(--soft);font-style:normal;font-variant-numeric:tabular-nums}
.cnamerow{display:flex;align-items:center;gap:6px 14px;flex-wrap:wrap}
.cnamerow .cname{flex:1 1 auto;min-width:0;margin:0}
/* ---- company head (2026-08-26 redesign, promoted to all users 2026-08-30) — hero zone
     (crumbs + name + meta + follow), a full-width 4-cell KPI band (restyles the SAME .cst pill
     markup loadCompanyHead() repaints, so hydration is a no-op), then rivals strip + fold in a
     footer zone, and the result tabs flush against the table. Scoped under .chead.v2. */
  .chead.v2{padding:0;overflow:hidden}
.chead.v2 .crumbs{padding:13px 20px 0;margin:0;font-size:11.5px}
.chead.v2 .cnamerow{padding:12px 20px 16px;gap:8px 15px;align-items:center}
.chead.v2 .cid{flex:1 1 auto;min-width:230px}
.chead.v2 .cname{font-size:21px;font-weight:800;letter-spacing:-.015em;line-height:1.3}
.chead.v2 .cmeta2{display:flex;flex-wrap:wrap;gap:3px 15px;font-size:12.5px;color:var(--muted);margin-top:5px}
.chead.v2 .cmeta2 span{position:relative}
.chead.v2 .cmeta2 span + span::before{content:"·";position:absolute;inset-inline-start:-10px;color:var(--soft)}
.chead.v2 .cmeta2 .act{color:var(--accentd);font-weight:700}
.chead.v2 .cmeta2 a{color:inherit;text-decoration:none}
.chead.v2 .cmeta2 a:hover{color:var(--accent)}
.chead.v2 .cstats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:0;
    border-top:1px solid var(--line2);border-bottom:1px solid var(--line2);background:var(--card)}
.chead.v2 .cst{padding:12px 20px;min-width:0}
.chead.v2 .cst + .cst{border-inline-start:1px solid var(--line2)}
.chead.v2 .cst .cv{font-size:18px;font-weight:800;letter-spacing:-.02em;white-space:nowrap}
.chead.v2 .cst:nth-child(2) .cv{color:var(--green)}
.chead.v2 .cst .cl{font-size:11.5px;color:var(--muted);margin-top:2px}
.chead.v2 .cfoot2{padding:12px 20px 12px}
.chead.v2 .crv{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.chead.v2 .crv-l{font-size:12px;font-weight:700;color:var(--muted)}
.chead.v2 .crv-chip{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line2);
    border-radius:999px;padding:5px 11px;font-size:12px;font-weight:600;color:var(--text);
    text-decoration:none;max-width:100%;background:var(--card)}
.chead.v2 .crv-chip .n{min-width:0;max-width:30ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chead.v2 .crv-chip i{flex:none;font-style:normal;font-size:10.5px;font-weight:800;color:var(--accentd);
    background:var(--accentbg);border-radius:999px;padding:1px 7px}
.chead.v2 .crv-chip:hover{border-color:var(--accent)}
.chead.v2 .crv-chip:hover .n{color:var(--accent)}
.chead.v2 .cvars{margin-top:10px}
.chead.v2 .cmore{margin:8px 0 0}
.chead.v2 .cmore>summary{font-size:12px}
/* the result TABS: the header's bottom edge and its primary CTA — full-width thirds flush
     against the table below, count badges, colored dots, underline actives. Overrides the .seg
     pill base entirely (markup keeps .seg for the Alpine bindings only). */
  .chead.v2 .cresultseg{display:flex;width:100%;margin:0;padding:0;background:transparent;
    border-radius:0;border-top:1px solid var(--line2)}
.chead.v2 .cresultseg button{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;
    padding:12px 8px;border-radius:0;font-size:13.5px;font-weight:700;color:var(--muted);
    border-bottom:2.5px solid transparent;white-space:nowrap;min-width:0}
.chead.v2 .cresultseg button:hover{background:#f8fafc;color:var(--text)}
.chead.v2 .cresultseg button.win::before, .chead.v2 .cresultseg button.lose::before{content:'';width:8px;height:8px;border-radius:99px;flex:none}
.chead.v2 .cresultseg button.win::before{background:var(--green)}
.chead.v2 .cresultseg button.lose::before{background:var(--red)}
.chead.v2 .cresultseg button.on{background:transparent;box-shadow:none;color:var(--text);
    border-bottom-color:var(--accent)}
.chead.v2 .cresultseg button.win.on{color:var(--green);border-bottom-color:var(--green)}
.chead.v2 .cresultseg button.lose.on{color:var(--red);border-bottom-color:var(--red)}
.chead.v2 .cresultseg .segc{margin-inline-start:0;font-size:11px;font-weight:800;color:var(--muted);
    background:var(--greybg);border-radius:999px;padding:1px 8px}
.chead.v2 .cresultseg button.on .segc{color:var(--accentd);background:var(--accentbg);opacity:1}
.chead.v2 .cresultseg button.win.on .segc{color:var(--green);background:var(--greenbg)}
.chead.v2 .cresultseg button.lose.on .segc{color:var(--red);background:var(--redbg)}
@media (max-width:640px){
  .chead.v2 .crumbs{padding:11px 14px 0}
  .chead.v2 .cnamerow{padding:10px 14px 13px}
  .chead.v2 .cname{font-size:18px}
  .chead.v2 .cstats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .chead.v2 .cst{padding:10px 14px}
  .chead.v2 .cst:nth-child(2n+1){border-inline-start:0}
  .chead.v2 .cst:nth-child(n+3){border-top:1px solid var(--line2)}
  .chead.v2 .cfoot2{padding:11px 14px 12px}
  .chead.v2 .cresultseg button{font-size:12px;gap:5px;padding:11px 4px}
  .chead.v2 .cresultseg .segc{font-size:10px;padding:1px 6px}
}
.cresultseg{margin-top:14px;display:inline-flex}
.cresultseg .segc{margin-inline-start:6px;font-size:10.5px;font-weight:700;color:var(--soft);font-variant-numeric:tabular-nums}
.cresultseg button.on .segc{color:inherit;opacity:.7}
.cresultseg button.win.on{color:var(--green)}
.cresultseg button.lose.on{color:var(--red)}
.cbline{margin-top:5px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cb{font-size:11px;font-weight:700;border-radius:999px;padding:2px 9px}
.cb.won{color:var(--green);background:var(--greenbg)}
.cb.lost{color:var(--red);background:var(--redbg)}
.cb-bid{font-size:11.5px;color:var(--soft);font-variant-numeric:tabular-nums}
.soft{color:var(--soft)}
.bidsnote{position:relative;display:inline-block;margin-top:5px}
.bidstoggle{cursor:pointer;color:var(--accent);font-size:12px;font-weight:600;border-bottom:1px dotted var(--accent)}
.bidpop{display:none;position:absolute;z-index:40;top:100%;inset-inline-start:0;margin-top:5px;background:#fff;border:1px solid var(--line);
    border-radius:10px;box-shadow:0 12px 32px rgba(15,23,42,.20);padding:8px;min-width:300px;max-width:400px;max-height:300px;overflow-y:auto;user-select:text}
.bidsnote.open .bidpop{display:block}
.bidpop::before{content:'';position:absolute;top:-6px;left:0;right:0;height:6px}
.bidpop .bptitle{font-size:12px;font-weight:800;color:var(--text);padding:2px 4px 6px;border-bottom:1px solid var(--line2);margin-bottom:4px}
.bidpop .bprow{display:flex;justify-content:space-between;gap:14px;padding:4px;font-size:12.5px;color:var(--muted)}
.bidpop .bprow .bpc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bidpop .bprow b{font-variant-numeric:tabular-nums;color:var(--text);flex:none}
.htip{position:fixed;z-index:300;background:#1e293b;color:#fff;font-size:12.5px;font-weight:600;line-height:1.6;
    padding:7px 12px;border-radius:9px;box-shadow:0 8px 24px rgba(15,23,42,.28);max-width:340px;
    opacity:0;pointer-events:none;transition:opacity .12s;white-space:normal;text-align:center}
.htip.on{opacity:1}
.bidpop .bprow.won{color:var(--green);font-weight:700}
.bidpop .bprow.won b{color:var(--green)}
.thfilter{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.funnel{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;color:var(--soft);cursor:pointer}
.funnel:hover{background:var(--line2);color:var(--text)}
.funnel{position:relative}
/* ACTIVE = a filter is applied on this column. Solid accent pill, filled glyph, an orange dot outside the
   corner, and (via :has) the column label itself turns accent — the old tint-only state read as "hover"
   and nobody noticed a live filter (owner, 2026-09-07). :has is already relied on elsewhere (.gearwrap). */
.funnel.active{color:#fff;background:var(--accent);box-shadow:0 0 0 2px var(--accentbg)}
.funnel.active:hover{color:#fff;background:var(--accent);filter:brightness(1.1)}
.funnel.active svg path{fill:currentColor;stroke:currentColor}
.funnel.active::after{content:'';position:absolute;top:-4px;inset-inline-end:-4px;width:9px;height:9px;border-radius:50%;
    background:var(--orange);border:2px solid #fff;box-sizing:content-box}
.thfilter:has(.funnel.active) .sort, .thfilter:has(.funnel.active) > span:first-child{color:var(--accent)}
.pop{position:absolute;top:42px;inset-inline-start:8px;z-index:30;background:#fff;border:1px solid var(--line);
    border-radius:14px;box-shadow:0 12px 36px rgba(15,23,42,.18);padding:10px;min-width:320px;max-width:400px;display:none}
.pop.wide{min-width:360px;max-width:440px}
.pop.open{display:block}
.phead{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:2px 4px 10px;border-bottom:1px solid var(--line2);margin-bottom:8px}
.phead b{font-size:13px;font-weight:700}
.pheadr{display:inline-flex;align-items:center;gap:10px;flex:none}
.popx{width:26px;height:26px;flex:none;display:inline-flex;align-items:center;justify-content:center;padding:0;
    border:0;border-radius:50%;background:var(--greybg);color:var(--muted);cursor:pointer}
.popx:hover{background:var(--line2);color:var(--text)}
.phead a{font-size:12.5px;color:var(--accent);font-weight:600;cursor:pointer}
.psearch{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px 12px;padding-inline-start:36px;font:inherit;
    font-size:13.5px;margin-bottom:8px;color:var(--text);
    background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 16 16' fill='none' stroke='%2394a3b8' stroke-width='1.7'%3E%3Ccircle cx='7' cy='7' r='5'/%3E%3Cpath d='M11 11l3.6 3.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat;
    background-position:right 12px center}
.psearch:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accentbg)}
.plist{max-height:340px;overflow-y:auto;display:flex;flex-direction:column;gap:1px}
.opt{display:flex;align-items:center;gap:11px;padding:10px;border-radius:10px;cursor:pointer;font-size:13.5px;font-weight:500;color:var(--text)}
.opt:hover{background:var(--accentbg)}
.opt input{accent-color:var(--accent);width:16px;height:16px;flex:none;cursor:pointer}
.opt .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.5}
.opt .c{flex:none;color:var(--muted);font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums;background:var(--greybg);border-radius:999px;padding:2px 9px}
.opt.master{border-bottom:1px solid var(--line2);border-radius:0;margin-bottom:6px;font-weight:700;color:var(--muted)}
.opt.master:hover{background:transparent}
.pempty{color:var(--soft);font-size:12.5px;text-align:center;padding:14px}
.state{padding:60px 20px;text-align:center;color:var(--muted)}
.infinite{padding:18px;text-align:center;color:var(--soft);font-size:12.5px}
.pager{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px;color:var(--muted);font-size:13px;
    position:sticky;bottom:0;z-index:20;background:var(--bg);padding:12px 6px;border-top:1px solid var(--line);box-shadow:0 -6px 18px rgba(15,23,42,.07)}
.pages{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.pages button{min-width:36px;height:36px;border:1px solid var(--line);background:#fff;border-radius:9px;
    font:inherit;font-size:13px;color:var(--text);cursor:pointer;font-variant-numeric:tabular-nums}
.pages button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
.pages button.cur{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}
.pages button:disabled{opacity:.45;cursor:default}
.setrow.chk{cursor:pointer}
.setrow.chk input{accent-color:var(--accent);width:16px;height:16px}
.guestbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;
    padding:9px 16px;background:#1d1d1f;color:#fff;font-size:13px;font-weight:600}
.guestbar b{font-variant-numeric:tabular-nums;color:#ffd479}
.guestbar-btn{background:#fff;color:#1d1d1f;border-radius:999px;padding:5px 14px;text-decoration:none;font-weight:700;font-size:12.5px}
/* the end-of-preview gate sits UNDER the free rows inside the results card (2026-10-07) — the first two rows
   (one for a text search) stay readable; the header, nav and search stay usable */
.guestgate{display:none;justify-content:center;padding:28px 16px 32px;border-top:1px solid var(--line)}
.guestgate.open{display:flex}
.twrap.gated{min-height:0}   /* one or two free rows: no empty band above the gate */
.guestgate-card{background:var(--card,#fff);border:1px solid var(--line);border-radius:20px;padding:30px 28px;max-width:380px;width:100%;text-align:center;
    box-shadow:0 10px 36px rgba(15,23,42,.10);color:var(--text)}
.guestgate-card svg{color:var(--accent,#0071e3);margin-bottom:6px}
.guestgate-card h2{font-size:21px;margin:6px 0 8px;font-weight:800}
.guestgate-card p{margin:0 0 22px;color:var(--muted,#6e6e73);font-size:14px;line-height:1.6}
.guestgate-btn{display:inline-block;background:var(--accent,#0071e3);color:#fff;border-radius:999px;
    padding:12px 30px;text-decoration:none;font-weight:700;font-size:15px}
@media (max-width:720px){.guestgate{padding:18px 10px 22px}.guestgate-card{padding:22px 18px}}
.refreshbtn{font:inherit;font-size:12px;font-weight:600;cursor:pointer;border:1px solid var(--line);background:var(--card);color:var(--muted);
    border-radius:8px;padding:3px 11px;margin-inline-start:auto;transition:background .15s,color .15s}
.refreshbtn:hover{background:var(--greybg);color:var(--text)}
.refreshbtn:disabled{opacity:.5;cursor:default}
/* Long lists (users, OTP sends, payments, blocked requests, visitors) -> capped scroll area + sticky header{width:100%;border-collapse:collapse;font-size:13px}
/* refunds — the «استرداد» row button lives in the user popup's payments section, and refgo is
     the confirm button. refgo is deliberately NOT .uact: the popup delegates every .uact click
     to runUserAction(), which would fire alongside its own handler. */
  .pref{border:0;border-radius:8px;padding:5px 11px;font:inherit;font-size:11.5px;font-weight:700;
        cursor:pointer;background:#fff;color:#b45309;box-shadow:inset 0 0 0 1px #fcd34d}
.pref:hover{background:#fffbeb}
.pref:disabled{opacity:.5;cursor:default}
.clearbtn{display:inline-flex;align-items:center;gap:6px;border:0;cursor:pointer;font:inherit;
    font-size:12.5px;font-weight:600;color:var(--red);background:var(--redbg);border-radius:999px;padding:6px 13px;flex:none}
.clearbtn:hover{filter:brightness(.96)}
.mobilebar{display:none;gap:8px;flex-wrap:wrap;align-items:center}
.msort{border:1px solid var(--line);border-radius:10px;padding:9px 12px;font:inherit;background:#fff;color:var(--text);flex:1;min-width:150px;cursor:pointer}
.mfbtn{border:1px solid var(--line);background:#fff;border-radius:999px;padding:9px 15px;font:inherit;font-size:13px;font-weight:600;color:var(--text);cursor:pointer}
.mfbtn.on{background:var(--accentbg);border-color:var(--accent);color:var(--accent)}
.toolbtn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;border-radius:11px;
    padding:10px 15px;font:inherit;font-size:14px;font-weight:700;color:var(--text);cursor:pointer;transition:.12s;white-space:nowrap}
.toolbtn:hover{border-color:var(--accent);color:var(--accent)}
.toolctrls{display:inline-flex;align-items:center;gap:8px}
.mfilters-toggle{display:none}
.toolbar.filters-open .mfilters-toggle, /* active: filters panel open */
  .gearwrap:has(.setpop.open) .toolbtn{background:var(--accentbg);border-color:var(--accent);color:var(--accent)}
.mf-badge{display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;padding:0 5px;
    border-radius:999px;background:var(--accent);color:#fff;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}
.mf-badge[hidden]{display:none}
.filterpanel{display:contents}
.msheet-overlay{display:none;position:fixed;inset:0;background:rgba(15,23,42,.4);z-index:60}
.msheet-overlay.open{display:block}
.msheet{display:none;position:fixed;left:0;right:0;bottom:0;z-index:61;background:#fff;border-radius:18px 18px 0 0;
    box-shadow:0 -10px 40px rgba(0,0,0,.28);padding:12px 12px 22px;max-height:82vh;overflow-y:auto}
.msheet.open{display:block}
.msheet-head{display:flex;align-items:center;gap:10px;padding:2px 4px 10px;border-bottom:1px solid var(--line2);margin-bottom:8px}
.msheet-head b{font-size:15px}
.msheet-head a{font-size:13px;color:var(--accent);cursor:pointer}
.msclose{border:0;background:var(--accent);color:#fff;border-radius:999px;padding:8px 18px;font:inherit;font-weight:600;cursor:pointer}
.mslist{max-height:64vh;overflow-y:auto}
@media (max-width:720px){
  .mobilebar{display:flex}
  .mfilters-toggle{display:inline-flex}
  .filterpanel{display:none}
  .toolbar.filters-open .filterpanel{display:flex;flex-direction:column;gap:12px;width:100%}
  .wrap{padding:14px 10px 70px}
  input, select, textarea, .search input, .psearch, .msort{font-size:16px}
  .mobonly{display:flex}
  .setpop{position:fixed;left:14px;right:14px;bottom:14px;top:auto;inset-inline:14px;min-width:0;max-height:70vh}
  header.top{gap:8px 10px}
  header.top .brand-name{font-size:19px}
  .who{display:none}
  nav.tabs{order:5;flex:0 0 100%;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;margin-top:2px;
      -webkit-overflow-scrolling:touch;scrollbar-width:none}
  nav.tabs::-webkit-scrollbar{display:none}
  nav.tabs a{flex:none;white-space:nowrap}
  header.top .tabsmore{display:block}
  .logout{padding:7px;border:1px solid var(--line);border-radius:10px;color:var(--muted)}
  .logout .lotext{display:none}
  .twrap{overflow:visible}
  table, tbody, tr, td{display:block;width:auto}
  thead{display:none}
  tbody tr{border:1px solid var(--line);border-radius:14px;margin:0 0 10px;padding:8px 10px;background:var(--card);box-shadow:var(--shadow)}
  tbody tr:hover{background:var(--card)}
  tbody td{border:0;padding:5px 4px;text-align:right;max-width:none}
  tbody td::before{content:attr(data-label);display:block;font-size:11px;font-weight:700;color:var(--soft);margin-bottom:2px}
  td.name{padding-top:2px}
  td.name::before{display:none}
  /* حفظ / تابع النتيجة / الكراسة under the title: one compact equal-width bar in card
       mode (the mtable view keeps the desktop chips — its name column is already wide) */
    .twrap:not(.mtable) .rev-actions{gap:6px;margin-top:8px}
  .twrap:not(.mtable) .rev-btn{flex:1 1 0;min-width:0;justify-content:center;
      padding:6px 4px;gap:4px;font-size:11.5px;white-space:nowrap}
  .awardcol{display:none}
  .twrap.awards .awardcol{display:block}
  .bidscol{display:none}
  .twrap.awards .bidscol{display:block}
  .awdcol{display:none}
  .twrap.awards .awdcol{display:block}
  .bidpop{position:fixed;left:14px;right:14px;bottom:14px;top:auto;inset-inline-start:auto;margin:0;width:auto;min-width:0;max-width:none;max-height:60vh}
  /* Float the date range over the table: anchored inside .twrap.mtable (overflow-x:auto) it was
       clipped off-screen on the right-hand columns. Top-anchored, NOT bottom — iOS opens the native
       date wheel at the bottom of the viewport and it would sit right on top of the inputs. */
    .pop.dpop{position:fixed;left:14px;right:14px;top:14px;bottom:auto;
      margin:0;width:auto;min-width:0;max-width:none;z-index:60}
  /* NB: do NOT add inset-inline-* resets here. They map to left/right, so in RTL they cancel the
       two declarations above and the panel loses both anchors — width collapses to shrink-to-fit at
       its static position inside the scrolled table, i.e. it silently disappears. left/right are
       symmetric here and already outrank the base rule's logical insets (same specificity, later). */
    /* table view on mobile (overrides the card stacking) */
    .twrap.mtable{overflow-x:auto}
  .twrap.mtable table{display:table;width:auto;min-width:100%}
  .twrap.mtable thead{display:table-header-group}
  .twrap.mtable tbody{display:table-row-group}
  .twrap.mtable tr{display:table-row;border:0;margin:0;border-radius:0;box-shadow:none;background:none;padding:0}
  .twrap.mtable tbody tr:hover{background:#f8fafc}
  .twrap.mtable td{display:table-cell;border:0;border-bottom:1px solid var(--line2);padding:10px 12px}
  .twrap.mtable td::before{display:none}
  .twrap.mtable .awardcol{display:none}
  .twrap.mtable.awards .awardcol{display:table-cell}
  .twrap.mtable .bidscol{display:none}
  .twrap.mtable.awards .bidscol{display:table-cell}
  .twrap.mtable .awdcol{display:none}
  .twrap.mtable.awards .awdcol{display:table-cell}
  /* the table view (the DEFAULT on mobile) squeezed حفظ/تابع النتيجة/الكراسة until a label
       wrapped inside its own button: compact chips, no in-button wrapping (wrap whole buttons
       if a row ever needs it), and the name column gets the width back — the table h-scrolls */
    .twrap.mtable td.name{min-width:270px}
  .twrap.mtable .rev-actions{flex-wrap:wrap;gap:5px}
  .twrap.mtable .rev-btn{padding:4px 6px;gap:4px;font-size:11.5px;white-space:nowrap}
}
header.top.slim{margin-bottom:18px}
.crumbs{font-size:12.5px;color:var(--muted);margin-bottom:10px;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.crumbs a{color:var(--muted)}
.crumbs a:hover{color:var(--accent)}
.crumbs span:last-child{color:var(--text);font-weight:600}
.crumbsep{color:var(--soft)}
.aggwrap{max-width:1100px}
.aggh1{font-size:24px;font-weight:800;letter-spacing:-.015em;margin:2px 0 8px;line-height:1.35}
.agglead{color:var(--muted);font-size:14px;margin:0 0 18px;max-width:760px;line-height:1.7}
.aggempty{color:var(--muted);background:var(--card);border:1px solid var(--line);border-radius:14px;padding:24px;text-align:center}
.aggtbl{width:100%;border-collapse:collapse;font-size:13.5px;background:var(--card);
    border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}
.aggtbl th, .aggtbl td{text-align:right;padding:11px 16px;border-bottom:1px solid var(--line2);vertical-align:top}
.aggtbl thead th{color:var(--muted);font-weight:700;font-size:11.5px;background:#f8fafc;white-space:nowrap}
.aggtbl tbody tr:last-child td{border-bottom:0}
.aggtbl tbody tr:hover{background:#f8fafc}
.aggtbl td.rk{color:var(--soft);font-weight:700;width:1%;white-space:nowrap;font-variant-numeric:tabular-nums}
.aggtbl a.clink{color:var(--accent);text-decoration:none;font-weight:600}
.aggtbl a.clink:hover{text-decoration:underline}
.aggtbl thead a.agghsort{color:inherit;border-bottom:0;font:inherit;cursor:pointer}
.aggtbl thead a.agghsort:hover{color:var(--accent);text-decoration:underline}
.aggtbl thead a.agghsort.on{color:var(--accent)}
.aggtbl thead .aggsort{margin-inline-start:4px;font-size:10px}
.aggtbl.awardtbl td.tname{max-width:540px;white-space:normal}
.aggtbl td.awcol .win{display:flex;justify-content:space-between;gap:12px;font-size:13px;margin-bottom:3px}
/* Bound the winner NAME, not the cell: max-width on a <td> is unreliable in auto table layout, but a flex
   item with its own cap ellipsizes fine (the generic td .win .wc rule above supplies overflow/ellipsis).
   Without this, one 128-char Etimad name (a supplier registered twice in one field, /?view=top&m=2026-04,
   reported 2026-09-07) widened the column until the whole hub table overflowed the page. */
.aggtbl td.awcol .win .wc{max-width:320px}
.aggtbl td.awcol .win:last-child{margin-bottom:0}
.aggtbl td.awcol .win b{color:var(--green);font-weight:800;font-variant-numeric:tabular-nums}
/* «أبرز الترسيات» (?view=top): the period picker card — scope switch + the selected period, then the year
   and month pill rows. Pure SSR <a>s, so the pills get their own rule rather than .dchip (scoped to the
   SPA's .pop.dpop; same look on purpose). td.mwhen is the settlement-date cell — NOT .awdcol, which
   app.css hides outside .twrap.awards. */
.tpick{display:flex;flex-direction:column;gap:10px;margin:0 0 14px;padding:12px 16px;background:var(--card);
    border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}
.tpick-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px}
.tscope{display:inline-flex;background:var(--greybg);border-radius:10px;padding:3px}
.tscope .tsc{padding:6px 14px;border-radius:8px;font-size:12.5px;font-weight:700;color:var(--muted);text-decoration:none}
.tscope a.tsc:hover{color:var(--text);text-decoration:none}
.tscope .tsc.on{background:#fff;color:var(--accent);box-shadow:0 1px 2px rgba(15,23,42,.14)}
.tpick-cur{font-size:14px;font-weight:800;color:var(--text)}
.tpick-cur small{color:var(--muted);font-weight:600;font-size:11.5px}
.tpick-row{display:flex;align-items:flex-start;gap:10px}
.tpick-row .mlbl{flex:none;min-width:40px;padding-top:6px;color:var(--soft);font-size:11.5px;font-weight:700}
.mchips{display:flex;flex-wrap:wrap;gap:5px}
.mchip{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:999px;padding:5px 11px;font-size:12px;
    font-weight:600;line-height:1.35;text-decoration:none;font-variant-numeric:tabular-nums;white-space:nowrap}
a.mchip:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}
.mchip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.mchip.off{opacity:.4}
.aggtbl td.mwhen{color:var(--muted);font-size:12.5px;white-space:nowrap;font-variant-numeric:tabular-nums}
.aggtbl td.mwhen .est{margin-inline-start:5px}
@media (max-width:720px){
  .tpick-row{flex-direction:column;gap:4px}
  .tpick-row .mlbl{padding-top:0}
}
nav.tabs .tabnew{display:inline-block;margin-inline-start:6px;padding:1px 6px;border-radius:999px;background:var(--orange);color:#fff;
    font-size:10px;font-weight:800;line-height:1.5;vertical-align:1px}
.aggnote{color:var(--muted);font-size:12.5px;margin:12px 0 0;line-height:1.7}
@media (max-width:720px){
  .aggwrap{max-width:none}
  .aggtbl{border:0;box-shadow:none;border-radius:0;background:none;font-size:13px}
  .aggtbl td.awcol .win{gap:10px}
  .aggtbl td.awcol .win .wc{max-width:58vw}
  /* «أبرز الترسيات» stays a TABLE on phones (owner, 2026-09-08) — the SPA's «جدول» treatment
     (.twrap.mtable above): a full-bleed horizontal scroller and the card stacking undone, for
     .monthtbl only (the other hubs keep their cards). Widths are tuned so the ranking's substance —
     #, the tender, the winner and the amount — fits the first screen, and الجهة / النشاط / التاريخ
     sit one swipe to the left. Long names are capped on the INNER link (inline-block + max-width),
     not the cell: max-width on a <td> is unreliable in auto table layout (see .awcol .wc above). */
  .tblscroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -10px;padding:0 10px}
  .aggtbl.monthtbl{display:table;width:auto;min-width:100%;font-size:12.5px;background:var(--card);
      border:1px solid var(--line);border-radius:12px}
  .aggtbl.monthtbl thead{display:table-header-group}
  .aggtbl.monthtbl tbody{display:table-row-group}
  .aggtbl.monthtbl tr{display:table-row;border:0;margin:0;padding:0;border-radius:0;box-shadow:none;background:none}
  .aggtbl.monthtbl th, .aggtbl.monthtbl td{display:table-cell;border:0;border-bottom:1px solid var(--line2);padding:9px 10px;
      vertical-align:top;max-width:none;text-align:right}
  .aggtbl.monthtbl tbody tr:last-child td{border-bottom:0}
  .aggtbl.monthtbl td::before{display:none}
  /* Column widths come from the INNER boxes: an auto-layout table shrinks to the sum of its columns'
     minimum widths, so a cap alone left الجهة/النشاط at their longest word (six-line cells) — the
     min-width is what buys them room. Long text is line-clamped (3 / 2 / 3 lines) so a row stays a
     row; the full name is one tap away and in the link's title. */
  .aggtbl.monthtbl td.tname{line-height:1.5}
  .aggtbl.monthtbl td.tname a{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;min-width:180px;max-width:200px}
  .aggtbl.monthtbl td.awcol .win{flex-direction:column;align-items:flex-start;gap:2px}
  .aggtbl.monthtbl td.awcol .win .wc{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;line-height:1.45;min-width:130px;max-width:150px}
  .aggtbl.monthtbl td.magcy .clink, .aggtbl.monthtbl td.mact .clink{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;
      min-width:140px;max-width:170px;white-space:normal;line-height:1.5}
}
.sfoot{margin-top:34px;padding-top:18px;border-top:1px solid var(--line)}
.sfoot-links{display:flex;flex-wrap:wrap;gap:18px;margin-bottom:10px}
.sfoot-links a{font-size:13px;font-weight:700;color:var(--text)}
.sfoot-links a:hover{color:var(--accent)}
.sfoot-note{font-size:12px;color:var(--soft);line-height:1.8;margin:0;max-width:820px}
.sfoot-note b{color:var(--muted);font-weight:700}
.sfoot-note a{color:var(--muted);text-decoration:underline}
.sfoot-note a:hover{color:var(--accent)}
.aggwrap.tpage{max-width:880px}
.tp-back{display:inline-flex;align-items:center;gap:3px;font-size:13px;font-weight:600;color:var(--muted);text-decoration:none;margin:0 0 12px}
.tp-back:hover{color:var(--accent)}
.tp{color:var(--text)}
.tp a{text-decoration:none}
.tp-hero{padding:2px 0 22px;border-bottom:1px solid var(--line);margin:0 0 24px}
.tp-title{font-size:25px;font-weight:800;line-height:1.45;letter-spacing:-.01em;margin:0 0 12px}
.tp-sub{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--muted);margin:0 0 14px}
.tp-sub a{color:var(--accent)}
.tp-sub a:hover{text-decoration:underline}
.tp-sep{color:var(--soft)}
.tp-tags{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.tp-tag{font-size:12px;font-weight:600;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:4px 12px}
.tp-tag b{color:var(--text);font-weight:700}
.tp-ago{color:var(--soft);font-weight:600}
.tp-ctas{display:flex;flex-wrap:wrap;gap:10px}
.tp-cta{display:inline-flex;align-items:center;gap:7px;background:var(--accent);color:#fff;font-weight:700;font-size:14px;padding:10px 18px;border-radius:10px}
.tp-cta:hover{background:var(--accentd)}
.tp-cta.alt{background:transparent;color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--accent)}
.tp-cta.alt:hover{background:var(--accent);color:#fff}
.tp-award{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px 22px;margin:0 0 28px;box-shadow:0 1px 2px rgba(15,23,42,.05)}
.tp-award-head{display:flex;align-items:center;gap:10px;margin:0 0 15px}
.tp-award-ico{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:9px;background:var(--accentbg);color:var(--accent);flex:none}
.tp-award-ico svg{width:18px;height:18px}
.tp-award-lbl{font-size:12.5px;font-weight:700;color:var(--muted)}
.tp-award-when{margin-inline-start:auto;font-size:12px;color:var(--soft);font-variant-numeric:tabular-nums}
.tp-award-when b{color:var(--text);font-weight:700}
.tp-winner+.tp-winner{margin-top:18px;padding-top:18px;border-top:1px solid var(--line2)}
.tp-winner-name{font-size:20px;font-weight:800;line-height:1.5;letter-spacing:-.01em;margin:0 0 15px}
.tp-winner-name a{color:var(--text)}
.tp-winner-name a:hover{color:var(--accent)}
.tp-former{display:inline-block;font-size:12.5px;font-weight:600;color:var(--soft)}
.tp-figs{display:flex;flex-wrap:wrap}
.tp-fig{display:flex;flex-direction:column;gap:5px;padding-inline-end:30px;margin-inline-end:30px;border-inline-end:1px solid var(--line2)}
.tp-fig:last-child{border-inline-end:0;padding-inline-end:0;margin-inline-end:0}
.tp-fig-l{font-size:11.5px;font-weight:700;color:var(--muted)}
.tp-fig-v{font-size:20px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.tp-fig.muted .tp-fig-v{font-size:17px;color:var(--muted)}
.tp-end-note{margin:14px 0 0;font-size:12px;font-weight:600;line-height:1.7;color:var(--soft)}
.tp-block{margin:0 0 30px}
.tp-h2{font-size:15px;font-weight:800;color:var(--text);margin:0 0 12px;display:flex;align-items:center;gap:9px}
.tp-count{font-size:12px;font-weight:700;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:1px 9px}
.tp-facts{margin:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card)}
.tp-f{display:flex;gap:16px;padding:12px 18px;font-size:14px;border-bottom:1px solid var(--line2)}
.tp-f:last-child{border-bottom:0}
.tp-f dt{flex:none;width:185px;margin:0;color:var(--muted);font-weight:600;display:flex;align-items:center;gap:8px;align-self:flex-start}
.tp-f .tp-fi{flex:none;color:var(--text)}
.tp-f dd{margin:0;color:var(--text);font-weight:600;min-width:0;word-break:break-word}
.tp-f dd a{color:var(--accent)}
.tp-f dd a:hover{text-decoration:underline}
.tp-table{width:100%;border-collapse:collapse;font-size:13.5px;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.tp-table thead th{text-align:right;font-size:11.5px;font-weight:700;color:var(--muted);background:#f8fafc;padding:11px 16px;border-bottom:1px solid var(--line);white-space:nowrap}
.tp-table td{text-align:right;padding:12px 16px;border-bottom:1px solid var(--line2);vertical-align:middle}
.tp-table tbody tr:last-child td{border-bottom:0}
.tp-table tbody tr.won td{background:var(--accentbg)}
.tp-table a{color:var(--accent);font-weight:600}
.tp-table a:hover{text-decoration:underline}
.tp-table .num{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}
.tp-badge{font-size:11.5px;font-weight:700;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 11px;white-space:nowrap}
.tp-badge.won{color:var(--accent);border-color:#bfd3fb;background:#fff}
/* مطابق = compliant but didn't win → neutral, NOT a "positive/green" outcome.
     غير مطابق = technically rejected → red (a genuine negative signal). */
  .tp-badge.ok{color:var(--muted);border-color:var(--line);background:var(--greybg)}
.tp-badge.no{color:#b42318;border-color:#f3c0bb;background:#fdf2f1}
.tp-related{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card)}
.tp-rel{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:13px 18px;border-bottom:1px solid var(--line2)}
.tp-rel:last-child{border-bottom:0}
.tp-rel:hover{background:#f8fafc}
.tp-rel-name{font-size:13.5px;font-weight:600;color:var(--text);line-height:1.55}
.tp-rel-meta{flex:none;font-size:12.5px;color:var(--muted);text-align:left;line-height:1.5}
.tp-rel-meta b{display:block;color:var(--text);font-weight:700;font-variant-numeric:tabular-nums}
@media (max-width:720px){
  .aggwrap.tpage{max-width:none}
  .tp-title{font-size:21px}
  .tp-f{flex-direction:column;gap:3px}
  .tp-f dt{width:auto}
  .tp-table{display:block;border-radius:12px}
  .tp-table thead{display:none}
  .tp-table tbody, .tp-table tr, .tp-table td{display:block}
  .tp-table tr{border-bottom:1px solid var(--line)}
  .tp-table tr:last-child{border-bottom:0}
  .tp-table td{border:0;padding:6px 16px;display:flex;justify-content:space-between;gap:14px}
  .tp-table td:first-child{padding-top:12px}
  .tp-table td:last-child{padding-bottom:12px}
  .tp-table td::before{content:attr(data-label);color:var(--muted);font-weight:600;font-size:12px;flex:none}
  .tp-rel{flex-direction:column;align-items:flex-start;gap:5px}
  .tp-rel-meta{text-align:right}
  .tp-rel-meta b{display:inline}
}
.cosearch{margin:0 0 14px}
.cosearch input{width:100%;max-width:440px;padding:11px 14px;font-size:14px;font-family:inherit;
    border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--text)}
.cosearch input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accentbg)}
.cintro{margin:14px 0 6px;color:var(--sec,#475569);font-size:15px;line-height:1.9;max-width:72ch}
.cfaq{margin:16px 0 6px}
.cfaq h2{font-size:17px;font-weight:700;margin:0 0 10px;color:var(--text)}
.cfaq details{border:1px solid var(--line2);border-radius:12px;padding:0 14px;margin-bottom:8px;background:var(--card)}
.cfaq summary{cursor:pointer;padding:13px 0;font-weight:600;list-style:none;color:var(--text)}
.cfaq summary::-webkit-details-marker{display:none}
.cfaq summary::before{content:"+";display:inline-block;min-width:1em;color:var(--accent);font-weight:800;margin-inline-end:6px}
.cfaq details[open] summary::before{content:"\2013"}
.cfaq .cfaq-a{padding-block-end:14px;padding-inline-start:1.4em;color:var(--sec,#475569);line-height:1.9}
.crelated{margin:2px 0 12px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.crelated .crel-lbl{color:var(--sec,#475569);font-size:13px}
.crel-chip{display:inline-block;padding:6px 12px;border:1px solid var(--line);border-radius:999px;
    background:var(--accentbg);color:var(--accentd,#1d4ed8);font-size:13px;text-decoration:none;font-weight:600}
.crel-chip:hover{border-color:var(--accent)}
/* ---- Standalone pages' shared header (account/invoices/pricing/contact/legal) -------------
   These pages render header.top.slim inside a narrow column (560-840px), where the one-row
   layout wraps badly at ANY viewport width. Force the same compact two-row treatment the
   mobile breakpoint uses: brand + حسابي/تسجيل الخروج on the top row, tabs on their own
   horizontally-scrollable row underneath. */
.acwrap nav.tabs, .invwrap nav.tabs, .prwrap nav.tabs, .cwrap nav.tabs, .legalwrap nav.tabs{order:5;flex:0 0 100%;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;margin-top:2px;
  -webkit-overflow-scrolling:touch;scrollbar-width:none}
.acwrap nav.tabs::-webkit-scrollbar, .invwrap nav.tabs::-webkit-scrollbar, .prwrap nav.tabs::-webkit-scrollbar, .cwrap nav.tabs::-webkit-scrollbar, .legalwrap nav.tabs::-webkit-scrollbar{display:none}
.acwrap nav.tabs a, .invwrap nav.tabs a, .prwrap nav.tabs a, .cwrap nav.tabs a, .legalwrap nav.tabs a{flex:none;white-space:nowrap}
.acwrap header.top .tabsmore, .invwrap header.top .tabsmore, .prwrap header.top .tabsmore, .cwrap header.top .tabsmore, .legalwrap header.top .tabsmore{display:block}
.agglock{color:var(--soft);font-weight:800;letter-spacing:2px;text-decoration:none}
.agglock:hover{color:var(--accent)}
.agglocknote{font-size:12.5px;color:var(--muted);margin:0 0 10px}
.agglocknote a{font-weight:700}
nav.tabs .tabic{display:inline-block;vertical-align:-2px;margin-inline-end:5px;opacity:.7;flex:none}
nav.tabs .tab.on .tabic, nav.tabs .tab:hover .tabic{opacity:1}
.aggcta{display:inline-block;margin:0 0 14px;background:var(--accentbg,#eff6ff);color:var(--accent);
  border:1px solid var(--accent);border-radius:999px;padding:9px 18px;font-size:13.5px;font-weight:700;text-decoration:none}
.aggcta:hover{background:var(--accent);color:#fff;text-decoration:none}
/* The admin panel is styled by Bootstrap + assets/admin.css; the one rule left here is the
 * phone-width subtab sizing (the .ucols/.ktiles/.logtools/.mail-table family it used to sit
 * with died in the 2026-09-02 rebuild and was removed 2026-09-08). */
@media (max-width:720px){.util .subtab{padding:10px 12px;font-size:13px}}
.aggfollow{margin:-6px 0 14px}
.chead .aggfollow{margin:10px 0 0}
/* guests + free accounts: a plain search only (2026-10-07; body.plain, app.php) — the award tabs, the filter panel
   and the column headers stay in view but inert; the funnels go, and a note says who gets them */
.plainoff,.plain #filterPanel>.row{opacity:.45}   /* the panel itself is display:contents on a computer — fade its rows */
@media (min-width:721px){.gearwrap.deskhide{display:none}}
.plain thead .funnel{display:none}
.plain thead .sort{cursor:default}
.plainhint{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap;margin-inline-start:4px}
.plainhint svg{flex:none}
.plainhint:hover{color:var(--accent);text-decoration:none}
