/* ============================================ Airbnb Clone - Main Stylesheet Design System matching Airbnb's visual identity ============================================ */ /* ---- CSS Custom Properties (Design Tokens) ---- */ :root { /* Colors */ --airbnb-pink: #FF385C; --airbnb-pink-hover: #E31C5F; --airbnb-pink-light: #FFE4E8; --airbnb-dark: #222222; --airbnb-gray: #717171; --airbnb-gray-light: #B0B0B0; --airbnb-border: #DDDDDD; --airbnb-border-light: #EBEBEB; --airbnb-background: #FFFFFF; --airbnb-background-hover: #F7F7F7; --airbnb-background-dark: #F0F0F0; --airbnb-star: #222222; --airbnb-success: #008A05; --airbnb-overlay: rgba(0, 0, 0, 0.5); /* Typography */ --font-family: 'Circular', -apple-system, BlinkMacSystemFont, 'Roboto', 'Segoe UI', 'Helvetica Neue', sans-serif; --font-size-xs: 12px; --font-size-sm: 14px; --font-size-base: 16px; --font-size-lg: 18px; --font-size-xl: 22px; --font-size-2xl: 26px; --font-size-3xl: 32px; --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; --line-height-tight: 1.2; --line-height-normal: 1.5; --line-height-relaxed: 1.6; /* Spacing */ --space-xs: 4px; --space-sm: 8px; --space-md: 12px; --space-base: 16px; --space-lg: 24px; --space-xl: 32px; --space-2xl: 48px; --space-3xl: 64px; /* Layout */ --content-max-width: 1120px; --content-padding: 24px; --section-padding: 32px 0; --left-column-width: 58.33%; --right-column-width: 33.33%; /* Border Radius */ --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px; --radius-xl: 16px; --radius-full: 50%; /* Shadows */ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.08); --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.12); --shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.12); --shadow-xl: 0 6px 20px rgba(0, 0, 0, 0.2); --shadow-booking: 0 6px 16px rgba(0, 0, 0, 0.12); /* Transitions */ --transition-fast: 0.15s ease; --transition-normal: 0.25s ease; --transition-slow: 0.4s ease; } /* ---- Reset & Base ---- */ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } html { font-size: 16px; scroll-behavior: smooth; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; } body { font-family: var(--font-family); font-size: var(--font-size-base); font-weight: var(--font-weight-normal); line-height: var(--line-height-normal); color: var(--airbnb-dark); background-color: var(--airbnb-background); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } a { color: var(--airbnb-dark); text-decoration: none; transition: color var(--transition-fast); } a:hover { text-decoration: underline; } img { max-width: 100%; height: auto; display: block; } button { font-family: var(--font-family); cursor: pointer; border: none; background: none; font-size: var(--font-size-base); } ul, ol { list-style: none; } /* ---- Layout Container ---- */ .container { max-width: var(--content-max-width); margin: 0 auto; padding: 0 var(--content-padding); } .section-divider { border: none; border-top: 1px solid var(--airbnb-border-light); margin: 0; } /* ---- Header / Navigation ---- */ .site-header { position: sticky; top: 0; z-index: 100; background: var(--airbnb-background); border-bottom: 1px solid var(--airbnb-border-light); } .header-inner { max-width: var(--content-max-width); margin: 0 auto; padding: 0 var(--content-padding); display: flex; align-items: center; justify-content: space-between; height: 80px; gap: var(--space-lg); } .logo { display: flex; align-items: center; gap: var(--space-sm); color: var(--airbnb-dark); font-weight: var(--font-weight-bold); font-size: var(--font-size-xl); text-decoration: none; order: 1; } .logo:hover { text-decoration: none; opacity: 0.85; } .logo svg { width: 44px; height: 44px; flex-shrink: 0; } .logo-text { display: flex; flex-direction: column; line-height: 1.25; } .logo-name { font-size: 17px; font-weight: 700; color: var(--airbnb-dark); } .logo-location { font-size: 10px; font-weight: 500; color: #0082BB; letter-spacing: 0.06em; text-transform: uppercase; } .header-nav { display: flex; align-items: center; gap: var(--space-lg); } .header-nav a { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--airbnb-dark); padding: var(--space-sm) var(--space-md); border-radius: var(--radius-full); transition: background var(--transition-fast); } .header-nav a:hover { background: var(--airbnb-background-hover); text-decoration: none; } .language-selector { display: flex; align-items: center; gap: var(--space-md); order: 2; } .header-nav { display: flex; align-items: center; gap: var(--space-lg); order: 3; } .lang-flag { display: flex; align-items: center; padding: var(--space-xs) var(--space-sm); border-radius: var(--radius-md); transition: background var(--transition-fast); text-decoration: none; } .lang-flag:hover { background: var(--airbnb-background-hover); } .lang-flag.active { background: var(--airbnb-background-dark); } .lang-flag img { border-radius: 2px; } /* ---- Section Navigation (sticky sub-nav) ---- */ .section-nav { position: sticky; top: 80px; z-index: 90; background: var(--airbnb-background); border-bottom: 1px solid var(--airbnb-border-light); display: none; /* Shown via JS on scroll */ } .section-nav.visible { display: block; } .section-nav-inner { max-width: var(--content-max-width); margin: 0 auto; padding: 0 var(--content-padding); display: flex; gap: var(--space-xl); } .section-nav a { display: block; padding: var(--space-base) 0; font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--airbnb-gray); border-bottom: 2px solid transparent; transition: all var(--transition-fast); } .section-nav a:hover, .section-nav a.active { color: var(--airbnb-dark); border-bottom-color: var(--airbnb-dark); text-decoration: none; } /* ---- Title Section ---- */ .listing-title-section { padding: var(--space-lg) 0 var(--space-base); } .listing-title-row { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-base); } .listing-title { font-size: var(--font-size-2xl); font-weight: var(--font-weight-semibold); line-height: var(--line-height-tight); color: var(--airbnb-dark); } .listing-actions { display: flex; gap: var(--space-md); flex-shrink: 0; } .action-btn { display: flex; align-items: center; gap: var(--space-sm); padding: var(--space-sm) var(--space-md); border-radius: var(--radius-md); font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); color: var(--airbnb-dark); text-decoration: underline; transition: background var(--transition-fast); } .action-btn:hover { background: var(--airbnb-background-hover); } .action-btn svg { width: 16px; height: 16px; } /* ---- Photo Gallery ---- */ .photo-gallery { border-radius: var(--radius-lg); overflow: hidden; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 8px; height: 460px; cursor: pointer; position: relative; } .photo-gallery .photo-main { grid-row: 1 / 3; grid-column: 1; } .photo-gallery .photo-item { overflow: hidden; position: relative; } .photo-gallery .photo-item img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--transition-normal); } .photo-gallery .photo-item:hover img { transform: scale(1.02); } .photo-gallery .photo-grid-right { grid-column: 2; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 8px; grid-row: 1 / 3; } .show-all-photos-btn { position: absolute; bottom: 20px; right: 20px; background: var(--airbnb-background); color: var(--airbnb-dark); border: 1px solid var(--airbnb-dark); padding: 7px 15px; border-radius: var(--radius-md); font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); display: flex; align-items: center; gap: var(--space-sm); z-index: 2; transition: background var(--transition-fast); } .show-all-photos-btn:hover { background: var(--airbnb-background-hover); } /* ---- Content Layout (Two Columns) ---- */ .content-layout { display: flex; gap: 8.33%; padding: var(--space-2xl) 0; position: relative; } .content-main { flex: 0 0 var(--left-column-width); max-width: var(--left-column-width); min-width: 0; } .content-sidebar { flex: 0 0 var(--right-column-width); max-width: var(--right-column-width); min-width: 0; } /* ---- Property Overview ---- */ .property-overview { padding-bottom: var(--space-lg); border-bottom: 1px solid var(--airbnb-border-light); } .property-type-row { display: flex; justify-content: space-between; align-items: center; } .property-type { font-size: var(--font-size-xl); font-weight: var(--font-weight-semibold); color: var(--airbnb-dark); } .property-details { font-size: var(--font-size-base); color: var(--airbnb-gray); margin-top: var(--space-xs); } .property-details span::after { content: ' ยท '; } .property-details span:last-child::after { content: ''; } .new-badge { display: inline-flex; align-items: center; gap: var(--space-xs); font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); color: var(--airbnb-dark); margin-bottom: var(--space-base); } .new-badge svg { width: 16px; height: 16px; fill: var(--airbnb-pink); } /* ---- Host Section ---- */ .host-section { padding: var(--space-lg) 0; border-bottom: 1px solid var(--airbnb-border-light); display: flex; align-items: center; gap: var(--space-base); } .host-avatar { width: 56px; height: 56px; border-radius: var(--radius-full); overflow: hidden; flex-shrink: 0; background: var(--airbnb-background-dark); } .host-avatar img { width: 100%; height: 100%; object-fit: cover; } .host-info h3 { font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); color: var(--airbnb-dark); } .host-info p { font-size: var(--font-size-sm); color: var(--airbnb-gray); margin-top: 2px; } /* ---- Description Section ---- */ .description-section { padding: var(--space-xl) 0; border-bottom: 1px solid var(--airbnb-border-light); } .description-text { font-size: var(--font-size-base); line-height: var(--line-height-relaxed); color: var(--airbnb-dark); } .description-text p { margin-bottom: var(--space-base); } .description-text .truncated { display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden; } .read-more-btn { display: inline-flex; align-items: center; gap: var(--space-xs); margin-top: var(--space-base); font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); color: var(--airbnb-dark); text-decoration: underline; cursor: pointer; background: none; border: none; padding: 0; } .read-more-btn:hover { color: var(--airbnb-dark); } .read-more-btn svg { width: 12px; height: 12px; } /* ---- Bedrooms Section ---- */ .bedrooms-section { padding: var(--space-xl) 0; border-bottom: 1px solid var(--airbnb-border-light); } .bedrooms-section h2 { font-size: var(--font-size-xl); font-weight: var(--font-weight-semibold); margin-bottom: var(--space-lg); } .bedrooms-grid { display: flex; gap: var(--space-base); overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; } .bedroom-card { flex: 0 0 calc(50% - var(--space-sm)); scroll-snap-align: start; border: 1px solid var(--airbnb-border); border-radius: var(--radius-lg); overflow: hidden; } .bedroom-card-image { height: 180px; overflow: hidden; } .bedroom-card-image img { width: 100%; height: 100%; object-fit: cover; } .bedroom-card-info { padding: var(--space-base); } .bedroom-card-info h3 { font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); margin-bottom: var(--space-xs); } .bedroom-card-info p { font-size: var(--font-size-sm); color: var(--airbnb-gray); } /* ---- Amenities Section ---- */ .amenities-section { padding: var(--space-xl) 0; border-bottom: 1px solid var(--airbnb-border-light); } .amenities-section h2 { font-size: var(--font-size-xl); font-weight: var(--font-weight-semibold); margin-bottom: var(--space-lg); } .amenities-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-base); } .amenity-item { display: flex; align-items: center; gap: var(--space-base); padding: var(--space-sm) 0; } .amenity-item svg { width: 24px; height: 24px; flex-shrink: 0; color: var(--airbnb-dark); } .amenity-item span { font-size: var(--font-size-base); color: var(--airbnb-dark); } .show-amenities-btn { margin-top: var(--space-lg); padding: 13px 23px; border: 1px solid var(--airbnb-dark); border-radius: var(--radius-md); font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); color: var(--airbnb-dark); background: var(--airbnb-background); transition: background var(--transition-fast); } .show-amenities-btn:hover { background: var(--airbnb-background-hover); } /* ---- Calendar Section ---- */ .calendar-section { padding: var(--space-xl) 0; border-bottom: 1px solid var(--airbnb-border-light); } .calendar-section h2 { font-size: var(--font-size-xl); font-weight: var(--font-weight-semibold); margin-bottom: var(--space-xs); } .calendar-section .calendar-subtitle { font-size: var(--font-size-sm); color: var(--airbnb-gray); margin-bottom: var(--space-lg); } /* ---- Booking Widget (Sidebar) ---- */ .booking-widget { position: sticky; top: 100px; border: 1px solid var(--airbnb-border); border-radius: var(--radius-lg); padding: var(--space-lg); box-shadow: var(--shadow-booking); background: var(--airbnb-background); } .booking-widget-title { font-size: var(--font-size-xl); font-weight: var(--font-weight-semibold); margin-bottom: var(--space-lg); line-height: var(--line-height-tight); } .booking-dates { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--airbnb-border); border-radius: var(--radius-md); overflow: hidden; margin-bottom: var(--space-md); } .booking-date-field { padding: var(--space-md) var(--space-md); cursor: pointer; transition: background var(--transition-fast); } .booking-date-field:first-child { border-right: 1px solid var(--airbnb-border); } .booking-date-field:hover { background: var(--airbnb-background-hover); } .booking-date-field label { display: block; font-size: 10px; font-weight: var(--font-weight-bold); text-transform: uppercase; letter-spacing: 0.04em; color: var(--airbnb-dark); margin-bottom: 2px; } .booking-date-field input { width: 100%; border: none; outline: none; font-family: var(--font-family); font-size: var(--font-size-sm); color: var(--airbnb-gray); background: transparent; cursor: pointer; } .booking-guests { border: 1px solid var(--airbnb-border); border-radius: var(--radius-md); padding: var(--space-md); margin-bottom: var(--space-base); cursor: pointer; display: flex; justify-content: space-between; align-items: center; transition: background var(--transition-fast); } .booking-guests:hover { background: var(--airbnb-background-hover); } .booking-guests label { display: block; font-size: 10px; font-weight: var(--font-weight-bold); text-transform: uppercase; letter-spacing: 0.04em; color: var(--airbnb-dark); margin-bottom: 2px; } .booking-guests .guest-count { font-size: var(--font-size-sm); color: var(--airbnb-dark); } .booking-guests svg { width: 16px; height: 16px; } .booking-cta { width: 100%; padding: 14px; background: var(--airbnb-pink); color: white; border: none; border-radius: var(--radius-md); font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); cursor: pointer; transition: background var(--transition-fast); background: linear-gradient(to right, #E61E4D, #E31C5F, #D70466); } .booking-cta:hover { background: linear-gradient(to right, #D31C4A, #C91956, #BD045C); } .booking-report { display: flex; align-items: center; justify-content: center; gap: var(--space-sm); margin-top: var(--space-base); font-size: var(--font-size-sm); color: var(--airbnb-gray); } .booking-report a { color: var(--airbnb-gray); text-decoration: underline; font-weight: var(--font-weight-semibold); } /* ---- Location Section ---- */ .location-section { padding: var(--space-2xl) 0; border-bottom: 1px solid var(--airbnb-border-light); } .location-section h2 { font-size: var(--font-size-xl); font-weight: var(--font-weight-semibold); margin-bottom: var(--space-lg); } .map-container { width: 100%; height: 480px; border-radius: var(--radius-lg); overflow: hidden; background: var(--airbnb-background-dark); } .map-container iframe { width: 100%; height: 100%; border: none; } .location-description { margin-top: var(--space-lg); font-size: var(--font-size-base); line-height: var(--line-height-relaxed); color: var(--airbnb-dark); } /* ---- House Rules Section ---- */ .rules-section { padding: var(--space-2xl) 0; border-bottom: 1px solid var(--airbnb-border-light); } .rules-section h2 { font-size: var(--font-size-xl); font-weight: var(--font-weight-semibold); margin-bottom: var(--space-lg); } .rules-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-xl); } .rule-column h3 { font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); margin-bottom: var(--space-base); } .rule-item { display: flex; align-items: center; gap: var(--space-md); padding: var(--space-sm) 0; font-size: var(--font-size-sm); color: var(--airbnb-dark); } .rule-item svg { width: 24px; height: 24px; flex-shrink: 0; } /* ---- Footer ---- */ .site-footer { background: var(--airbnb-background-hover); padding: var(--space-2xl) 0; margin-top: var(--space-2xl); } .footer-inner { max-width: var(--content-max-width); margin: 0 auto; padding: 0 var(--content-padding); } .footer-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-xl); padding-bottom: var(--space-xl); border-bottom: 1px solid var(--airbnb-border); } .footer-column h4 { font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); margin-bottom: var(--space-base); } .footer-column a { display: block; font-size: var(--font-size-sm); color: var(--airbnb-gray); padding: var(--space-xs) 0; } .footer-column a:hover { color: var(--airbnb-dark); text-decoration: underline; } .footer-bottom { padding-top: var(--space-lg); display: flex; justify-content: space-between; align-items: center; font-size: var(--font-size-sm); color: var(--airbnb-gray); } /* ---- Modal ---- */ .modal-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: var(--airbnb-overlay); z-index: 1000; justify-content: center; align-items: center; padding: var(--space-xl); } .modal-overlay.active { display: flex; } .modal-content { background: var(--airbnb-background); border-radius: var(--radius-lg); max-width: 780px; width: 100%; max-height: 90vh; overflow-y: auto; position: relative; animation: modalSlideIn 0.3s ease; } @keyframes modalSlideIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .modal-header { position: sticky; top: 0; background: var(--airbnb-background); padding: var(--space-lg); border-bottom: 1px solid var(--airbnb-border-light); display: flex; align-items: center; z-index: 1; } .modal-close { width: 32px; height: 32px; border-radius: var(--radius-full); display: flex; align-items: center; justify-content: center; transition: background var(--transition-fast); cursor: pointer; background: none; border: none; } .modal-close:hover { background: var(--airbnb-background-hover); } .modal-close svg { width: 16px; height: 16px; } .modal-body { padding: var(--space-lg) var(--space-xl); } .modal-body h2 { font-size: var(--font-size-2xl); font-weight: var(--font-weight-semibold); margin-bottom: var(--space-lg); } .modal-body h3 { font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); margin-top: var(--space-xl); margin-bottom: var(--space-base); } .modal-body p { font-size: var(--font-size-base); line-height: var(--line-height-relaxed); margin-bottom: var(--space-base); color: var(--airbnb-dark); } /* Amenities Modal */ .amenities-modal-category { margin-bottom: var(--space-lg); } .amenities-modal-category h3 { font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); padding-bottom: var(--space-base); margin-bottom: 0; margin-top: var(--space-lg); } .amenities-modal-item { display: flex; align-items: center; gap: var(--space-base); padding: var(--space-base) 0; border-bottom: 1px solid var(--airbnb-border-light); } .amenities-modal-item svg { width: 24px; height: 24px; flex-shrink: 0; } .amenities-modal-item span { font-size: var(--font-size-base); } /* ---- Lightbox ---- */ .lightbox-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.9); z-index: 2000; justify-content: center; align-items: center; } .lightbox-overlay.active { display: flex; } .lightbox-close { position: absolute; top: 20px; left: 20px; width: 40px; height: 40px; border-radius: var(--radius-full); background: rgba(255, 255, 255, 0.1); color: white; display: flex; align-items: center; justify-content: center; cursor: pointer; border: none; z-index: 2001; transition: background var(--transition-fast); } .lightbox-close:hover { background: rgba(255, 255, 255, 0.2); } .lightbox-image { max-width: 90%; max-height: 90vh; object-fit: contain; } .lightbox-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 48px; height: 48px; border-radius: var(--radius-full); background: rgba(255, 255, 255, 0.9); color: var(--airbnb-dark); display: flex; align-items: center; justify-content: center; cursor: pointer; border: none; transition: background var(--transition-fast); } .lightbox-nav:hover { background: white; } .lightbox-prev { left: 20px; } .lightbox-next { right: 20px; } .lightbox-counter { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); color: white; font-size: var(--font-size-sm); } /* ---- Guest Dropdown ---- */ .guest-dropdown { display: none; position: absolute; top: 100%; left: 0; right: 0; background: var(--airbnb-background); border: 1px solid var(--airbnb-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); padding: var(--space-base); z-index: 10; margin-top: var(--space-sm); } .guest-dropdown.active { display: block; } .guest-row { display: flex; justify-content: space-between; align-items: center; padding: var(--space-base) 0; } .guest-row:not(:last-child) { border-bottom: 1px solid var(--airbnb-border-light); } .guest-row-label h4 { font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); } .guest-row-label p { font-size: var(--font-size-sm); color: var(--airbnb-gray); } .guest-counter { display: flex; align-items: center; gap: var(--space-md); } .guest-counter button { width: 32px; height: 32px; border-radius: var(--radius-full); border: 1px solid var(--airbnb-border); display: flex; align-items: center; justify-content: center; font-size: var(--font-size-lg); color: var(--airbnb-gray); transition: all var(--transition-fast); } .guest-counter button:hover:not(:disabled) { border-color: var(--airbnb-dark); color: var(--airbnb-dark); } .guest-counter button:disabled { opacity: 0.3; cursor: not-allowed; } .guest-counter span { min-width: 20px; text-align: center; font-size: var(--font-size-base); } /* ---- Utility Classes ---- */ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .text-center { text-align: center; } .mt-sm { margin-top: var(--space-sm); } .mt-md { margin-top: var(--space-md); } .mt-lg { margin-top: var(--space-lg); } .mb-sm { margin-bottom: var(--space-sm); } .mb-md { margin-bottom: var(--space-md); } .mb-lg { margin-bottom: var(--space-lg); } /* ---- Spinner animation (booking form submit) ---- */ @keyframes btn-spin { to { transform: rotate(360deg); } } .btn-spinner { display: inline-block; width: 15px; height: 15px; border: 2px solid rgba(255, 255, 255, 0.4); border-top-color: #fff; border-radius: 50%; animation: btn-spin 0.7s linear infinite; vertical-align: middle; margin-right: 8px; flex-shrink: 0; } .booking-cta.loading { pointer-events: none; opacity: 0.85; display: flex; align-items: center; justify-content: center; } /* ---- Direct booking badge ---- */ .direct-booking-badge { display: flex; align-items: center; gap: 6px; background: #F0FFF4; border: 1px solid #86EFAC; color: #166534; font-size: 12px; font-weight: 600; padding: 7px 12px; border-radius: var(--radius-md); margin-bottom: 16px; line-height: 1.3; } .direct-booking-badge svg { flex-shrink: 0; color: #16A34A; } /* ---- Confirmation page ---- */ .confirmation-wrapper { max-width: 640px; margin: 80px auto 120px; padding: 0 var(--content-padding); text-align: center; } .confirmation-icon { width: 72px; height: 72px; background: #F0FFF4; border: 2px solid #86EFAC; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 24px; color: #16A34A; } .confirmation-wrapper h1 { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); color: var(--airbnb-dark); margin-bottom: 12px; } .confirmation-wrapper .confirmation-sub { font-size: var(--font-size-lg); color: var(--airbnb-gray); margin-bottom: 36px; line-height: var(--line-height-relaxed); } .confirmation-steps { background: var(--airbnb-background-hover); border-radius: var(--radius-lg); padding: 28px 32px; text-align: left; margin-bottom: 36px; } .confirmation-steps h2 { font-size: var(--font-size-base); font-weight: var(--font-weight-bold); color: var(--airbnb-dark); margin-bottom: 16px; text-transform: uppercase; letter-spacing: 0.04em; font-size: 12px; } .confirmation-step { display: flex; align-items: flex-start; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--airbnb-border-light); } .confirmation-step:last-child { border-bottom: none; padding-bottom: 0; } .confirmation-step-num { width: 28px; height: 28px; background: var(--airbnb-pink); color: #fff; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: var(--font-weight-bold); flex-shrink: 0; } .confirmation-step-text strong { display: block; font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); color: var(--airbnb-dark); margin-bottom: 2px; } .confirmation-step-text span { font-size: var(--font-size-sm); color: var(--airbnb-gray); } .confirmation-actions { display: flex; flex-direction: column; gap: 12px; align-items: center; } .confirmation-actions .btn-primary { display: inline-block; background: var(--airbnb-pink); color: #fff; font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); padding: 14px 28px; border-radius: var(--radius-md); text-decoration: none; transition: background var(--transition-fast); } .confirmation-actions .btn-primary:hover { background: var(--airbnb-pink-hover); } .confirmation-actions .btn-secondary { display: inline-block; font-size: var(--font-size-sm); color: var(--airbnb-gray); text-decoration: underline; cursor: pointer; } /* ---- Parking note tooltip ---- */ .amenity-note { font-size: 11px; color: var(--airbnb-gray); margin-top: 2px; line-height: 1.3; }