/* REDPLUS Bookings widget. Square corners; uses the theme's colours when present. */
.rpb { --rpb-ink: var(--ink, #15181b); --rpb-sea: var(--sea, #0b5f64); --rpb-tint: var(--sea-tint, #e6f1f1); --rpb-line: #cfc9bd; --rpb-muted: var(--ink-3, #5a6166); --rpb-accent: var(--accent, #ff5500); display: flex; flex-direction: column; gap: 16px; }
.rpb [hidden] { display: none !important; }
.rpb-group { border: 0; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.rpb-label { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--rpb-muted); padding: 0; }
.rpb-hint { font-size: 13px; color: var(--rpb-muted); }

.rpb-options { display: flex; flex-direction: column; gap: 8px; }
.rpb-option { position: relative; display: flex; justify-content: space-between; gap: 12px; align-items: center; min-height: 48px; padding: 10px 14px; border: 2px solid #ddd8ce; background: #fff; cursor: pointer; font-size: 15px; }
.rpb-option input { position: absolute; opacity: 0; pointer-events: none; }
.rpb-option__price { font-weight: 600; white-space: nowrap; }
.rpb-option:has(input:checked) { border-color: var(--rpb-sea); background: var(--rpb-tint); }
.rpb-option:has(input:focus-visible) { outline: 3px solid var(--orange, #ff5500); outline-offset: 2px; }

.rpb-cal { border: 1px solid var(--rpb-line); background: #fff; }
.rpb-cal__head { display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--rpb-line); }
.rpb-cal__title { font-weight: 600; text-transform: capitalize; }
.rpb-cal__nav { width: 44px; height: 44px; border: 0; background: transparent; font-size: 24px; cursor: pointer; color: var(--rpb-ink); }
.rpb-cal__nav:disabled { opacity: 0.25; cursor: default; }
.rpb-cal__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; padding: 6px; }
.rpb-cal__dow { text-align: center; font-size: 11px; font-weight: 600; color: var(--rpb-muted); padding: 4px 0; }
.rpb-day { aspect-ratio: 1; min-height: 36px; border: 1px solid transparent; background: var(--rpb-tint); color: var(--rpb-ink); font-weight: 600; font-size: 14px; cursor: pointer; padding: 0; }
.rpb-day:hover:not(:disabled) { border-color: var(--rpb-sea); }
.rpb-day:disabled { background: transparent; color: #b3b0a8; font-weight: 400; cursor: default; text-decoration: line-through; text-decoration-color: #d6d2c8; }
.rpb-day.is-selected { background: var(--rpb-sea); color: #fff; }
.rpb-cal__msg { margin: 0; padding: 0 10px; font-size: 13px; color: var(--rpb-muted); }
.rpb-cal__msg:not(:empty) { padding-bottom: 10px; }

.rpb-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); gap: 8px; }
.rpb-slot { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 48px; border: 2px solid #ddd8ce; background: #fff; cursor: pointer; padding: 4px; }
.rpb-slot span { font-size: 12px; color: var(--rpb-muted); }
.rpb-slot.is-selected { border-color: var(--rpb-sea); background: var(--rpb-tint); }

.rpb-stepper { display: flex; align-items: center; border: 1px solid var(--rpb-line); background: #fff; }
.rpb-stepper button { width: 52px; height: 48px; border: 0; background: #f3f1ec; font-size: 22px; cursor: pointer; color: var(--rpb-ink); }
.rpb-stepper button:first-child { border-right: 1px solid var(--rpb-line); }
.rpb-stepper button:last-child { border-left: 1px solid var(--rpb-line); }
.rpb-people { flex: 1; text-align: center; font-weight: 600; font-size: 18px; }

.rpb-check { display: flex; gap: 10px; align-items: flex-start; font-size: 15px; cursor: pointer; }
.rpb-check input { width: 20px; height: 20px; margin: 1px 0 0; flex: none; accent-color: var(--rpb-sea); }
.rpb-input, .rpb-field input, .rpb-field textarea { width: 100%; font: inherit; font-size: 16px; color: var(--rpb-ink); border: 1px solid var(--rpb-line); padding: 11px 12px; min-height: 46px; background: #fff; border-radius: 0; }
.rpb-field { display: flex; flex-direction: column; gap: 6px; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--rpb-muted); }
.rpb-details { display: flex; flex-direction: column; gap: 14px; }
.rpb-hp { position: absolute; left: -9999px; }

.rpb-summary { border-top: 1px solid #ddd8ce; padding-top: 12px; display: flex; flex-direction: column; gap: 6px; font-size: 15px; }
.rpb-summary:empty { display: none; }
.rpb-line { display: flex; justify-content: space-between; gap: 12px; margin: 0; }
.rpb-line span:first-child { color: var(--rpb-muted); }
.rpb-line--total span { color: var(--rpb-ink) !important; font-weight: 700; }
.rpb-line--total span:last-child { font-family: var(--display, inherit); font-size: 26px; line-height: 1.1; }
.rpb-line--pay span { color: var(--rpb-sea) !important; font-weight: 600; }

.rpb-gateways { gap: 6px; }
.rpb-gateway { display: flex; gap: 10px; align-items: center; min-height: 48px; padding: 8px 12px; border: 2px solid #ddd8ce; background: #fff; cursor: pointer; }
.rpb-gateway input { accent-color: var(--rpb-sea); width: 18px; height: 18px; }
.rpb-gateway > span { display: flex; flex-direction: column; }
.rpb-gateway:has(input:checked) { border-color: var(--rpb-sea); background: var(--rpb-tint); }

.rpb-policy { font-size: 14px; border: 1px solid #ddd8ce; padding: 10px 12px; background: #faf9f6; }
.rpb-policy summary { cursor: pointer; font-weight: 600; }
.rpb-policy ul { margin: 8px 0 0; padding-left: 18px; color: var(--rpb-muted); }

.rpb-error { margin: 0; padding: 12px 14px; background: #fdecea; border-left: 4px solid var(--rpb-accent); font-size: 15px; }
.rpb-submit { min-height: 56px; font-size: 17px; }
.rpb-submit:disabled { background: #8c8f94; cursor: not-allowed; }

/* Booking status page */
.rpb-page { max-width: 760px; margin: 0 auto; padding: 48px 24px 88px; }
.rpb-page__status { display: inline-block; padding: 6px 12px; font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; background: var(--sea-tint, #e6f1f1); color: var(--sea, #0b5f64); }
.rpb-page__status--warn { background: #fdf3e7; color: #8a4b08; }
.rpb-page__status--bad { background: #fdecea; color: #a12a14; }
.rpb-page h1 { font-family: var(--display, inherit); font-weight: 800; text-transform: uppercase; font-size: clamp(36px, 5vw, 56px); line-height: 1; margin: 16px 0; }
.rpb-page__table { width: 100%; border-collapse: collapse; background: #fff; border: 1px solid #ddd8ce; margin: 24px 0; }
.rpb-page__table th, .rpb-page__table td { text-align: left; padding: 12px 16px; border-top: 1px solid #ece8e0; vertical-align: top; }
.rpb-page__table th { width: 40%; font-weight: 400; color: var(--ink-3, #5a6166); }
.rpb-page__pay { display: flex; flex-direction: column; gap: 10px; max-width: 420px; }
.rpb-page__msg { padding: 14px 16px; background: #fff; border-left: 4px solid var(--sea, #0b5f64); margin: 0 0 16px; }
.rpb-page__msg--bad { border-left-color: var(--accent, #ff5500); }

/* Partner area */
.rpb-portal { max-width: 980px; margin: 0 auto; padding: 32px 0 64px; }
.rpb-portal h1 { margin: 0; }
.rpb-portal-kicker { text-transform: uppercase; letter-spacing: .08em; font-size: 13px; margin: 0 0 4px; opacity: .7; }
.rpb-portal-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 16px; border-bottom: 2px solid currentColor; padding-bottom: 16px; }
.rpb-portal-balance { text-align: right; }
.rpb-portal-balance span { display: block; font-size: 13px; opacity: .7; }
.rpb-portal-balance strong { font-size: 24px; }
.rpb-portal-balance.is-in strong { color: #0b7a2b; }
.rpb-portal-balance.is-out strong { color: #b3261e; }
.rpb-portal-tabs, .rpb-portal-sub { display: flex; flex-wrap: wrap; gap: 4px 20px; margin: 16px 0; }
.rpb-portal-tabs a, .rpb-portal-sub a { text-decoration: none; font-weight: 600; padding: 6px 0; border-bottom: 3px solid transparent; color: inherit; }
.rpb-portal-tabs a.is-active, .rpb-portal-sub a.is-active { border-bottom-color: #ff5500; }
.rpb-portal-out { margin-left: auto; opacity: .7; }
.rpb-portal-day { margin: 28px 0 10px; font-size: 18px; }
.rpb-portal-card { border: 1px solid #ddd8ce; border-left: 4px solid #0b5f64; background: #fff; padding: 14px 16px; margin: 0 0 12px; }
.rpb-portal-card--cancelled { border-left-color: #b3261e; opacity: .75; }
.rpb-portal-card--requested, .rpb-portal-card--awaiting_payment { border-left-color: #c08a00; }
.rpb-portal-card header { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.rpb-portal-state { font-size: 13px; font-weight: 600; }
.rpb-portal-card dl { display: grid; grid-template-columns: 150px 1fr; gap: 4px 12px; margin: 0; }
.rpb-portal-card dt { opacity: .65; }
.rpb-portal-card dd { margin: 0; }
.rpb-portal-money { font-weight: 700; }
.rpb-portal-money span, .rpb-portal .rpb-muted { font-weight: 400; opacity: .65; font-size: .92em; }
.rpb-portal-period { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 12px 0 18px; }
.rpb-portal-kpis { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px; margin: 0 0 20px; }
.rpb-portal-kpis div { border: 1px solid #ddd8ce; background: #fff; padding: 10px 12px; }
.rpb-portal-kpis span { display: block; font-size: 13px; opacity: .7; }
.rpb-portal-kpis strong { font-size: 19px; }
.rpb-portal-scroll { overflow-x: auto; }
.rpb-portal .rpb-statement { width: 100%; border-collapse: collapse; font-size: 14px; background: #fff; }
.rpb-portal .rpb-statement th, .rpb-portal .rpb-statement td { padding: 7px 8px; border-bottom: 1px solid #ece8e0; text-align: left; vertical-align: top; }
.rpb-portal .rpb-statement .num { text-align: right; white-space: nowrap; }
.rpb-portal .rpb-statement .rpb-group th { background: #f3f1ec; }
.rpb-portal .rpb-statement .description { display: block; font-size: 12px; opacity: .65; }
.rpb-portal .rpb-statement tfoot th { border-top: 2px solid #15181b; }
.rpb-portal #loginform p { margin: 0 0 12px; }
.rpb-portal #loginform input[type=text], .rpb-portal #loginform input[type=password] { width: 100%; max-width: 360px; padding: 10px; border: 1px solid #c9c3b8; }
.rpb-portal #loginform .button { background: #ff5500; color: #fff; border: 0; padding: 12px 22px; font-weight: 700; cursor: pointer; }
@media (max-width: 600px) { .rpb-portal-card dl { grid-template-columns: 1fr; } .rpb-portal-card dt { margin-top: 6px; } .rpb-portal-balance { text-align: left; } }
