:root{--bg: #f6f7f9;--panel: #fff;--ink: #1d2330;--sub: #667085;--line: #e3e6eb;--accent: #1f5fbf;--accent-soft: #e8f0fc;--ok: #1e7b45;--ok-soft: #e3f4ea;--danger: #b42318;--danger-soft: #fdecea;font:14px/1.45 system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0}h1{font-size:20px;margin:0}a{color:var(--accent)}button{font:inherit;border:1px solid var(--line);background:var(--panel);border-radius:6px;padding:5px 11px;cursor:pointer;color:var(--ink)}button:hover:not(:disabled){border-color:#b8c0cc}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.block{width:100%;margin-top:8px;padding:8px}input{font:inherit;border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:#fff;color:var(--ink)}.grow{flex:1}.sub{color:var(--sub);font-size:12.5px}.loading{padding:24px}.alert{padding:8px 10px;border-radius:6px}.alert.error{background:var(--danger-soft);color:var(--danger)}.alert.ok{background:var(--ok-soft);color:var(--ok)}.signed-out{min-height:100vh;display:grid;place-items:center}.signed-out .card{width:360px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:24px}.signed-out .brand{color:var(--sub);font-size:12.5px;margin:0 0 6px}.signed-out h1{margin-bottom:16px}.signed-out form{display:grid;gap:12px}.signed-out label{display:grid;gap:4px;font-weight:500}.layout{display:flex;min-height:100vh;min-width:960px}.side{width:200px;background:#1d2330;color:#d0d5dd;display:flex;flex-direction:column;padding:16px 12px;gap:12px}.side .brand{color:#fff;font-weight:700;font-size:16px;line-height:1.2}.side nav{display:grid;gap:2px}.side nav a{color:#d0d5dd;text-decoration:none;padding:6px 8px;border-radius:6px}.side nav a.on{background:#344054;color:#fff}.side .who{font-size:12.5px;word-break:break-all}.side .who b{color:#fff}.main{flex:1;padding:16px 24px}.top{display:flex;align-items:baseline;gap:12px;margin-bottom:12px}.grid{width:100%;border-collapse:collapse;background:var(--panel)}.grid th,.grid td{text-align:left;padding:4px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.grid th{font-size:12px;color:var(--sub);font-weight:600;background:#fafbfc;position:sticky;top:0}.grid tbody tr:hover td{background:#f3f6fb}.grid td.name{font-weight:600}.grid .num{text-align:right}.top .year-menu{display:flex;align-items:center;gap:6px;color:var(--sub);font-size:12.5px}.top select{font:inherit;font-size:14px;border:1px solid var(--line);border-radius:6px;padding:4px 6px;background:#fff;color:var(--ink)}.grid .yr{text-align:center}.grid th.sel,.grid td.sel{background:var(--accent-soft)}.grid .none{color:#c0c6d0}.grid .paid{color:var(--ok);font-weight:700}.grid .unpaid{color:var(--danger)}.grid .hon{color:var(--accent);font-weight:600}.badge{display:inline-block;padding:0 7px;border-radius:9px;font-size:12px;background:#eef0f3;color:var(--sub)}.badge.member{background:var(--ok-soft);color:var(--ok)}.badge.leaver{background:#fef3e2;color:#9a5b00}button.link{border:0;background:none;padding:0;color:inherit;font-weight:inherit;text-align:left}button.link:hover{color:var(--accent);text-decoration:underline}button.icon{border:0;background:none;font-size:22px;line-height:1;padding:0 4px;color:var(--sub)}.grid tbody tr.open td{background:var(--accent-soft)}.drawer{position:fixed;top:0;right:0;bottom:0;width:600px;background:var(--panel);border-left:1px solid var(--line);box-shadow:-10px 0 30px #0000001a;padding:16px 20px 40px;overflow:auto;z-index:20}.drawer-head{display:flex;justify-content:space-between;align-items:start;margin-bottom:4px}.drawer-head h2{margin:0 0 4px;font-size:20px}.drawer .medical{background:var(--danger-soft);border:1px solid #f5c2bd;border-left:5px solid var(--danger);border-radius:8px;padding:8px 12px;margin:10px 0 6px;color:#7a1a12}.drawer .emergency{background:#fafbfc;border:1px solid var(--line);border-radius:8px;padding:6px 12px;margin:6px 0}.drawer .text{white-space:pre-wrap}.drawer .summary{margin:10px 0 0}.drawer .unpaid{color:var(--danger)}.drawer .empty{color:#98a2b3;font-style:italic}.drawer .actions{display:flex;gap:8px;margin:12px 0 4px}.drawer h3{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--sub);margin:18px 0 6px}.drawer dl{display:grid;grid-template-columns:170px 1fr;gap:3px 12px;margin:0}.drawer dt{color:var(--sub)}.drawer dd{margin:0}.drawer .history{margin-top:18px;border-top:1px solid var(--line);padding-top:10px}.drawer .history summary{cursor:pointer;color:var(--accent);font-weight:600;margin-bottom:8px}.drawer .history td{vertical-align:top}.details-form .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}.details-form .field{display:grid;gap:3px;font-size:12.5px;color:var(--sub);margin-top:8px}.details-form .form-grid .field{margin-top:0}.details-form .field input,.details-form .field select,.details-form .field textarea{font:inherit;font-size:14px;color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:5px 8px;background:#fff;width:100%}.details-form .check{display:flex;align-items:center;gap:6px;align-self:end;padding-bottom:6px}.details-form .alert{margin-top:12px}.form-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.side nav a{display:flex;justify-content:space-between;align-items:center}.side nav .count{background:#475467;color:#fff;border-radius:9px;padding:0 7px;font-size:12px}.intro{margin:0 0 12px}.pair{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:14px;max-width:900px}.pair .grid th[scope=row]{width:170px;color:var(--sub);font-weight:400;background:none;position:static}.pair .grid thead th{font-size:14px;color:var(--ink)}.pair .grid tr.differ td{background:#fef3e2}.pair-actions{display:flex;align-items:center;gap:12px;margin-top:10px}.views{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.views .view{display:flex;flex-direction:column-reverse;align-items:flex-start;min-width:92px;padding:5px 10px;line-height:1.2}.views .view .n{font-size:18px;font-weight:700}.views .view .label{font-size:12px;color:var(--sub)}.views .view[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent)}.views .view[aria-pressed=true] .label{color:var(--accent)}.filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px}.filters input[type=search]{width:240px}.filters select{font:inherit;border:1px solid var(--line);border-radius:6px;padding:5px 6px;background:#fff;color:var(--ink)}.chips{display:contents;list-style:none}.chip{display:inline-flex;align-items:center;gap:4px;background:var(--accent-soft);color:var(--accent);border-radius:12px;padding:2px 4px 2px 10px;font-size:12.5px}.chip button{border:0;background:none;padding:0 4px;color:inherit;font-size:15px;line-height:1}.notice{min-height:1.45em;margin:0 0 6px;color:var(--ok);font-size:12.5px}.notice.error{color:var(--danger)}.notice .undo{margin-left:8px;color:var(--accent);font-weight:600;text-decoration:underline}.grid .paid-action{padding:0 6px;font-size:12px;line-height:1.5;border-color:transparent;background:none}.grid .paid-action:hover{border-color:var(--accent)}.grid .paid-action.add{color:var(--accent);border:1px dashed #b8c8e4}.grid .paid-action.unpaid{color:var(--danger)}.grid .check{width:28px;padding-right:0}.grid tbody tr.ticked td{background:#fffbea}.grid .medical-flag{color:var(--danger);font-weight:700;cursor:help}.side .bulk{display:grid;gap:6px;border-top:1px solid #344054;padding-top:12px}.side .bulk h2{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#98a2b3;margin:0;font-weight:600}.side .bulk button{text-align:left}.side .bulk button.link{color:#d0d5dd;font-size:12.5px}.form-foot.reversed{flex-direction:row-reverse}.top button.primary{align-self:center}.grid .make-member{padding:0 6px;font-size:12px;line-height:1.5;color:var(--accent)}.drawer .similar{background:#fef3e2;border:1px solid #f6d7a7;border-radius:8px;padding:8px 12px;margin:12px 0 4px}.drawer .similar>p{margin:0 0 6px}.drawer .similar-runner{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:6px 10px;margin-top:6px}.drawer .similar-runner dl{grid-template-columns:130px 1fr;margin:4px 0;font-size:12.5px}.drawer .similar-runner .exact{color:#9a5b00;font-weight:600;font-size:12.5px}.similar-actions{display:flex;gap:8px}.side .bulk .bulk-answer{display:grid;gap:4px;font-size:12.5px}.side .bulk .bulk-answer select{font:inherit;border:1px solid var(--line);border-radius:6px;padding:4px 6px;background:#fff;color:var(--ink)}.side .bulk .confirm{display:grid;gap:6px;background:#344054;border-radius:6px;padding:8px;font-size:12.5px}.side .bulk .confirm p{margin:0;color:#fff}.pt-figure{display:flex;align-items:center;gap:20px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 16px;margin-bottom:14px;max-width:900px}.pt-figure p{margin:0 0 4px}.pt-percent{font-size:40px;font-weight:700;color:var(--accent)}.pt-years{max-width:900px}.pt-years th[scope=row]{font-size:14px;color:var(--ink);background:none;position:static}.pt-years tr.on td,.pt-years tr.on th{background:var(--accent-soft)}.users-section{max-width:900px;margin-bottom:24px}.users-section h2{font-size:15px;margin:0 0 8px}.users-section .grid select{font:inherit;border:1px solid var(--line);border-radius:6px;padding:2px 4px;background:#fff;color:var(--ink)}.users-section .row-actions{display:flex;gap:6px}.inline-form{display:flex;flex-wrap:wrap;align-items:end;gap:8px 12px}.inline-form h2,.inline-form p{flex-basis:100%;margin:0}.inline-form label{display:grid;gap:3px;font-size:12.5px;color:var(--sub)}.inline-form input[type=email]{width:280px}.inline-form input[type=number]{width:70px}.inline-form select{font:inherit;border:1px solid var(--line);border-radius:6px;padding:6px;background:#fff;color:var(--ink)}
