*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f0f2f5;--surface:#fff;--surface2:#f7f8fa;--surface3:#eef0f3;--border:#00000012;--border2:#0000001f;--text:#111827;--text2:#4b5563;--text3:#9ca3af;--green:#0277c0;--green-h:#0265a3;--green-bg:#e8f4fc;--green-border:#7ec4e8;--green-dark:#014f80;--amber:#92400e;--amber-bg:#fffbeb;--red:#b91c1c;--red-bg:#fef2f2;--blue:#1d4ed8;--blue-bg:#eff6ff;--r:8px;--rlg:12px;--rxl:16px;--sidebar:200px;--topbar:50px;--font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono:"SF Mono", "Monaco", "Consolas", monospace;--shadow:0 1px 2px #0000000d, 0 2px 8px #0000000a;--shadow2:0 2px 12px #00000014}html,body{height:100%;font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;overflow:hidden}#root{height:100%}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--surface2)}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text3)}.ant-form-item-label>label,.ant-form-item .ant-form-item-label>label{color:#111827!important}.ant-input-search .ant-input{border-right:none!important;border-radius:8px 0 0 8px!important}.ant-input-search .ant-input:focus,.ant-input-search .ant-input:hover{border-color:var(--green)!important;box-shadow:none!important}.ant-input-search>.ant-input-group>.ant-input-group-addon:last-child .ant-input-search-button{transition:background .2s;background-color:var(--green)!important;border-color:var(--green)!important;color:#fff!important;box-shadow:none!important;border-radius:0 8px 8px 0!important}.ant-input-search>.ant-input-group>.ant-input-group-addon:last-child .ant-input-search-button:hover{background-color:var(--green-h)!important;border-color:var(--green-h)!important}.ant-input-search .ant-input-affix-wrapper{border-radius:8px 0 0 8px!important}.ant-input-search .ant-input-affix-wrapper:focus,.ant-input-search .ant-input-affix-wrapper-focused{border-color:var(--green)!important;box-shadow:none!important}.ant-btn{min-height:36px}.fade-in{animation:.2s fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.ant-table-tbody>tr:nth-child(2n)>td{background-color:#fafafa}.ant-table-tbody>tr:nth-child(odd)>td{background-color:#fff}.ant-table-tbody>tr:hover>td{background-color:#f0f2f5!important}.sidebar{border-right:1px solid var(--border);box-shadow:none;grid-row:1/3;overflow:hidden}.sidebar .ant-layout-sider-children{flex-direction:column;height:100%;display:flex}.sidebar .ant-menu{border-inline-end:none}.logo-container{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px;display:flex}.logo{flex:1;align-items:center;gap:0;min-width:0;display:flex}.logo-img{object-fit:contain;width:auto;height:24px;display:block}.logo-text{letter-spacing:-.3px;color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:700;overflow:hidden}.sidebar.ant-layout-sider-collapsed .logo{justify-content:center}.sidebar.ant-layout-sider-collapsed .logo-text{font-size:22px;line-height:1}.toggle-btn{width:28px;height:28px;color:var(--text3);cursor:pointer;background:0 0;border:none;border-radius:6px;transition:all .15s}.toggle-btn:hover{background:var(--surface2);color:var(--text)}.sidebar-menu{flex:1;padding:8px;overflow-y:auto}.sidebar-menu.ant-menu-inline-collapsed{width:auto}.sidebar-menu .ant-menu-item,.sidebar-menu .ant-menu-submenu-title{border-radius:8px;width:100%;min-height:38px;margin-inline:0;font-size:14px}.sidebar-menu .ant-menu-item-selected{background:var(--green-bg);color:var(--green-dark)}.sidebar-menu .ant-menu-item-selected a,.sidebar-menu .ant-menu-submenu-selected>.ant-menu-submenu-title{color:var(--green-dark)}.sidebar-menu .ant-menu-submenu-arrow{color:currentColor}.user-section{border-top:1px solid var(--border);align-items:center;gap:12px;padding:16px;display:flex}.user-avatar{background:var(--green);flex-shrink:0}.user-info{flex-direction:column;gap:2px;min-width:0;display:flex}.user-name,.user-role{font-size:14px;display:block}.sidebar-footer{border-top:1px solid var(--border);flex-direction:column;align-items:center;gap:6px;padding:12px;display:flex}.sidebar-hotline{border:1px solid var(--border2);background:var(--surface);width:100%;color:var(--text);border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:6px 10px;font-size:13px;font-weight:500;text-decoration:none;transition:background .15s;display:flex}.sidebar-hotline:hover{background:var(--surface2);color:var(--text)}.sidebar-hotline-hint{color:var(--text3);text-align:center;font-size:11px;line-height:1.4}.sidebar-version{color:var(--text3);text-align:center;font-size:11px}.app{grid-template-columns:var(--sidebar) 1fr;grid-template-rows:auto minmax(0,1fr);height:100vh;transition:grid-template-columns .2s;display:grid}.app.sidebar-collapsed{grid-template-columns:80px 1fr}.content{grid-template-rows:1fr auto;grid-template-columns:1fr;display:grid;overflow:hidden}.left{flex-direction:column;gap:12px;padding:14px 16px 20px;display:flex;overflow-y:auto}.right{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;display:flex;overflow-y:auto}.topbar-shell{background:var(--bg);flex-direction:column;display:flex}.topbar-global{background:var(--surface);border-bottom:1px solid var(--border);min-height:56px;box-shadow:var(--shadow);z-index:2;justify-content:space-between;align-items:center;gap:16px;padding:12px 28px;display:flex}.topbar-spacer{flex:1}.topbar-page{background:var(--bg);justify-content:space-between;align-items:center;gap:16px;padding:16px;display:flex}.topbar-page-copy{min-width:0}.topbar-left-section{align-items:center;gap:24px;min-width:0;display:flex}.topbar-doctor-info{align-items:center;gap:8px;display:flex}.topbar-doctor-meta{flex-direction:column;gap:1px;display:flex}.topbar-doctor-session{color:var(--text3);font-size:11px;line-height:1}.topbar-doctor-name{color:var(--text);white-space:nowrap;font-size:13px;font-weight:600;line-height:1}.topbar-date-tag{color:#6b7280;white-space:nowrap;text-transform:capitalize;background:#f3f4f6;border-radius:999px;align-items:center;padding:3px 10px;font-size:13px;font-weight:500;display:inline-flex}.topbar-right{justify-content:flex-end;align-items:center;gap:12px;min-width:0;display:flex}.breadcrumb{align-items:center;gap:6px;margin-bottom:6px;font-size:14px;display:flex}.bc-back{color:var(--text2);cursor:pointer;align-items:center;gap:3px;display:flex}.bc-back:hover{color:var(--text)}.bc-sep{color:var(--border2)}.bc-cur{color:var(--text2);font-weight:500}.acts{flex-shrink:0;gap:8px;display:flex}.topbar-search{width:320px}.topbar-user{padding-left:4px}.topbar-user-meta{flex-direction:column;align-items:flex-start;min-width:0;display:flex}.topbar-user-name{color:#374151;font-size:14px}.topbar-user-avatar{background:var(--green);flex-shrink:0}.topbar-title{letter-spacing:-.03em;color:var(--text);font-size:24px;font-weight:700;line-height:1.2}@media (width<=960px){.topbar-global{min-height:76px;padding:12px 18px}.topbar-search{width:220px}}@media (width<=768px){.topbar-global{flex-wrap:wrap;min-height:auto;padding:14px}.topbar-page-copy{order:0;width:100%}.topbar-spacer{display:none}.topbar-right{flex-wrap:wrap;order:1;justify-content:flex-end;width:100%}.topbar-search{order:1;width:100%}.topbar-user{order:2;margin-left:auto}.acts{order:0;width:100%;margin-bottom:8px}}.btn{border-radius:var(--r);cursor:pointer;border:1px solid var(--border2);background:var(--surface);color:var(--text);font-size:14px;font-weight:500;font-family:var(--font);padding:5px 12px;transition:all .12s}.btn:hover{background:var(--surface2)}.btn-g{background:var(--green);color:#fff;border-color:var(--green)}.btn-g:hover{background:var(--green-h)}.btn-ghost{color:var(--text2);border-color:#0000}.btn-ghost:hover{background:var(--surface2)}.btn-ol{border-color:var(--green);color:var(--green)}.btn-ol:hover{background:var(--green-bg)}.appointment-form .form-section{margin-bottom:8px}.appointment-form .doctor-radio-group .doctor-radio-item-compact{border:1px solid #e5e7eb;border-radius:8px;align-items:center;margin:0;padding:8px 10px;transition:border-color .2s,background .2s;display:flex}.appointment-form .doctor-radio-group .doctor-radio-item-compact:hover,.appointment-form .doctor-radio-group .ant-radio-wrapper-checked.doctor-radio-item-compact{background:#f0f9ff;border-color:#0277c0}.appointment-filters{margin-bottom:16px}.appointment-page-card{border-radius:var(--rlg);box-shadow:var(--shadow)}.appointment-page-card .ant-card-body{padding:16px}.appointment-table .ant-table-wrapper,.appointment-table .ant-spin-nested-loading,.appointment-table .ant-spin-container{width:100%}.appointment-table .ant-table{background:0 0}.appointment-table .ant-table-thead>tr>th{color:#6b7280;letter-spacing:.5px;background:#fafafa;padding:12px 16px;font-size:14px;font-weight:600}.appointment-table .ant-table-tbody>tr>td{padding:12px 16px}.appointment-table .ant-table-tbody>tr:hover>td{background:#f9fafb}.calendar-view{min-height:400px;padding:40px}.stats-card{border:2px solid #0000;border-radius:8px;transition:all .2s}.stats-card:hover{transform:translateY(-1px);box-shadow:0 2px 8px #00000014}.stats-card-active{box-shadow:0 2px 8px #0f172a14}.stats-card-active .stats-label{color:#111827;font-weight:600}.stats-card-pending.stats-card-active-pending{background:linear-gradient(#faad1424 0%,#faad140f 100%);border-color:#faad14;box-shadow:0 8px 24px #faad142e}.stats-card-confirmed.stats-card-active-confirmed{background:linear-gradient(#1677ff24 0%,#1677ff0f 100%);border-color:#1677ff;box-shadow:0 8px 24px #1677ff2e}.stats-card-in-progress.stats-card-active-in-progress{background:linear-gradient(#722ed124 0%,#722ed10f 100%);border-color:#722ed1;box-shadow:0 8px 24px #722ed12e}.stats-card-completed.stats-card-active-completed{background:linear-gradient(#52c41a24 0%,#52c41a0f 100%);border-color:#52c41a;box-shadow:0 8px 24px #52c41a2e}.stats-card-today.stats-card-active-today{background:linear-gradient(#3b82f624 0%,#3b82f60f 100%);border-color:#3b82f6;box-shadow:0 8px 24px #3b82f62e}.stats-card .ant-card-body{padding:10px 12px}.stats-icon{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.stats-value{font-size:22px;font-weight:600;line-height:1.2}.stats-label{color:#6b7280;white-space:nowrap;font-size:11px;line-height:1.3}@media (width<=768px){.appointment-filters{flex-direction:column}.appointment-filters>div{width:100%!important}}.preview-image-only .ant-upload-list-picture .ant-upload-list-item-thumbnail img{object-fit:contain;width:24px;height:24px}.preview-image-only .ant-upload-list-item{cursor:pointer}.preview-image-only .ant-upload-list-item:hover{background-color:#f5f5f5}.consultation-content{overflow-y:auto}.consultation-shell{width:100%}.consultation-shell-embedded{padding-bottom:8px}.consultation-patient-header{background:#fff;border:1px solid #e5e7eb;border-radius:8px;grid-column:1/-1;align-items:center;gap:12px;padding:10px 14px;display:flex;overflow-x:auto}.cph-left{flex-direction:column;flex-shrink:0;gap:2px;display:flex}.cph-top-row{flex-wrap:nowrap;align-items:center;display:flex}.cph-name{color:#0f172a;white-space:nowrap;font-size:15px;font-weight:600}.cph-sub-row{color:#6b7280;white-space:nowrap;font-size:12.5px}.cph-sep{background:#e5e7eb;flex-shrink:0;width:1px;height:28px;display:inline-block}.cph-info-group{flex-shrink:0;align-items:center;gap:8px;display:flex}.cph-icon{color:#9ca3af;font-size:16px}.cph-chip{white-space:nowrap;flex-direction:column;gap:1px;display:flex}.cph-label{color:#9ca3af;text-transform:uppercase;letter-spacing:.03em;font-size:10px;font-weight:500;line-height:1}.cph-value{color:#111827;font-size:13px;font-weight:600;line-height:1.3}.consultation-layout-with-sidebar{grid-template-columns:1fr 360px;align-items:stretch;gap:10px;height:100%;padding-right:10px;display:grid}.consultation-center-panel{flex-direction:column;gap:10px;min-width:0;display:flex}.consultation-main-content{flex-direction:column;flex:1;gap:16px;min-width:0;display:flex}.consultation-sidebar{flex-direction:column;flex-shrink:0;width:360px;display:flex}.consultation-sidebar .ant-card-body{flex-direction:column;flex:1;display:flex;overflow-y:auto}.consultation-card .ant-card-head{min-height:36px;padding:0 10px}.consultation-card .ant-card-head-title{padding:8px 0;font-size:16px;font-weight:600}.consultation-card .ant-card-body{padding:10px}.consultation-center-panel>.consultation-card{flex-direction:column;display:flex}.consultation-center-panel>.consultation-card .ant-card-body{flex:1}.consultation-card .ant-timeline{margin-top:0}.consultation-card .ant-timeline-item{padding-bottom:8px}.consultation-card .ant-timeline-item-content{margin-left:20px}.prescription-table-wrapper{max-height:280px;overflow-y:auto}.compact-dragger .ant-upload-drag{min-height:100px!important;padding:8px!important}.compact-dragger .ant-upload-drag-icon{margin-bottom:2px!important}.ant-upload-drag{background:#fafafa!important;border:1px dashed #d9d9d9!important;padding:12px!important}.ant-upload-drag:hover{border-color:#0277c0!important}.ant-upload-drag-icon{margin-bottom:4px!important}.ant-upload-text{color:#6b7280;margin:2px 0!important;font-size:14px!important}.ant-upload-hint{color:#999;font-size:10px!important}.ant-upload-list-item-name{color:#0277c0!important;cursor:pointer!important}.ant-upload-list-item-name:hover{text-decoration:underline;color:#0891b2!important}@media (width<=1400px){.consultation-sidebar{width:280px}}@media (width<=1200px){.consultation-layout-with-sidebar{flex-direction:column}.consultation-sidebar{order:-1;width:100%;max-height:none;position:relative;top:0}.consultation-row{flex-direction:column}.consultation-row>.consultation-card{flex:100%!important;height:auto!important}}@media (width<=768px){.consultation-row{flex-direction:column}.consultation-row>.consultation-card{height:auto!important}}.patient-dropdown{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);z-index:100;max-height:300px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden auto;box-shadow:0 4px 16px #0000001a}.patient-dropdown-item{cursor:pointer;padding:10px 12px;transition:background .1s}.patient-dropdown-item:hover{background:var(--surface2)}.patient-dropdown-item+.patient-dropdown-item{border-top:1px solid var(--border)}.patient-name{color:var(--text);font-size:14px;font-weight:500}.patient-meta{color:var(--text3);margin-top:2px;font-size:10px}.selected-patient{padding:8px 0}.selected-patient-header{background:var(--green-bg);border:1px solid var(--green-border);border-radius:var(--r);align-items:center;gap:10px;padding:8px 10px;display:flex}.patient-avatar{color:#fff;background:#9ca3af;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:14px;font-weight:700;display:flex}.patient-details{flex:1;min-width:0}.patient-details .patient-name{color:var(--green-dark);font-size:14px;font-weight:600}.patient-details .patient-meta{color:var(--green);margin-top:1px;font-size:10.5px}.btn-change{border:1px solid var(--green-border);color:var(--green-dark);cursor:pointer;font-size:14px;font-family:var(--font);white-space:nowrap;background:#fff;border-radius:5px;padding:3px 8px}.medicine-table-container{margin-bottom:10px;overflow-x:auto}.medicine-table{border-collapse:collapse;width:100%}.medicine-table th{color:var(--text3);text-align:left;border-bottom:1px solid var(--border);background:var(--surface2);text-transform:uppercase;letter-spacing:.04em;padding:6px 8px;font-size:10px;font-weight:600}.medicine-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:7px 8px;font-size:14px}.medicine-table tr:last-child td{border-bottom:none}.medicine-table tr:hover td{background:#0277c008}.ti{background:var(--surface2);border:1px solid var(--border);width:100%;font-size:14px;font-family:var(--font);color:var(--text);border-radius:5px;outline:none;padding:4px 7px}.ti:focus{border-color:var(--green)}.del{border:1px solid var(--border);cursor:pointer;width:24px;height:24px;color:var(--red);background:#fff;border-radius:5px;justify-content:center;align-items:center;font-size:15px;line-height:1;transition:all .12s;display:flex}.del:hover{background:var(--red-bg);border-color:var(--red)}.add-med-btn{margin-top:8px}.pharmacy-search{margin-bottom:16px}.pharmacy-search-input{flex:1;min-width:260px}.pharmacy-search-select{min-width:180px}.pharmacy-card{border-radius:var(--rlg);box-shadow:var(--shadow)}.pharmacy-card .ant-card-body{padding:16px}.pharmacy-table .ant-table-wrapper,.pharmacy-table .ant-spin-nested-loading,.pharmacy-table .ant-spin-container{width:100%}.pharmacy-table .ant-table{background:0 0}@media (width<=768px){.pharmacy-search-input,.pharmacy-search-select{width:100%}}.users-card{border:1px solid var(--border);border-radius:8px;box-shadow:0 1px 2px #00000008,0 1px 6px -1px #00000005}.users-search{margin-bottom:16px}.users-search-input{flex:1;min-width:200px}.users-search-select{min-width:160px}.users-table{margin-top:16px}@media (width<=768px){.users-search{flex-direction:column}.users-search-input,.users-search-select{width:100%}}.choose-user-root{background:#f0f5fa;justify-content:center;align-items:center;min-height:100vh;padding:40px 24px;display:flex}.choose-user-container{flex-direction:column;align-items:center;width:100%;max-width:900px;display:flex}.choose-user-title{text-align:center;letter-spacing:-.3px;color:#0d1b2a!important;margin-bottom:8px!important;font-size:32px!important;font-weight:600!important}.choose-user-subtitle{text-align:center;margin-bottom:48px;font-size:15px;color:#7a8fa6!important}.choose-user-grid{flex-wrap:wrap;justify-content:center;gap:28px;display:flex}.choose-user-card{all:unset;cursor:pointer;background:#fff;border:2px solid #e4ecf3;border-radius:12px;flex-direction:column;align-items:center;gap:12px;width:140px;padding:24px 16px;transition:border-color .2s,box-shadow .2s,transform .2s;display:flex;box-shadow:0 2px 8px #0277c00f}.choose-user-card:hover{border-color:#0277c0;transform:translateY(-4px)scale(1.03);box-shadow:0 6px 20px #0277c02e}.choose-user-card:hover .choose-user-avatar{box-shadow:0 0 0 3px #0277c0,0 0 14px #0277c04d}.choose-user-card:hover .choose-user-name,.choose-user-card:hover .choose-user-role{color:#0277c0!important}.choose-user-card:focus-visible{outline-offset:2px;outline:2px solid #0277c0}.choose-user-card.selected{background:#e8f4fd;border-color:#0277c0;transform:translateY(-4px)scale(1.03);box-shadow:0 6px 20px #0277c033}.choose-user-avatar-wrapper{display:inline-flex;position:relative}.choose-user-avatar{flex-shrink:0;transition:box-shadow .2s;font-size:36px!important;font-weight:700!important}.choose-user-avatar-ring{display:none}.choose-user-name{text-align:center;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:120px;font-size:14px;font-weight:500;line-height:1.4;display:-webkit-box;overflow:hidden;color:#1a2e42!important}.choose-user-role{text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:12px;overflow:hidden;color:#7a8fa6!important}.choose-user-phone{text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:11px;overflow:hidden;color:#9aafbf!important}.selected .choose-user-name,.selected .choose-user-role{color:#0277c0!important}.choose-user-footer{justify-content:center;margin-top:48px;display:flex}.choose-user-confirm-btn{min-width:160px;height:44px;font-size:15px;font-weight:500;border-radius:8px!important}@media (width<=480px){.choose-user-title{font-size:24px!important}.choose-user-grid{gap:20px}.choose-user-card{width:110px;padding:16px 12px}}.user-otp-root{background:#f0f5fa;justify-content:center;align-items:center;min-height:100vh;padding:40px 24px;display:flex}.user-otp-card{background:#fff;border:1px solid #e4ecf3;border-radius:16px;flex-direction:column;align-items:center;gap:0;width:100%;max-width:420px;padding:40px 48px;display:flex;position:relative;box-shadow:0 4px 24px #0277c014}.user-otp-back{all:unset;cursor:pointer;color:#7a8fa6;align-items:center;gap:6px;font-size:13px;transition:color .15s;display:flex;position:absolute;top:20px;left:20px}.user-otp-back:hover{color:#0277c0}.user-otp-avatar-wrap{margin-top:8px;margin-bottom:16px;font-size:32px}.user-otp-name{text-align:center;color:#0d1b2a!important;margin:0 0 4px!important}.user-otp-position{text-align:center;margin-bottom:24px;font-size:13px;display:block;color:#7a8fa6!important}.user-otp-desc{text-align:center;flex-direction:column;align-items:center;gap:4px;margin-bottom:28px;display:flex}.user-otp-desc-text{font-size:14px;color:#4a6278!important}.user-otp-phone{font-size:15px;color:#0277c0!important}.user-otp-phone-missing{font-size:13px;color:#c0392b!important}.user-otp-inputs{gap:10px;margin-bottom:20px;display:flex}.user-otp-digit{color:#0d1b2a;text-align:center;caret-color:#0277c0;background:#f7fafd;border:2px solid #dde6ef;border-radius:10px;outline:none;width:48px;height:56px;font-size:22px;font-weight:600;transition:border-color .15s,box-shadow .15s,background .15s}.user-otp-digit:focus{background:#fff;border-color:#0277c0;box-shadow:0 0 0 3px #0277c01f}.user-otp-digit.filled{background:#e8f4fd;border-color:#0277c0}.user-otp-resend{text-align:center;margin-bottom:28px}.user-otp-resend-text{font-size:13px;color:#7a8fa6!important}.user-otp-countdown{color:#0277c0!important}.user-otp-resend-btn{all:unset;cursor:pointer;color:#0277c0;font-size:13px;font-weight:500;text-decoration:underline;transition:opacity .15s}.user-otp-resend-btn:hover{opacity:.75}.user-otp-confirm-btn{border-radius:8px!important;height:44px!important;font-size:15px!important;font-weight:500!important}@media (width<=480px){.user-otp-card{padding:32px 24px}.user-otp-digit{width:40px;height:48px;font-size:18px}.user-otp-inputs{gap:8px}}
