:root{
  --bg:#f3f5f8; --card:#fff; --ink:#1d2433; --muted:#6b7385; --line:#e3e7ee;
  --side:#14213d; --side2:#1d2e52; --accent:#0f766e; --accent2:#e6f4f2;
  --pos:#0f7a3e; --neg:#c0392b; --warn:#c77c02; --r:10px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:"Vazirmatn FD",Vazirmatn,Tahoma,sans-serif;font-size:14px;color:var(--ink);background:var(--bg);line-height:1.7}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{margin:0 0 .6rem;font-weight:700}
h3{font-size:1rem}
small{font-size:.8em}
.muted{color:var(--muted)} .sm{font-size:.85em} .c{text-align:center} .r{text-align:right}
.pos{color:var(--pos)} .neg,.neg td{color:var(--neg)}

/* layout */
.app{display:flex;min-height:100vh}
.sidebar{width:230px;background:var(--side);color:#cfd6e6;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;flex-shrink:0}
.brand{display:flex;gap:.7rem;align-items:center;padding:1.1rem 1rem;border-bottom:1px solid rgba(255,255,255,.07)}
.brand b{display:block;color:#fff;font-size:.95rem;line-height:1.4}
.brand small{color:#8e9ab5}
.logo{width:38px;height:38px;border-radius:9px;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:800;font-size:1.2rem;flex-shrink:0}
.sidebar nav{flex:1;padding:.6rem}
.sidebar nav a{display:flex;gap:.6rem;align-items:center;color:#cfd6e6;padding:.55rem .7rem;border-radius:8px;margin-bottom:2px}
.sidebar nav a i{font-style:normal;width:1.2rem;text-align:center;opacity:.8}
.sidebar nav a:hover{background:var(--side2);text-decoration:none}
.sidebar nav a.on{background:var(--accent);color:#fff}
.who{padding:.9rem 1rem;border-top:1px solid rgba(255,255,255,.07);font-size:.85rem;display:flex;justify-content:space-between}
.who a{color:#f5b7b1}
.main{flex:1;min-width:0}
.topbar{display:flex;align-items:center;gap:1rem;padding:.8rem 1.4rem;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.topbar h1{font-size:1.1rem;margin:0;flex:1}
.today{color:var(--muted);font-size:.85rem}
.menu-btn{display:none;border:0;background:none;font-size:1.4rem;cursor:pointer}
.content{padding:1.2rem 1.4rem 3rem}

/* cards & grids */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.2rem;margin-bottom:1rem}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem 1rem}
.span2{grid-column:span 2}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.8rem;margin-bottom:1rem}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:.8rem 1rem;border-top:3px solid var(--accent)}
.kpi small{color:var(--muted);display:block}
.kpi b{font-size:1.25rem;display:block;margin:.15rem 0}
.kpi em{font-style:normal;color:var(--muted);font-size:.8rem}
.kpi.neg{border-top-color:var(--neg)} .kpi.neg b{color:var(--neg)}
.kpi.pos b{color:var(--pos)}
.kpi .bar{margin-top:.3rem}

/* forms */
label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:#3d4556}
label.check{flex-direction:row;align-items:center;gap:.4rem;align-self:end;padding-bottom:.4rem}
input,select,textarea{font:inherit;border:1px solid #cdd3de;border-radius:7px;padding:.42rem .6rem;background:#fff;color:var(--ink);min-width:0}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent2);border-color:var(--accent)}
input[dir=ltr]{text-align:left}
fieldset{border:1px solid var(--line);border-radius:var(--r);margin:0 0 1rem;padding:.6rem 1rem 1rem}
legend{padding:0 .4rem;font-weight:700;color:var(--accent)}
.form>label{margin-bottom:.8rem}
.actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.8rem}
.btn{display:inline-flex;align-items:center;gap:.3rem;font:inherit;border:1px solid #cdd3de;background:#fff;color:var(--ink);padding:.42rem .9rem;border-radius:7px;cursor:pointer;white-space:nowrap}
.btn:hover{background:#f4f6f9;text-decoration:none}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.primary:hover{background:#0b5d57}
.btn.danger{color:var(--neg);border-color:#f0c4bf}
.btn.sm{padding:.25rem .6rem;font-size:.85rem}
.btn.block{width:100%;justify-content:center}
.link{border:0;background:none;color:var(--accent);cursor:pointer;font:inherit;padding:0}
.link.danger{color:var(--neg)}
.w4{width:4rem}.w5{width:5.5rem}.w8{width:7.5rem}.w10{width:10rem}.grow{flex:1}
.num{text-align:center}
.inline-del{margin-top:-.4rem;text-align:left}
.inline-form{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.8rem}
.rowform{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.rowform label.check{padding:0}
.p0{padding:.35rem .4rem!important}

/* toolbar */
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:.8rem;flex-wrap:wrap;margin-bottom:1rem}
.filters{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}
.filters input,.filters select{max-width:13rem}
.tabs{display:flex;gap:.3rem;flex-wrap:wrap;margin-bottom:1rem;border-bottom:1px solid var(--line)}
.tabs a{padding:.5rem .9rem;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs a.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:700}
.tabs a:hover{text-decoration:none;color:var(--ink)}

/* tables */
.tbl-wrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:.88rem}
.tbl th{background:#f6f8fb;color:#4a5265;font-weight:600;text-align:right;padding:.5rem .55rem;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:.45rem .55rem;border-bottom:1px solid #eef1f5;vertical-align:middle}
.tbl tr:hover td{background:#fafbfd}
.tbl tr.tot td{font-weight:700;background:#f6f8fb;border-top:2px solid var(--line)}
.tbl tr.inactive td{color:#9aa1b0}
.tbl tr.same td{border-top:0}
.tbl tr.grp td{border-top:1px solid #d9dee7}
.row-act a{margin-left:.7rem;white-space:nowrap}
.grid-edit td{padding:.3rem}
.grid-edit input,.grid-edit select{width:100%}
.grid-edit .w5{width:5rem}.grid-edit .w8{width:7.3rem}
.ts th.day{text-align:center;line-height:1.3}
.ts th.day small{display:block;color:var(--muted);font-weight:400}
.ts td input.h{width:3.6rem;text-align:center}
.ts .fri{background:#fdf3f2}
.ts .w-prj{min-width:14rem}.ts .w-act{min-width:11rem}
.rowsum,.colsum,#grand,#sumH,#sumC{font-weight:700;text-align:center}
.ts-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}

/* badges, bars, chips */
.badge{display:inline-block;padding:.05rem .55rem;border-radius:20px;font-size:.78rem;background:#eef1f5;color:#4a5265;white-space:nowrap}
.st-planned{background:#eef1f5}.st-active{background:#e0f2ef;color:#0f766e}.st-reporting{background:#fff4dd;color:#9a5d00}
.st-done{background:#e5ecf9;color:#2c4f94}.st-hold{background:#fdeceb;color:#c0392b}.st-cancelled{background:#f1f1f1;color:#999;text-decoration:line-through}
.bar{position:relative;height:18px;background:#eef1f5;border-radius:9px;min-width:90px;overflow:hidden}
.bar span{position:absolute;inset:0 0 0 auto;border-radius:9px}
.bar.ok span{background:#9ed8cf}.bar.warn span{background:#f6cf7b}.bar.over span{background:#f0a49b}
.bar em{position:relative;font-style:normal;font-size:.75rem;display:block;text-align:center;line-height:18px}
.chips{display:flex;flex-wrap:wrap;gap:.4rem}
.chip{padding:.2rem .7rem;border-radius:20px;background:#fdeceb;color:var(--neg)}

/* facts */
.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:.2rem 1.5rem;margin:0}
.facts div{display:flex;gap:.5rem;padding:.3rem 0;border-bottom:1px dashed #e7eaf0}
.facts dt{color:var(--muted);min-width:7.5rem;font-size:.85rem}
.facts dd{margin:0}
.note{background:#fafbfd;border-right:3px solid var(--accent);padding:.5rem .8rem;margin:.8rem 0 0}

/* alerts */
.alert{padding:.6rem 1rem;border-radius:8px;margin-bottom:.8rem;border:1px solid}
.alert-success{background:#e8f6ef;border-color:#bfe5cf;color:#11603a}
.alert-danger{background:#fdeceb;border-color:#f3c1bb;color:#9b2a1e}
.alert-warning{background:#fff6e2;border-color:#f3dba2;color:#8a5a00}
.alert-info{background:#e8f0fb;border-color:#c5d6f1;color:#244a85}

/* login / install */
.center-page{display:grid;place-items:center;min-height:100vh;padding:1rem}
.card.login{width:360px;display:flex;flex-direction:column;gap:.8rem;padding:1.6rem}
.card.narrow{width:min(640px,100%)}
.narrow-l{max-width:520px}
.brand.big{border:0;padding:0 0 .5rem;color:var(--ink)}
.brand.big b{color:var(--ink)}

/* signatures & print */
.signs{display:flex;gap:1rem;margin-top:1.5rem}
.signs div{flex:1;border:1px solid var(--line);border-radius:8px;padding:.6rem;height:90px;display:flex;flex-direction:column;justify-content:space-between;text-align:center;background:#fff}
.signs i{font-style:normal;color:var(--muted);font-size:.8rem}
.print-only{display:none}
.print-head{justify-content:space-between;align-items:center;border-bottom:2px solid #333;padding-bottom:.5rem;margin-bottom:.8rem}
.print-head small{display:block;color:#555}
.print-head h2{margin:0;font-size:1.2rem}
.ph-date{font-size:.8rem;text-align:left}

/* jalali datepicker */
.jdp{position:absolute;z-index:50;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 28px rgba(20,33,61,.18);padding:.6rem;width:250px;font-size:.85rem}
.jdp-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:.4rem;font-weight:700}
.jdp-h button,.jdp-f button{border:0;background:#f1f3f7;border-radius:6px;cursor:pointer;font:inherit;padding:.1rem .55rem}
.jdp-g{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
.jdp-g b{color:var(--muted);font-weight:500;font-size:.75rem}
.jdp-g span{padding:.25rem 0;border-radius:6px;cursor:pointer}
.jdp-g span:hover{background:var(--accent2)}
.jdp-g span.t{outline:1px solid var(--accent)}
.jdp-g span.s{background:var(--accent);color:#fff}
.jdp-g span.f{color:var(--neg)}
.jdp-f{display:flex;justify-content:space-between;margin-top:.4rem}

@media (max-width:900px){
  .sidebar{position:fixed;right:-240px;transition:right .2s;z-index:20}
  .sidebar.open{right:0}
  .menu-btn{display:block}
  .grid2,.grid3,.facts{grid-template-columns:1fr}
  .span2{grid-column:auto}
  .content{padding:1rem}
  .signs{flex-wrap:wrap}
}

@media print{
  @page{size:A4 landscape;margin:12mm}
  body{background:#fff;font-size:11px}
  .no-print,.sidebar,.topbar,.btn,.tabs,.alert,.inline-form{display:none!important}
  .print-only{display:flex!important}
  .content{padding:0}
  .card{border:0;padding:0;margin-bottom:.8rem}
  .kpis{grid-template-columns:repeat(5,1fr)}
  .kpi{border:1px solid #bbb}
  .tbl th{background:#eee!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .tbl td,.tbl th{border:1px solid #bbb;padding:.25rem .35rem}
  .bar{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  a{color:inherit}
  .facts{grid-template-columns:repeat(3,1fr)}
  .signs{page-break-inside:avoid}
}
/* اصلاحات عرض ستون‌ها */
.jdp-g span.s{color:#fff!important}
#allocTable .staff-sel{min-width:10rem}
#allocTable .role-sel{min-width:7rem}
.ts td:nth-child(3) input{min-width:9rem}
.nowrap{white-space:nowrap}
.fy-bar{margin-bottom:1rem;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:.5rem .8rem}
.repeater input.money{min-width:7rem}
.form h3{margin-top:1.2rem}

/* منوی گروه‌بندی‌شده */
.sidebar nav{overflow-y:auto;padding:.4rem .6rem}
.sidebar nav a{padding:.32rem .7rem;font-size:.86rem;margin-bottom:1px}
.nav-group{color:#7f8bab;font-size:.74rem;font-weight:700;margin:.8rem .5rem .3rem;letter-spacing:.02em}
.sidebar nav a.report{background:#1f3a5f;color:#fff;margin-top:.3rem;font-weight:700}
.sidebar nav a.report.on{background:var(--accent)}
.sheet-tag{margin-inline-start:auto;background:var(--accent2);color:var(--accent);padding:.1rem .7rem;border-radius:20px;font-size:.82rem}
.page-help{color:var(--muted);margin:-.4rem 0 1rem;font-size:.9rem}
.pager{margin-inline-start:auto;display:flex;gap:.25rem;align-items:center;flex-wrap:wrap}
.pager a{padding:.1rem .55rem;border:1px solid var(--line);border-radius:6px}
.pager a.on{background:var(--accent);color:#fff;border-color:var(--accent)}
details.card>summary{cursor:pointer;padding:.2rem 0}
details.card[open]>summary{margin-bottom:.8rem}
.sheet-prev table{border-collapse:collapse;font-size:.75rem;min-width:100%}
.sheet-prev td{border:1px solid #d5dae3;padding:.15rem .35rem;white-space:nowrap;max-width:16rem;overflow:hidden;text-overflow:ellipsis}
.sheet-prev td.n{text-align:center;font-variant-numeric:tabular-nums}
.sheet-prev td.s-title{font-weight:800;font-size:.9rem;text-align:center;border:0}
.sheet-prev td.s-subtitle{font-weight:700;text-align:center;border:0}
.sheet-prev td.s-head{background:#dde5f0;font-weight:700;text-align:center;white-space:normal}
.sheet-prev td.s-ttext,.sheet-prev td.s-tint,.sheet-prev td.s-tdec,.sheet-prev td.s-tpct{background:#f2f2f2;font-weight:700}
.sheet-prev td.s-section{font-weight:700}
.sheet-prev td.s-para{border:0;white-space:normal}
.sheet-prev td.s-none{border-color:transparent}
.sidebar nav a.intake{border:1px dashed #3d5a85;margin-bottom:.4rem}
.sheet-card .toolbar{margin-bottom:.5rem}
.map-box{margin-top:.3rem}
