:root{color-scheme:light dark;--fg:#1a1a1a;--bg:#fff;--muted:#6b7280;--border:#e5e7eb;--card:#f9fafb;--accent:#2563eb}@media (prefers-color-scheme:dark){:root{--fg:#f3f4f6;--bg:#111827;--muted:#9ca3af;--border:#374151;--card:#1f2937;--accent:#60a5fa}}*{box-sizing:border-box}body{margin:0;color:var(--fg);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Arial,sans-serif}.page{max-width:1100px;margin:0 auto;padding:2rem 1.5rem}.card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:1.25rem 1.5rem;margin-bottom:1.5rem}.muted{color:var(--muted)}.pending{border-style:dashed}table{width:100%;border-collapse:collapse;font-size:.9rem}td,th{text-align:left;padding:.4rem .6rem;border-bottom:1px solid var(--border)}.button,button{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:.6rem 1.2rem;font-size:1rem;cursor:pointer;text-decoration:none;display:inline-block}.status-active{color:#16a34a}.status-gone-quiet{color:#d97706}.status-dormant{color:#dc2626}.status-none{color:var(--muted)}.banner-warning{background:color-mix(in srgb,var(--accent) 12%,var(--card));border:1px solid var(--border);border-radius:8px;padding:.75rem 1rem;margin-bottom:1rem;font-size:.9rem}.banner-error{border-color:#dc2626}tr.clickable-row{cursor:pointer}tr.clickable-row:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}tr.candidate-row td{border-bottom:none}tr.sms-row td{padding-top:0;padding-bottom:.75rem}.sms-row-content{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;background:color-mix(in srgb,var(--accent) 6%,transparent);border-radius:6px;padding:.5rem .75rem}.sms-text{flex:1 1 16rem;overflow-wrap:anywhere;-webkit-user-select:text;-moz-user-select:text;user-select:text}.sms-copy{flex:0 0 auto;min-height:44px}@media (max-width:640px){.page{padding:1rem .75rem}.card{padding:1rem}table.candidates-table thead{display:none}table.candidates-table,table.candidates-table tbody,table.candidates-table td,table.candidates-table tr{display:block;width:100%}table.candidates-table tr.candidate-row{padding-top:.75rem}table.candidates-table tr.candidate-row td{padding:.15rem 0}table.candidates-table tr.candidate-row td:before{content:attr(data-label) ": ";color:var(--muted)}table.candidates-table tr.sms-row td{padding:.5rem 0 .75rem;border-bottom:1px solid var(--border)}.sms-copy{width:100%}}