.guest-policy {font-size:13px;line-height:1.55;color:var(--muted);margin:0 0 16px}
.capacity-notice {padding:22px;border:1px solid #d8c6a8;border-radius:12px;background:#fcf7ed;overflow-wrap:anywhere}
.capacity-notice h3 {font-size:19px;line-height:1.4}
.capacity-notice p {margin:10px 0 18px;font-size:14px;line-height:1.65;color:#665a43}
.capacity-notice .button {max-width:100%;white-space:normal}
.room-capacity-warning {color:#805b24;font-weight:600;font-size:15px;line-height:1.5;margin-bottom:6px}
.empty-actions {display:flex;flex-wrap:wrap;justify-content:center;gap:12px}
#search {scroll-margin-top:16px}
/* Keep intrinsic widths inside their own component, especially fieldsets. */
html {-webkit-text-size-adjust:100%;text-size-adjust:100%}
body {min-width:0}
fieldset {min-inline-size:0}
.results-main,.filters,.room-body,.room-card>* ,.search-form>*,.form-grid>* {min-width:0}
.filters fieldset {width:100%;max-width:100%}
.room-title-real,.room-description,.price-caption,.dialog-description,#edit-title {overflow-wrap:anywhere}
.form-grid {grid-template-columns:repeat(2,minmax(0,1fr))}
.room-gallery,.admin-table-scroll,.source-table {min-width:0;max-width:100%;overscroll-behavior-x:contain}
.mobile-category-filter,.mobile-call {display:none}
body:has(dialog[open]) {overflow:hidden}

@media (max-width:780px) {
  .wrap {width:calc(100% - 32px)}
  .demo-strip {padding:9px 16px;font-size:11px;line-height:1.5}
  .demo-strip a {font-size:11px}
  .site-header {height:auto;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding-block:18px}
  .brand {gap:8px;min-width:0}
  .brand>span {font-size:17px;letter-spacing:1px}
  .brand svg {width:30px;height:34px}
  .mobile-call {display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 12px;border:1px solid #c8d4c4;border-radius:8px;font-size:13px;font-weight:600}
  .site-header nav {grid-column:1/-1;width:100%;min-width:0;display:grid;grid-template-columns:1fr 1.45fr .85fr;gap:6px;font-size:13px}
  .site-header nav>a,.site-header .nav-button {display:flex;align-items:center;justify-content:center;min-width:0;min-height:44px;padding:8px 6px;background:#edf1e7;border-radius:7px;text-align:center;line-height:1.3}
  .site-header nav .active {background:var(--green);color:white}
  .site-header nav .active:after {display:none}
  .site-header .count {flex:none}
  .hero {height:auto;min-height:280px;border-radius:14px}
  .hero-content {padding:28px 22px 46px}
  .hero-content h1 {font-size:clamp(30px,8.5vw,42px);line-height:1.1;letter-spacing:-.8px;margin-bottom:16px}
  .hero-content>p {font-size:14px;line-height:1.55}
  .hero-location {font-size:11px;margin-top:18px;line-height:1.5}
  .hero-image {background-position:60% center}
  .eyebrow {font-size:11px;letter-spacing:2px}
  .search-section {margin-top:-22px;padding:0}
  .search-form {grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 12px;padding:16px;align-items:start}
  .search-field {padding:0;border:0;min-width:0}
  .search-field>span,.guest-field>span {font-size:11px;letter-spacing:1px;margin-bottom:6px}
  .search-field input {display:block;min-width:0;max-width:100%;min-height:44px;padding:8px 6px;font-size:16px;background:#f5f7f1;border:1px solid #dce3d6;border-radius:7px}
  .guest-field {grid-column:1/-1;padding:0;min-width:0}
  .guest-field>button {min-height:46px;font-size:16px;padding:10px 12px;border:1px solid #dce3d6;border-radius:7px;background:#f5f7f1;gap:12px;text-align:left}
  .search-button {grid-column:1/-1;width:100%;min-height:50px;height:auto;font-size:16px;padding:13px}
  .search-note {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;font-size:11px;line-height:1.5;margin-top:14px}
  .search-note span {max-width:none;min-width:0}
  .guest-popover {position:static;width:100%;max-width:100%;margin-top:12px;padding:14px;box-shadow:none;border-radius:8px}
  .guest-row {gap:12px;margin-bottom:18px}
  .guest-row>div:first-child {min-width:0}
  .guest-row small {font-size:12px}
  .stepper {gap:10px;flex:none}
  .stepper button {width:44px;height:44px;font-size:22px}
  .age-field {gap:12px;font-size:14px}
  .age-field select {min-height:44px;font-size:16px;min-width:0}
  .results-section {padding-top:34px;scroll-margin-top:16px}
  .section-heading {display:block;margin-bottom:18px}
  .section-heading h2 {max-width:100%;font-size:clamp(28px,7vw,34px);line-height:1.15}
  .section-heading p {font-size:14px;line-height:1.5}
  .sort-label {margin-top:20px;display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:12px;font-size:13px;min-width:0}
  .sort-label select {min-width:0;max-width:70%;min-height:44px;font-size:16px;padding:8px 2px}
  .results-layout {display:block;min-width:0}
  .filters {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:22px;min-width:0}
  .filters #category-options {display:none}
  .mobile-category-filter {display:flex;flex-direction:column;gap:8px;min-width:0;font-size:12px;font-weight:600}
  .filters fieldset:nth-of-type(2) {display:block;width:100%;min-width:0;margin:0;padding:0;overflow:visible}
  .filters fieldset:nth-of-type(2) legend {display:block;font-size:12px;margin-bottom:8px}
  #category-mobile,#building-filter {display:block;width:100%;min-width:0;max-width:100%;min-height:48px;padding:10px 8px;border:1px solid #cbd7c3;border-radius:8px;background:white;color:var(--dark);font-size:16px;font-weight:400}
  .results-info {font-size:13px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
  .demo-label {font-size:11px}
  .room-list {gap:22px}
  .room-card {display:block;width:100%;min-width:0;min-height:0;border-radius:14px}
  .room-photo {width:100%;min-height:0;aspect-ratio:16/10;max-height:300px}
  .room-photo .no-photo {min-height:0}
  .no-photo span {font-size:13px}
  .room-photo button {min-height:44px;padding:10px 12px;font-size:13px;max-width:calc(100% - 28px)}
  .photo-label {font-size:12px;padding:6px 10px;max-width:calc(100% - 28px);white-space:normal}
  .room-body {padding:20px}
  .room-type {font-size:11px;letter-spacing:.8px;line-height:1.6}
  .room-body .room-title-real {font-size:24px!important;line-height:1.25;margin:8px 0 12px}
  .room-description {font-size:14px;line-height:1.65;max-width:100%}
  .features {font-size:12px;line-height:1.6;gap:6px 12px;margin:16px 0}
  .features span {white-space:normal;max-width:100%}
  .room-bottom {flex-direction:column;align-items:stretch;gap:16px;padding-top:16px}
  .room-bottom>div {min-width:0;width:100%}
  .room-bottom .button {width:100%;min-height:48px;flex:none;font-size:15px;padding:12px 16px;white-space:normal}
  .total-price {font-size:27px;overflow-wrap:anywhere}
  .room-price-pending {font-size:18px}
  .food-included,.price-caption {font-size:13px;line-height:1.55}
  .data-note {font-size:12px;line-height:1.7;margin-top:22px}
  .button {min-height:48px;font-size:15px}
  .button.small {min-height:44px;font-size:14px}
  .text-button {font-size:13px;min-height:44px;padding:8px 0}
  .story-items {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
  .story-items h3 {font-size:15px}
  .story-items p {font-size:13px}
  footer {font-size:12px}
  footer>div {font-size:12px;flex-wrap:wrap;gap:8px 16px}
  footer a {display:inline-flex;align-items:center;min-height:44px}

  /* Checkout and room editor remain within the visual viewport. */
  dialog {width:calc(100% - 24px);max-width:600px;max-height:calc(100dvh - 24px);padding:28px 20px 22px;overflow-y:auto;overscroll-behavior:contain;border-radius:14px}
  .close-dialog {right:8px;top:8px;display:grid;place-items:center;width:44px;height:44px;padding:0;z-index:1;background:#fcfcf8;border-radius:50%}
  #dialog-title,#edit-title {font-size:26px;line-height:1.25;margin-right:28px;overflow-wrap:anywhere}
  .dialog-description,.description-text,.modal-features {font-size:14px}
  .form-grid {grid-template-columns:minmax(0,1fr);gap:16px}
  .form-grid .wide {grid-column:auto}
  .form-grid label {font-size:14px}
  .form-grid input,.form-grid textarea {font-size:16px;min-width:0;min-height:48px;padding:12px}
  .guest-meals {grid-template-columns:minmax(0,1fr);gap:10px}
  .guest-meals label {grid-template-columns:22px minmax(0,1fr);font-size:15px;min-height:72px;padding:14px}
  .guest-meals input {width:18px;height:18px}
  .guest-meals small {font-size:13px}
  .meal-heading {font-size:16px}
  .booking-summary {padding:15px;margin:18px 0}
  .summary-row {font-size:14px;gap:10px;align-items:baseline;min-width:0}
  .booking-summary>.summary-row:first-child {flex-direction:column;gap:6px;align-items:stretch;margin-bottom:16px}
  .summary-row>* {min-width:0;overflow-wrap:anywhere}
  .summary-row.total {font-size:18px}
  .price-lines {font-size:14px}
  .price-lines li {gap:10px;align-items:baseline;line-height:1.5}
  .price-lines li>:first-child {min-width:0;overflow-wrap:anywhere}
  .price-lines li>:last-child {flex:none;white-space:nowrap}
  .price-lines small,.booking-summary .food-caption {font-size:12px;line-height:1.6}
  .payment-options {flex-wrap:wrap;flex-direction:row}
  .payment-options legend,.payment-options label {font-size:14px}
  .payment-options label {min-height:48px;min-width:0}
  .consent {font-size:13px;line-height:1.6;gap:10px}
  .consent input {width:20px;height:20px;flex:none}
  .demo-callout,.error {font-size:13px}
  .modal-actions {flex-direction:column}
  .modal-actions .button {width:100%;flex:auto}
  .payment-header {flex-wrap:wrap;gap:12px}
  .payment-card {padding:18px}
  .payment-card>p,.timer,.test-order p {font-size:13px}
  .test-order .top {flex-wrap:wrap}
  .status-badge {font-size:12px}
  .room-gallery img {flex:0 0 auto;max-width:100%;height:190px}
  .project-card p,.project-card li,.project-intro p {font-size:14px}
}

@media (max-width:800px) {
  .admin-header {height:auto;min-height:80px;padding:14px 16px;gap:12px}
  .admin-brand {min-width:0;font-size:15px;letter-spacing:1px}
  .admin-brand small {font-size:11px}
  .admin-header .button {flex:none;padding:10px;font-size:12px;min-height:44px}
  .admin-sidebar {min-width:0;padding:12px 16px}
  .admin-sidebar nav {max-width:100%;overscroll-behavior-x:contain;gap:8px;padding-bottom:4px}
  .admin-sidebar nav button {flex:none;font-size:14px;min-height:44px}
  .admin-main {width:100%;padding:24px 16px;min-width:0}
  .admin-title {align-items:flex-start;gap:12px;flex-wrap:wrap}
  .admin-title h1 {font-size:32px;overflow-wrap:anywhere}
  .admin-title p {font-size:14px;max-width:none;line-height:1.6}
  .admin-title .stat {min-width:0;padding:12px 16px}
  .stat span {font-size:12px}
  .admin-toolbar {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .admin-toolbar input {grid-column:1/-1;width:100%;min-width:0}
  .admin-toolbar input,.admin-toolbar select {max-width:100%;width:100%;min-height:48px;font-size:16px;padding:10px;flex:auto}
  .catalog-stats {font-size:13px;flex-wrap:wrap}
  .admin-table-scroll {overflow:visible;border:0;background:transparent}
  .admin-table {display:block;width:100%;min-width:0}
  .admin-table thead {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .admin-table tbody {display:grid;gap:14px;width:100%}
  .admin-table tbody tr {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:18px;border:1px solid var(--line);border-radius:12px;background:white}
  .admin-table td,.admin-table td:first-child {display:block;min-width:0;max-width:100%;padding:0;border:0;font-size:15px;overflow-wrap:anywhere}
  .admin-table td[data-label]::before {content:attr(data-label);display:block;font-size:12px;color:var(--muted);margin-bottom:5px;font-weight:400}
  .admin-table td:first-child {grid-column:1/-1;font-size:18px;font-weight:600}
  .admin-table .room-name {font-size:18px;line-height:1.4}
  .admin-table td small {font-size:12px;line-height:1.5}
  #rooms-table td:nth-child(2),#rooms-table td:last-child,#types-table td:nth-child(6),#types-table td:last-child,.admin-table .empty-cell {grid-column:1/-1}
  .admin-table .button {width:100%;min-height:46px;white-space:normal;font-size:15px}
  .tiny-pill {font-size:12px;padding:5px 8px}
  .settings-card {padding:20px}
  .settings-card p,.settings-card a,.notice,.helper,.active-check {font-size:14px;line-height:1.6}
  .meal-admin-card label,.meal-admin-card p {font-size:14px}
  .meal-admin-card input {font-size:18px;min-height:48px}
  .weekdays {gap:8px}
  .weekdays label {font-size:14px;min-height:44px;padding:10px 12px}
  .save-row span {font-size:13px;line-height:1.6}
  .photo-heading {flex-wrap:wrap}
  .photo-heading p {font-size:13px}
  .photo-heading .button {min-height:44px;font-size:14px;padding:10px 14px}
  .photos-grid {grid-template-columns:repeat(2,minmax(0,1fr))}
  .photo-controls {display:grid;grid-template-columns:1fr;font-size:12px;gap:4px}
  .photo-controls button {font-size:13px;min-height:44px;padding:8px 4px;text-align:left}
  .source-numbers {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
  .source-numbers span,.source-table td {font-size:13px}
}

@media (max-width:600px) {
  .filters {grid-template-columns:minmax(0,1fr)}
}

@media (max-width:360px) {
  .wrap {width:calc(100% - 24px)}
  .site-header nav {font-size:12px}
  .brand>span {font-size:15px}
  .brand small {letter-spacing:2px}
  .mobile-call {font-size:12px;padding:8px}
  .hero-content {padding-inline:18px}
  .search-form {padding:14px;gap:12px 10px}
  .filters {grid-template-columns:minmax(0,1fr)}
  .room-body {padding:18px}
  .room-body .room-title-real {font-size:22px!important}
  .stepper {gap:7px}
  .story-items {grid-template-columns:minmax(0,1fr)}
  dialog {padding-inline:16px}
  .admin-toolbar {grid-template-columns:minmax(0,1fr)}
}

.type-assignment-note{font-size:13px;line-height:1.6;color:var(--muted);margin:10px 0}.filters select{max-width:100%;min-width:0}.room-card .features{flex-wrap:wrap}#refresh-quote{margin:12px 0}
