*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:Noto Sans Thai,Segoe UI,Tahoma,sans-serif;background:#f5f7fb;color:#172033}button,input{font:inherit}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(135deg,#edf7fb,#f7f9fc,#eef7f2)}.login-card{width:100%;max-width:440px;background:#fff;padding:42px;border-radius:24px;box-shadow:0 24px 70px #1720331f}.brand-logo,.mini-logo{display:flex;align-items:center;justify-content:center;background:#146c94;color:#fff;font-weight:700}.brand-logo{width:72px;height:72px;margin:0 auto 22px;border-radius:20px;font-size:21px}.login-card h1{text-align:center;margin:0;font-size:30px}.hospital-name{text-align:center;margin-top:7px;color:#146c94;font-size:19px;font-weight:600}.login-description{text-align:center;color:#667085;margin:15px 0 28px}.login-form{display:flex;flex-direction:column;gap:9px}.login-form label{font-size:14px;font-weight:600;margin-top:8px}.login-form input{width:100%;padding:13px 14px;border:1px solid #d9e0e9;border-radius:10px;outline:none;background:#fff}.login-form input:focus{border-color:#146c94;box-shadow:0 0 0 3px #146c941a}.primary-button{border:0;margin-top:16px;padding:13px;border-radius:10px;background:#146c94;color:#fff;font-weight:700;cursor:pointer}.primary-button:disabled{opacity:.65;cursor:default}.error-box{padding:11px 13px;margin-top:8px;border-radius:9px;background:#fff1f1;color:#b42318;font-size:14px}.version{text-align:center;margin-top:26px;color:#98a2b3;font-size:12px}.app-shell{min-height:100vh;display:flex}.sidebar{width:260px;min-height:100vh;padding:22px 16px;background:#102a3a;color:#fff}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:4px 7px 25px}.sidebar-brand strong,.sidebar-brand small{display:block}.sidebar-brand strong{font-size:15px}.sidebar-brand small{margin-top:3px;color:#b9cad4;font-size:11px}.mini-logo{width:44px;height:44px;flex:0 0 44px;border-radius:12px;font-size:13px}nav{display:flex;flex-direction:column;gap:5px}.nav-item{width:100%;padding:11px 13px;border:0;border-radius:9px;background:transparent;color:#dce7ed;text-align:left;cursor:pointer}.nav-item:hover{background:#ffffff12}.nav-item.active{background:#146c94;color:#fff}.nav-section{margin:20px 12px 7px;color:#8199a7;font-size:11px;font-weight:700;text-transform:uppercase}.main-area{flex:1;min-width:0}.topbar{min-height:78px;padding:14px 28px;background:#fff;border-bottom:1px solid #e8edf2;display:flex;align-items:center;justify-content:space-between}.topbar h2{margin:0;font-size:21px}.topbar span,.user-area small{display:block;color:#667085;font-size:12px;margin-top:3px}.user-area{display:flex;align-items:center;gap:18px;text-align:right}.logout-button{padding:8px 12px;border:1px solid #d9e0e9;border-radius:8px;background:#fff;cursor:pointer}.content{padding:28px}.welcome-card{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:28px;background:#fff;border:1px solid #e7edf2;border-radius:18px}.welcome-card h1{margin:5px 0 8px}.welcome-card p{margin:0;color:#667085}.eyebrow{color:#146c94;font-size:12px;font-weight:700}.system-status{white-space:nowrap;padding:10px 14px;border-radius:10px;background:#eefbf3;color:#16794a;font-size:13px;font-weight:600}.status-dot{display:inline-block;width:9px;height:9px;margin-right:8px;border-radius:50%;background:#22a864}.dashboard-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:20px}.dashboard-card{min-height:145px;padding:22px;background:#fff;border:1px solid #e7edf2;border-radius:16px}.dashboard-card span,.dashboard-card small{display:block;color:#667085}.dashboard-card strong{display:block;margin:13px 0 7px;color:#146c94;font-size:28px}.loading-page{min-height:100vh;display:flex;align-items:center;justify-content:center;color:#667085}@media(max-width:900px){.sidebar{width:210px}.dashboard-grid{grid-template-columns:1fr}}@media(max-width:680px){.sidebar{display:none}.topbar{padding:14px 18px}.content{padding:18px}.welcome-card{align-items:flex-start;flex-direction:column}.user-area small{display:none}}.settings-page{max-width:1050px}.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:25px;margin-bottom:20px}.page-heading h1{margin:4px 0 7px;font-size:27px}.page-heading p{margin:0;color:#667085}.config-badge{padding:8px 12px;border-radius:9px;background:#f2f4f7;color:#667085;font-size:12px;font-weight:700}.config-badge.configured{background:#eefbf3;color:#16794a}.page-card{padding:24px;margin-bottom:20px;background:#fff;border:1px solid #e7edf2;border-radius:16px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.field{display:flex;flex-direction:column;gap:7px}.field-wide{grid-column:span 2}.field label{font-size:13px;font-weight:700}.field input,.field select{width:100%;min-height:43px;padding:10px 12px;border:1px solid #d9e0e9;border-radius:9px;background:#fff;outline:none}.field input:focus,.field select:focus{border-color:#146c94;box-shadow:0 0 0 3px #146c941a}.field small{color:#667085;font-size:11px}.switch-row{display:flex;align-items:center;gap:9px;margin-top:22px;font-size:13px;font-weight:600}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:25px}.secondary-button{padding:11px 15px;border:1px solid #ccd5df;border-radius:9px;background:#fff;color:#344054;font-weight:600;cursor:pointer}.settings-save{margin-top:0;padding-left:18px;padding-right:18px}.message{padding:12px 15px;margin-bottom:16px;border-radius:10px;font-size:13px}.error-message{background:#fff1f1;color:#b42318}.success-message{background:#eefbf3;color:#16794a}.status-card h3{margin-top:0}.status-list{border-top:1px solid #edf0f3}.status-row{display:flex;justify-content:space-between;gap:25px;padding:12px 0;border-bottom:1px solid #edf0f3}.status-row span{color:#667085;font-size:13px}.status-row strong{text-align:right;font-size:13px}.test-result{margin-top:25px}.test-result h4{margin-bottom:8px}@media(max-width:700px){.form-grid{grid-template-columns:1fr}.field-wide{grid-column:span 1}.page-heading,.form-actions{flex-direction:column}}.patient-page{max-width:1100px}.search-type-tabs{display:flex;gap:8px;margin-bottom:20px}.search-tab{padding:9px 15px;border:1px solid #d9e0e9;border-radius:9px;background:#fff;color:#475467;cursor:pointer}.search-tab.active{border-color:#146c94;background:#edf7fb;color:#146c94;font-weight:700}.patient-search-form{display:flex;align-items:flex-end;gap:12px}.patient-search-input{flex:1}.patient-search-input label{display:block;margin-bottom:7px;font-size:13px;font-weight:700}.patient-search-input input{width:100%;min-height:45px;padding:10px 13px;border:1px solid #d9e0e9;border-radius:9px;outline:none}.patient-search-input input:focus{border-color:#146c94;box-shadow:0 0 0 3px #146c941a}.patient-search-button{min-height:45px;margin-top:0;padding-left:22px;padding-right:22px}.empty-result{text-align:center;color:#667085}.patient-card{margin-top:16px}.patient-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding-bottom:18px;border-bottom:1px solid #edf0f3}.patient-card-header h2{margin:6px 0 0;font-size:22px}.patient-hn{color:#146c94;font-size:13px;font-weight:700}.patient-warning{padding:7px 10px;border-radius:8px;background:#fff1f1;color:#b42318;font-size:12px;font-weight:700}.patient-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin-top:8px}.patient-detail{padding:15px 15px 15px 0}.patient-detail span,.patient-detail strong{display:block}.patient-detail span{margin-bottom:5px;color:#667085;font-size:12px}.patient-detail strong{font-size:14px}.patient-next-action{display:flex;align-items:center;gap:12px;margin-top:15px;padding-top:18px;border-top:1px solid #edf0f3}.patient-next-action small{color:#98a2b3}@media(max-width:760px){.patient-search-form{align-items:stretch;flex-direction:column}.patient-detail-grid{grid-template-columns:1fr 1fr}}.organization-page{max-width:1200px}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}.section-heading h2{margin:0 0 5px;font-size:18px}.section-heading p{margin:0;color:#667085;font-size:13px}.organization-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.form-field label{display:block;margin-bottom:7px;font-size:13px;font-weight:700}.form-field input,.form-field select{width:100%;min-height:44px;box-sizing:border-box;padding:10px 12px;border:1px solid #d9e0e9;border-radius:9px;background:#fff;outline:none}.form-field input:focus,.form-field select:focus{border-color:#146c94;box-shadow:0 0 0 3px #146c941a}.form-field input:disabled{background:#f8fafc;color:#667085}.form-actions{grid-column:1 / -1;display:flex;justify-content:flex-end}.table-wrapper{width:100%;overflow-x:auto}.admin-table{width:100%;border-collapse:collapse}.admin-table th,.admin-table td{padding:13px 12px;border-bottom:1px solid #edf0f3;text-align:left;vertical-align:middle}.admin-table th{color:#667085;font-size:12px;font-weight:700}.admin-table td{font-size:14px}.type-badge,.status-badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:7px;font-size:12px;font-weight:700}.type-badge{background:#eef4ff;color:#3538cd}.status-badge.active{background:#ecfdf3;color:#027a48}.status-badge.inactive{background:#f2f4f7;color:#667085}.table-status,.empty-table{padding:30px!important;text-align:center!important;color:#667085}@media(max-width:760px){.organization-form{grid-template-columns:1fr}}.users-page{max-width:1200px}.user-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.field-help{display:block;margin-top:6px;color:#667085;font-size:12px}@media(max-width:760px){.user-form{grid-template-columns:1fr}}.hn-request-page{display:flex;flex-direction:column;gap:20px}.hn-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.hn-summary-card{display:flex;flex-direction:column;gap:6px}.hn-summary-card span{font-size:14px;font-weight:600}.hn-summary-card strong{font-size:34px;line-height:1}.hn-summary-card small{opacity:.65}.hn-status{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border-radius:999px;font-size:13px;font-weight:700}.hn-status-pending{background:#fff7db;color:#8a6500}.hn-status-processing{background:#e7f1ff;color:#1559a5}.hn-status-completed{background:#e7f7ed;color:#176c3a}.hn-status-rejected,.hn-status-cancelled{background:#fdecec;color:#a32929}.hn-empty-state{min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center}.hn-empty-state strong{font-size:18px}.hn-empty-state span{opacity:.7}@media(max-width:900px){.hn-summary-grid{grid-template-columns:1fr}}.patient-workflow{margin-top:20px;display:flex;flex-direction:column;gap:14px}.patient-status-box{display:flex;flex-direction:column;gap:5px;padding:14px 16px;border-radius:12px;border:1px solid transparent}.patient-status-box strong{font-size:15px}.patient-status-box span{font-size:13px;opacity:.8}.patient-status-success{background:#eaf8ef;border-color:#b9e4c8;color:#176c3a}.patient-status-warning{background:#fff8df;border-color:#efdda1;color:#7c5d00}.patient-status-info{background:#eaf3ff;border-color:#bdd7f7;color:#1559a5}.patient-next-action{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.patient-next-action small{opacity:.7}.lab-config-page{display:flex;flex-direction:column;gap:20px}.lab-config-header{display:flex;align-items:center;justify-content:space-between;gap:24px}.lab-config-header h1{margin:6px 0 8px}.lab-config-header p,.lab-package-summary p{margin:0;color:#64748b}.lab-config-alert{padding:14px 18px;border-radius:12px;font-weight:600}.lab-config-alert.success{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}.lab-config-alert.error{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.lab-package-tabs{display:flex;flex-wrap:wrap;gap:12px}.lab-package-tab{min-width:160px;padding:14px 18px;border:1px solid #e2e8f0;border-radius:14px;background:#fff;cursor:pointer;text-align:left}.lab-package-tab strong,.lab-package-tab span{display:block}.lab-package-tab strong{font-size:18px}.lab-package-tab span{margin-top:4px;color:#64748b}.lab-package-tab.active{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb14}.lab-package-tab.active strong{color:#2563eb}.lab-package-summary{display:flex;justify-content:space-between;align-items:center;gap:24px}.lab-package-summary h2{margin:5px 0}.lab-config-counts{display:flex;gap:12px}.lab-config-counts>div{min-width:100px;padding:12px 18px;border-radius:12px;background:#f8fafc;text-align:center}.lab-config-counts strong,.lab-config-counts span{display:block}.lab-config-counts strong{font-size:22px}.lab-config-counts span{margin-top:3px;color:#64748b;font-size:12px}.lab-config-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.lab-config-panel{min-width:0}.lab-config-panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.lab-config-panel-title h2{margin:4px 0 0}.lab-config-badge{padding:6px 10px;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:700}.lab-config-search{display:flex;gap:10px;margin-bottom:14px}.lab-config-search input{flex:1;min-width:0;padding:11px 13px;border:1px solid #cbd5e1;border-radius:10px;outline:none}.lab-config-search input:focus{border-color:#2563eb}.lab-search-results,.lab-selected-list{display:flex;flex-direction:column;gap:8px;max-height:360px;overflow-y:auto}.lab-result-row{width:100%;padding:12px 14px;border:1px solid #e2e8f0;border-radius:10px;background:#fff;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;cursor:pointer}.lab-result-row:hover:not(:disabled){border-color:#93c5fd;background:#f8fbff}.lab-result-row.selected{background:#f8fafc;cursor:default}.lab-result-row strong,.lab-result-row small,.lab-selected-row strong,.lab-selected-row small{display:block}.lab-result-row small,.lab-selected-row small{margin-top:3px;color:#64748b}.lab-selected-row{padding:12px 14px;border:1px solid #e2e8f0;border-radius:10px;display:flex;justify-content:space-between;align-items:center;gap:12px}.lab-remove-button{border:0;background:#fef2f2;color:#b91c1c;border-radius:8px;padding:7px 11px;cursor:pointer}.lab-empty{padding:24px;border:1px dashed #cbd5e1;border-radius:10px;color:#64748b;text-align:center}@media(max-width:1000px){.lab-config-columns{grid-template-columns:1fr}.lab-config-header,.lab-package-summary{align-items:stretch;flex-direction:column}}.patient-registry-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:20px}.registry-stat-card{background:var(--card-bg, #fff);border:1px solid rgba(0,0,0,.08);border-radius:16px;padding:20px}.registry-stat-label{font-size:14px;opacity:.72}.registry-stat-number{margin-top:8px;font-size:32px;font-weight:700;line-height:1}.registry-stat-unit{margin-top:6px;font-size:13px;opacity:.65}.registry-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px}.registry-search-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.registry-search-form input{min-width:320px}.registry-table-wrap{width:100%;overflow-x:auto}.registry-table{width:100%;border-collapse:collapse}.registry-table th,.registry-table td{padding:14px 12px;border-bottom:1px solid rgba(0,0,0,.08);text-align:left;vertical-align:middle}.registry-table th{font-size:13px;opacity:.7}.registry-status{display:inline-flex;align-items:center;border-radius:999px;padding:6px 10px;font-size:13px;font-weight:600}.registry-status-ready{background:#1987541f}.registry-status-waiting{background:#ffc1072e}.registry-pagination{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:20px}.registry-page-controls{display:flex;align-items:center;gap:12px}.registry-empty{padding:40px 20px;text-align:center;opacity:.7}.muted-text{opacity:.7}@media(max-width:900px){.patient-registry-summary{grid-template-columns:1fr}.registry-toolbar,.registry-search-form{align-items:stretch;flex-direction:column}.registry-search-form input{width:100%;min-width:0}.registry-pagination{align-items:stretch;flex-direction:column}.registry-page-controls{justify-content:space-between}}.lab-order-create-card,.lab-order-detail-card,.lab-history-card{margin-bottom:22px}.lab-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}.lab-section-heading h2{margin:5px 0 4px}.lab-section-heading p{margin:0;opacity:.68}.lab-step{display:inline-flex;padding:5px 10px;border-radius:999px;background:#0e69b41a;font-size:12px;font-weight:700;letter-spacing:.02em}.lab-selected-patient{display:flex;align-items:center;gap:16px;padding:18px;border:1px solid rgba(14,105,180,.18);border-radius:16px;background:#0e69b40a}.lab-patient-avatar{display:grid;width:52px;height:52px;flex:0 0 52px;place-items:center;border-radius:50%;background:#0e69b41f;font-size:22px;font-weight:800}.lab-patient-main{flex:1;min-width:0}.lab-patient-name{font-size:19px;font-weight:750}.lab-patient-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:5px;font-size:14px;opacity:.8}.lab-ready-text{font-weight:700}.lab-patient-search{display:flex;gap:10px}.lab-patient-search input{flex:1;min-width:0}.lab-patient-results{display:grid;gap:8px;margin-top:12px}.lab-patient-result{display:flex;width:100%;align-items:center;justify-content:space-between;gap:20px;padding:14px 16px;border:1px solid rgba(0,0,0,.09);border-radius:12px;background:#fff;text-align:left;cursor:pointer}.lab-patient-result:hover{border-color:#0e69b466;background:#0e69b408}.lab-patient-result div{display:grid;gap:3px}.lab-patient-result span{font-size:13px;opacity:.72}.lab-select-link{white-space:nowrap;font-weight:700}.lab-card-disabled{opacity:.62}.lab-package-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.lab-package-card{display:flex;min-height:145px;flex-direction:column;align-items:flex-start;gap:8px;padding:18px;border:1px solid rgba(0,0,0,.1);border-radius:16px;background:#fff;text-align:left;cursor:pointer}.lab-package-card:hover{border-color:#0e69b473}.lab-package-card.active{border:2px solid rgba(14,105,180,.72);background:#0e69b40b}.lab-package-code{display:inline-flex;padding:5px 9px;border-radius:8px;background:#0e69b41a;font-size:12px;font-weight:800}.lab-package-card strong{font-size:18px}.lab-package-card>span:not(.lab-package-code):not(.lab-package-action){font-size:13px;opacity:.68}.lab-package-action{margin-top:auto;font-size:13px;font-weight:750}.lab-selected-count,.lab-history-count{padding:8px 12px;border-radius:999px;background:#0000000d;font-size:13px;font-weight:700;white-space:nowrap}.lab-test-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.lab-test-panel{padding:18px;border:1px solid rgba(0,0,0,.08);border-radius:16px}.lab-test-panel h3{margin:0 0 4px}.lab-test-panel p{margin:0 0 14px}.lab-check-list{display:grid;gap:9px}.lab-check-card{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid rgba(0,0,0,.07);border-radius:11px;cursor:pointer}.lab-check-card:hover{background:#0e69b406}.lab-check-card input{margin-top:4px}.lab-check-card span{display:grid;gap:2px}.lab-check-card small{opacity:.62}.lab-clinical-note{display:grid;gap:7px;margin-top:20px}.lab-clinical-note textarea{width:100%;box-sizing:border-box;resize:vertical}.lab-clinical-note small{text-align:right;opacity:.6}.lab-submit-row{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:22px;padding-top:20px;border-top:1px solid rgba(0,0,0,.08)}.lab-submit-row>div{display:grid;gap:3px}.lab-submit-row span{font-size:13px;opacity:.7}.lab-submit-button{min-width:210px}.lab-order-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:20px}.lab-order-summary>div{display:grid;gap:5px;padding:14px;border-radius:12px;background:#00000009}.lab-order-summary span{font-size:12px;opacity:.65}.lab-status{display:inline-flex;width:fit-content;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:750;white-space:nowrap}.lab-status-waiting{background:#ffc1072e}.lab-status-success{background:#19875424}.lab-status-info{background:#0d6efd1f}.lab-status-danger{background:#dc35451f}.lab-empty-box{padding:24px;border:1px dashed rgba(0,0,0,.15);border-radius:12px;text-align:center;opacity:.68}.lab-history-table td{white-space:nowrap}.lab-history-table td:nth-child(3){white-space:normal;min-width:180px}@media(max-width:900px){.lab-test-layout,.lab-order-summary{grid-template-columns:1fr}.lab-selected-patient,.lab-submit-row,.lab-section-heading{align-items:stretch;flex-direction:column}.lab-patient-search{flex-direction:column}.lab-submit-button{width:100%}}
