:root{--bg: #f5f7f3;--card: #ffffff;--card-border: #e1e7e1;--ink: #1e2c28;--ink-soft: #52655d;--primary: #2f6f5e;--primary-soft: #e6f0ec;--amber: #d98e4a;--amber-soft: #fbf1e5;--brick: #b5482f;--brick-soft: #fbe9e5;--done: #3f7d4f;--done-soft: #eaf4ec;--display: "Newsreader", serif;--body: "Inter", system-ui, sans-serif;--mono: "IBM Plex Mono", monospace;--radius: 14px;--shadow: 0 1px 2px rgba(30, 44, 40, .04), 0 4px 16px rgba(30, 44, 40, .06)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased}.app{max-width:880px;margin:0 auto;padding:40px 24px 80px}.header{margin-bottom:32px}.eyebrow{font-family:var(--mono);font-size:13px;letter-spacing:.04em;color:var(--ink-soft);text-transform:uppercase;margin:0 0 6px}.title{font-family:var(--display);font-weight:500;font-size:34px;margin:0;color:var(--ink)}.subtitle{color:var(--ink-soft);font-size:15px;margin:8px 0 0;max-width:52ch;line-height:1.5}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin:28px 0 36px}.stat{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);padding:16px 18px}.stat-num{font-family:var(--display);font-size:28px;font-weight:500;line-height:1}.stat-label{font-size:12px;color:var(--ink-soft);margin-top:6px;text-transform:uppercase;letter-spacing:.03em}.list{display:flex;flex-direction:column;gap:14px}.card{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);padding:20px 22px;box-shadow:var(--shadow)}.picker-card{transition:border-color .15s ease,transform .15s ease}.picker-card:hover{border-color:var(--primary);transform:translateY(-1px)}.card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.resident-name{font-family:var(--display);font-size:20px;font-weight:500;margin:0 0 2px}.resident-unit{font-size:13px;color:var(--ink-soft);margin:0}.badge{font-family:var(--mono);font-size:12px;padding:5px 10px;border-radius:999px;white-space:nowrap;text-transform:lowercase;letter-spacing:.02em}.badge-pending,.badge-reminder_sent{background:var(--amber-soft);color:var(--amber)}.badge-escalated_secretary,.badge-escalated_joint_secretary,.badge-escalated_emergency{background:var(--brick-soft);color:var(--brick)}.badge-done{background:var(--done-soft);color:var(--done)}.meta-row{display:flex;gap:18px;margin-top:12px;font-size:13px;color:var(--ink-soft)}.meta-row strong{color:var(--ink);font-weight:500}.timeline{display:flex;align-items:center;gap:4px;margin-top:16px;padding-top:14px;border-top:1px dashed var(--card-border)}.timeline-step{display:flex;align-items:center;gap:4px;font-family:var(--mono);font-size:11px;color:var(--ink-soft)}.timeline-dot{width:8px;height:8px;border-radius:50%;background:var(--card-border);flex-shrink:0}.timeline-dot.filled{background:var(--primary)}.timeline-dot.filled.warn{background:var(--amber)}.timeline-dot.filled.danger{background:var(--brick)}.timeline-connector{width:18px;height:1px;background:var(--card-border)}.btn{font-family:var(--body);font-weight:600;font-size:13px;border:none;border-radius:9px;padding:9px 16px;cursor:pointer;transition:opacity .15s ease}.btn:hover{opacity:.88}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--primary);color:#fff}.btn-done{background:var(--done-soft);color:var(--done)}.state-message{text-align:center;padding:60px 20px;color:var(--ink-soft);font-size:14px}.footnote{margin-top:48px;font-size:12px;color:var(--ink-soft);text-align:center;line-height:1.6}.pin-prompt{background:var(--primary-soft);border-radius:10px;padding:14px 16px}.pin-label{font-size:13px;color:var(--ink);margin:0 0 8px;font-weight:500}.pin-row{display:flex;gap:8px;flex-wrap:wrap}.pin-input{font-family:var(--mono);font-size:14px;padding:9px 12px;border-radius:8px;border:1px solid var(--card-border);background:#fff;color:var(--ink);width:100%}.pin-row .pin-input{width:140px;flex:0 0 auto}.pin-error{color:var(--brick);font-size:13px;margin:10px 0 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media (max-width: 520px){.form-grid{grid-template-columns:1fr}}@media (max-width: 520px){.card-top{flex-direction:column}}@media (prefers-reduced-motion: reduce){.btn{transition:none}}
