:root{color:#1f2328;--bg:#f5f6f8;--surface:#fff;--border:#e2e4e8;--border-strong:#cdd2d8;--ink:#1f2328;--ink-2:#56606a;--ink-3:#8a939d;--accent:#1d6f8b;--accent-weak:#e8f2f6;--good:#2f7a4d;--info:#1d6f8b;--warning:#a86a12;--critical:#b3402f;--good-bg:#e9f4ed;--info-bg:#e8f2f6;--warning-bg:#fbf1e0;--critical-bg:#fbeceb;--control-h:calc(.82rem * 1.6 + .32rem * 2 + 2px);--control-h-sm:calc(.76rem * 1.6 + .15rem * 2 + 2px);font-family:system-ui,-apple-system,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif;line-height:1.6}*{box-sizing:border-box}body{background:var(--bg);-webkit-font-smoothing:antialiased;margin:0}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent)}.app{grid-template-columns:232px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:.25rem;height:100vh;padding:1rem .75rem;display:flex;position:sticky;top:0;overflow-y:auto}.brand{padding:.35rem .6rem 1rem}.brand-title{letter-spacing:.02em;font-size:1rem;font-weight:700}.brand-sub{color:var(--ink-3);margin-top:.15rem;font-size:.72rem}.nav-section{color:var(--ink-3);letter-spacing:.06em;padding:.9rem .6rem .3rem;font-size:.68rem}.nav-item{color:var(--ink-2);border-radius:7px;align-items:center;gap:.55rem;padding:.5rem .6rem;font-size:.88rem;text-decoration:none;display:flex}.nav-item:hover{background:#f2f4f6}.nav-item.active{background:var(--accent-weak);color:var(--accent);font-weight:600}.nav-badge{background:var(--critical);color:#fff;text-align:center;border-radius:999px;min-width:1.2rem;margin-left:auto;padding:0 .4rem;font-size:.68rem}.sidebar-footer{border-top:1px solid var(--border);color:var(--ink-3);margin-top:auto;padding-top:1rem;font-size:.72rem}.main{min-width:0;padding:1.25rem 1.5rem 3rem}.breadcrumb{margin-bottom:.9rem}.breadcrumb ol{color:var(--ink-3);flex-wrap:wrap;align-items:center;gap:.2rem .45rem;margin:0;padding:0;font-size:.78rem;list-style:none;display:flex}.breadcrumb li{align-items:center;gap:.45rem;display:inline-flex}.breadcrumb li+li:before{content:"›";color:var(--ink-3);opacity:.65}.breadcrumb a{color:var(--ink-2);text-decoration:none}.breadcrumb a:hover{color:var(--accent);text-decoration:underline}.breadcrumb [aria-current=page]{color:var(--ink);font-weight:600}.page-head{flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin-bottom:1rem;display:flex}.page-title{margin:0;font-size:1.25rem;font-weight:700}.page-sub{color:var(--ink-3);font-size:.8rem}.page-state{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:.82rem}.page-actions{flex-wrap:wrap;align-items:center;gap:.5rem;margin-left:auto;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:1rem;padding:1rem 1.1rem}.card-head{align-items:center;gap:.6rem;margin-bottom:.75rem;display:flex}.card-title{margin:0;font-size:.95rem;font-weight:700}.card-note{color:var(--ink-3);font-size:.75rem}.card-actions{align-items:center;gap:.4rem;margin-left:auto;display:flex}.card-subtitle{margin:1.1rem 0 .5rem;font-size:.85rem;font-weight:700}.tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:.25rem;margin-bottom:1rem;display:flex}.tab{color:var(--ink-2);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:8px 8px 0 0;margin-bottom:-1px;padding:.45rem .8rem;font-size:.85rem}.tab:hover{color:var(--ink)}.tab.active{background:var(--surface);border-color:var(--border);color:var(--ink);font-weight:700}.grid{gap:1rem;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (width<=1100px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3,.grid-2{grid-template-columns:1fr}.card:has(.alert-list){height:auto;min-height:0}}.stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:1rem;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.85rem 1rem}.stat-label{color:var(--ink-2);align-items:center;gap:.4rem;font-size:.75rem;display:flex}.stat-value{font-variant-numeric:tabular-nums;margin-top:.15rem;font-size:1.7rem;font-weight:700;line-height:1.2}.stat-unit{color:var(--ink-2);margin-left:.15rem;font-size:.9rem;font-weight:600}.stat-sub{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:.73rem}.table-wrap{overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:.85rem}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:.45rem .6rem}table.data th{color:var(--ink-2);background:#fafbfc;font-size:.75rem;font-weight:600;position:sticky;top:0}table.data tbody tr:hover{background:#f7f9fa}table.data td.num,table.data th.num{text-align:right;font-variant-numeric:tabular-nums}table.data td.wrap{white-space:normal;min-width:18rem}.row-link{cursor:pointer}.badge{white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;gap:.25rem;padding:.05rem .45rem;font-size:.72rem;font-weight:600;display:inline-flex}.badge-good{background:var(--good-bg);color:var(--good)}.badge-info{background:var(--info-bg);color:var(--info)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge-critical{background:var(--critical-bg);color:var(--critical)}.badge-muted{color:var(--ink-2);background:#f0f2f4}.badge:not(:first-child){margin-inline-start:.35rem}.inline>.badge{margin-inline-start:0}.tag{border:1px solid var(--border-strong);color:var(--ink-2);background:#fafbfc;border-radius:5px;margin:0 .2rem .2rem 0;padding:.05rem .4rem;font-size:.72rem;display:inline-block}.btn{min-height:var(--control-h);border:1px solid var(--border-strong);cursor:pointer;background:#fff;border-radius:7px;justify-content:center;align-items:center;padding:.32rem .8rem;font-size:.82rem;text-decoration:none;display:inline-flex}.btn:hover{background:#f2f4f6}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:#185a71}.btn-sm{min-height:var(--control-h-sm);padding:.15rem .5rem;font-size:.76rem}.btn:disabled{opacity:.5;cursor:default}input:not([type=checkbox],[type=radio]),select,textarea{border:1px solid var(--border-strong);height:var(--control-h);color:var(--ink);background:#fff;border-radius:7px;padding:.32rem .55rem;font-size:.82rem}textarea{height:auto}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' fill='none' stroke='%2356606a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:.58rem;padding-right:1.5rem}input:focus-visible,select:focus-visible,textarea:focus-visible,.btn:focus-visible,.nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:1px}label.field{color:var(--ink-2);flex-direction:column;gap:.2rem;font-size:.76rem;display:flex}.field-label{align-items:baseline;gap:.25rem;display:flex}.toolbar{flex-wrap:wrap;align-items:flex-end;gap:.5rem;margin-bottom:.85rem;display:flex}.floor{margin-bottom:1rem}.floor-label{color:var(--ink-3);margin-bottom:.35rem;font-size:.75rem}.room-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:.5rem;display:grid}.room{border:1px solid var(--border);text-align:left;cursor:pointer;background:#fff;border-radius:8px;flex-direction:column;gap:.15rem;min-height:74px;padding:.5rem .6rem;display:flex}.room:hover{border-color:var(--accent)}.room-no{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:.72rem}.room-name{font-size:.85rem;font-weight:600;line-height:1.3}.room-meta{color:var(--ink-3);margin-top:auto;font-size:.7rem}.room.vacant{background:#fbfcfd;border-style:dashed}.room.vacant .room-name{color:var(--ink-3);font-weight:500}.room.hospitalized{background:var(--warning-bg);border-color:#e8d3ab}.legend{color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:.9rem;font-size:.76rem;display:flex}.legend-item{align-items:center;gap:.3rem;display:inline-flex}.legend-swatch{border:1px solid var(--border-strong);border-radius:3px;width:11px;height:11px;display:inline-block}.chart-head{flex-wrap:wrap;align-items:center;gap:1.2rem;margin-bottom:.75rem;display:flex}.chart-name{font-size:1.3rem;font-weight:700;line-height:1.3}.chart-kana{color:var(--ink-3);font-size:.75rem}.kv{grid-template-columns:7.5rem 1fr;gap:.3rem .75rem;font-size:.85rem;display:grid}.kv dt{color:var(--ink-2);font-size:.78rem}.kv dd{margin:0}.card:has(.alert-list){flex-direction:column;display:flex}.alert-list{flex:1;min-height:0;overflow-y:auto}.card:has(.alert-list){height:0;min-height:calc(100% - 1rem)}.alert-more{padding-top:.5rem}.alert-row{border-bottom:1px solid var(--border);align-items:flex-start;gap:.6rem;padding:.5rem 0;font-size:.85rem;display:flex}.alert-row:last-child{border-bottom:none}.alert-main{min-width:0}.alert-message{font-weight:600}.alert-meta{color:var(--ink-3);font-size:.75rem}.alert-due{color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto;font-size:.75rem}.chart-svg{width:100%;height:auto;display:block;overflow:visible}.chart-legend{color:var(--ink-2);flex-wrap:wrap;gap:.85rem;margin-top:.4rem;font-size:.76rem;display:flex}.chart-tooltip{pointer-events:none;color:#fff;z-index:50;white-space:nowrap;background:#1f2328;border-radius:7px;padding:.4rem .6rem;font-size:.76rem;position:fixed;box-shadow:0 4px 14px #0003}.chart-tooltip-title{color:#c8ced4;margin-bottom:.15rem;font-size:.7rem}.chart-tooltip-row{font-variant-numeric:tabular-nums;align-items:center;gap:.35rem;display:flex}.muted{color:var(--ink-3)}.small{font-size:.78rem}.nowrap{white-space:nowrap}.mono{font-variant-numeric:tabular-nums}.empty{text-align:center;color:var(--ink-3);padding:1.5rem;font-size:.85rem}.notice{background:var(--info-bg);color:#17546b;border:1px solid #cfe2ea;border-radius:8px;margin-bottom:1rem;padding:.6rem .8rem;font-size:.8rem}.notice strong{font-weight:700}.notice-warning{background:var(--warning-bg);color:#7a4d0c;border-color:#e8d3ab}.notice-critical{background:var(--critical-bg);color:#8c2f21;border-color:#eecfcb}.caution{margin:.1rem 0 .25rem}.load-error,.form-error{color:var(--critical);margin:0;font-size:.85rem}.overdue{color:var(--critical);font-weight:700}.mock-flag{background:var(--warning-bg);color:#7a4d0c;border:1px solid #e8d3ab;border-radius:6px;padding:.1rem .45rem;font-size:.7rem;font-weight:600}.progress{background:#eceff1;border-radius:999px;height:6px;overflow:hidden}.progress>span{background:var(--accent);border-radius:999px;height:100%;display:block}.stack{flex-direction:column;gap:.75rem;display:flex}.inline{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.field.inline{flex-direction:row;align-items:center}.room{position:relative}.room.alert-critical{border-color:var(--critical);box-shadow:inset 0 0 0 1px var(--critical)}.room.alert-warning{border-color:#d8a44a;box-shadow:inset 0 0 0 1px #d8a44a}.room-alert{text-align:center;color:#fff;border-radius:999px;min-width:17px;height:17px;padding:0 4px;font-size:.63rem;font-weight:700;line-height:17px;position:absolute;top:5px;right:5px}.room-alert[data-severity=critical]{background:var(--critical)}.room-alert[data-severity=warning]{background:var(--warning)}.room-alert[data-severity=info]{background:var(--info)}.room-tooltip{z-index:60;pointer-events:none;border:1px solid var(--border-strong);background:#fff;border-radius:9px;min-width:15rem;max-width:22rem;padding:.6rem .75rem;font-size:.8rem;position:fixed;box-shadow:0 8px 24px #00000029}.room-tooltip-title{align-items:baseline;gap:.4rem;font-weight:700;display:flex}.room-tooltip-no{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:.72rem}.room-tooltip-meta{color:var(--ink-2);margin-top:.1rem;font-size:.76rem}.room-tooltip-alerts{border-top:1px solid var(--border);flex-direction:column;gap:.35rem;margin-top:.5rem;padding-top:.45rem;display:flex}.room-tooltip-alert{align-items:flex-start;gap:.4rem;line-height:1.4;display:flex}.room-tooltip-due{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:.72rem}.room-tooltip-hint{color:var(--ink-3);margin-top:.45rem;font-size:.72rem}.btn-danger{background:var(--critical);border-color:var(--critical);color:#fff}.btn-danger:hover{background:#97372a}table.data tbody tr.row-selected,table.data tbody tr.row-selected:hover,table.data tbody tr.editor-row,table.data tbody tr.editor-row:hover{background:var(--accent-weak)}table.data td.editor-cell{white-space:normal;padding:0 .6rem}.check-list{border:1px solid var(--border);background:#fafbfc;border-radius:7px;flex-direction:column;gap:.15rem;max-height:13rem;margin-top:.25rem;padding:.45rem .6rem;display:flex;overflow-y:auto}.check-list label{align-items:flex-start;gap:.35rem;line-height:1.35}textarea{resize:vertical;field-sizing:content;min-height:4.2em;max-height:40vh;font-family:inherit;overflow-y:auto}.topbar,.nav-backdrop{display:none}@media (width<=768px){.app{grid-template-rows:auto 1fr;grid-template-columns:1fr}.topbar{z-index:60;background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:.6rem;height:52px;padding:0 .9rem;display:flex;position:sticky;top:0}.topbar-toggle{border:1px solid var(--border-strong);cursor:pointer;background:#fff;border-radius:8px;justify-content:center;align-items:center;width:40px;height:40px;margin-left:-.35rem;padding:0;line-height:1;display:inline-flex}.topbar-toggle-wrap{flex:none;display:inline-flex;position:relative}.topbar-toggle-icon{display:block}.topbar-badge{background:var(--critical);color:#fff;text-align:center;pointer-events:none;border-radius:999px;min-width:1.1rem;padding:0 .3rem;font-size:.62rem;line-height:1.4;position:absolute;top:-4px;right:-6px}.topbar-title{letter-spacing:.01em;white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:700;overflow:hidden}.sidebar{z-index:50;will-change:transform;width:min(82vw,300px);height:100dvh;padding-top:calc(52px + .5rem);transition:transform .22s;position:fixed;top:0;left:0;transform:translate(-100%);box-shadow:0 10px 40px #0000002e}.app.nav-open .sidebar{transform:translate(0)}.nav-backdrop{z-index:45;opacity:0;pointer-events:none;background:#0f14196b;border:0;padding:0;transition:opacity .22s;display:block;position:fixed;inset:0}.app.nav-open .nav-backdrop{opacity:1;pointer-events:auto}.main{padding:1rem .9rem 2.5rem}.grid-2,.grid-3{grid-template-columns:1fr}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid>*,.stack>*,.card{min-width:0}.stat{padding:.7rem .8rem}.stat-value{font-size:1.4rem}.page-title{font-size:1.12rem}.page-actions{width:100%;margin-left:0}.card{padding:.85rem .9rem}.table-wrap{-webkit-overflow-scrolling:touch}.kv{grid-template-columns:1fr;gap:.15rem 0}.kv dt{margin-top:.4rem}.toolbar,.toolbar .field,.toolbar label.field,.toolbar input:not([type=checkbox],[type=radio]),.toolbar select{width:100%}.room-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:.4rem}.chart-name{font-size:1.15rem}.card-head{flex-wrap:wrap}.card-actions{flex-basis:100%;justify-content:flex-end;margin-left:0}.btn{justify-content:center;align-items:center;min-height:40px;display:inline-flex}.btn-sm{min-height:36px;padding-inline:.7rem}table.data input[type=number]{min-height:2.25rem}table.data th.col-alert,table.data td.col-alert{white-space:normal;min-width:6.5rem;max-width:8rem}table.data td.col-alert .badge{white-space:normal}}.signin{justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.signin-form{background:#fff;border:1px solid #d7dce2;border-radius:8px;flex-direction:column;gap:.75rem;width:min(22rem,100%);padding:1.5rem;display:flex}.signin-form h1{margin:0 0 .5rem;font-size:1.05rem}.signin-form label{flex-direction:column;gap:.25rem;font-size:.85rem;display:flex}.signin-form input{border:1px solid #c9d0d8;border-radius:4px;height:auto;padding:.5rem;font-size:.95rem}.signin-form button{color:#fff;cursor:pointer;background:#2f6f4f;border:0;border-radius:4px;margin-top:.5rem;padding:.55rem;font-size:.95rem}.signin-form button:disabled{opacity:.6;cursor:default}.signin-error{color:var(--critical);margin:0;font-size:.85rem}.sidebar-footer .signed-in{align-items:center;gap:.35rem;margin-bottom:.5rem;display:flex}.sidebar-footer .signed-in-email{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-weight:600;overflow:hidden}.icon-btn{width:1.6rem;height:1.6rem;color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn:hover{color:var(--ink)}.icon-btn:focus-visible{outline-offset:1px;outline:2px solid #2f6f4f}.room.inactive{opacity:.72;border-style:dotted}.room-inactive{color:#5a636d;background:#e6e9ee;border-radius:3px;margin-left:.3rem;padding:0 .25rem;font-size:.6rem;font-weight:600}.followup>summary{cursor:pointer;list-style:none}.followup>summary::-webkit-details-marker{display:none}.followup-body{z-index:5;border:1px solid var(--border);text-align:left;white-space:normal;background:#fff;border-radius:4px;width:18rem;margin-top:.25rem;padding:.5rem;position:absolute;box-shadow:0 2px 8px #0000001f}.one-line{text-overflow:ellipsis;vertical-align:bottom;max-width:16rem;display:inline-block;overflow:hidden}.pre-wrap{white-space:pre-wrap}.card>form{margin-top:1rem}.card>form>*+*,.card>.field+.field{margin-top:.75rem}.form-grid{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.75rem;margin-bottom:.75rem;display:grid}.form-grid>*{min-width:0}.form-grid>.notice{grid-column:1/-1}.req{background:var(--critical-bg);color:var(--critical);border-radius:3px;margin-left:.3rem;padding:0 .25rem;font-size:.65rem;font-weight:600}.checks{border:1px solid var(--border);border-radius:4px;flex-wrap:wrap;gap:.5rem 1rem;margin:.75rem 0 0;padding:.6rem .8rem;display:flex}.checks legend{color:var(--ink-3);padding:0 .35rem;font-size:.8rem}.checks-group{border:0;min-width:0;margin:.75rem 0 0;padding:0}.checks-group>legend{color:var(--ink-3);padding:0;font-size:.8rem}.chips{flex-wrap:wrap;gap:.25rem;margin-bottom:.5rem;display:flex}.chip{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:999px;padding:.1rem .4rem;font-size:.75rem;line-height:1.6}.chip.is-on{border-color:var(--accent);background:var(--accent);color:#fff}.followup>summary.btn{white-space:nowrap;align-items:center;gap:.3rem;display:inline-flex}
