.admin{--c-deep:#1b3a52;--c-water:#2c6e8f;--c-mist:#dce7ec;--c-reed:#6fa98f;--c-sand:#f1ece2;--c-paper:#fbfaf6;--c-ink:#1a2530;--c-muted:#5a6a75;--c-line:#e0dcd2;--c-red:#b0413e;--c-amber:#c2871f;--c-green:#2d7a4f;font-family:Inter,Helvetica Neue,Helvetica,Arial,system-ui,sans-serif;color:var(--c-ink);background:var(--c-paper);min-height:100vh}.admin h1,.admin h2,.admin h3{font-family:Fraunces,Georgia,serif;color:var(--c-deep);margin:0 0 .5em}.admin h1{font-size:1.8rem}.admin h2{font-size:1.35rem}.admin h3{font-size:1.1rem}.admin a{color:var(--c-water);text-decoration:none}.admin a:hover{color:var(--c-deep)}.admin-shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}.admin-side{background:#0f2434;color:hsla(0,0%,100%,.85);padding:1.5rem 1rem;display:flex;flex-direction:column}.admin-side h2{color:#fff;font-size:1rem;letter-spacing:.1em;text-transform:uppercase;margin:0 0 1.4rem}.admin-side nav{display:flex;flex-direction:column;gap:.2rem;flex:1 1}.admin-side nav a{color:hsla(0,0%,100%,.78);padding:.6rem .8rem;border-radius:8px;font-size:.95rem;transition:background .15s ease,color .15s ease}.admin-side nav a:hover{background:hsla(0,0%,100%,.08);color:#fff}.admin-side nav a.active{background:var(--c-water);color:#fff;font-weight:600}.admin-side .logout{margin-top:auto;background:transparent;border:1px solid hsla(0,0%,100%,.18);color:hsla(0,0%,100%,.85);padding:.5rem .8rem;border-radius:8px;cursor:pointer;font:inherit;text-align:left}.admin-side .logout:hover{background:hsla(0,0%,100%,.08);color:#fff}.admin-main{padding:2rem clamp(1rem,3vw,2.5rem);overflow-x:auto}@media (max-width:800px){.admin-shell{grid-template-columns:1fr}.admin-side{flex-direction:row;padding:.8rem 1rem;align-items:center;overflow-x:auto}.admin-side h2{display:none}.admin-side nav{flex-direction:row;gap:.4rem}.admin-side .logout{margin:0 0 0 auto}}.admin .card{background:#fff;border:1px solid var(--c-line);border-radius:12px;padding:1.4rem;box-shadow:0 1px 2px rgba(26,37,48,.05);margin-bottom:1.5rem}.admin .stat-grid{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:1.5rem}.admin .stat{background:#fff;border:1px solid var(--c-line);border-radius:12px;padding:1.1rem 1.2rem}.admin .stat .label{font-size:.76rem;letter-spacing:.12em;text-transform:uppercase;color:var(--c-muted);margin-bottom:.4rem}.admin .stat .value{font-family:Fraunces,Georgia,serif;font-size:1.8rem;color:var(--c-deep)}.admin table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--c-line);border-radius:12px;overflow:hidden;font-size:.92rem}.admin td,.admin th{text-align:left;padding:.6rem .75rem;border-bottom:1px solid var(--c-line)}.admin th{background:var(--c-mist);color:var(--c-deep);font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;font-weight:600}.admin tr:last-child td{border-bottom:none}.admin tr:hover td{background:#fafaf6}.admin .pay-grid{font-size:.88rem}.admin .pay-grid td,.admin .pay-grid th{padding:.45rem .6rem}.admin .pay-grid th{font-size:.7rem;letter-spacing:.06em}.admin .pay-grid td.cell{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;text-align:center;min-width:90px;padding:.35rem .5rem;border-left:1px solid var(--c-line)}.admin .pay-grid td.cell.paid{background:#e9f4ee;color:#1f4f36}.admin .pay-grid td.cell.sent{background:#fff3d9;color:#7a5a11}.admin .pay-grid td.cell.texted{background:#eeeaf6;color:#4a3f70}.admin .pay-grid td.cell.na{background:#f1ece2;color:var(--c-muted)}.admin .pay-grid td.cell.unpaid{background:#fcfbf7;color:var(--c-muted)}.admin .pay-grid td.cell:hover{filter:brightness(.97)}.admin .pay-grid td.month-cell .amount{font-family:Fraunces,Georgia,serif;font-size:1rem;font-weight:500;line-height:1.1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.admin .pay-grid td.month-cell .status{font-size:.68rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin-top:.15rem;opacity:.8}.admin .pay-grid td.month-cell.unpaid .amount{color:var(--c-deep)}.admin .pay-grid td.month-cell.paid .amount{color:#1f4f36}.admin .pay-grid tbody tr:nth-child(odd) td:not(.cell){background:#fbfaf6}.admin .pay-grid td.month-cell .elec-override{display:grid;grid-gap:.2rem;gap:.2rem;text-align:left;padding:.1rem .15rem}.admin .pay-grid td.month-cell .elec-override label{font-size:.58rem;letter-spacing:.06em;text-transform:uppercase;color:var(--c-muted);margin:0;font-weight:600}.admin .pay-grid td.month-cell .elec-override-row{display:flex;align-items:center;gap:.15rem}.admin .pay-grid td.month-cell .elec-override-row span{color:var(--c-muted);font-size:.85rem}.admin .pay-grid td.month-cell .elec-override-row input{width:100%;padding:.15rem .25rem;font:inherit;font-size:.85rem;border:1px solid var(--c-water);border-radius:4px;background:#fff;text-align:right;box-sizing:border-box}.admin .pay-grid td.month-cell .elec-base-btn{font:inherit;font-size:.64rem;font-weight:600;letter-spacing:.03em;padding:.2rem .35rem;margin-top:.25rem;border:1px solid var(--c-line);border-radius:4px;background:#fff;color:var(--c-deep);cursor:pointer}.admin .pay-grid td.month-cell .elec-base-btn:hover{background:var(--c-mist);border-color:var(--c-water)}.admin .prior-edit-btn{font:inherit;background:transparent;border:1px dashed transparent;border-radius:4px;padding:.15rem .4rem;color:var(--c-muted);cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.admin .prior-edit-btn:hover{border-color:var(--c-line);background:#fff;color:var(--c-deep)}.admin .prior-edit-btn .pencil{opacity:0;font-size:.7rem;color:var(--c-water);transition:opacity .15s}.admin .prior-edit-btn:hover .pencil{opacity:1}.admin .pay-grid .elec-control{display:grid;grid-gap:.2rem;gap:.2rem;justify-items:end}.admin .pay-grid .elec-status{width:54px;padding:.08rem .25rem;border:1px solid var(--c-line);border-radius:4px;background:#fff;color:var(--c-muted);cursor:pointer;font:inherit;font-size:.64rem;line-height:1.2}.admin .pay-grid .elec-value{width:54px;padding:.12rem .3rem;border:1px dashed transparent;border-radius:4px;background:transparent;color:var(--c-deep);cursor:text;font:inherit;font-size:.78rem;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.admin .pay-grid .elec-value:hover{border-color:var(--c-line);background:#fff}.admin .overdue-flag{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-right:.35rem;border-radius:50%;background:var(--c-red);color:#fff;font-weight:700;font-size:.72rem;vertical-align:-3px;cursor:help}.admin .pay-grid .elec-status.paid{background:#e9f4ee;color:#1f4f36;border-color:#b6d6bf;font-weight:600}.admin .pay-grid .elec-status.sent{background:#fff3d9;color:#7a5a11}.admin .pay-grid .elec-status.texted{background:#eeeaf6;color:#4a3f70}.admin .pay-grid .elec-status.na{background:#f1ece2;color:var(--c-muted)}.admin .pay-grid td.holder{white-space:nowrap}.admin .pay-grid td.holder strong{color:var(--c-deep)}.admin .pay-grid td.holder .sub{font-size:.72rem;color:var(--c-muted);display:block}.admin .pill{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600;letter-spacing:.02em}.admin .pill.new{background:#e9f2ec;color:#1f4f36}.admin .pill.contacted{background:#fff3d9;color:#7a5a11}.admin .pill.approved{background:var(--c-water);color:#fff}.admin .pill.rejected{background:#f5dcdc;color:var(--c-red)}.admin .pill.archived{background:var(--c-mist);color:var(--c-deep)}.admin label{font-size:.82rem;font-weight:600;color:var(--c-deep);display:block;margin-bottom:.3rem}.admin input[type=date],.admin input[type=email],.admin input[type=number],.admin input[type=password],.admin input[type=text],.admin select,.admin textarea{font:inherit;color:var(--c-ink);background:#fff;border:1px solid var(--c-line);border-radius:8px;padding:.55rem .75rem;width:100%;box-sizing:border-box}.admin input:focus,.admin select:focus,.admin textarea:focus{outline:none;border-color:var(--c-water);box-shadow:0 0 0 3px rgba(44,110,143,.15)}.admin input[type=number]::-webkit-inner-spin-button,.admin input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.admin input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.admin .row{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:1fr 1fr;margin-bottom:1rem}@media (max-width:600px){.admin .row{grid-template-columns:1fr}}.admin .btn{display:inline-block;font:inherit;font-weight:600;padding:.55rem 1.2rem;border-radius:999px;border:1px solid transparent;cursor:pointer;background:var(--c-deep);color:#fff}.admin .btn:hover{background:var(--c-water)}.admin .btn.ghost{background:transparent;color:var(--c-deep);border-color:var(--c-deep)}.admin .btn.ghost:hover{background:var(--c-deep);color:#fff}.admin .btn.sm{padding:.35rem .8rem;font-size:.85rem}.admin .btn.danger{background:var(--c-red)}.admin .btn.danger:hover{background:#8a3331}.admin .pier-section{margin-bottom:2.5rem}.admin .pier-section h2{display:flex;align-items:baseline;gap:.8rem}.admin .pier-section h2 small{font-size:.8rem;font-weight:400;color:var(--c-muted)}.admin .toast{position:fixed;bottom:1.5rem;right:1.5rem;background:var(--c-deep);color:#fff;padding:.8rem 1.2rem;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.18);z-index:1000;font-size:.9rem}.admin .toast.error{background:var(--c-red)}.admin .toast.success{background:var(--c-green)}.admin .empty{text-align:center;color:var(--c-muted);padding:2rem}.admin .filters{display:flex;gap:.8rem;flex-wrap:wrap;margin-bottom:1.2rem;align-items:center}.admin .filters input,.admin .filters select{width:auto;min-width:140px}