:root{--primary:#253BE2;--primary-2:#1C2FB6;--primary-soft:#E9ECFD;--primary-light:#3A59FF;--cyan:#04E3F4;--cyan-2:#09BFEA;--ok:#07788F;--ok-soft:#DCF8FB;--ink:#210A58;--ink-2:#2D1675;--ink-3:#3B2492;--ink-text:#C9C2EE;--grad:linear-gradient(135deg,#253BE2 0%,#2A23A8 55%,#210A58 100%);--canvas:#F4F5FB;--surface:#FFFFFF;--sunk:#F8F9FD;--line:#E3E5F0;--line-2:#CDD1E3;--text:#171717;--mute:#5B5F73;--faint:#8C90A3;--amber:#F5A524;--amber-soft:#FEF3DC;--amber-text:#8A5A00;--rose:#E5383B;--rose-soft:#FDECEC;--r-panel:20px;--r-card:14px;--r-ctl:12px;--font-head:"Anek Malayalam",Inter,system-ui,sans-serif;--shadow-pop:0 14px 34px -10px rgba(37,59,226,.35)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font:14px/1.5 Inter,system-ui,sans-serif;background:var(--canvas);color:var(--text);font-variant-numeric:tabular-nums}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-2);text-decoration:underline}:focus-visible{outline:2px solid var(--cyan-2);outline-offset:2px}svg.i{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px}.shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.side{background:var(--ink);background-image:radial-gradient(120% 60% at 0% 100%,rgba(37,59,226,.55),transparent 70%);color:var(--ink-text);padding:20px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:2px}.brand{display:flex;align-items:center;gap:12px;color:#fff;padding:6px 10px 24px}.brand:hover{text-decoration:none}.brand .logo{display:block;color:#fff}.brand .logo svg{height:19px;width:auto;display:block}.brand .app{font:600 12px/1 Inter,sans-serif;color:var(--ink);background:var(--cyan);border-radius:999px;padding:5px 9px 4px}.nav-group{font-size:11.5px;color:#9a90cc;padding:16px 10px 6px;font-weight:600}.side a.nav{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:999px;color:var(--ink-text);font-weight:500}.side a.nav:hover{background:var(--ink-2);color:#fff;text-decoration:none}.side a.nav.on{background:var(--primary);color:#fff;box-shadow:0 6px 16px -6px #253be2cc}.side a.nav .count{margin-left:auto;background:var(--cyan);color:var(--ink);font-size:11.5px;font-weight:700;border-radius:999px;padding:0 7px;line-height:19px}.side .me{margin-top:auto;border-top:1px solid var(--ink-3);padding:14px 6px 0;display:flex;align-items:center;gap:10px}.avatar{width:34px;height:34px;border-radius:50%;background:var(--grad);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px;flex:none}.side .me a{color:#fff;font-weight:600;display:block;line-height:1.25}.side .me small{color:var(--ink-text);text-transform:capitalize}.side .me form{margin-left:auto}.side .me button{background:none;border:0;color:var(--ink-text);cursor:pointer;padding:6px;border-radius:8px}.side .me button:hover{background:var(--ink-2);color:#fff}main{min-width:0;padding:26px 32px 48px;max-width:1480px;width:100%}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}.page-head h1{font:700 30px/1.1 var(--font-head);letter-spacing:-.01em;margin:0;color:var(--primary)}.page-head p{margin:4px 0 0;color:var(--mute);max-width:70ch}h2{font:700 18px/1.2 var(--font-head);margin:0;color:var(--text)}.muted{color:var(--mute)}.faint{color:var(--faint)}small{font-size:12.5px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-panel);padding:18px 20px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.panel-head p{margin:2px 0 0;color:var(--mute);font-size:12.5px}.stack{display:grid;gap:18px}.cols{display:grid;gap:18px;grid-template-columns:repeat(12,1fr)}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.span-12{grid-column:1/-1}label,.lbl{display:block;font-size:12.5px;color:var(--mute);font-weight:600;margin-bottom:5px}input,select,textarea{width:100%;padding:9px 11px;border:1px solid var(--line-2);border-radius:var(--r-ctl);font:inherit;color:var(--text);background:var(--surface);transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{outline:0;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}input[readonly]{background:var(--sunk);color:var(--mute)}textarea{resize:vertical;min-height:70px}.btn,button{display:inline-flex;align-items:center;justify-content:center;gap:7px;background:var(--primary);color:#fff;border:1px solid var(--primary);border-radius:999px;padding:9px 18px;font:inherit;font-weight:600;cursor:pointer;white-space:nowrap;text-decoration:none}.btn:hover,button:hover{background:var(--primary-2);color:#fff;text-decoration:none}.btn.ghost,button.ghost{background:var(--surface);color:var(--text);border-color:var(--line-2)}.btn.ghost:hover,button.ghost:hover{background:var(--sunk);color:var(--text)}.btn.accent,button.accent{background:var(--cyan);border-color:var(--cyan);color:var(--ink)}.btn.accent:hover,button.accent:hover{background:#3beaf7;color:var(--ink)}button:disabled{opacity:.55;cursor:not-allowed}button.danger{background:var(--surface);color:var(--rose);border-color:#f3c3c4}button.danger:hover{background:var(--rose-soft);color:var(--rose)}.btn.sm,button.sm{padding:5px 12px;font-size:12.5px}.btn.icon,button.icon{padding:6px}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.field-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}.field-grid .wide{grid-column:1/-1}.chips{display:flex;flex-wrap:wrap;gap:7px}.chips input{position:absolute;opacity:0;pointer-events:none}.chips label{margin:0;padding:6px 12px;border:1px solid var(--line-2);border-radius:999px;font-weight:500;color:var(--text);cursor:pointer;background:var(--surface);font-size:13px}.chips label:hover{border-color:var(--primary)}.chips input:checked+label{background:var(--primary);border-color:var(--primary);color:#fff}.chips input:focus-visible+label{outline:2px solid var(--cyan-2);outline-offset:2px}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-panel);background:var(--surface)}table{width:100%;border-collapse:collapse}th,td{padding:11px 14px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font-size:12px;color:var(--mute);font-weight:600;background:var(--sunk);white-space:nowrap;position:sticky;top:0}tr:last-child td{border-bottom:0}tbody tr:hover td{background:#f8f9fe}td.n,th.n{text-align:right;white-space:nowrap}td .sub{display:block;color:var(--mute);font-size:12.5px;margin-top:2px}.code{font-weight:700;color:var(--primary);letter-spacing:-.01em}.empty{text-align:center;padding:40px 16px;color:var(--mute)}.empty b{display:block;color:var(--text);font-size:15px;margin-bottom:4px}.pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.Draft{background:#eef0f6;color:#585d75}.Submitted{background:var(--amber-soft);color:var(--amber-text)}.Approved{background:var(--ok-soft);color:var(--ok)}.Rejected{background:var(--rose-soft);color:var(--rose)}.Active{background:var(--ok-soft);color:var(--ok)}.Proposed,.On.Hold{background:var(--primary-soft);color:var(--primary)}.Completed,.Cancelled,.Inactive{background:#eef0f6;color:#585d75}.tag{display:inline-block;padding:1px 8px;border-radius:6px;font-size:12px;font-weight:600;background:var(--sunk);border:1px solid var(--line);color:var(--mute)}.tag.bill{background:var(--primary-soft);border-color:transparent;color:var(--primary-2)}.ot{color:var(--rose);font-weight:700}.meter{height:7px;background:#e6e8f4;border-radius:99px;overflow:hidden;min-width:90px}.meter i{display:block;height:100%;background:var(--primary);border-radius:99px}.meter i.warn{background:var(--amber)}.meter i.over{background:var(--rose)}.kpis{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-panel);padding:16px 18px;display:flex;flex-direction:column;gap:4px}.kpi .k-label{display:flex;align-items:center;gap:8px;color:var(--mute);font-size:12.5px;font-weight:600}.kpi .k-label .ic{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary)}.kpi .k-val{font:700 30px/1.1 var(--font-head);color:var(--primary);margin-top:8px}.kpi .k-val small{font:600 14px Inter,sans-serif;color:var(--mute);margin-left:4px}.kpi .k-foot{color:var(--mute);font-size:12.5px}.toasts{position:fixed;top:18px;right:18px;z-index:50;display:grid;gap:8px;max-width:min(420px,calc(100vw - 36px))}.toast{display:flex;gap:10px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--cyan-2);border-radius:14px;padding:11px 12px 11px 14px;box-shadow:var(--shadow-pop);animation:tin .25s ease-out}.toast.error{border-left-color:var(--rose)}.toast.warn{border-left-color:var(--amber)}.toast span{flex:1}.toast button{background:none;border:0;color:var(--faint);padding:0 2px;font-size:18px;line-height:1}.toast button:hover{background:none;color:var(--text)}@keyframes tin{0%{opacity:0;transform:translateY(-6px)}}.period{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-panel);padding:12px 14px;margin-bottom:18px}.period .presets{display:flex;gap:6px;flex-wrap:wrap;margin-right:auto}.period .presets a{padding:6px 12px;border-radius:999px;border:1px solid var(--line-2);color:var(--text);font-weight:500;font-size:13px}.period .presets a:hover{border-color:var(--primary);text-decoration:none}.period .presets a.on{background:var(--primary);color:#fff;border-color:var(--primary)}.period input,.period select{width:auto;padding:7px 10px}.menu-btn{display:none}@media (max-width:1100px){.span-4,.span-5,.span-6,.span-7,.span-8{grid-column:1/-1}}@media (max-width:860px){.shell{grid-template-columns:minmax(0,1fr)}.page-head .btn,.period .presets{width:100%}.side{position:fixed;inset:0 auto 0 0;width:260px;z-index:40;transform:translate(-100%);transition:transform .2s}body.menu .side{transform:none;box-shadow:var(--shadow-pop)}.menu-btn{display:inline-flex;position:sticky;top:0;z-index:30;width:100%;justify-content:flex-start;border-radius:0;background:var(--ink);border:0;padding:12px 16px}main{padding:18px 16px 40px}.page-head h1{font-size:25px}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
