:root{--navy: #1a1f3c;--blue: #3b4ad0;--bg: #f4f7fe;--card: #ffffff;--muted: #6b7280;--success: #0f9d58;--warn: #f59e0b;--danger: #dc2626;font-family:Inter,system-ui,-apple-system,sans-serif;color:var(--navy);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg)}a{color:inherit;text-decoration:none}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{background:var(--navy);color:#fff;padding:0 24px;height:56px;display:flex;align-items:center;justify-content:space-between}.topbar nav{display:flex;gap:16px}.topbar a{opacity:.85;font-size:14px}.topbar a.active,.topbar a:hover{opacity:1;color:#cbd5ff}.content{padding:24px;max-width:1200px;width:100%;margin:0 auto}.card{background:var(--card);border-radius:12px;padding:20px;box-shadow:0 1px 3px #1a1f3c14}.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.stat-label{color:var(--muted);font-size:13px}.stat-value{font-size:24px;font-weight:700;margin-top:4px}.btn{background:var(--blue);color:#fff;border:none;border-radius:8px;padding:10px 16px;cursor:pointer;font-weight:600}.btn.secondary{background:#e5e7eb;color:var(--navy)}.btn:disabled{opacity:.6;cursor:not-allowed}input,select,textarea{width:100%;border:1px solid #d1d5db;border-radius:8px;padding:10px 12px;font:inherit}label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}.field{margin-bottom:14px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid #e5e7eb;font-size:14px}.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600}.pill.open{background:#fef3c7;color:#92400e}.pill.paid{background:#dcfce7;color:#166534}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,var(--navy),#2b3270)}.login-card{width:min(420px,92vw)}.error{color:var(--danger);font-size:14px;margin-top:8px}.progress-bar-host{position:fixed;top:56px;left:0;right:0;z-index:200;pointer-events:none}.progress-bar-track{height:3px;background:#3b4ad026;overflow:hidden}.progress-bar-fill{height:100%;width:35%;background:linear-gradient(90deg,var(--blue),#6b7cff);animation:progress-indeterminate 1.2s ease-in-out infinite}.progress-bar-label{margin:0;padding:8px 24px;font-size:13px;color:var(--navy);background:#fffffff2;border-bottom:1px solid #e5e7eb;box-shadow:0 2px 8px #1a1f3c0f}@keyframes progress-indeterminate{0%{transform:translate(-100%)}to{transform:translate(320%)}}.toast{position:fixed;bottom:24px;right:24px;z-index:300;display:flex;align-items:flex-start;gap:12px;max-width:min(420px,calc(100vw - 48px));padding:14px 16px;border-radius:10px;box-shadow:0 8px 24px #1a1f3c2e;animation:toast-in .25s ease-out}.toast-success{background:#ecfdf3;border:1px solid #86efac;color:#14532d}.toast-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.toast-message{flex:1;font-size:14px;line-height:1.45}.toast-dismiss{flex-shrink:0;border:none;background:transparent;color:inherit;opacity:.65;font-size:20px;line-height:1;padding:0;cursor:pointer}.toast-dismiss:hover{opacity:1}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.reports-page{position:relative}.success{color:var(--success);font-size:14px;margin-top:8px}.actions{display:flex;gap:8px;flex-wrap:wrap}.page-title{margin:0;font-size:22px}.page-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:16px}.toolbar-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.page-toolbar select{margin-left:4px;padding:4px 8px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;font:inherit;color:var(--navy)}.payment-meta{font-size:13px;line-height:1.5;max-width:280px}.payment-note{margin-top:4px;color:var(--navy)}.muted{color:var(--muted);font-size:13px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1a1f3c73;display:grid;place-items:center;padding:24px;z-index:100}.modal{width:min(480px,100%);max-height:90vh;overflow:auto}.audit-detail-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.audit-json{margin:8px 0 0;padding:12px;background:#f8fafc;border:1px solid #e5e7eb;border-radius:8px;font-size:12px;line-height:1.45;overflow:auto;max-height:280px;white-space:pre-wrap;word-break:break-word}
