:root{--bg: #e8eeec;--bg-2: #f3f7f5;--card: #fbfdfc;--ink: #16211e;--muted: #5d6b66;--line: #d3ddd8;--accent: #0f6b5c;--accent-2: #148574;--accent-fg: #f7fffc;--accent-soft: #e4f3ef;--danger: #b54538;--danger-soft: #f8e4e1;--ok: #1f7a4d;--ok-soft: #dcefe4;--warn: #8a5b12;--warn-soft: #f6ebcf;--nav: #102823;--nav-2: #16332d;--shadow: 0 18px 50px #10282314;--radius: 18px}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:radial-gradient(1200px 500px at 10% -10%,#d7ebe4 0%,transparent 55%),var(--bg);color:var(--ink)}button,input,select,textarea{font:inherit}a{color:var(--accent)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.login{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(900px 420px at 80% 0%,#cfe6df 0%,transparent 50%),radial-gradient(700px 400px at 0% 100%,#d9e7c8 0%,transparent 46%),var(--bg)}.login-card{width:min(440px,100%);background:var(--card);border:1px solid var(--line);border-radius:28px;padding:36px 32px;box-shadow:var(--shadow)}.brand-mark{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;background:var(--accent);color:var(--accent-fg);font-weight:700;margin-bottom:18px;letter-spacing:-.04em}.login-card h1{margin:0 0 6px;font-size:26px;letter-spacing:-.03em}.login-card p{margin:0 0 24px;color:var(--muted);line-height:1.45}.login-card .btn{width:100%;margin-top:8px}.layout{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.nav{background:linear-gradient(180deg,var(--nav) 0%,var(--nav-2) 100%);color:#e8f4f0;padding:22px 14px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}.nav-brand{display:flex;align-items:center;gap:10px;padding:4px 10px 18px}.nav-brand .mark{width:34px;height:34px;border-radius:11px;background:#1f5f53;display:grid;place-items:center;font-weight:700;font-size:13px}.nav-brand h2{margin:0;font-size:15px;font-weight:650}.nav-brand small{display:block;color:#9ec4bb;font-weight:500;font-size:11px}.nav button{background:transparent;color:#d5e8e2;border:0;text-align:left;padding:10px 12px;border-radius:12px;cursor:pointer;display:flex;align-items:center;gap:10px}.nav button svg{opacity:.8;flex:0 0 auto}.nav button.active{background:#1e4d44;color:#fff;font-weight:650}.nav button:hover{background:#1a433c}.nav .spacer{flex:1}.nav .who{font-size:12px;color:#b7cdc6;padding:10px 12px 6px;line-height:1.45}.nav .logout{color:#f0d4cf;margin-top:4px}.main{padding:28px 32px 48px;overflow:auto;min-width:0}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-head h1{margin:0;font-size:28px;letter-spacing:-.03em}.lede{margin:6px 0 0;color:var(--muted);max-width:62ch;line-height:1.5}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:999px;padding:7px 12px;cursor:pointer;font-weight:600;font-size:13px}.chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.search-wrap{position:relative;flex:1;min-width:min(100%,280px)}.search-wrap input{padding-left:38px}.search-wrap .lens{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}label{display:block;font-size:13px;font-weight:650;margin:10px 0 6px}input,select,textarea{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink)}textarea{resize:vertical}input[type=checkbox]{width:auto}label.check{display:flex;gap:8px;align-items:center;font-weight:500}.btn{border:0;border-radius:12px;padding:10px 14px;background:var(--accent);color:var(--accent-fg);cursor:pointer;font-weight:650}.btn.secondary{background:#e7eeeb;color:var(--ink)}.btn.ghost{background:transparent;color:var(--ink)}.btn.danger{background:var(--danger);color:#fff}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.sm{padding:7px 10px;font-size:12px;border-radius:10px}.table-wrap{overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px #10282308}table{width:100%;border-collapse:collapse;font-size:14px}th,td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:#f4f8f6;position:sticky;top:0}tbody tr:last-child td{border-bottom:0}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:650;background:#e2e8e5;white-space:nowrap}.badge.pending_review,.badge.pending{background:var(--warn-soft);color:var(--warn)}.badge.paid,.badge.active,.badge.grace{background:var(--ok-soft);color:var(--ok)}.badge.rejected,.badge.expired,.badge.suspended,.badge.disabled{background:var(--danger-soft);color:var(--danger)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:14px;box-shadow:0 8px 24px #10282308}.card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:8px}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.error,.flash{border-radius:12px;padding:10px 12px;font-size:13px;margin:0 0 14px}.error{color:var(--danger);background:var(--danger-soft)}.flash.ok{color:var(--ok);background:var(--ok-soft)}.muted{color:var(--muted);font-size:13px}.actions{display:flex;gap:8px;flex-wrap:wrap}.receipt{width:100%;max-height:380px;object-fit:contain;background:#0f1c19;border-radius:14px;border:1px solid var(--line);margin:12px 0}.review{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:16px;align-items:start}.review tr{cursor:pointer}.review tr:hover td{background:#f3f8f6}.review tr.selected td{background:var(--accent-soft)}.review-panel{position:sticky;top:16px}.review-panel h2{margin:0 0 4px;font-size:18px}.amount-hero{background:linear-gradient(135deg,var(--accent) 0%,var(--accent-2) 100%);color:var(--accent-fg);border-radius:16px;padding:14px 16px;margin:12px 0 14px}.amount-hero small{opacity:.85;display:block;font-size:12px}.amount-hero strong{font-size:28px;letter-spacing:-.03em}.facts{margin:0 0 12px}.facts div{display:grid;grid-template-columns:118px 1fr auto;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);align-items:start}.facts dt{color:var(--muted);font-size:12px}.facts dd{margin:0;font-weight:650;word-break:break-word}.search{flex:1;min-width:240px}.warn-box{background:var(--warn-soft);border:1px solid #efd4a3;color:#6b4b10;border-radius:14px;padding:12px 14px;margin:0 0 12px;font-size:13px}.warn-box ul{margin:8px 0 0;padding-left:18px}.warn-box .check{display:flex;gap:8px;align-items:flex-start;font-weight:500;margin-top:10px}.warn-box .check input{width:auto;margin-top:3px}.dup-flag{display:inline-block;margin-top:4px;font-size:11px;font-weight:700;color:var(--warn);background:var(--warn-soft);border-radius:999px;padding:1px 8px}.meta{font-size:12px;color:var(--muted);word-break:break-word;max-width:280px}.empty{text-align:center;padding:48px 20px;color:var(--muted)}.empty strong{display:block;color:var(--ink);margin-bottom:6px;font-size:16px}.copy-btn{border:0;background:#eef4f1;color:var(--accent);border-radius:8px;padding:3px 8px;font-size:11px;font-weight:700;cursor:pointer}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.when{white-space:nowrap}.when small{display:block;color:var(--muted);font-size:12px}.modal-backdrop{position:fixed;inset:0;background:#10282366;display:grid;place-items:center;padding:20px;z-index:20}.modal{width:min(420px,100%);background:var(--card);border-radius:20px;padding:22px;box-shadow:var(--shadow)}.modal h2{margin:0 0 8px;font-size:18px}@media(max-width:980px){.layout{grid-template-columns:1fr}.nav{position:sticky;top:0;height:auto;flex-direction:row;flex-wrap:wrap;z-index:5}.nav .spacer{display:none}.review{grid-template-columns:1fr}.review-panel{position:static}.field-row{grid-template-columns:1fr}}
