/* Right-to-left (Arabic) overrides for guest pages: check-in (both designs),
   guest portal (both designs), stay-ended / access-denied pages, unlock
   pop-up, ID photo picker. Loaded only when the page is dir="rtl"
   (guests/_language_fonts.html). Most layout mirrors by itself (flex, grid,
   text-align: start); this sheet flips what was written with physical
   left / right values. PINs, phone numbers, booking references and times
   are wrapped in <bdi>/dir="ltr" in the templates so they keep their
   left-to-right order. */

/* ---------- shared ---------- */
[dir="rtl"] .guest-ltr,
[dir="rtl"] bdi.guest-ltr {
    direction: ltr;
    unicode-bidi: isolate;
}
/* Arrows / chevrons that point "forward" */
[dir="rtl"] .ci2-btn-arrow,
[dir="rtl"] .rup-submit-btn__arrow,
[dir="rtl"] .rup-other__arrow,
[dir="rtl"] .portal-save-sheet__action-arrow,
[dir="rtl"] .pv-unlock__arrow {
    display: inline-block;
    transform: scaleX(-1);
}
[dir="rtl"] .ci2 .btn:hover .ci2-btn-arrow { transform: scaleX(-1) translateX(2px); }
/* Select arrows sit on the left */
[dir="rtl"] .checkin-wrapper .form-group select {
    background-position: left 14px center;
    padding-right: 14px;
    padding-left: 38px;
}
[dir="rtl"] .ci2 .form-group select {
    padding-right: 16px;
    padding-left: 42px;
}

/* ---------- check-in (old design) ---------- */
[dir="rtl"] .checkin-wrapper .checkin-card { text-align: right; }
[dir="rtl"] .checkin-progress__next { text-align: left; }
[dir="rtl"] .checkin-wrapper .checkin-nav .btn-primary { margin-left: 0; margin-right: auto; }
[dir="rtl"] .checkin-wrapper .checkin-location-badge { margin-left: 0; margin-right: 4px; }
[dir="rtl"] .checkin-wrapper .summary-value,
[dir="rtl"] .checkin-wrapper .summary-rooms { text-align: left; }
[dir="rtl"] .checkin-wrapper .rules-list,
[dir="rtl"] .checkin-wrapper .checkin-rules__body ul,
[dir="rtl"] .checkin-wrapper .checkin-rules__body ol,
[dir="rtl"] .checkin-wrapper .rules-extra-item { padding-left: 0; padding-right: 20px; }
[dir="rtl"] .checkin-wrapper .checkin-consent-sub { margin-left: 0; }

/* ---------- check-in (2026 design) ---------- */
[dir="rtl"] .ci2 .ci2-choice { text-align: right; }
[dir="rtl"] .ci2 .ci2-choice__dot { right: auto; left: 14px; }
[dir="rtl"] .ci2 .ci2-facts > div + div {
    padding-left: 0;
    padding-right: 16px;
    border-left: 0;
    border-right: 1px solid var(--ci-line);
}
[dir="rtl"] .ci2 .checkin-consent-sub { margin-left: 0; margin-right: 38px; }
[dir="rtl"] .ci2 .checkin-success,
[dir="rtl"] .ci2 .checkin-tip { text-align: right; }
[dir="rtl"] .ci2 .summary-value { text-align: left; }
@media (max-width: 600px) {
    [dir="rtl"] .ci2 .checkin-consent-sub { margin-right: 0; }
}
/* Room upgrade / extra room cards (2026 design) */
[dir="rtl"] .ci2 .ci2-ups__badge { left: auto; right: 12px; }
[dir="rtl"] .ci2 .ci2-ups-nav .ci2-ups-skip { margin-left: 0; margin-right: auto; }

/* ---------- ID photo picker ---------- */
[dir="rtl"] .idu-tips__list li::before { margin-left: 0; margin-right: 2px; }

/* ---------- guest portal (old design) ---------- */
[dir="rtl"] .portal-hero-actions { right: auto; left: 16px; }
[dir="rtl"] .portal-hero-org-label { margin-right: 0; margin-left: 4px; }
[dir="rtl"] .strip-item + .strip-item {
    border-left: 0;
    border-right: 1px solid color-mix(in srgb, var(--portal-primary, #2563eb) 8%, rgba(0, 0, 0, 0.06));
}
[dir="rtl"] .access-pin { border-left: 0; border-right: 1px solid rgba(255, 255, 255, 0.3); }
[dir="rtl"] .access-inner--multi .access-pin { border-right: none; }
[dir="rtl"] .access-paused-reason,
[dir="rtl"] .access-code-header,
[dir="rtl"] .faq-q,
[dir="rtl"] .parking-popup-body,
[dir="rtl"] .portal-save-sheet__action { text-align: right; }
[dir="rtl"] .access-reassure {
    text-align: right;
    border-left: 0;
    border-right: 3px solid #10b981;
}
[dir="rtl"] .portal-multi-pending-hint {
    border-left: 0;
    border-right: 3px solid var(--portal-accent, #f59e0b);
}
[dir="rtl"] .countdown-label { margin-left: 0; margin-right: 6px; }
[dir="rtl"] .rich-content ul,
[dir="rtl"] .rich-content ol { padding-left: 0; padding-right: 20px; }
[dir="rtl"] .rule-chip__suffix { margin-left: 0; margin-right: 2px; }
[dir="rtl"] .rule-extra-item { padding-left: 0; padding-right: 18px; }
[dir="rtl"] .rule-extra-item::before { left: auto; right: 0; }
[dir="rtl"] .chat-fab,
[dir="rtl"] .chat-bubble { right: auto; left: 20px; }
[dir="rtl"] .chat-fab-badge { right: auto; left: -2px; }
[dir="rtl"] .chat-bubble-close { right: auto; left: 10px; }
[dir="rtl"] .chat-bubble-online { right: auto; left: 1px; }
[dir="rtl"] .portal-rooms-title { padding-left: 0; padding-right: 4px; }
[dir="rtl"] .portal-room-access-code { margin-left: 0; margin-right: 8px; }
[dir="rtl"] .lightbox-close,
[dir="rtl"] .parking-popup-close,
[dir="rtl"] .portal-ios-install-modal__close { right: auto; left: 12px; }
[dir="rtl"] .call-modal-close { right: auto; left: 14px; }
[dir="rtl"] .parking-popup-title { padding-right: 0; padding-left: 24px; }
[dir="rtl"] .lightbox-nav { transform: translateY(-50%) scaleX(-1); }
[dir="rtl"] .lightbox-prev { left: auto; right: 12px; }
[dir="rtl"] .lightbox-next { right: auto; left: 12px; }
[dir="rtl"] .lightbox-room-badge { left: auto; right: 14px; }
[dir="rtl"] .portal-ios-install-modal__steps { padding-left: 0; padding-right: 24px; }
[dir="rtl"] .portal-ios-install-modal__glyph { margin-left: 0; margin-right: 4px; }
@media (max-width: 640px) {
    [dir="rtl"] .lightbox-prev { left: auto; right: 8px; }
    [dir="rtl"] .lightbox-next { right: auto; left: 8px; }
    [dir="rtl"] .lightbox-room-badge { left: auto; right: 10px; }
    [dir="rtl"] .access-pin { border-right: none; }
}
@media (max-width: 560px) {
    [dir="rtl"] .strip-item + .strip-item { border-right: none; }
    [dir="rtl"] .strip-item:nth-child(even) {
        border-left: 0;
        border-right: 1px solid color-mix(in srgb, var(--portal-primary, #2563eb) 8%, rgba(0, 0, 0, 0.06));
    }
}
@media (max-width: 480px) {
    [dir="rtl"] .portal-orient-strip__text { text-align: right; }
}

/* ---------- guest portal (2026 design) ---------- */
[dir="rtl"] .pv-save,
[dir="rtl"] .pv-unlock,
[dir="rtl"] .pv2 .faq-q,
[dir="rtl"] .pv-sheet__item,
[dir="rtl"] .pv2 .parking-popup,
[dir="rtl"] .pv2 .call-modal,
[dir="rtl"] .pv2 .portal-save-sheet__action { text-align: right; }
[dir="rtl"] .pv-fact + .pv-fact { border-left: 0; border-right: 1px solid var(--pv-line); }
[dir="rtl"] .pv-fact--wide { border-right: 0 !important; }
[dir="rtl"] .pv-rules li { padding: 9px 26px 9px 0; }
[dir="rtl"] .pv-rules li::before { left: auto; right: 6px; }
[dir="rtl"] .pv-rules li.pv-rules--yes::before,
[dir="rtl"] .pv-rules li.pv-rules--no::before { left: auto; right: 2px; }
[dir="rtl"] .pv2 .lightbox-close,
[dir="rtl"] .pv2 .portal-ios-install-modal__close { right: auto; left: 12px; }
[dir="rtl"] .pv2 .parking-popup-close,
[dir="rtl"] .pv2 .call-modal-close { right: auto; left: 14px; }
[dir="rtl"] .pv2 .lightbox-prev { left: auto; right: 10px; }
[dir="rtl"] .pv2 .lightbox-next { right: auto; left: 10px; }
[dir="rtl"] .pv2 .lightbox-room-badge { left: auto; right: 10px; }
[dir="rtl"] .pv2 .portal-ios-install-modal__steps { padding-left: 0; padding-right: 20px; }

/* Instructions / FAQs / rules the business wrote (often in English): each
   paragraph follows its own text direction. */
[dir="rtl"] .rich-content :is(p, li, h1, h2, h3, h4, blockquote),
[dir="rtl"] .checkin-rules__body :is(p, li) {
    unicode-bidi: plaintext;
}

/* ---------- unlock pop-up ---------- */
[dir="rtl"] .pum-modal { direction: rtl; }

/* ---------- numbers and codes stay left-to-right ---------- */
[dir="rtl"] .pin-digits,
[dir="rtl"] .pv-pin__digits,
[dir="rtl"] .pv-code__digits,
[dir="rtl"] .portal-multi-pin-digits,
[dir="rtl"] .pum-modal__pin-hero-digits,
[dir="rtl"] .call-modal-number,
[dir="rtl"] .wifi-val,
[dir="rtl"] .pv-wifi__val,
[dir="rtl"] .pv-fact__ref,
[dir="rtl"] .strip-value,
[dir="rtl"] .countdown-digits {
    direction: ltr;
    unicode-bidi: isolate;
}
[dir="rtl"] .strip-value,
[dir="rtl"] .pv-fact__ref,
[dir="rtl"] .wifi-val,
[dir="rtl"] .pv-wifi__val,
[dir="rtl"] .call-modal-number { display: inline-block; }
/* Fields guests type Latin text into */
[dir="rtl"] input[type="tel"],
[dir="rtl"] input[type="email"],
[dir="rtl"] input[type="url"],
[dir="rtl"] input[type="time"],
[dir="rtl"] input[name="booking_reference"],
[dir="rtl"] input[name="car_registration"] {
    direction: ltr;
    text-align: right;
}

/* ---------- text the business typed (addresses, website footer) ----------
   Mostly Latin script: each piece takes the direction of its own first
   letter, so "12 Quay Street" doesn't become "Quay Street 12". Inline
   pieces only (an inline box with plaintext is an isolate with its own
   direction); block addresses are wrapped in <bdi> in the templates. */
[dir="rtl"] footer a,
[dir="rtl"] footer span,
[dir="rtl"] .pv-sec__hint {
    unicode-bidi: plaintext;
}

/* Unlock button shine sweeps right-to-left (portal_unlock_nudges.js). */
[dir="rtl"] .pv-unlock.pv-shine::after {
    background-image: linear-gradient(-105deg, transparent 38%, rgba(255, 255, 255, 0.6) 50%, transparent 62%);
    background-position: 0% 0;
    animation-name: pv-shine-rtl;
}

/* Tap demo clip sits at the inline end of the door card: grow from that corner. */
[dir="rtl"] .pv-tapdemo { transform-origin: bottom left; }
