*{box-sizing:border-box;margin:0;padding:0}:root{--smsa-navy:#0f172a;--smsa-navy-mid:#1e293b;--smsa-red:#c1272d;--smsa-gray:#58595b;--smsa-surface:#f8fafc;--smsa-card:#ffffff;--smsa-border:#e2e8f0;--smsa-muted:#64748b}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:var(--smsa-surface);line-height:1.5;min-height:100vh}a,body{color:var(--smsa-navy)}a{text-decoration:none}a:hover{text-decoration:underline}.portal{min-height:100vh;display:flex;flex-direction:column}.portal-header{background:linear-gradient(135deg,var(--smsa-navy) 0,var(--smsa-navy-mid) 100%);color:white;padding:20px 24px;border-bottom:3px solid var(--smsa-red)}.portal-header-inner{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.portal-eyebrow{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;opacity:.85}.portal-header h1{font-size:1.35rem;margin-top:4px;font-weight:700}.portal-subtitle{margin-top:4px;opacity:.9;font-size:.95rem}.portal-main-link{color:white;font-size:.85rem;padding:8px 12px;border:1px solid rgba(255,255,255,.35);border-radius:6px;white-space:nowrap}.portal-main-link:hover{background:rgba(255,255,255,.1);text-decoration:none}.portal-main{flex:1 1}.portal-footer{padding:16px 24px;text-align:center;font-size:.8rem;color:var(--smsa-muted);display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.dashboard{max-width:1200px;margin:0 auto;padding:24px}.header{background:var(--smsa-navy);color:white;padding:16px 24px}.header h1{font-size:1.25rem}.nav{display:flex;gap:12px;margin:16px 0;flex-wrap:wrap;align-items:center}.nav a,.nav button{padding:8px 14px;background:white;border:1px solid var(--smsa-border);border-radius:6px;cursor:pointer;font-size:.875rem;color:var(--smsa-navy)}.nav a.active,.nav button.active{background:var(--smsa-navy);color:white;border-color:var(--smsa-navy)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:16px;gap:16px;margin:24px 0}.card{background:var(--smsa-card);padding:20px;border-radius:8px;box-shadow:0 1px 3px rgba(15,23,42,.08);border:1px solid var(--smsa-border)}.card .value{font-size:2rem;font-weight:700;color:var(--smsa-navy)}.card .label{font-size:.85rem;color:var(--smsa-muted);margin-top:4px}table{width:100%;border-collapse:collapse;background:white;border-radius:8px;overflow:hidden;border:1px solid var(--smsa-border)}td,th{padding:12px 16px;text-align:left;border-bottom:1px solid var(--smsa-border)}th{background:var(--smsa-navy);color:white;font-weight:600;font-size:.875rem}.login-wrap{padding:32px 16px 48px}.login-box{max-width:420px;margin:0 auto;background:white;padding:32px;border-radius:10px;box-shadow:0 4px 24px rgba(15,23,42,.1);border:1px solid var(--smsa-border)}.login-box h2{font-size:1.25rem;margin-bottom:4px}.login-box label{display:block;font-size:.875rem;font-weight:600;margin-top:12px}.login-box input{width:100%;padding:10px 12px;margin-top:6px;border:1px solid var(--smsa-border);border-radius:6px;font-size:1rem}.login-box button{width:100%;padding:12px;margin-top:20px;background:var(--smsa-navy);color:white;border:none;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:600}.login-box button:disabled{opacity:.6;cursor:not-allowed}.login-note{margin-top:16px;font-size:.8rem;color:var(--smsa-muted);line-height:1.5}.panel{background:white;border:1px solid var(--smsa-border);border-radius:8px;padding:24px;margin-top:16px}.panel h3{margin-bottom:16px;font-size:1.1rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:16px;gap:16px}.form-grid label{display:block;font-size:.875rem;font-weight:600}.form-grid input,.form-grid select{width:100%;padding:10px;margin-top:6px;border:1px solid var(--smsa-border);border-radius:6px}.btn-primary{padding:10px 18px;background:var(--smsa-navy);color:white;border:none;border-radius:6px;cursor:pointer;font-weight:600;margin-top:16px}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.success{color:#2e7d32;margin-top:12px;font-size:.9rem}.error{color:var(--smsa-red);margin-top:8px;font-size:.9rem}.status-present{color:#2e7d32}.status-absent{color:#c62828}.status-late{color:#f57c00}.badge-admin{display:inline-block;padding:2px 8px;border-radius:4px;background:#fef3c7;color:#92400e;font-size:.75rem;font-weight:600}