:root{--forest:#213d59;--green:#426d91;--muted:#7d817f;--bg:#faf7f1;--line:#e8e2d9;--gold:#dbb86f;--ink:#293b4b}*{box-sizing:border-box}body{margin:0;color:var(--ink);font:15px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.5}button,a,input,select,textarea{outline-offset:4px}button{border:0;border-radius:9px;padding:11px 16px;background:var(--forest);color:white;font-weight:600}button.soft{background:#eee8df;color:var(--forest)}button.ghost{background:transparent;color:var(--muted)}button.danger{background:#f9e6df;color:#963f25}input,select,textarea{padding:10px 12px;border:1px solid #d6ded3;border-radius:8px;background:white;color:var(--ink);max-width:100%;width:100%}textarea{min-height:100px;resize:vertical}label{display:block;font-size:13px;font-weight:600;margin:12px 0 5px}h1,h2,h3,p{margin-top:0}h1{font-size:32px;line-height:1.2;letter-spacing:-1px;margin-bottom:8px}h2{font-size:20px;letter-spacing:-.4px}h3{font-size:16px;margin-bottom:8px}.muted{color:var(--muted)}.small{font-size:12px}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:11px;font-weight:700}.shell{display:grid;grid-template-columns:235px 1fr;min-height:100vh}.sidebar{background:var(--forest);color:white;padding:30px 20px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:235px}.brand{font:32px Georgia,serif;letter-spacing:-1px}.brand small{display:block;font:10px -apple-system,sans-serif;letter-spacing:3px;text-transform:uppercase;color:#d6c7a4;margin-top:4px}.brandmark{font-size:32px;color:var(--gold);margin-bottom:9px}.sidebar nav{display:grid;gap:5px;margin-top:35px}.sidebar nav button{text-align:left;background:transparent;color:#cbd6e1;font-weight:500;padding:12px}.sidebar nav button.active{background:#ffffff16;color:#fff}.navicon{display:inline-block;width:27px;opacity:.8}.sidebar footer{margin-top:auto;color:#cbd6e1;font-size:12px;padding-top:30px}.main{grid-column:2;padding:0 40px 40px;min-width:0}.topbar{height:86px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:12px}.topbar select{width:100px;font-size:12px}.topright,.row{display:flex;align-items:center;gap:12px}.avatar{width:37px;height:37px;border-radius:50%;background:#e8edf1;display:grid;place-items:center;color:var(--forest);font-weight:700}.notice{margin:18px 0;padding:10px 14px;background:#fff5de;border:1px solid #f0e1bc;border-radius:8px;color:#806027;font-size:12px}.heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:29px 0 24px}.heading p{margin:0}.heading input{width:160px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:25px}.stat{background:white;border:1px solid var(--line);border-radius:13px;padding:20px}.stat strong{display:block;font-size:32px;font-weight:600;margin:10px 0 3px}.stat .symbol{float:right;color:var(--green);background:#edf1f5;padding:5px 10px;border-radius:8px}.panel{background:white;border:1px solid var(--line);border-radius:14px;padding:23px;margin-bottom:22px}.panelhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.panelhead h2{margin:0}.twocol{display:grid;grid-template-columns:1.5fr 1fr;gap:22px}.rooms{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.room{background:#fffdfa;border:1px solid var(--line);border-radius:10px;padding:15px;text-align:left;color:var(--ink);font-weight:400;min-height:108px}.room strong{font-size:24px;display:block;margin-bottom:8px;font-weight:500}.room .roomtop{display:flex;justify-content:space-between}.dot{width:8px;height:8px;background:#b9c4ba;border-radius:50%;margin-top:12px}.dot.urgent{background:#ce754f}.dot.done{background:#44846b}.badge{display:inline-block;padding:4px 8px;border-radius:6px;background:#eff2ed;font-size:11px;font-weight:600;white-space:nowrap}.badge.urgent{background:#fcece3;color:#a5542d}.badge.valide{background:#e4f0e7;color:#34704e}.badge.en_cours{background:#e8edf9;color:#4e699b}.badge.termine{background:#f9f0d9;color:#896c26}.taskrow{padding:15px 0;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:center}.taskrow:last-child{border:0}.taskrow .tasktext{flex:1;min-width:0}.taskrow h3{margin:0 0 4px;font-size:14px}.taskrow .tile{width:42px;height:42px;border-radius:10px;background:#f3ede3;display:grid;place-items:center;color:var(--green);flex-shrink:0;font-size:12px;font-weight:bold}.taskrow button{font-size:12px;padding:8px 10px}.empty{padding:35px 15px;text-align:center;color:var(--muted)}.taskgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.taskcard{background:white;border:1px solid var(--line);border-radius:13px;padding:20px}.taskcard h3{margin:16px 0 8px}.taskcard .meta{border-top:1px solid var(--line);margin-top:18px;padding-top:12px;display:flex;justify-content:space-between;align-items:center}.filters{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}.filters button{font-size:13px}.banner{background:var(--forest);color:#fff;padding:28px;border-radius:14px;margin-bottom:22px}.banner p{color:#d5dfe8;margin:8px 0}.banner h2{font:26px Georgia,serif}.banner small{color:#d7e1ed}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.wide{grid-column:1/-1}.actions{display:flex;gap:8px;justify-content:flex-end;margin-top:20px;flex-wrap:wrap}dialog{border:0;border-radius:16px;padding:27px;width:620px;max-width:94vw;max-height:90vh;color:var(--ink);box-shadow:0 30px 100px #0003}dialog::backdrop{background:#1c304855;backdrop-filter:blur(3px)}dialog h2{margin-bottom:4px}.dialoghead{display:flex;justify-content:space-between;align-items:center}.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:15px 0}.photos img{width:100%;height:125px;object-fit:cover;border-radius:8px}.photos a{color:inherit}.checks label{display:flex;align-items:center;gap:10px;font-weight:400}.checks input{width:auto}.login{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.loginaside{background:var(--forest);color:white;padding:70px;display:flex;flex-direction:column;justify-content:space-between}.loginaside h1{font:55px/1.1 Georgia,serif;max-width:450px}.loginaside p{color:#d4e0eb;max-width:390px}.loginform{display:grid;place-items:center;padding:35px}.loginform form{max-width:380px;width:100%}.loginform button{width:100%;margin-top:25px}.err{color:#a8422b;font-size:13px;margin:10px 0}#toast{position:fixed;bottom:24px;right:24px;max-width:420px;background:var(--forest);color:white;padding:14px 20px;border-radius:10px;box-shadow:0 5px 30px #0002;display:none;z-index:10}.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}th{color:var(--muted);font-weight:500;padding:12px 8px;border-bottom:1px solid var(--line)}td{padding:14px 8px;border-bottom:1px solid var(--line)}.chatmsg{padding:15px;background:#f8f4ec;margin:12px 0;border-radius:10px}.chatmsg p{margin:6px 0 0;white-space:pre-wrap}.code{font-size:48px;letter-spacing:10px;font-variant-numeric:tabular-nums}.connection{display:flex;gap:18px;align-items:center}.connection .logo{font-size:23px;background:#eef3ea;padding:15px;border-radius:12px}.checkline{display:flex;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--line)}.offline{background:#fff0e9;color:#97492b}.errorbox{padding:12px;background:#fff0e9;border-radius:8px;color:#a8422b}.mobilebrand{display:none}
@media(max-width:1150px){.main{padding:0 22px 30px}.twocol{grid-template-columns:1fr}.taskgrid{grid-template-columns:repeat(2,1fr)}.sidebar{width:205px}.shell{grid-template-columns:205px 1fr}.stats{gap:10px}.stat{padding:15px}}
@media(max-width:720px){.shell{display:block}.sidebar{position:static;width:auto;padding:16px}.sidebar .brand{font-size:25px}.sidebar .brand small,.brandmark,.sidebar footer{display:none}.sidebar nav{margin-top:16px;display:flex;overflow:auto;gap:4px}.sidebar nav button{white-space:nowrap;padding:8px 10px;font-size:12px}.navicon{width:20px}.main{padding:0 16px 30px}.topbar{height:64px}.topbar .breadcrumb{font-size:12px}.topright .who{display:none}.topright{gap:7px}.topright button{padding:7px}.heading{align-items:flex-start;flex-wrap:wrap;margin:22px 0}h1{font-size:26px}.stats{grid-template-columns:repeat(2,1fr)}.stat strong{font-size:27px}.rooms{grid-template-columns:repeat(2,1fr);gap:9px}.room{padding:10px;min-height:90px}.room .badge{font-size:9px;padding:3px}.room strong{font-size:22px}.panel{padding:16px}.taskgrid{grid-template-columns:1fr}.formgrid{grid-template-columns:1fr}.login{display:block}.loginaside{padding:25px}.loginaside h1{font-size:33px;margin-top:25px}.loginaside p{display:none}.loginaside .eyebrow{display:none}.loginform{padding:25px}.heading .row{flex-wrap:wrap}.taskrow .badge{white-space:normal}.code{font-size:35px}.photos{grid-template-columns:repeat(2,1fr)}}

.fridgebox{background:#f0f3f7;padding:18px;border-radius:12px;margin:20px 0}.inventoryrows fieldset{border:1px solid var(--line);border-radius:10px;margin:14px 0;padding:14px}.inventoryrows legend{font-weight:600;font-size:14px}.productedit{border-bottom:1px solid var(--line);padding:15px 0;margin-bottom:20px}.productedit input[type=checkbox]{width:auto}

.checkphoto{padding:12px 0;border-bottom:1px solid var(--line)}.checkphoto button{font-size:12px;margin-right:10px}#livecamera{width:100%;max-height:50vh;object-fit:contain;background:#142a3d;border-radius:10px}

.brand img{display:block;width:150px;height:130px;object-fit:contain;margin:auto}.brand small{text-align:center;font-size:9px;letter-spacing:2px}.sidebar{background:linear-gradient(160deg,#244661,#172d43);padding-top:20px}.sidebar nav{margin-top:22px}.hotelhero{min-height:225px;margin-top:22px;border-radius:17px;background:linear-gradient(90deg,#132b45c9,transparent),url('/assets/hotel.jpg') center 45%/cover;display:flex;align-items:center;padding:30px;color:#fff}.hotelhero h2{font:36px Georgia,serif;margin:12px 0}.hotelhero p{color:#f5ead4;margin:0}.hotelhero .eyebrow{color:#ecd4a1}.room{padding:0 0 12px;overflow:hidden}.roomcover,.roomplaceholder{width:100%;height:95px;object-fit:cover}.roomplaceholder{display:grid;place-items:center;background:linear-gradient(120deg,#e9e0d1,#f4eee4);font-size:11px;color:#817866}.room .roomtop{padding:10px 12px 0}.room>.badge,.room>.small{margin-left:12px}.roomdetailphoto{width:100%;max-height:240px;object-fit:cover;border-radius:12px}.loginaside{background:linear-gradient(#172b4366,#172b43d9),url('/assets/hotel.jpg') center/cover}.loginaside .brand img{margin:0;width:180px}.loginaside .brand small{text-align:left}.banner{background:linear-gradient(110deg,#294c6a,#183249)}
@media(max-width:720px){.brand img{width:95px;height:73px;margin:0}.sidebar{padding:10px 16px}.sidebar nav{margin-top:7px}.hotelhero{min-height:175px;padding:22px}.hotelhero h2{font-size:27px}.roomcover,.roomplaceholder{height:100px}}

.reporttext{white-space:pre-wrap}.reporttext a{color:var(--forest)}

.cleaningowner{font-size:11px;color:var(--forest);padding:8px 12px 0;overflow-wrap:anywhere}.cleaningassignment{padding:14px 16px;background:#edf1f5;border-radius:10px;margin:16px 0}.cleaningassignment p{margin:5px 0}

.registrationpage{max-width:780px;margin:35px auto;padding:15px}.profilepic{object-fit:cover;flex-shrink:0}.chatavatar{float:left;margin:0 12px 8px 0}.registrationphoto{width:90px;height:110px;object-fit:cover;border-radius:10px}

.manualtext{white-space:pre-wrap;line-height:1.7}

.loginform>div{width:100%;max-width:380px}.entrylanguage{display:flex;align-items:center;gap:12px;margin:0 0 24px;flex-wrap:wrap}.entrylanguage label{margin:0;font-size:14px}.entrylanguage select{width:auto;min-width:130px}html[lang="th"] body,html[lang="th"] input,html[lang="th"] select,html[lang="th"] textarea,html[lang="th"] button{font-family:Tahoma,"Noto Sans Thai",sans-serif;line-height:1.6}html[lang="th"] h1,html[lang="th"] h2,html[lang="th"] h3{font-family:Tahoma,"Noto Sans Thai",sans-serif;line-height:1.45}
