:root{font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;color:#1d2939;background:#f3f6fa;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}h1,h2,h3,p{margin-top:0}h1{font-size:25px;letter-spacing:-.7px;margin:5px 0 0;font-weight:750;color:#172438}h2{font-size:17px;font-weight:730;letter-spacing:-.3px;margin:0}h3{font-size:14px;margin:17px 0 8px}p{line-height:1.5}.shell{display:flex;min-height:100vh}.sidebar{width:242px;flex-shrink:0;background:#102840;color:#fff;min-height:100vh;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:27px 16px}.brand{display:flex;align-items:center;gap:11px;margin:3px 7px 43px}.brandmark{background:#13b69c;border-radius:11px;width:40px;height:40px;display:grid;place-items:center;font-size:23px;font-weight:850}.brand strong{display:block;font-size:20px;letter-spacing:-.55px}.brand small{display:block;font-size:11px;color:#a6b8c9;margin-top:4px}.sectioncaption{color:#738da3;font-size:10px;letter-spacing:1.5px;font-weight:800;margin:0 12px 11px}.sidenav{display:grid;gap:4px}.navitem{border:0;background:none;color:#afc2d2;text-align:left;display:flex;align-items:center;gap:13px;font-size:13px;font-weight:590;border-radius:9px;padding:13px 14px;position:relative}.navitem:hover,.navitem.active{background:#254660;color:white}.navitem.active:before{content:'';position:absolute;left:-16px;top:10px;bottom:10px;width:3px;background:#13b69c;border-radius:5px}.notif{position:absolute;right:18px;width:7px;height:7px;border-radius:50%;background:#f2b563}.asidefoot{margin-top:auto;background:#1c3a53;border-radius:12px;padding:15px}.asidefoot p{font-size:11px;color:#b0c4d3;margin:10px 0 0}.work{flex:1;min-width:0}.topbar{height:99px;display:flex;align-items:center;justify-content:space-between;padding:18px 30px;background:#fff;border-bottom:1px solid #e8edf2}.crumb{color:#8591a3;font-size:12px}.topactions{display:flex;gap:18px;align-items:center}.connection{display:flex;align-items:center;gap:8px;font-size:12px;color:#78879b}.connection svg{width:16px}.previewrole{font-size:12px;color:#667085;display:flex;align-items:center;gap:7px}.previewrole select{border:1px solid #dce4eb;border-radius:8px;padding:8px 26px 8px 9px;background:#f9fbfd;color:#26364b;font-weight:680}.notice{margin:20px 30px 0;background:#fff7e5;color:#805b1a;padding:11px 15px;border-radius:8px;font-size:12px;border:1px solid #f3dfae}.notice strong{color:#8c5711}.toast{margin:14px 30px 0;background:#e9f9f2;color:#166a50;border:1px solid #bcebd6;padding:12px;border-radius:8px;display:flex;justify-content:space-between;font-size:13px}.x{border:0;background:none;font-size:18px;color:inherit}main{padding:23px 30px 90px;max-width:1500px;margin:0 auto}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}.stat,.panel{background:white;border:1px solid #e7edf3;border-radius:13px;box-shadow:0 2px 9px #101e3008}.stat{padding:20px 21px}.stat-top{display:flex;justify-content:space-between;color:#7b8797;font-size:12px;font-weight:590;margin-bottom:17px}.stat strong{font-size:27px;line-height:1.2;letter-spacing:-.7px;color:#142b43}.statdot{width:10px;height:10px;border-radius:4px;display:inline-block}.blue{background:#e9f3ff;color:#3174b6}.statdot.blue{background:#67acff}.green{background:#e8f7ee;color:#20744b}.statdot.green{background:#55bd7e}.orange{background:#fff3e4;color:#a76a20}.statdot.orange{background:#f5b75e}.purple{background:#f2ebff;color:#754ab7}.statdot.purple{background:#ae8cef}.twocol{display:grid;grid-template-columns:1fr 1fr;gap:18px}.twocol.aligned{align-items:start}.panel{padding:22px;margin-bottom:18px;min-width:0}.panel.compact{margin-top:0}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:18px}.panel-head p{font-size:12px;color:#8895a4;margin:5px 0 0}.panel-head .btn{white-space:nowrap}.tag{display:inline-block;border-radius:6px;padding:5px 8px;font-size:10px;font-weight:750;white-space:nowrap}.tag.neutral{background:#f0f3f6;color:#64748b}.tag.warning{background:#fff2d7;color:#a56b17}.tag.danger{background:#ffebeb;color:#b53742}.tag.success{background:#e9f8ef;color:#168451}.tag.blue{background:#e9f3ff;color:#3174b6}.listline{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid #f0f3f6}.listline:last-child{border:0}.roomicon{width:37px;height:37px;border-radius:10px;display:grid;place-items:center;font-size:13px;font-weight:750;background:#e3f1ef;color:#1a8175;flex-shrink:0}.roomicon.light{background:#eff3f8;color:#7789a2}.grow{flex:1;min-width:0}.listline b{display:block;font-size:13px}.listline small{display:block;font-size:11px;color:#8794a4;margin-top:4px}.sectiongap{padding-top:15px}.sectiongap h3{margin:0 0 7px}.muted{color:#8995a5;font-size:12px}.small{font-size:11px}.empty{padding:29px 14px;text-align:center;color:#8b97a7;font-size:13px;background:#fafbfd;border:1px dashed #e0e7ee;border-radius:10px}.empty p{margin:9px 0 0;font-size:12px}.btn{border:1px solid #dce5ee;background:white;color:#2f4c63;border-radius:8px;font-size:12px;padding:10px 15px;font-weight:700;white-space:nowrap}.btn:hover{border-color:#7d9cb5}.btn.primary{background:#147e76;color:white;border-color:#147e76}.btn.primary:hover{background:#0d6861}.btn.subtle{background:#f5f8fb;color:#537087;border:0}.btn.tiny{padding:6px 10px;font-size:11px}.btn.warn{color:#9d651b;border-color:#f6d7a2}.btn.danger{color:#bb4040;background:#fff2f2;border-color:#f3c2c2}.quickgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.quick{background:#f4f8fb;border:1px solid #e2ebf2;color:#36566d;border-radius:9px;font-weight:700;font-size:12px;padding:16px 10px}.quick:hover{background:#ebf4f9}.roomgrid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:11px}.roomtile{background:#fff;border:1px solid #e4eaf0;box-shadow:0 1px 3px #1d29390d;border-radius:10px;padding:13px;text-align:left;min-width:0}.roomtile:hover,.roomtile.selected{border-color:#129b88;background:#f6fffc}.roomtile-top{display:flex;justify-content:space-between;align-items:center;gap:4px}.roomtile-top strong{font-size:17px;color:#25374a}.roomtile-top .tag{font-size:9px;padding:4px}.roomtile-price{display:block;font-size:16px;font-weight:780;color:#1b3e56;margin-top:17px}.roomtile-price small{color:#8995a5;font-size:10px;font-weight:500}.roomtile-size{display:block;font-size:11px;color:#8493a3;margin-top:7px}.bigprice{font-size:26px;letter-spacing:-.7px;font-weight:780;margin-bottom:6px;color:#143c53}.minirow{display:flex;justify-content:space-between;font-size:11px;border-bottom:1px solid #edf1f5;padding:9px 0;gap:10px}.form{display:grid;gap:14px}.form label,.inlineform label{display:flex;flex-direction:column;gap:7px;color:#536478;font-size:12px;font-weight:680}.form input,.form select,.inlineform input,.filter input{border:1px solid #d9e2eb;background:#fff;border-radius:8px;padding:12px 11px;font-size:13px;width:100%;min-width:0;color:#20344a;outline-offset:2px}.form input:focus,.form select:focus,.filter input:focus{outline:2px solid #a2dbd2;border-color:#168c81}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.hint{background:#ecf7fa;border-radius:9px;font-size:12px;color:#41677b;padding:12px 13px;line-height:1.5}.hint.warning{background:#fff3e0;color:#965c1a}.formactions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.inlineform{display:flex;align-items:end;gap:8px}.inlineform label{flex:1}.rule{border-bottom:1px solid #eef2f6;padding:12px 0}.rule b{font-size:13px}.rule p{font-size:12px;color:#8391a1;margin:5px 0 0}.scrolltable{overflow:auto;border:1px solid #e7ecf1;border-radius:9px}table{width:100%;border-collapse:collapse;white-space:nowrap}th{background:#f7f9fc;text-align:left;font-size:11px;letter-spacing:.02em;color:#728298;font-weight:750;padding:13px 12px;border-bottom:1px solid #e6ebf0}td{font-size:12px;padding:12px;border-bottom:1px solid #f0f2f5;color:#33455a}tbody tr:hover{background:#fbfdfd}tr:last-child td{border-bottom:0}.actions{white-space:nowrap}.negative{color:#c14444;font-weight:800}.approval{border:1px solid #e4ebf3;padding:17px;border-radius:11px;margin:12px 0}.approvaltop{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px}.diff{margin:13px 0;background:#f8fafc;padding:8px 13px;border-radius:8px}.diffrow{display:grid;grid-template-columns:100px 1fr 25px 1fr;gap:8px;align-items:center;padding:9px 0;font-size:12px;border-bottom:1px solid #e7edf3}.diffrow:last-child{border-bottom:0}.old{color:#bf5a56;text-decoration:line-through}.new{color:#16826b;font-weight:740}.arrow{text-align:center;color:#92a0ae}.filter{display:flex;align-items:end;gap:8px}.filter label{font-size:11px;color:#6e7d8d;display:grid;gap:5px}.filter input{padding:9px}.reportnote{background:#eff8fb;border:1px solid #dcecf2;padding:12px;border-radius:8px;font-size:12px;color:#43657a;margin-bottom:13px}.reporttable th,.reporttable td{padding:11px 10px}.managerrow td{background:#e9f4ff}.auditdetail{max-width:400px;white-space:normal;word-break:break-word}.checkout{border:1px solid #f1ce9d}.mobiletab{display:none}.mobilebrand{display:none}.loading,.fatal{margin:18vh auto;max-width:600px;text-align:center;color:#3a5368;padding:30px}
@media(max-width:1100px){.roomgrid{grid-template-columns:repeat(4,minmax(0,1fr))}.quickgrid{grid-template-columns:repeat(2,1fr)}.topactions{gap:8px}.sidebar{width:205px}.topbar{padding:18px}.notice{margin:16px 18px 0}main{padding:18px 18px 90px}}
@media(max-width:800px){.sidebar{display:none}.mobiletab{display:flex;position:fixed;bottom:0;left:0;right:0;background:white;padding:8px 5px calc(8px + env(safe-area-inset-bottom));border-top:1px solid #e2eaf0;z-index:5;justify-content:space-around}.mobiletab button{background:none;border:0;display:flex;flex-direction:column;align-items:center;gap:4px;color:#8995a6;font-size:9px;min-width:58px;padding:6px 2px}.mobiletab button.active{color:#0c8475}.topbar{padding:12px 14px;height:auto;min-height:76px}.crumb{display:none}.mobilebrand{font-size:11px;color:#0d8c7b;font-weight:770;display:block}.topbar h1{font-size:20px}.connection{display:none}.notice{margin:12px 12px 0;font-size:11px}.toast{margin:10px 12px 0}main{padding:14px 12px 110px}.stats{grid-template-columns:repeat(2,1fr);gap:10px}.stat{padding:14px}.stat strong{font-size:24px}.twocol{grid-template-columns:1fr;gap:0}.panel{padding:16px;margin-bottom:12px}.roomgrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.roomtile{padding:10px}.roomtile-price{font-size:14px}.roomtile-top{align-items:flex-start}.roomtile-top strong{font-size:15px}.roomtile-top .tag{font-size:8px}.formgrid{grid-template-columns:1fr 1fr}.diffrow{grid-template-columns:70px 1fr 15px 1fr;font-size:10px}.filter{flex-direction:column;align-items:end}.filter input{max-width:170px}.panel-head{flex-wrap:wrap}}
@media(max-width:430px){.roomgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.formgrid{grid-template-columns:1fr}.previewrole{gap:3px}.previewrole select{padding:7px;font-size:11px}.quickgrid{grid-template-columns:1fr 1fr}}

.stats:has(> :nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}.simple-readings{grid-template-columns:1fr;max-width:720px;margin:auto}.meter-label{display:flex;align-items:center;gap:10px;font-size:15px}.meter-label svg{width:36px;height:36px;padding:6px;border-radius:10px}.electricity .meter-label svg{background:#fff1cc;color:#9c6500}.water .meter-label svg{background:#dff2ff;color:#1475b6}.meter-field input{font-size:22px;padding:16px}.simple-readings .btn.primary{padding:16px;font-size:16px;min-height:52px}

.save-confirmation{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;background:rgb(16 40 64 / 24%);pointer-events:none}.save-card{pointer-events:auto;width:min(340px,100%);padding:28px 24px;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;background:#fff;border:2px solid #c5edd9;border-radius:24px;box-shadow:0 16px 60px #10284030}.save-tick{width:112px;height:112px}.save-card strong{font-size:30px;color:#137b4d}.save-card span{font-size:16px;line-height:1.4;color:#234735}.save-card small{color:#64786c}.save-card .btn{min-height:44px;min-width:100px}

.due-room{display:flex;align-items:center;gap:12px;width:100%;min-height:76px;padding:14px 8px;text-align:left;border:0;border-bottom:1px solid #e7edf3;background:#fff;color:#20344a}.due-room:last-child{border-bottom:0}.due-room:hover{background:#f0faf6}.due-room:focus-visible{outline:3px solid #168c81;outline-offset:2px}.due-room .roomicon{width:48px;height:48px;font-size:23px}.due-room b{display:block;font-size:17px}.due-room small{display:block;margin-top:5px;color:#718096;font-size:12px}

.overdue-shortcut{text-align:left;font:inherit;position:relative}.overdue-shortcut:not(:disabled):hover{border-color:#e8ad50;background:#fffaf1}.overdue-shortcut:focus-visible{outline:3px solid #168c81;outline-offset:2px}.overdue-shortcut small{display:block;margin-top:10px;color:#956014;font-size:12px;font-weight:650}.overdue-shortcut:disabled{opacity:1;cursor:default}.overdue-shortcut:disabled small{visibility:hidden}

.occupancy-shortcut{text-align:left;font:inherit}.occupancy-shortcut:hover{border-color:#57b68a;background:#f3fcf7}.occupancy-shortcut small{display:block;margin-top:10px;font-size:12px;color:#20744b;font-weight:650}.occupancy-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.occupancy-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:76px;border:1px solid #dbe1e7;border-radius:10px}.occupancy-cell strong{font-size:23px}.occupancy-cell small{font-size:12px}.is-occupied{background:#ccefdc;border-color:#61bb89;color:#125c36}.is-vacant{background:#f0f2f4;color:#687582}.manager-cell{background:#e4eef9;color:#3e6489}.occupancy-cell:focus-visible,.occupancy-shortcut:focus-visible{outline:3px solid #168c81;outline-offset:2px}.occupancy-legend{display:flex;gap:22px;margin-bottom:18px;font-size:13px}.occupancy-legend span{display:flex;align-items:center;gap:7px}.occupancy-legend i{width:15px;height:15px;border-radius:4px;border:1px solid #ccd8cf}.occupied-key{background:#ccefdc}.vacant-key{background:#f0f2f4}.occupancy-note{margin:16px 0 0}@media(max-width:430px){.occupancy-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.occupancy-cell{min-height:66px}}
.overdue-shortcut.has-due{background:#fff0f0;border-color:#efb5b5}.overdue-shortcut.has-due:not(:disabled):hover{background:#ffe2e2;border-color:#df8585}:root{font-family:Inter,'Noto Sans Khmer','Khmer Sangam MN',Leelawadee,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}.language-choice select{max-width:160px;border:1px solid #dce4eb;border-radius:8px;padding:8px;font:inherit;font-size:12px}@media(max-width:430px){.topactions{flex-wrap:wrap;justify-content:flex-end}.language-choice select{max-width:135px}}

.approval-shortcut{text-align:left;font:inherit}.approval-shortcut:hover{background:#f7f1ff;border-color:#ae8cef}.approval-shortcut:focus-visible{outline:3px solid #754ab7;outline-offset:2px}.approval-shortcut small{display:block;margin-top:10px;font-size:12px;color:#754ab7;font-weight:650}

.login-wrap{max-width:460px;margin:8vh auto;padding:20px}.login-wrap h1{margin:18px 0 12px}.login-wrap #login-status{margin-top:18px;color:#9e3434}.login-wrap a{color:#147e76}
