:root{--bg:#0b0e14;--panel:#151a23;--panel-2:#1c232e;--border:#2a3340;--text:#e6eaf0;--muted:#8b97a8;--accent:#5b8cff;--good:#3ecf8e;--warn:#ffb84d;--bad:#ff6b6b}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}a{color:var(--accent)}.shell{max-width:1100px;margin:0 auto;padding:28px 24px 60px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.topbar h1{font-size:20px;margin:0}.topbar .who{color:var(--muted);font-size:13px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:16px;gap:16px}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:18px}.card .label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.card .value{font-size:30px;font-weight:650;margin-top:8px}.card .sub{color:var(--muted);font-size:13px;margin-top:6px}.section-title{font-size:14px;color:var(--muted);margin:28px 0 12px}.month-section{margin-top:36px;padding-top:8px;border-top:1px solid var(--border)}.month-head{font-size:18px;font-weight:650;margin:20px 0 14px}.team-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:18px 0 10px}.month-picker{display:flex;align-items:center;gap:10px;margin:28px 0 4px}.month-picker label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.month-picker select{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:8px 12px;color:var(--text);font-size:14px;cursor:pointer}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);font-size:14px}th{color:var(--muted);font-weight:500;font-size:12px;text-transform:uppercase}.btn{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:10px 16px;font-size:14px;cursor:pointer}.btn.ghost{background:transparent;border:1px solid var(--border);color:var(--text)}.btn.btn-sm{padding:5px 10px;font-size:12px}.row-editor{display:flex;flex-wrap:wrap;gap:28px;padding:6px 2px}.editor-col{min-width:260px}.editor-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}.editor-line{display:flex;gap:8px;align-items:center}.editor-line input{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:8px 10px;color:var(--text);font-size:14px;min-width:180px}.candidates{display:flex;flex-direction:column;gap:6px;margin-top:10px}.candidate{display:flex;justify-content:space-between;gap:16px;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:8px 10px;color:var(--text);font-size:13px;cursor:pointer;text-align:left}.candidate:hover{border-color:var(--accent)}.btn.btn-danger{color:var(--warn);border-color:var(--warn)}.btn.btn-danger:not(.ghost){background:var(--warn);color:#fff}.manual-editor{display:flex;flex-direction:column;gap:12px;padding:6px 2px}.manual-editor .editor-label{margin-bottom:0;min-width:90px}.add-payment{display:flex;flex-direction:column;gap:12px}.add-payment .editor-label{margin-bottom:0;min-width:90px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{width:360px;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:28px}.login-card h1{font-size:20px;margin:0 0 4px}.login-card p{color:var(--muted);font-size:13px;margin:0 0 20px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}.field input{width:100%;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:10px 12px;color:var(--text);font-size:14px}.err{color:#ff6b6b;font-size:13px;margin-bottom:12px}.center,.muted{color:var(--muted)}.center{text-align:center;padding:60px 0}.closer-card{margin-top:16px}.closer-card.team{border-color:var(--accent)}.closer-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}.closer-name{font-size:18px;font-weight:650}.closer-sub{color:var(--muted);font-size:13px}.count-row{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;margin-bottom:14px}.count-cell{padding:10px 12px;background:var(--panel-2);border-radius:10px}.count-cell .m-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.count-cell .m-value{font-size:22px;font-weight:700;margin:4px 0 2px}.count-cell .m-sub{font-size:11px}.cancel-section{margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}.cancel-title{font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:8px;display:flex;align-items:center;gap:8px}.cancel-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:12px;gap:12px}.chg{font-size:12px;font-weight:600}.chg.up{color:var(--good)}.chg.down{color:var(--bad)}.chg.flat,.chg.na{color:var(--muted)}.chg.na{font-weight:400}.rate-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:14px;gap:14px}.rate{padding:12px 14px;background:var(--panel-2);border-radius:10px}.rate .rate-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.rate .rate-value{font-size:26px;font-weight:700;margin-top:6px}.rate .rate-sub{color:var(--muted);font-size:12px;margin-top:4px}.rate-value.green{color:var(--good)}.rate-value.yellow{color:var(--warn)}.rate-value.red{color:var(--bad)}.rate-value.na{color:var(--muted)}.money-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:12px;gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}.money-row .m-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.money-row .m-value{font-size:18px;font-weight:600;margin-top:4px}.op-section{margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}.op-title{font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:8px;display:flex;align-items:center;gap:8px}.op-sub{font-weight:400;text-transform:none;letter-spacing:0}.op-count{margin-left:auto;background:var(--panel-2);color:var(--text);border-radius:999px;padding:1px 9px;font-size:12px;font-weight:700}.op-count.bad{background:hsla(0,100%,71%,.18);color:var(--bad)}.op-empty{font-size:13px;padding:4px 0}.op-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.op-row{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--panel-2);border-radius:8px;font-size:14px}.op-row.warn{border-left:3px solid var(--bad)}.op-flag{flex:0 0 auto;width:18px;height:18px;border-radius:50%;background:var(--bad);color:#fff;font-weight:800;font-size:12px;display:inline-flex;align-items:center;justify-content:center}.op-name{font-weight:600}.op-name a{color:var(--accent);text-decoration:none}.op-name a:hover{text-decoration:underline}.op-when{color:var(--muted);font-size:13px}.op-link{margin-left:auto;color:var(--accent);font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap}.op-link:hover{text-decoration:underline}.pay-grp>td{background:var(--panel-2);border-bottom:1px solid transparent;border-top:none}.pay-grp>td:first-child{border-left:1px solid var(--border)}.pay-grp>td:last-child{border-right:1px solid var(--border)}.pay-grp-first>td{border-top:1px solid var(--border)}.pay-grp-last>td{border-bottom:1px solid var(--border)}.pay-type{display:inline-block;border-radius:6px;padding:1px 8px;font-size:12px;font-weight:600}.pay-type-new{color:var(--good);background:rgba(62,207,142,.12)}.pay-type-recurring{color:var(--accent);background:rgba(91,140,255,.14)}