@import "https://fonts.googleapis.com/css2?family=Figtree:wght@300;400;500;600;700&display=swap";:root{--font:"Figtree", system-ui, sans-serif;--brand:#4f46e5;--brand-hover:#4338ca;--brand-navy:#1a1852;--sidebar-bg:#0f0d26;--sidebar-border:#241f4e;--sidebar-text:#9a97c6;--sidebar-active:#fff;--sidebar-hover:#1c1842;--sidebar-accent:#7d78f0;--bg:#f5f5fa;--surface:#fff;--surface-2:#f7f7fc;--border:#e6e6ef;--border-strong:#cdccdd;--text:#171633;--text-2:#4b4a63;--text-3:#9998ac;--success:#10b981;--success-bg:#ecfdf5;--warning:#d97706;--warning-bg:#fffbeb;--danger:#e54b4a;--danger-bg:#fef2f2;--info:#4f46e5;--info-bg:#eef0ff;--pending:#6b6a80;--pending-bg:#f2f2f6;--accent:#4f46e5;--accent-hover:#4338ca;--accent-light:#eaeafe;--accent-text:#3730a3;--radius:9px;--radius-sm:6px;--shadow-sm:0 1px 2px #1a185214, 0 1px 1px #1a18520a;--shadow:0 8px 24px #1a18521a, 0 2px 6px #1a18520f}*,:before,:after{box-sizing:border-box}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.5}#root{flex-direction:column;width:100%;min-height:100svh;display:flex}.shell{min-height:100svh;display:flex}.sidebar{background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);flex-direction:column;flex-shrink:0;width:220px;height:100svh;display:flex;position:sticky;top:0}.sidebar-brand{letter-spacing:-.3px;color:#fff;border-bottom:1px solid var(--sidebar-border);padding:20px 20px 16px;font-size:15px;font-weight:700}.sidebar-brand span{color:var(--sidebar-accent)}.sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:12px 10px;display:flex}.sidebar-link{border-radius:var(--radius-sm);color:var(--sidebar-text);align-items:center;gap:10px;padding:8px 12px;font-size:13.5px;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.sidebar-link:hover{background:var(--sidebar-hover);color:#e5e7eb}.sidebar-link.active{background:var(--sidebar-hover);color:var(--sidebar-active)}.sidebar-link.active:before{content:"";background:var(--sidebar-accent);border-radius:2px;width:3px;height:14px;margin-left:-4px;margin-right:-2px;display:block}.sidebar-section{letter-spacing:.8px;text-transform:uppercase;color:#3d4558;padding:16px 20px 6px;font-size:10px;font-weight:600}.sidebar-footer{border-top:1px solid var(--sidebar-border);padding:16px}.sidebar-user{color:var(--sidebar-text);text-overflow:ellipsis;white-space:nowrap;margin-bottom:8px;font-size:12px;overflow:hidden}.sidebar-logout{border-radius:var(--radius-sm);width:100%;color:var(--sidebar-text);font-family:var(--font);cursor:pointer;background:0 0;border:1px solid #2a3045;padding:6px 10px;font-size:12px;transition:background .15s,color .15s}.sidebar-logout:hover{background:var(--sidebar-hover);color:#e5e7eb}.shell-main{flex-direction:column;flex:1;min-width:0;display:flex}.page{max-width:1200px;padding:28px 32px}.page-header{margin-bottom:24px}.page-title{letter-spacing:-.3px;color:var(--text);margin:0 0 4px;font-size:20px;font-weight:600}.page-subtitle{color:var(--text-2);margin:0;font-size:13px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-header{border-bottom:1px solid var(--border);color:var(--text);padding:16px 20px;font-size:13px;font-weight:600}.card-body{padding:20px}.stats-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-bottom:24px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:16px}.stat-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);margin-bottom:6px;font-size:11px;font-weight:600}.stat-value{letter-spacing:-.5px;color:var(--text);font-size:26px;font-weight:700;line-height:1}.stat-value.good{color:var(--success)}.stat-value.warn{color:var(--warning)}.stat-value.bad{color:var(--danger)}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);-webkit-overflow-scrolling:touch;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}thead th{text-align:left;letter-spacing:.4px;text-transform:uppercase;color:var(--text-3);background:var(--surface-2);border-bottom:1px solid var(--border-strong);overflow-wrap:break-word;padding:10px 14px;font-size:11px;font-weight:600}tbody tr{border-bottom:1px solid var(--border);transition:background .12s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:var(--surface-2)}th:first-child,td:first-child{padding-left:18px}th:last-child,td:last-child{padding-right:18px}td{color:var(--text);vertical-align:middle;overflow-wrap:break-word;word-break:break-word;padding:10px 14px}.ops-table td{padding:15px 14px}.ops-table tbody tr{border-bottom:1px solid var(--border-strong)}.ops-table tbody tr:hover{background:var(--accent-light)}.badge{letter-spacing:.2px;border-radius:99px;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-ACCEPTED{background:var(--success-bg);color:var(--success)}.badge-PENDING{background:var(--pending-bg);color:var(--pending)}.badge-SUBMITTED{background:var(--info-bg);color:var(--info)}.badge-REJECTED{background:var(--warning-bg);color:var(--warning)}.badge-DEAD_LETTER{background:var(--danger-bg);color:var(--danger)}.btn{border-radius:var(--radius-sm);font-family:var(--font);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:8px 15px;font-size:13.5px;font-weight:600;line-height:1.2;text-decoration:none;transition:background .15s,border-color .15s,box-shadow .15s,color .15s,opacity .15s;display:inline-flex}.btn:focus-visible{box-shadow:0 0 0 3px var(--accent-light);outline:none}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 1px 2px #4f46e540}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-ghost{background:var(--surface-2);color:var(--text-2);border-color:var(--border-strong)}.btn-ghost:hover:not(:disabled){background:var(--accent-light);color:var(--accent-text);border-color:var(--accent)}.btn-danger{background:var(--danger);color:#fff;box-shadow:0 1px 2px #e54b4a40}.btn-danger:hover:not(:disabled){filter:brightness(.94)}.btn-link{color:var(--accent);background:0 0;border-color:#0000;padding-left:8px;padding-right:8px}.btn-link:hover:not(:disabled){background:var(--accent-light)}.form-field{flex-direction:column;gap:5px;display:flex}.form-label{color:var(--text-2);font-size:12.5px;font-weight:500}.form-input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-family:var(--font);color:var(--text);background:var(--surface);outline:none;padding:8px 11px;font-size:14px;transition:border-color .15s,box-shadow .15s}.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.form-error{color:var(--danger);align-items:center;gap:4px;font-size:12.5px;display:flex}.login-page{align-items:stretch;min-height:100svh;display:flex}.login-brand{background:var(--sidebar-bg);flex-direction:column;flex-shrink:0;justify-content:center;width:420px;padding:60px 56px;display:flex}.login-brand-name{letter-spacing:-.6px;color:#fff;margin-bottom:12px;font-size:28px;font-weight:700}.login-brand-name span{color:var(--sidebar-accent)}.login-brand-tagline{color:#8892a4;max-width:280px;font-size:14px;line-height:1.6}.login-brand-dots{gap:6px;margin-top:48px;display:flex}.login-brand-dot{background:#2a3045;border-radius:50%;width:6px;height:6px}.login-brand-dot:first-child{background:var(--sidebar-accent)}.login-form-side{background:var(--bg);flex:1;justify-content:center;align-items:center;padding:40px;display:flex}.login-form-box{width:100%;max-width:360px}.login-form-title{letter-spacing:-.3px;color:var(--text);margin:0 0 6px;font-size:20px;font-weight:600}.login-form-sub{color:var(--text-2);margin:0 0 28px;font-size:13px}.login-form{flex-direction:column;gap:16px;display:flex}.error-banner{background:var(--danger-bg);border-radius:var(--radius-sm);color:var(--danger);border:1px solid #fecaca;padding:10px 14px;font-size:13px}.success-banner{border-radius:var(--radius-sm);color:#047857;background:#ecfdf5;border:1px solid #a7f3d0;padding:10px 14px;font-size:13px;line-height:1.5}.login-link-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;align-self:flex-start;margin-top:14px;padding:0;font-size:13px;font-weight:500}.login-link-btn:hover{text-decoration:underline}.text-muted{color:var(--text-3);font-size:13px}.settings-item{transition:background .12s}.settings-item:hover{background:var(--surface-2)}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.form-grid.cols-3{grid-template-columns:2fr 1fr 1fr}@media (width<=640px){.form-grid,.form-grid.cols-3{grid-template-columns:1fr}}.cal-frame{border:1px solid var(--border-strong);box-shadow:var(--shadow-sm);background:var(--border-strong);border-radius:12px;overflow:hidden}.cal-weekhead{background:var(--border-strong);border-bottom:1px solid var(--border-strong);grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.cal-weekhead>div{background:var(--surface-2);text-align:center;letter-spacing:.5px;text-transform:uppercase;color:var(--text-3);padding:9px 0;font-size:11px;font-weight:700}.cal-grid{background:var(--border-strong);grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.cal-day{background:var(--surface);text-align:left;cursor:pointer;min-height:104px;font:inherit;border:none;flex-direction:column;gap:6px;padding:8px 9px;transition:background .12s;display:flex}.cal-day:not(.is-sel):hover{background:var(--surface-2)}.cal-day.is-sel{background:var(--accent-light,#ede9fe);box-shadow:inset 0 0 0 2px var(--accent)}.cal-pad{background:var(--surface-2);min-height:104px}@media (width<=640px){.cal-day,.cal-pad{min-height:66px}.cal-day{padding:5px 6px}}.section-title{color:var(--text);letter-spacing:-.1px;margin:0 0 10px;font-size:13px;font-weight:600}.empty-state{text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--surface-2);color:var(--text-3);padding:44px 24px}.empty-state-icon{background:var(--accent-light);width:40px;height:40px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 12px;font-size:18px;display:flex}.empty-state-title{color:var(--text-2);margin-bottom:4px;font-size:15px;font-weight:600}.empty-state-hint{color:var(--text-3);font-size:13px}html{scroll-behavior:smooth}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:content-box;border:2px solid #0000;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--text-3);background-clip:content-box}.app-shell{background:var(--surface-2);flex-direction:column;height:100dvh;display:flex;overflow:hidden}.app-topbar{background:var(--sidebar-bg);border-bottom:1px solid var(--sidebar-border);flex-shrink:0;justify-content:space-between;align-items:center;height:52px;padding:0 20px;display:flex}.app-body{flex:1;min-height:0;display:flex}.app-rail{background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);flex-shrink:0;width:176px;padding:14px 10px;overflow-y:auto}.app-nav{flex-direction:column;gap:2px;display:flex}.app-main{background:var(--surface-2);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scroll-behavior:smooth;flex:1;min-width:0;padding:18px 20px 28px;overflow:auto}.app-panel{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:12px;min-height:100%}@media (width<=820px){.app-body{flex-direction:column}.app-rail{border-right:none;border-bottom:1px solid var(--sidebar-border);width:100%;padding:8px 10px;overflow:auto hidden}.app-nav{flex-direction:row;gap:4px}.app-nav a,.app-nav>div{white-space:nowrap}.app-main{padding:12px 12px 22px}.app-panel{border-radius:8px}.page{padding:16px}.stats-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}@media (width<=560px){.page{padding:12px}.app-topbar{padding:0 12px}.card-body{padding:14px}}.verified-yes{color:var(--success);font-weight:600}.verified-no{color:var(--text-3)}@media (width<=768px){.login-brand,.sidebar{display:none}.page{padding:20px 16px}}
