:root{--ink: #0f172a;--body: #1e293b;--muted: #64748b;--faint: #94a3b8;--line: #e2e8f0;--bg: #f8fafc;--card: #ffffff;--accent: #0f172a;--success: #15803d;--success-bg: #f0fdf4;--warning: #b45309;--warning-bg: #fffbeb;--radius: 12px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--body);line-height:1.55;-webkit-font-smoothing:antialiased}.shell{max-width:720px;margin:0 auto;padding:24px 20px 64px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:8px 0 24px}.topbar img{height:40px;width:auto}.topbar button{background:none;border:1px solid var(--line);border-radius:8px;padding:7px 14px;font-size:13px;color:var(--muted);cursor:pointer}.topbar button:hover{color:var(--ink);border-color:var(--faint)}h1{font-size:24px;color:var(--ink);margin-bottom:4px}.subtitle{color:var(--muted);font-size:14px;margin-bottom:28px}h2{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:28px 0 12px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:14px}.card-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.card-title{font-weight:650;color:var(--ink);font-size:16px}.card-sub{color:var(--muted);font-size:13px;margin-top:2px}.amount{font-weight:650;color:var(--ink);white-space:nowrap}.badge{display:inline-block;font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px}.badge.paid{color:var(--success);background:var(--success-bg)}.badge.due{color:var(--muted);background:#f1f5f9}.badge.late{color:var(--warning);background:var(--warning-bg)}.invoices{margin-top:14px;border-top:1px solid var(--line)}.invoice-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);font-size:14px}.invoice-row:last-child{border-bottom:none}.invoice-period{color:var(--ink);font-weight:500;min-width:0}.invoice-meta{color:var(--faint);font-size:12.5px}.invoice-right{display:flex;align-items:center;gap:12px}a.quittance{color:var(--accent);font-size:13px;font-weight:600;text-decoration:none;border:1px solid var(--line);border-radius:8px;padding:5px 10px;white-space:nowrap}a.quittance:hover{border-color:var(--faint)}.login{max-width:400px;margin:9vh auto 0;text-align:center;padding:0 20px}.login img{height:56px;margin-bottom:20px}.login h1{font-size:21px;margin-bottom:6px}.login p{color:var(--muted);font-size:14px;margin-bottom:24px}.login form{display:flex;flex-direction:column;gap:10px}.login input{padding:12px 14px;border:1px solid var(--line);border-radius:10px;font-size:15px;background:var(--card);color:var(--ink)}.login input:focus{outline:2px solid var(--ink);outline-offset:1px;border-color:transparent}.login button{padding:12px 14px;border:none;border-radius:10px;cursor:pointer;background:var(--accent);color:#fff;font-size:15px;font-weight:600}.login button:disabled{opacity:.6;cursor:default}.notice{margin-top:16px;padding:12px 14px;border-radius:10px;font-size:14px;background:var(--success-bg);color:var(--success);text-align:left}.notice.error{background:#fef2f2;color:#b91c1c}.empty{color:var(--muted);font-size:14px;padding:8px 0}.loading{color:var(--muted);font-size:14px;text-align:center;padding:48px 0}.foot{margin-top:40px;text-align:center;color:var(--faint);font-size:12px}.foot a{color:var(--faint)}
