/* ================== پیمانکاریِ ساختمان (۴۰٫۲۲) ==================
   سبک‌های ماژولِ construction.js — روی پوستهٔ styles.css/theme.css می‌نشیند. */
.cn-bar{position:relative;height:20px;border-radius:99px;background:color-mix(in srgb,var(--line) 70%,transparent);overflow:hidden;min-width:70px}
.cn-bar i{position:absolute;inset-inline-start:0;top:0;bottom:0;border-radius:99px;transition:width .3s}
/* ۴۰٫۲۲: برچسب با هالهٔ زمینه — روی هر رنگِ نوار خوانا (mix-blend-mode رنگِ نارنجی روی آبی می‌ساخت) */
.cn-bar b{position:absolute;inset:0;font-size:13.5px;line-height:20px;text-align:center;color:var(--ink);font-weight:700;
  text-shadow:0 0 3px var(--card),0 0 3px var(--card),0 0 2px var(--card)}
.cn-bar.sm{height:18px}.cn-bar.sm b{font-size:13.5px;line-height:18px}
.cn-late{color:var(--bad);font-weight:700}
.cn-alerts ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.cn-alert{display:flex;gap:10px;align-items:center;width:100%;text-align:start;border:0;background:none;padding:7px 8px;border-radius:9px;cursor:pointer;color:var(--ink);font:inherit;font-size:13.5px}
.cn-alert:hover{background:var(--brand-soft)}
.cn-alert i{display:inline-flex;color:var(--warn)}.cn-alerts li.late .cn-alert i,.cn-alerts li.late .cn-alert small{color:var(--bad)}
.cn-alert span{flex:1}.cn-alert small{color:var(--muted);white-space:nowrap}
.cn-head{display:grid;gap:12px}
.cn-head-t{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.cn-head-t h2{margin:0;font-size:18px}
.cn-head-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:6px 18px}
.cn-head-g>div,.cn-head-p>div{display:flex;flex-direction:column;gap:2px;font-size:13.5px}
.cn-head .k,.cn-kv td.k{color:var(--muted);font-size:13.5px}
.cn-head-p{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.cn-kv td.k{width:170px;white-space:nowrap}
.cn-tabs{flex-wrap:wrap}
.cn-quick{display:flex;flex-wrap:wrap;gap:8px}
.cn-tree td.depth-1{padding-inline-start:28px}.cn-tree td.depth-2{padding-inline-start:48px}.cn-tree td.depth-3{padding-inline-start:68px}.cn-tree td.depth-4{padding-inline-start:88px}
.cn-tree tr.cn-parent td{background:color-mix(in srgb,var(--brand-soft) 35%,transparent)}
.cn-gantt{display:grid;gap:4px;font-size:13.5px}
.cn-g-row{display:grid;grid-template-columns:150px 1fr 48px;gap:8px;align-items:center}
.cn-g-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cn-g-name.depth-1{padding-inline-start:12px}.cn-g-name.depth-2{padding-inline-start:24px}.cn-g-name.depth-3,.cn-g-name.depth-4{padding-inline-start:36px}
.cn-g-track{position:relative;height:18px;background:color-mix(in srgb,var(--line) 50%,transparent);border-radius:6px;overflow:hidden}
.cn-g-track span{position:absolute;height:7px;border-radius:4px}
.cn-g-plan{top:2px;background:var(--muted);opacity:.55}
.cn-g-act{top:10px;background:var(--brand)}.cn-g-act.late{background:var(--bad)}
.cn-g-today{position:absolute;top:0;bottom:0;width:2px;background:var(--warn)}
.cn-g-pct{text-align:center;color:var(--muted)}
.cn-g-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;font-size:13.5px;color:var(--muted)}
.cn-g-legend i{display:inline-block;width:18px;height:7px;border-radius:4px;vertical-align:middle;margin-inline-end:4px;position:static}
.cn-g-legend i.cn-g-today{width:2px;height:14px}
.cn-defects{display:grid;gap:4px}
.cn-defects label{display:flex;align-items:center;gap:8px;margin:0;font-weight:400;padding:4px 0;border-bottom:1px solid var(--line)}
.cn-defects label input[type=checkbox]{width:auto}.cn-defects label span{flex:1}.cn-defects label span.done{text-decoration:line-through;color:var(--muted)}
.cn-file{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:2px 0}
.cn-url{word-break:break-all;background:color-mix(in srgb,var(--line) 50%,transparent);padding:10px 12px;border-radius:9px;font-size:13.5px}
.cn-check{display:flex;align-items:center;gap:8px;margin:8px 0;font-weight:400}.cn-check input{width:auto}
.cn-est-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cn-est-head{display:grid;grid-template-columns:2fr 1fr 2fr;gap:12px}.cn-est-head .ff{margin:0}
.cn-est-wrap{overflow:auto}
.cn-est input,.cn-est select{min-width:0;padding:5px 7px;font-size:13.5px}
.cn-est input.cn-c{width:90px}.cn-est input.cn-d{width:100%;min-width:220px}.cn-est input.cn-n{width:110px;text-align:end}
.cn-est td{padding:4px 5px;vertical-align:middle}.cn-est td.num{white-space:nowrap;font-variant-numeric:tabular-nums}
.cn-est tr.cn-sub td{background:color-mix(in srgb,var(--brand-soft) 45%,transparent);font-size:13.5px}
.cn-est-tot .totbox{max-width:420px;margin-inline-start:auto}
.cn-est-tot .r{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--line);gap:12px}
.cn-est-tot .r.grand{border-bottom:0;font-size:15px}
.cn-est-tot input.cn-pct{width:64px;display:inline-block;padding:3px 6px;text-align:center;margin:0 4px}
#cn-rep table td.num,.panel table td.num{text-align:end;white-space:nowrap;font-variant-numeric:tabular-nums}
#cn-rep tfoot tr.tot td{border-top:2px solid var(--line);background:color-mix(in srgb,var(--brand-soft) 40%,transparent)}
@media (max-width:760px){
  .cn-head-p{grid-template-columns:1fr}
  .cn-est-head{grid-template-columns:1fr}
  .cn-g-row{grid-template-columns:100px 1fr 44px}
  .cn-kv td.k{width:120px}
}

/* ۴۰٫۲۵: طرف‌حساب‌های پیمانکاری، عواملِ پروژه و راهنمای شروع */
.cn-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.cn-tag{font-size:13.5px}
.cn-tel{white-space:nowrap;text-decoration:none}
.cn-pt-new{flex-wrap:wrap;gap:6px}
.cn-pt-tabs{flex-wrap:wrap}
.cn-pp h3 .badge{vertical-align:middle}
.cn-pp tr.cn-pp-off td{opacity:.7}
.cn-guide-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cn-guide-h h3{margin:0}
.cn-guide-l{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;counter-reset:none}
.cn-guide-l a{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;color:var(--ink);text-decoration:none;height:100%;box-sizing:border-box}
.cn-guide-l a:hover{background:var(--brand-soft)}
.cn-guide-l .n{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:color-mix(in srgb,var(--line) 70%,transparent);font-weight:700;font-size:13.5px}
.cn-guide-l .t{font-weight:700;font-size:13.5px}
.cn-guide-l small{color:var(--muted);font-size:13.5px}
.cn-guide-l li.done .n{background:var(--ok);color:#fff}
.cn-guide-l li.done small{color:var(--ok)}
@media (max-width:640px){
  .cn-guide-l{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .cn-pt-new .btn{flex:1 1 auto}
}

/* ۴۰٫۱۶۱: پروندهٔ ساده‌تر — «بیشتر ▾» ِ زبانه‌ها، «کارِ بعدی»، «نیازمندِ توجه» و شمارنده‌های کوچک */
.cn-tabs .cn-more .rm-pop{min-width:260px}
.cn-tabs .cn-more .rm-pop button.btn{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;border:0;border-radius:8px;
  background:none;box-shadow:none;padding:7px 10px;color:var(--ink);text-align:start;white-space:normal}
.cn-tabs .cn-more .rm-pop button.btn:hover,.cn-tabs .cn-more .rm-pop button.btn.active{background:var(--brand-soft)}
.cn-tabs .cn-more .rm-pop button.btn small{color:var(--muted);font-weight:400;font-size:13.5px}
.cn-more-h{display:block;padding:8px 10px 2px;color:var(--muted);font-size:13.5px;font-weight:700}
.cn-next{display:flex;align-items:center;gap:14px;flex-wrap:wrap;border-color:var(--brand);background:color-mix(in srgb,var(--brand-soft) 45%,var(--card))}
.cn-next-t{display:flex;flex-direction:column;gap:2px;flex:1;min-width:200px}
.cn-next-t .k{color:var(--muted);font-size:13.5px}.cn-next-t b{font-size:16px}.cn-next-t small{color:var(--muted);font-size:13.5px}
.cn-attn{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.cn-attn li>button,.cn-attn li>span{display:flex;gap:10px;align-items:center;width:100%;text-align:start;border:0;background:none;
  padding:7px 8px;border-radius:9px;color:var(--ink);font:inherit;font-size:13.5px}
.cn-attn li>button{cursor:pointer}.cn-attn li>button:hover{background:var(--brand-soft)}
.cn-attn i{display:inline-flex;color:var(--warn)}.cn-attn li.bad i{color:var(--bad)}
.cn-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.cn-chip{border:1px solid var(--line);background:var(--card);border-radius:99px;padding:5px 12px;font:inherit;font-size:13.5px;color:var(--ink);cursor:pointer}
.cn-chip:hover{background:var(--brand-soft)}.cn-chip b{margin-inline-start:4px}
@media (max-width:760px){.cn-next .btn{width:100%;justify-content:center}}
.cn-guide-d summary{cursor:pointer;color:var(--brand-ink);font-size:13.5px;margin-top:8px}
.cn-tabs .cn-more.open .rm-pop{display:grid;grid-template-columns:1fr 1fr;min-width:460px;max-height:calc(100vh - 16px);overflow:auto;gap:2px 6px}
.cn-tabs .cn-more .cn-more-h{grid-column:1/-1}
@media (max-width:600px){.cn-tabs .cn-more.open .rm-pop{grid-template-columns:1fr;min-width:0;width:calc(100vw - 32px)}}
/* ================== ۴۰٫۱۶۹: «پروژه‌ها» ِ یکپارچه — رنگِ هر نوعِ پروژه (کاربر: «شلوغ نباشد ولی بی‌روح هم نباشد») ================== */
:root{--pt-service:#0f8a83;--pt-service-soft:#e0f4f2;--pt-civil:#b7791f;--pt-civil-soft:#fbf1df;--pt-building:#b9472f;--pt-building-soft:#fbe9e4}
[data-theme="dark"]{--pt-service:#4fd1c5;--pt-service-soft:#123533;--pt-civil:#f0b45a;--pt-civil-soft:#3a2d14;--pt-building:#f08a72;--pt-building-soft:#3d211b}
.pt-service{--pt:var(--pt-service);--pt-soft:var(--pt-service-soft)}
.pt-civil{--pt:var(--pt-civil);--pt-soft:var(--pt-civil-soft)}
.pt-building{--pt:var(--pt-building);--pt-soft:var(--pt-building-soft)}
.pj-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.pj-q{flex:1 1 220px;max-width:420px;border-radius:999px!important;padding-inline:16px!important}
.pj-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.pj-chip{border:1.5px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:5px 14px;font:inherit;font-size:13.5px;
  cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.pj-chip.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:700}
.pj-chip.pt-service.on,.pj-chip.pt-civil.on,.pj-chip.pt-building.on{background:var(--pt);border-color:var(--pt)}
.pj-dot{width:9px;height:9px;border-radius:50%;background:var(--pt);display:inline-block}
.pj-chip.on .pj-dot{background:#fff}
.pj-sep{width:1px;height:22px;background:var(--line);margin-inline:4px}
.pj-alerts{display:grid;gap:4px;margin-bottom:12px}
.pj-alert{display:flex;gap:8px;align-items:center;border:0;border-radius:12px;background:color-mix(in srgb,var(--warn) 12%,var(--card));
  color:var(--ink);padding:8px 12px;font:inherit;font-size:13.5px;cursor:pointer;text-align:start}
.pj-alert.late{background:color-mix(in srgb,var(--bad) 12%,var(--card))}
.pj-alert>svg,.pj-alert>i{color:var(--warn);flex:none}.pj-alert.late>svg{color:var(--bad)}
.pj-alert span{flex:1}.pj-alert small{color:var(--muted);white-space:nowrap}
.pj-list{display:grid;gap:8px}
.pj-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto 150px auto;gap:12px;align-items:center;width:100%;text-align:start;font:inherit;
  color:var(--ink);background:var(--card);border:1px solid var(--line);border-inline-start:5px solid var(--pt,var(--brand));border-radius:14px;
  padding:10px 14px;cursor:pointer;transition:box-shadow .15s,transform .15s}
.pj-row:hover{box-shadow:0 4px 16px color-mix(in srgb,var(--pt,var(--brand)) 18%,transparent);transform:translateY(-1px)}
.pj-ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--pt-soft,var(--brand-soft));color:var(--pt,var(--brand))}
.pj-main{display:flex;flex-direction:column;min-width:0;line-height:1.6}
.pj-main b{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pj-main small{color:var(--muted);font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pj-mn{display:flex;flex-direction:column;align-items:flex-end;line-height:1.4}.pj-mn small{color:var(--muted);font-size:13.5px}
.pj-mn b{color:var(--ok);font-variant-numeric:tabular-nums}.pj-mn b.neg{color:var(--bad)}
.pj-empty{color:var(--muted);text-align:center;padding:30px 10px}
.pj-types{display:grid;gap:10px;margin-bottom:10px}
.pj-type{display:flex;gap:12px;align-items:center;text-align:start;font:inherit;color:var(--ink);background:var(--pt-soft);border:1.5px solid transparent;
  border-radius:14px;padding:12px 14px;cursor:pointer}
.pj-type:hover,.pj-type:focus-visible{border-color:var(--pt)}
.pj-type .pj-ic{background:var(--pt);color:#fff}
.pj-tbadge{display:inline-block;border-radius:999px;padding:2px 12px;font-size:13.5px;font-weight:700;background:var(--pt-soft);color:var(--pt)}
.cn-head.pt-service,.cn-head.pt-civil,.cn-head.pt-building{border-top:5px solid var(--pt)}
.cn-tabs.pt-service>button.active,.cn-tabs.pt-civil>button.active,.cn-tabs.pt-building>button.active{background:var(--pt);border-color:var(--pt);color:#fff}
@media (max-width:760px){
  .pj-row{grid-template-columns:40px minmax(0,1fr) auto;grid-template-areas:"ic main st" "ic pr mn";row-gap:6px;padding:10px 12px}
  .pj-row .pj-ic{grid-area:ic;align-self:start}.pj-row .pj-main{grid-area:main}.pj-row .pj-st{grid-area:st}
  .pj-row .pj-pr{grid-area:pr}.pj-row .pj-mn{grid-area:mn}
  .pj-q{max-width:none}
}
/* ۴۰٫۱۶۹ (گامِ ۲): نیروهای پروژه، «امروز سرِ پروژه»، انتخابِ پروژه هنگامِ ورود */
.pj-mbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.pj-mbar b{font-size:15px}
.pj-pills{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px}
.pj-pill{border-radius:999px;padding:3px 12px;font-size:13.5px;font-weight:700;white-space:nowrap}
.pj-pill.p-te{background:var(--pt-service-soft);color:var(--pt-service)}.pj-pill.p-am{background:var(--pt-civil-soft);color:var(--pt-civil)}
.pj-pill.p-bl{background:var(--brand-soft);color:var(--brand)}.pj-pill.p-rd{background:var(--pt-building-soft);color:var(--pt-building)}
.pj-pills .spacer{flex:1}
.pj-people{display:grid;gap:2px;margin-bottom:8px}
.pj-person{display:flex;align-items:center;gap:10px;padding:8px 2px;border-bottom:1px solid var(--line)}
.pj-person:last-child{border-bottom:0}
.pj-person .pj-main{flex:1}
.pj-av{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-weight:800;color:#fff;flex:none;font-size:14px}
.pj-av.a1{background:var(--pt-service)}.pj-av.a2{background:var(--pt-civil)}.pj-av.a3{background:var(--pt-building)}.pj-av.a4{background:var(--brand)}
.pj-days{display:flex;flex-direction:column;align-items:flex-end;line-height:1.3}.pj-days b{font-size:17px;font-variant-numeric:tabular-nums}
.pj-days small{color:var(--muted);font-size:13.5px}
.pj-h{margin:14px 0 2px;font-size:15px}
.pj-x{border:0;background:none;color:var(--muted);cursor:pointer;font:inherit;padding:0 2px}
.pj-pick{display:grid;gap:6px;margin:8px 0 12px}
.pj-pk{display:flex;align-items:center;gap:10px;text-align:start;font:inherit;font-size:15px;color:var(--ink);background:var(--card);
  border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer}
.pj-pk:hover,.pj-pk:focus-visible{border-color:var(--pt,var(--brand));background:var(--pt-soft,var(--brand-soft))}
/* گوشی: بالای پرونده سبک — چهار کادرِ مبلغ یک نوارِ افقی (همان قاعدهٔ ۴۰٫۱۵۱) و سربرگ فشرده */
@media (max-width:760px){
  .cn-money{display:flex!important;overflow-x:auto;gap:8px;scrollbar-width:none;padding-bottom:2px}
  .cn-money .card{flex:0 0 auto;min-width:128px;padding:8px 12px}
  .cn-money .card .val{font-size:15px}
  .cn-head{gap:8px}.cn-head-g{grid-template-columns:1fr 1fr;gap:4px 12px}
  .cn-head-p{gap:10px;grid-template-columns:1fr 1fr!important}
}
.pj-pk.mine{border-color:var(--pt,var(--brand));font-weight:700}
.pj-pkh{color:var(--muted);font-size:13.5px;margin-top:4px}
.pj-more{margin-top:10px}
.pj-more>summary{cursor:pointer;font-weight:700;padding:10px 4px;color:var(--brand);list-style:none}
.pj-more>summary::before{content:"▸ ";display:inline-block}.pj-more[open]>summary::before{content:"▾ "}
.pj-grow{width:100%;text-align:start;font:inherit;color:var(--ink);background:none;border:0;border-bottom:1px solid var(--line);cursor:pointer}
.pj-grow:hover{background:var(--brand-soft)}
/* ۴۰٫۱۶۹ (گامِ ۴): مناقصه‌ها — همان ردیفِ رنگیِ «پروژه‌ها»، رنگ از وضعیت */
.pj-row.td-amber{--pt:var(--pt-civil);--pt-soft:var(--pt-civil-soft)}
.pj-row.td-blue{--pt:var(--brand);--pt-soft:var(--brand-soft)}
.pj-row.td-green{--pt:var(--ok);--pt-soft:color-mix(in srgb,var(--ok) 14%,var(--card))}
.pj-row.td-red{--pt:var(--bad);--pt-soft:color-mix(in srgb,var(--bad) 12%,var(--card))}
.pj-row.td-gray{--pt:var(--muted);--pt-soft:var(--line)}
.td-dl{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
