:root{--bg: #f4f6f9;--surface: #ffffff;--border: #e2e6ec;--text: #1f2933;--muted: #66758a;--primary: #0f766e;--primary-dark: #0b5e57;--primary-soft: #e6f4f2;--danger: #c0392b;--danger-soft: #fdecea;--warn: #b7791f;--warn-soft: #fdf5e6;--ok: #2f855a;--ok-soft: #e8f5ee;--info: #2b6cb0;--info-soft: #ebf4fc;--radius: 10px;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .08)}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,Roboto,Arial,sans-serif;font-size:14px;color:var(--text);background:var(--bg)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:22px;margin:0 0 4px}h2{font-size:17px;margin:0 0 12px}h3{font-size:15px;margin:16px 0 8px}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:Consolas,monospace}.right{text-align:right}.nowrap{white-space:nowrap}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.page-head p{margin:0}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}.row>*{min-width:0}.grow{flex:1}.grid{display:grid;gap:16px}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.grid.cols-4{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:16px}@media(max-width:1000px){.split{grid-template-columns:1fr}}.stack>*+*{margin-top:12px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card.flush{padding:0;overflow:hidden}.card-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}.card-head h2{margin:0}.card.flush>.card-head{padding:14px 16px 0}label.field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);font-weight:600}input,select,textarea{font:inherit;color:var(--text);padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:#fff;min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary-soft);border-color:var(--primary)}textarea{resize:vertical;min-height:60px}input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary)}label.check{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.form-grid .wide{grid-column:1/-1}button,.btn{font:inherit;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:8px;border:1px solid var(--primary);background:var(--primary);color:#fff;cursor:pointer;white-space:nowrap}button:hover:not(:disabled){background:var(--primary-dark)}button:disabled{opacity:.55;cursor:not-allowed}button.secondary{background:#fff;color:var(--primary)}button.secondary:hover:not(:disabled){background:var(--primary-soft)}button.ghost{background:transparent;border-color:transparent;color:var(--primary);padding:6px 8px}button.ghost:hover:not(:disabled){background:var(--primary-soft)}button.danger{background:#fff;color:var(--danger);border-color:var(--danger)}button.danger:hover:not(:disabled){background:var(--danger-soft)}button.sm{padding:4px 9px;font-size:12px}button.lg{padding:12px 20px;font-size:16px}.actions{display:flex;gap:6px;flex-wrap:wrap}table.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;background:#f9fafb}.table th,.table td{padding:9px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.table th.right,.table td.right{text-align:right}.table tr:last-child td{border-bottom:none}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td,.table tr.active td{background:var(--primary-soft)}.table-wrap{overflow-x:auto}.empty{padding:24px;text-align:center;color:var(--muted)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;background:#edf0f4;color:#4a5568;white-space:nowrap}.badge.ok,.badge[data-s=Completed],.badge[data-s=Confirmed],.badge[data-s=Closed],.badge[data-s=Paid],.badge[data-s=Success],.badge[data-s=Active]{background:var(--ok-soft);color:var(--ok)}.badge.info,.badge[data-s=InConsultation],.badge[data-s=CheckedIn],.badge[data-s=Waiting],.badge[data-s=ReportReview]{background:var(--info-soft);color:var(--info)}.badge.warn,.badge[data-s=PendingPayment],.badge[data-s=Pending],.badge[data-s=TestsAdvised],.badge[data-s=ReportPending],.badge[data-s=Skipped],.badge[data-s=PayAtClinic],.badge[data-s=PartiallyRefunded]{background:var(--warn-soft);color:var(--warn)}.badge.danger,.badge[data-s=Cancelled],.badge[data-s=NoShow],.badge[data-s=Expired],.badge[data-s=Failed],.badge[data-s=Suspended],.badge[data-s=Refunded]{background:var(--danger-soft);color:var(--danger)}.badge.priority{background:var(--danger);color:#fff}.alert{padding:10px 12px;border-radius:8px;border:1px solid;margin-bottom:12px}.alert.warn{background:var(--warn-soft);border-color:#f1d9a8;color:#7b5413}.alert.info{background:var(--info-soft);border-color:#c3dcf3;color:#1e4e80}.alert.danger{background:var(--danger-soft);border-color:#f3c1bb;color:#8a281e}.alert.ok{background:var(--ok-soft);border-color:#bfe3cd;color:#22603f}.stat{display:flex;flex-direction:column;gap:2px}.stat .value{font-size:24px;font-weight:700}.stat .label{font-size:12px;color:var(--muted)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px;flex-wrap:wrap}.tabs button{background:transparent;color:var(--muted);border:none;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px}.tabs button:hover:not(:disabled){background:transparent;color:var(--text)}.tabs button.on{color:var(--primary);border-bottom-color:var(--primary)}.modal-backdrop{position:fixed;inset:0;background:#0f172a73;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:50;overflow-y:auto}.modal{background:#fff;border-radius:12px;width:100%;max-width:640px;box-shadow:0 20px 50px #00000040}.modal.wide{max-width:900px}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border)}.modal-head h2{margin:0}.modal-body{padding:18px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--border);background:#fafbfc;border-radius:0 0 12px 12px}.modal-foot:empty{display:none}.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:6px;max-height:320px;overflow-y:auto;padding:2px}.slot{border:1px solid var(--border);border-radius:8px;padding:6px 4px;text-align:center;cursor:pointer;background:#fff;font-size:13px;font-weight:600;color:var(--text)}.slot small{display:block;font-weight:400;color:var(--muted);font-size:11px}.slot:hover{border-color:var(--primary)}.slot.taken{background:#f1f3f5;color:#adb5bd;cursor:not-allowed;text-decoration:line-through}.slot.selected{background:var(--primary);color:#fff;border-color:var(--primary)}.slot.selected small{color:#d7f0ec}.public{min-height:100vh;background:linear-gradient(180deg,#0f2f2c 0,#0f766e 220px,var(--bg) 220px);padding:24px 16px}.public-inner{max-width:960px;margin:0 auto}.public-brand{color:#fff;display:flex;align-items:center;gap:12px;margin-bottom:20px}.public-brand .logo{width:42px;height:42px;border-radius:10px;background:#14b8a6;display:grid;place-items:center;font-size:24px;font-weight:700}
