/* CMWSSB Depot Register — v2 redesign. Navy/teal water theme, no external fonts. */
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#eef2f7;--surface:#ffffff;--border:#e3e9f1;--fg:#0c1a33;--muted-fg:#5f6f85;
  --primary:#1450c8;--primary-dark:#0f3ea3;--primary-soft:#edf3ff;
  --teal:#0e9494;--teal-soft:#e7f8f7;
  --green:#0a915d;--green-soft:#e9f9f1;--red:#d92638;--red-soft:#feeef0;
  --amber:#c77414;--amber-soft:#fdf6e8;
  --navy:#0b1f4b;--navy-2:#12306e;
  --shadow-sm:0 1px 2px rgba(12,26,51,.05),0 1px 6px rgba(12,26,51,.04);
  --shadow-md:0 6px 24px rgba(12,26,51,.10);
  --radius:14px;
}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{font-family:'Segoe UI',system-ui,-apple-system,Roboto,Arial,sans-serif;
  background:
    radial-gradient(900px 300px at 15% -80px,rgba(20,80,200,.08),transparent 60%),
    radial-gradient(700px 260px at 85% -60px,rgba(14,148,148,.07),transparent 60%),
    var(--bg);
  color:var(--fg);font-size:15px;line-height:1.5;min-height:100vh}
h1{font-size:1.5rem;font-weight:800;letter-spacing:-.015em}
h2{font-size:1.12rem;font-weight:700;letter-spacing:-.01em}
h3{font-size:.98rem;font-weight:650}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
code{background:var(--primary-soft);padding:1px 5px;border-radius:4px;font-size:.85em}

.container{max-width:1280px;margin:0 auto;padding:0 20px}
.page{padding:26px 0 56px}

/* ============ Topbar ============ */
.topbar{background:linear-gradient(105deg,#081737 0%,var(--navy) 45%,#0d2f66 100%);
  color:#fff;position:sticky;top:0;z-index:50;box-shadow:0 4px 24px rgba(8,23,55,.28);
  border-bottom:1px solid rgba(255,255,255,.07)}
.topbar::after{content:"";display:block;height:3px;
  background:linear-gradient(90deg,#2563eb,#06b6d4 45%,#10b981 90%)}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:60px;flex-wrap:wrap;padding-top:6px;padding-bottom:6px}
.brand{display:flex;align-items:center;gap:11px;color:#fff}
.brand:hover{text-decoration:none}
.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex:0 0 auto;
  border-radius:11px;background:linear-gradient(135deg,#2563eb,#06b6d4);color:#fff;
  box-shadow:0 4px 12px rgba(6,182,212,.35),inset 0 1px 0 rgba(255,255,255,.3)}
.brand-txt{display:flex;flex-direction:column;line-height:1.15}
.brand-txt b{font-weight:800;font-size:1.02rem;letter-spacing:-.01em}
.brand-txt small{font-size:.68rem;font-weight:600;color:#8fb3e8;text-transform:uppercase;letter-spacing:.14em}
.topnav{display:flex;align-items:center;gap:3px;flex-wrap:wrap}
.topnav a{display:inline-flex;align-items:center;gap:7px;color:#b9c8e4;padding:8px 13px;border-radius:10px;
  font-size:.91rem;font-weight:600;transition:background .15s ease,color .15s ease}
.topnav a svg{opacity:.85}
.topnav a:hover{color:#fff;background:rgba(255,255,255,.09);text-decoration:none}
.topnav a.active{color:#fff;background:linear-gradient(135deg,rgba(37,99,235,.55),rgba(6,182,212,.4));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18)}
.topnav a.nav-logout{margin-left:6px;border:1px solid rgba(255,255,255,.18);color:#dbe6f7}
.topnav a.nav-logout:hover{background:rgba(217,38,56,.25);border-color:rgba(217,38,56,.5)}

/* ============ Cards & stats ============ */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:18px;box-shadow:var(--shadow-sm)}
.stat{background:linear-gradient(180deg,#fff,#fbfcfe);border:1px solid var(--border);border-radius:var(--radius);
  padding:16px;box-shadow:var(--shadow-sm);border-top:3px solid var(--primary);
  display:flex;gap:12px;align-items:center;position:relative;overflow:hidden;
  transition:transform .15s ease,box-shadow .15s ease}
.stat:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.stat .num{font-size:1.5rem;font-weight:800;white-space:nowrap;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stat .lbl{font-size:.79rem;color:var(--muted-fg);margin-top:2px;font-weight:600}
.stat .ico{flex:0 0 auto;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;
  justify-content:center;background:var(--primary-soft);color:var(--primary)}
.stat.s-green{border-top-color:var(--green)}.stat.s-green .ico{background:var(--green-soft);color:var(--green)}
.stat.s-amber{border-top-color:var(--amber)}.stat.s-amber .ico{background:var(--amber-soft);color:var(--amber)}
.stat.s-teal{border-top-color:var(--teal)}.stat.s-teal .ico{background:var(--teal-soft);color:var(--teal)}

/* Grids */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media(max-width:900px){.grid4{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.grid2,.grid4{grid-template-columns:1fr}}

/* ============ Forms ============ */
.field{margin-bottom:13px}
.field label{display:block;font-size:.83rem;font-weight:650;margin-bottom:4px;color:#33445e}
.req{color:var(--red)}
input,select,textarea{width:100%;padding:9px 11px;border:1.5px solid #cfd9e6;border-radius:10px;
  font:inherit;font-size:.93rem;background:#fff;color:var(--fg);transition:border-color .12s ease,box-shadow .12s ease}
input:hover,select:hover{border-color:#aebdd2}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(20,80,200,.14)}
input[type=date],input[type=month]{max-width:190px}
table input,table select{padding:6px 8px}

/* ============ Buttons ============ */
.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;border-radius:10px;
  border:1.5px solid #cfd9e6;background:#fff;color:var(--fg);font:inherit;font-size:.91rem;
  font-weight:650;cursor:pointer;text-decoration:none;transition:all .13s ease}
.btn:hover{background:#f4f7fb;border-color:#aebdd2;text-decoration:none;transform:translateY(-1px)}
.btn:active{transform:scale(.97)}
.btn-primary{background:linear-gradient(135deg,var(--primary),#2f6ae0);border-color:var(--primary);color:#fff;
  box-shadow:0 3px 10px rgba(20,80,200,.28)}
.btn-primary:hover{background:linear-gradient(135deg,var(--primary-dark),var(--primary));border-color:var(--primary-dark)}
.btn-pdf{background:linear-gradient(135deg,#b91c1c,#dc2626);border-color:#b91c1c;color:#fff;
  box-shadow:0 3px 10px rgba(220,38,38,.25)}
.btn-pdf:hover{background:linear-gradient(135deg,#991b1b,#b91c1c);border-color:#991b1b;color:#fff}
.btn-pdf[disabled]{opacity:.6;cursor:progress;transform:none}
.btn-sm{padding:4px 11px;font-size:.83rem;border-radius:8px}

/* Alerts */
.alert{padding:11px 14px;border-radius:10px;margin-bottom:16px;font-size:.92rem;border:1px solid}
.alert-error{background:var(--red-soft);border-color:#f6c6cb;color:#8e1823}
.alert-success{background:var(--green-soft);border-color:#b5ecd2;color:#065f42}

/* ============ Tables ============ */
.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);box-shadow:var(--shadow-sm)}
table.data{width:100%;border-collapse:collapse;font-size:.9rem;background:var(--surface)}
table.data th,table.data td{padding:9px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--border)}
table.data th{background:linear-gradient(180deg,#f4f7fb,#edf2f8);font-size:.77rem;text-transform:uppercase;
  letter-spacing:.05em;color:#42536e;white-space:nowrap;border-bottom:2px solid #d8e1ec;
  position:sticky;top:0;z-index:2}
table.data tr:last-child td{border-bottom:none}
table.data tbody tr{transition:background .1s ease}
table.data tbody tr:nth-child(even){background:#fafcfe}
table.data tbody tr:hover{background:var(--primary-soft)}
table.data td.r,table.data th.r{text-align:right;font-variant-numeric:tabular-nums}
table.data tr.total th,table.data tr.total td{background:linear-gradient(180deg,var(--primary-soft),#e3edff);
  font-weight:750;border-top:2px solid var(--primary)}

/* Tags */
.tag{display:inline-block;padding:2px 10px;border-radius:99px;font-size:.73rem;font-weight:700;
  background:var(--primary-soft);color:var(--primary-dark);white-space:nowrap;letter-spacing:.01em}
.tag-rm{background:var(--green-soft);color:var(--green)}
.tag-project{background:var(--amber-soft);color:var(--amber)}
.actions a{margin-right:10px;font-size:.88rem}

/* Animations */
@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes popIn{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.anim{animation:fadeUp .4s ease both}
.anim-d1{animation-delay:.05s}.anim-d2{animation-delay:.1s}.anim-d3{animation-delay:.15s}.anim-d4{animation-delay:.2s}

/* Mini bar chart */
.chart{display:flex;align-items:flex-end;gap:5px;height:110px;padding:8px 4px 0}
.chart .bar{flex:1;min-width:8px;background:linear-gradient(180deg,#38bdf8,#1450c8);border-radius:5px 5px 0 0;
  position:relative;transform-origin:bottom;animation:growBar .5s ease both;cursor:default}
.chart .bar:hover{background:linear-gradient(180deg,#7dd3fc,#2563eb)}
.chart .bar .tip{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);
  background:var(--navy);color:#fff;font-size:.72rem;padding:4px 8px;border-radius:6px;white-space:nowrap;z-index:5}
.chart .bar:hover .tip{display:block}
.chart .bar.empty{background:#e2e8f0;animation:none}
@keyframes growBar{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.chart-x{display:flex;gap:5px;padding:4px 4px 0}
.chart-x span{flex:1;min-width:8px;text-align:center;font-size:.62rem;color:var(--muted-fg)}

/* Segmented control & pills */
.seg{display:inline-flex;background:#e2e9f2;border-radius:12px;padding:4px;gap:4px;flex-wrap:wrap}
.seg button{border:0;background:transparent;padding:9px 22px;border-radius:9px;font:inherit;font-size:.95rem;
  font-weight:650;color:#4a5b76;cursor:pointer;transition:all .15s ease}
.seg button:hover{color:var(--fg)}
.seg button.on{background:#fff;color:var(--primary-dark);box-shadow:var(--shadow-sm)}
.pills{display:flex;gap:8px;flex-wrap:wrap}
.pills button{border:1.5px solid var(--border);background:#fff;padding:7px 16px;border-radius:99px;font:inherit;
  font-size:.9rem;font-weight:650;color:#4a5b76;cursor:pointer;transition:all .15s ease}
.pills button:hover{border-color:var(--primary);color:var(--primary)}
.pills button.on{background:var(--primary);border-color:var(--primary);color:#fff}
.pills button.on-project{background:var(--amber);border-color:var(--amber);color:#fff}

/* Step sections in entry form */
.step{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);
  padding:18px;margin-bottom:16px;box-shadow:var(--shadow-sm);animation:popIn .3s ease both}
.step-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.step-num{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--primary),#06b6d4);
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:750;flex:0 0 auto}
.step-head h3{font-size:1.02rem}
.step-head .hint{font-size:.83rem;color:var(--muted-fg);font-weight:400}
.badge-mode{margin-left:auto;font-size:.78rem;font-weight:700;padding:3px 12px;border-radius:99px}
.badge-rm{background:var(--green-soft);color:var(--green)}
.badge-project{background:var(--amber-soft);color:var(--amber)}

/* Street chips */
.chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:8px}
.chips:empty{display:none}
.chip{display:inline-flex;align-items:center;gap:7px;background:var(--primary-soft);color:var(--primary-dark);
  border:1px solid #c4d7fb;padding:4px 11px;border-radius:99px;font-size:.86rem;font-weight:650;
  animation:popIn .18s ease both}
.chip a{color:inherit;font-weight:750;text-decoration:none;line-height:1}
.chip a:hover{color:var(--red)}
.chip-unknown{background:var(--amber-soft);color:var(--amber);border-color:#f3dfb2}

/* Sticky total bar */
.totalbar{position:sticky;bottom:0;z-index:40;background:linear-gradient(105deg,#081737,var(--navy-2));
  color:#fff;border-radius:var(--radius);padding:13px 18px;display:flex;align-items:center;
  justify-content:space-between;gap:14px;flex-wrap:wrap;box-shadow:0 -4px 24px rgba(8,23,55,.25);margin-top:4px}
.totalbar .tsum{font-size:1.02rem;font-weight:750}
.totalbar .tsub{font-size:.8rem;color:#94a9cd}
.totalbar .btn-primary{background:linear-gradient(135deg,#16a34a,#22c55e);border-color:#16a34a}
.totalbar .btn-primary:hover{background:linear-gradient(135deg,#15803d,#16a34a)}
.totalbar .btn{border-color:#33456e;color:#fff;background:transparent}

/* Report filters */
.filter-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:900px){.filter-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.filter-grid{grid-template-columns:1fr}.filter-grid .field{grid-column:auto!important}}
.quick{display:inline-block;padding:5px 13px;border-radius:99px;border:1.5px solid var(--border);background:#fff;
  font-size:.83rem;font-weight:650;color:#4a5b76;cursor:pointer;transition:all .12s ease}
.quick:hover{border-color:var(--primary);color:var(--primary)}

/* Horizontal mini bars inside tables */
.hbar{background:#e2e9f2;border-radius:99px;height:8px;overflow:hidden;min-width:90px}
.hbar span{display:block;height:100%;background:linear-gradient(90deg,#38bdf8,#1450c8);border-radius:99px;
  animation:growH .5s ease both;transform-origin:left}
@keyframes growH{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* Status tags */
.st-done{background:var(--green-soft);color:var(--green)}
.st-prog{background:var(--primary-soft);color:var(--primary-dark)}
.st-pend{background:var(--red-soft);color:var(--red)}

/* Donut legend rows */
.legend{display:flex;align-items:center;gap:8px;font-size:.86rem;margin-bottom:6px}
.legend .dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto}

/* Estimate detail: labour & expense breakup */
.blist{display:flex;flex-direction:column;gap:4px;min-width:170px}
.bitem{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.8rem;
  background:#f7fafd;border:1px solid var(--border);border-left:3px solid var(--primary);
  border-radius:8px;padding:3px 9px;line-height:1.35}
.bitem .bt{color:#33445e}
.bitem .bt small{color:var(--muted-fg)}
.bitem .ba{font-weight:750;white-space:nowrap;font-variant-numeric:tabular-nums}
.bitem-lab{border-left-color:var(--green);background:var(--green-soft)}
.bsub{display:flex;justify-content:flex-end;gap:6px;font-size:.72rem;color:var(--muted-fg);padding:1px 2px 0}
.splitbar{display:flex;height:6px;border-radius:99px;overflow:hidden;background:var(--border);margin-top:5px;min-width:70px}
.splitbar i{display:block;height:100%}
.splitbar .s-lab{background:var(--green)}
.splitbar .s-exp{background:var(--amber)}
.sharebar{height:7px;border-radius:99px;background:#e6edf5;overflow:hidden;min-width:90px;margin-top:4px}
.sharebar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--primary),#06b6d4)}
.pct{font-size:.75rem;color:var(--muted-fg);font-variant-numeric:tabular-nums}
table.data tr.date-sep td{border-top:2px solid #c4cfdd}
.datechip{display:inline-block;background:var(--primary-soft);color:var(--primary-dark);
  font-weight:750;font-size:.78rem;padding:2px 10px;border-radius:99px;white-space:nowrap}

/* ============ PDF capture mode ============ */
/* Applied to the cloned DOM before html2pdf renders it: flatten effects that
   html2canvas handles poorly (sticky, animations, gradients on text). */
.pdf-mode{background:#fff!important;max-width:none!important;padding:10px 14px!important}
.pdf-mode .anim,.pdf-mode .chart .bar,.pdf-mode .hbar span{animation:none!important}
.pdf-mode .no-print,.pdf-mode .no-pdf{display:none!important}
.pdf-mode .table-wrap{overflow:visible!important;box-shadow:none!important}
.pdf-mode table.data th{position:static!important}
.pdf-mode table.data{font-size:11px}
.pdf-mode table.data th,.pdf-mode table.data td{padding:4px 7px}
.pdf-mode .stat:hover{transform:none}
.pdf-mode h1{font-size:1.25rem}
.pdf-mode tr,.pdf-mode .stat,.pdf-mode .card{page-break-inside:avoid}
.pdf-hdr{display:flex;align-items:center;gap:12px;border-bottom:3px solid var(--navy);
  padding-bottom:10px;margin-bottom:14px}
.pdf-hdr .ph-logo{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,#2563eb,#06b6d4);
  display:flex;align-items:center;justify-content:center;color:#fff;flex:0 0 auto}
.pdf-hdr .ph-t{font-size:1.05rem;font-weight:800;color:var(--navy)}
.pdf-hdr .ph-s{font-size:.78rem;color:var(--muted-fg)}
.pdf-hdr .ph-d{margin-left:auto;text-align:right;font-size:.78rem;color:var(--muted-fg)}

/* Print */
@media print{
  .topbar,.no-print{display:none!important}
  body{background:#fff;font-size:12px}
  .page{padding:0}
  .table-wrap{border:none;box-shadow:none;overflow:visible}
  table.data th{position:static}
  table.data th,table.data td{border:1px solid #999;padding:4px 6px}
}
