:root{--ink:#17312d;--muted:#70827e;--line:#e1e9e6;--paper:#fff;--bg:#f3f7f5;--green:#218267;--green-soft:#e4f3ed;--yellow:#d49313;--yellow-soft:#fff3d5;--red:#c94f4f;--red-soft:#fbe8e6;--nav:#123c34;--shadow:0 18px 50px rgba(25,61,52,.09)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg)}button,input{font:inherit}.hidden{display:none!important}.eyebrow{margin:0 0 8px;font-size:11px;letter-spacing:.18em;font-weight:800;color:var(--green)}.brand-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#fff;color:var(--green);font-family:Georgia,serif;font-size:25px;font-weight:bold;box-shadow:0 8px 24px rgba(0,0,0,.14)}.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(360px,1.05fr) minmax(420px,.95fr);background:#fff}.login-brand{padding:9vh 11vw 7vh 8vw;background:linear-gradient(145deg,#0d3b32 0%,#175749 60%,#24725f 100%);color:#fff;position:relative;overflow:hidden}.login-brand:after{content:"";position:absolute;width:480px;height:480px;border:1px solid rgba(255,255,255,.12);border-radius:50%;right:-240px;bottom:-220px;box-shadow:0 0 0 80px rgba(255,255,255,.035),0 0 0 160px rgba(255,255,255,.025)}.login-brand .eyebrow{color:#8fd8bf;margin-top:54px}.login-brand h1{font-size:44px;max-width:520px;line-height:1.2;margin:12px 0 20px}.login-brand>p:not(.eyebrow){max-width:520px;line-height:1.9;color:#c9e0d9}.login-feature{display:flex;gap:18px;align-items:center;margin-top:38px;position:relative;z-index:1}.login-feature>span{width:42px;height:42px;border:1px solid rgba(255,255,255,.25);display:grid;place-items:center;border-radius:50%;color:#9be0c7}.login-feature b,.login-feature small{display:block}.login-feature small{color:#b9d6cd;margin-top:5px}.login-card{width:min(430px,76%);margin:auto}.login-card h2{font-size:30px;margin:0 0 34px}.login-card label{display:block;font-weight:700;font-size:14px;margin:20px 0}.login-card label small{font-weight:400;color:var(--muted)}input{width:100%;border:1px solid var(--line);border-radius:10px;padding:13px 14px;margin-top:8px;outline:0;background:#fbfdfc}input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(33,130,103,.1)}button{border:0;cursor:pointer}.primary{background:var(--green);color:#fff;border-radius:10px;padding:14px 20px;font-weight:700}.login-card .primary{width:100%;margin-top:10px}.security-note{font-size:12px;color:var(--muted);text-align:center;margin-top:22px}.app-shell{min-height:100vh;display:grid;grid-template-columns:236px 1fr}aside{position:fixed;inset:0 auto 0 0;width:236px;background:var(--nav);color:#fff;padding:24px 16px;display:flex;flex-direction:column}.side-brand{display:flex;align-items:center;gap:12px;padding:0 8px 32px}.side-brand b,.side-brand small{display:block}.side-brand small{margin-top:3px;color:#8db8ad;font-size:11px}.side-brand .brand-mark{width:38px;height:38px;font-size:22px}nav{display:grid;gap:7px}nav button{background:transparent;color:#a8c9c1;text-align:left;padding:12px 14px;border-radius:9px;font-weight:600}nav button span{display:inline-grid;width:27px;font-size:17px}nav button:hover,nav button.active{background:rgba(255,255,255,.1);color:#fff}.side-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.13);padding:18px 6px 0;display:grid;grid-template-columns:36px 1fr 28px;align-items:center;gap:9px}.side-footer .avatar{width:36px;height:36px;display:grid;place-items:center;background:#d8eee6;color:var(--green);border-radius:50%;font-weight:800}.side-footer b,.side-footer small{display:block;font-size:12px}.side-footer small{color:#8db8ad;margin-top:3px}.side-footer button{background:transparent;color:#8db8ad;font-size:20px}main{grid-column:2;padding:30px 36px 60px;min-width:0}header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:28px}header h1{font-size:27px;margin:0}.header-actions{display:flex;gap:14px;align-items:center;color:var(--muted);font-size:12px}.ghost{border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 13px;color:var(--ink)}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.metric,.panel{background:var(--paper);border:1px solid #e8eeec;border-radius:14px;box-shadow:0 4px 20px rgba(27,65,55,.035)}.metric{padding:20px}.metric small{color:var(--muted)}.metric strong{display:block;font-size:30px;margin-top:10px}.metric .delta{float:right;font-size:11px;padding:4px 7px;border-radius:20px;background:var(--green-soft);color:var(--green)}.layout-2{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.8fr);gap:16px;margin-top:16px}.panel{padding:20px}.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.panel-head h2{font-size:16px;margin:0}.panel-head small{color:var(--muted)}table{width:100%;border-collapse:collapse}th{text-align:left;color:var(--muted);font-size:11px;font-weight:600;padding:10px;border-bottom:1px solid var(--line)}td{padding:13px 10px;border-bottom:1px solid #edf1ef;font-size:13px}tbody tr{cursor:pointer}tbody tr:hover{background:#f8fbfa}.zone{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:20px;font-size:12px;font-weight:700}.zone:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.zone.green{color:var(--green);background:var(--green-soft)}.zone.yellow{color:var(--yellow);background:var(--yellow-soft)}.zone.red{color:var(--red);background:var(--red-soft)}.zone.pending{color:#71817e;background:#edf1f0}.alert-item{display:grid;grid-template-columns:8px 1fr auto;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.alert-item .signal{width:8px;height:8px;border-radius:50%;margin-top:6px;background:var(--yellow)}.alert-item.critical .signal{background:var(--red)}.alert-item b,.alert-item small{display:block}.alert-item small{color:var(--muted);margin-top:5px}.alert-item time{font-size:11px;color:var(--muted)}.toolbar{display:flex;justify-content:space-between;gap:12px;margin-bottom:16px}.search{max-width:360px;margin:0}.search input{margin:0}.button-row{display:flex;gap:8px}.danger{color:var(--red)}.detail-head{display:flex;justify-content:space-between;align-items:center}.patient-id{display:flex;gap:14px;align-items:center}.patient-id .avatar{width:50px;height:50px;background:var(--green-soft);color:var(--green);border-radius:14px;display:grid;place-items:center;font-weight:800;font-size:20px}.patient-id h2,.patient-id p{margin:0}.patient-id p{color:var(--muted);font-size:12px;margin-top:5px}.tabs{display:flex;gap:20px;border-bottom:1px solid var(--line);margin:20px 0}.tabs button{background:transparent;padding:10px 2px;color:var(--muted)}.tabs button.active{color:var(--green);border-bottom:2px solid var(--green);font-weight:700}.chart{height:230px;display:flex;align-items:flex-end;gap:8px;padding:25px 5px 28px;border-bottom:1px solid var(--line);position:relative}.chart:before,.chart:after{content:"";position:absolute;left:0;right:0;border-top:1px dashed #dce5e1}.chart:before{top:34%}.chart:after{top:66%}.bar{flex:1;min-width:8px;max-width:30px;background:linear-gradient(#62b69e,#248267);border-radius:5px 5px 0 0;position:relative;z-index:1}.notice{background:var(--yellow-soft);color:#77530b;border:1px solid #f2d995;border-radius:10px;padding:12px 14px;font-size:13px;margin:12px 0}.json-block{background:#f7faf9;border:1px solid var(--line);padding:12px;border-radius:9px;white-space:pre-wrap;font:12px/1.6 ui-monospace,monospace;max-height:230px;overflow:auto}.task-row{display:grid;grid-template-columns:1fr 150px 110px 90px;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.task-row small{display:block;color:var(--muted);margin-top:4px}.source{font-size:11px;color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:50px 20px}.modal{position:fixed;inset:0;background:rgba(13,39,33,.4);display:grid;place-items:center;z-index:20}.modal-card{width:min(520px,90vw);background:#fff;border-radius:16px;padding:24px;box-shadow:var(--shadow)}.modal-card h2{margin-top:0}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}.toast{position:fixed;right:24px;top:22px;background:var(--ink);color:#fff;border-radius:9px;padding:11px 16px;z-index:50;opacity:0;transform:translateY(-10px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}@media(max-width:1000px){.metrics{grid-template-columns:repeat(2,1fr)}.layout-2{grid-template-columns:1fr}.app-shell{grid-template-columns:190px 1fr}aside{width:190px}main{padding:25px 22px}}@media(max-width:720px){.login-shell{grid-template-columns:1fr}.login-brand{display:none}.login-card{padding:50px 0}.app-shell{display:block}aside{position:static;width:auto;min-height:auto}.side-footer{display:none}nav{grid-template-columns:repeat(4,1fr)}nav button{font-size:0;text-align:center}nav button span{font-size:19px;width:auto}.side-brand{padding-bottom:18px}main{padding:22px 14px}.metrics{grid-template-columns:1fr 1fr}.header-actions span{display:none}.task-row{grid-template-columns:1fr 80px}.task-row>*:nth-child(2){display:none}}

.daily-toolbar{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:16px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#f8fbfa}.daily-toolbar input{width:auto;min-width:155px;margin:0;padding:9px 12px;background:#fff}.daily-grid{display:grid;gap:16px}.daily-card{border:1px solid var(--line);border-radius:13px;padding:17px;overflow-x:auto}.daily-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:10px}.daily-title small{color:var(--muted)}.daily-title h3{font-size:20px;margin:4px 0 0}.daily-title>span{color:var(--green);font-weight:700;font-size:13px}.daily-card tbody tr{cursor:default}.daily-card td small{display:block;color:var(--muted);margin-top:4px}.daily-empty{text-align:center;color:var(--muted);padding:26px 12px;background:#fafcfb;border-radius:9px}@media(max-width:720px){.daily-toolbar{flex-wrap:wrap}.daily-toolbar input{order:-1;width:100%}.daily-title{align-items:flex-start;flex-direction:column}}

/* Phone workbench: preserve complete information while keeping actions reachable. */
.panel,.daily-card{min-width:0}.modal{padding:16px;overflow-y:auto}.modal-card{max-height:calc(100dvh - 32px);overflow-y:auto}.table-scroll-hint{display:none}
@media(max-width:720px){
  body{overflow-x:hidden}
  .app-shell{padding-bottom:0}
  aside{position:sticky;top:0;z-index:15;display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;padding:8px 10px;padding-top:max(8px,env(safe-area-inset-top));box-shadow:0 5px 16px rgba(13,39,33,.2)}
  .side-brand{display:none}
  nav{grid-column:1;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px}
  nav button{min-height:44px;display:grid;place-items:center;gap:2px;padding:4px 2px;font-size:11px;line-height:1.15;text-align:center}
  nav button span{display:block;width:auto;font-size:16px;line-height:1}
  .side-footer{grid-column:2;display:block;margin:0;padding:0;border:0}
  .side-footer .avatar,.side-footer>div:not(.avatar){display:none}
  .side-footer button{display:grid;place-items:center;min-width:44px;min-height:44px;border-radius:9px;background:rgba(255,255,255,.1);color:#fff;font-size:20px}
  main{padding:20px 12px calc(32px + env(safe-area-inset-bottom))}
  header{flex-wrap:wrap;gap:12px;margin-bottom:20px}
  header h1{font-size:24px}
  .header-actions{width:100%;justify-content:space-between}
  .header-actions .ghost{min-height:40px}
  .panel{padding:15px;overflow-x:auto}
  .panel>table{min-width:560px}
  .daily-card table{min-width:540px}
  .panel-head{gap:12px;align-items:flex-start}
  .panel-head small{line-height:1.45}
  .toolbar{flex-wrap:wrap}
  .toolbar .search{flex:1 1 190px;max-width:none}
  .toolbar>.primary{min-height:44px;flex:1 0 auto}
  .detail-head{align-items:flex-start;flex-direction:column;gap:14px}
  .patient-id{align-items:flex-start}
  .patient-id h2{line-height:1.45}
  .button-row{width:100%;flex-wrap:wrap}
  .button-row .ghost{min-height:42px;flex:1 1 calc(50% - 4px)}
  .tabs{gap:16px;overflow-x:auto;overscroll-behavior-x:contain;white-space:nowrap;padding-bottom:1px}
  .tabs button{flex:0 0 auto;min-height:42px}
  .task-row{grid-template-columns:minmax(0,1fr) auto;gap:10px}
  .task-row>*:first-child{grid-column:1/-1}
  .task-row>*:nth-child(2){display:block}
  .task-row .ghost{min-height:40px}
  .alert-item{grid-template-columns:8px minmax(0,1fr);gap:10px}
  .alert-item time{grid-column:2}
  .modal{align-items:flex-start;padding:12px}
  .modal-card{width:100%;max-height:calc(100dvh - 24px);margin:auto;padding:20px 16px}
  .modal-actions{position:sticky;bottom:-20px;margin:18px -16px -20px;padding:12px 16px;flex-wrap:wrap;background:#fff;border-top:1px solid var(--line)}
  .modal-actions .ghost,.modal-actions .primary{min-height:44px}
  .toast{top:max(12px,env(safe-area-inset-top));right:12px;left:12px;text-align:center}
}

.binding-status{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:20px;font-size:12px;font-weight:700;white-space:nowrap}
.binding-status:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.binding-status.bound{color:var(--green);background:var(--green-soft)}
.binding-status.unbound{color:#71817e;background:#edf1f0}
.patient-id h2{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* Keep patient metadata compact so the action buttons retain their shape. */
.detail-head{align-items:flex-start;gap:24px}
.patient-id{flex:1 1 auto;min-width:0;align-items:flex-start}
.patient-id>div:last-child{min-width:0}
.patient-id p{max-width:720px;line-height:1.65;overflow-wrap:anywhere}
.button-row{flex:0 0 auto;flex-wrap:nowrap;align-items:flex-start}
.button-row .ghost{flex:0 0 auto;white-space:nowrap}

@media(max-width:1350px){
  .detail-head{flex-wrap:wrap}
  .patient-id{flex-basis:100%}
  .button-row{width:100%;flex-wrap:wrap}
}

@media(max-width:720px){
  .button-row .ghost{flex:1 1 calc(50% - 4px)}
}

.version-refresh{margin-top:auto;width:100%;display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid rgba(255,255,255,.18);border-radius:10px;background:rgba(255,255,255,.07);color:#d7ebe5;text-align:left;transition:background .2s,border-color .2s}
.version-refresh:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.3);color:#fff}
.version-refresh>span:first-child{font-size:22px;line-height:1}
.version-refresh b,.version-refresh small{display:block}
.version-refresh b{font-size:13px}
.version-refresh small{margin-top:3px;color:#8db8ad;font-size:11px}
.version-refresh:disabled{cursor:wait;opacity:.75}
.side-footer{margin-top:14px}

@media(max-width:720px){
  .version-refresh{display:none}
  .side-footer{margin-top:0}
}
