:root{--page:#f6f8fb;--surface:#fff;--surface-muted:#f1f5f9;--text:#0f172a;--text-secondary:#64748b;--text-muted:#94a3b8;--border:#eef2f6;--border-strong:#e2e8f0;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--font-tamil:"Noto Sans Tamil", "Inter", sans-serif;--radius:12px;--shadow-card:0 1px 2px #0f172a0a;--shadow-raised:0 8px 28px #0f172a1a}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-sans);background:var(--page);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-feature-settings:"cv11", "ss01";font-size:16.5px}[lang=ta],.ta{font-family:var(--font-tamil)}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,select,textarea{font-family:inherit}.num{font-variant-numeric:tabular-nums}:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--accent,#4f46e5) 22%, transparent);border-radius:6px;outline:none}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{border:3px solid var(--page);background:#d9e0ea;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#c3ccda}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.app-layout{min-height:100vh;display:flex}.side{background:var(--surface);border-right:1px solid var(--border);z-index:60;flex-direction:column;flex-shrink:0;gap:2px;width:216px;height:100vh;padding:16px 10px;transition:transform .22s;display:flex;position:fixed;inset:0 auto 0 0;overflow-y:auto;transform:translate(-100%)}.side.open{transform:translate(0)}.scrim{z-index:55;opacity:0;pointer-events:none;background:#0f172a61;transition:opacity .2s;position:fixed;inset:0}.scrim.show{opacity:1;pointer-events:auto}.content-col{flex-direction:column;flex:1;min-width:0;display:flex}.main-pad{padding:14px}.page-wrap{width:100%;max-width:1180px;margin:0 auto}@media (width>=1024px){.side{z-index:10;position:sticky;top:0;transform:none}.scrim{display:none}.hamburger{display:none!important}.main-pad{padding:20px}}.grid{gap:12px;display:grid}.cols-4,.cols-3,.cols-2{grid-template-columns:minmax(0,1fr)}.split{grid-template-columns:minmax(0,1fr);gap:14px}@media (width>=560px){.cols-4,.cols-2,.cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=960px){.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.split{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}}.only-desktop{display:none}.only-mobile{display:flex}@media (width>=1024px){.only-desktop{display:flex}.only-mobile{display:none}}.dtable{border-collapse:collapse;width:100%;font-size:15.5px}.dtable th{text-align:left;letter-spacing:.02em;color:var(--text-muted);text-transform:uppercase;border-bottom:1px solid var(--border);padding:9px 12px;font-size:13px;font-weight:600}.dtable td{border-bottom:1px solid var(--border);color:var(--text);padding:13px 12px;font-size:14px}.dtable tr:last-child td{border-bottom:none}.dtable tbody tr{transition:background .12s}.dtable tbody tr:hover{background:var(--surface-muted)}.rec-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:10px;padding:12px 14px}.rec-row{justify-content:space-between;gap:10px;padding:6px 0;font-size:15px;display:flex}.rec-row .k{color:var(--text-secondary)}.rec-row .v{color:var(--text);text-align:right;font-weight:500}.login-grid{grid-template-columns:1fr;min-height:100vh;display:grid}.login-brand,.login-form{padding:32px 26px}.login-h1{font-size:30px}@media (width>=900px){.login-grid{grid-template-columns:1fr 1fr}.login-brand,.login-form{padding:48px 56px}.login-h1{font-size:40px}}.modal-overlay{z-index:100;background:#0f172a73;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-panel{background:var(--surface);width:100%;max-width:460px;max-height:90vh;box-shadow:var(--shadow-raised);border-radius:16px;overflow-y:auto}.modal-head{border-bottom:1px solid var(--border);background:var(--surface);align-items:center;gap:10px;padding:16px 18px;display:flex;position:sticky;top:0}.modal-body{padding:16px 18px}.modal-foot{border-top:1px solid var(--border);background:var(--surface);justify-content:flex-end;gap:10px;padding:14px 18px;display:flex;position:sticky;bottom:0}.f-field{margin-bottom:12px}.f-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.f-label{color:var(--text-secondary);margin-bottom:5px;font-size:14px;font-weight:600;display:block}.f-input,.f-select,.f-textarea{border:1px solid var(--border-strong);background:var(--surface);width:100%;color:var(--text);border-radius:9px;outline:none;padding:12px 14px;font-size:15.5px;transition:border-color .12s,box-shadow .12s}.f-input:focus,.f-select:focus,.f-textarea:focus{border-color:var(--accent,#4f46e5);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent,#4f46e5) 16%, transparent)}.f-textarea{resize:vertical;min-height:76px}.f-err{color:#9f1239;margin-top:8px;font-size:12px}.btn{border-radius:10px;padding:11px 17px;font-size:14.5px;font-weight:600}.btn-ghost{background:var(--surface);color:var(--text-secondary);border:1px solid var(--border-strong)}.btn-primary{color:#fff}.btn-danger{color:#fff;background:#e11d48}.row-act{gap:4px;display:inline-flex}.row-act button{color:var(--text-muted);border-radius:7px;padding:6px;display:flex}.row-act button:hover{background:var(--surface-muted);color:var(--text)}.hero-grad{background:linear-gradient(135deg,#eef0ff 0%,#f3edfe 55%,#e4f7fb 100%);border:1px solid #dad9fb}.brand-grad{background:linear-gradient(150deg,#4f46e5 0%,#6d28d9 55%,#7c3aed 100%)}.lift{transition:transform .16s,box-shadow .16s}.lift:hover{transform:translateY(-2px);box-shadow:0 10px 28px #0f172a1a}.kpi-xl{border-radius:16px}.kpi-xl .kpi-num{letter-spacing:-.5px;font-size:34px;font-weight:700;line-height:1.05}.quick-btn{border:1px solid var(--border);background:var(--surface);border-radius:13px;align-items:center;gap:10px;width:100%;padding:13px 15px;font-size:14px;font-weight:600;transition:transform .14s,box-shadow .14s;display:flex}.quick-btn:hover{transform:translateY(-2px);box-shadow:0 8px 22px #0f172a14}.chip-icon{border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.animate-in{animation:.32s both fadeUp}.cal-grid{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.cal-wd{text-align:center;color:var(--text-muted);padding:5px 0;font-size:13.5px;font-weight:600}.cal-cell{border:1px solid var(--border);cursor:pointer;background:var(--surface);border-radius:11px;flex-direction:column;gap:4px;min-height:60px;padding:6px 7px;transition:background .12s,border-color .12s,transform .1s;display:flex}.cal-cell:hover{background:var(--surface-muted)}.cal-cell.sel{border-color:var(--accent,#4f46e5);background:color-mix(in srgb, var(--accent,#4f46e5) 8%, #fff)}.cal-cell.free{background:#f3fbf5;border-color:#d6f0de}.cal-cell.empty{cursor:default;background:0 0;border:none}.cal-num{color:var(--text);font-size:15px;font-weight:600;line-height:1}.cal-num.today{color:#fff;background:#4f46e5;border-radius:999px;justify-content:center;align-items:center;width:24px;height:24px;font-size:12.5px;display:flex}.cal-dots{flex-wrap:wrap;gap:3px;margin-top:auto;display:flex}.cal-dot{border-radius:999px;width:8px;height:8px}.cal-legend{flex-wrap:wrap;gap:12px;margin-top:12px;display:flex}.cal-legend span{color:var(--text-secondary);align-items:center;gap:6px;font-size:13.5px;display:flex}.tile{color:#fff;border-radius:16px;flex-direction:column;gap:4px;padding:16px 18px;transition:transform .16s,box-shadow .16s;display:flex;position:relative;overflow:hidden}.tile:hover{transform:translateY(-3px);box-shadow:0 12px 30px #0f172a24}.tile .t-label{opacity:.92;font-size:14px;font-weight:500}.tile .t-value{letter-spacing:-.6px;font-size:36px;font-weight:700;line-height:1.05}.tile .t-note{opacity:.9;font-size:13px;font-weight:500}.tile .t-icon{background:#ffffff38;border-radius:11px;justify-content:center;align-items:center;width:38px;height:38px;display:flex;position:absolute;top:12px;right:12px}
