/* ═══════════════════════════════════════════ Carei Reservation — Design Tokens ═══════════════════════════════════════════ */ @import url('https://fonts.googleapis.com/css2?family=Albert+Sans:wght@400;500;600;700&display=swap'); :root { --carei-blue: #2F2482; --carei-red: #FF0000; --carei-red-hover: #D60000; --carei-bg: #EDEDF3; --carei-gray: #505050; --carei-placeholder: #C7C7C7; --carei-border: #D0D0D0; --carei-white: #FFFFFF; --carei-radius: 8px; --carei-radius-lg: 16px; --carei-input-h: 48px; --carei-font: 'Albert Sans', sans-serif; --carei-gap-section: 24px; --carei-gap-inner: 16px; } /* ═══════════════════════════════════════════ Trigger Button ═══════════════════════════════════════════ */ .carei-reservation-trigger { display: inline-flex; align-items: center; gap: 8px; padding: 14px 28px; background-color: var(--carei-red); color: var(--carei-white); font-family: var(--carei-font); font-weight: 600; font-size: 14px; border: none; border-radius: var(--carei-radius); cursor: pointer; transition: background-color 0.2s ease; text-decoration: none; line-height: 1; } .carei-reservation-trigger:hover { background-color: var(--carei-red-hover); color: var(--carei-white); } .carei-reservation-trigger svg { width: 16px; height: 16px; fill: currentColor; } /* ═══════════════════════════════════════════ Modal Overlay & Container ═══════════════════════════════════════════ */ .carei-modal-overlay { display: none; position: fixed; inset: 0; z-index: 100000; background: rgba(0, 0, 0, 0.5); justify-content: center; align-items: center; padding: 20px; } .carei-modal-overlay.is-open { display: flex; } .carei-modal { background: var(--carei-bg); border-radius: var(--carei-radius-lg); max-width: 800px; width: 100%; max-height: 90vh; overflow-y: auto; padding: 40px 48px; position: relative; font-family: var(--carei-font); } .carei-modal-close { position: absolute; top: 16px; left: 16px; background: none; border: none; cursor: pointer; color: var(--carei-gray); line-height: 1; padding: 4px; transition: color 0.2s; } .carei-modal-close:hover { color: var(--carei-blue); } .carei-modal-title { font-family: var(--carei-font); font-weight: 700; font-size: 20px; color: var(--carei-blue); text-align: center; margin: 0 0 var(--carei-gap-section) 0; } .carei-modal-title span { color: var(--carei-red); } /* Scrollbar styling */ .carei-modal::-webkit-scrollbar { width: 6px; } .carei-modal::-webkit-scrollbar-track { background: transparent; } .carei-modal::-webkit-scrollbar-thumb { background: var(--carei-border); border-radius: 3px; } /* ═══════════════════════════════════════════ Form Layout ═══════════════════════════════════════════ */ .carei-form { display: flex; flex-direction: column; gap: var(--carei-gap-section); } .carei-form__section { display: flex; flex-direction: column; gap: var(--carei-gap-inner); } .carei-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--carei-gap-inner); } .carei-form__row--dates { grid-template-columns: 1fr 1fr; } .carei-form__field { display: flex; flex-direction: column; gap: 4px; } .carei-form__field--full { grid-column: 1 / -1; } /* ═══════════════════════════════════════════ Inputs & Selects ═══════════════════════════════════════════ */ .carei-form__input, .carei-form__textarea, .carei-form__select-wrap select { height: var(--carei-input-h); padding: 0 16px; border: 1px solid transparent; border-radius: var(--carei-radius); background: var(--carei-white); font-family: var(--carei-font); font-weight: 600; font-size: 15px; color: var(--carei-blue); outline: none; transition: border-color 0.2s; width: 100%; box-sizing: border-box; } .carei-form__input::placeholder, .carei-form__textarea::placeholder { color: var(--carei-gray); font-weight: 400; } .carei-form__input:focus, .carei-form__textarea:focus, .carei-form__select-wrap select:focus { border-color: var(--carei-blue); } .carei-form__textarea { height: 143px; padding: 16px; resize: vertical; line-height: 1.5; } .carei-form__label-small { font-family: var(--carei-font); font-weight: 400; font-size: 12px; color: var(--carei-gray); display: flex; align-items: center; gap: 4px; } .carei-form__icon-calendar { color: var(--carei-gray); } /* Select wrapper */ .carei-form__select-wrap { position: relative; display: flex; align-items: center; } .carei-form__select-wrap select { appearance: none; -webkit-appearance: none; padding-right: 40px; cursor: pointer; } .carei-form__select-wrap--icon select { padding-left: 40px; } .carei-form__select-arrow { position: absolute; right: 16px; pointer-events: none; color: var(--carei-blue); } .carei-form__icon-pin { position: absolute; left: 14px; pointer-events: none; color: var(--carei-gray); z-index: 1; } /* Days count */ .carei-form__days-count { font-family: var(--carei-font); font-size: 13px; color: var(--carei-gray); text-align: right; } .carei-form__days-count strong { color: var(--carei-blue); font-weight: 700; } /* ═══════════════════════════════════════════ Phone Input ═══════════════════════════════════════════ */ .carei-form__phone-wrap { display: flex; align-items: center; background: var(--carei-white); border-radius: var(--carei-radius); border: 1px solid transparent; transition: border-color 0.2s; height: var(--carei-input-h); } .carei-form__phone-wrap:focus-within { border-color: var(--carei-blue); } .carei-form__phone-prefix { display: flex; align-items: center; gap: 4px; padding: 0 8px 0 12px; border-right: 1px solid var(--carei-border); height: 60%; flex-shrink: 0; font-size: 14px; color: var(--carei-gray); } .carei-form__phone-flag { font-size: 18px; line-height: 1; } .carei-form__phone-code { font-family: var(--carei-font); font-weight: 500; font-size: 14px; color: var(--carei-gray); } .carei-form__input--phone { border: none; background: transparent; height: 100%; padding-left: 12px; } .carei-form__input--phone::placeholder { color: var(--carei-placeholder); letter-spacing: 2px; } .carei-form__input--phone:focus { border: none; } /* ═══════════════════════════════════════════ Checkboxes (custom) ═══════════════════════════════════════════ */ .carei-form__checkbox-label { display: flex; align-items: flex-start; gap: 10px; cursor: pointer; font-family: var(--carei-font); font-size: 14px; color: var(--carei-blue); user-select: none; } .carei-form__checkbox-label input[type="checkbox"] { position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none; } .carei-form__checkbox-box { width: 24px; height: 24px; min-width: 24px; border: 2px solid var(--carei-border); border-radius: var(--carei-radius); display: flex; align-items: center; justify-content: center; transition: all 0.2s; background: var(--carei-white); margin-top: 1px; } .carei-form__checkbox-box svg { opacity: 0; transition: opacity 0.15s; } .carei-form__checkbox-label input:checked + .carei-form__checkbox-box { background: var(--carei-blue); border-color: var(--carei-blue); } .carei-form__checkbox-label input:checked + .carei-form__checkbox-box svg { opacity: 1; } .carei-form__checkbox-text { line-height: 1.6; padding-top: 2px; } .carei-form__checkbox-text a { color: var(--carei-blue); text-decoration: underline; font-weight: 600; } .carei-form__checkbox-text a:hover { color: var(--carei-red); } /* ═══════════════════════════════════════════ Dividers ═══════════════════════════════════════════ */ .carei-form__divider { display: flex; align-items: center; gap: 16px; font-family: 'Roboto', var(--carei-font), sans-serif; font-size: 12px; color: var(--carei-gray); text-transform: none; } .carei-form__divider::before, .carei-form__divider::after { content: ''; flex: 1; height: 1px; background: var(--carei-border); } .carei-form__divider span { white-space: nowrap; } /* ═══════════════════════════════════════════ Extra Cards (Ubezpieczenie, Fotelik) ═══════════════════════════════════════════ */ .carei-form__extra-card { border: 1px solid var(--carei-border); border-radius: var(--carei-radius); padding: 16px; background: var(--carei-white); transition: border-color 0.2s; } .carei-form__extra-card:has(input:checked) { border-color: var(--carei-blue); } .carei-form__checkbox-label--card { align-items: flex-start; } .carei-form__extra-content { display: flex; flex-direction: column; gap: 4px; flex: 1; } .carei-form__extra-content strong { font-weight: 700; font-size: 14px; color: var(--carei-blue); } .carei-form__extra-desc { font-size: 12px; color: var(--carei-gray); font-weight: 400; line-height: 1.4; } .carei-form__extra-price { font-weight: 700; font-size: 15px; color: var(--carei-red); margin-top: 4px; } /* ═══════════════════════════════════════════ Footer (Privacy + Submit) ═══════════════════════════════════════════ */ .carei-form__footer { display: flex; align-items: center; justify-content: space-between; gap: var(--carei-gap-inner); padding-top: 8px; } .carei-form__checkbox-label--privacy { flex: 1; } .carei-form__submit { display: inline-flex; align-items: center; gap: 8px; padding: 16px 32px; background-color: var(--carei-red); color: var(--carei-white); font-family: var(--carei-font); font-weight: 600; font-size: 14px; border: none; border-radius: var(--carei-radius); cursor: pointer; transition: background-color 0.2s; white-space: nowrap; line-height: 1; flex-shrink: 0; } .carei-form__submit:hover { background-color: var(--carei-red-hover); } .carei-form__submit:disabled { opacity: 0.6; cursor: not-allowed; } .carei-form__submit svg { width: 16px; height: 16px; } /* ═══════════════════════════════════════════ Validation ═══════════════════════════════════════════ */ .carei-form__field--error .carei-form__input, .carei-form__field--error .carei-form__textarea, .carei-form__field--error .carei-form__select-wrap select, .carei-form__field--error .carei-form__phone-wrap { border-color: var(--carei-red) !important; } .carei-form__checkbox-label--error .carei-form__checkbox-box { border-color: var(--carei-red) !important; } .carei-form__error-msg { font-family: var(--carei-font); font-size: 11px; color: var(--carei-red); margin-top: 2px; } .carei-form__error-summary { font-family: var(--carei-font); font-size: 13px; color: var(--carei-red); text-align: center; padding: 8px; background: rgba(255, 0, 0, 0.05); border-radius: var(--carei-radius); } /* Loading state for selects */ .carei-form__select-wrap--loading select { color: var(--carei-placeholder); pointer-events: none; } /* Return branch slide */ .carei-form__return-wrap { overflow: hidden; transition: max-height 0.3s ease, opacity 0.3s ease; max-height: 0; opacity: 0; } .carei-form__return-wrap.is-visible { max-height: 80px; opacity: 1; display: block !important; } /* ═══════════════════════════════════════════ Mobile Responsive (<768px) ═══════════════════════════════════════════ */ @media (max-width: 768px) { .carei-modal-overlay { padding: 0; align-items: flex-end; } .carei-modal { width: 100%; max-width: 100%; max-height: 100vh; height: 100%; border-radius: var(--carei-radius-lg) var(--carei-radius-lg) 0 0; padding: 32px 24px; border-radius: 0; } .carei-form__row { grid-template-columns: 1fr; } .carei-form__row--dates { grid-template-columns: 1fr 1fr; } .carei-form__footer { flex-direction: column; align-items: stretch; } .carei-form__submit { width: 100%; justify-content: center; padding: 16px; } } /* Very small screens */ @media (max-width: 480px) { .carei-form__row--dates { grid-template-columns: 1fr; } .carei-modal { padding: 24px 16px; } }