/* A measured extension to V5.3. Original brand, typography and page structures are retained. */
:root{--motion:cubic-bezier(.22,1,.36,1)}
html,body{width:100%;max-width:100%;overflow-x:clip}body.modalOpen{overflow:hidden}.main,.content,#view,.formGrid>*{min-width:0}.btn,.heroAction,.plainLink,.iconbtn,.closeModal,.personalizeBtn{min-height:44px}.iconbtn,.closeModal{min-width:44px}.btn[aria-busy=true]{opacity:.85;cursor:wait;transform:none;pointer-events:none}.spinner{display:inline-block;width:18px;height:18px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:lbSpin .75s linear infinite;flex:none}.loadingView{min-height:50vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;color:var(--sage)}.loadingView .spinner{width:30px;height:30px}.prototype{align-items:flex-start}.prototype b{font-weight:800}.roleSwitch{flex:none}.roleSwitch button{min-height:36px}.roleSwitch button.selected{color:#465d48}.sidebar{overflow-y:auto}.sidebar .brand{flex:none}.sidebar-foot{flex-shrink:0}
#view.lbEntering{animation:lbView .26s var(--motion) both}#view .card,#view .kpi,#view .quick,#view .wifiCard,#view .ruleTile,#view .revenueTile,#view .occupancyKpi{animation:lbCard .4s var(--motion) both;animation-delay:var(--delay,0ms)}.greetingWave{animation:none!important}.successLayer{position:fixed;inset:0;z-index:150;background:#26382b44;backdrop-filter:blur(5px);display:grid;place-items:center;padding:20px;animation:lbFade .18s ease both}.successPanel{width:min(420px,100%);padding:34px 28px 26px;background:#fffefb;border:1px solid #e4eadf;border-radius:26px;text-align:center;box-shadow:0 24px 80px #243b3533;animation:lbSuccess .4s var(--motion) both}.successPanel h2{font-size:24px;letter-spacing:-.6px;margin:17px 0 9px;color:#435b46}.successPanel p{color:#6c786d;font-size:13px;line-height:1.7}.successPanel .btn{margin-top:22px;width:100%}.successMark{width:72px;height:72px;border-radius:50%;background:#edf3e9;color:#6d8966;display:grid;place-items:center;margin:auto;position:relative}.successMark svg{width:38px;height:38px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.successMark path{stroke-dasharray:42;stroke-dashoffset:42;animation:lbCheck .45s .12s ease forwards}.successMark:after{content:'';position:absolute;inset:-5px;border:1px solid #d7e4cf;border-radius:50%;animation:lbRing .6s ease both}.successDetail{display:inline-block;color:#82917d;background:#f2f5ee;font-size:11px;border-radius:7px;padding:6px 10px;margin-top:14px}.toast{display:flex;gap:12px;align-items:flex-start;background:#fffefb;color:#465d49;border:1px solid #dfe7d8;max-width:min(calc(100vw - 32px),420px);line-height:1.55;z-index:180}.toast.error{border-color:#e4c8ba;color:#8c4b38;background:#fffaf6}.toast .ico{margin-top:1px;flex:none}.formError{display:none;background:#fcf1eb;border:1px solid #efd5c5;color:#8e5140;padding:13px 15px;border-radius:12px;font-size:13px;line-height:1.6;margin-bottom:16px}.formError.visible{display:block;animation:lbFade .2s}.stepper{display:flex;justify-content:space-between;gap:8px;margin:5px 0 25px}.stepItem{display:flex;align-items:center;gap:8px;flex:1;font-size:11px;color:#7d877b;position:relative}.stepNumber{width:29px;height:29px;border:1px solid #dfe5d9;border-radius:50%;display:grid;place-items:center;background:#fbfcf8;flex:none;font-size:12px;font-weight:800}.stepItem.active{color:#4d694e;font-weight:800}.stepItem.active .stepNumber,.stepItem.done .stepNumber{background:#788e72;color:white;border-color:#788e72}.visitStep[hidden]{display:none!important}.visitStep{animation:lbView .25s var(--motion) both}.stepSummary{display:grid;gap:12px;border:1px solid var(--line);background:#fafbf7;border-radius:15px;padding:17px;margin-bottom:20px}.stepSummary div{display:flex;justify-content:space-between;gap:16px;font-size:12px;line-height:1.5}.stepSummary span{color:var(--muted)}.stepSummary strong{max-width:65%;text-align:right;overflow-wrap:anywhere}.privacyLock{display:flex;flex-direction:column;align-items:center;gap:10px;background:#f4f5ef;border:1px dashed #cfdbca;border-radius:16px;padding:27px 20px;text-align:center;color:#71826d;line-height:1.65}.privacyLock .ico{height:27px;width:27px}.privacyLock strong{color:#4d664e;font-size:14px}.privacyLock p{max-width:360px;font-size:12px}.modalDialog{max-height:calc(100dvh - 40px);overflow:auto;width:min(500px,100%);overscroll-behavior:contain}.modalLayer{z-index:140;padding:20px}.modalDialog h2{font-size:22px;line-height:1.3}.modalDialog .stack{gap:16px}.modalDialog .sub{margin:9px 0 20px}.modalActions .btn{flex:1}.modalTop{display:flex;justify-content:space-between;align-items:center}.modalTop .closeModal{margin-left:auto}.recordList{display:grid;gap:10px}.visitRecord{padding:16px;background:#fafbf7;border:1px solid #e5eadf;border-radius:14px;display:flex;align-items:flex-start;gap:12px}.visitRecord .iteminfo{overflow-wrap:anywhere}.visitRecord small{line-height:1.6}.visitRecord .chip{flex:none}.bookingRow{flex-wrap:wrap}.bookingRow .iteminfo{min-width:120px}.bookingActions{display:flex;gap:4px;margin-left:auto}.backupStatus{font-size:11px;color:var(--muted);line-height:1.6}.featureList{display:grid;gap:0}.featureLine{display:flex;gap:16px;padding:15px 0;border-bottom:1px solid var(--line);align-items:center}.featureLine:last-child{border:0}.featureLine strong{font-size:13px}.featureLine small{font-size:12px;line-height:1.5;color:var(--muted);display:block;margin-top:5px}.featureLine .chip{margin-left:auto}.chip.pending{background:#f5ede1;color:#886d47}.logEntry{border-left:2px solid #dfe8d8;margin:0 0 15px 5px;padding-left:16px}.logEntry strong{font-size:12px}.logEntry p{font-size:11px;line-height:1.5;color:var(--muted);margin-top:5px}.noteBody{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65;font-size:13px;margin-top:6px}.wifiPassword{font-family:monospace;letter-spacing:1px;overflow-wrap:anywhere}.paymentLedger{margin-top:12px;display:grid;gap:8px;font-size:12px;color:#66745f}.paymentLedger>div{border:1px solid var(--line);border-radius:11px;padding:12px}.calendarHeader{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}.calendarHeader h3{text-transform:capitalize;font-size:14px}.calendarGrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.calendarGrid>span{text-align:center;font-size:10px;color:var(--muted);padding:6px}.calDay{border:0;background:#f7f8f2;border-radius:8px;min-height:38px;color:#56694f;position:relative;font-size:12px}.calDay:disabled{opacity:.4}.calDay.busy:after{content:'';width:4px;height:4px;background:#71896d;border-radius:50%;position:absolute;bottom:3px;left:calc(50% - 2px)}.calDay.selected{background:#778d71;color:#fff}.calDay.selected:after{background:#fff}.previewAccount{display:flex;gap:8px;align-items:center;margin-bottom:17px;padding:11px 14px;border:1px solid #dfE5d7;border-radius:12px;background:#f7f8f2;font-size:12px;flex-wrap:wrap}.previewAccount select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:white;margin-left:auto;min-height:40px;color:var(--ink)}
@keyframes lbSpin{to{transform:rotate(360deg)}}@keyframes lbView{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}@keyframes lbCard{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes lbFade{from{opacity:0}to{opacity:1}}@keyframes lbSuccess{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}@keyframes lbCheck{to{stroke-dashoffset:0}}@keyframes lbRing{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}
@media(max-width:1100px){.layout{grid-template-columns:minmax(0,1fr)}.homeBand{grid-template-columns:minmax(0,1fr)}.topClock{display:none}}
@media(max-width:800px){.app{display:block;padding-bottom:0}.content{padding:23px 17px calc(102px + env(safe-area-inset-bottom))}.topbar{height:70px;padding:0 16px;gap:8px}.roleSwitch button{padding:8px;font-size:10px}.breadcrumb{font-size:12px;gap:5px}.topActions{gap:0}.mobileNav button{min-height:49px;min-width:0;flex:1;font-size:9px;gap:5px;padding:3px 1px;justify-content:center}.mobileNav{padding:6px 5px calc(7px + env(safe-area-inset-bottom));z-index:90}.toast{bottom:calc(89px + env(safe-area-inset-bottom));left:16px;right:16px;width:auto;max-width:initial}.card{padding:20px}.field input,.field select,.field textarea{font-size:16px;min-width:0;max-width:100%}.btn{min-height:46px}.btn.small{min-height:44px}.modalLayer{padding:12px}.modalDialog{max-height:calc(100dvh - 24px);padding:23px}.dataTable{min-width:0}.tableWrap{overflow:visible}.dataTable thead{display:none}.dataTable tbody,.dataTable tr,.dataTable td{display:block;width:100%}.dataTable tr{border:1px solid var(--line);border-radius:12px;margin-bottom:12px;padding:12px}.dataTable td{border:0;padding:5px 0;font-size:12px;overflow-wrap:anywhere}.dataTable td:before{content:attr(data-label);display:inline-block;min-width:85px;color:var(--muted);font-size:10px}.featureLine{align-items:flex-start}.featureLine .chip{white-space:normal;text-align:center;max-width:110px}.formActions .btn{flex:1}.welcomeHead h1{font-size:29px}.welcomeRight{max-width:100%}.footer{gap:14px;flex-wrap:wrap;padding-bottom:0}.stepper{gap:4px}.stepItem{gap:5px;font-size:10px}.stepNumber{width:25px;height:25px}.heroAction{min-height:44px}.visitRecord{flex-wrap:wrap}.visitRecord .chip{margin-left:54px}.successPanel{padding:29px 23px}.calDay{min-height:40px}}
@media(max-width:390px){.topbar{padding:0 12px}.content{padding-left:14px;padding-right:14px}.breadcrumb .ico{display:none}.roleSwitch button{font-size:10px;padding:7px}.card{padding:17px}.occupancyKpis{gap:6px}.occupancyKpi{padding:10px}.occupancyKpi small{font-size:10px}.occupancyKpi span:last-child{font-size:9px}.headingrow{gap:10px;align-items:flex-start}.headingrow .tag{white-space:normal;font-size:9px}.paymentRight{width:100%;align-items:flex-start}.quickgrid{gap:10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.successMark path{stroke-dashoffset:0}.spinner{border-style:dotted}}
.roleSwitch[hidden]{display:none}.roleSwitch button{min-height:44px}.switchbox input[type=checkbox]{width:20px;height:20px;min-height:20px;flex:0 0 20px;padding:0;margin:3px 0 0;accent-color:#71876d}.switchbox span{min-width:0;flex:1}

/* V5.3 refinement: consistent rows and safe wrapping without clipping text. */
.headingrow{gap:12px;flex-wrap:wrap}.headingrow h3{flex:1 1 160px;min-width:0;line-height:1.4}.headingrow>.tag,.headingrow>.chip{max-width:100%;white-space:normal;line-height:1.5;text-align:center}.headingrow>.btn,.headingrow>.plainLink{flex-shrink:0;max-width:100%}
.btn,.heroAction,.plainLink{white-space:normal;text-align:center;line-height:1.45;max-width:100%;overflow-wrap:anywhere}.btn>svg,.heroAction>svg{flex-shrink:0}
.card,.regCell,.iteminfo,.paymentText,.featureLine>div,.noticebox>div,.welcomeHead>div,.miniPanel>div{min-width:0;overflow-wrap:anywhere}.iteminfo strong,.iteminfo small,.paymentText strong,.paymentText small{line-height:1.55}.chip,.tag,.payBadge{display:inline-flex;align-items:center;justify-content:center;line-height:1.4}
.regGrid{align-items:stretch}.deptButton{min-width:0;text-align:left;display:flex;flex-direction:column;align-items:flex-start;gap:9px}.deptButton h4{margin:0;line-height:1.5}.deptButton .chip{max-width:100%;white-space:normal}.deptButton small{display:block;margin:0;line-height:1.55;max-width:100%}
.kpi{display:grid;grid-template-rows:minmax(2.8em,auto) auto 1fr;align-content:start}.kpi>small:first-child{line-height:1.4;align-self:start}.kpi>strong{margin:0 0 6px;line-height:1.3}.kpi>small:last-child{line-height:1.6}.occupancyKpi{min-width:0}.occupancyKpi small{min-height:2.8em;line-height:1.4;display:flex;align-items:center}.occupancyKpi>span:last-child{line-height:1.5}
.featureLine>div{flex:1}.featureLine>.chip{flex-shrink:0}.stepItem{min-width:0}.stepItem>span:last-child{overflow-wrap:anywhere;line-height:1.4}.paymentLedger>div{overflow-wrap:anywhere}.bookingActions{flex-wrap:wrap;max-width:100%}.calendarHeader h3{min-width:0}.calendarHeader .iconbtn{flex-shrink:0}
@media(max-width:800px){.breadcrumb{min-width:0;overflow-wrap:anywhere;line-height:1.4}.topActions{flex-shrink:0}.mobileNav button{line-height:1.3;justify-content:flex-start;padding-top:5px}.mobileNav button .ico{flex-shrink:0}.formActions .btn{flex:1 1 125px}.modalActions{flex-wrap:wrap}.modalActions .btn{flex:1 1 125px}.heroActions{width:100%}.heroAction{justify-content:center;flex:1 1 120px}.paymentRight{flex-wrap:wrap;gap:10px}.featureLine{gap:10px}}
@media(max-width:520px){.headingrow{align-items:center}.headingrow h3{flex-basis:145px}.headingrow>.tag{flex-shrink:1}.regGrid{gap:10px}.deptButton{padding:14px 12px}.paymentRight{justify-content:flex-start;margin-left:0}.stepper{display:grid;grid-template-columns:1fr 1fr 1.35fr}.stepItem{flex-direction:column;align-items:center;text-align:center;gap:6px}.occupancyKpi{align-items:center;text-align:center}.kpis:not(.paymentKpis) .kpi{text-align:center}.occupancyKpi small{justify-content:center}}
/* Public entrance; the server authorizes every data and document operation. */
.loginState .sidebar,.loginState .topbar,.loginState .mobileNav,.loginState .prototype{display:none!important}.loginState .app{display:block}.loginState .content{padding:30px 18px;min-height:100dvh}.loginState .footer{max-width:450px;margin:28px auto}.loginCard{max-width:450px;margin:4vh auto 0;padding:32px}.loginLogo{display:block;width:180px;height:auto;margin:0 auto 30px}.loginCard h1{font-size:26px;line-height:1.3;letter-spacing:-.8px}.loginCard .sub{margin-bottom:25px}.loginHelp{margin-top:22px}.ownerSetup{margin-top:24px;border-top:1px solid var(--line);padding-top:18px;font-size:11px;color:var(--muted)}.ownerSetup summary{cursor:pointer;min-height:30px}.ownerSetup p{margin:12px 0}.ownerSetup .btn{font-size:12px}.accountRow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:16px;border:1px solid var(--line);border-radius:14px;min-width:0}.accountRow .iteminfo{flex:1 1 150px}.accountActions{display:flex;flex-wrap:wrap;gap:8px;width:100%}.accountActions .btn{flex:1 1 140px}.field input[type=file]{padding:12px;line-height:1.5;font-size:13px}.field input[type=file]::file-selector-button{border:0;padding:10px;border-radius:8px;background:var(--pale);color:var(--ink);margin-right:9px;max-width:100%}
@media(max-width:390px){.loginCard{padding:24px 20px;margin-top:12px}.loginCard h1{font-size:24px}}
