:root{--primary: #0f4c81;--primary-dark: #0a3558;--accent: #1a8f5c;--bg: #f4f7fb;--card: #ffffff;--text: #1a2332;--muted: #5c6b7a;--border: #d8e0ea;--danger: #c0392b;--radius: 12px;font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);min-height:100dvh}a{color:var(--primary)}.app-shell{max-width:480px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}.topbar{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;padding:1rem 1.25rem;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}.topbar h1{margin:0;font-size:1.15rem;font-weight:700}.topbar small{opacity:.85;display:block;font-size:.75rem}.brand{display:flex;align-items:center;gap:.7rem;min-width:0}.brand-logo{width:92px;height:42px;object-fit:contain;object-position:left center;flex:0 0 auto}.brand strong{display:block;font-size:1.05rem;line-height:1.2}.brand small{display:block;margin-top:.15rem;font-size:.72rem}.topbar .brand-logo{width:74px;height:38px;padding:.25rem;border-radius:6px;background:#fff}.content{padding:1rem 1.25rem 2rem;flex:1}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;margin-bottom:1rem;box-shadow:0 2px 8px #0f4c810f}.card h2{margin:0 0 .75rem;font-size:1rem}label{display:block;font-size:.85rem;font-weight:600;margin:.75rem 0 .35rem;color:var(--muted)}input,select,textarea{width:100%;padding:.65rem .75rem;border:1px solid var(--border);border-radius:8px;font-size:1rem;background:#fff}textarea{min-height:80px;resize:vertical}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:none;border-radius:8px;padding:.7rem 1rem;font-size:.95rem;font-weight:600;cursor:pointer;text-decoration:none}.btn-primary{background:var(--primary);color:#fff;width:100%;margin-top:1rem}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--primary);border:1px solid var(--border)}.btn-danger{background:var(--danger);color:#fff}.error{color:var(--danger);font-size:.9rem;margin:.5rem 0}.success{color:var(--accent);font-size:.9rem;margin:.5rem 0}.muted{color:var(--muted);font-size:.85rem}.badge{display:inline-block;padding:.2rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase}.badge-submitted{background:#fff3cd;color:#856404}.badge-approved{background:#d4edda;color:#155724}.badge-rejected{background:#f8d7da;color:#721c24}.tabs{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.tabs button{flex:1;min-width:100px;padding:.5rem;border:1px solid var(--border);background:#fff;border-radius:8px;cursor:pointer;font-weight:600}.tabs button.active{background:var(--primary);color:#fff;border-color:var(--primary)}.expense-item{border-bottom:1px solid var(--border);padding:.75rem 0}.expense-item:last-child{border-bottom:none}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.install-banner{background:#e8f4fd;border:1px solid #b8daf5;border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem;font-size:.9rem}.login-shell{background:radial-gradient(circle at top right,rgba(96,194,160,.25),transparent 36%),linear-gradient(160deg,#eef5ff,#f7fbfa 62%,#edf8f4)}.login-brand{padding:2rem 1.25rem .75rem}.login-brand .brand{justify-content:center}.login-brand .brand-logo{width:150px;height:60px}.login-brand .brand strong{color:var(--primary-dark);font-size:1.25rem}.login-brand .brand small{color:var(--muted)}.login-content{display:flex;align-items:flex-start;justify-content:center}.login-card{width:100%;padding:1.35rem;text-align:center}.login-card form,.login-card label{text-align:left}.login-role-icon{display:grid;place-items:center;width:48px;height:48px;margin:0 auto .75rem;border-radius:50%;background:#e5f3ee;color:var(--primary);font-size:.9rem;font-weight:800}.login-card h2{font-size:1.2rem}.login-switch{display:block;margin-top:1.1rem;font-size:.9rem;font-weight:600;text-align:center;text-decoration:none}.admin-login-link{padding-top:1rem;border-top:1px solid var(--border)}@media (min-width: 768px){.app-shell.admin{max-width:960px}}
