:root{--ink:#172226;--muted:#6d777a;--line:#e5e9e8;--paper:#fff;--canvas:#f4f6f5;--green:#145c4a;--green-2:#e5f2ed;--shadow:0 18px 55px rgba(23,34,38,.1);font-family:Inter,"Segoe UI",system-ui,sans-serif;color:var(--ink);background:var(--canvas)}
*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted)}
.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(360px,46%) 1fr;background:var(--paper)}
.login-panel{width:min(410px,calc(100% - 48px));margin:auto}.login-panel h1,.topbar h1{font-family:Georgia,serif;font-weight:500;font-size:3.25rem;letter-spacing:-.04em;margin:.15rem 0 .55rem}.login-panel form{margin-top:2rem;display:grid;gap:1rem}
.login-art{margin:18px;border-radius:22px;background:linear-gradient(145deg,rgba(8,48,40,.2),rgba(8,48,40,.7)),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='800' height='1000'%3E%3Cdefs%3E%3ClinearGradient id='g' x2='1' y2='1'%3E%3Cstop stop-color='%23abc1b3'/%3E%3Cstop offset='1' stop-color='%23264c43'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='800' height='1000' fill='url(%23g)'/%3E%3Cpath d='M0 690 Q220 570 410 700 T800 670 V1000 H0Z' fill='%23163631' opacity='.7'/%3E%3Ccircle cx='620' cy='210' r='130' fill='%23e9d8ad' opacity='.7'/%3E%3C/svg%3E") center/cover;display:flex;align-items:flex-end;padding:5vw;color:white;font:500 clamp(2.6rem,5vw,5rem)/1.05 Georgia,serif;letter-spacing:-.04em}
.brand-mark{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:var(--green);color:white;font:600 1.6rem Georgia,serif;margin-bottom:2rem}.brand-mark.small{width:38px;height:38px;border-radius:12px;margin:0;font-size:1.15rem}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:.7rem;font-weight:750;color:var(--green);margin:0}
label{display:grid;gap:.45rem;font-size:.78rem;font-weight:700;color:#475154}input,select,textarea{width:100%;border:1px solid #d9dfdd;border-radius:10px;background:white;color:var(--ink);padding:.76rem .85rem;outline:none;transition:.15s}input:focus,select:focus,textarea:focus{border-color:#4f8979;box-shadow:0 0 0 3px rgba(43,116,95,.12)}textarea{resize:vertical}
.primary,.secondary{border:0;border-radius:10px;padding:.75rem 1rem;font-weight:750}.primary{background:var(--green);color:#fff}.primary:hover{background:#0d4a3b}.secondary{background:#edf1ef;color:#34413e}.secondary:hover{background:#e2e8e5}.full{width:100%;padding:.9rem}.form-error{min-height:1.1rem;color:#ac3434;font-size:.8rem;margin:0}
.app-shell{min-height:100vh;display:grid;grid-template-columns:230px 1fr}.sidebar{position:sticky;top:0;height:100vh;padding:24px 18px;background:#102d27;color:#e8f1ee;display:flex;flex-direction:column}.side-brand{display:flex;align-items:center;gap:.75rem;font-weight:760}.sidebar nav{margin-top:3rem}.nav-item{width:100%;border:0;border-radius:10px;background:transparent;color:#b7c8c3;text-align:left;padding:.8rem 1rem}.nav-item.active{color:white;background:rgba(255,255,255,.1)}.nav-item span{margin-right:.7rem}.side-foot{margin-top:auto;display:grid;gap:.25rem;padding:.8rem}.side-foot small{color:#9fb4ae}.text-button{border:0;background:transparent;color:#d9e7e3;text-align:left;padding:.7rem 0 0;text-decoration:underline;text-underline-offset:3px}
main{min-width:0;padding:32px clamp(24px,4vw,58px) 60px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:2rem}.topbar h1{font-size:2.65rem}.top-actions{display:flex;align-items:center;gap:1rem;font-size:.78rem}
.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:14px;margin:28px 0}.summary-card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:18px}.summary-card small{color:var(--muted);font-weight:650}.summary-card strong{display:block;font:500 2rem Georgia,serif;margin-top:.35rem}.summary-card .dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:.4rem;background:var(--green)}
.workspace{background:var(--paper);border:1px solid var(--line);border-radius:17px;padding:18px;box-shadow:0 5px 28px rgba(23,34,38,.035)}.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:18px}.toolbar select{width:auto;min-width:145px}.search{position:relative;display:block;flex:1}.search span{position:absolute;left:13px;top:8px;color:var(--muted);font-size:1.2rem}.search input{padding-left:38px}.view-toggle{display:flex;background:#edf1ef;padding:3px;border-radius:9px}.view-toggle button{border:0;background:transparent;border-radius:7px;color:#67716f;width:35px;height:33px}.view-toggle button.active{background:white;color:var(--green);box-shadow:0 1px 5px rgba(0,0,0,.08)}
.room-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:13px}.room-card{border:1px solid var(--line);border-radius:14px;padding:16px;min-height:190px;display:flex;flex-direction:column;transition:.15s}.room-card:hover{transform:translateY(-2px);box-shadow:0 10px 22px rgba(23,34,38,.08)}.room-head{display:flex;justify-content:space-between;gap:1rem}.room-number{font:600 1.55rem Georgia,serif}.room-type{font-size:.72rem;color:var(--muted);margin-top:.2rem}.status{display:inline-flex;align-items:center;align-self:flex-start;border-radius:999px;padding:.32rem .55rem;font-size:.67rem;font-weight:800;white-space:nowrap}.status-vacant-clean{background:#dff3e8;color:#176044}.status-vacant-dirty{background:#fff0cf;color:#805a0e}.status-occupied-clean,.status-occupied-dirty{background:#e4e9fa;color:#394d93}.status-checked-out{background:#fce4de;color:#914735}.status-reserved{background:#eee3fa;color:#673a91}.status-out-of-order,.status-maintenance{background:#eceeed;color:#58605e}.guest{font-weight:750;margin:1.05rem 0 .16rem;min-height:1.2rem}.room-registration,.room-meta{color:var(--muted);font-size:.74rem}.room-registration{margin-bottom:.16rem}.room-foot{margin-top:auto;display:flex;align-items:end;justify-content:space-between;gap:1rem;padding-top:1rem}.rate small{display:block;color:var(--muted);font-size:.63rem}.rate strong{font-size:.88rem}.checkin-button{border:0;background:var(--green-2);color:var(--green);border-radius:9px;padding:.55rem .7rem;font-size:.73rem;font-weight:800}.reserved-note{font-size:.7rem;color:#734195;font-weight:750}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:.79rem}th{text-align:left;color:#77807e;font-size:.67rem;text-transform:uppercase;letter-spacing:.05em;padding:12px;border-bottom:1px solid var(--line)}td{padding:13px 12px;border-bottom:1px solid #edf0ef;white-space:nowrap}td .status{font-size:.62rem}.number{text-align:right}.loading,.empty{text-align:center;color:var(--muted);padding:4rem 1rem}#roomTableWrap table{min-width:2150px}#roomTableWrap th:first-child,#roomTableWrap td:first-child{position:sticky;left:0;background:#fff;z-index:2}#roomTableWrap th:first-child{z-index:3}#roomTableWrap td:first-child{box-shadow:1px 0 0 var(--line)}
dialog{width:min(760px,calc(100% - 28px));max-height:calc(100vh - 40px);border:0;border-radius:18px;padding:0;box-shadow:var(--shadow)}dialog::backdrop{background:rgba(9,25,21,.6);backdrop-filter:blur(3px)}dialog form{padding:26px}dialog header{display:flex;justify-content:space-between;align-items:start;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:20px}dialog h2{font:500 1.65rem Georgia,serif;margin:.25rem 0 0}.icon-button{border:0;background:#edf1ef;border-radius:50%;width:34px;height:34px;font-size:1.25rem}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.span-2{grid-column:span 2}.span-3{grid-column:span 3}dialog footer{display:flex;justify-content:flex-end;gap:10px;padding-top:18px;border-top:1px solid var(--line)}.toast{position:fixed;right:24px;bottom:24px;background:#102d27;color:#fff;border-radius:11px;padding:13px 17px;box-shadow:var(--shadow);z-index:20}
.checkin-member-search{background:#f5f8f7;border:1px solid var(--line);border-radius:12px;display:grid;gap:10px;margin-bottom:16px;padding:13px}.checkin-member-search>div:first-child{display:flex;justify-content:space-between;gap:12px}.checkin-member-search small{color:var(--muted)}.checkin-member-controls{display:flex;gap:8px}.checkin-member-controls input{flex:1}.checkin-member-results{display:grid;gap:6px;max-height:190px;overflow:auto}.checkin-member-result{background:#fff;border:1px solid var(--line);border-radius:9px;color:var(--ink);display:grid;gap:2px;padding:9px 11px;text-align:left}.checkin-member-result:hover{background:#eef6f2;border-color:#86aa9f}.checkin-member-result span,.checkin-member-result small{color:var(--muted)}.checkin-member-result.blacklisted{background:#fff2ef;border-color:#e4b6ac}.selected-member{align-items:center;background:#e7f3ee;border:1px solid #aad0c1;border-radius:9px;display:flex;gap:10px;justify-content:space-between;padding:9px 11px}.selected-member button{flex:0 0 auto}.money-input{text-align:right;font-variant-numeric:tabular-nums}
@media(max-width:900px){.app-shell{grid-template-columns:76px 1fr}.sidebar{padding:20px 10px}.side-brand>span:last-child,.nav-item:not(.active),.nav-item.active{font-size:0}.nav-item.active span{font-size:1.2rem;margin:0}.side-foot span,.side-foot small{display:none}.summary-grid{grid-template-columns:repeat(2,1fr)}.login-shell{grid-template-columns:1fr}.login-art{display:none}}
@media(max-width:650px){main{padding:22px 14px 40px}.app-shell{display:block}.sidebar{position:static;height:auto;flex-direction:row;align-items:center}.sidebar nav{margin:0 0 0 auto}.side-foot{margin:0}.text-button{padding:0}.topbar{align-items:end}.lastUpdated{display:none}.toolbar{flex-wrap:wrap}.search{flex-basis:100%}.toolbar select{flex:1}.form-grid{grid-template-columns:1fr}.span-2,.span-3{grid-column:span 1}.summary-grid{grid-template-columns:1fr 1fr}.room-grid{grid-template-columns:1fr}}
@media(max-width:650px){.checkin-member-search>div:first-child,.checkin-member-controls{align-items:stretch;flex-direction:column}}
.guest-bill-button{border:0;background:#e8ecf8;color:#3b508d;border-radius:9px;padding:.55rem .7rem;font-size:.73rem;font-weight:800}.bill-dialog{width:min(1120px,calc(100% - 28px))}.bill-shell{padding:26px}.bill-identity{margin:.35rem 0 0}.bill-toolbar{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:18px}.bill-toolbar>label{width:170px}.bill-totals{display:flex;gap:28px}.bill-totals div{text-align:right;min-width:100px}.bill-totals small{display:block;color:var(--muted);font-size:.67rem;text-transform:uppercase}.bill-totals strong{font:600 1.25rem Georgia,serif}.bill-table-wrap{max-height:330px;overflow:auto;border:1px solid var(--line);border-radius:12px}.bill-entry-form{padding:20px 0 0!important}.bill-entry-form footer{margin-top:18px}.bill-entry-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.bill-entry-form .form-error{margin-top:10px}
.guest-bill-actions{display:flex;gap:8px;flex-wrap:wrap;margin:-4px 0 14px}
.bill-operation-message{margin:-4px 0 12px;min-height:0}
@media(max-width:650px){.bill-entry-grid{grid-template-columns:1fr}.bill-toolbar{align-items:stretch;flex-direction:column}.bill-totals{width:100%;justify-content:space-between}.bill-totals div{min-width:0}.bill-toolbar>label{width:100%}}
.bill-entry-form h3{font:600 1.05rem Georgia,serif;margin:0 0 14px}.entry-actions{display:flex;gap:5px}.entry-action{border:0;border-radius:7px;padding:.4rem .52rem;font-size:.66rem;font-weight:750;background:#edf1ef;color:#34413e}.entry-action.danger{background:#f9e7e3;color:#963c2f}.entry-action.move{background:#e8ecf8;color:#3b508d}
.room-buttons{display:flex;gap:6px;align-items:center;justify-content:flex-end}.room-menu-button{border:1px solid #dce3e0;background:#fff;color:#46534f;border-radius:9px;padding:.52rem .68rem;font-size:.73rem;font-weight:800}.room-menu-button:hover{background:#f1f5f3}.compact-dialog{width:min(570px,calc(100% - 28px))}.dialog-body{padding:26px}.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.operation-button{border:1px solid var(--line);border-radius:12px;background:#fff;text-align:left;padding:15px;color:var(--ink)}.operation-button:hover{border-color:#86aa9f;background:#f4f9f7}.operation-button strong,.operation-button small{display:block}.operation-button small{color:var(--muted);font-size:.7rem;margin-top:.3rem;line-height:1.35}.two-columns{grid-template-columns:1fr 1fr}.check-label{display:flex;align-items:center;gap:.6rem;padding-top:1.8rem}.check-label input{width:auto}.form-note{font-size:.76rem;line-height:1.45}.chart-dialog{width:min(96vw,1450px)}.chart-controls{display:flex;align-items:end;gap:12px;padding:0 0 18px!important}.chart-controls label{width:190px}.chart-controls .primary{height:43px}.chart-legend{margin-left:auto;color:var(--muted);font-size:.75rem}.chart-wrap{overflow:auto;max-height:65vh;border:1px solid var(--line);border-radius:10px}.chart-wrap table{width:max-content;min-width:100%}.chart-wrap th,.chart-wrap td{padding:7px;min-width:31px;text-align:center;border:1px solid #edf0ef}.chart-wrap .chart-room{position:sticky;left:0;z-index:2;background:#fff;min-width:90px;text-align:left}.chart-room small{display:block;color:var(--muted);font-weight:500}.chart-cell{height:31px}.marker-s{background:#d9efe6;color:#145c4a;font-weight:800}.marker-x{background:#e4e9fa;color:#394d93;font-weight:800}.marker-r{background:#eee3fa;color:#673a91;font-weight:800}.search-results{display:grid;gap:7px;max-height:310px;overflow:auto;margin:8px 0 4px}.search-result{display:grid;gap:2px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:11px;text-align:left;color:var(--ink)}.search-result:hover{background:#f4f9f7;border-color:#86aa9f}.search-result span,.search-result small{color:var(--muted)}.search-result small{font-size:.68rem}
@media(max-width:650px){.action-grid{grid-template-columns:1fr}.two-columns{grid-template-columns:1fr}.two-columns .span-2{grid-column:span 1}.chart-controls{align-items:stretch;flex-direction:column}.chart-controls label{width:100%}.chart-legend{margin-left:0}.top-actions{gap:.4rem}.top-actions #lastUpdated{display:none}#guestSearchButton{flex:1}.room-buttons{flex-wrap:wrap}}
.sidebar nav{min-height:0;overflow:auto;padding-right:3px}.side-menu{margin-top:6px}.side-menu>summary{list-style:none;cursor:pointer;border-radius:10px;padding:.8rem 1rem;color:#b7c8c3;font-size:.84rem;font-weight:700}.side-menu>summary::-webkit-details-marker,.master-submenu>summary::-webkit-details-marker{display:none}.side-menu[open]>summary{background:rgba(255,255,255,.1);color:#fff}.side-menu-content{padding:.35rem 0 .7rem .55rem}.master-submenu{border-left:1px solid rgba(255,255,255,.13);padding-left:.4rem}.master-submenu>summary{cursor:pointer;color:#a9bdb7;padding:.45rem .5rem;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.master-submenu>div{display:grid}.master-submenu button,.master-account-actions button{border:0;background:transparent;color:#cbd9d5;text-align:left;padding:.43rem .55rem;border-radius:7px;font-size:.72rem}.master-submenu button:hover,.master-submenu button.active,.master-account-actions button:hover{background:rgba(255,255,255,.1);color:#fff}.master-account-actions{display:grid;border-top:1px solid rgba(255,255,255,.12);margin-top:.45rem;padding-top:.45rem}.master-toolbar{display:flex;align-items:center;gap:9px;margin-bottom:16px}.master-toolbar .search{min-width:220px}.master-notice{border:1px solid #eadba7;background:#fff8df;color:#715b1d;border-radius:10px;padding:12px 14px;font-size:.78rem;line-height:1.45}.master-table-wrap{max-height:calc(100vh - 260px);border:1px solid var(--line);border-radius:10px}.master-table-wrap th{position:sticky;top:0;background:#fff;z-index:1}.master-table-wrap td{max-width:260px;overflow:hidden;text-overflow:ellipsis}.master-table-wrap td:last-child{overflow:visible}.master-table-wrap .entry-actions{min-width:135px}#masterRecordDialog{width:min(920px,calc(100% - 28px))}
@media(max-width:900px){.side-menu>summary{font-size:0}.side-menu>summary:before{content:"M";font-size:1rem}.side-menu-content{position:fixed;left:70px;top:90px;width:245px;max-height:calc(100vh - 110px);overflow:auto;background:#102d27;padding:12px;border-radius:10px;z-index:30;box-shadow:var(--shadow)}}
.master-table-wrap td:last-child{overflow:hidden}.master-table-wrap .master-actions-column{position:sticky;left:0;background:#fff;overflow:visible;z-index:2}.master-table-wrap th.master-actions-column{z-index:3}
@media(max-width:650px){.sidebar nav{overflow:visible}.side-menu-content{left:70px;top:58px}.master-toolbar{flex-wrap:wrap}.master-toolbar .search{flex-basis:100%}.master-table-wrap{max-height:65vh}}
.access-list{display:grid;gap:7px;max-height:55vh;overflow:auto}.access-item{display:flex;justify-content:space-between;align-items:center;gap:1rem;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);padding:.7rem .8rem;text-align:left}.access-item strong{font-size:.68rem;color:#9a4540}.access-item.granted{background:#eff8f4;border-color:#b9dbce}.access-item.granted strong{color:var(--green)}
.workflow-lines-head{display:flex;align-items:center;justify-content:space-between;margin:22px 0 10px}.workflow-lines-head h3{font:600 1.05rem Georgia,serif;margin:0}.workflow-lines-wrap{max-height:330px;border:1px solid var(--line);border-radius:10px}.workflow-lines-wrap select{min-width:220px}.workflow-lines-wrap input{min-width:110px}.workflow-lines-wrap td{padding:7px}
.warning-text{color:#a34b3d;font-weight:700}.built-up-dialog{width:min(900px,calc(100% - 28px))}.built-up-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}.danger-button{background:#f9e7e3;color:#963c2f}.danger-button:hover{background:#f3d7d1}.built-up-components-wrap{max-height:55vh;border:1px solid var(--line);border-radius:10px}.built-up-components-wrap tr[data-built-up-component]{cursor:pointer}.built-up-components-wrap tr[data-built-up-component]:hover td{background:#f4f9f7}.built-up-components-wrap tr.selected td{background:#e5f2ed}.built-up-components-wrap input[type=radio]{width:auto}.built-up-dialog .empty{padding:2.5rem 1rem}
