:root{--primary:#0f766e;--primary-dark:#115e59;--accent:#14b8a6;--bg:#f4f7f9;--surface:#fff;--text:#18323b;--muted:#6b7f87;--border:#dbe5e8;--danger:#b42318;--warning:#9a6700;--success:#067647;--shadow:0 10px 30px rgba(15,55,60,.08)}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:245px;background:#0b2f35;color:#e8fbfa;display:flex;flex-direction:column;z-index:20}.brand{height:82px;display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid rgba(255,255,255,.1)}.brand-mark{width:44px;height:44px;border-radius:14px;background:linear-gradient(135deg,var(--accent),#5eead4);color:#08333a;display:grid;place-items:center;font-size:23px;font-weight:900}.brand strong,.brand small{display:block}.brand small{opacity:.7;margin-top:3px}.sidebar nav{padding:15px 10px;overflow:auto}.sidebar nav a{display:flex;align-items:center;gap:11px;padding:11px 13px;margin:3px 0;border-radius:10px;font-size:14px;color:#cce7e5}.sidebar nav a:hover,.sidebar nav a.active{background:rgba(20,184,166,.18);color:#fff}.sidebar nav a span{width:23px;text-align:center}.sidebar-footer{margin-top:auto;padding:16px 20px;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;align-items:center}.sidebar-footer small{max-width:130px}.sidebar-footer a{color:#8ce9df}.main{margin-left:245px;min-height:100vh;display:flex;flex-direction:column}.topbar{height:82px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 28px;gap:15px;position:sticky;top:0;z-index:10}.topbar h1{font-size:23px;margin:0}.topbar p{margin:4px 0 0;color:var(--muted);font-size:13px}.user-chip{margin-left:auto;text-align:right}.user-chip b,.user-chip small{display:block}.user-chip small{color:var(--muted);margin-top:3px}.menu-btn{display:none;border:0;background:none;font-size:23px}.content{padding:25px;flex:1}footer{padding:18px 25px;color:var(--muted);font-size:12px}.grid{display:grid;gap:18px}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);padding:20px}.stat{position:relative;overflow:hidden}.stat .label{color:var(--muted);font-size:13px}.stat .value{font-size:29px;font-weight:800;margin-top:9px}.stat .hint{font-size:12px;color:var(--muted);margin-top:8px}.stat .icon{position:absolute;right:16px;top:15px;font-size:28px;opacity:.25}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:24px 0 12px}.section-head h2{font-size:18px;margin:0}.actions{display:flex;gap:8px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;border-radius:9px;padding:9px 14px;font-weight:650;font-size:13px;cursor:pointer;background:#edf3f4;color:var(--text)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-danger{background:#fff1f0;color:var(--danger);border-color:#ffd5d2}.btn-sm{padding:6px 9px;font-size:12px}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--border);border-radius:14px}table{width:100%;border-collapse:collapse;min-width:800px}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid #edf1f2;font-size:13px;vertical-align:top}th{background:#f8fbfb;color:#587078;font-size:12px;text-transform:uppercase;letter-spacing:.03em}tr:last-child td{border-bottom:0}.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:750}.badge-success{background:#dcfae6;color:var(--success)}.badge-warning{background:#fff4cc;color:var(--warning)}.badge-muted{background:#edf1f2;color:#5f747b}.form-card{max-width:1000px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group.full{grid-column:1/-1}label{font-size:13px;font-weight:650}input,select,textarea{width:100%;border:1px solid #cbd8dc;border-radius:9px;padding:10px 11px;background:#fff;color:var(--text);font:inherit}textarea{min-height:90px;resize:vertical}input:focus,select:focus,textarea:focus{outline:3px solid rgba(20,184,166,.14);border-color:var(--accent)}.alert{padding:12px 15px;border-radius:10px;margin-bottom:16px}.alert-success{background:#e8fff1;color:#067647}.alert-danger{background:#fff0ef;color:#b42318}.alert-warning{background:#fff7db;color:#8a6100}.empty{text-align:center;padding:35px;color:var(--muted)}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:13px}.filters input,.filters select{max-width:220px}.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr}.login-hero{background:linear-gradient(135deg,#062f36,#0f766e);color:#fff;padding:8vw;display:flex;flex-direction:column;justify-content:center}.login-hero h1{font-size:46px;line-height:1.05;margin:20px 0 15px}.login-hero p{max-width:560px;color:#ccefed;line-height:1.7}.login-panel{background:#fff;display:grid;place-items:center;padding:30px}.login-box{width:min(420px,100%)}.login-box h2{font-size:29px;margin-bottom:7px}.login-box>p{color:var(--muted);margin-top:0;margin-bottom:26px}.login-box .form-group{margin-bottom:15px}.login-box button{width:100%;padding:12px;margin-top:5px}.quick-links{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.quick-link{background:#fff;border:1px solid var(--border);border-radius:13px;padding:17px;box-shadow:var(--shadow)}.quick-link b{display:block;margin-bottom:5px}.quick-link small{color:var(--muted)}.patient-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.patient-name{font-size:24px;font-weight:800}.muted{color:var(--muted)}.metric-line{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid #edf1f2}.metric-line:last-child{border-bottom:0}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.tabs a{padding:8px 12px;border-radius:8px;background:#eaf0f1;font-size:13px}.tabs a.active{background:var(--primary);color:#fff}@media(max-width:1100px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(2,1fr)}}@media(max-width:800px){.sidebar{transform:translateX(-100%);transition:.2s}.menu-open .sidebar{transform:translateX(0)}.main{margin-left:0}.menu-btn{display:block}.content{padding:16px}.grid-4,.grid-3,.grid-2,.form-grid{grid-template-columns:1fr}.login-page{grid-template-columns:1fr}.login-hero{display:none}.topbar{padding:0 16px}.topbar h1{font-size:19px}.user-chip b{font-size:12px}.quick-links{grid-template-columns:1fr}}
.sidebar-footer{flex-direction:column;align-items:flex-start;gap:8px}.sidebar-footer small{max-width:100%;font-weight:700}@media print{.sidebar,.topbar,.btn,.filters,form,footer{display:none!important}.main{margin-left:0}.content{padding:0}.card,.table-wrap{box-shadow:none;border-color:#bbb}.grid{display:block}.card{margin-bottom:12px}body{background:#fff;color:#000}table{min-width:0;font-size:11px}}

/* Workflow: make the first patient-arrival action easy to identify */
.workflow-first{grid-column:span 2;border-width:2px;font-size:1.02rem}.workflow-first b{font-size:1.05rem}
@media(max-width:700px){.workflow-first{grid-column:span 1}}

/* Workflow: Step 2 triage */
.workflow-second{border-width:2px}.workflow-action{border-color:rgba(15,118,110,.35);background:#e8fffb;color:var(--primary-dark)}
.workflow-note{background:#f0fdfa;border:1px solid #99f6e4;border-radius:12px;padding:12px 14px;color:#115e59;font-size:13px;line-height:1.5}
.charge-box{background:#f8fbfb;border:1px solid var(--border);border-radius:12px;padding:14px}.charge-box label{font-size:14px}.charge-box small{display:block;color:var(--muted);margin-top:6px;line-height:1.4}
.workflow-third{border-width:2px;border-color:rgba(15,118,110,.35)}
.doctor-next-step{margin-top:4px;padding:16px;border:1px solid #99f6e4;border-radius:13px;background:#f0fdfa}
.doctor-next-step h3{margin:0 0 5px}.doctor-next-step p{margin:0 0 13px}.doctor-route-actions{display:flex;gap:10px;flex-wrap:wrap}.doctor-route-actions .btn{min-height:44px}.route-lab,.route-pharmacy{padding-left:18px;padding-right:18px}
@media(max-width:700px){.doctor-route-actions{flex-direction:column}.doctor-route-actions .btn{width:100%}}

/* Workflow: Step 4 laboratory */
.workflow-fourth{border-width:2px;border-color:rgba(15,118,110,.35)}

/* Workflow: doctor review after laboratory */
.lab-advice-box{background:#f0fdfa;border:1px solid #99f6e4;border-radius:12px;padding:15px}.lab-advice-box label{font-size:14px}.lab-advice-box small{display:block;color:#496b6d;margin-top:6px;line-height:1.45}

/* Profit dashboard */
.profit-card .metric-line{padding:8px 0;border-bottom:1px solid rgba(127,127,127,.14)}
.profit-card .metric-line:last-child{border-bottom:0}
.profit-card .finance-total{margin-top:4px;padding-top:11px;border-top:1px solid rgba(127,127,127,.22)}
.profit-card .finance-net{margin-top:6px;padding:12px 10px;border-radius:10px;background:rgba(127,127,127,.08);font-size:1.05rem}

/* Clickable dashboard cards */
.dashboard-click-card{cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
.dashboard-click-card:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 14px 34px rgba(15,55,60,.13)}
.dashboard-click-card:focus{outline:3px solid rgba(20,184,166,.22);outline-offset:2px;border-color:var(--accent)}
.dashboard-click-card .hint{pointer-events:none}
.dashboard-click-card .quick-links,.dashboard-click-card .quick-links a{pointer-events:auto}
@media (prefers-reduced-motion:reduce){.dashboard-click-card{transition:none}.dashboard-click-card:hover{transform:none}}

/* Drill-down filters used on dashboard destination pages */
.filters label{display:flex;align-items:center;gap:7px;white-space:nowrap;color:var(--muted)}
.filters label input{width:155px;max-width:155px}
.filters .btn{align-self:center}
@media(max-width:800px){.filters label{width:100%;justify-content:space-between}.filters label input{width:62%;max-width:none}.filters input,.filters select{max-width:none;flex:1 1 180px}}
