:root{
    --bg:#EEF2F5; --panel:#FFFFFF; --ink:#15242F; --soft:#5C6B77; --faint:#8A98A3;
    --line:#E0E6EB; --line2:#EDF1F4;
    --teal:#0E7C86; --teal-d:#0A5C63; --indigo:#3F51B5; --amber:#C8741B; --plum:#7A4A8C;
    --green:#2E7D52; --red:#C0392B; --rose:#D6336C;
    --side:#12303A; --side-d:#0C242C; --side-ink:#CBD9DF; --side-act:#1C4B58;
    --danger-bg:#FBEAE7; --danger-ink:#922018; --warn-bg:#FBF0E2; --warn-ink:#8A4D0E; --ok-bg:#E7F2EC; --ok-ink:#1E5638;
    --shadow:0 1px 2px rgba(20,36,47,.08),0 4px 16px rgba(20,36,47,.05); --r:14px;
  }
  *{box-sizing:border-box} html,body{margin:0;height:100%}
  body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,system-ui,sans-serif;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
  .layout{display:flex;min-height:100vh}
  aside{width:246px;flex-shrink:0;background:linear-gradient(180deg,var(--side),var(--side-d));color:var(--side-ink);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
  .brand{padding:22px 22px 16px;color:#fff;font-weight:800;font-size:19px;letter-spacing:-.3px;display:flex;align-items:center;gap:10px}
  .brand .dot{width:11px;height:11px;border-radius:50%;background:#4FD0C5;box-shadow:0 0 0 4px rgba(79,208,197,.18)}
  nav.side{padding:6px 12px;flex:1;overflow:auto}
  nav.side a{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:10px;color:var(--side-ink);text-decoration:none;font-weight:600;font-size:14.5px;cursor:pointer;margin-bottom:2px}
  nav.side a .ic,.side-foot a .ic{font-size:18px;width:22px;text-align:center}
  nav.side a:hover,.side-foot a:hover{background:rgba(255,255,255,.06);color:#fff}
  nav.side a.active{background:var(--side-act);color:#fff}
  .side-foot{padding:12px;border-top:1px solid rgba(255,255,255,.08)}
  .side-foot a{display:flex;align-items:center;gap:10px;padding:9px 13px;border-radius:9px;color:var(--side-ink);text-decoration:none;font-size:14px;cursor:pointer}
  main{flex:1;min-width:0;display:flex;flex-direction:column}
  .topbar{display:flex;align-items:center;justify-content:space-between;padding:20px 30px 8px;gap:18px}
  .topbar h1{margin:0;font-size:24px;font-weight:800;letter-spacing:-.4px}.topbar .date{color:var(--soft);font-weight:600}
  .top-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.content{padding:14px 30px 50px;max-width:1280px;width:100%}
  .card{background:var(--panel);border-radius:var(--r);box-shadow:var(--shadow);padding:20px}.card h3{margin:0 0 14px;font-size:13px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--soft)}
  .grid{display:grid;gap:16px}.stat-row{grid-template-columns:repeat(4,1fr)}.two-col{grid-template-columns:1fr 1fr}.three-col{grid-template-columns:1.25fr 1fr}.four-col{grid-template-columns:repeat(4,1fr)}
  @media(max-width:1080px){.stat-row,.four-col{grid-template-columns:repeat(2,1fr)}.two-col,.three-col{grid-template-columns:1fr}aside{width:218px}.content{padding:14px 20px 40px}}
  .mb{margin-bottom:16px}.stat{position:relative;overflow:hidden}.stat .label{font-size:13px;font-weight:700;color:var(--soft);text-transform:uppercase;letter-spacing:.4px}.stat .value{font-size:34px;font-weight:800;letter-spacing:-1px;margin-top:6px;line-height:1}.stat .value small{font-size:16px;font-weight:700;color:var(--soft)}.stat .sub{font-size:13px;color:var(--soft);margin-top:6px}.accent{height:4px;border-radius:4px;width:46px;margin-top:14px}
  .a-teal{background:var(--teal)}.a-indigo{background:var(--indigo)}.a-amber{background:var(--amber)}.a-plum{background:var(--plum)}.a-green{background:var(--green)}.a-rose{background:var(--rose)}
  .status-red{background:var(--danger-bg)!important;border:1px solid #F3B5AE}.status-red .label,.status-red .sub,.status-red h3{color:var(--danger-ink)}.status-red .value{color:#6D160F}
  .status-yellow{background:var(--warn-bg)!important;border:1px solid #F3D0A4}.status-yellow .label,.status-yellow .sub,.status-yellow h3{color:var(--warn-ink)}.status-yellow .value{color:#744006}
  .status-green{background:var(--ok-bg)!important;border:1px solid #B8DEC8}.status-green .label,.status-green .sub,.status-green h3{color:var(--ok-ink)}
  button{font-family:inherit;font-size:14.5px;font-weight:700;cursor:pointer;border:none;border-radius:10px;padding:10px 16px;color:#fff;background:var(--teal);transition:filter .15s,transform .05s}button:hover{filter:brightness(1.06)}button:active{transform:translateY(1px)}button.ghost{background:#EAF0F2;color:var(--teal-d)}button.soft{background:#EEF1F4;color:var(--ink)}button.sm{padding:6px 11px;font-size:13px;border-radius:8px}button.red{background:var(--red)}button.green{background:var(--green)}button.plum{background:var(--plum)}button.indigo{background:var(--indigo)}button.amber{background:var(--amber)}button.icon{padding:7px 9px;background:#EEF1F4;color:var(--soft);font-size:14px}button.icon:hover{background:#E1E7EC;color:var(--ink)}button:disabled{opacity:.5;cursor:not-allowed}.btnrow{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
  table{width:100%;border-collapse:collapse}th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--faint);font-weight:800;padding:0 12px 10px}td{padding:13px 12px;border-top:1px solid var(--line2);vertical-align:middle}tr.click{cursor:pointer}tr.click:hover td{background:#F6F9FA}.nm{font-weight:700}
  label.fld{display:block;font-weight:700;font-size:13px;margin:14px 0 5px;color:var(--ink)}input,select,textarea{font-family:inherit;font-size:15px;width:100%;padding:11px 12px;border:1.5px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--teal)}textarea{min-height:72px;resize:vertical}.frow{display:grid;gap:12px}.f2{grid-template-columns:1fr 1fr}.f3{grid-template-columns:1fr 1fr 1fr}.f4{grid-template-columns:repeat(4,1fr)}@media(max-width:800px){.f2,.f3,.f4{grid-template-columns:1fr}}
  .pill{display:inline-block;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:800}.pill.green{background:#E7F2EC;color:#1E5638}.pill.red{background:#FBEAE7;color:#922018}.pill.amber{background:#FBF0E2;color:#8A4D0E}.pill.gray{background:#EEF1F4;color:var(--soft)}.pill.teal{background:#E2F1F2;color:var(--teal-d)}.pill.plum{background:#F2E9F5;color:var(--plum)}
  .scrim{position:fixed;inset:0;background:rgba(16,36,47,.5);z-index:50;display:none;align-items:center;justify-content:center;padding:24px}.scrim.show{display:flex}.modal{background:#fff;border-radius:18px;width:100%;max-width:560px;max-height:90vh;overflow:auto;box-shadow:0 24px 60px rgba(0,0,0,.3)}.modal .mhead{padding:20px 22px 0;display:flex;justify-content:space-between;align-items:center}.modal .mhead h3{margin:0;font-size:20px;font-weight:800}.modal .mbody{padding:8px 22px 22px}.modal.wide{max-width:820px}.modal.xwide{max-width:980px}
  .empty{text-align:center;color:var(--soft);padding:34px 10px}.empty .e-ic{font-size:42px;opacity:.45}.searchbox{position:relative;max-width:340px}.searchbox input{padding-left:38px}.searchbox::before{content:"🔎";position:absolute;left:12px;top:50%;transform:translateY(-50%);opacity:.5}.legend{display:flex;gap:18px;flex-wrap:wrap;font-size:13px;font-weight:600;color:var(--soft);margin-bottom:6px}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:14px;height:4px;border-radius:3px;display:inline-block}.note-line{font-size:13px;color:var(--soft);background:#F6F8FA;border-radius:8px;padding:7px 10px;margin-top:6px}.crumb{color:var(--teal);font-weight:700;cursor:pointer;font-size:14px}.kv{display:grid;grid-template-columns:165px 1fr;gap:7px 14px;font-size:14.5px}.kv .k{color:var(--soft);font-weight:700}.loc-card{border:1.5px solid var(--line);border-radius:12px;padding:14px;margin-bottom:10px;background:#fff}.disclaim{font-size:12.5px;color:var(--faint);margin-top:16px}.target-note{font-size:12px;color:var(--faint);margin-top:8px}.muted{color:var(--soft);font-size:13px}.mini-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.top-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 10px;color:var(--soft);font-weight:700;font-size:13px}.thumb{width:54px;height:54px;border-radius:10px;object-fit:cover;border:1px solid var(--line);background:#F6F8FA}.thumb-lg{width:100%;max-height:320px;object-fit:contain;border:1px solid var(--line);border-radius:14px;background:#F6F8FA}.subtabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.subtabs button{background:#fff;color:var(--teal-d);border:1px solid var(--line)}.subtabs button.active{background:var(--teal);color:#fff;border-color:var(--teal)}.history-line{border-left:3px solid var(--teal);padding:8px 0 8px 12px;margin-bottom:10px}.logout-btn{padding:7px 10px;border-radius:999px;font-size:13px}.lang-select{width:auto;min-width:132px;padding:7px 10px;border-radius:999px;font-size:13px;font-weight:700;background:#fff;color:var(--ink)}
  .metric-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;margin-top:8px}.metric-pick label{border:1.5px solid var(--line);border-radius:11px;padding:9px 10px;background:#fff;font-weight:700;color:var(--ink);display:flex;gap:8px;align-items:center}.metric-pick input{width:auto}.chart-preview{min-height:260px}.saved-chart-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--line2)}.selected-metrics{border:1.5px dashed var(--line);border-radius:12px;padding:10px;background:#F8FAFC;margin-top:10px}.selected-metric-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;border:1px solid var(--line2);border-radius:10px;padding:8px 10px;margin-bottom:7px}.selected-metric-row:last-child{margin-bottom:0}.selected-metric-title{display:flex;align-items:center;gap:8px;font-weight:800}.selected-metric-title .order-num{width:24px;height:24px;border-radius:999px;background:#EAF0F2;color:var(--teal-d);display:inline-flex;align-items:center;justify-content:center;font-size:12px}.selected-metric-actions{display:flex;gap:6px;flex-shrink:0}.selected-metric-actions button{padding:5px 8px;font-size:12px;border-radius:7px;background:#EEF1F4;color:var(--ink)}
  /* v6: collapsible sidebar */
  .brand{justify-content:space-between}.brand-left{display:flex;align-items:center;gap:10px;min-width:0}.brand-name{white-space:nowrap}.side-toggle{background:rgba(255,255,255,.08);color:#fff;border:1px solid rgba(255,255,255,.12);padding:7px 9px;border-radius:10px;font-size:16px;line-height:1}
  body.side-collapsed aside{width:76px}body.side-collapsed .brand{padding-left:16px;padding-right:16px;justify-content:center}body.side-collapsed .brand-left{display:none}body.side-collapsed .side-toggle{padding:7px 10px}
  body.side-collapsed nav.side{padding-left:10px;padding-right:10px}body.side-collapsed nav.side a,body.side-collapsed .side-foot a{justify-content:center;padding-left:10px;padding-right:10px}body.side-collapsed nav.side a .txt,body.side-collapsed .side-foot a .txt{display:none}body.side-collapsed nav.side a .ic,body.side-collapsed .side-foot a .ic{width:auto}
  .missing-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.missing-item{border:1px solid var(--line2);border-radius:12px;padding:11px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#FBFCFD}.missing-item.today{border-color:#F3D0A4;background:#FFF7EC}.missing-card-red{border-color:#DC3545!important}.missing-card-red .admin-card-header{background:#DC3545;color:#fff}.missing-card-red .admin-card-header h3,.missing-card-red .admin-card-tools{color:#fff}.entry-three{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.entry-table-card table td,.entry-table-card table th{font-size:13px}.chart-standard-label{font-size:11px;font-weight:800;fill:#5C6B77}
  @media(max-width:760px){.missing-grid{grid-template-columns:1fr}.entry-three{grid-template-columns:1fr}body.side-collapsed aside{width:68px}.topbar{align-items:flex-start;flex-direction:column}.top-actions{width:100%}}


  /* v10: AdminLTE-inspired dashboard shell */
  body.adminlte-mode{--bg:#F4F6F9;--panel:#FFFFFF;--ink:#212529;--soft:#6C757D;--line:#DEE2E6;--line2:#EEF1F4;background:#F4F6F9;}
  body.adminlte-mode aside{background:#343A40;color:#c2c7d0;border-right:1px solid #2b3035;box-shadow:0 0 0 1px rgba(0,0,0,.02)}
  body.adminlte-mode .brand{padding:13px 14px;border-bottom:1px solid #4f5962;min-height:57px;}
  body.adminlte-mode .brand .dot{background:#17A2B8;box-shadow:none;border-radius:4px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;position:relative;}
  body.adminlte-mode .brand .dot::after{content:'+';color:#fff;font-weight:900;font-size:18px;line-height:1;position:absolute;left:8px;top:2px;}
  body.adminlte-mode .brand-name{font-size:18px;font-weight:600;letter-spacing:0;color:#fff;}
  body.adminlte-mode nav.side{padding:10px 8px;}
  body.adminlte-mode nav.side a,body.adminlte-mode .side-foot a{border-radius:.25rem;margin-bottom:2px;color:#c2c7d0;padding:10px 12px;font-weight:500;}
  body.adminlte-mode nav.side a:hover,body.adminlte-mode .side-foot a:hover{background:rgba(255,255,255,.08);color:#fff;}
  body.adminlte-mode nav.side a.active{background:#007BFF;color:#fff;}
  body.adminlte-mode .side-toggle{background:#495057;border-color:#5c636a;border-radius:.25rem;}
  body.adminlte-mode main{background:#F4F6F9;}
  body.adminlte-mode .admin-topbar{background:#fff;border-bottom:1px solid #DEE2E6;padding:8px 18px;min-height:57px;box-shadow:none;}
  body.adminlte-mode .admin-top-left{display:flex;align-items:center;gap:13px;min-width:0;}
  body.adminlte-mode .admin-nav-toggle{background:transparent;color:#495057;border:0;border-radius:.25rem;padding:7px 10px;font-size:20px;}
  body.adminlte-mode .admin-nav-toggle:hover{background:#F1F3F5;color:#111;}
  body.adminlte-mode .topbar h1{font-size:24px;font-weight:500;margin:0;color:#212529;}
  body.adminlte-mode .admin-breadcrumb{font-size:12.5px;color:#6C757D;margin-top:1px;}
  body.adminlte-mode .admin-breadcrumb span{padding:0 4px;color:#ADB5BD;}
  body.adminlte-mode .admin-breadcrumb b{color:#495057;font-weight:600;}
  body.adminlte-mode .content{max-width:none;padding:18px;}
  body.adminlte-mode .top-chip,body.adminlte-mode .lang-select{border-radius:.25rem;border-color:#DEE2E6;background:#fff;color:#495057;}
  body.adminlte-mode .top-icon-btn{position:relative;background:transparent;color:#495057;border:0;border-radius:.25rem;padding:8px 11px;font-size:18px;line-height:1;}
  body.adminlte-mode .top-icon-btn:hover{background:#F1F3F5;}
  body.adminlte-mode #notifCount{position:absolute;right:2px;top:0;min-width:17px;height:17px;border-radius:999px;background:#DC3545;color:#fff;font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center;padding:0 4px;}
  body.adminlte-mode .admin-page-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:12px;}
  body.adminlte-mode .admin-page-title h2{margin:0;font-size:24px;font-weight:400;color:#212529;}
  body.adminlte-mode .admin-page-title .muted{font-size:13px;color:#6C757D;}
  .admin-info-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:16px;}
  .admin-info-box{position:relative;display:flex;background:#fff;border-radius:.25rem;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);min-height:92px;overflow:hidden;cursor:default;}
  .admin-info-icon{width:70px;display:flex;align-items:center;justify-content:center;font-size:32px;color:#fff;}
  .admin-info-body{padding:10px 12px;min-width:0;flex:1;}
  .admin-info-label{display:block;font-size:13px;text-transform:uppercase;color:#6C757D;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .admin-info-number{display:block;font-size:25px;line-height:1.15;font-weight:700;color:#212529;margin-top:2px;}
  .admin-info-sub{font-size:12.5px;color:#6C757D;margin-top:3px;min-height:19px;}
  .admin-progress{height:3px;background:#E9ECEF;margin-top:8px;border-radius:999px;overflow:hidden;}
  .admin-progress span{display:block;height:100%;background:rgba(0,0,0,.25);}
  .bg-info{background:#17A2B8}.bg-success{background:#28A745}.bg-warning{background:#FFC107;color:#1f2d3d}.bg-danger{background:#DC3545}.bg-primary{background:#007BFF}.bg-purple{background:#6F42C1}.bg-secondary{background:#6C757D}.bg-teal{background:#20C997}
  .admin-card{background:#fff;border-radius:.25rem;border:1px solid rgba(0,0,0,.125);box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);margin-bottom:16px;overflow:hidden;}
  .admin-card-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid rgba(0,0,0,.125);background:#fff;gap:12px;}
  .admin-card-header h3{margin:0;font-size:1.05rem;font-weight:400;color:#212529;text-transform:none;letter-spacing:0;}
  .admin-card-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:#6C757D;font-size:13px;}
  .admin-card-body{padding:1rem;}
  .admin-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;}
  .admin-main-row{display:grid;grid-template-columns:1.35fr .9fr;gap:16px;margin-bottom:16px;}
  .admin-three-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px;}
  .admin-list-row{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #EEF1F4;padding:10px 0;gap:12px;}
  .admin-list-row:last-child{border-bottom:0;}
  .admin-list-row.click{cursor:pointer;}
  .admin-list-row.click:hover{background:#F8F9FA;margin-left:-10px;margin-right:-10px;padding-left:10px;padding-right:10px;border-radius:.25rem;}
  .admin-mini-stat{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:10px;}
  .admin-mini-stat .box{border-top:3px solid #DEE2E6;padding-top:8px;}
  .admin-mini-stat b{font-size:18px;color:#212529;display:block;}
  .admin-progress-list{display:grid;gap:13px;}
  .admin-task-line{display:flex;align-items:center;justify-content:space-between;font-size:13px;margin-bottom:4px;}
  .admin-task-progress{height:7px;border-radius:999px;background:#E9ECEF;overflow:hidden;}
  .admin-task-progress span{display:block;height:100%;background:#007BFF;}
  .admin-glucose-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px;}
  .admin-action-link{color:#007BFF;cursor:pointer;font-weight:600;font-size:13px;}
  .admin-alert-text{color:#DC3545;font-weight:700;}
  body.side-collapsed .admin-breadcrumb,body.side-collapsed .brand-name{display:none;}
  @media(max-width:1180px){.admin-info-grid{grid-template-columns:repeat(2,1fr)}.admin-main-row,.admin-row,.admin-glucose-grid{grid-template-columns:1fr}.admin-three-row{grid-template-columns:1fr}.admin-mini-stat{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:720px){.admin-info-grid,.admin-mini-stat{grid-template-columns:1fr}.admin-page-title{align-items:flex-start;flex-direction:column}.admin-card-header{align-items:flex-start;flex-direction:column}.admin-top-actions{width:100%;justify-content:flex-start}}


  /* v23: lightweight DataTables-style controls */
  .dt-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 10px}
  .dt-left,.dt-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .dt-toolbar input{width:210px;padding:8px 10px;font-size:13px}
  .dt-toolbar select{width:auto;padding:8px 10px;font-size:13px}
  .dt-info{font-size:12.5px;color:var(--soft);font-weight:700}
  .dt-pager{display:flex;gap:6px;align-items:center;justify-content:flex-end;flex-wrap:wrap;margin-top:10px}
  .dt-pager button{padding:6px 10px;font-size:12px;border-radius:8px}
  .dt-pager button.active{background:var(--teal);color:#fff}
  .dt-pager button:disabled{opacity:.45;cursor:not-allowed}
  .dt-table-wrap{overflow-x:auto}
  .dt-table-wrap table{min-width:100%}

/* ===================== v34 Modern Mobile App Design ===================== */
body.mobile-app-mode{
  --bg:#EAF3F8;--panel:#FFFFFF;--ink:#11242F;--soft:#607381;--faint:#91A0AB;--line:#DFE8EF;--line2:#EEF4F8;
  --teal:#077C89;--teal-d:#055D67;--indigo:#5267E8;--amber:#D98A20;--plum:#7B55D9;--green:#23875C;--red:#D64033;--rose:#E34077;
  --shadow:0 10px 30px rgba(30,58,77,.08);--r:22px;
  min-height:100vh;min-height:100dvh;background:radial-gradient(circle at 10% -10%,#D6F7F2 0,#EAF3F8 36%,#DCE8F0 100%);
  color:var(--ink);font-size:15px;overscroll-behavior-y:none;
}
body.mobile-app-mode .layout{display:block;max-width:480px;margin:0 auto;min-height:100vh;min-height:100dvh;background:#F8FBFD;box-shadow:0 0 0 1px rgba(17,36,47,.04),0 30px 80px rgba(17,36,47,.18);position:relative;overflow-x:hidden;}
body.mobile-app-mode main{display:block;min-height:100vh;min-height:100dvh;background:linear-gradient(180deg,#F8FBFD 0,#EEF5F9 100%);padding-bottom:calc(94px + env(safe-area-inset-bottom));}
body.mobile-app-mode.adminlte-mode main{background:linear-gradient(180deg,#F8FBFD 0,#EEF5F9 100%);}
body.mobile-app-mode.adminlte-mode .content,body.mobile-app-mode .content{max-width:none;width:100%;padding:14px 14px calc(106px + env(safe-area-inset-bottom));}
body.mobile-app-mode aside{position:fixed;top:0;left:calc(50% - 240px);width:320px;max-width:84vw;height:100vh;height:100dvh;z-index:100;transform:translateX(-112%);transition:transform .25s ease;background:linear-gradient(180deg,#102F39,#071B23);border-radius:0 26px 26px 0;box-shadow:16px 0 50px rgba(10,24,32,.35);}
body.mobile-app-mode.mobile-menu-open aside{transform:translateX(0);}
body.mobile-app-mode.mobile-menu-open .mobile-menu-backdrop{opacity:1;pointer-events:auto;}
body.mobile-app-mode.side-collapsed aside{width:320px;}
body.mobile-app-mode .brand{min-height:72px;padding:18px 18px 12px;border-bottom:1px solid rgba(255,255,255,.08);}
body.mobile-app-mode .brand-name{font-size:20px;font-weight:850;letter-spacing:-.4px;}
body.mobile-app-mode .brand .dot{border-radius:14px;width:34px;height:34px;background:#19B9C5;box-shadow:0 10px 24px rgba(25,185,197,.35);}
body.mobile-app-mode nav.side{padding:12px;}
body.mobile-app-mode nav.side a,body.mobile-app-mode .side-foot a{min-height:48px;border-radius:16px;padding:12px 14px;font-size:15px;margin-bottom:4px;}
body.mobile-app-mode nav.side a .ic,body.mobile-app-mode .side-foot a .ic{font-size:20px;width:28px;}
body.mobile-app-mode nav.side a.active{background:linear-gradient(135deg,#0E7C86,#2A95D4);color:#fff;box-shadow:0 10px 26px rgba(14,124,134,.28);}
body.mobile-app-mode.adminlte-mode .admin-topbar,body.mobile-app-mode .topbar{position:sticky;top:0;z-index:40;display:block;padding:calc(12px + env(safe-area-inset-top)) 14px 10px;background:rgba(248,251,253,.88);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid rgba(223,232,239,.75);box-shadow:0 8px 22px rgba(30,58,77,.06);min-height:auto;}
body.mobile-app-mode .admin-top-left{display:flex!important;align-items:center;gap:12px;}
body.mobile-app-mode .admin-nav-toggle{width:42px;height:42px;border-radius:16px!important;background:#E9F2F7!important;color:#102F39!important;display:inline-flex;align-items:center;justify-content:center;font-size:19px!important;padding:0!important;}
body.mobile-app-mode .topbar h1{font-size:23px!important;font-weight:850!important;line-height:1.1;color:#102331!important;letter-spacing:-.6px;margin:0;}
body.mobile-app-mode .admin-breadcrumb{display:none;}
body.mobile-app-mode .top-actions{display:flex;flex-wrap:nowrap;gap:8px;margin-top:10px;overflow-x:auto;padding-bottom:3px;scrollbar-width:none;width:100%;}
body.mobile-app-mode .top-actions::-webkit-scrollbar{display:none;}
body.mobile-app-mode .top-chip,body.mobile-app-mode .lang-select,body.mobile-app-mode .logout-btn,body.mobile-app-mode .top-icon-btn{flex:0 0 auto;border-radius:999px!important;min-height:35px;background:#fff!important;border:1px solid var(--line)!important;box-shadow:0 5px 18px rgba(30,58,77,.05);}
body.mobile-app-mode .date{font-size:12px;white-space:nowrap;align-self:center;color:var(--soft);padding:7px 0;}
body.mobile-app-mode .card,body.mobile-app-mode .admin-card{border:1px solid rgba(223,232,239,.9)!important;border-radius:24px!important;box-shadow:0 10px 30px rgba(30,58,77,.08)!important;background:rgba(255,255,255,.96)!important;overflow:hidden;}
body.mobile-app-mode .card{padding:16px;}
body.mobile-app-mode .card h3,body.mobile-app-mode .admin-card-header h3{font-size:12px;font-weight:850;letter-spacing:.7px;color:#577080;text-transform:uppercase;}
body.mobile-app-mode .admin-card-header{padding:14px 16px;background:linear-gradient(180deg,#fff,#F9FCFE);}
body.mobile-app-mode .admin-card-body{padding:16px;}
body.mobile-app-mode .grid,body.mobile-app-mode .two-col,body.mobile-app-mode .three-col,body.mobile-app-mode .four-col,body.mobile-app-mode .admin-info-grid,body.mobile-app-mode .admin-row,body.mobile-app-mode .admin-main-row,body.mobile-app-mode .admin-three-row,body.mobile-app-mode .admin-glucose-grid,body.mobile-app-mode .admin-mini-stat{grid-template-columns:1fr!important;gap:14px!important;}
body.mobile-app-mode .stat-row{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important;}
body.mobile-app-mode .stat-row .card.stat{min-height:168px;padding:14px!important;border-radius:22px!important;}
body.mobile-app-mode .stat-row .stat .label{font-size:11px;line-height:1.2;letter-spacing:.35px;}
body.mobile-app-mode .stat-row .stat .value{font-size:26px;line-height:1.05;margin-top:8px;letter-spacing:-.7px;}
body.mobile-app-mode .stat-row .stat .value small{font-size:13px;}
body.mobile-app-mode .stat-row .stat .sub{font-size:12px;line-height:1.25;min-height:30px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
body.mobile-app-mode .stat-row .mini-actions{margin-top:10px!important;}
body.mobile-app-mode .stat-row .mini-actions button{width:100%;min-height:34px;padding:7px 9px;font-size:12.5px;}
body.mobile-app-mode .stat-row .accent{width:100%;height:3px;margin-top:10px;}
@media(max-width:340px){body.mobile-app-mode .stat-row{grid-template-columns:1fr!important;}body.mobile-app-mode .stat-row .card.stat{min-height:auto;}}
body.mobile-app-mode .frow,body.mobile-app-mode .f2,body.mobile-app-mode .f3,body.mobile-app-mode .f4{grid-template-columns:1fr!important;gap:10px;}
body.mobile-app-mode .entry-three{grid-template-columns:1fr!important;}
body.mobile-app-mode .admin-info-box{border-radius:22px;min-height:92px;box-shadow:0 10px 26px rgba(30,58,77,.08);border:1px solid var(--line2);}
body.mobile-app-mode .admin-info-icon{width:70px;border-radius:20px;margin:10px 0 10px 10px;}
body.mobile-app-mode .admin-info-number{font-size:26px;letter-spacing:-.5px;}
body.mobile-app-mode button{min-height:42px;border-radius:15px;padding:10px 15px;font-weight:800;box-shadow:0 8px 18px rgba(7,124,137,.12);}
body.mobile-app-mode button.sm{min-height:34px;border-radius:12px;padding:7px 11px;}
body.mobile-app-mode button.soft,body.mobile-app-mode button.ghost{box-shadow:none;background:#EEF4F8;color:#18313F;}
body.mobile-app-mode input,body.mobile-app-mode select,body.mobile-app-mode textarea{border-radius:16px;min-height:46px;background:#FBFDFE;border:1.5px solid var(--line);font-size:16px;}
body.mobile-app-mode textarea{min-height:92px;}
body.mobile-app-mode label.fld{font-size:12.5px;text-transform:uppercase;letter-spacing:.35px;color:#516A7A;margin-top:12px;}
body.mobile-app-mode .subtabs{display:flex;gap:8px;overflow-x:auto;flex-wrap:nowrap;padding:0 0 4px;scrollbar-width:none;}
body.mobile-app-mode .subtabs::-webkit-scrollbar{display:none;}
body.mobile-app-mode .subtabs button{flex:0 0 auto;border-radius:999px;background:#fff;color:#075D67;border:1px solid var(--line);box-shadow:none;}
body.mobile-app-mode .subtabs button.active{background:linear-gradient(135deg,#077C89,#1FA4C5);color:#fff;border-color:transparent;box-shadow:0 10px 22px rgba(7,124,137,.18);}
body.mobile-app-mode .btnrow,body.mobile-app-mode .mini-actions{gap:8px;}
body.mobile-app-mode .btnrow button{flex:1 1 auto;}
body.mobile-app-mode .searchbox{max-width:none;width:100%;}
body.mobile-app-mode .kv{grid-template-columns:1fr;gap:3px;background:#F8FBFD;border:1px solid var(--line2);border-radius:18px;padding:12px;}
body.mobile-app-mode .kv .k{font-size:12px;text-transform:uppercase;letter-spacing:.35px;margin-top:8px;}
body.mobile-app-mode .loc-card,body.mobile-app-mode .history-line,body.mobile-app-mode .note-line{border-radius:18px;background:#F8FBFD;border:1px solid var(--line2);}
body.mobile-app-mode .dt-toolbar{gap:8px;align-items:stretch;margin-bottom:12px;}
body.mobile-app-mode .dt-left,body.mobile-app-mode .dt-right{width:100%;justify-content:space-between;}
body.mobile-app-mode .dt-toolbar input{width:100%;min-width:0;}
body.mobile-app-mode .dt-toolbar select{width:auto;min-width:86px;}
body.mobile-app-mode .dt-table-wrap{overflow-x:auto;border:1px solid var(--line2);border-radius:18px;background:#fff;-webkit-overflow-scrolling:touch;}
body.mobile-app-mode .dt-table-wrap table,body.mobile-app-mode table{min-width:720px;}
body.mobile-app-mode th{font-size:11px;padding:12px 10px 8px;background:#F8FBFD;position:sticky;top:0;z-index:1;}
body.mobile-app-mode td{padding:12px 10px;font-size:14px;}
body.mobile-app-mode .dt-info{text-align:center;width:100%;}
body.mobile-app-mode .dt-pager{justify-content:center;gap:7px;}
body.mobile-app-mode .dt-pager button{flex:0 0 auto;min-height:34px;}
body.mobile-app-mode .metric-pick{grid-template-columns:1fr;}
body.mobile-app-mode .metric-pick label{border-radius:18px;padding:12px;background:#FBFDFE;}
body.mobile-app-mode .selected-metric-row,body.mobile-app-mode .saved-chart-row{border-radius:18px;}
body.mobile-app-mode .chart-preview{overflow-x:auto;-webkit-overflow-scrolling:touch;}
body.mobile-app-mode svg{min-width:680px;}
body.mobile-app-mode .scrim.show{align-items:flex-end;padding:0 0 calc(76px + env(safe-area-inset-bottom) + 12px);background:rgba(12,30,40,.58);}
body.mobile-app-mode .modal{max-width:480px;width:100%;max-height:calc(100vh - 76px - env(safe-area-inset-bottom) - 32px);max-height:calc(100dvh - 76px - env(safe-area-inset-bottom) - 32px);border-radius:28px;box-shadow:0 18px 60px rgba(0,0,0,.30);}
body.mobile-app-mode .modal .mhead{padding:20px 18px 4px;position:sticky;top:0;background:#fff;z-index:3;border-radius:28px 28px 0 0;}
body.mobile-app-mode .modal .mhead h3{font-size:20px;letter-spacing:-.4px;}
body.mobile-app-mode .modal .mbody{padding:8px 18px 22px;}
.mobile-menu-backdrop{position:fixed;inset:0;background:rgba(8,25,35,.48);z-index:90;opacity:0;pointer-events:none;transition:opacity .25s ease;}
.mobile-bottom-nav{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:min(480px,100vw);height:calc(76px + env(safe-area-inset-bottom));padding:8px 9px calc(8px + env(safe-area-inset-bottom));z-index:80;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-top:1px solid rgba(223,232,239,.9);display:none;grid-template-columns:repeat(5,1fr);gap:6px;box-shadow:0 -14px 32px rgba(30,58,77,.10);}
.mobile-bottom-nav button,.mobile-bottom-nav a{min-height:58px;padding:5px 4px;border-radius:18px;background:transparent!important;color:#647785!important;box-shadow:none!important;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:20px;}
.mobile-bottom-nav button b,.mobile-bottom-nav a b{font-size:11px;line-height:1;font-weight:850;}
.mobile-bottom-nav button.active,.mobile-bottom-nav a.active{background:linear-gradient(180deg,#E4F7F8,#F5FBFC)!important;color:#077C89!important;}
.mobile-bottom-nav button.active span,.mobile-bottom-nav a.active span{transform:translateY(-1px);}
body.mobile-app-mode .mobile-only-note{display:block;}
@media(max-width:520px){body.mobile-app-mode .layout{max-width:none;box-shadow:none;}body.mobile-app-mode aside{left:0;}body.mobile-app-mode .mobile-bottom-nav{width:100vw;}body.mobile-app-mode.adminlte-mode .content,body.mobile-app-mode .content{padding-left:12px;padding-right:12px;}}
@media(min-width:821px){body.mobile-app-mode .layout{max-width:480px;}body.mobile-app-mode aside{left:calc(50% - 240px);}body.mobile-app-mode .mobile-bottom-nav{display:grid;}body.mobile-app-mode .mobile-menu-backdrop{display:block;}}



/* ===================== v34: force mobile dashboard cards two per row ===================== */
body.mobile-app-mode .admin-info-grid{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:12px!important;
  width:100%!important;
}
body.mobile-app-mode .admin-info-grid .admin-info-box{
  min-width:0!important;
  width:100%!important;
  min-height:162px!important;
  display:flex!important;
  flex-direction:column!important;
  border-radius:24px!important;
  overflow:hidden!important;
}
body.mobile-app-mode .admin-info-grid .admin-info-icon{
  width:58px!important;
  height:58px!important;
  flex:0 0 58px!important;
  margin:12px 12px 0 12px!important;
  border-radius:20px!important;
  font-size:28px!important;
}
body.mobile-app-mode .admin-info-grid .admin-info-body{
  padding:9px 12px 12px!important;
  min-width:0!important;
}
body.mobile-app-mode .admin-info-grid .admin-info-label{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  font-size:11px!important;
  line-height:1.15!important;
  letter-spacing:.35px!important;
}
body.mobile-app-mode .admin-info-grid .admin-info-number{
  font-size:25px!important;
  line-height:1.05!important;
  margin-top:6px!important;
  word-break:break-word!important;
}
body.mobile-app-mode .admin-info-grid .admin-info-sub{
  font-size:12px!important;
  line-height:1.25!important;
  min-height:34px!important;
  display:-webkit-box!important;
  -webkit-line-clamp:2!important;
  -webkit-box-orient:vertical!important;
  overflow:hidden!important;
}
body.mobile-app-mode .admin-info-grid .admin-progress{
  margin-top:8px!important;
}
body.mobile-app-mode .admin-info-grid .admin-action-link{
  display:inline-block!important;
  font-size:12.5px!important;
  line-height:1.2!important;
  font-weight:850!important;
}
@media(max-width:360px){
  body.mobile-app-mode .admin-info-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;}
  body.mobile-app-mode .admin-info-grid .admin-info-box{min-height:152px!important;border-radius:20px!important;}
  body.mobile-app-mode .admin-info-grid .admin-info-icon{width:48px!important;height:48px!important;flex-basis:48px!important;font-size:23px!important;margin:10px 10px 0!important;border-radius:17px!important;}
  body.mobile-app-mode .admin-info-grid .admin-info-body{padding:8px 10px 10px!important;}
  body.mobile-app-mode .admin-info-grid .admin-info-number{font-size:22px!important;}
  body.mobile-app-mode .admin-info-grid .admin-info-sub{font-size:11px!important;}
}


body.mobile-app-mode .mobile-bottom-nav{display:grid;}


/* ===================== Hoverable graph tooltips ===================== */
.chart-hover{cursor:crosshair;pointer-events:all;}
.chart-tooltip{position:fixed;z-index:100000;display:none;max-width:260px;padding:9px 11px;border-radius:12px;background:rgba(18,32,43,.94);color:#fff;font-size:12.5px;line-height:1.35;box-shadow:0 12px 30px rgba(0,0,0,.24);pointer-events:none;white-space:normal;transform:translate(12px,-12px);}
.chart-tooltip b{display:block;font-size:12px;color:#DFF7FF;margin-bottom:2px;}
body.mobile-app-mode .chart-tooltip{font-size:13px;max-width:230px;border-radius:14px;padding:10px 12px;}
svg .chart-hover:hover{filter:drop-shadow(0 0 3px rgba(7,124,137,.30));}

/* ===================== v35: Calm Wellness refresh + Dark mode ===================== */
/* -- Light palette (applies to base + desktop AdminLTE shell + mobile app shell) -- */
body, body.adminlte-mode, body.mobile-app-mode{
  /* Epic MyChart-style clinical blue palette */
  --bg:#EDF2F9; --panel:#FFFFFF; --ink:#1B2A3B; --soft:#586A7D; --faint:#94A4B6;
  --line:#E1E8F1; --line2:#EEF3F9;
  --teal:#1E74C6; --teal-d:#14568F; --indigo:#5566D6; --amber:#E28A34; --plum:#8A5AD0;
  --green:#2E9E67; --red:#DE5A54; --rose:#DE5C93;
  --side:#0E3A66; --side-d:#0A2A4C; --side-ink:#BFD5EC; --side-act:#1B5490;
  --danger-bg:#FBEAE8; --danger-ink:#A03A30; --warn-bg:#FBF1E2; --warn-ink:#8A5A1F; --ok-bg:#E6F4EC; --ok-ink:#1F6B45;
  --grad: linear-gradient(135deg,#1E74C6,#3AA0DE);
  --shadow:0 2px 4px rgba(20,50,80,.05),0 14px 32px rgba(20,50,80,.08); --r:16px;
}
body.adminlte-mode{background:var(--bg);}
body.adminlte-mode main{background:var(--bg);}

/* -- Shared surface tokenization (both themes follow tokens) -- */
.admin-card,.card{border-radius:var(--r)!important;border:1px solid var(--line)!important;box-shadow:var(--shadow)!important;background:var(--panel)!important;}
.admin-card-header{background:transparent!important;border-bottom-color:var(--line)!important;}
.admin-info-box{border-radius:var(--r)!important;box-shadow:var(--shadow)!important;border:1px solid var(--line)!important;background:var(--panel)!important;}
.admin-progress{background:var(--line2)!important;}
.admin-card-header h3,.card h3{color:var(--ink);}
input,select,textarea{background:var(--panel);color:var(--ink);border-color:var(--line);}
.note-line{background:var(--line2);color:var(--soft);}
.kv .k{color:var(--soft);}
.loc-card{background:var(--panel);border-color:var(--line);}
.selected-metrics{background:var(--line2);border-color:var(--line);}
.selected-metric-row,.saved-chart-row{background:var(--panel);}
.modal{background:var(--panel)!important;}
tr.click:hover td,.admin-list-row.click:hover{background:var(--line2)!important;}
.admin-list-row{border-bottom-color:var(--line2);}
/* Recolor icon chips + accents to calm palette */
.bg-info,.bg-teal{background:var(--teal)!important;}
.bg-primary{background:var(--indigo)!important;}
.bg-success{background:var(--green)!important;}
.bg-warning{background:var(--amber)!important;color:#fff!important;}
.bg-danger{background:var(--red)!important;}
.bg-purple{background:var(--plum)!important;}
.bg-secondary{background:var(--soft)!important;}
.admin-action-link{color:var(--teal-d)!important;}
.admin-alert-text{color:var(--red)!important;}
.admin-task-progress span{background:var(--teal)!important;}
button{background:var(--teal);border-radius:12px;}
button.ghost{background:color-mix(in oklab,var(--teal) 12%,transparent);color:var(--teal-d);}
button.green{background:var(--green);}button.red{background:var(--red);}button.plum{background:var(--plum);}button.indigo{background:var(--indigo);}button.amber{background:var(--amber);}

/* -- Desktop shell: calm sidebar + refined nav -- */
body.adminlte-mode aside{background:linear-gradient(180deg,var(--side),var(--side-d))!important;border-right:0!important;box-shadow:1px 0 0 rgba(0,0,0,.05),0 0 40px rgba(10,38,33,.10)!important;}
body.adminlte-mode .brand{border-bottom-color:rgba(255,255,255,.09)!important;}
body.adminlte-mode .brand .dot{background:var(--grad)!important;border-radius:12px!important;box-shadow:0 8px 20px rgba(21,154,135,.4)!important;}
body.adminlte-mode .brand .dot::after{left:9px!important;}
body.adminlte-mode nav.side a,body.adminlte-mode .side-foot a{border-radius:12px!important;color:var(--side-ink)!important;font-weight:600!important;}
body.adminlte-mode nav.side a:hover,body.adminlte-mode .side-foot a:hover{background:rgba(255,255,255,.07)!important;color:#fff!important;}
body.adminlte-mode nav.side a.active{background:var(--grad)!important;color:#fff!important;box-shadow:0 10px 22px rgba(21,154,135,.32)!important;}
body.adminlte-mode .side-toggle{background:rgba(255,255,255,.1)!important;border-color:rgba(255,255,255,.14)!important;border-radius:12px!important;}
body.adminlte-mode .admin-topbar{background:var(--panel)!important;border-bottom-color:var(--line)!important;-webkit-backdrop-filter:saturate(1.1);backdrop-filter:saturate(1.1);}
body.adminlte-mode .admin-nav-toggle{color:var(--soft);border-radius:12px;}
body.adminlte-mode .admin-nav-toggle:hover{background:var(--line2);color:var(--ink);}
body.adminlte-mode .topbar h1{font-weight:750;letter-spacing:-.4px;color:var(--ink);}
body.adminlte-mode .top-chip,body.adminlte-mode .lang-select{border-radius:999px!important;border-color:var(--line)!important;background:var(--panel)!important;color:var(--ink)!important;}
body.adminlte-mode .top-icon-btn{color:var(--soft);border-radius:12px;}
body.adminlte-mode .top-icon-btn:hover{background:var(--line2);color:var(--ink);}
body.adminlte-mode .logout-btn{background:var(--line2)!important;color:var(--ink)!important;border-radius:999px!important;}
body.adminlte-mode .admin-card-header h3,body.adminlte-mode .admin-page-title h2{font-weight:700;color:var(--ink);}
/* Comfortable width on large monitors */
@media(min-width:1560px){body.adminlte-mode .content{max-width:1480px;margin-left:auto;margin-right:auto;}}

/* -- Theme toggle button -- */
#themeToggle{font-size:16px;}

/* ===================== v35: DARK THEME ===================== */
body.theme-dark, body.theme-dark.adminlte-mode, body.theme-dark.mobile-app-mode{
  --bg:#0E1A2A; --panel:#152436; --ink:#E7EEF7; --soft:#9CB1C7; --faint:#6E8298;
  --line:#26364A; --line2:#1C2B3E;
  --teal:#3E9BE8; --teal-d:#6FBDF2; --indigo:#8E9BF0; --amber:#EBB067; --plum:#B08BE6;
  --green:#4FBE86; --red:#EE8375; --rose:#EE85AE;
  --side:#0A1B2E; --side-d:#061120; --side-ink:#AEC4DC; --side-act:#123A5E;
  --danger-bg:#3A211D; --danger-ink:#F3A99B; --warn-bg:#33291A; --warn-ink:#EBC98C; --ok-bg:#152E2595; --ok-ink:#8CD9AF;
  --grad: linear-gradient(135deg,#2C7BD8,#3E9BE8);
  --shadow:0 2px 4px rgba(0,0,0,.4),0 16px 36px rgba(0,0,0,.5);
}
body.theme-dark{background:var(--bg);color:var(--ink);}
body.theme-dark.adminlte-mode{background:var(--bg);}
body.theme-dark.adminlte-mode main{background:var(--bg);}
body.theme-dark.mobile-app-mode{background:radial-gradient(circle at 12% -10%,#13322C 0,#0E1A17 40%,#0B1613 100%);}
body.theme-dark.mobile-app-mode .layout{background:#0E1A17!important;box-shadow:0 0 0 1px rgba(255,255,255,.03),0 30px 80px rgba(0,0,0,.6)!important;}
body.theme-dark.mobile-app-mode main,body.theme-dark.mobile-app-mode.adminlte-mode main{background:linear-gradient(180deg,#0E1A17 0,#0B1613 100%)!important;}
/* Dark surfaces */
body.theme-dark .admin-topbar,body.theme-dark.mobile-app-mode .topbar,body.theme-dark.mobile-app-mode.adminlte-mode .admin-topbar{background:color-mix(in oklab,var(--panel) 88%,transparent)!important;border-bottom-color:var(--line)!important;}
body.theme-dark .admin-card,body.theme-dark .card,body.theme-dark.mobile-app-mode .card,body.theme-dark.mobile-app-mode .admin-card{background:var(--panel)!important;border-color:var(--line)!important;}
body.theme-dark .admin-card-header,body.theme-dark.mobile-app-mode .admin-card-header{background:transparent!important;border-bottom-color:var(--line)!important;}
body.theme-dark .modal,body.theme-dark .modal .mhead,body.theme-dark.mobile-app-mode .modal,body.theme-dark.mobile-app-mode .modal .mhead{background:var(--panel)!important;}
body.theme-dark input,body.theme-dark select,body.theme-dark textarea,body.theme-dark.mobile-app-mode input,body.theme-dark.mobile-app-mode select,body.theme-dark.mobile-app-mode textarea{background:var(--line2)!important;color:var(--ink)!important;border-color:var(--line)!important;}
body.theme-dark .kv,body.theme-dark .loc-card,body.theme-dark .history-line,body.theme-dark .note-line,body.theme-dark .subtabs button,body.theme-dark .metric-pick label,body.theme-dark .selected-metrics,body.theme-dark .selected-metric-row,body.theme-dark .dt-table-wrap,body.theme-dark .saved-chart-row{background:var(--line2)!important;border-color:var(--line)!important;color:var(--ink);}
body.theme-dark th,body.theme-dark.mobile-app-mode th{background:var(--line2)!important;color:var(--faint)!important;}
body.theme-dark td{border-top-color:var(--line)!important;}
body.theme-dark tr.click:hover td,body.theme-dark .admin-list-row.click:hover{background:var(--line2)!important;}
body.theme-dark .searchbox input{color:var(--ink);}
/* Dark text tokens over hardcoded admin colors */
body.theme-dark .topbar h1,body.theme-dark .admin-page-title h2,body.theme-dark .admin-info-number,body.theme-dark .admin-card-header h3,body.theme-dark .card h3,body.theme-dark .admin-mini-stat b,body.theme-dark.mobile-app-mode .topbar h1,body.theme-dark .nm{color:var(--ink)!important;}
body.theme-dark .admin-breadcrumb,body.theme-dark .admin-page-title .muted,body.theme-dark .admin-info-label,body.theme-dark .admin-info-sub,body.theme-dark .admin-card-tools,body.theme-dark .muted,body.theme-dark .disclaim,body.theme-dark .target-note{color:var(--soft)!important;}
body.theme-dark .admin-breadcrumb b{color:var(--ink)!important;}
body.theme-dark .admin-breadcrumb span{color:var(--faint)!important;}
/* Dark desktop chrome buttons/chips */
body.theme-dark.adminlte-mode .top-chip,body.theme-dark.adminlte-mode .lang-select{background:var(--line2)!important;color:var(--ink)!important;border-color:var(--line)!important;}
body.theme-dark.adminlte-mode .top-icon-btn{color:var(--soft)!important;}
body.theme-dark.adminlte-mode .top-icon-btn:hover,body.theme-dark.adminlte-mode .admin-nav-toggle:hover{background:var(--line2)!important;color:var(--ink)!important;}
body.theme-dark.adminlte-mode .logout-btn{background:var(--line2)!important;color:var(--ink)!important;}
/* Dark mobile chrome */
body.theme-dark.mobile-app-mode .admin-nav-toggle{background:var(--line2)!important;color:var(--ink)!important;}
body.theme-dark.mobile-app-mode .top-chip,body.theme-dark.mobile-app-mode .lang-select,body.theme-dark.mobile-app-mode .logout-btn,body.theme-dark.mobile-app-mode .top-icon-btn{background:var(--line2)!important;color:var(--ink)!important;border-color:var(--line)!important;}
body.theme-dark.mobile-app-mode .mobile-bottom-nav{background:color-mix(in oklab,var(--panel) 90%,transparent)!important;border-top-color:var(--line)!important;}
body.theme-dark.mobile-app-mode .mobile-bottom-nav button,body.theme-dark.mobile-app-mode .mobile-bottom-nav a{color:var(--faint)!important;}
body.theme-dark.mobile-app-mode .mobile-bottom-nav button.active,body.theme-dark.mobile-app-mode .mobile-bottom-nav a.active{background:color-mix(in oklab,var(--teal) 18%,transparent)!important;color:var(--teal-d)!important;}
body.theme-dark.mobile-app-mode .subtabs button.active{color:#08201C!important;}
body.theme-dark .admin-mini-stat .box{border-top-color:var(--line)!important;}
/* Dark secondary/icon buttons (hardcoded light chips otherwise) */
body.theme-dark button.soft,body.theme-dark button.ghost,body.theme-dark button.icon,body.theme-dark .subtabs button,body.theme-dark.mobile-app-mode button.soft,body.theme-dark.mobile-app-mode button.ghost{background:var(--line2)!important;color:var(--ink)!important;box-shadow:none!important;}
body.theme-dark button.icon{color:var(--soft)!important;}
body.theme-dark button.ghost{color:var(--teal-d)!important;}
body.theme-dark .dt-pager button{background:var(--line2)!important;color:var(--ink)!important;}
body.theme-dark .dt-pager button.active{background:var(--teal)!important;color:#08201C!important;}
body.theme-dark .subtabs button.active{background:var(--grad)!important;color:#fff!important;}
/* Dark tinted pills stay legible */
body.theme-dark .pill.green{background:#173026!important;color:#8CD9AF!important;}
body.theme-dark .pill.red{background:#3A211D!important;color:#F3A99B!important;}
body.theme-dark .pill.amber{background:#33291A!important;color:#EBC98C!important;}
body.theme-dark .pill.teal{background:#123531!important;color:#6FD6C2!important;}
body.theme-dark .pill.plum{background:#2A2140!important;color:#C4A8EE!important;}
body.theme-dark .pill.gray{background:var(--line2)!important;color:var(--soft)!important;}
/* Dark chart grid + axis labels */
body.theme-dark svg line[stroke="#EDF1F4"]{stroke:#26362F!important;}
body.theme-dark svg text[fill="#8A98A3"]{fill:#8FA49D!important;}
body.theme-dark .chart-standard-label{fill:var(--soft)!important;}
/* Smooth theme transition (suspended during an actual switch to avoid stale repaints) */
body, .admin-card, .card, .admin-info-box, aside, .admin-topbar, input, select, textarea{transition:background-color .3s ease, color .3s ease, border-color .3s ease;}
body.theme-switching, body.theme-switching *{transition:none!important;}




/* ===================== Mobile chart fit fix ===================== */
body.mobile-app-mode .chart-preview,
body.mobile-app-mode .admin-card-body,
body.mobile-app-mode .card{
  min-width:0;
}
body.mobile-app-mode .chart-preview{
  overflow:hidden!important;
  width:100%!important;
  max-width:100%!important;
}
body.mobile-app-mode svg.dh-chart,
body.mobile-app-mode .chart-preview svg.dh-chart,
body.mobile-app-mode .admin-card-body > svg.dh-chart,
body.mobile-app-mode .card > svg.dh-chart{
  min-width:0!important;
  width:100%!important;
  max-width:100%!important;
  display:block!important;
  height:auto!important;
  aspect-ratio:var(--dh-chart-ratio, 360 / 230)!important;
  overflow:visible!important;
}
body.mobile-app-mode .chart-standard-label{font-size:9px!important;}
body.mobile-app-mode .legend{gap:10px;font-size:11.5px;line-height:1.2;}
body.mobile-app-mode .legend i{width:11px;height:3px;}



/* ===================== Patient profile + login system ===================== */
.auth-wrap{min-height:calc(100vh - 150px);display:flex;align-items:center;justify-content:center;padding:28px 10px}
.auth-card{width:min(460px,100%);background:var(--panel);border:1px solid var(--line);border-radius:26px;box-shadow:var(--shadow);padding:28px}
.auth-card h2{margin:0 0 6px;font-size:26px;letter-spacing:-.7px;color:var(--ink)}
.patient-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px}
.patient-card{background:var(--panel);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);overflow:hidden;cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s}
.patient-card:hover{transform:translateY(-2px);border-color:var(--teal);box-shadow:0 16px 38px rgba(20,50,44,.12)}
.patient-photo{height:150px;background:linear-gradient(135deg,rgba(21,154,135,.18),rgba(47,184,160,.08));display:flex;align-items:center;justify-content:center;font-size:56px;color:var(--teal);position:relative}
.patient-photo img{width:100%;height:100%;object-fit:cover;display:block}
.patient-body{padding:14px 15px 16px}
.patient-name{font-size:18px;font-weight:850;letter-spacing:-.3px;color:var(--ink);line-height:1.15}
.patient-address{margin-top:6px;color:var(--soft);font-size:13px;min-height:36px}
.patient-meta{margin-top:10px;color:var(--faint);font-size:12.5px}
.patient-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;padding:14px 16px;border:1px solid var(--line);border-radius:20px;background:linear-gradient(135deg,rgba(21,154,135,.08),rgba(255,255,255,.7));box-shadow:var(--shadow)}
.patient-mini{display:flex;align-items:center;gap:12px;min-width:0}
.patient-mini .avatar{width:46px;height:46px;border-radius:16px;background:var(--grad);display:flex;align-items:center;justify-content:center;color:#fff;font-size:23px;overflow:hidden;flex:0 0 46px}
.patient-mini .avatar img{width:100%;height:100%;object-fit:cover}
.patient-mini b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.patient-mini small{display:block;color:var(--soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:52vw}
body.mobile-app-mode .auth-wrap{min-height:calc(100vh - 180px);min-height:calc(100dvh - 180px);padding:18px 0}
body.mobile-app-mode .auth-card{border-radius:28px;padding:22px}
body.mobile-app-mode .patient-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
body.mobile-app-mode .patient-photo{height:124px;font-size:44px}
body.mobile-app-mode .patient-body{padding:12px}
body.mobile-app-mode .patient-name{font-size:15px}
body.mobile-app-mode .patient-address{font-size:12px;line-height:1.25;min-height:32px}
@media(max-width:360px){body.mobile-app-mode .patient-grid{grid-template-columns:1fr}.patient-photo{height:150px}}



/* ===================== Patient login gate cleanup ===================== */
body.auth-only aside,
body.auth-only .topbar,
body.auth-only .mobile-bottom-nav,
body.auth-only .mobile-menu-backdrop,
body.patient-select-only aside,
body.patient-select-only .topbar,
body.patient-select-only .mobile-bottom-nav,
body.patient-select-only .mobile-menu-backdrop{display:none!important;}
body.auth-only .layout, body.patient-select-only .layout{display:block!important;max-width:none!important;min-height:100vh!important;background:var(--bg)!important;box-shadow:none!important;}
body.auth-only main, body.patient-select-only main{display:block!important;min-height:100vh!important;background:var(--bg)!important;padding:0!important;}
body.auth-only .content, body.patient-select-only .content{max-width:1120px!important;margin:0 auto!important;padding:28px 18px 48px!important;}
body.auth-only .content{max-width:520px!important;display:flex;align-items:center;justify-content:center;min-height:100vh;}
body.auth-only .auth-wrap{width:100%;min-height:auto!important;padding:0!important;}
body.auth-only .auth-card{width:100%!important;}
.patient-select-shell{min-height:100vh;display:flex;flex-direction:column;gap:20px;}
.patient-select-top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:6px 2px 4px;}
.patient-select-title h2{margin:0;font-size:30px;letter-spacing:-.9px;color:var(--ink);}
.patient-select-title p{margin:4px 0 0;color:var(--soft);font-weight:600;}
.patient-select-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.patient-select-only .patient-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));}
.patient-select-only .patient-card{border-radius:26px;}
.patient-select-only .patient-photo{height:172px;}
.patient-select-only .patient-body{text-align:center;}
.patient-select-only .patient-address{min-height:0;}
.patient-add-card{border:2px dashed var(--line);background:color-mix(in oklab,var(--teal) 5%,var(--panel));display:flex;align-items:center;justify-content:center;min-height:272px;text-align:center;}
.patient-add-card .plus{font-size:38px;color:var(--teal);font-weight:900;}
.patient-add-card b{display:block;font-size:17px;margin-top:8px;color:var(--ink);}
.patient-add-card small{display:block;color:var(--soft);margin-top:4px;}
body.mobile-app-mode.auth-only .layout, body.mobile-app-mode.patient-select-only .layout{max-width:none!important;width:100%!important;}
body.mobile-app-mode.auth-only .content{max-width:520px!important;min-height:100vh;min-height:100dvh;padding:22px 14px!important;}
body.mobile-app-mode.patient-select-only .content{padding:18px 14px 34px!important;}
body.mobile-app-mode.patient-select-only .patient-select-top{align-items:flex-start;flex-direction:column;}
body.mobile-app-mode.patient-select-only .patient-select-title h2{font-size:26px;}
body.mobile-app-mode.patient-select-only .patient-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:13px!important;}
body.mobile-app-mode.patient-select-only .patient-photo{height:128px;}
body.mobile-app-mode.patient-select-only .patient-name{font-size:15px;}
body.mobile-app-mode.patient-select-only .patient-address{font-size:12px;min-height:34px;}
body.mobile-app-mode.patient-select-only .patient-add-card{min-height:220px;}
@media(max-width:360px){body.mobile-app-mode.patient-select-only .patient-grid{grid-template-columns:1fr!important;}body.mobile-app-mode.patient-select-only .patient-photo{height:155px;}}



/* ===================== v31 patient switch + permissions styling ===================== */
.patient-chip-btn{border:0;background:transparent!important;color:var(--teal-d)!important;box-shadow:none!important;padding:0!important;min-height:0!important;font:inherit;font-weight:850;text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.chip-sep{color:var(--faint);margin:0 4px;}
.patient-mini-click{cursor:pointer;border-radius:16px;padding:4px 8px;margin:-4px 0;}
.patient-mini-click:hover{background:var(--line2);}
.switch-hint{display:block;color:var(--teal-d)!important;font-size:11px!important;margin-top:2px;}
.permission-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:8px;margin:8px 0 12px;}
.perm-box{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:14px;background:var(--panel);padding:10px 11px;font-weight:750;color:var(--ink);}
.perm-box input{width:auto;min-height:auto;}
.perm-admin-row{display:flex;align-items:center;gap:8px;background:var(--line2);border:1px solid var(--line);border-radius:14px;padding:11px 12px;margin-top:12px;}
.perm-admin-row input{width:auto;min-height:auto;}
body.mobile-app-mode .permission-grid{grid-template-columns:1fr;}
body.mobile-app-mode .patient-chip-btn{font-size:13px;}
body.mobile-app-mode .patient-banner .btnrow{width:100%;}
/* ===================== v31.10: Responsive fixes (auto desktop ⇄ mobile) ===================== */
/* Root cause of the overflow bugs: CSS grid/flex items default to min-width:auto,
   so wide content (data tables, long unbroken text) forces the item — and the
   whole page — wider than the viewport instead of scrolling inside its own box.
   Allowing these items to shrink fixes horizontal overflow across every view. */
.grid>*,.two-col>*,.three-col>*,.four-col>*,.stat-row>*,.entry-three>*,
.admin-row>*,.admin-main-row>*,.admin-three-row>*,.admin-glucose-grid>*,
.admin-info-grid>*,.admin-mini-stat>*,.frow>*,.f2>*,.f3>*,.f4>*,
.missing-grid>*,.metric-pick>*,.permission-grid>*,.patient-grid>*{min-width:0;}
.dt-table-wrap{max-width:100%;min-width:0;}
main,.content{max-width:100%;}
.content{overflow-x:hidden;}

/* Daily Entry: three side-by-side tables overflowed on tablet/laptop widths
   because each table's toolbar (fixed-width search box) was wider than a 1/3
   column. Let the group reflow responsively: 3-up on wide screens, then 2-up,
   then 1-up — and let the search field shrink instead of pushing the page. */
.entry-three{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));}
.dt-toolbar{min-width:0;}
.dt-toolbar input{max-width:100%;}
.dt-toolbar .dt-right{flex:1 1 150px;min-width:0;}
.dt-toolbar .dt-right input{width:100%;}

/* ===================== v31.11: Epic MyChart-style dashboard ===================== */
.mychart-quick{margin-bottom:16px;}
.mychart-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin:2px 2px 12px;}
.mychart-hello{font-size:23px;font-weight:800;letter-spacing:-.5px;color:var(--ink);line-height:1.1;}
.mychart-sub{color:var(--soft);font-weight:600;font-size:13.5px;margin-top:4px;}
.mychart-tiles{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:16px 12px;}
.mychart-tile{background:none!important;border:0!important;box-shadow:none!important;display:flex;flex-direction:column;align-items:center;gap:9px;padding:8px 4px;cursor:pointer;min-height:auto!important;border-radius:14px;transition:background .15s,transform .05s;}
.mychart-tile:hover{background:var(--line2)!important;filter:none;}
.mychart-tile:active{transform:translateY(1px);}
.mychart-tile .mt-ic{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:25px;color:#fff;box-shadow:0 8px 18px rgba(30,60,100,.20);}
.mychart-tile .mt-lb{font-size:12.5px;font-weight:750;color:var(--ink);text-align:center;line-height:1.15;}
.tile-blue .mt-ic{background:linear-gradient(135deg,#2C7BE5,#5AA0F2);}
.tile-teal .mt-ic{background:linear-gradient(135deg,#12A5B8,#38C6D6);}
.tile-purple .mt-ic{background:linear-gradient(135deg,#7A5AD0,#9E7BEA);}
.tile-red .mt-ic{background:linear-gradient(135deg,#E15C55,#F0827B);}
.tile-amber .mt-ic{background:linear-gradient(135deg,#E8913A,#F4B35F);}
.tile-green .mt-ic{background:linear-gradient(135deg,#2E9E67,#4FBE86);}
@media(max-width:1080px){.mychart-tiles{grid-template-columns:repeat(3,1fr);}}
body.mobile-app-mode .mychart-tiles{grid-template-columns:repeat(3,1fr);gap:6px;padding:16px 10px;border-radius:22px;}
body.mobile-app-mode .mychart-hello{font-size:20px;}
body.mobile-app-mode .mychart-tile .mt-ic{width:52px;height:52px;font-size:23px;}
body.mobile-app-mode .mychart-tile .mt-lb{font-size:11.5px;}

/* Mobile bottom navigation: keep all five tabs inside narrow (≤360px) phones. */
.mobile-bottom-nav button,.mobile-bottom-nav a{min-width:0;}
.mobile-bottom-nav button b,.mobile-bottom-nav a b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
@media(max-width:360px){
  .mobile-bottom-nav{gap:3px;padding-left:6px;padding-right:6px;}
  .mobile-bottom-nav button,.mobile-bottom-nav a{font-size:18px;padding:6px 2px;}
  .mobile-bottom-nav button b,.mobile-bottom-nav a b{font-size:10px;}
}

/* ===================== v31.13: Patient summary card ===================== */
.pc-wrap{max-width:1080px;margin:0 auto;display:flex;flex-direction:column;gap:16px}
.pc-header{display:flex;align-items:center;gap:18px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px}
.pc-photo{width:76px;height:76px;border-radius:50%;overflow:hidden;flex:0 0 auto;background:var(--grad);display:flex;align-items:center;justify-content:center;font-size:34px;color:#fff}
.pc-photo img{width:100%;height:100%;object-fit:cover}
.pc-id{flex:1;min-width:0}
.pc-name{font-size:22px;font-weight:800;color:var(--ink)}
.pc-sub{color:var(--soft);font-size:14px;margin-top:2px}
.pc-actions{display:flex;gap:8px;flex:0 0 auto}
.pc-vitals{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.pc-vital{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;gap:12px;align-items:center;min-width:0}
.pc-vi{width:42px;height:42px;border-radius:12px;background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:22px;flex:0 0 auto}
.pc-vc{min-width:0}
.pc-vlabel{font-size:11.5px;font-weight:700;color:var(--soft);text-transform:uppercase;letter-spacing:.03em}
.pc-vval{font-size:22px;font-weight:800;color:var(--ink);line-height:1.15}
.pc-vval small{font-size:12px;font-weight:600;color:var(--soft)}
.pc-vwhen{font-size:12px;color:var(--soft);margin-top:2px}
.pc-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.pc-section{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;min-width:0}
.pc-span{grid-column:1 / -1}
.pc-stitle{font-size:13px;font-weight:800;color:var(--teal);text-transform:uppercase;letter-spacing:.04em;margin-bottom:10px}
.pc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.pc-list li{padding:8px 10px;background:var(--bg);border-radius:10px;font-size:14px}
.pc-empty{color:var(--soft);font-size:14px;font-style:italic}
.pc-allergy{background:#FDECEC;border:1px solid #F5C2C2;color:#B02A2A;border-radius:10px;padding:10px 12px;font-weight:700}
.pc-emergency{border-left:4px solid #DC3545}
.pc-doc{padding:10px 12px;background:var(--bg);border-radius:10px;margin-bottom:8px}
.pc-doc:last-child{margin-bottom:0}
.pc-doc-name{font-weight:700}
.pc-doc-addr{color:var(--soft);font-size:13px;margin-top:2px}
.pc-doc-appt{font-size:13px;margin-top:4px;color:var(--teal);font-weight:600}
.pc-tag{display:inline-block;background:var(--grad);color:#fff;border-radius:20px;padding:1px 8px;font-size:11px;font-weight:700;margin-left:4px}
.pc-notes{white-space:pre-wrap;font-size:14px;line-height:1.5}
@media(max-width:760px){.pc-vitals{grid-template-columns:1fr 1fr}.pc-grid{grid-template-columns:1fr}.pc-header{flex-wrap:wrap}}

/* ===================== v31.13: iOS 12 / Safari 12 compatibility ===================== */
@supports not (inset: 0px){
  .btnrow>*+*{margin-left:10px;}
  .legend>*+*{margin-left:18px;}
  .top-actions>*+*{margin-left:12px;}
  .dt-toolbar>*+*{margin-left:12px;}
  .dt-left>*+*,.dt-right>*+*{margin-left:8px;}
  .dt-pager>*+*{margin-left:6px;}
  .mychart-hero>*+*{margin-left:14px;}
  .admin-list-row>*+*{margin-left:12px;}
  .pc-header>*+*{margin-left:18px;}
  .pc-vital>*+*{margin-left:12px;}
  .pc-actions>*+*{margin-left:8px;}
  .pc-list>*+*{margin-top:8px;}
  .pc-vitals{display:block;}
  .pc-vitals .pc-vital{margin-bottom:12px;}
  .pc-grid{display:block;}
  .pc-grid .pc-section{margin-bottom:14px;}
}
.dt-table-wrap,.subtabs,.top-actions,.content,.layout,.modal{-webkit-overflow-scrolling:touch;}
html{-webkit-text-size-adjust:100%;}

/* ===================== v1.0.3 mobile navigation hotfix =====================
   Keep the drawer above the backdrop, make its middle navigation area the
   dedicated touch-scrolling region, and prevent invisible/closed drawer layers
   from intercepting taps. */
body.mobile-app-mode aside{
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;
  pointer-events:none;
  visibility:hidden;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  will-change:transform;
}
body.mobile-app-mode.mobile-menu-open aside{
  pointer-events:auto;
  visibility:visible;
}
body.mobile-app-mode aside .brand{
  flex:0 0 auto;
  position:relative;
  z-index:2;
}
body.mobile-app-mode aside nav.side{
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  max-height:none!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior-y:contain;
  -webkit-overflow-scrolling:touch!important;
  touch-action:pan-y;
  padding-bottom:20px!important;
}
body.mobile-app-mode aside nav.side a,
body.mobile-app-mode aside .side-foot a{
  pointer-events:auto;
  touch-action:manipulation;
  -webkit-tap-highlight-color:rgba(255,255,255,.10);
  user-select:none;
  -webkit-user-select:none;
}
body.mobile-app-mode aside .side-foot{
  flex:0 0 auto;
  padding-bottom:calc(12px + env(safe-area-inset-bottom));
  background:rgba(0,0,0,.08);
}
body.mobile-app-mode .mobile-menu-backdrop{
  display:block!important;
  z-index:999!important;
  touch-action:none;
}
body.mobile-app-mode aside{
  z-index:1000!important;
}
body.mobile-app-mode.mobile-menu-scroll-lock{
  position:fixed;
  left:0;
  right:0;
  width:100%;
  overflow:hidden!important;
}
body.mobile-app-mode.mobile-menu-open .mobile-bottom-nav{
  pointer-events:none;
}
@media(max-width:520px){
  body.mobile-app-mode aside{
    width:88vw!important;
    max-width:340px!important;
  }
}


/* ===================== v1.0.5 clean URL navigation ===================== */
.mobile-bottom-nav a{
  text-decoration:none;
  min-width:0;
  min-height:58px;
  padding:5px 4px;
  border-radius:18px;
  background:transparent!important;
  color:#647785!important;
  box-shadow:none!important;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
  font-size:20px;
}
.mobile-bottom-nav a b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:1;font-weight:850;}
.mobile-bottom-nav a.active{background:linear-gradient(180deg,#E4F7F8,#F5FBFC)!important;color:#077C89!important;}
.mobile-bottom-nav a.active span{transform:translateY(-1px);}
body.theme-dark.mobile-app-mode .mobile-bottom-nav a{color:var(--faint)!important;}
body.theme-dark.mobile-app-mode .mobile-bottom-nav a.active{background:color-mix(in oklab,var(--teal) 18%,transparent)!important;color:var(--teal-d)!important;}
@media(max-width:360px){.mobile-bottom-nav a{font-size:18px;padding:6px 2px}.mobile-bottom-nav a b{font-size:10px}}

/* ===================== v1.0.6 iOS mobile drawer hard fix ===================== */
:root{--dh-visual-height:100dvh;}
body.mobile-app-mode aside#mobileSidebar{
  top:0!important;
  bottom:auto!important;
  height:var(--dh-visual-height,100dvh)!important;
  max-height:var(--dh-visual-height,100dvh)!important;
  border-radius:0 22px 22px 0!important;
  contain:layout paint;
  isolation:isolate;
}
body.mobile-app-mode aside#mobileSidebar nav.side{
  overflow-y:scroll!important;
  overflow-x:hidden!important;
  scrollbar-width:thin;
  touch-action:pan-y!important;
  -webkit-overflow-scrolling:touch!important;
  padding-bottom:calc(28px + env(safe-area-inset-bottom))!important;
}
body.mobile-app-mode.mobile-menu-open .mobile-bottom-nav{
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
  transform:translate(-50%,110%)!important;
}
body.mobile-app-mode .mobile-bottom-nav{
  transition:opacity .18s ease,transform .18s ease,visibility .18s ease!important;
}
body.mobile-app-mode.mobile-menu-open .mobile-menu-backdrop{
  z-index:2147483000!important;
}
body.mobile-app-mode.mobile-menu-open aside#mobileSidebar{
  z-index:2147483001!important;
}
body.mobile-app-mode aside#mobileSidebar nav.side a{
  position:relative;
  z-index:3;
  cursor:pointer;
  pointer-events:auto!important;
}
@supports(height:100svh){
  :root{--dh-visual-height:100svh;}
}


/* ===================== v1.0.8 General patient notes vertical timeline ===================== */
.general-notes-title{align-items:flex-end;}
.general-notes-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:14px 16px!important;
}
.general-notes-filter,.general-notes-actions{
  display:flex;
  align-items:center;
  gap:9px;
  flex-wrap:wrap;
  min-width:0;
}
.general-notes-filter{flex:1 1 420px;}
.general-notes-filter .searchbox{flex:1 1 240px;max-width:380px;}
.general-notes-filter select{width:auto;min-width:170px;padding:9px 12px;}
.general-notes-actions{justify-content:flex-end;}
.general-notes-timeline-card{padding:16px!important;overflow:visible;}
.general-notes-scroll{
  width:100%;
  max-width:100%;
  overflow:visible;
  padding:4px 2px 12px;
  outline:none;
}
.general-notes-scroll:focus-visible{
  box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--teal) 24%,transparent);
  border-radius:14px;
}
.general-notes-timeline{
  --general-note-axis:176px;
  position:relative;
  display:block;
  width:min(1040px,100%);
  margin:0 auto;
  padding:8px 10px 18px;
}
.general-notes-timeline::before{
  content:"";
  position:absolute;
  left:var(--general-note-axis);
  top:25px;
  bottom:27px;
  width:4px;
  transform:translateX(-50%);
  border-radius:999px;
  background:linear-gradient(180deg,var(--line),var(--teal),var(--line));
  opacity:.72;
}
.general-notes-timeline.is-empty::before{display:none;}
.general-note-event{
  position:relative;
  display:grid;
  grid-template-columns:150px 32px minmax(0,1fr);
  align-items:start;
  width:100%;
  min-width:0;
  margin:0 0 24px;
}
.general-note-event:last-child{margin-bottom:0;}
.general-note-event[hidden]{display:none!important;}
.general-note-date{
  grid-column:1;
  min-height:46px;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:2px;
  color:var(--ink);
  text-align:right;
  padding:13px 12px 0 0;
}
.general-note-date b{font-size:14px;line-height:1.2;}
.general-note-date span{font-size:12px;color:var(--soft);font-weight:700;}
.general-note-dot{
  grid-column:2;
  position:relative;
  z-index:2;
  display:block;
  width:18px;
  height:18px;
  margin:18px auto 0;
  border-radius:50%;
  border:4px solid var(--panel);
  box-shadow:0 0 0 2px var(--teal),0 4px 10px rgba(20,50,80,.18);
  background:var(--teal);
}
.general-note-card{
  grid-column:3;
  position:relative;
  min-width:0;
  border:1px solid var(--line);
  border-radius:18px;
  background:var(--panel);
  box-shadow:0 8px 24px rgba(20,50,80,.08);
  padding:15px 15px 14px;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.general-note-card::before{
  content:"";
  position:absolute;
  top:25px;
  left:-17px;
  width:17px;
  height:2px;
  background:var(--line);
}
.general-note-card-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
}
.general-note-card h3{
  margin:0!important;
  font-size:17px!important;
  line-height:1.25;
  text-transform:none!important;
  letter-spacing:-.2px!important;
  color:var(--ink)!important;
}
.general-note-body{
  color:var(--ink);
  white-space:pre-wrap;
  overflow-wrap:anywhere;
  line-height:1.55;
}
.general-note-meta{
  border-top:1px solid var(--line2);
  padding-top:9px;
  color:var(--soft);
  font-size:12.5px;
  font-weight:700;
}
.general-note-edit{
  min-height:32px!important;
  padding:5px 8px!important;
  box-shadow:none!important;
}
.general-notes-empty{
  width:100%;
  min-height:230px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  color:var(--soft);
  text-align:center;
}
.general-notes-empty .e-ic{font-size:42px;opacity:.55;}
.general-notes-empty b{color:var(--ink);font-size:16px;}
.general-notes-no-match{
  text-align:center;
  color:var(--soft);
  padding:24px 10px;
  font-weight:700;
}
.note-category-general{background:var(--teal);}
.note-category-symptom{background:var(--red);}
.note-category-care{background:var(--green);}
.note-category-medicine{background:var(--plum);}
.note-category-appointment{background:var(--indigo);}
.note-category-hospital{background:var(--amber);}
.note-category-family{background:var(--rose);}
.note-category-other{background:var(--soft);}

body.theme-dark .general-note-card{
  background:var(--panel);
  border-color:var(--line);
  box-shadow:0 10px 28px rgba(0,0,0,.32);
}
body.theme-dark .general-note-dot{border-color:var(--panel);}

@media(max-width:820px){
  .general-notes-title{align-items:stretch!important;}
  .general-notes-title button{width:100%;}
  .general-notes-toolbar{align-items:stretch;flex-direction:column;}
  .general-notes-filter,.general-notes-actions{width:100%;}
  .general-notes-filter .searchbox{max-width:none;flex:1 1 100%;}
  .general-notes-filter select{flex:1 1 150px;min-width:0;}
  .general-notes-actions{justify-content:flex-start;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px;}
  .general-notes-actions>*{flex:0 0 auto;}
  .general-notes-timeline-card{padding:12px!important;}
  .general-notes-timeline{
    --general-note-axis:15px;
    width:100%;
    padding:8px 0 16px;
  }
  .general-notes-timeline::before{
    left:15px;
    top:17px;
    bottom:24px;
  }
  .general-note-event{
    grid-template-columns:30px minmax(0,1fr);
    grid-template-rows:auto auto;
    margin-bottom:20px;
  }
  .general-note-date{
    grid-column:2;
    grid-row:1;
    min-height:0;
    align-items:flex-start;
    text-align:left;
    padding:0 0 7px 7px;
  }
  .general-note-date b{font-size:13.5px;}
  .general-note-dot{
    grid-column:1;
    grid-row:1 / span 2;
    margin:3px auto 0;
  }
  .general-note-card{
    grid-column:2;
    grid-row:2;
    margin-left:7px;
    border-radius:16px;
  }
  .general-note-card::before{
    top:22px;
    left:-15px;
    width:15px;
  }
}

/* ===================== v1.0.9 Unified patient history vertical timeline ===================== */
.patient-history-title{align-items:flex-end;}
.patient-history-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:14px 16px!important;
}
.patient-history-filter,.patient-history-actions{
  display:flex;
  align-items:center;
  gap:9px;
  flex-wrap:wrap;
  min-width:0;
}
.patient-history-filter{flex:1 1 720px;}
.patient-history-filter .searchbox{flex:1 1 250px;max-width:390px;}
.patient-history-filter select{width:auto;min-width:180px;padding:9px 12px;}
.patient-history-date-filter{display:flex;align-items:center;gap:7px;color:var(--soft);font-size:13px;font-weight:750;}
.patient-history-date-filter input{width:148px;min-height:40px;padding:8px 10px;font-size:14px;}
.patient-history-actions{justify-content:flex-end;}
.patient-history-timeline-card{padding:16px!important;overflow:visible;}
.patient-history-timeline{
  --patient-history-axis:176px;
  position:relative;
  display:block;
  width:min(1120px,100%);
  margin:0 auto;
  padding:8px 10px 18px;
}
.patient-history-timeline::before{
  content:"";
  position:absolute;
  left:var(--patient-history-axis);
  top:25px;
  bottom:27px;
  width:4px;
  transform:translateX(-50%);
  border-radius:999px;
  background:linear-gradient(180deg,var(--teal),var(--indigo),var(--green),var(--amber));
  opacity:.65;
}
.patient-history-timeline.is-empty::before{display:none;}
.patient-history-event{
  position:relative;
  display:grid;
  grid-template-columns:150px 32px minmax(0,1fr);
  align-items:start;
  width:100%;
  min-width:0;
  margin:0 0 22px;
}
.patient-history-event:last-child{margin-bottom:0;}
.patient-history-event[hidden]{display:none!important;}
.patient-history-date{
  grid-column:1;
  min-height:46px;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:2px;
  color:var(--ink);
  text-align:right;
  padding:13px 12px 0 0;
}
.patient-history-date b{font-size:14px;line-height:1.2;}
.patient-history-date span{font-size:12px;color:var(--soft);font-weight:700;}
.patient-history-dot{
  grid-column:2;
  position:relative;
  z-index:2;
  display:flex;
  align-items:center;
  justify-content:center;
  width:28px;
  height:28px;
  margin:13px auto 0;
  border-radius:50%;
  border:4px solid var(--panel);
  box-shadow:0 0 0 2px currentColor,0 5px 12px rgba(20,50,80,.18);
  color:var(--teal);
  background:var(--panel);
  font-size:13px;
  line-height:1;
}
.patient-history-type-medication{color:var(--plum);}
.patient-history-type-visit{color:var(--indigo);}
.patient-history-type-general{color:var(--teal);}
.patient-history-type-problem{color:var(--red);}
.patient-history-type-delivery{color:var(--amber);}
.patient-history-type-hospital{color:var(--green);}
.patient-history-card{
  grid-column:3;
  position:relative;
  min-width:0;
  border:1px solid var(--line);
  border-radius:18px;
  background:var(--panel);
  box-shadow:0 8px 24px rgba(20,50,80,.08);
  padding:15px 15px 14px;
  display:flex;
  flex-direction:column;
  gap:9px;
}
.patient-history-card::before{
  content:"";
  position:absolute;
  top:26px;
  left:-17px;
  width:17px;
  height:2px;
  background:var(--line);
}
.patient-history-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.patient-history-card h3{
  margin:0!important;
  font-size:17px!important;
  line-height:1.3;
  text-transform:none!important;
  letter-spacing:-.2px!important;
  color:var(--ink)!important;
}
.patient-history-body{color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55;}
.patient-history-meta{border-top:1px solid var(--line2);padding-top:9px;color:var(--soft);font-size:12.5px;font-weight:700;}
.patient-history-open{min-height:32px!important;padding:5px 10px!important;box-shadow:none!important;flex:0 0 auto;}
.patient-history-empty{
  width:100%;
  min-height:250px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  color:var(--soft);
  text-align:center;
  padding:24px;
}
.patient-history-empty .e-ic{font-size:44px;opacity:.58;}
.patient-history-empty b{color:var(--ink);font-size:17px;}
.patient-history-empty span{max-width:540px;}
.patient-history-no-match{text-align:center;color:var(--soft);padding:26px 10px;font-weight:700;}
body.theme-dark .patient-history-card{background:var(--panel);border-color:var(--line);box-shadow:0 10px 28px rgba(0,0,0,.32);}
body.theme-dark .patient-history-dot{border-color:var(--panel);background:var(--panel);}

@media(max-width:1040px){
  .patient-history-toolbar{align-items:stretch;flex-direction:column;}
  .patient-history-filter,.patient-history-actions{width:100%;}
  .patient-history-actions{justify-content:flex-start;}
}

@media(max-width:820px){
  .patient-history-title{align-items:stretch!important;}
  .patient-history-title .top-chip{align-self:flex-start;}
  .patient-history-toolbar{padding:12px!important;}
  .patient-history-filter{display:grid;grid-template-columns:1fr 1fr;}
  .patient-history-filter .searchbox{grid-column:1 / -1;max-width:none;width:100%;}
  .patient-history-filter select{width:100%;min-width:0;}
  .patient-history-date-filter{grid-column:1 / -1;display:grid;grid-template-columns:1fr auto 1fr;width:100%;}
  .patient-history-date-filter input{width:100%;min-width:0;}
  .patient-history-actions{overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px;}
  .patient-history-actions>*{flex:0 0 auto;}
  .patient-history-timeline-card{padding:12px!important;}
  .patient-history-timeline{--patient-history-axis:15px;width:100%;padding:8px 0 16px;}
  .patient-history-timeline::before{left:15px;top:18px;bottom:24px;}
  .patient-history-event{grid-template-columns:34px minmax(0,1fr);grid-template-rows:auto auto;margin-bottom:20px;}
  .patient-history-date{grid-column:2;grid-row:1;min-height:0;align-items:flex-start;text-align:left;padding:0 0 7px 9px;}
  .patient-history-date b{font-size:13.5px;}
  .patient-history-dot{grid-column:1;grid-row:1 / span 2;width:26px;height:26px;margin:1px auto 0;font-size:12px;}
  .patient-history-card{grid-column:2;grid-row:2;border-radius:16px;padding:14px;}
  .patient-history-card::before{top:20px;left:-12px;width:12px;}
  .patient-history-card-head{align-items:flex-start;}
  .patient-history-card h3{font-size:16px!important;}
}

@media(max-width:420px){
  .patient-history-filter{grid-template-columns:1fr;}
  .patient-history-filter .searchbox,.patient-history-date-filter{grid-column:1;}
  .patient-history-date-filter{grid-template-columns:1fr;gap:6px;}
  .patient-history-date-filter span{display:none;}
  .patient-history-card-head{flex-direction:column;align-items:flex-start;}
}
