.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}:root{--bg: #f5f6f8;--surface: #ffffff;--text: #1d2330;--muted: #6b7280;--border: #dde1e7;--accent: #2f6fde;--danger: #c93a3a;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}@media (prefers-color-scheme: dark){:root{--bg: #14171c;--surface: #1d2128;--text: #e4e7ec;--muted: #9aa3af;--border: #2e343e;--accent: #5b8ff0;--danger: #e36060}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}button,select,input,textarea{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:6px 10px}button{cursor:pointer}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{color:var(--danger)}button.link{border:none;background:none;padding:0;color:var(--accent)}button.link.active{font-weight:600}textarea{width:100%;font-family:ui-monospace,monospace;font-size:12px}.muted{color:var(--muted)}.error{color:var(--danger)}.pad{padding:16px}.spacer{flex:1}.topbar{display:flex;align-items:center;gap:20px;padding:10px 20px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}.topbar nav{display:flex;gap:14px;flex-wrap:wrap;align-items:center}.topbar nav a.active{color:var(--accent);font-weight:600}.brand{font-weight:700;font-size:16px}.page{padding:16px 20px}.page-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.page-toolbar h1{font-size:22px;margin:0;flex:1}.toolbar-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.grid{margin:8px -12px;min-height:200px}.grid-editing{background-image:linear-gradient(to right,var(--border) 1px,transparent 1px);background-size:calc(100% / 12) 100%;border-radius:8px}.widget{height:100%;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden}.widget.editing{outline:1px dashed var(--accent)}.widget-header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-bottom:1px solid var(--border);font-weight:600}.widget.editing .widget-header{cursor:move}.widget-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.widget-actions{display:flex;gap:4px}.widget-actions button{padding:0 6px;line-height:20px}.widget-body{flex:1;min-height:0;overflow:hidden;padding:4px}.widget-body svg{display:block}.widget-body svg text{fill:var(--text)}.widget-body svg .domain,.widget-body svg .tick line{stroke:var(--muted)}.text-block{white-space:pre-wrap;padding:6px;overflow:auto;height:100%}.react-grid-item.react-grid-placeholder{background:var(--accent);border-radius:8px}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:16px}.card label,.modal label{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.login{max-width:360px;margin:48px auto}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal{background:var(--surface);border-radius:10px;padding:20px;width:min(560px,100%);max-height:90vh;overflow:auto}.modal h3{margin-top:0}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.datasets{display:grid;grid-template-columns:220px 1fr;gap:20px}.datasets ul{list-style:none;padding:0}.datasets li{margin:6px 0}@media (max-width: 700px){.datasets{grid-template-columns:1fr}}.small{font-size:12px}.nav-sep{width:1px;height:18px;background:var(--border)}.book{max-width:960px}.book-controls{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:8px}.book-controls label,.form-row label{display:flex;flex-direction:column;gap:4px}.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:6px;margin:12px 0}.slot{padding:8px 4px;font-variant-numeric:tabular-nums}.slot:disabled{opacity:.4;cursor:not-allowed}.slot.busy{text-decoration:line-through}.slot.selected{background:var(--accent);border-color:var(--accent);color:#fff}.book-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:8px;overflow:hidden}.table th,.table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}.table th{font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase}.table tr.highlight td{background:color-mix(in srgb,var(--accent) 10%,transparent)}.pad:has(>.table){overflow-x:auto}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.badge-pending{background:#f5e3b3;color:#6b4e00}.badge-confirmed{background:#cfeed8;color:#145c2c}.badge-cancelled,.badge-expired{background:var(--border);color:var(--muted)}.notice{padding:10px 14px;border-radius:8px;border:1px solid var(--border);background:var(--surface)}.notice.ok{border-color:#3aa35b}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modal label.checkbox{flex-direction:row;align-items:center;gap:8px}.stay{max-width:1100px}.nights{align-self:flex-end;padding-bottom:8px}.table-wrap{overflow-x:auto;margin-bottom:16px}.avail td.night,.avail th{text-align:center;font-size:12px;white-space:nowrap}.avail td:first-child,.avail th:first-child{text-align:left}.night-free{color:#1d7a3d}.night-booked{background:color-mix(in srgb,var(--muted) 15%,transparent);color:var(--muted)}.allocation{display:flex;flex-direction:column;gap:12px}.allocation h2{margin-bottom:0}.room-card{display:flex;flex-direction:column;gap:8px}.room-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.bed-row{display:grid;grid-template-columns:minmax(140px,200px) 1fr auto auto;gap:8px;align-items:center}.bed-who input{width:100%}.bed-price{font-variant-numeric:tabular-nums;min-width:80px;text-align:right}.bed-actions{display:flex;gap:8px;flex-wrap:wrap}@media (max-width: 600px){.bed-row{grid-template-columns:1fr auto}.bed-row .bed-who{grid-column:1 / -1;grid-row:2}}.admin-options{display:flex;flex-direction:column;gap:8px;border-style:dashed}.admin-options label{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.notes{display:flex;flex-direction:column;gap:4px}label.checkbox{display:inline-flex;flex-direction:row;align-items:center;gap:6px}.picker{position:relative;display:inline-block;width:100%}.picker input{width:100%}.picker-list{position:absolute;z-index:20;left:0;right:0;top:100%;margin:2px 0 0;padding:4px;list-style:none;background:var(--surface);border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 20px #00000026}.picker-list button{width:100%;text-align:left;border:none;background:none}.picker-list button:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.picked{display:inline-flex;gap:8px;align-items:center;padding:6px 10px;border:1px solid var(--border);border-radius:6px}.admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.admin-tile{display:flex;flex-direction:column;gap:6px}.admin-tile:hover{border-color:var(--accent)}.prop-card{margin-bottom:16px}.prop-card h2{font-size:18px;margin:0;flex:1}.weekday-picks{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.who .badge{margin-left:6px}tr.detail td{background:color-mix(in srgb,var(--muted) 8%,transparent);font-size:13px}:root{--heat-0: #E3E6EA;--heat-1: #F1F7F2;--heat-2: #E2F0E5;--heat-3: #CFE7D6}@media (prefers-color-scheme: dark){:root{--heat-0: #2A2F37;--heat-1: #1F2A23;--heat-2: #24382B;--heat-3: #2B4734}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.block{display:block}.grow{flex:1;min-width:0}.ok-text{color:#1d7a3d}.warn-text{color:#a04a12}.accent-text{color:var(--accent)}.stay{max-width:1320px}.strip-card{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}.strip-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.date-inputs{display:inline-flex;align-items:center;gap:6px}.strip-wrap{display:flex;align-items:flex-end;gap:6px}.strip-nav{flex:none;height:36px;width:32px;padding:0}.strip-scroll{flex:1;min-width:0;overflow-x:auto;scrollbar-width:thin;padding-top:16px}.strip{display:grid;gap:3px;align-items:end;height:70px;padding-bottom:26px;position:relative;width:max-content}.strip-bar{position:relative;border:none;padding:0;border-radius:4px 4px 2px 2px;background:var(--border);cursor:pointer;min-width:0}.strip-bar.on{background:var(--accent)}.strip-bar.pending{box-shadow:0 0 0 2px var(--accent)}.strip-bar:hover{outline:2px solid var(--accent);outline-offset:1px}.strip-label{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:3px;font-size:9px;line-height:1.15;color:var(--muted);white-space:nowrap;text-align:center;pointer-events:none}.strip-month{position:absolute;bottom:calc(100% + 2px);left:0;font-size:11px;font-weight:700;color:var(--text);white-space:nowrap;pointer-events:none}.strip-bar.weekend .strip-label{color:#a06a00}.strip-bar.preview,.tl-day.preview,.tl-cell.preview,.mini-heat .preview{background:color-mix(in srgb,var(--accent) 55%,transparent)!important;color:#fff}.strip-bar.pending,.tl-day.pending,.tl-cell.pending,.mini-heat .pending{box-shadow:0 0 0 2px var(--accent) inset!important}.stay.dragging,.stay.dragging *{-webkit-user-select:none;user-select:none;cursor:ew-resize!important}.tl-cell.pickable{cursor:pointer}.tl-cell.pickable:hover{outline:2px solid var(--accent);outline-offset:-2px}.tl-day{border:none;border-left:1px solid var(--border);border-radius:0;background:none;color:inherit;cursor:pointer}.tl-day:hover:not(.on){background:color-mix(in srgb,var(--accent) 12%,transparent)}.tl-head-label{gap:4px}.tl-nav{width:28px;height:28px;padding:0}.mini-heat button{border:none;padding:0;cursor:pointer}.strip-bar.on .strip-label{color:var(--accent);font-weight:700}.filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.pill{border-radius:999px;padding:7px 13px;font-size:13px;font-weight:600}.pill.on{background:var(--text);color:var(--bg);border-color:var(--text)}.pill-group{display:inline-flex;gap:4px}.stay-layout{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-start}.stay-main{flex:999 1 720px;min-width:0;display:flex;flex-direction:column;gap:12px}.stay-aside{flex:1 1 280px;min-width:260px;display:flex;flex-direction:column;gap:12px;position:sticky;top:12px}.timeline{padding:0;overflow:hidden}.timeline .table-wrap{margin:0}.tl{min-width:920px}.tl-row{display:grid;grid-template-columns:270px repeat(14,minmax(0,1fr));border-bottom:1px solid var(--border)}.tl-head{background:color-mix(in srgb,var(--muted) 6%,var(--surface))}.tl-label{padding:8px 10px 8px 14px;display:flex;align-items:center;gap:8px;border-right:1px solid var(--border);min-width:0}.tl-sub{padding-left:36px}.tl-prop{background:color-mix(in srgb,var(--muted) 5%,var(--surface))}.tl-prop-btn{border:none;border-right:1px solid var(--border);border-radius:0;background:none;text-align:left;width:100%}.tl-day{display:flex;flex-direction:column;align-items:center;padding:6px 0;font-size:10px;border-left:1px solid var(--border)}.tl-day strong{font-size:14px}.tl-day.weekend{background:color-mix(in srgb,#E3B341 14%,transparent)}.tl-day.on{background:var(--accent);color:#fff}.tl-cell{display:flex;align-items:center;justify-content:center;border-left:1px solid var(--border);font-size:11px;font-weight:600;min-height:40px;color:var(--muted)}.tl-cell.heat{color:#1d5e33}.tl-cell.in{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--text)}.tl-cell.mine{background:var(--accent);color:#fff}.tl-cell.none{color:color-mix(in srgb,var(--muted) 60%,transparent)}.tl-cell.booked{background:repeating-linear-gradient(135deg,#d5dae1 0,#d5dae1 4px,#eceff3 4px,#eceff3 8px)}.tl-cell.clash{background:repeating-linear-gradient(135deg,#f2c9a6 0,#f2c9a6 4px,#fbe5d3 4px,#fbe5d3 8px)}.tl-note{padding:8px 14px 8px 36px;border-bottom:1px solid var(--border)}.chev{display:inline-block;transition:transform .15s;font-size:16px;line-height:1}.chev.open{transform:rotate(90deg)}.fit-badge{font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px;background:#dcebdf;color:#1d5e33;white-space:nowrap}.fit-badge.none{background:var(--border);color:var(--muted)}.stepper{display:inline-flex;align-items:center;gap:4px}.stepper button{width:30px;height:30px;padding:0;border-radius:50%}.stepper button.plus:not(:disabled){background:var(--accent);border-color:var(--accent);color:#fff}.stepper strong{min-width:18px;text-align:center}.stepper.big button{width:44px;height:44px;font-size:18px}.only-narrow{display:none}@media (max-width: 760px){.only-wide{display:none}.only-narrow{display:flex}.stay-aside{position:static}.strip-head .date-inputs{width:100%}}.prop-cards{flex-direction:column;gap:10px}.prop-card-m{display:flex;flex-direction:column;gap:10px;padding:12px}.prop-card-head{display:flex;align-items:center;gap:10px;border:none;background:none;padding:0;text-align:left;width:100%}.mini-heat{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.mini-heat button{height:36px;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#1d5e33}.mini-heat small{font-size:9px;font-weight:500}.group-card{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:12px;padding:10px 12px}.group-card.picked{border:2px solid var(--accent)}.held-rooms{display:flex;flex-direction:column;gap:8px}.held-rooms h2{margin:0;font-size:17px}.held-room{padding:8px 0;border-bottom:1px solid var(--border)}.summary,.waitlist-card{display:flex;flex-direction:column;gap:10px}.summary h2,.waitlist-card h2{margin:0;font-size:17px}.summary-rooms{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.summary-rooms li{display:flex;justify-content:space-between}.summary-total{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--border);padding-top:10px}.summary-total strong{font-size:18px}.waitlist-card label{display:flex;flex-direction:column;gap:4px}.offer-banner{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.offer-actions{display:flex;gap:8px;margin-top:6px;flex-wrap:wrap}a.button{display:inline-block;padding:6px 12px;border-radius:6px;border:1px solid var(--border);font-weight:600}a.button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.badge-offered{background:#dde8fb;color:#1f4fa8}.badge-wl-waiting{background:#f5e3b3;color:#6b4e00}.badge-wl-offered{background:#dde8fb;color:#1f4fa8}.badge-wl-booked{background:#cfeed8;color:#145c2c}.badge-wl-declined,.badge-wl-expired,.badge-wl-withdrawn{background:var(--border);color:var(--muted)}.season-timeline,.refund-chart{position:relative;width:100%}.season-timeline svg,.refund-chart svg{display:block;overflow:visible}.season-timeline .grid{stroke:var(--border);stroke-width:1}.season-timeline .axis-label{fill:var(--muted);font-size:11px}.season-timeline .axis-label.strong{fill:var(--text);font-weight:600}.season-timeline .row-bg{fill:transparent}.season-timeline .row-bg.on{fill:color-mix(in srgb,var(--accent) 10%,transparent)}.season-timeline .tl-season:hover .row-bg{fill:color-mix(in srgb,var(--muted) 8%,transparent)}.season-timeline .row-label{fill:var(--text);font-size:13px;font-weight:600}.season-timeline .bar{stroke:var(--surface);stroke-width:2;paint-order:stroke}.season-timeline .hatch{fill:var(--surface);opacity:.55}.season-timeline .today{stroke:var(--text);stroke-width:1.5;stroke-dasharray:3 3}.season-timeline .today-label{fill:var(--text);font-weight:600}.chart-tip{position:absolute;pointer-events:none;z-index:5;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 9px;font-size:12px;box-shadow:0 4px 14px #00000024;white-space:nowrap}.rc-axis text{fill:var(--muted);font-size:11px}.rc-axis line,.rc-axis path{stroke:var(--border)}.rc-line{stroke:var(--accent)}.rc-crosshair{position:absolute;width:1px;background:var(--muted);pointer-events:none}.setup{max-width:1320px}.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin-bottom:16px}.tab{border:none;border-bottom:2px solid transparent;border-radius:0;background:none;padding:10px 14px;font-weight:600;color:var(--muted)}.tab.on{color:var(--text);border-bottom-color:var(--accent)}.setup-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.setup-grid .span-2{grid-column:1 / -1}@media (max-width: 900px){.setup-grid{grid-template-columns:1fr}}.setup h2{font-size:17px;margin:0;flex:1;display:flex;align-items:center;gap:8px}.setup .card{display:flex;flex-direction:column;gap:10px}.policy-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:3px}.check-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:8px}.season-editor label,.rule-field{display:flex;flex-direction:column;gap:4px}.rule-field{border:none;padding:0;margin:0}.rule-field legend{padding:0;margin-bottom:4px}.swatches{display:flex;gap:8px;flex-wrap:wrap}.swatch{width:32px;height:32px;border-radius:50%;padding:0;border:2px solid var(--surface);box-shadow:0 0 0 1px var(--border)}.swatch.on{box-shadow:0 0 0 2px var(--text)}.period-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.rule-group{margin-bottom:20px}.rule-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;margin-top:10px}.rule-card.inactive{opacity:.6}.rule-card-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.dot{width:12px;height:12px;border-radius:50%;display:inline-block}.modal.wide{width:min(760px,100%)}.rule-edit{margin-bottom:10px}.rule-form{display:flex;flex-direction:column;gap:10px}.table.compact th,.table.compact td{padding:4px 6px}.table.compact input{width:90px}.diff pre{margin:0;white-space:pre-wrap;font-size:11px;max-width:420px}.badge-change-created{background:#cfeed8;color:#145c2c}.badge-change-updated{background:#dde8fb;color:#1f4fa8}.badge-change-deleted{background:#f6d5d5;color:#8a1f1f}label.inline{display:inline-flex;align-items:center;gap:6px}.strip-season{position:absolute;left:0;right:0;bottom:-2px;height:4px;border-radius:2px;pointer-events:none}.strip-season-name{position:absolute;bottom:calc(100% + 16px);left:0;font-size:10px;font-weight:600;color:var(--muted);white-space:nowrap;pointer-events:none}.strip-scroll{padding-top:30px}.policy-details summary{cursor:pointer;color:var(--accent)}.error-box{display:flex;flex-direction:column;gap:6px;align-items:flex-start;padding:12px 14px;margin:12px 0;border:1px solid var(--danger);border-radius:8px;background:color-mix(in srgb,var(--danger) 8%,var(--surface))}.error-box code{font-size:12px;white-space:pre-wrap;color:var(--danger)}.error-box.compact{margin:0;padding:8px;font-size:12px}.condition-editor{display:flex;flex-direction:column;gap:10px}.condition-editor>label{display:flex;flex-direction:column;gap:4px}.cond-group{border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:8px}.cond-group.depth-1{border-left-color:#eb6834}.cond-group.depth-2{border-left-color:#1baf7a}.cond-group-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.cond-compare{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:6px;border-radius:6px;background:color-mix(in srgb,var(--muted) 6%,transparent)}.cond-not{display:flex;gap:6px;align-items:flex-start;flex-wrap:wrap;padding:6px;border:1px dashed var(--border);border-radius:6px}.cond-not>.cond-compare,.cond-not>.cond-group{flex:1}.cond-actions{display:flex;gap:6px;flex-wrap:wrap}.operand,.fact-picker{display:inline-flex;gap:4px;align-items:center;flex-wrap:wrap}.operand-mode{font-size:12px;color:var(--muted)}.operand .num{width:72px}.day-chips{display:inline-flex;gap:2px}.chip{padding:2px 6px;font-size:11px;border-radius:999px}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.strong{font-weight:700}.json-edit{display:flex;flex-direction:column;gap:6px}.simulate{margin-top:12px}.plugin-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:16px;align-items:start}.plugin-card{display:flex;flex-direction:column;gap:10px}.plugin-card.planned{opacity:.75;border-style:dashed}.plugin-form{display:flex;flex-direction:column;gap:10px}.plugin-form label{display:flex;flex-direction:column;gap:4px}.tab-badge{margin-left:6px;font-size:10px}.assistant{margin-bottom:18px;display:flex;flex-direction:column;gap:10px;border-color:color-mix(in srgb,var(--accent) 45%,var(--border))}.chat{display:flex;flex-direction:column;gap:10px;max-height:460px;overflow-y:auto;padding-right:4px}.chat-turn{display:flex;flex-direction:column;gap:6px}.chat-turn.user{align-items:flex-end}.chat-bubble{max-width:85%;padding:8px 12px;border-radius:12px;white-space:pre-wrap;line-height:1.4}.chat-turn.user .chat-bubble{background:var(--accent);color:#fff;border-bottom-right-radius:4px}.chat-turn.assistant .chat-bubble{background:color-mix(in srgb,var(--muted) 10%,var(--surface));border-bottom-left-radius:4px}.chat-steps{display:flex;gap:4px;flex-wrap:wrap}.chip.warn{border-color:#d08a1e;color:#8a5a0b}.proposal{border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;max-width:95%}.chat-input{display:flex;gap:8px;align-items:flex-end}.chat-input textarea{flex:1;font-family:inherit;font-size:14px}.override-starters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}.override-starters p{flex-basis:100%;margin:0}.season-chip{display:inline-flex;align-items:center;gap:5px;text-decoration:none;color:inherit;border:1px solid var(--border)}.season-chip:hover{border-color:var(--accent)}.season-chip .dot{width:8px;height:8px}.rule-group h2 a{color:inherit;text-decoration:none}.rule-group h2 a:hover{text-decoration:underline}.rule-group.focus{outline:2px solid color-mix(in srgb,var(--accent) 35%,transparent);outline-offset:6px;border-radius:8px}.season-rules .season-rule-set{border-top:1px solid var(--border);padding:8px 0}.season-rules .season-rule-set:first-of-type{border-top:0}.season-rules .season-rule-set.inactive{opacity:.6}.season-rules .policy-list{margin:4px 0 0}.profile-form{display:grid;gap:12px}.profile-section{display:grid;gap:8px}.profile-field{display:grid;gap:4px}.profile-field.readonly span:last-child{padding:4px 0}.profile-field.multi{border:0;padding:0}.field-label{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}.badge.access-admin{background:#f5e3b3;color:#6b4e00}.people-list{list-style:none;padding:0;margin:0 0 12px}.people-list li{display:flex;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--border)}.search-results{list-style:none;padding:0;margin:0 0 8px}.inline-title{font:inherit;border:0;border-bottom:1px dashed var(--border);background:transparent;color:inherit;width:auto}.inline-pair{display:flex;gap:6px}.text-operand{width:140px}.nowrap{white-space:nowrap}.perm-row{align-items:flex-start}.badge.risk-high{background:#f6d0cc;color:#8a1c12}.badge.risk-medium{background:#f5e3b3;color:#6b4e00}.badge.risk-low{background:var(--border);color:var(--muted)}code.secret{font-size:1.1em;letter-spacing:.05em}.planner-page .page-toolbar .tabs{margin:0}.planner-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}.planner-legend{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin:4px 0 10px}.legend-item{display:inline-flex;align-items:center;gap:6px}.legend-swatch{width:18px;height:12px;border-radius:4px;display:inline-block}.planner-scroll{overflow:auto;max-height:calc(100vh - 230px);border:1px solid var(--border);border-radius:10px;background:var(--surface);touch-action:pan-x pan-y}.planner-grid{position:relative;-webkit-user-select:none;user-select:none}.pl-head{display:grid;position:sticky;top:0;z-index:3;background:var(--surface);border-bottom:1px solid var(--border)}.pl-corner{position:sticky;left:0;z-index:4;background:var(--surface);padding:8px 10px;font-weight:600;border-right:1px solid var(--border)}.pl-day{display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:11px;color:var(--muted);padding:4px 0;border-left:1px solid color-mix(in srgb,var(--border) 60%,transparent);position:relative}.pl-day strong{color:var(--text);font-size:13px}.pl-day em{position:absolute;top:1px;left:3px;font-style:normal;font-weight:600;color:var(--text);font-size:10px}.pl-day.weekend{background:color-mix(in srgb,var(--muted) 8%,transparent)}.pl-day.today strong{color:var(--accent)}.pl-hour{font-size:11px;color:var(--muted);padding:8px 4px;border-left:1px solid color-mix(in srgb,var(--border) 60%,transparent)}.pl-group-head{position:sticky;left:0;display:block;width:100%;text-align:left;background:color-mix(in srgb,var(--accent) 7%,var(--surface));border:0;border-bottom:1px solid var(--border);padding:6px 10px;font-weight:600;color:var(--text);cursor:pointer}.pl-row{display:flex;border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.pl-row.drop{background:color-mix(in srgb,var(--accent) 12%,transparent)}.pl-row.inactive .pl-label{opacity:.55}.pl-row.waitlist{background:color-mix(in srgb,var(--muted) 5%,transparent)}.pl-label{position:sticky;left:0;z-index:2;width:200px;flex:none;display:flex;flex-direction:column;justify-content:center;padding:2px 10px;background:var(--surface);border-right:1px solid var(--border);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.pl-track{position:relative;flex:1;background-image:linear-gradient(to right,color-mix(in srgb,var(--border) 55%,transparent) 1px,transparent 1px)}.pl-today{position:absolute;top:0;bottom:0;width:2px;background:var(--accent);opacity:.6;z-index:1}.pl-bar{position:absolute;height:26px;border-radius:6px;display:flex;align-items:center;font-size:12px;cursor:grab;overflow:hidden;box-shadow:0 0 0 2px var(--surface);z-index:1;color:#fff}.pl-bar:focus-visible{outline:2px solid var(--text);outline-offset:1px}.pl-bar.dragging{cursor:grabbing;opacity:.85;z-index:5;box-shadow:0 4px 14px #00000040}.pl-bar.selected{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--text)}.pl-bar-text{padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;pointer-events:none}.pl-handle{width:8px;align-self:stretch;cursor:ew-resize;flex:none}.pl-handle.start{border-left:3px solid rgb(255 255 255 / 55%)}.pl-handle.end{border-right:3px solid rgb(255 255 255 / 55%)}.pl-confirmed{background:#2a78d6}.pl-pending{background:repeating-linear-gradient(135deg,#b7791f 0,#b7791f 6px,#c98a2c 6px,#c98a2c 12px)}.pl-offered{background:#6250d6}.pl-cancelled,.pl-expired{background:#8a929e;color:#fff;text-decoration:line-through}.pl-badge{color:#fff}.pl-wait{position:absolute;height:18px;border-radius:9px;font-size:11px;padding:0 8px;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:transparent;border:1.5px dashed var(--muted);color:var(--text)}.pl-wait.offered{border-style:solid;border-color:#6250d6}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);background:var(--surface);border-left:1px solid var(--border);box-shadow:-8px 0 24px #00000026;padding:16px 18px;overflow-y:auto;z-index:40}.drawer-head{display:flex;align-items:center;justify-content:space-between}.drawer-head h2{margin:0}.drawer textarea{width:100%}.drawer-room{border-top:1px solid var(--border);padding:8px 0}.drawer-actions{margin-top:16px;padding-top:12px;border-top:1px solid var(--border)}dl.facts{display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;margin:8px 0}dl.facts dt{color:var(--muted)}dl.facts dd{margin:0}.warn-box{border:1px solid #e0b25a;background:color-mix(in srgb,#e0b25a 14%,transparent);border-radius:8px;padding:6px 10px;margin:8px 0}.table.compact td{padding:4px 8px}.toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 14px;box-shadow:0 6px 20px #0000002e;z-index:60;display:flex;gap:12px;align-items:center;max-width:min(640px,92vw)}.toast.ok{border-color:#1d7a3d}.toast.bad{border-color:#a04a12}@media (max-width: 640px){.pl-label,.pl-corner{width:120px}}.balance-card.owing{border-color:#e0b25a}.balance-card details{margin-top:6px}.bed-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:4px 0}.editor-room legend{display:flex;gap:8px;align-items:center}.pl-bar.night,.pl-wait.night{--slant: 24px;--gap: max(4px, calc(var(--slant) * .14));border-radius:0;box-shadow:none;clip-path:polygon(calc(var(--slant) + var(--gap)) 0,calc(100% - var(--gap)) 0,calc(100% - var(--slant) - var(--gap)) 100%,var(--gap) 100%)}.pl-bar.night.cut-start,.pl-wait.night.cut-start{clip-path:polygon(0 0,calc(100% - var(--gap)) 0,calc(100% - var(--slant) - var(--gap)) 100%,0 100%)}.pl-bar.night .pl-bar-text{padding-left:calc(var(--slant) * .6 + 4px);padding-right:calc(var(--slant) * .6)}.pl-bar.night .pl-handle{position:absolute;top:0;bottom:0;width:12px;border:0}.pl-bar.night .pl-handle.start{left:calc(var(--slant) / 2 - 6px)}.pl-bar.night .pl-handle.end{right:calc(var(--slant) / 2 - 6px)}.pl-bar.night .pl-handle:after{content:"";position:absolute;top:7px;bottom:7px;left:5px;width:2px;background:#fff9;border-radius:1px}.pl-bar.night.selected{filter:brightness(1.18) saturate(1.15)}.pl-bar.night.selected .pl-bar-text{text-decoration:underline}.pl-bar.night.dragging{opacity:.8}.pl-wait.night{border:0;background:color-mix(in srgb,var(--muted) 28%,transparent)}.pl-wait.night .pl-wait-text,.pl-wait.night{padding-left:calc(var(--slant) * .6 + 2px)}.pl-wait.night.offered{background:color-mix(in srgb,#6250d6 40%,transparent)}:root{--tl-booked: #cdd3db;--tl-clash: #f2b98d;--tl-mine: var(--accent);--tl-in: color-mix(in srgb, var(--accent) 16%, transparent);--tl-seam: var(--surface)}@media (prefers-color-scheme: dark){:root{--tl-booked: #3b424d;--tl-clash: #7a4d2e}}.tl-cell.day-cell.booked,.tl-cell.day-cell.clash{background-image:none}.pl-bar{touch-action:none}.pl-wait-toggle{border:0;border-right:1px solid var(--border);text-align:left;cursor:pointer;color:var(--text);font:inherit}.pl-wait-toggle:disabled{cursor:default}.pl-demand{position:absolute;top:6px;height:18px;line-height:18px;text-align:center;font-size:11px;font-weight:600;color:#fff;background:#6250d6;border-radius:4px;transform:translate(-50%)}.pl-row.waitlist.entry .pl-label{padding-left:22px}.pl-row.waitlist.entry .pl-label .small{overflow:hidden;text-overflow:ellipsis}.pl-wait.night.past{background:color-mix(in srgb,var(--muted) 14%,transparent);color:var(--muted);text-decoration:line-through}.error-box{border:1px solid #d9534f;background:color-mix(in srgb,#d9534f 12%,transparent);border-radius:8px;padding:6px 10px;margin:8px 0}
