/* Shared type system for the public and corporate booking portals. */
:root {
  --portal-font: "Roboto", Arial, sans-serif;
  --title-font: "Roboto" !important;
  --body-font: "Roboto" !important;
}
body, button, input, select, textarea, option,
h1, h2, h3, h4, h5, h6, legend, label, summary {
  font-family: var(--portal-font);
}

/* One readable size scale at every viewport; controls stay at least 16px. */
:root {
  --portal-text: 16px;
  --portal-label: 14px;
  --portal-help: 13px;
  --portal-section: 20px;
  --portal-title: 32px;
}
body { font-size: var(--portal-text); line-height: 1.5; }
body :is(form, .panel, .live-cart, .portal-language) label {
  font-size: var(--portal-label); line-height: 1.4;
}
body :is(form, .panel, .live-cart, .portal-language) :is(input, select, textarea) {
  font-size: var(--portal-text); line-height: 1.5; font-weight: 400;
}
body :is(form, .panel, .hero, .booking-utilities) button:not(.booking-guide-icon):not(.me-date-picker),
body :is(.primary, .secondary, .utility-link) {
  font-size: var(--portal-text); line-height: 1.5;
}
body :is(.panel-head, .panel) > :is(h1, h2),
body .panel-head > div > :is(h1, h2) {
  font-size: var(--portal-title); line-height: 1.2;
}
body :is(.public-room-form .booking-step h3, form section > h2, .checkout-card h3, .live-cart h3, legend) {
  font-size: var(--portal-section); line-height: 1.3;
}
body :is(form, .panel, .live-cart) small,
body :is(.mandatory-note, .room-status, .status) {
  font-size: var(--portal-help); line-height: 1.5;
}
body .live-cart .cart-line { font-size: var(--portal-label); line-height: 1.5; }
body .live-cart .cart-total strong { font-size: 22px; line-height: 1.3; }
body .garden-month-calendar button { font-size: 13px; }

body .hero h1 { font-size: clamp(36px, 5vw, 56px); line-height: 1.1; }
body .choice :is(h2, h3) { font-size: 22px; line-height: 1.25; }

/* Shared scale for the wider website, including galleries and submission pages. */
:root body :is(h1, h2, h3, h4, h5, h6) { font-family: var(--portal-font); }
:root body h1 { font-size: 32px; line-height: 1.2; }
:root body h2 { font-size: 24px; line-height: 1.3; }
:root body h3 { font-size: 20px; line-height: 1.3; }
:root body :is(h4, h5, h6) { font-size: 18px; line-height: 1.4; }
:root body label { font-size: 14px; line-height: 1.4; }
:root body :is(input, select, textarea) { font-family: var(--portal-font); font-size: 16px; line-height: 1.5; }
:root body :is(button, .button, .btn) { font-family: var(--portal-font); font-size: 16px; line-height: 1.5; }
:root body :is(small, figcaption, .help, .hint) { font-size: 13px; line-height: 1.5; }
:root body .hero h1 { font-size: clamp(36px, 5vw, 56px); line-height: 1.1; }
:root body :is(.booking-step h3, form section > h2, .checkout-card h3, .live-cart h3, legend) { font-size: 20px; line-height: 1.3; }
:root body .choice :is(h2, h3) { font-size: 22px; line-height: 1.25; }
:root body .garden-month-calendar button { font-size: 13px; }
:root body :is(.booking-guide-icon, .me-date-picker, .viewer-close, .viewer-nav) { font-size: 24px; line-height: 1; }
:root body .site-header :is(button, input, label) { font-size: 16px; }
