:root{--ink:#1c3530;--muted:#7b8580;--green:#23634e;--pale:#eaf3ed;--line:#e7eae5;--bg:#f5f6f2;--orange:#95622c;--amber:#faf0df;--red:#af5247;--sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}*{box-sizing:border-box}body{margin:0;font:14px/1.6 var(--sans);background:var(--bg);color:var(--ink)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}a{color:var(--green)}button:focus-visible,a:focus-visible{outline:3px solid #aac7b3;outline-offset:3px}input:focus,select:focus,textarea:focus{outline:2px solid #c5ddcf;border-color:#7ba28c}.sidebar{position:fixed;inset:0 auto 0 0;width:220px;background:#183b31;color:#dce8de;display:flex;flex-direction:column;padding:36px 22px 22px}.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;font-size:22px;font-weight:700;letter-spacing:2px}.brand small{display:block;font-size:10px;font-weight:400;letter-spacing:2px;color:#a4b9ac;margin-top:2px}.brand-icon{width:39px;height:42px;border:1px solid #90ab93;border-radius:12px 3px 12px 3px;text-align:center;line-height:35px;color:#d4e5ab;font:italic 38px/39px Georgia,serif}.nav-caption{font-size:10px;letter-spacing:2px;color:#86a293;margin:54px 14px 14px}.nav{width:100%;border:0;background:none;color:#afc2b5;text-align:left;display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:7px;margin:5px 0;font-size:13px}.nav>span:first-child{font-size:19px;width:21px;text-align:center}.nav.active{background:#305346;color:#f0f5ea}.nav:hover{background:#2b4d40}.nav-arrow{font-size:16px;margin-left:auto;color:#cfdda1}.sidebar-note{margin:auto 13px 38px}.tiny-label{font-size:10px;letter-spacing:2px;color:#9ab39f}.sidebar-note p{font-size:16px;line-height:1.9;color:#e2eadd;font-weight:300}.rule-line{display:block;width:26px;height:1px;background:#729078;margin:20px 0}.sidebar-note small{font-size:10px;color:#9ab19f;line-height:2}.local{display:flex;gap:10px;border-top:1px solid #385649;padding:20px 4px 0;font-size:11px;align-items:center}.local i{height:7px;width:7px;border-radius:50%;background:#b6d59b}.local small{display:block;color:#7fa28d;font-size:9px}.version{margin-left:auto;font-size:10px;color:#8fa893}.workspace{margin-left:220px;min-height:100vh;display:flex;flex-direction:column}.topbar{height:77px;background:#fafbf8;border-bottom:1px solid var(--line);padding:0 38px;display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:12px}.breadcrumb{color:#96a099}.slash{margin:0 14px;color:#b9c2b8}.top-right{display:flex;gap:18px;align-items:center}#sync-label{color:#829185;font-size:11px}.avatar{height:29px;width:29px;background:#e7ebdf;border-radius:50%;text-align:center;line-height:29px;font-size:11px}.btn{background:#fff;border:1px solid #dce2d9;border-radius:6px;padding:9px 15px;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:5px;text-decoration:none;font-weight:500;white-space:nowrap}.btn:hover{background:#f0f4ed;border-color:#bccbbe}.btn.primary{background:var(--green);border-color:var(--green);color:#fff}.btn.primary:hover{background:#1d533f}.btn.small{font-size:12px;padding:6px 12px}.btn.ghost{background:transparent}.btn.link{border:0;background:none;padding:4px;color:var(--green)}.btn.danger{color:var(--red)}main{padding:32px 38px 44px;max-width:1650px;width:100%;margin:auto;flex:1}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.eyebrow{font-size:10px;letter-spacing:2px;color:#879789;margin-bottom:7px;text-transform:uppercase}.page-heading h1{font-size:29px;letter-spacing:1px;font-weight:600;margin:0 0 5px}.page-heading p{margin:0;font-size:12px;color:var(--muted)}.heading-actions{display:flex;gap:9px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:25px}.stat{background:#fff;border:1px solid var(--line);border-radius:9px;padding:17px 21px;position:relative}.stat.emphasis{background:#e9f0e6;border-color:#dfe8d9}.stat-title{font-size:11px;color:#7d8a7b;display:flex;justify-content:space-between;align-items:center}.stat-symbol{font-size:18px;color:#95a696}.stat-value{font-size:32px;line-height:1.2;margin:10px 0 5px;font-weight:500;letter-spacing:-1px}.stat-value small{font-size:11px;margin-left:8px;letter-spacing:0;color:#8c9489}.stat-detail{font-size:10px;color:#869180}.panel{background:#fff;border:1px solid var(--line);border-radius:10px;margin-bottom:20px;overflow:hidden}.panel-header{padding:17px 21px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px}.panel-header h2{font-size:14px;font-weight:600;margin:0}.panel-header small{font-size:11px;color:var(--muted);font-weight:400;margin-left:8px}.panel-content{padding:23px}.segmented{display:inline-flex;background:#f3f5f0;border-radius:5px;padding:3px;gap:3px}.segmented button{background:none;border:0;color:#82907f;border-radius:4px;padding:5px 13px;font-size:11px}.segmented button.selected{background:#fff;box-shadow:0 1px 3px #0000000b;color:var(--green)}.calendar-head,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-head{color:#9aa397;font-size:10px;text-align:center;padding:12px 15px 7px}.calendar-grid{padding:0 15px 14px;gap:5px}.day{min-height:55px;background:#f7f8f4;border:1px solid transparent;border-radius:5px;text-align:left;position:relative;padding:7px 11px;color:#4f6656}.day:hover{background:#eaf0e5}.day.current{border-color:#abc3a4}.day.selected{background:#245d48;color:#fff}.day.outside{background:transparent;cursor:default;opacity:.3}.day-num{font-size:12px;font-weight:500}.day-count{font-size:9px;color:#8b9887;display:flex;align-items:center;gap:4px;float:right;line-height:20px}.day-count i{width:4px;height:4px;background:#809e68;border-radius:50%}.day.selected .day-count{color:#d1dfc4}.day-month{font-size:8px;margin-left:3px;color:#809778}.day.selected .day-month{color:#d1dfc4}.day-bar{display:block;height:2px;margin-top:7px;background:#dce7d5;width:20px;border-radius:2px}.day.selected .day-bar{background:#b9d590}.calendar-foot{border-top:1px solid var(--line);padding:9px 21px;display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#8d9789}.legend-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#859f72;margin:0 5px 1px}.filters{display:flex;gap:9px;align-items:center;flex-wrap:wrap;padding:15px 21px;border-bottom:1px solid var(--line)}input,select,textarea{border:1px solid #dfe5dc;background:#fff;padding:9px 11px;border-radius:5px;color:var(--ink);max-width:100%}.filters input,.filters select{padding:7px 10px;font-size:11px}.filters input{width:200px}.filters .filter-count{margin-left:auto;color:#929c8d;font-size:10px}.task-table{width:100%;border-collapse:collapse}.task-table th{text-align:left;font-size:10px;color:#8c9787;font-weight:400;padding:10px 21px;background:#fcfcfa;white-space:nowrap}.task-table td{padding:14px 21px;border-top:1px solid #eff1ec;font-size:12px}.date-row td{background:#f5f7f1;color:#6c8065;font-size:10px;padding:9px 21px;border-top:1px solid var(--line);letter-spacing:.3px}.date-row span{margin-left:9px;color:#9aa48f;font-size:9px}.property-cell{display:flex;gap:12px;align-items:center}.property-icon{height:33px;width:33px;background:#f0f3ec;border:1px solid #e7ece2;border-radius:7px;display:grid;place-items:center;color:#93a188;font-size:17px;flex-shrink:0}.property-title{font-weight:600;margin-right:8px;font-size:12px}.subtle{font-size:10px;color:#99a191;display:block;margin-top:2px}.pill{display:inline-flex;align-items:center;font-size:9px;border-radius:4px;padding:2px 6px;background:var(--pale);color:#52785c;white-space:nowrap}.pill.free{background:#f4f0e4;color:#9b8a55}.pill.gray{background:#f0f1ed;color:#8b9282}.pill.warn{background:var(--amber);color:var(--orange)}.status-btn{border:1px solid #e2dfd0;background:#fbf8ee;color:#8d8058;padding:5px 10px;border-radius:5px;font-size:10px;min-width:77px}.status-btn.done{background:#edf4e9;border-color:#dce9d6;color:#52784a}.assignee{min-width:91px;border:0;padding:5px 0;font-size:11px;background:transparent;color:#64715e}.row-action{border:0;background:none;font-size:18px;color:#8a9880;cursor:pointer;padding:0 6px}.warning-text{font-size:10px;color:var(--orange);margin-top:5px;max-width:340px}.empty{text-align:center;padding:44px 24px 50px}.empty-symbol{height:47px;width:47px;display:grid;place-items:center;background:#eff3e8;border-radius:50%;margin:0 auto 13px;color:#7e986b;font-size:21px}.empty h3{font-weight:500;font-size:16px;margin:8px}.empty p{font-size:12px;color:var(--muted);margin:5px 0 20px}.notice{background:#eef3e6;border:1px solid #e0e9d3;border-radius:8px;padding:15px 19px;margin-bottom:20px;font-size:12px;display:flex;align-items:center;justify-content:space-between;gap:20px}.notice strong{font-weight:600}.notice small{display:block;color:#88917d;font-size:11px;margin-top:3px}.notice.warn{background:#fcf5e8;border-color:#eee1c8;color:#8d6734}.notice.demo{background:#e8eff7;border-color:#d8e2ed;color:#536e8c}.setup-steps{display:flex;gap:9px;flex-wrap:wrap}.setup-steps .btn{font-size:11px;background:#fff9}.property-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.property-card{border:1px solid var(--line);border-radius:9px;background:#fff;padding:22px}.card-top{display:flex;justify-content:space-between;gap:10px}.card-top h3{font-size:16px;margin:0 0 5px}.property-card p{font-size:11px;color:#88917e;min-height:18px;margin:0 0 18px}.property-meta{border-top:1px solid var(--line);padding-top:14px;font-size:11px;color:#7d8974;display:flex;gap:13px}.connections{display:flex;gap:6px;margin-bottom:13px;flex-wrap:wrap}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.settings-grid .panel{height:fit-content}.settings-grid .full{grid-column:1/-1}.cleaner-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.cleaner-row:last-child{border:0}.cleaner-row .btn{margin-left:auto}.cleaner-badge{width:32px;height:32px;border-radius:50%;background:#edf1e5;color:#6b855b;text-align:center;line-height:32px;font-size:11px}.muted{color:var(--muted);font-size:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.field{display:flex;flex-direction:column;gap:7px;font-size:12px}.field.full{grid-column:1/-1}.field input,.field select,.field textarea{width:100%;font-size:12px}.field small{font-size:10px;color:#899381;line-height:1.7}.field textarea{resize:vertical;min-height:66px}.checkline{font-size:12px;display:flex;align-items:center;gap:8px}.checkline input{accent-color:var(--green)}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:24px}.inline-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.inline-actions input{flex:1;min-width:140px}.log-table{width:100%;border-collapse:collapse;font-size:11px}.log-table td{border-bottom:1px solid var(--line);padding:12px 8px;vertical-align:top}.log-table td:first-child{color:#929b8b;white-space:nowrap}.log-table tr:last-child td{border:0}.connection-state{display:flex;align-items:center;gap:7px;font-size:11px;margin:0 0 19px;color:#899783}.connection-state i{width:6px;height:6px;background:#9bb584;border-radius:50%}dialog{padding:0;border:1px solid #e0e7d9;border-radius:12px;width:570px;max-width:calc(100vw - 30px);max-height:90vh;box-shadow:0 24px 100px #122c302b}dialog::backdrop{background:#182e285c;backdrop-filter:blur(3px)}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:24px 27px 19px;border-bottom:1px solid var(--line)}.modal-header h2{font-size:19px;font-weight:600;margin:0 0 4px}.modal-header p{font-size:11px;color:var(--muted);margin:0}.close{font-size:25px;line-height:1;border:0;background:none;color:#7b8d73}.modal-content{padding:25px 27px}.form-error{font-size:12px;color:var(--red);margin-top:13px;white-space:pre-line}.task-info{display:flex;gap:9px;margin-bottom:20px}.task-info .pill{font-size:11px}.help-box{background:#f3f6ee;padding:13px 15px;font-size:11px;border-radius:5px;color:#7c8b72;margin-bottom:20px}.loading{padding:100px;text-align:center;color:#8c9c80}#toast{position:fixed;left:calc(50% + 100px);bottom:32px;transform:translate(-50%,25px);background:#254736;color:#f2f7ed;border-radius:7px;padding:12px 23px;font-size:12px;z-index:100;opacity:0;pointer-events:none;transition:all .2s;max-width:80vw}#toast.show{opacity:1;transform:translate(-50%,0)}#toast.error{background:#924c42}footer{margin:0 38px;padding:18px 0;border-top:1px solid #e2e6dc;color:#a3ab99;font-size:9px;letter-spacing:.2px}footer>span{margin:0 7px}.footer-right{float:right}.table-scroll{overflow:auto}.overdue-link{color:#a26933;font-size:11px}.booking-note{max-width:230px;word-break:break-word}.search-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(min-width:1550px){main{padding-top:44px}.day{min-height:64px}}@media(max-width:1100px){.sidebar{width:185px;padding:30px 16px 20px}.workspace{margin-left:185px}.topbar{padding:0 24px}main{padding:25px 24px}.task-table td,.task-table th{padding-left:14px;padding-right:14px}.property-grid{grid-template-columns:repeat(2,1fr)}.stat{padding:15px}.top-right{gap:10px}#sync-label{display:none}.brand{font-size:19px}.brand-icon{width:34px}.brand small{font-size:9px;letter-spacing:1px}}@media(max-width:760px){.sidebar{position:static;width:auto;padding:15px 20px;display:block}.brand{font-size:19px}.brand small,.sidebar-note,.nav-caption,.local{display:none}.brand-icon{width:30px;height:32px;font-size:29px;line-height:30px}nav{display:flex;gap:3px;margin-top:13px}.nav{padding:8px;justify-content:center;font-size:11px;margin:0}.nav>span:first-child,.nav-arrow{display:none}.workspace{margin-left:0}.topbar{height:57px;padding:0 19px}main{padding:24px 17px}.page-heading h1{font-size:24px}.page-heading{align-items:flex-start}.heading-actions{flex-direction:column}.heading-actions .btn{font-size:11px;padding:7px 11px}.stats{grid-template-columns:repeat(2,1fr);gap:10px}.stat-value{font-size:28px}.panel-header{padding:14px;flex-wrap:wrap}.panel-header small{display:none}.calendar-grid{gap:3px;padding:0 7px 8px}.day{padding:6px;min-height:49px}.day-count{float:none;font-size:8px;line-height:11px}.day-bar{display:none}.calendar-head{padding:10px 7px}.calendar-foot{padding:10px;font-size:9px}.calendar-foot>span:last-child{max-width:190px;text-align:right}.filters{padding:12px;gap:7px}.filters input{width:100%;flex:1;min-width:100px}.task-table{min-width:610px}.property-grid,.settings-grid{grid-template-columns:1fr}.settings-grid .full{grid-column:auto}.notice{flex-direction:column;align-items:flex-start;gap:12px}.form-grid{gap:12px}.field.full{grid-column:1/-1}.modal-content{padding:20px}.modal-header{padding:20px}footer{margin:0 17px}.footer-right{display:none}#toast{left:50%}.task-table.booking-table{min-width:720px}.form-grid.mobile-stack{grid-template-columns:1fr}.property-title{font-size:12px}}

/* Natural-month navigation, with the calendar visible by default. */
.month-header{flex-wrap:wrap}
.month-navigation{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.month-arrow{font-size:23px!important;line-height:1;padding:6px 11px!important;min-width:34px}
.month-picker input{font-weight:600;font-size:14px;padding:6px 9px;width:161px;background:#fafbf7;cursor:pointer}
@media(max-width:760px){.month-navigation{gap:6px;width:100%}.month-picker input{width:148px;font-size:13px}.month-navigation .ghost{font-size:10px;padding:6px 8px}.month-header>.segmented{margin-top:2px}}

/* Persistent new booking reminders. */
#notification-button.has-unread{border-color:#9bb584;background:#e9f0e6}
#notification-count{background:#e3eadd;border-radius:10px;min-width:20px;padding:1px 5px;font-weight:600}
#notification-banner:empty{display:none}
#notification-banner{padding:20px 38px 0;max-width:1650px;width:100%;margin:auto}
#notification-banner .notice{margin-bottom:0}
.notification-item{padding:20px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.notification-item.unread{border-left:4px solid #729b5d;background:#fcfdf9}
.notification-item p{font-size:12px;line-height:1.7;margin:8px 0}
@media(max-width:760px){#notification-banner{padding:16px 17px 0}.notification-item{align-items:flex-start;flex-direction:column;gap:12px}.topbar .breadcrumb,.topbar .slash,.topbar .avatar{display:none}.top-right{gap:5px}.top-right .btn{padding:6px 8px;font-size:11px}}

.task-note{min-width:140px;white-space:pre-wrap;overflow-wrap:anywhere}

.property-beds{margin:16px 0;padding:14px;background:#f7f8f4;border:1px solid var(--line);border-radius:7px}.property-beds strong{font-size:11px;color:var(--green)}.beds-detail{white-space:pre-line;overflow-wrap:anywhere;font-size:12px;line-height:1.8;margin-top:6px}.property-beds small{display:block;font-size:10px;color:var(--muted);margin-top:8px}

/* Team selection stays available on every page. */
.team-switch select{font-size:12px;font-weight:600;color:var(--green);background:var(--pale);border-color:#c6d8cb;min-width:130px;padding:7px 10px;cursor:pointer}
@media(max-width:760px){.topbar{height:auto;min-height:60px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px;gap:8px}.team-switch select{min-width:112px;font-size:11px;padding:7px}.top-right{margin-left:auto}}

.cleaner-group + .cleaner-group{margin-top:24px}.cleaner-group h3{font-size:13px;font-weight:600;margin:0 0 6px}.cleaner-group h3 small{font-size:11px;color:var(--muted);font-weight:400;margin-left:9px}.cleaner-actions{display:flex;gap:12px;margin-left:auto}.cleaner-kind-field{margin-top:18px}

/* Monthly payroll shares the scheduling workspace and team selector. */
.inventory-guide{padding:0 21px 14px;font-size:12px;color:var(--muted);line-height:1.8}
.inventory-supplies{min-width:550px}.warehouse-balance .btn{display:block;padding:5px 0;font-size:10px}
.warehouse-actions{display:flex;gap:8px;padding:0 21px 16px;flex-wrap:wrap}.warehouse-other{min-width:470px}
.warehouse-guide{margin-top:16px}
.warehouse-locations{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;padding:0 21px 20px}
.warehouse-location{min-width:0;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.warehouse-location h3{margin:0;padding:13px 16px;font-size:14px;background:var(--pale)}
.warehouse-location .task-table td,.warehouse-location .task-table th{padding:12px 14px}
form[data-form="inventory-usage"] [data-stock-location][hidden]{display:none}
@media(max-width:1100px){.warehouse-locations{grid-template-columns:1fr}}
@media(max-width:760px){.warehouse-locations{padding:0 14px 14px}}
.james-linen{border-top:3px solid var(--green)}.james-stock{min-width:540px}.james-stock td:last-child{color:var(--green);font-variant-numeric:tabular-nums}
.james-history{border-top:1px solid var(--line)}.james-history summary{padding:17px 21px;font-size:12px;cursor:pointer;font-weight:600}
.james-quantity{display:flex;align-items:center;justify-content:space-between;gap:12px}.james-quantity>span{min-width:0;overflow-wrap:anywhere}.james-quantity input{width:90px;flex-shrink:0}.james-quantity small{display:block}
.inventory-categories{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}
.inventory-summary{min-width:400px}.inventory-summary td,.inventory-summary th{padding:16px 14px}
.inventory-records{min-width:660px}
.inventory-issues{padding:16px 21px;background:#fcf5e8;color:#8d6734;font-size:12px}
.inventory-issues summary{font-weight:600;cursor:pointer}.inventory-issues ul{max-height:240px;overflow:auto;padding-left:20px}
.inventory-manual-summary{padding:20px;font-size:12px;border-top:1px solid var(--line)}
.inventory-manual-summary>div{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
@media(max-width:1200px){.inventory-categories{grid-template-columns:1fr}}
.payroll-guide{padding:14px 21px;font-size:12px;color:var(--muted)}
.payroll-value{font-size:27px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.payroll-issues{padding:16px 21px;background:#fcf5e8;border-color:#eee1c8;color:#8d6734;font-size:12px}
.payroll-issues summary{cursor:pointer;font-weight:600}.payroll-issues ul{padding-left:20px;max-height:220px;overflow:auto}
.payroll-property-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;padding:0 21px}
.payroll-property{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0;border-bottom:1px solid var(--line);font-size:12px}
.payroll-table{min-width:700px}.payroll-detail th,.payroll-detail td{padding:10px 8px}.payroll-detail{min-width:400px}
#payroll-hourly-field[hidden]{display:none}
@media(max-width:760px){.payroll-property-grid{grid-template-columns:1fr}.payroll-value{font-size:23px}nav{flex-wrap:wrap}.nav{width:auto;flex:1;white-space:nowrap}}
.login-page{min-height:100vh;display:grid;place-items:center;background:#183b31;padding:16px}
.login-card{width:360px;max-width:100%;background:#fff;border-radius:12px;padding:32px 30px;margin:0}
.login-card .brand{color:var(--ink)}.login-card .brand small{color:var(--muted)}
.login-card h1{font-size:22px;margin:28px 0 4px}.login-card form{display:flex;flex-direction:column;gap:14px;margin-top:20px}
.login-card .btn{margin-top:4px;padding:11px}.local .logout{margin-left:auto;color:#dce8de;border-color:#385649}
@media(max-width:760px){.local:has(.logout){display:flex;border-top:0;padding:10px 0 0}}
.accounts-panel{margin-top:20px}.accounts-log{margin-top:18px}.accounts-log summary{font-size:12px;cursor:pointer;font-weight:600}
