@charset "UTF-8";
:root{--ink:#263d36;--muted:#708078;--green:#176756;--green-dark:#105142;--mint:#e5f3eb;--line:#dfe7e2;--paper:#fff;--bg:#f4f6f3;--amber:#9a651a;--red:#ab4b43;font-family:"Segoe UI","Microsoft JhengHei",system-ui,sans-serif;color:var(--ink);background:var(--bg);font-size:14px;font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #82bfa9;outline-offset:3px}button{border:0;background:none;color:inherit}a{color:var(--green)}.loading{padding:80px;text-align:center}.shell{display:grid;grid-template-columns:218px minmax(0,1fr);min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:218px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;padding:31px 18px 20px;z-index:5}.brand{display:flex;align-items:center;gap:11px;padding:0 10px}.brand img{width:39px;height:39px}.brand strong{font-size:23px;letter-spacing:-.9px}.brand small{display:block;font-size:10px;letter-spacing:1.2px;color:var(--muted);margin-top:3px}.nav-caption{font-size:10px;letter-spacing:1.8px;color:#9ca79f;margin:44px 14px 15px}.nav{display:grid;gap:7px}.nav button{display:flex;align-items:center;gap:12px;padding:14px;border-radius:8px;text-align:left;font-weight:600;color:#667870}.nav button.active{color:var(--green);background:var(--mint)}.nav button:hover{background:#f1f6f2}.nav .count{margin-left:auto;font-size:11px;background:white;border-radius:5px;padding:2px 6px}.sidebar-bottom{margin-top:auto;padding:22px 10px 0}.network-note{border:1px solid var(--line);background:#f8faf7;padding:13px;border-radius:8px;font-size:11px;line-height:1.8}.network-note b{display:block;color:var(--green);font-size:12px}.user{display:flex;gap:10px;align-items:center;border-top:1px solid var(--line);margin-top:20px;padding-top:19px}.avatar{width:32px;height:32px;display:grid;place-items:center;background:#eaece4;border-radius:50%;color:#607052}.user strong{font-size:12px}.user small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.workspace{grid-column:2;min-width:0}.topbar{height:70px;background:rgba(255,255,255,.8);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px;gap:12px}.breadcrumb{color:var(--muted);font-size:12px}.breadcrumb b{color:var(--ink);font-weight:500;margin-left:12px}.top-right{display:flex;align-items:center;gap:17px;color:var(--muted);font-size:12px}.pill{display:inline-flex;gap:6px;align-items:center;border:1px solid #d5e6d8;color:#487954;background:#f4f9f1;border-radius:20px;padding:5px 10px;font-size:11px;white-space:nowrap}.dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.content{max-width:1600px;margin:auto;padding:31px 34px 35px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:25px}.eyebrow{font-size:10px;font-weight:700;color:var(--green);letter-spacing:2.2px;margin-bottom:8px}h1{font-size:27px;letter-spacing:.4px;margin:0 0 7px;font-weight:650}h2{font-size:17px;font-weight:650;margin:0}h3{font-size:14px;margin:0}.sub{color:var(--muted);font-size:12px;line-height:1.8;margin:0}.head-actions{display:flex;align-items:center;gap:9px}.btn{display:inline-flex;gap:8px;justify-content:center;align-items:center;border:1px solid var(--line);background:white;padding:10px 15px;border-radius:7px;font-weight:600;font-size:12px;white-space:nowrap;min-height:38px}.btn:hover{background:#edf4ef}.btn.primary{background:var(--green);border-color:var(--green);color:white}.btn.primary:hover{background:var(--green-dark)}.btn.danger{background:#fff4f1;color:var(--red);border-color:#f0cfc8}.btn.small{font-size:11px;padding:7px 10px;min-height:30px}.icon{width:18px;height:18px;display:inline-block;vertical-align:middle;flex-shrink:0}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:25px}.stat{border:1px solid var(--line);border-radius:10px;background:white;padding:19px 21px;min-height:117px}.stat-title{font-size:12px;color:#6b7b73;display:flex;justify-content:space-between;align-items:center}.stat-title .icon{color:#90a198}.stat-number{font-size:33px;line-height:1.2;font-weight:600;letter-spacing:-1px;margin-top:10px}.stat-number small{font-size:12px;font-weight:400;color:var(--muted);letter-spacing:0;margin-left:7px}.stat-foot{font-size:10px;margin-top:9px;color:var(--muted)}.stat.emphasis{background:var(--green);border-color:var(--green);color:white}.stat.emphasis .stat-title,.stat.emphasis .stat-foot,.stat.emphasis .stat-number small,.stat.emphasis .icon{color:#c7e3d6}.stat-foot strong{font-weight:500;color:inherit}.main-grid{display:grid;grid-template-columns:minmax(0,1fr) 275px;gap:22px}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px;gap:12px}.section-header small{color:var(--muted);font-size:11px}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.segments{display:flex;padding:4px;background:#e9eee9;border-radius:7px;gap:2px}.segments button{padding:7px 12px;font-size:11px;border-radius:5px;white-space:nowrap;color:#64736b}.segments button.active{background:white;color:var(--green);box-shadow:0 1px 4px #213c3610;font-weight:650}.filter-select{margin-left:auto}.filters select,.filters input,.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:7px;background:#fff;padding:10px 11px;color:var(--ink);min-width:0}.filters select{font-size:11px;padding:10px}.beds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.bed{border:1px solid #dce5df;border-radius:9px;background:#fff;padding:16px 15px 12px;position:relative;min-height:211px;text-align:left;transition:box-shadow .15s,border-color .15s}.bed:hover{border-color:#88ad98;box-shadow:0 5px 13px #214a3810}.bed-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:8px}.bed-id{font-weight:700;letter-spacing:.8px;font-size:14px}.badge{display:inline-flex;gap:5px;align-items:center;white-space:nowrap;font-size:10px;padding:4px 7px;border-radius:4px;background:#eef3ef;color:#4b7565}.badge.available{background:#e8f3df;color:#628441}.badge.cleaning,.badge.urgent{background:#fff0dd;color:var(--amber)}.badge.cancelled{background:#f3e8e4;color:#966d61}.dept{display:inline-block;font-size:10px;background:#edf1f8;color:#5e7199;border-radius:4px;padding:3px 6px}.dept.d1{background:#f0ebf8;color:#826497}.dept.d2{background:#e7f3f0;color:#468875}.dept.d3{background:#fbede6;color:#ae7a5c}.dept.d4{background:#f0f1df;color:#858244}.patient-name{font-size:16px;font-weight:600;margin-top:8px}.mrn{font-size:10px;letter-spacing:.5px;color:#85928a;margin-top:5px}.bed-bottom{margin-top:15px;border-top:1px solid #edf0ed;padding-top:11px;display:flex;align-items:center;gap:5px;font-size:10px;color:#87948c}.bed-bottom .icon{width:13px;height:13px}.bed-bottom.planned{color:var(--green)}.bed-bottom.overdue{color:var(--red)}.empty-bed{background:#f8faf5;border-style:dashed;display:flex;flex-direction:column}.empty-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;color:#8da27c}.empty-center .icon{width:28px;height:28px}.empty-center b{font-size:12px;font-weight:500}.empty-center small{font-size:10px;color:#98a590}.empty-bed.cleaning{background:#fbf9f3;border-color:#e1dccb}.empty-bed.cleaning .empty-center{color:#aa9b78}.legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:16px;color:var(--muted);font-size:10px}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:7px;height:7px;border-radius:2px;background:#5f86ad}.legend .d1{background:#947bac}.legend .d2{background:#65a491}.legend .d3{background:#c4977e}.legend .d4{background:#a9aa6b}.aside-panel{background:white;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:16px}.panel-title{padding:18px 17px 14px;border-bottom:1px solid #edf1eb;display:flex;align-items:center;justify-content:space-between}.panel-title h2{font-size:14px}.panel-title span{font-size:10px;color:var(--muted)}.transfer-item{padding:15px 17px;display:flex;gap:11px;border-bottom:1px solid #f0f3ef}.time-marker{color:var(--green);font-size:11px;font-weight:650;padding-top:2px;min-width:36px}.timeline-body{border-left:2px solid #e6eee4;padding-left:12px;flex:1}.timeline-body strong{font-size:12px}.timeline-body p{font-size:11px;color:var(--muted);margin:5px 0}.timeline-body small{font-size:10px;color:#87978c}.text-link{color:var(--green);font-size:11px;text-align:left;padding:0}.panel-foot{padding:13px 17px;background:#fafbf8;line-height:1.7;font-size:10px;color:var(--muted)}.ratio{padding:16px 17px}.ratio-line{display:flex;justify-content:space-between;margin-bottom:8px;font-size:11px}.bar{height:6px;border-radius:5px;background:#edf0e8;overflow:hidden;margin-bottom:15px}.bar:last-child{margin-bottom:0}.bar progress{display:block;width:100%;height:6px;border:0;border-radius:5px;appearance:none}.bar progress::-webkit-progress-bar{background:#edf0e8}.bar progress::-webkit-progress-value{background:#81a797;border-radius:5px}.bar progress::-moz-progress-bar{background:#81a797}.table-panel{background:white;border:1px solid var(--line);border-radius:10px;overflow:hidden}.table-head{padding:19px 20px;display:flex;align-items:center;justify-content:space-between;gap:15px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap;font-size:12px}th{background:#f8faf7;padding:12px 16px;border-bottom:1px solid var(--line);color:#7a877e;font-size:10px;font-weight:500}td{padding:15px 16px;border-bottom:1px solid #eef1eb;vertical-align:middle}tbody tr:last-child td{border-bottom:0}td small{display:block;color:var(--muted);font-size:10px;margin-top:5px}.row-name{font-weight:600}.row-actions{display:flex;gap:6px}.overview-bookings{margin-top:25px}.empty-message{padding:35px 20px;text-align:center;color:var(--muted);font-size:12px;grid-column:1/-1}.footer{display:flex;justify-content:space-between;margin-top:23px;color:#92a093;font-size:10px;gap:20px}.footer strong{font-weight:400;color:#6b8771}.demo-banner{padding:8px 16px;background:#f4edda;color:#8c7443;font-size:11px;line-height:1.6;display:flex;gap:8px;align-items:center}.note-banner{background:#ecf3ec;border:1px solid #d8e6d9;border-radius:7px;padding:13px 15px;color:#68816b;font-size:12px;line-height:1.8;margin-bottom:20px}.form-card{background:white;border:1px solid var(--line);border-radius:10px;padding:25px;max-width:900px}.form-section{margin-bottom:25px}.form-section h2{font-size:15px;margin-bottom:18px;padding-bottom:13px;border-bottom:1px solid #edf0eb}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 23px}.field{display:flex;flex-direction:column;gap:7px;font-size:12px;color:#54685d}.field.full{grid-column:1/-1}.field input,.field select{width:100%;height:42px}.field textarea{resize:vertical;min-height:84px;width:100%;line-height:1.7}.field em{font-style:normal;color:#bd7965}.field small{color:var(--muted);font-size:10px}.form-actions{display:flex;justify-content:flex-end;gap:9px;border-top:1px solid var(--line);padding-top:20px;margin-top:20px}.form-error{color:var(--red);font-size:12px;line-height:1.7;margin-top:14px}.search{flex:1;min-width:180px}.query-filters{background:white;padding:16px;border:1px solid var(--line);border-radius:9px}.query-filters label{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:8px}.detail-list{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:20px 0}.detail-list dt{font-size:10px;color:var(--muted);margin-bottom:6px}.detail-list dd{margin:0;font-size:13px;overflow-wrap:anywhere}.detail-list .full{grid-column:1/-1}.detail-note{white-space:pre-wrap;line-height:1.8}dialog{border:1px solid var(--line);border-radius:13px;padding:0;width:560px;max-width:calc(100vw - 32px);max-height:90vh;color:var(--ink);box-shadow:0 20px 80px #15342930}dialog::backdrop{background:#17382c60;backdrop-filter:blur(3px)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:21px 24px;border-bottom:1px solid var(--line);position:sticky;top:0;background:white;z-index:1}.modal-body{padding:22px 24px}.modal-head h2{font-size:19px}.close{width:30px;height:30px;border-radius:5px;font-size:24px;color:var(--muted)}.close:hover{background:var(--mint)}.modal-body .form-grid{gap:16px}.modal-sub{font-size:12px;color:var(--muted);margin:0 0 17px;line-height:1.8}#toast{position:fixed;bottom:27px;left:50%;transform:translate(-50%,20px);background:#1c5746;color:white;padding:13px 24px;border-radius:8px;box-shadow:0 5px 30px #17382c30;opacity:0;pointer-events:none;transition:.2s;z-index:30;font-size:13px;max-width:90vw}#toast.show{opacity:1;transform:translate(-50%,0)}.login{min-height:100vh;display:grid;place-items:center;padding:25px;background:#eef3ee}.login-card{width:390px;max-width:100%;padding:34px;background:white;border:1px solid var(--line);border-radius:15px}.login-card .brand{padding:0;margin-bottom:28px}.login-card h1{font-size:22px}.login-card form{display:grid;gap:18px;margin-top:25px}.login-card .btn{width:100%}.login-card p{font-size:12px;color:var(--muted);line-height:1.8}.audit-detail{font-size:11px;color:var(--muted);white-space:normal;max-width:350px}.status-offline{color:var(--red)}.mobile-title{display:none}.read-only{font-size:11px;color:var(--muted)}
.badge.closed{background:#e3e6eb;color:#555e6c}.bed.closed{background:#eceff2;border:1px solid #d8dde3}.bed.closed .empty-center{color:#68717f}.bed.closed .empty-center b{font-size:18px;font-weight:600}.section-header>small{text-align:right;line-height:1.7}
@media(min-width:1550px){.beds{grid-template-columns:repeat(4,minmax(0,1fr))}.main-grid{grid-template-columns:minmax(0,1fr) 300px}.bed{min-height:210px}}
@media(max-width:1190px){.sidebar{width:190px;padding-left:12px;padding-right:12px}.shell{grid-template-columns:190px minmax(0,1fr)}.content{padding:25px 24px}.topbar{padding:0 24px}.main-grid{grid-template-columns:minmax(0,1fr) 240px;gap:16px}.beds{grid-template-columns:repeat(2,minmax(0,1fr))}.stat{padding:17px 15px}.filter-select{margin-left:0}}
@media(max-width:920px){.main-grid{grid-template-columns:1fr}.aside{display:block}.beds{grid-template-columns:repeat(3,minmax(0,1fr))}.stats{gap:9px}.stat-number{font-size:27px}.top-right time{display:none}.sidebar{width:174px}.shell{grid-template-columns:174px minmax(0,1fr)}.brand{gap:7px}.brand strong{font-size:21px}.brand img{width:33px}.sidebar-bottom{padding-left:3px;padding-right:3px}}
@media(max-width:700px){.shell{display:block}.sidebar{position:static;width:auto;padding:15px 18px 0;border-right:0;border-bottom:1px solid var(--line)}.brand small{font-size:8px}.nav-caption,.sidebar-bottom{display:none}.nav{display:flex;gap:5px;margin-top:15px;overflow-x:auto}.nav button{font-size:11px;padding:12px 9px;border-radius:6px 6px 0 0;white-space:nowrap;gap:5px}.nav .icon{width:15px}.nav .count{display:none}.topbar{height:46px;padding:0 18px}.top-right{gap:6px}.breadcrumb{font-size:10px}.content{padding:23px 16px}.page-head{align-items:flex-start;gap:9px;margin-bottom:20px}h1{font-size:24px}.head-actions{flex-direction:column;gap:6px}.head-actions .btn{font-size:10px;padding:8px 9px;min-height:33px}.stats{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:23px}.stat{min-height:109px}.stat-number{font-size:29px}.beds{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.bed{padding:13px 11px;min-height:201px}.bed-top{gap:3px}.bed-id{font-size:12px}.badge{font-size:9px;padding:4px 5px}.aside{display:block}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.form-card{padding:19px}.form-actions{flex-wrap:wrap}.query-filters{align-items:stretch}.query-filters>*{width:100%}.footer{font-size:9px}.demo-banner{font-size:10px}.legend{gap:10px}.filter-select{margin-left:auto}.segments button{padding:7px 9px}.detail-list{gap:15px}.modal-body{padding:20px}.modal-head{padding:17px 20px}.top-right .pill{font-size:9px}}

.bed[draggable="true"]{cursor:grab}.bed.dragging{opacity:.5;cursor:grabbing}.bed.drop-target{outline:3px solid var(--green);outline-offset:2px;background:#e6f4ee}
.report-month{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px}.report-month input{font:inherit;border:1px solid #d8e2df;border-radius:8px;padding:10px;background:#fff;color:#153f42}.report-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.report-table{min-width:900px}.report-table th,.report-table td{text-align:center;white-space:nowrap}.report-table tbody th{font-weight:500}.report-table tr>:first-child{position:sticky;left:0;background:#fff;z-index:1;border-right:1px solid #e7eeeb}.report-table thead tr>:first-child{background:#f6f8f7}.report-table .report-occupied{font-weight:700;color:#087b79}.report-table .report-unavailable{text-align:left;color:#798786;background:#fafbf9}.report-foot{padding:18px 24px;color:#798786;font-size:12px}@media(max-width:650px){.report-stats{grid-template-columns:1fr}.report-month{flex-wrap:wrap}.report-table{min-width:900px}}

.report-table .report-other{white-space:normal;min-width:150px;line-height:1.8}
.other-department[hidden]{display:none}.rules-notice{margin:0 0 24px}.ward-rules-link{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:20px 24px;border:2px solid var(--green);border-radius:10px;background:var(--mint);font-size:20px;font-weight:700;text-decoration:none}.ward-rules-link:hover{background:#d4eadc}.ward-rules-link .icon{width:24px;height:24px}.ward-rules-link span{margin-left:auto;font-size:12px;font-weight:500}.access-note{margin:28px 0 0;color:var(--muted);font-size:12px;line-height:1.8}.rules-page{padding:36px 20px}.ward-rules-document{max-width:900px;margin:0 auto;background:white;border:1px solid var(--line);border-radius:14px;padding:40px 48px;font-size:16px;line-height:1.9;overflow-wrap:anywhere}.ward-rules-document h1{font-size:28px;line-height:1.5;margin:24px 0 32px}.ward-rules-document h2{font-size:22px;margin:32px 0 16px;color:var(--green);border-bottom:1px solid var(--line);padding-bottom:12px}.ward-rules-document h3{font-size:18px;margin:22px 0 12px}.ward-rules-document li{margin:0 0 16px;padding-left:6px}.ward-rules-document ol{padding-left:24px}.ward-rules-document p{margin:12px 0}.rules-back{font-size:14px}@media(max-width:650px){.ward-rules-link{font-size:18px;padding:16px}.ward-rules-link span{margin-left:0}.rules-page{padding:12px}.ward-rules-document{padding:22px 20px}.ward-rules-document h1{font-size:23px}.ward-rules-document h2{font-size:20px}}
