/* Authoritative Ruffles application tokens. JavaScript assigns only semantic classes. */
:root{--ruffles-page:#F8FBFC;--ruffles-ink:#605F5F;--ruffles-section-font:Comfortaa,"Trebuchet MS",Arial,sans-serif;--ruffles-hotel-rosie:#ACE8F3;--ruffles-hotel-rosie-lane:#BFF5FF;--ruffles-hotel-ruby:#D7F4FA;--ruffles-hotel-ruby-lane:#E2F4F8;--ruffles-hotel-rory:#C2DAC2;--ruffles-hotel-rory-lane:#D0E5D0;--ruffles-hotel-rowan:#B4AF87;--ruffles-hotel-rowan-lane:#CAC6A1;--ruffles-hotel-royale:#D16938;--ruffles-hotel-royale-lane:#F2B99F;--ruffles-status-ready:#439447;--ruffles-status-held:#FFC857;--ruffles-status-booked:#A487D0;--ruffles-status-occupied:#368EAD;--ruffles-status-cleaning:#B74F45;--ruffles-status-own-use:#596579;--ruffles-card-radius:18px 6px 14px;--ruffles-card-border:rgba(64,82,72,.18)}
/* Conditional care inputs must never be made visible by broader theme label rules. */
.ruffles-public label[hidden],.ruffles-manager label[hidden]{display:none!important}
/* Shared two-shade hotel system: a strong identity edge and a pale card surface. */
.hotel-rosie{--hotel-main:var(--ruffles-hotel-rosie);--hotel-lane:var(--ruffles-hotel-rosie-lane);--hotel-tint:var(--ruffles-hotel-rosie-lane)}.hotel-ruby{--hotel-main:var(--ruffles-hotel-ruby);--hotel-lane:var(--ruffles-hotel-ruby-lane);--hotel-tint:var(--ruffles-hotel-ruby-lane)}.hotel-rory{--hotel-main:var(--ruffles-hotel-rory);--hotel-lane:var(--ruffles-hotel-rory-lane);--hotel-tint:var(--ruffles-hotel-rory-lane)}.hotel-rowan{--hotel-main:var(--ruffles-hotel-rowan);--hotel-lane:var(--ruffles-hotel-rowan-lane);--hotel-tint:var(--ruffles-hotel-rowan-lane)}.hotel-royale{--hotel-main:var(--ruffles-hotel-royale);--hotel-lane:var(--ruffles-hotel-royale-lane);--hotel-tint:var(--ruffles-hotel-royale-lane)}
.ruffles-app :is(.hotel-rosie,.hotel-ruby,.hotel-rory,.hotel-rowan,.hotel-royale){color:var(--ruffles-ink)}
.ruffles-card.hotel-rosie,.ruffles-hotel.hotel-rosie,.ruffles-register article.hotel-rosie,.ruffles-booking-card.hotel-rosie,.ruffles-card.hotel-ruby,.ruffles-hotel.hotel-ruby,.ruffles-register article.hotel-ruby,.ruffles-booking-card.hotel-ruby,.ruffles-card.hotel-rory,.ruffles-hotel.hotel-rory,.ruffles-register article.hotel-rory,.ruffles-booking-card.hotel-rory,.ruffles-card.hotel-rowan,.ruffles-hotel.hotel-rowan,.ruffles-register article.hotel-rowan,.ruffles-booking-card.hotel-rowan,.ruffles-card.hotel-royale,.ruffles-hotel.hotel-royale,.ruffles-register article.hotel-royale,.ruffles-booking-card.hotel-royale{background:var(--hotel-tint);border:1px solid var(--ruffles-card-border);border-left:5px solid var(--hotel-main);border-radius:var(--ruffles-card-radius);box-shadow:0 5px 16px rgba(64,82,72,.08);color:var(--ruffles-ink)}
/* Five-row manager resource timeline: static structural replacement for the removed injection. */
.ruffles-resource-calendar{--timeline-day-width:56px;--timeline-header-height:42px;--timeline-lane-height:46px}.ruffles-resource-heading{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin:1.5rem 0 .75rem}.ruffles-resource-heading h2{margin:0;font-family:var(--ruffles-section-font);font-size:1.2rem;font-weight:500;line-height:1.3}.ruffles-resource-heading p{margin:0}.ruffles-resource-today{margin-left:auto;display:inline-flex;align-items:center;min-height:42px;padding:8px 13px;border-radius:13px 5px 5px;background:#D16938;color:#fff;font-weight:800;text-decoration:none}.ruffles-resource-frame{display:grid;grid-template-columns:92px minmax(0,1fr);border:1px solid var(--ruffles-card-border);border-radius:16px 5px 5px;overflow:hidden;background:#fff}.ruffles-resource-labels{display:grid;grid-template-rows:var(--timeline-header-height) repeat(5,var(--timeline-lane-height));min-width:0;border-right:1px solid var(--ruffles-card-border)}.ruffles-resource-labels>div{display:flex;align-items:center;padding:0 8px;border-bottom:1px solid rgba(64,82,72,.12);font-family:var(--ruffles-section-font);font-size:.82rem;font-weight:600;color:#26332D}.ruffles-resource-label-head{background:#FFF8F1;text-transform:uppercase;font-size:.7rem!important;font-weight:700!important;letter-spacing:.05em}.ruffles-resource-labels>div.hotel-rosie{background:var(--ruffles-hotel-rosie)}.ruffles-resource-labels>div.hotel-ruby{background:var(--ruffles-hotel-ruby)}.ruffles-resource-labels>div.hotel-rory{background:var(--ruffles-hotel-rory)}.ruffles-resource-labels>div.hotel-rowan{background:var(--ruffles-hotel-rowan)}.ruffles-resource-labels>div.hotel-royale{background:var(--ruffles-hotel-royale);color:#fff}.ruffles-resource-scroll{overflow-x:auto;overscroll-behavior-x:contain}.ruffles-resource-grid{display:grid;grid-template-rows:var(--timeline-header-height) repeat(5,var(--timeline-lane-height));width:max-content;min-width:100%}.ruffles-resource-dates,.ruffles-resource-lane{display:grid;grid-template-columns:repeat(var(--timeline-days),var(--timeline-day-width));min-width:max-content}.ruffles-resource-date{display:grid;place-items:center;align-content:center;min-width:var(--timeline-day-width);height:var(--timeline-header-height);border-right:1px solid rgba(64,82,72,.12);border-bottom:1px solid var(--ruffles-card-border);background:#FFF8F1;color:var(--ruffles-ink);font-size:.68rem;line-height:1.1;text-decoration:none}.ruffles-resource-date strong{font-size:.85rem}.ruffles-resource-date.is-today{background:#FFF1E6;box-shadow:inset 0 -3px #D16938}.ruffles-resource-date.is-outside{opacity:.62}.ruffles-resource-lane{position:relative;background:var(--hotel-lane);border-bottom:1px solid rgba(64,82,72,.12)}.ruffles-resource-block{position:relative;z-index:1;display:flex;align-items:center;gap:5px;min-width:0;margin:4px 1px;padding:3px 6px;border:0;border-right:1px solid rgba(64,82,72,.11);border-radius:0;background:transparent;color:#26332D;font-size:.68rem;line-height:1.1;text-decoration:none;overflow:hidden}.ruffles-resource-block strong,.ruffles-resource-block span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ruffles-resource-block.state-available{margin:0;border-radius:0}.ruffles-resource-block:not(.state-available){background:var(--hotel-main);border:2px solid var(--ruffles-status-held);box-shadow:none}.ruffles-resource-block.state-booked,.ruffles-resource-block.state-confirmed{border-color:var(--ruffles-status-booked)}.ruffles-resource-block.state-occupied{border-color:var(--ruffles-status-occupied)}.ruffles-resource-block.state-review,.ruffles-resource-block.state-held{border-color:var(--ruffles-status-held)}.ruffles-resource-block.state-blocked,.ruffles-resource-block.state-own-use{border-color:var(--ruffles-status-own-use)}.ruffles-resource-block.state-cleaning{border-color:var(--ruffles-status-cleaning);background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.42) 0 6px,rgba(96,95,95,.2) 6px 12px)}.ruffles-resource-block.hotel-royale{color:#fff}.ruffles-resource-block.state-cleaning{color:#26332D}
.ruffles-status{display:inline-flex;align-items:center;min-height:25px;padding:3px 8px;border:2px solid var(--ruffles-status-own-use);border-radius:12px 4px 4px;background:#fff;color:#26332D;font-size:.75rem;font-weight:800}.ruffles-status.status-provisional,.ruffles-status.status-held,.ruffles-status.status-request{border-color:var(--ruffles-status-held);background:#fff}.ruffles-status.status-confirmed,.ruffles-status.status-booked{border-color:var(--ruffles-status-booked);background:#fff}.ruffles-status.status-occupied{border-color:var(--ruffles-status-occupied);background:#fff}.ruffles-status.status-cleaning{border-color:var(--ruffles-status-cleaning);background:#fff}.ruffles-status.status-completed,.ruffles-status.status-ready{border-color:var(--ruffles-status-ready);background:#fff}.ruffles-status.status-own-use,.ruffles-status.status-blocked{border-color:var(--ruffles-status-own-use);background:#fff}
@media(max-width:640px){.ruffles-resource-calendar{--timeline-day-width:48px}.ruffles-resource-frame{grid-template-columns:78px minmax(0,1fr)}.ruffles-resource-labels>div{padding-inline:6px;font-size:.72rem}.ruffles-resource-heading{align-items:flex-start}.ruffles-resource-today{margin-left:0}}
.ruffles-availability-toggle{display:inline-flex;align-items:center;justify-content:center;min-height:42px;margin-top:6px;padding:9px 13px;border:1px solid #D16938;border-radius:14px 5px 5px;background:#FFF6F1;color:#9B4823;font:inherit;font-weight:800;cursor:pointer}.ruffles-availability-dialog{width:min(980px,calc(100% - 24px));max-height:calc(100dvh - 24px);padding:0;border:0;border-radius:22px 7px 18px;background:transparent;box-shadow:0 16px 42px rgba(64,82,72,.26)}.ruffles-availability-dialog::backdrop{background:rgba(64,82,72,.38)}.ruffles-availability-panel{position:relative;display:grid;gap:14px;margin:0;padding:24px;background:var(--ruffles-page);color:var(--ruffles-ink)}.ruffles-availability-panel h2,.ruffles-availability-panel p{margin:0}.ruffles-availability-close{position:absolute;top:10px;right:12px;width:36px;height:36px;border:0;border-radius:50%;background:transparent;color:var(--ruffles-ink);font-size:28px;cursor:pointer}.ruffles-customer-resource{grid-template-columns:112px minmax(0,1fr)}.ruffles-customer-resource .ruffles-resource-labels{grid-template-rows:var(--timeline-header-height) var(--timeline-lane-height)}.ruffles-customer-resource .ruffles-resource-grid{grid-template-rows:var(--timeline-header-height) var(--timeline-lane-height)}.ruffles-customer-resource .ruffles-resource-labels>div.hotel-rosie{background:var(--ruffles-hotel-rosie)}.ruffles-customer-resource .ruffles-resource-labels>div.hotel-ruby{background:var(--ruffles-hotel-ruby)}.ruffles-customer-resource .ruffles-resource-labels>div.hotel-rory{background:var(--ruffles-hotel-rory)}.ruffles-customer-resource .ruffles-resource-labels>div.hotel-rowan{background:var(--ruffles-hotel-rowan)}.ruffles-customer-resource .ruffles-resource-labels>div.hotel-royale{background:var(--ruffles-hotel-royale);color:#fff}.ruffles-resource-block.is-proposed{outline:3px solid #D16938;outline-offset:-3px;z-index:2}.ruffles-availability-legend{display:flex;flex-wrap:wrap;gap:8px}.ruffles-availability-legend span{display:inline-flex;align-items:center;min-height:26px;padding:3px 7px;border:2px solid var(--ruffles-status-own-use);border-radius:11px 4px 4px;background:#fff;font-size:.75rem;font-weight:800}.ruffles-availability-legend .state-available{border-color:var(--ruffles-status-ready)}.ruffles-availability-legend .state-held{border-color:var(--ruffles-status-held)}.ruffles-availability-legend .state-booked{border-color:var(--ruffles-status-booked)}.ruffles-availability-legend .state-cleaning{border-color:var(--ruffles-status-cleaning);background-image:repeating-linear-gradient(135deg,transparent 0 5px,rgba(96,95,95,.18) 5px 10px)}.ruffles-availability-legend .state-own-use{border-color:var(--ruffles-status-own-use)}@media(max-width:640px){.ruffles-availability-panel{padding:20px 14px}.ruffles-customer-resource{grid-template-columns:88px minmax(0,1fr)}}
/* Ruffles app shell: intentionally scoped to Ruffles pages only. */
html:has(.ruffles-app),body:has(.ruffles-app),body:has(.ruffles-app) .wp-site-blocks,body:has(.ruffles-app) main { background:var(--ruffles-page) !important; }

/* A booking card carries both identities: hotel on the left, operational state on the other edges. */
.ruffles-card:has(.ruffles-status.status-provisional),.ruffles-booking-card.status-provisional{border-color:var(--ruffles-status-held)!important}.ruffles-card:has(.ruffles-status.status-confirmed),.ruffles-card:has(.ruffles-status.status-booked),.ruffles-booking-card.status-confirmed{border-color:var(--ruffles-status-booked)!important}.ruffles-card:has(.ruffles-status.status-occupied),.ruffles-booking-card.status-occupied{border-color:var(--ruffles-status-occupied)!important}.ruffles-card:has(.ruffles-status.status-cleaning),.ruffles-booking-card.status-cleaning{border-color:var(--ruffles-status-cleaning)!important}.ruffles-card.hotel-rosie,.ruffles-card.hotel-ruby,.ruffles-card.hotel-rory,.ruffles-card.hotel-rowan,.ruffles-card.hotel-royale{border-left-color:var(--hotel-main)!important;background:var(--hotel-tint)!important}
body:has(.ruffles-app) { margin:0 !important; padding:0 !important; color:#605F5F; }
body:has(.ruffles-app) #wpadminbar,
body:has(.ruffles-app) .wp-site-blocks > header,
body:has(.ruffles-app) .wp-site-blocks > footer,
body:has(.ruffles-app) header.wp-block-template-part,
body:has(.ruffles-app) footer.wp-block-template-part { display:none !important; }
body:has(.ruffles-app) .wp-block-post-title { display:none !important; }
.ruffles-public-stage{margin:0 0 12px;border:1px solid rgba(96,95,95,.22);border-left:5px solid #D16938;border-radius:20px 7px 16px;background:#fffaf5}.ruffles-public-stage>summary{display:grid;grid-template-columns:30px minmax(0,1fr);gap:2px 10px;align-items:center;padding:15px;cursor:pointer;list-style:none}.ruffles-public-stage>summary::-webkit-details-marker{display:none}.ruffles-public-stage>summary span{grid-row:span 2;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--ruffles-hotel-royale-lane);color:#26332D;font-weight:700}.ruffles-public-stage>summary strong{font-size:17px}.ruffles-public-stage>summary em{font-size:13px;font-style:normal;color:#605F5F}.ruffles-public-stage>fieldset{margin:0;border:0;border-top:1px solid rgba(96,95,95,.16);border-radius:0;padding:16px;box-shadow:none}.ruffles-public-stage:not([open])>fieldset{display:none}.ruffles-public-stage>fieldset>legend{display:none}.ruffles-public-review{margin:0 0 12px;padding:12px;border-left:4px solid #9A8EAE;border-radius:12px 5px;background:#f2eef7}.ruffles-customer-tabs{margin:0 0 20px}@media(max-width:600px){.ruffles-public-stage>summary{padding:13px}.ruffles-public-stage>fieldset{padding:14px}}
.ruffles-app { width:min(1180px,calc(100% - 28px)); margin:0 auto; padding:16px 0 calc(104px + env(safe-area-inset-bottom)); box-sizing:border-box; overflow-x:clip; }
.ruffles-app *, .ruffles-app *::before, .ruffles-app *::after { box-sizing:border-box; }
.ruffles-app-header { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 16px; padding:12px 14px; background:#FFF8F1; border:1px solid rgba(209,105,56,.28); border-radius:26px 9px 9px; box-shadow:0 4px 16px rgba(96,95,95,.10); }
.ruffles-app-brand { display:flex; flex-direction:column; align-items:flex-start; gap:2px; min-width:0; color:#605F5F; text-decoration:none; line-height:1.12; }
.ruffles-app-brand > img { display:block; width:190px; max-width:100%; height:auto; max-height:72px; object-fit:contain; object-position:left center; }
.ruffles-app-brand-copy { display:flex; flex-direction:column; min-width:0; padding-left:4px; }
.ruffles-app-brand-copy > span { color:#605F5F; font-size:15px; font-weight:750; }
.ruffles-app-brand small { margin-top:3px; color:#605F5F; font-size:10px; font-weight:600; }
.ruffles-app-header-actions { display:flex; align-items:center; gap:8px; }
.ruffles-app-switcher { display:inline-flex; gap:4px; padding:4px; border:1px solid rgba(209,105,56,.30); border-radius:15px 6px 6px; background:#fff; }
.ruffles-app-switcher a,.ruffles-app-switcher span { display:inline-flex; align-items:center; justify-content:center; min-height:42px; padding:5px 10px; border-radius:11px 5px 5px; color:#605F5F; font-size:12px; font-weight:750; text-decoration:none; }
.ruffles-app-switcher .is-active { background:#E8BEA2; color:#26332D; }
.ruffles-app .ruffles { max-width:none; margin:0; padding:0; }
.ruffles-app .ruffles-manager > header { display:none; }
.ruffles-app .ruffles-public > header { margin:4px 2px 18px; }
.ruffles-app .ruffles-public > header h1 { color:#26332D; }
.ruffles-app .ruffles-card,.ruffles-app .ruffles-hotel,.ruffles-app .ruffles-visit,.ruffles-app .ruffles-summary > div { border:1px solid rgba(96,95,95,.16); box-shadow:0 6px 20px rgba(96,95,95,.09); }
.ruffles-app :is(h1,h2,h3){font-weight:550}.ruffles-account-editor{max-width:760px;gap:12px}.ruffles-account-editor fieldset{display:grid;gap:12px;padding:18px;border-color:rgba(96,95,95,.18);background:#fff}.ruffles-account-editor legend{padding:0 6px;font-size:1.15rem;font-weight:600}.ruffles-account-editor label{gap:5px}.ruffles-account-editor textarea{min-height:78px}.ruffles-account .ruffles-cards{gap:14px}.ruffles-account .ruffles-card{padding:16px}.ruffles-account-editor input[type="number"]{max-width:12rem}.ruffles-account-editor :is(input[type="number"],input[type="tel"],input[type="email"]){min-height:42px}@media(min-width:680px){.ruffles-account-editor fieldset:has(input[name="hens"]){grid-template-columns:repeat(3,minmax(0,1fr))}.ruffles-account-editor fieldset:has(input[name="hens"]) legend,.ruffles-account-editor fieldset:has(input[name="hens"]) label:not(:has(input[type="number"])),.ruffles-account-editor fieldset:has(input[name="hens"]) .ruffles-form-hint,.ruffles-account-editor fieldset:has(input[name="hens"]) button{grid-column:1/-1}}

/* Keep accessible fieldsets while presenting their headings inside the form card. */
.ruffles-app .ruffles-form fieldset,.ruffles-app .ruffles-emergency-fields{position:relative;padding:20px 16px 16px;border:1px solid rgba(96,95,95,.18);outline:0;box-shadow:none}.ruffles-app .ruffles-form legend,.ruffles-app .ruffles-emergency-fields legend{float:none;width:100%;margin:0 0 10px;padding:0;border:0;color:var(--ruffles-ink);font-family:var(--ruffles-section-font);font-size:1rem;font-weight:600;line-height:1.35}.ruffles-app .ruffles-fieldset-heading{display:flex;align-items:baseline;gap:7px;margin:0 0 12px;color:var(--ruffles-ink);font-family:var(--ruffles-section-font);font-size:1rem;font-weight:600;line-height:1.35}.ruffles-app .ruffles-fieldset-heading small{color:var(--ruffles-ink);font-family:inherit;font-size:.8em;font-weight:600}.ruffles-app .ruffles-form label{gap:5px;font-weight:550}.ruffles-app .ruffles-form :is(input,select,textarea){min-height:42px;padding:9px 10px}.ruffles-email-test .ruffles-check{font-size:.9rem}.ruffles-email-test .ruffles-button{width:max-content;min-width:220px}

/* One shared hotel/status treatment, deliberately after legacy styles. */
.ruffles-app{--ruffles-button-radius:18px 6px 10px;--ruffles-card-radius:16px 6px 12px;--ruffles-display-font:Georgia,"Times New Roman",serif;background:#F8FBFC}.ruffles-app :is(h1,h2,h3){font-family:var(--ruffles-display-font);font-weight:600;color:var(--ruffles-ink)}.ruffles-app :is(button,.ruffles-button,.ruffles-secondary,.ruffles-tabs a){font-family:inherit;font-weight:600}.ruffles-app :is(.ruffles-button,.ruffles-secondary,.ruffles-tabs a,.ruffles-inline button,button){border-radius:var(--ruffles-button-radius)}.ruffles-app .ruffles-resource-block:not(.state-available){background:var(--hotel-tint);border:2px solid var(--ruffles-status-held);border-left:4px solid var(--hotel-main);border-radius:8px 3px 6px;box-shadow:none}.ruffles-app .ruffles-resource-block.state-booked,.ruffles-app .ruffles-resource-block.state-confirmed{border-color:var(--ruffles-status-booked);border-left-color:var(--hotel-main)}.ruffles-app .ruffles-resource-block.state-occupied{border-color:var(--ruffles-status-occupied);border-left-color:var(--hotel-main)}.ruffles-app .ruffles-resource-block.state-review,.ruffles-app .ruffles-resource-block.state-held{border-color:var(--ruffles-status-held);border-left-color:var(--hotel-main)}.ruffles-app .ruffles-resource-block.state-cleaning{border-color:var(--ruffles-status-cleaning);border-left-color:var(--hotel-main);background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.52) 0 6px,rgba(96,95,95,.25) 6px 12px)}.ruffles-app .ruffles-hotel{position:relative;border:2px solid var(--hotel-main);border-left-width:5px;box-shadow:0 4px 12px rgba(50,55,60,.12)}.ruffles-app .ruffles-hotel input[type="radio"]{position:absolute;inline-size:1px;block-size:1px;opacity:0;inset:12px auto auto 12px}.ruffles-app .ruffles-hotel:has(input:checked){outline:3px solid #D16938;outline-offset:2px}.ruffles-app .ruffles-visit h2{color:#26332D}.ruffles-app .ruffles-emergency-preview{margin:0;padding:9px 11px;border-left:4px solid #D16938;background:#FFF8F1;color:#26332D}.ruffles-app .ruffles-success-card{border:2px solid var(--ruffles-status-held);border-left:5px solid var(--hotel-main);background:var(--hotel-tint)}
.ruffles-app .ruffles-secondary{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border:1px solid #D16938;background:#fff;color:#9B4823;text-decoration:none;font:inherit;font-weight:700;cursor:pointer}.ruffles-app .ruffles-secondary:hover,.ruffles-app .ruffles-secondary:focus-visible{background:#FFF1E6;color:#7C3517}.ruffles-app .ruffles-visit{background:#FFF1E6;color:#26332D;border-left:5px solid #D16938}.ruffles-app .ruffles-visit :is(h2,h3){font-family:var(--ruffles-display-font,inherit);color:#26332D}.ruffles-app .ruffles-visit p{color:#26332D}
/* One booking-card anatomy for My Ruffles, Hotel Office and manager detail. */
.ruffles-app .ruffles-card:has(.ruffles-status),.ruffles-app .ruffles-booking-card{border:2px solid var(--ruffles-status-own-use);border-left:5px solid var(--hotel-main);border-radius:var(--ruffles-card-radius);box-shadow:0 5px 16px rgba(64,82,72,.10);color:var(--ruffles-ink)}.ruffles-app .ruffles-card.state-provisional,.ruffles-app .ruffles-card.state-held,.ruffles-app .ruffles-card.state-request,.ruffles-app .ruffles-card:has(.status-provisional),.ruffles-app .ruffles-card:has(.status-held),.ruffles-app .ruffles-card:has(.status-request){border-color:var(--ruffles-status-held)}.ruffles-app .ruffles-card.state-confirmed,.ruffles-app .ruffles-card.state-booked,.ruffles-app .ruffles-card:has(.status-confirmed),.ruffles-app .ruffles-card:has(.status-booked){border-color:var(--ruffles-status-booked)}.ruffles-app .ruffles-card.state-occupied,.ruffles-app .ruffles-card:has(.status-occupied){border-color:var(--ruffles-status-occupied)}.ruffles-app .ruffles-card.state-cleaning,.ruffles-app .ruffles-card:has(.status-cleaning){border-color:var(--ruffles-status-cleaning)}.ruffles-app .ruffles-card.state-ready,.ruffles-app .ruffles-card.state-available,.ruffles-app .ruffles-card:has(.status-ready){border-color:var(--ruffles-status-ready)}.ruffles-app .ruffles-card :is(.ruffles-status){margin:0 0 12px;padding:5px 10px;border-width:2px;border-radius:12px 4px 7px;font-size:.78rem;line-height:1.2}.ruffles-app .ruffles-status.status-provisional,.ruffles-app .ruffles-status.status-held,.ruffles-app .ruffles-status.status-request{background:#FFF4D6;color:#5A470A}.ruffles-app .ruffles-status.status-confirmed,.ruffles-app .ruffles-status.status-booked{background:#F0EBF8;color:#4E4166}.ruffles-app .ruffles-status.status-occupied{background:#E4F1F6;color:#245C71}.ruffles-app .ruffles-status.status-cleaning{background:#F9E8E5;color:#7D332D}.ruffles-app .ruffles-status.status-ready,.ruffles-app .ruffles-status.status-completed{background:#E7F4E8;color:#245E2A}

/* Availability is intentionally a horizontally scrollable date grid: each day keeps a usable
   physical width on phones instead of collapsing into vertical stripes. */
.ruffles-availability-panel .ruffles-resource-scroll{min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}.ruffles-customer-resource{min-width:0}.ruffles-customer-resource .ruffles-resource-grid{width:calc(var(--timeline-day-width) * var(--timeline-days));min-width:calc(var(--timeline-day-width) * var(--timeline-days))}.ruffles-customer-resource .ruffles-resource-dates,.ruffles-customer-resource .ruffles-resource-lane{width:calc(var(--timeline-day-width) * var(--timeline-days));grid-auto-columns:var(--timeline-day-width)}.ruffles-resource-block.hotel-royale{color:#26332D;text-shadow:none}.ruffles-resource-block.hotel-royale.state-held,.ruffles-resource-block.hotel-royale.state-review{color:#26332D;background:#F2B99F}.ruffles-app .ruffles-form :is(fieldset,details>fieldset)>legend{display:block;position:static;float:none;box-sizing:border-box;max-width:100%;padding:0 0 10px;margin:0;color:#26332D;background:transparent;border:0}
.ruffles-app-nav { position:fixed; z-index:99990; left:50%; bottom:max(9px,env(safe-area-inset-bottom)); display:grid; grid-template-columns:repeat(5,1fr); width:min(580px,calc(100% - 22px)); transform:translateX(-50%); padding:7px; background:rgba(255,250,245,.97); border:1px solid rgba(209,105,56,.28); border-radius:20px; box-shadow:0 9px 28px rgba(96,95,95,.20); backdrop-filter:blur(8px); }
.ruffles-today-controls{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin:0 0 16px;padding:16px;border:1px solid rgba(209,105,56,.25);border-radius:24px 7px 7px;background:#FFF8F1}.ruffles-today-controls h2{margin:0 0 9px}.ruffles-today-controls nav,.ruffles-today-actions{display:flex;flex-wrap:wrap;gap:7px}.ruffles-today-controls a{display:inline-flex;align-items:center;min-height:42px;padding:8px 12px;border:1px solid rgba(209,105,56,.35);border-radius:15px 5px 5px;background:#fff;color:#605F5F;text-decoration:none;font-size:13px}.ruffles-today-controls nav a.is-active,.ruffles-today-actions a:first-child{background:var(--ruffles-hotel-royale-lane);color:#26332D}@media(max-width:600px){.ruffles-today-controls{align-items:stretch;flex-direction:column}.ruffles-today-controls nav{display:grid;grid-template-columns:repeat(2,1fr)}.ruffles-today-controls nav a{justify-content:center}.ruffles-today-actions a{flex:1;justify-content:center}}
.ruffles-app-nav a { display:flex; flex-direction:column; align-items:center; justify-content:center; min-width:0; min-height:50px; padding:5px 2px; border-radius:14px 5px 5px; color:#605F5F; font-size:9px; font-weight:750; line-height:1.15; text-decoration:none; }
.ruffles-app-nav a b { display:block; margin-bottom:3px; font-size:18px; line-height:1; font-weight:500; }
.ruffles-app-nav a.is-active { background:#E8BEA2; color:#26332D; }
.ruffles-app a:focus-visible,.ruffles-app button:focus-visible { outline:3px solid #FFC857; outline-offset:3px; }
.ruffles-app .ruffles-install-button { min-height:42px; padding:8px 12px; border:1px solid rgba(209,105,56,.35); border-radius:999px; background:#FFF8F1; color:#605F5F; font:inherit; font-weight:700; cursor:pointer; }
.ruffles-app .ruffles-install-help { margin:0 0 12px; padding:10px 12px; border-left:4px solid #E8BEA2; border-radius:12px 5px 5px; background:#FFF8F1; color:#605F5F; font-size:13px; }
.ruffles-app .ruffles-offline-notice { margin:0 0 12px; padding:10px 12px; border-left:4px solid #D89062; border-radius:12px 5px 5px; background:#FFF0E8; color:#605F5F; font-size:13px; }
.ruffles-app .ruffles-offline-notice[hidden] { display:none; }
@media(max-width:700px) { .ruffles-app { width:calc(100% - 16px); padding-top:10px; padding-bottom:calc(100px + env(safe-area-inset-bottom)); } .ruffles-app-header { align-items:flex-start; flex-wrap:wrap; padding:10px; gap:8px; } .ruffles-app-brand > img { width:172px; max-height:65px; } .ruffles-app-brand-copy > span { font-size:13px; } .ruffles-app-header-actions { width:100%; justify-content:space-between; } .ruffles-app-switcher { flex:1; } .ruffles-app-switcher a,.ruffles-app-switcher span { flex:1; padding-inline:7px; } .ruffles-app-nav { left:8px; right:8px; bottom:max(7px,env(safe-area-inset-bottom)); width:auto; transform:none; } }
.ruffles-western-farm-link{display:inline-flex;align-items:center;min-height:36px;padding:7px 10px;border:1px solid rgba(209,105,56,.45);border-radius:12px 4px 4px;color:#a64e25;text-decoration:none;font-size:.82rem;font-weight:700}.ruffles-western-farm-link:hover,.ruffles-western-farm-link:focus-visible{background:#fff1e6;color:#7c3517}.ruffles-app-header-actions{gap:8px;align-items:center}@media(max-width:700px){.ruffles-western-farm-link{font-size:.76rem;padding:6px 8px}}
.ruffles-terms{max-width:820px}.ruffles-terms header{margin-bottom:24px}.ruffles-terms-section{margin:22px 0;padding:20px;border:1px solid rgba(96,95,95,.16);border-left:4px solid #d16938;border-radius:18px 5px 12px;background:#fffaf5}.ruffles-terms-section h2{margin:0 0 12px;font-size:1.25rem}.ruffles-terms-section p{margin:0 0 12px;line-height:1.65}.ruffles-terms-section p:last-child{margin-bottom:0}.ruffles-terms .ruffles-actions{align-items:center}.ruffles-terms .ruffles-secondary{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border:1px solid #d16938;border-radius:18px 7px 7px;background:#fffaf5;color:#a64e25;text-decoration:none;font-weight:700}@media(max-width:600px){.ruffles-terms-section{padding:16px}.ruffles-terms .ruffles-actions>*{width:100%}}

.ruffles-booking-flow{max-width:720px;margin:0 auto}.ruffles-flow-step{display:grid;gap:14px;padding:22px;background:#FBF7F0;border:1px solid rgba(209,105,56,.25);border-radius:28px 8px 18px;box-shadow:0 7px 22px rgba(96,95,95,.08)}.ruffles-flow-step[hidden]{display:none!important}.ruffles-flow-step h2{margin:0}.ruffles-flow-count{margin:0;color:#D16938;font-size:13px;font-weight:700}.ruffles-flow-results,.ruffles-flow-flocks,.ruffles-flow-hotels{display:grid;gap:9px}.ruffles-flow-results button,.ruffles-flow-flocks button,.ruffles-flow-hotel{display:grid;gap:2px;width:100%;min-height:54px;padding:11px 13px;border:1px solid rgba(96,95,95,.2);border-radius:18px 6px 6px;background:#fff;color:#605F5F;text-align:left;font:inherit}.ruffles-flow-results button span,.ruffles-flow-hotel span{font-size:13px}.ruffles-flow-hotel.is-selected{border:4px solid #D16938;background:#E8BEA2}.ruffles-flow-new,.ruffles-flow-change,.ruffles-flow-back{min-height:44px;padding:10px 16px;border:1px solid #D16938;border-radius:18px 6px 6px;background:#fff;color:#605F5F;font:inherit}.ruffles-flow-new{width:max-content}.ruffles-customer-summary{display:grid;gap:5px}.ruffles-customer-summary button{width:max-content;margin-top:6px}.ruffles-flow-actions{display:flex;gap:12px;justify-content:space-between}.ruffles-flow-numbers,.ruffles-flow-dates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.ruffles-flow-numbers{grid-template-columns:repeat(3,minmax(0,1fr))}.ruffles-flow-summary{padding:16px;border-left:4px solid #9A8EAE;border-radius:18px 6px 6px;background:#F2EEF7}.ruffles-flow-selection{padding:10px 12px;background:#FFF6D9;border-left:4px solid #F1BF4B;border-radius:14px 5px 5px}.ruffles-flow-timeline{overflow-x:auto;border:1px solid rgba(96,95,95,.18);border-radius:18px 6px 6px;background:#fff}.ruffles-flow-timeline-head,.ruffles-flow-timeline-row{display:grid;grid-template-columns:126px repeat(42,42px);min-width:max-content}.ruffles-flow-timeline-head{position:sticky;top:0;background:#FBF7F0;z-index:1}.ruffles-flow-timeline-head>*{padding:7px 2px;border-bottom:1px solid rgba(96,95,95,.15);font-size:10px;text-align:center}.ruffles-flow-timeline-row>strong{position:sticky;left:0;z-index:1;display:flex;align-items:center;padding:8px;background:#FBF7F0;font-size:12px}.ruffles-flow-timeline-row>button{height:38px;border:0;border-right:1px solid rgba(96,95,95,.1);font-size:10px}.ruffles-flow-timeline-row>button.state-available{background:var(--ruffles-hotel-rosie-lane);color:#605F5F;cursor:pointer}.ruffles-flow-timeline-row.hotel-ruby>button.state-available{background:var(--ruffles-hotel-ruby-lane)}.ruffles-flow-timeline-row.hotel-rory>button.state-available{background:var(--ruffles-hotel-rory-lane)}.ruffles-flow-timeline-row.hotel-rowan>button.state-available{background:var(--ruffles-hotel-rowan-lane)}.ruffles-flow-timeline-row.hotel-royale>button.state-available{background:var(--ruffles-hotel-royale-lane);color:#26332D}.ruffles-flow-timeline-row>button.state-booked{background:#F2EEF7;border-top:4px solid #9A8EAE}.ruffles-flow-timeline-row>button.state-held{background:#FFF6D9;border-top:4px solid #F1BF4B}.ruffles-flow-timeline-row>button.state-cleaning{background:repeating-linear-gradient(135deg,#fff 0 6px,#ddd 6px 12px);border-top:4px solid #605F5F}.ruffles-flow-timeline-row>button.state-blocked{background:#FFF1EF;border-top:4px solid #B74F45}.ruffles-flow-timeline-row>button.is-range{outline:3px solid #D16938;outline-offset:-3px;z-index:2}@media(max-width:600px){.ruffles-flow-step{padding:18px}.ruffles-flow-actions{flex-direction:column-reverse}.ruffles-flow-actions>*{width:100%}.ruffles-flow-dates{grid-template-columns:1fr}.ruffles-flow-numbers{gap:8px}.ruffles-flow-numbers input{min-width:0}.ruffles-flow-timeline-head,.ruffles-flow-timeline-row{grid-template-columns:108px repeat(42,40px)}}
.ruffles-today-summary{display:grid;grid-template-columns:repeat(4,minmax(62px,1fr));gap:6px;flex:1;max-width:420px}.ruffles-today-summary>div{display:grid;gap:1px;min-width:0;padding:8px 7px;border-radius:12px 4px 4px;background:#fff;text-align:center}.ruffles-today-summary strong{font-size:1.2rem;line-height:1}.ruffles-today-summary span{font-size:.68rem;line-height:1.15}.ruffles-resource-date.is-period-focus{background:#F1BF4B;color:#605F5F;box-shadow:inset 0 -4px 0 #D16938}@media(max-width:600px){.ruffles-today-summary{max-width:none}.ruffles-today-summary>div{padding:8px 4px}.ruffles-today-summary span{font-size:.62rem}}
.ruffles-tasks{margin:26px 0}.ruffles-tasks>h2{margin-bottom:4px}.ruffles-tasks>p{margin-top:0}.ruffles-task-group{margin:20px 0}.ruffles-task-group h3{margin:0 0 10px}.ruffles-task-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.ruffles-task-card{padding:18px;border:1px solid var(--ruffles-card-border);border-left:5px solid #D89062;border-radius:22px 5px 5px;background:#FFF8F1;box-shadow:0 6px 18px rgba(64,82,72,.08)}.ruffles-task-card.task-urgent{border-left-color:#B74F45}.ruffles-task-card.task-coming{border-left-color:#9A8EAE}.ruffles-task-card h4{margin:.55rem 0}.ruffles-task-card p{margin:.55rem 0}.ruffles-task-meta{font-size:.88rem;font-weight:700}.ruffles-task-urgency{display:inline-block;padding:4px 8px;border-radius:10px 3px 3px;background:#FFF0E8;font-size:.74rem;font-weight:800}.task-urgent .ruffles-task-urgency{background:#FFF1EF}.task-coming .ruffles-task-urgency{background:#F2EEF7}.ruffles-task-card form{margin:12px 0 0}.ruffles-task-card .ruffles-button{display:inline-flex;text-decoration:none}.ruffles-task-empty{padding:16px;border:1px dashed var(--ruffles-card-border);border-radius:18px 5px 5px}
.ruffles-cleaning-action{display:inline-flex;margin:8px 6px 0 0}.ruffles-cleaning-action .ruffles-button{min-height:38px;padding:8px 11px;font-size:.82rem}.ruffles-cleaning-status{font-weight:800;color:#605F5F}.ruffles-cleaning-extend{margin-top:10px}.ruffles-cleaning-extend summary{cursor:pointer;font-weight:700}.ruffles-cleaning-extend label{display:grid;gap:3px;margin-top:8px;font-size:.82rem}.ruffles-cleaning-extend input{min-height:36px}
.ruffles-cleaning-panel{position:fixed;z-index:100001;inset:0;display:grid;place-items:end center;padding:16px;background:rgba(64,82,72,.35);overflow-y:auto}.ruffles-cleaning-panel[hidden]{display:none}.ruffles-cleaning-panel>div{position:relative;width:min(620px,100%);max-height:calc(100dvh - 32px);padding:22px;border-radius:28px 7px 7px;background:#FFF8F1;box-shadow:0 -8px 32px rgba(64,82,72,.2);overflow-y:auto}.ruffles-cleaning-panel form{display:inline-flex;margin:8px 8px 0 0}.ruffles-cleaning-panel details{margin-top:12px}.ruffles-cleaning-panel label{display:grid;gap:4px;margin-top:8px}.ruffles-cleaning-close{position:absolute;right:12px;top:10px;border:0;background:none;color:#605F5F;font-size:28px}
.ruffles-card.state-provisional,.ruffles-card.state-held,.ruffles-card.state-request,.ruffles-register article.state-provisional,.ruffles-register article.state-held,.ruffles-register article.state-request{border-color:var(--ruffles-status-held)!important}.ruffles-card.state-confirmed,.ruffles-card.state-booked,.ruffles-register article.state-confirmed,.ruffles-register article.state-booked{border-color:var(--ruffles-status-booked)!important}.ruffles-card.state-occupied,.ruffles-register article.state-occupied{border-color:var(--ruffles-status-occupied)!important}.ruffles-card.state-cleaning,.ruffles-register article.state-cleaning{border-color:var(--ruffles-status-cleaning)!important}.ruffles-card.state-available,.ruffles-card.state-ready,.ruffles-register article.state-available,.ruffles-register article.state-ready{border-color:var(--ruffles-status-ready)!important}.ruffles-card.state-blocked,.ruffles-card.state-own-use,.ruffles-register article.state-blocked,.ruffles-register article.state-own-use{border-color:var(--ruffles-status-own-use)!important}.ruffles-card.hotel-rosie,.ruffles-card.hotel-ruby,.ruffles-card.hotel-rory,.ruffles-card.hotel-rowan,.ruffles-card.hotel-royale,.ruffles-register article.hotel-rosie,.ruffles-register article.hotel-ruby,.ruffles-register article.hotel-rory,.ruffles-register article.hotel-rowan,.ruffles-register article.hotel-royale{border-left-color:var(--hotel-main)!important;background:var(--hotel-tint)!important}
@media(max-width:700px){.ruffles-cleaning-panel{place-items:center;padding:12px}.ruffles-cleaning-panel>div{max-height:calc(100dvh - 24px);padding:18px}.ruffles-cleaning-panel form{display:flex;width:100%;margin:8px 0 0}.ruffles-cleaning-panel form .ruffles-button{width:100%;justify-content:center}.ruffles-cleaning-panel details{margin-top:14px}.ruffles-cleaning-panel details form{display:block}.ruffles-cleaning-panel details .ruffles-button{margin-top:10px}}

/* Shared card anatomy: legends and headings stay inside every enclosing surface. */
.ruffles-app :is(.ruffles-card,.ruffles-booking-detail,.ruffles-settings-section,.ruffles-public-stage>fieldset,.ruffles-form fieldset){box-sizing:border-box;padding:20px;border-radius:16px}.ruffles-app :is(.ruffles-card,.ruffles-booking-detail,.ruffles-settings-section) :is(h2,h3){margin:0 0 12px;font-family:var(--ruffles-display-font,inherit);color:#26332D}.ruffles-app .ruffles-form fieldset>legend{font-family:var(--ruffles-section-font);font-size:1rem;font-weight:600;line-height:1.35}.ruffles-app .ruffles-customer-resource :is(time,button){min-width:var(--timeline-day-width);box-sizing:border-box}.ruffles-app .ruffles-resource-block.hotel-royale :is(.ruffles-resource-label,.ruffles-resource-meta){color:#26332D}.ruffles-app .ruffles-callout-visit :is(h2,h3){color:#26332D}
.ruffles-app.ruffles-headings-ready .ruffles-form fieldset>legend,.ruffles-app.ruffles-headings-ready .ruffles-emergency-fields>legend{display:none!important}

/* My flock is a summary screen first. The individual server-rendered editors are
   disclosed on request, so several long forms never compete for space. */
.ruffles-account .ruffles-cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));align-items:start}.ruffles-account .ruffles-card{align-self:start}.ruffles-account .ruffles-account-editor{margin-top:14px}.ruffles-account .ruffles-flock-toggle{width:auto;margin:0 0 10px}.ruffles-account .ruffles-account-editor fieldset[hidden]{display:none!important}

/* Operational times are quiet metadata, not a second booking status. */
.ruffles-app .ruffles-stay-times{margin:.45rem 0;color:var(--ruffles-muted,#605F5F);font-size:.94rem}.ruffles-app .ruffles-stay-times strong{color:var(--ruffles-ink)}

/* A one-day range is still a complete link with a descriptive aria-label.  Suppress
   the redundant secondary prompt so narrow blocks show a compact status, never B… Vi…. */
.ruffles-app .ruffles-resource-block>span{display:none}
.ruffles-app .ruffles-resource-labels>div:not(.ruffles-resource-label-head){font-family:var(--ruffles-section-font);font-weight:600;letter-spacing:.01em}
