:root{--ink: #14241f;--ink-soft: #5b6b63;--ground: #f4f6f4;--surface: #ffffff;--line: #dfe3de;--teal: #0f6e5a;--teal-dark: #0b5747;--teal-wash: #e5f1ec;--amber: #b8701f;--red: #b3261e;--red-wash: #fbe9e7;--blue-wash: #e8f0fb;--blue: #1c5a9e}*{box-sizing:border-box}body{margin:0;background:var(--ground);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}button{font-family:inherit;cursor:pointer}input{font-family:inherit}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:32px;width:360px;box-shadow:0 8px 24px -12px #14241f33}.login-card h1{font-size:20px;margin:0 0 4px}.login-card .sub{font-size:13px;color:var(--ink-soft);margin:0 0 20px}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-soft);margin-bottom:5px}.field select,.field input{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-size:14px;background:var(--surface);color:var(--ink)}.btn{border:none;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;background:var(--teal);color:#fff}.btn:hover{background:var(--teal-dark)}.btn:disabled{opacity:.5;cursor:default}.btn.full{width:100%}.btn.ghost{background:transparent;color:var(--teal-dark);border:1px solid var(--line)}.error-text{color:var(--red);font-size:13px;margin:0 0 12px}.topbar{background:var(--surface);border-bottom:1px solid var(--line);padding:12px 24px;display:flex;align-items:center;justify-content:space-between}.topbar .brand{font-weight:700;font-size:15px}.topbar .clinic-name{color:var(--ink-soft);font-size:13px;margin-left:10px}.content{padding:24px;max-width:1100px;margin:0 auto}.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:16px}.toolbar input[type=date]{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:14px}.schedule-table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}.schedule-table th{text-align:left;font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);padding:10px 14px;border-bottom:1px solid var(--line);background:var(--ground)}.schedule-table td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle;font-variant-numeric:tabular-nums}.schedule-table tr:last-child td{border-bottom:none}.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.pill.pending,.pill.confirmed{background:var(--blue-wash);color:var(--blue)}.pill.checked_in{background:var(--teal-wash);color:var(--teal-dark)}.pill.completed{background:#e9f5e9;color:#2e7d32}.pill.no_show,.pill.cancelled,.pill.flag-high,.pill.flag-low{background:var(--red-wash);color:var(--red)}.pill.flag-normal{background:var(--teal-wash);color:var(--teal-dark)}.pill.flag-unknown{background:var(--ground);color:var(--ink-soft)}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.row-actions button{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:5px 9px;font-size:12px;color:var(--ink)}.row-actions button:hover{border-color:var(--teal);color:var(--teal-dark)}.row-actions button.danger:hover{border-color:var(--red);color:var(--red)}.empty-state{text-align:center;padding:48px 16px;color:var(--ink-soft)}.walkin-panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin-top:24px}.walkin-panel h2{font-size:15px;margin:0 0 12px}.walkin-row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.walkin-row .field{margin-bottom:0;min-width:160px;flex:1}.slot-chip-list{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.slot-chip{border:1px solid var(--line);border-radius:6px;padding:6px 10px;font-size:12.5px;cursor:pointer}.slot-chip.active{border-color:var(--teal);background:var(--teal-wash);color:var(--teal-dark);font-weight:600}.subtabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:20px}.subtab{border:none;background:transparent;padding:10px 16px;font-size:13.5px;font-weight:600;color:var(--ink-soft);border-bottom:2px solid transparent;border-radius:0}.subtab.active{color:var(--teal-dark);border-bottom-color:var(--teal)}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin-bottom:14px}.card h3{font-size:14.5px;margin:0 0 4px}.card .sub{font-size:12.5px;color:var(--ink-soft);margin:0 0 14px}.card-list-item{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.card-list-item:first-of-type{border-top:none}.card-list-item .info b{font-size:14px}.card-list-item .info .meta{font-size:12.5px;color:var(--ink-soft);margin-top:2px}.card-list-item .info .lich-chips{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}.lich-chip{font-size:11.5px;background:var(--teal-wash);color:var(--teal-dark);border-radius:6px;padding:3px 8px;font-weight:600}.weekday-picker{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.weekday-btn{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:8px 4px;width:44px;font-size:12.5px;font-weight:600;color:var(--ink-soft)}.weekday-btn.active{border-color:var(--teal);background:var(--teal-wash);color:var(--teal-dark)}.gio-row{display:flex;gap:10px;align-items:flex-end;margin-bottom:14px}.gio-row .field{margin-bottom:0;flex:1}.form-actions{display:flex;gap:10px;margin-top:4px}.status-badge{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;padding:6px 12px;border-radius:999px;margin-bottom:14px}.status-badge.chua_ket_noi{background:var(--ground);color:var(--ink-soft)}.status-badge.cho_cap_quyen{background:#fff4e0;color:var(--amber)}.status-badge.da_ket_noi{background:var(--teal-wash);color:var(--teal-dark)}.help-box{background:var(--ground);border-radius:8px;padding:12px 14px;font-size:12.5px;color:var(--ink-soft);line-height:1.6;margin-bottom:16px}.help-box a{color:var(--teal-dark)}.help-box code{background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:1px 5px}.chi-doc-man-hinh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.bs-trang,.ktt-trang{margin:0 auto}.bs-trang{max-width:640px}.ktt-trang{max-width:1040px}.bs-tieu-de{font-size:18px;margin:0 0 4px}.bs-loc{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-bottom:10px}.bs-loc-o{flex:1 1 160px;margin-bottom:0}.bs-xem-them{margin-top:10px}.khung-ds{list-style:none;margin:0;padding:0;max-height:350px;overflow-y:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.khung-the{display:flex;align-items:center;gap:12px;padding:12px 14px;border-top:1px solid var(--line)}.khung-the:first-child{border-top:none}.khung-gio{display:flex;flex-direction:column;min-width:96px}.khung-ngay{font-size:12px;color:var(--ink-soft)}.khung-thong-tin{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;font-size:13.5px}.khung-phu{font-size:12.5px;color:var(--ink-soft)}.chip-tranh-thu{display:inline-block;padding:1px 8px;border-radius:999px;background:#fff1d6;color:var(--amber);border:1px solid #e7c78f;font-size:11.5px;font-weight:700}.bs-ket-qua .bs-ma{font-size:16px}.bs-ket-qua .form-actions{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}.bs-ket-qua a.btn{display:inline-block;text-decoration:none}.hop-nen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;background:#14241f73}.hop{display:flex;flex-direction:column;background:var(--surface);max-height:100%;overflow:hidden}.hop-form{display:flex;flex-direction:column;flex:1;min-height:0}.hop-giua{margin:auto;width:min(480px,calc(100% - 32px));max-height:calc(100% - 32px);border-radius:14px}.hop-nganKeo{margin-left:auto;width:min(440px,100%);height:100%;border-radius:14px 0 0 14px}.hop-sheet{margin-top:auto;width:100%;max-height:92%;border-radius:16px 16px 0 0}@media (min-width: 720px){.hop-sheet{margin:auto;width:480px;max-height:calc(100% - 32px);border-radius:14px}}.hop-dau{padding:14px 16px;border-bottom:1px solid var(--line);background:var(--teal-wash);font-weight:700;font-size:14px}.hop-dau small{display:block;margin-top:3px;font-weight:500;font-size:12.5px;color:var(--ink-soft)}.hop-than{padding:16px;overflow-y:auto;flex:1}.hop-chan{display:flex;justify-content:flex-end;gap:10px;padding:12px 16px;border-top:1px solid var(--line)}.canh-bao-loi{margin:0 0 12px;padding:8px 12px;border-radius:8px;background:var(--red-wash);color:var(--red);font-size:13px}.ktt-dau-hang{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}.ktt-loc{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.ktt-loc .field{margin-bottom:0}.ktt-tim{flex:1 1 220px}.bang-cuon{max-height:350px;overflow-y:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.ktt-bang{width:100%}.ktt-o-chon{width:36px}.ktt-dong-chon{background:var(--teal-wash)}.ktt-benh-nhan{font-size:12.5px;color:var(--ink-soft)}.ktt-nguon{font-size:12px;color:var(--ink-soft)}.ktt-hai-cot{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ktt-chua-go{list-style:none;margin:0 0 8px;padding:0}.ktt-chua-go li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:13px}.thanh-hang-loat{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0;padding:8px 12px;border-radius:10px;border:1px solid var(--teal);background:var(--teal-wash)}@media (max-width: 720px){.ktt-bang thead{display:none}.ktt-bang,.ktt-bang tbody,.ktt-bang tr,.ktt-bang td{display:block;width:100%}.ktt-bang tr{padding:10px 12px;border-top:1px solid var(--line)}.ktt-bang tr[hidden]{display:none}.ktt-bang td{padding:3px 0;border:none}.ktt-bang td[data-nhan]:before{content:attr(data-nhan) ": ";font-size:12px;color:var(--ink-soft)}.ktt-bang td.ktt-o-chon{width:auto}}@media (min-width: 721px){.ktt-bang td[data-nhan=Ngày],.ktt-bang td[data-nhan=Giờ]{white-space:nowrap}}.topbar .row-actions .btn:not(.ghost){background:var(--teal);color:#fff;border-color:var(--teal)}.topbar .row-actions .btn:not(.ghost):hover{background:var(--teal-dark);color:#fff}.topbar .row-actions .btn.ghost:hover{background:var(--teal-wash);color:var(--teal-dark)}
