:root{--available:#51cf66;--blocked:#74c0fc;--confirmed:#ffe066;--reserved:#fd7e14;--provisional:#f783ac;--unavailable:#868e96;--past-a:#f1f3f5;--past-b:#dee2e6;--past-text:#868e96;--border:#dee2e6;--text:#1a1a1a;--muted:#6b7280}*{box-sizing:border-box}body{color:var(--text);background:#fff;margin:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}a{color:#1c7ed6}.pull-refresh-indicator{color:var(--muted);background:#f8f9fa;justify-content:center;align-items:center;gap:.4rem;font-size:.75rem;display:flex;overflow:hidden}.pull-refresh-indicator svg{flex-shrink:0;width:18px;height:18px}.pull-refresh-indicator.spinning svg{animation:.8s linear infinite pull-refresh-spin}@keyframes pull-refresh-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}nav.topnav{border-bottom:1px solid var(--border);background:#f8f9fa;align-items:center;padding:.35rem 1.5rem;display:flex}nav.topnav .brand{font-weight:700}.bottom-nav{z-index:100;border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom,0);background:#fff;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav a,.bottom-nav button{width:100%;color:var(--muted);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:.15rem;padding:.45rem .25rem .35rem;font-family:inherit;font-size:.65rem;text-decoration:none;display:flex}.bottom-nav a svg,.bottom-nav button svg{width:22px;height:22px}.bottom-nav a.active,.bottom-nav button.active{color:#0a4a45}.bottom-nav-item{flex:1 1 0;display:flex;position:relative}.nav-popup-backdrop{z-index:95;position:fixed;inset:0}.nav-popup{border:1px solid var(--border);z-index:101;background:#fff;border-radius:10px;flex-direction:column;min-width:8rem;margin-bottom:.5rem;display:flex;position:absolute;bottom:100%;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 4px 16px #00000026}.nav-popup a{color:var(--text);text-align:center;padding:.7rem 1rem;font-size:.9rem;text-decoration:none}.nav-popup a:not(:last-child){border-bottom:1px solid var(--border)}.nav-popup a:hover{background:#f8f9fa}.chooser-page{max-width:500px;margin:0 auto}.chooser-options{flex-direction:column;gap:1rem;margin-top:1.5rem;display:flex}.chooser-card{border:1px solid var(--border);color:var(--text);background:#f8f9fa;border-radius:10px;flex-direction:column;gap:.3rem;padding:1.25rem 1.5rem;text-decoration:none;display:flex}.chooser-card:hover{border-color:#40e0d0}.chooser-card-title{font-size:1.1rem;font-weight:700}.chooser-card-desc{color:var(--muted);font-size:.85rem}.csr-filter-form{margin-bottom:.75rem}.csr-filter-form label{color:var(--muted);align-items:center;gap:.4rem;font-size:.85rem;display:inline-flex}.csr-filter-form select{border:1px solid var(--border);border-radius:6px;padding:.3rem .5rem;font-size:.85rem}.calendar-nav{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.calendar-nav h1{margin:0;font-size:1.1rem}.calendar-nav-btn{color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.3rem .6rem;font-size:.9rem;text-decoration:none}.cal-scroll{border:1px solid var(--border);border-radius:8px;overflow-x:auto}.cal-month-table{table-layout:fixed;border-collapse:separate;border-spacing:0}.cal-day-col{width:120px}.cal-month-table th{text-align:center;color:var(--muted);padding:.3rem .2rem;font-size:.75rem;font-weight:700}.cal-day-cell{vertical-align:top;border:1px solid var(--border);background:#fff;min-height:90px;padding:.2rem;overflow:hidden}@media (min-width:700px){.cal-day-col{width:180px}.cal-day-cell{min-height:130px;padding:.4rem}.cal-day-events{max-height:100px}}.cal-day-cell.out-month{color:var(--muted);background:#f8f9fa}.cal-day-cell.today{box-shadow:inset 0 0 0 2px #40e0d0}.cal-day-number{margin-bottom:.15rem;font-size:.75rem;font-weight:700}.cal-day-events{flex-direction:column;gap:.1rem;min-width:0;max-height:70px;display:flex;overflow-y:auto}.cal-event{text-align:left;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border:none;border-radius:3px;width:100%;min-width:0;padding:.08rem .25rem;font-size:.65rem;display:block;overflow:hidden}.cal-event-in{color:#2b8a3e;background:#d3f9d8}.cal-event-out{color:#c92a2a;background:#ffe3e3}.bookings-table{table-layout:fixed;border-collapse:separate;border-spacing:0;white-space:nowrap;font-size:.85rem}.bk-col-ref{width:90px}.bk-col-name{width:180px}.bk-col-property{width:160px}.bk-col-guests{width:70px}.bk-col-consultant{width:130px}.bk-col-csr,.bk-col-inhouse{width:110px}.bk-col-date{width:125px}.bk-col-nights{width:70px}.bk-col-status{width:140px}.bookings-table th,.bookings-table td{border:1px solid var(--border);text-align:left;padding:.4rem .6rem}.bookings-table td{text-overflow:ellipsis;overflow:hidden}.bookings-table .bk-frozen{z-index:40;background:#fff;position:sticky}.bookings-table thead .bk-frozen{z-index:50}.bookings-table .bk-frozen-1{left:0}.bookings-table th a{color:var(--text);text-decoration:none}.bookings-table th a.sort-active{color:#1c7ed6;font-weight:700}.login-page{text-align:center;max-width:320px;margin:4rem auto}.login-form{text-align:left;flex-direction:column;gap:1rem;margin-top:1.5rem;display:flex}.login-form label{color:var(--muted);flex-direction:column;gap:.3rem;font-size:.9rem;display:flex}.login-form input{border:1px solid var(--border);border-radius:4px;padding:.5rem .6rem;font-size:1rem}.login-form button{color:#0a4a45;cursor:pointer;background:#40e0d0;border:none;border-radius:4px;padding:.6rem;font-size:1rem;font-weight:600}.login-form button:hover{background:#33cabb}.login-error{color:#e03131;margin:0;font-size:.9rem}.admin-page{max-width:800px;margin:0 auto}.admin-success{color:#2b8a3e;font-size:.9rem}.admin-add-user-form{border:1px solid var(--border);background:#f8f9fa;border-radius:8px;flex-wrap:wrap;align-items:flex-end;gap:1rem;margin:1.25rem 0 1.5rem;padding:1rem;display:flex}.admin-add-user-form h2{width:100%;margin:0 0 .25rem;font-size:1rem}.admin-add-user-form label{color:var(--muted);flex-direction:column;gap:.3rem;font-size:.85rem;display:flex}.admin-add-user-form input[type=text],.admin-add-user-form input[type=password]{border:1px solid var(--border);border-radius:4px;padding:.4rem .5rem;font-size:.9rem}.admin-add-user-admin{align-items:center;flex-direction:row!important;gap:.4rem!important}.admin-add-user-form button{color:#0a4a45;cursor:pointer;background:#40e0d0;border:none;border-radius:4px;padding:.5rem 1rem;font-weight:600}.admin-users-table{border-collapse:collapse;width:100%;margin-top:1rem}.admin-users-table th,.admin-users-table td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;padding:.5rem .6rem;font-size:.9rem}.admin-inline-form{gap:.4rem;display:flex}.admin-inline-form input{border:1px solid var(--border);border-radius:4px;width:9rem;padding:.3rem .4rem;font-size:.85rem}.admin-inline-form button{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:4px;padding:.3rem .6rem;font-size:.85rem}.admin-deactivate-btn,.admin-activate-btn{cursor:pointer;border:none;border-radius:4px;padding:.3rem .6rem;font-size:.85rem}.admin-deactivate-btn{color:#c92a2a;background:#ffe3e3}.admin-activate-btn{color:#2b8a3e;background:#d3f9d8}.admin-deactivate-btn:disabled{opacity:.5;cursor:not-allowed}main{padding:1.5rem;padding-bottom:calc(1.5rem + 56px + env(safe-area-inset-bottom,0));max-width:1400px;margin:0 auto}main:has(.grid-page){max-width:100%}h1{margin-bottom:.25rem;font-size:1.4rem}.subtitle{color:var(--muted);margin-top:0;margin-bottom:1.25rem}.legend{flex-wrap:wrap;gap:1rem;margin-bottom:1.25rem;font-size:.85rem;display:flex}.grid-page .legend{margin-bottom:.4rem}.grid-page .subtitle{margin-top:0;margin-bottom:.4rem}.legend-item{align-items:center;gap:.4rem;display:flex}.legend-swatch{border-radius:3px;width:.85rem;height:.85rem;display:inline-block}.filter-form{border:1px solid var(--border);background:#f8f9fa;border-radius:8px;flex-wrap:wrap;align-items:flex-end;gap:1rem;margin-bottom:1.5rem;padding:1rem;display:flex}.filter-checkbox-stack{flex-direction:column;gap:.3rem;display:flex}.filter-form label{color:var(--muted);flex-direction:column;gap:.25rem;font-size:.8rem;display:flex}.filter-form input{border:1px solid var(--border);border-radius:4px;padding:.4rem .5rem;font-size:.9rem}.filter-form input.input-narrow{width:3.2rem;padding-left:.3rem;padding-right:.2rem}.filter-form button{color:#fff;cursor:pointer;background:#1c7ed6;border:none;border-radius:4px;height:fit-content;padding:.45rem 1rem;font-size:.9rem}.property-list{margin:0;padding:0;list-style:none}.property-list a{text-decoration:none}.property-list li{border-bottom:1px solid var(--border);padding:.6rem 0}.explainer{max-width:760px;margin-top:2rem}.explainer h2{margin-bottom:.5rem;font-size:1.15rem}.explainer h3{margin:1.5rem 0 .5rem;font-size:1rem}.explainer p,.explainer li{color:var(--text);line-height:1.6}.explainer ul,.explainer ol{padding-left:1.25rem}.explainer-steps{padding-left:1.25rem;list-style:decimal}.explainer-steps li{margin-bottom:.5rem}.status-badge{white-space:nowrap;border-radius:999px;padding:.1rem .55rem;font-size:.78rem;font-weight:600;display:inline-block}.property-picker{margin-bottom:1.25rem;position:relative}.property-picker-input-wrap{position:relative}.property-picker-input{border:1px solid var(--border);appearance:none;border-radius:6px;width:100%;padding:.6rem 2.2rem .6rem .7rem;font-size:1rem}.property-picker-input:focus{outline-offset:-1px;outline:2px solid #1c7ed6}.property-picker-clear{width:1.6rem;height:1.6rem;color:var(--muted);cursor:pointer;-webkit-tap-highlight-color:transparent;background:#f1f3f5;border:none;border-radius:50%;font-size:1.1rem;line-height:1;position:absolute;top:50%;right:.35rem;transform:translateY(-50%)}.property-picker-list{z-index:40;border:1px solid var(--border);background:#fff;border-radius:6px;max-width:360px;max-height:320px;margin:0;padding:.25rem;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 4px 16px #0000001f}.property-picker-empty{color:var(--muted);padding:.6rem .7rem;font-size:.9rem}.property-picker-option{text-align:left;width:100%;color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:4px;padding:.55rem .6rem;font-size:.95rem;display:block}.property-picker-option.highlighted,.property-picker-option:hover{background:#e7f5ff}.month-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.25rem;display:grid}.month{border:1px solid var(--border);border-radius:8px;padding:.75rem}.month h3{margin:0 0 .5rem;font-size:.95rem}.month-days{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.day-cell{aspect-ratio:1;cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;border-radius:3px;justify-content:center;align-items:center;margin:0;font-family:inherit;font-size:.7rem;display:flex}.day-cell.pad{cursor:default}.day-cell.selected{outline-offset:1px;outline:2px solid #1c7ed6}.detail-sheet{left:0;right:0;bottom:calc(56px + env(safe-area-inset-bottom,0px));z-index:90;border-top:1px solid var(--border);background:#fff;border-radius:12px 12px 0 0;max-height:42vh;padding:.85rem 1rem;position:fixed;overflow-y:auto;box-shadow:0 -4px 16px #00000026}.detail-sheet-header{background:#fff;justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex;position:sticky;top:0}.detail-sheet-close{color:var(--text);cursor:pointer;background:#f1f3f5;border:none;border-radius:50%;flex-shrink:0;width:1.75rem;height:1.75rem;font-size:1.1rem;line-height:1}.detail-panel-date{margin-bottom:.6rem;font-weight:700}.detail-block{border-top:1px solid var(--border);padding:.5rem 0;font-size:.9rem;line-height:1.5}.detail-block:first-of-type{border-top:none;padding-top:0}.detail-block-header{margin-bottom:.1rem;font-weight:700}.day-cell.available{background:var(--available);color:#fff}.day-cell.blocked{background:var(--blocked);color:#1a1a1a}.day-cell.confirmed{background:var(--confirmed);color:#1a1a1a}.day-cell.reserved{background:var(--reserved);color:#fff}.day-cell.provisional{background:var(--provisional);color:#fff}.day-cell.unavailable{background:var(--unavailable);color:#fff}.day-cell.past{background:repeating-linear-gradient(45deg, var(--past-a), var(--past-a) 4px, var(--past-b) 4px, var(--past-b) 8px);color:var(--past-text)}.day-cell.split{color:#1a1a1a;text-shadow:0 0 3px #ffffffe6,0 0 3px #ffffffe6;font-weight:700}.day-cell.pad{background:0 0}.grid-scroll{border:1px solid var(--border);border-radius:8px;overflow-x:auto}table.timeline{border-collapse:separate;border-spacing:0;white-space:nowrap;font-size:.75rem}table.timeline th,table.timeline td{border:1px solid var(--border);text-align:center;padding:0}table.timeline tr.group-header-row td{text-align:left;color:var(--muted);background:#f1f3f5;border-left:none;padding:.3rem .5rem;font-size:.75rem;font-weight:700;position:sticky;left:0}table.timeline th.prop-name,table.timeline td.prop-name{text-align:left;z-index:1;white-space:nowrap;background:#fff;width:30ch;max-width:30ch;padding:.05rem .4rem;position:sticky;left:0;overflow:hidden}table.timeline th.prop-name{overflow:visible}.prop-name-inner{align-items:center;display:flex}.prop-name-text{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;display:block;overflow:hidden}.prop-name-view{white-space:nowrap;flex:none;margin-left:.5em}table.timeline thead th.prop-name{z-index:2;background:#f8f9fa}table.timeline th.day-header{background:#f8f9fa;min-width:16px;padding:.1rem .05rem;font-size:.68rem;font-weight:500}table.timeline th.day-header.day-of-week{color:var(--muted);padding-bottom:0;font-size:.6rem;font-weight:400}table.timeline td.cell{cursor:pointer}table.timeline td.cell.selected{outline-offset:-2px;outline:2px solid #1c7ed6}table.timeline th.meta-header{white-space:nowrap;text-align:left;background:#f8f9fa;padding:.02rem .2rem;font-size:.72rem;font-weight:600}.column-filter{width:100%;max-width:100px;display:block;position:relative}table.timeline th.prop-name .column-filter{max-width:none}.searchable-select{width:100%;max-width:100px;position:relative}table.timeline th.prop-name .searchable-select{max-width:none}.searchable-select-input{width:100%;color:var(--text);background:0 0;border:1px solid #0000;border-radius:4px;padding:.15rem 1.3rem .15rem .3rem;font-size:.72rem;font-weight:600}.searchable-select-input:focus{background:#fff;border-color:#1c7ed6;outline:none}.searchable-select-input.has-value{color:#1c7ed6}.searchable-select-clear{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:.1rem .2rem;font-size:.9rem;line-height:1;position:absolute;top:50%;right:.2rem;transform:translateY(-50%)}.searchable-select-list{z-index:60;border:1px solid var(--border);text-align:left;background:#fff;border-radius:6px;min-width:10rem;max-height:14rem;margin:.2rem 0 0;padding:.25rem 0;list-style:none;position:absolute;top:100%;left:0;overflow-y:auto;box-shadow:0 4px 16px #00000026}.searchable-select-list button{text-align:left;width:100%;color:var(--text);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:.4rem .6rem;font-size:.8rem;display:block}.searchable-select-list button:hover{background:#f8f9fa}.searchable-select-empty{color:var(--muted);padding:.4rem .6rem;font-size:.8rem}.column-filter-label{white-space:nowrap;color:var(--text);pointer-events:none;font-size:.72rem;font-weight:600;display:block}.column-filter:has(.column-filter-select option:checked:not([value=""])) .column-filter-label{color:#1c7ed6}.column-filter-select{opacity:0;cursor:pointer;border:none;width:100%;height:100%;padding:0;font-size:.7rem;position:absolute;inset:0}.range-filter{max-width:none;position:static}.grid-count-line{flex-wrap:wrap;align-items:center;gap:1rem;min-height:1.8rem;margin-bottom:0;display:flex;position:relative}.grid-count-line .subtitle{margin:0}.range-filter-inputs{gap:.2rem;display:flex}.range-filter-inputs input,.range-filter-inputs select{border:1px solid var(--border);width:3.6rem;min-width:0;color:var(--text);background:#fff;border-radius:4px;padding:.05rem .1rem;font-family:inherit;font-size:.68rem}table.timeline td.meta-cell{text-align:left;white-space:nowrap;padding:.05rem .35rem;font-size:.75rem}table.timeline td.meta-cell-center{text-align:center}table.timeline td.meta-narrow{white-space:nowrap;text-overflow:ellipsis;max-width:80px;overflow:hidden}table.timeline td.cell{width:16px;height:15px}table.timeline td.cell.available{background:var(--available)}table.timeline td.cell.blocked{background:var(--blocked)}table.timeline td.cell.confirmed{background:var(--confirmed)}table.timeline td.cell.reserved{background:var(--reserved)}table.timeline td.cell.provisional{background:var(--provisional)}table.timeline td.cell.unavailable{background:var(--unavailable)}table.timeline td.cell.past{background:repeating-linear-gradient(45deg, var(--past-a), var(--past-a) 3px, var(--past-b) 3px, var(--past-b) 6px)}table.timeline th.day-header.target-range{color:#b06000;background:#f59f0033;font-weight:700}table.timeline td.cell.target-range{box-shadow:inset 0 0 0 2px #f59f00}.result-card{border:1px solid var(--border);border-radius:8px;margin-bottom:.75rem;padding:.85rem 1rem}.result-card h4{margin:0 0 .25rem}.result-card .meta{color:var(--muted);font-size:.85rem}
