/* TenderWatch 1.9.8 — design layer on top of app/workspace/business/plans.css */
:root{--red:#c2413b;--red-bg:#fff0ef;--violet:#6655b6;--violet-bg:#f1efff;--radius-sm:10px;--ring:0 0 0 3px #265eea22}
body[data-theme="dark"]{--red:#ff9b91;--red-bg:#3a2221;--violet:#c5b0ff;--violet-bg:#2d2748}

/* ---- page chrome ---- */
.page-heading{align-items:flex-end}
.page-heading h1{background:linear-gradient(90deg,var(--text),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent}
.panel{transition:box-shadow .18s,border-color .18s}
.panel:hover{box-shadow:0 6px 26px #142b550d}
.table-wrap table thead th{position:sticky;top:0;z-index:1}
.table-wrap tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--surface-soft) 55%,transparent)}
.table-wrap tbody tr:hover td{background:color-mix(in srgb,var(--accent) 5%,var(--surface))}
td.num,th.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.stat strong{font-variant-numeric:tabular-nums}
.stats-grid .stat{position:relative;overflow:hidden}
.stats-grid .stat::after{content:"";position:absolute;inset:auto -30px -30px auto;width:90px;height:90px;border-radius:50%;background:color-mix(in srgb,var(--accent) 7%,transparent)}
.chip-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.chip-row a{border:1px solid var(--line);border-radius:999px;padding:4px 11px;font-size:11px;color:var(--muted)}
.chip-row a.active{background:var(--accent);border-color:var(--accent);color:#fff}
.chip-row a:hover{text-decoration:none;border-color:var(--accent)}
.pager{display:flex;gap:14px;align-items:center;justify-content:center;padding:16px}

/* ---- badges for DXMAP stages / price kinds ---- */
.badge.bidding{background:var(--green-bg);color:var(--green)}
.badge.contract{background:var(--violet-bg);color:var(--violet)}
.badge.stale{background:var(--orange-bg);color:var(--orange)}
.badge.completed{background:#eaf1ff;color:#2653a8}
.badge.exact{background:var(--green-bg);color:var(--green)}
.badge.estimate{background:var(--orange-bg);color:var(--orange)}
body[data-theme="dark"] .badge.completed{background:#24344c;color:#bad6ff}

/* ---- flash + notification stack ---- */
.notice.flash.success{background:var(--green-bg);border-color:color-mix(in srgb,var(--green) 30%,transparent);color:var(--green)}
.notice.flash.error{background:var(--red-bg);border-color:color-mix(in srgb,var(--red) 30%,transparent);color:var(--red)}
.notify-stack{position:fixed;top:18px;right:18px;z-index:60;display:flex;flex-direction:column;gap:10px;max-width:min(420px,calc(100vw - 36px))}
.notify{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:start;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:12px;padding:12px 12px 12px 10px;box-shadow:0 14px 40px #0b16302e;animation:tw-in .22s ease-out}
.notify.success{border-left-color:var(--green)}.notify.error{border-left-color:var(--red)}
.notify .ico{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-weight:800;background:var(--surface-soft)}
.notify.success .ico{background:var(--green-bg);color:var(--green)}.notify.error .ico{background:var(--red-bg);color:var(--red)}
.notify b{display:block;font-size:13px}.notify p{margin:3px 0 0;font-size:12px;color:var(--muted);overflow-wrap:anywhere}
.notify a{font-size:12px;font-weight:650}
.notify button{padding:2px 7px;border:0;background:transparent;color:var(--muted);font-size:16px}
.notify.leaving{animation:tw-out .25s ease-in forwards}
@keyframes tw-in{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
@keyframes tw-out{to{opacity:0;transform:translateX(20px)}}

/* ---- running update tasks dock ---- */
.task-dock{position:fixed;right:18px;bottom:18px;z-index:55;width:min(380px,calc(100vw - 36px));background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 40px #0b16302a;padding:12px 14px}
.task-dock h4{margin:0 0 8px;font-size:12px;letter-spacing:.3px;color:var(--muted);display:flex;justify-content:space-between}
.task{padding:8px 0;border-top:1px solid var(--line)}.task:first-of-type{border-top:0}
.task b{font-size:12px;display:block;overflow-wrap:anywhere}.task small{display:block;color:var(--muted);margin-top:3px}
.bar{height:8px;border-radius:99px;background:var(--surface-soft);overflow:hidden;margin-top:6px;border:1px solid var(--line)}
.bar>i{display:block;height:100%;width:var(--w,0%);background:linear-gradient(90deg,var(--accent),#56c3ff);border-radius:99px;transition:width .5s}
progress{accent-color:var(--accent);height:8px;vertical-align:middle}
.progress-line{display:flex;gap:10px;align-items:center;font-size:12px}
.progress-line progress{flex:1;min-width:120px}

/* ---- permission switches ---- */
.switch{display:flex;align-items:center;gap:10px;margin:7px 0;font-size:12px;font-weight:500;color:var(--text);cursor:pointer}
.switch input{position:absolute;opacity:0;width:1px;height:1px}
.switch .slider{position:relative;width:38px;min-width:38px;height:22px;border-radius:99px;background:#c9d3e3;transition:background .15s}
.switch .slider::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .15s}
.switch input:checked+.slider{background:var(--green)}
.switch input:checked+.slider::after{transform:translateX(16px)}
.switch input:focus-visible+.slider{box-shadow:var(--ring)}
.switch input:disabled+.slider{opacity:.55}
.perm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin-top:6px}
.perm-grid.disabled{opacity:.55}
.perm-grid.disabled::before{content:"Administrator — barcha ruxsatlar yoqilgan";grid-column:1/-1;font-size:11px;color:var(--muted)}
.user-card{border-top:1px solid var(--line);padding:18px 0}
.user-card:first-of-type{border-top:0}
.user-card.is-off{opacity:.7}
.user-head{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;align-items:flex-start}
.user-head small{display:block;margin-top:4px}
.user-head .filter-row{flex:1;justify-content:flex-end;max-width:760px}

/* ---- analytics: product view ---- */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin:6px 0 18px}
.kpi{border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:var(--surface)}
.kpi span{font-size:11px;color:var(--muted);font-weight:600;display:block}
.kpi strong{display:block;font-size:22px;letter-spacing:-.5px;margin:4px 0;font-variant-numeric:tabular-nums}
.kpi small{color:var(--muted);display:block;overflow-wrap:anywhere}
.kpi.good{border-top:3px solid var(--green)}.kpi.bad{border-top:3px solid var(--red)}.kpi.mid{border-top:3px solid var(--accent)}
.product-card{border:1px solid var(--line);border-radius:14px;padding:16px;margin:0 0 14px;background:var(--surface)}
.product-card header{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:baseline}
.product-card h3{margin:0;font-size:15px}
.price-pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:12px 0}
.price-pair div{background:var(--surface-soft);border-radius:10px;padding:10px 12px}
.price-pair span{font-size:10px;color:var(--muted);display:block;letter-spacing:.3px;text-transform:uppercase}
.price-pair b{font-size:16px;font-variant-numeric:tabular-nums}
.drop-pos{color:var(--green);font-weight:700}.drop-neg{color:var(--red);font-weight:700}
.region-bars{display:grid;gap:6px}
.region-bars .row{display:grid;grid-template-columns:minmax(120px,210px) 1fr auto;gap:10px;align-items:center;font-size:12px}
.region-bars .track{height:10px;border-radius:99px;background:var(--surface-soft);overflow:hidden}
.region-bars .track i{display:block;height:100%;width:var(--w,0%);background:linear-gradient(90deg,#4f7df5,#35c7a4)}

@media (max-width:780px){.notify-stack{left:12px;right:12px;top:12px}.task-dock{left:12px;right:12px;width:auto}.user-head .filter-row{justify-content:flex-start}}
