diff --git a/index.html b/index.html new file mode 100644 index 0000000..e608b66 --- /dev/null +++ b/index.html @@ -0,0 +1,459 @@ + + + + + + מספרת כפיר דור | עיצוב שיער בפתח תקווה + + + + + + + + + + + + + +
+
+ +
+

פתח תקווה

+

+ מספרת + כפיר דור +

+

המקום שבו סגנון פוגש מקצועיות

+ +
+ + + +
+ +
+
+
+

השירותים שלנו

+

מגוון שירותים מקצועיים לעיצוב שיער מושלם

+
+
+ +
+
+ +
+

תספורות

+

תספורות מעוצבות לנשים, גברים וילדים. התאמה אישית לסגנון ולמבנה הפנים.

+ החל מ-80 ₪ +
+
+
+ +
+

החלקות

+

החלקה יפנית, ברזילאית וטיפולי קראטין להחלקה ושיקום השיער.

+ החל מ-400 ₪ +
+
+
+ +
+

טיפולים

+

טיפולי שיקום, הזנה ולחות לשיער פגום או יבש. מותגים מובילים.

+ החל מ-150 ₪ +
+
+
+ +
+

עיצוב כלות

+

עיצוב שיער מרהיב ליום המיוחד שלך, כולל ניסיון מקדים.

+ החל מ-500 ₪ +
+
+
+ +
+

ייעוץ אישי

+

ייעוץ מקצועי לבחירת הסגנון, הצבע והטיפול המתאימים ביותר עבורך.

+ חינם +
+
+
+
+ + + +
+
+
+
+
+ +
+
+
+

על המספרה

+

מספרת כפיר דור היא מספרה בוטיק בלב פתח תקווה, שנוסדה מתוך אהבה אמיתית לעולם עיצוב השיער.

+

עם ניסיון של שנים בתעשייה והכשרות מהארץ ומהעולם, אנחנו מביאים את הטרנדים העדכניים ביותר לקהל הלקוחות שלנו. כל לקוח מקבל יחס אישי וייעוץ מקצועי לבחירת הסגנון המושלם עבורו.

+

אנחנו עובדים רק עם מוצרים איכותיים ומותגים מובילים, כי השיער שלכם ראוי לטוב ביותר.

+
+
+ 12+ + שנות ניסיון +
+
+ 5,000+ + לקוחות מרוצים +
+
+ 100% + מחויבות +
+
+
+
+
+
+ +
+
+
+
+

קבעו תור עכשיו

+

מלאו את הטופס ונחזור אליכם בהקדם לאישור התור

+
+

שעות פעילות

+
    +
  • ראשון - חמישי09:00 - 20:00
  • +
  • שישי08:00 - 14:00
  • +
  • שבתסגור
  • +
+
+
+

צרו קשר

+

050-123-4567

+

רחוב הרצל 50, פתח תקווה

+

* יש לעדכן את מספר הטלפון בפועל

+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+
+ + +
+ +
+
+
+
+ +
+
+
+
+
+ +
+

מיקום

+

רחוב הרצל 50
פתח תקווה

+
+
+
+ +
+

טלפון

+

050-123-4567

+
+
+
+ +
+

שעות פעילות

+

א׳-ה׳ 09:00-20:00
ו׳ 08:00-14:00

+
+
+
+
+
+ + + + + + diff --git a/script.js b/script.js new file mode 100644 index 0000000..3f7b82d --- /dev/null +++ b/script.js @@ -0,0 +1,157 @@ +(function() { + 'use strict'; + + // Mobile Navigation Toggle + const navToggle = document.querySelector('.nav__toggle'); + const navMenu = document.querySelector('.nav__menu'); + + if (navToggle && navMenu) { + navToggle.addEventListener('click', function() { + const isOpen = navMenu.classList.toggle('is-open'); + navToggle.classList.toggle('is-open'); + navToggle.setAttribute('aria-expanded', isOpen); + }); + + // Close menu when clicking a link + navMenu.querySelectorAll('a').forEach(function(link) { + link.addEventListener('click', function() { + navMenu.classList.remove('is-open'); + navToggle.classList.remove('is-open'); + navToggle.setAttribute('aria-expanded', 'false'); + }); + }); + + // Close menu on escape key + document.addEventListener('keydown', function(e) { + if (e.key === 'Escape' && navMenu.classList.contains('is-open')) { + navMenu.classList.remove('is-open'); + navToggle.classList.remove('is-open'); + navToggle.setAttribute('aria-expanded', 'false'); + navToggle.focus(); + } + }); + } + + // Reveal on Scroll + const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; + + if (!prefersReducedMotion) { + const revealElements = document.querySelectorAll('.reveal'); + + const revealObserver = new IntersectionObserver(function(entries) { + entries.forEach(function(entry) { + if (entry.isIntersecting) { + entry.target.classList.add('revealed'); + revealObserver.unobserve(entry.target); + } + }); + }, { + threshold: 0.1, + rootMargin: '0px 0px -50px 0px' + }); + + revealElements.forEach(function(el) { + revealObserver.observe(el); + }); + } else { + // If reduced motion is preferred, reveal all elements immediately + document.querySelectorAll('.reveal').forEach(function(el) { + el.classList.add('revealed'); + }); + } + + // Smooth scroll for anchor links + document.querySelectorAll('a[href^="#"]').forEach(function(anchor) { + anchor.addEventListener('click', function(e) { + const targetId = this.getAttribute('href'); + if (targetId === '#') return; + + const target = document.querySelector(targetId); + if (target) { + e.preventDefault(); + target.scrollIntoView({ + behavior: prefersReducedMotion ? 'auto' : 'smooth', + block: 'start' + }); + // Set focus to target for accessibility + target.setAttribute('tabindex', '-1'); + target.focus({ preventScroll: true }); + } + }); + }); + + // Form submission handling + const bookingForm = document.querySelector('.booking__form'); + if (bookingForm) { + bookingForm.addEventListener('submit', function(e) { + e.preventDefault(); + + // Get form data + const formData = new FormData(this); + const data = Object.fromEntries(formData.entries()); + + // Simple validation + const requiredFields = ['name', 'phone', 'service', 'date', 'time']; + const missingFields = requiredFields.filter(function(field) { + return !data[field]; + }); + + if (missingFields.length > 0) { + const firstMissing = bookingForm.querySelector('[name="' + missingFields[0] + '"]'); + if (firstMissing) { + firstMissing.focus(); + firstMissing.reportValidity(); + } + return; + } + + // Simulate submission + const submitBtn = this.querySelector('button[type="submit"]'); + const originalText = submitBtn.textContent; + submitBtn.textContent = 'שולח...'; + submitBtn.disabled = true; + + setTimeout(function() { + alert('תודה! הבקשה שלך התקבלה. ניצור איתך קשר בהקדם לאישור התור.'); + bookingForm.reset(); + submitBtn.textContent = originalText; + submitBtn.disabled = false; + }, 1500); + }); + } + + // Set minimum date to today for date input + const dateInput = document.querySelector('input[type="date"]'); + if (dateInput) { + const today = new Date().toISOString().split('T')[0]; + dateInput.setAttribute('min', today); + } + + // Add scroll-based nav background + const nav = document.querySelector('.nav'); + let ticking = false; + + window.addEventListener('scroll', function() { + if (!ticking) { + window.requestAnimationFrame(function() { + const currentScroll = window.pageYOffset; + + if (currentScroll > 100) { + nav.style.background = 'rgba(13, 13, 13, 0.98)'; + } else { + nav.style.background = 'rgba(13, 13, 13, 0.9)'; + } + + ticking = false; + }); + ticking = true; + } + }, { passive: true }); + + // Update copyright year + const yearSpan = document.getElementById('current-year'); + if (yearSpan) { + yearSpan.textContent = new Date().getFullYear(); + } + +})(); diff --git a/style.css b/style.css new file mode 100644 index 0000000..f55a9e6 --- /dev/null +++ b/style.css @@ -0,0 +1,1175 @@ +:root { + --color-bg: #0d0d0d; + --color-bg-elevated: #161616; + --color-surface: #1f1f1f; + --color-text: #f5f5f5; + --color-text-muted: #a8a8a8; + --color-accent: #c9a87c; + --color-accent-dark: #a68b5b; + --color-accent-light: #e0c9a0; + --font-body: 'Heebo', sans-serif; + --space-xs: 0.5rem; + --space-sm: 1rem; + --space-md: 2rem; + --space-lg: 4rem; + --space-xl: 6rem; + --radius-sm: 4px; + --radius-md: 8px; + --radius-lg: 16px; + --transition-fast: 150ms ease; + --transition-base: 300ms ease; + --transition-slow: 500ms cubic-bezier(0.4, 0, 0.2, 1); + --nav-height: 72px; +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + scroll-behavior: smooth; + scroll-padding-top: var(--nav-height); +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } +} + +body { + font-family: var(--font-body); + font-weight: 400; + font-size: 1rem; + line-height: 1.7; + color: var(--color-text); + background: var(--color-bg); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +img, svg { + display: block; + max-width: 100%; +} + +a { + color: inherit; + text-decoration: none; +} + +button, input, select, textarea { + font: inherit; + color: inherit; +} + +.container { + width: 100%; + max-width: 1200px; + margin-inline: auto; + padding-inline: var(--space-md); +} + +/* Navigation */ +.nav { + position: fixed; + top: 0; + inset-inline: 0; + z-index: 1000; + height: var(--nav-height); + display: flex; + align-items: center; + background: rgba(13, 13, 13, 0.9); + backdrop-filter: blur(10px); + border-bottom: 1px solid rgba(201, 168, 124, 0.1); + transition: background var(--transition-base); +} + +.nav__inner { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + max-width: 1200px; + margin-inline: auto; + padding-inline: var(--space-md); +} + +.nav__logo { + display: flex; + align-items: center; + gap: var(--space-xs); + font-family: var(--font-body); + font-size: 1.25rem; + font-weight: 600; + color: var(--color-accent); +} + +.nav__logo-icon { + width: 40px; + height: 40px; + color: var(--color-accent); +} + +.nav__menu { + display: flex; + align-items: center; + gap: var(--space-md); + list-style: none; +} + +.nav__menu a { + position: relative; + font-size: 0.95rem; + font-weight: 400; + color: var(--color-text-muted); + transition: color var(--transition-fast); +} + +.nav__menu a:hover, +.nav__menu a:focus { + color: var(--color-text); +} + +.nav__menu a:focus-visible { + outline: 2px solid var(--color-accent); + outline-offset: 4px; +} + +.nav__menu a::after { + content: ''; + position: absolute; + bottom: -4px; + inset-inline: 0; + height: 2px; + background: var(--color-accent); + transform: scaleX(0); + transform-origin: var(--transform-origin-end, right); + transition: transform var(--transition-base); +} + +html[dir="rtl"] { + --transform-origin-end: left; + --transform-origin-start: right; +} + +html[dir="ltr"] { + --transform-origin-end: right; + --transform-origin-start: left; +} + +.nav__menu a:hover::after, +.nav__menu a:focus::after { + transform: scaleX(1); + transform-origin: var(--transform-origin-start, left); +} + +.nav__cta { + padding: var(--space-xs) var(--space-sm); + background: var(--color-accent); + color: var(--color-bg) !important; + border-radius: var(--radius-sm); + font-weight: 500; +} + +.nav__cta::after { + display: none !important; +} + +.nav__cta:hover, +.nav__cta:focus { + background: var(--color-accent-light); +} + +.nav__toggle { + display: none; + flex-direction: column; + gap: 5px; + padding: var(--space-xs); + background: none; + border: none; + cursor: pointer; +} + +.nav__toggle:focus-visible { + outline: 2px solid var(--color-accent); + outline-offset: 2px; +} + +.nav__toggle span { + display: block; + width: 24px; + height: 2px; + background: var(--color-text); + transition: var(--transition-fast); +} + +/* Buttons */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0.875rem 2rem; + font-weight: 500; + font-size: 1rem; + border: 2px solid transparent; + border-radius: var(--radius-sm); + cursor: pointer; + transition: all var(--transition-fast); +} + +.btn:focus-visible { + outline: 2px solid var(--color-accent); + outline-offset: 2px; +} + +.btn--primary { + background: var(--color-accent); + color: var(--color-bg); + border-color: var(--color-accent); +} + +.btn--primary:hover, +.btn--primary:focus { + background: var(--color-accent-light); + border-color: var(--color-accent-light); +} + +.btn--ghost { + background: transparent; + color: var(--color-text); + border-color: rgba(255, 255, 255, 0.3); +} + +.btn--ghost:hover, +.btn--ghost:focus { + background: var(--color-text); + color: var(--color-bg); + border-color: var(--color-text); +} + +.btn--full { + width: 100%; +} + +/* Hero */ +.hero { + position: relative; + min-height: 100vh; + min-height: 100dvh; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; +} + +.hero__bg { + position: absolute; + inset: 0; + z-index: -1; +} + +.hero__gradient { + position: absolute; + inset: 0; + background: + radial-gradient(ellipse at 30% 20%, rgba(201, 168, 124, 0.12) 0%, transparent 50%), + radial-gradient(ellipse at 70% 80%, rgba(201, 168, 124, 0.08) 0%, transparent 40%), + var(--color-bg); +} + +.hero__shapes { + position: absolute; + inset: 0; + overflow: hidden; +} + +.hero__shape { + position: absolute; + opacity: 0.5; +} + +.hero__shape--1 { + width: 600px; + height: 600px; + top: -200px; + inset-inline-end: -200px; +} + +.hero__shape--2 { + width: 400px; + height: 400px; + bottom: -100px; + inset-inline-start: -100px; +} + +.hero__content { + text-align: center; + padding: var(--space-xl) var(--space-md); +} + +.hero__eyebrow { + font-size: 0.875rem; + font-weight: 500; + letter-spacing: 0.15em; + text-transform: uppercase; + color: var(--color-accent); + margin-bottom: var(--space-sm); +} + +.hero__title { + font-family: var(--font-body); + font-size: clamp(2.5rem, 8vw, 5.5rem); + font-weight: 300; + line-height: 1.1; + margin-bottom: var(--space-md); +} + +.hero__title-line { + display: block; +} + +.hero__title-line--accent { + color: var(--color-accent); + font-weight: 600; +} + +.hero__subtitle { + font-size: clamp(1.125rem, 2vw, 1.375rem); + font-weight: 400; + color: var(--color-text-muted); + margin-bottom: var(--space-lg); +} + +.hero__actions { + display: flex; + gap: var(--space-sm); + justify-content: center; + flex-wrap: wrap; +} + +.hero__scroll { + position: absolute; + bottom: var(--space-md); + left: 50%; + transform: translateX(-50%); + padding: var(--space-xs); + color: var(--color-accent); + transition: transform var(--transition-base); +} + +.hero__scroll:hover { + transform: translateX(-50%) translateY(4px); +} + +.hero__scroll:focus-visible { + outline: 2px solid var(--color-accent); + outline-offset: 2px; +} + +.hero__scroll svg { + width: 28px; + height: 28px; +} + +/* Section Header */ +.section-header { + text-align: center; + margin-bottom: var(--space-lg); +} + +.section-title { + font-family: var(--font-body); + font-size: clamp(1.75rem, 4vw, 2.75rem); + font-weight: 600; + margin-bottom: var(--space-xs); +} + +.section-subtitle { + font-size: 1.0625rem; + color: var(--color-text-muted); + font-weight: 400; +} + +/* Services */ +.services { + padding: var(--space-xl) 0; + background: var(--color-bg); +} + +.services__grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--space-sm); +} + +.service-card { + position: relative; + padding: var(--space-md); + background: var(--color-bg-elevated); + border: 1px solid rgba(201, 168, 124, 0.1); + border-radius: var(--radius-md); + transition: all var(--transition-base); +} + +.service-card:hover { + transform: translateY(-4px); + border-color: rgba(201, 168, 124, 0.25); + box-shadow: 0 16px 32px rgba(0, 0, 0, 0.2); +} + +.service-card:focus-within { + border-color: var(--color-accent); +} + +.service-card--featured { + grid-column: span 3; + display: grid; + grid-template-columns: auto 1fr auto; + grid-template-rows: auto auto; + gap: var(--space-xs) var(--space-md); + align-items: start; + background: linear-gradient(135deg, var(--color-bg-elevated) 0%, rgba(201, 168, 124, 0.08) 100%); + border-color: rgba(201, 168, 124, 0.2); +} + +.service-card--featured .service-card__icon { + grid-row: span 2; + align-self: center; +} + +.service-card--featured .service-card__title { + align-self: end; + margin-bottom: 0; +} + +.service-card--featured .service-card__desc { + grid-column: 2; + margin-bottom: 0; +} + +.service-card--featured .service-card__price { + grid-column: 3; + grid-row: span 2; + align-self: center; +} + +.service-card__badge { + position: absolute; + top: var(--space-sm); + inset-inline-start: var(--space-sm); + padding: 0.25rem 0.75rem; + background: var(--color-accent); + color: var(--color-bg); + font-size: 0.75rem; + font-weight: 500; + border-radius: var(--radius-sm); +} + +.service-card--featured .service-card__badge { + position: static; + grid-column: 1 / -1; + justify-self: start; + margin-bottom: var(--space-xs); +} + +.service-card__icon { + width: 56px; + height: 56px; + margin-bottom: var(--space-sm); + color: var(--color-accent); +} + +.service-card__icon svg { + width: 100%; + height: 100%; +} + +.service-card__title { + font-family: var(--font-body); + font-size: 1.375rem; + font-weight: 600; + margin-bottom: var(--space-xs); +} + +.service-card__desc { + font-size: 0.9375rem; + color: var(--color-text-muted); + margin-bottom: var(--space-sm); + max-width: 50ch; +} + +.service-card__price { + display: inline-block; + font-size: 0.875rem; + font-weight: 500; + color: var(--color-accent); +} + +/* Gallery */ +.gallery { + padding: var(--space-xl) 0; + background: var(--color-bg-elevated); +} + +.gallery__grid { + display: grid; + grid-template-columns: repeat(6, 1fr); + grid-auto-rows: 200px; + gap: var(--space-sm); +} + +.gallery__item { + position: relative; + border-radius: var(--radius-md); + overflow: hidden; + cursor: pointer; + grid-column: span 2; +} + +.gallery__item:focus { + outline: none; +} + +.gallery__item:focus-visible { + outline: 3px solid var(--color-accent); + outline-offset: 2px; +} + +.gallery__item:focus .gallery__overlay { + opacity: 1; +} + +.gallery__item--wide { + grid-column: span 3; +} + +.gallery__item--tall { + grid-column: span 2; + grid-row: span 2; +} + +.gallery__visual { + position: absolute; + inset: 0; + transition: transform var(--transition-slow); +} + +.gallery__visual svg { + width: 100%; + height: 100%; + object-fit: cover; +} + +.gallery__item:hover .gallery__visual, +.gallery__item:focus .gallery__visual { + transform: scale(1.05); +} + +.gallery__overlay { + position: absolute; + inset: 0; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-end; + padding: var(--space-sm); + background: linear-gradient(to top, rgba(13, 13, 13, 0.85) 0%, transparent 60%); + opacity: 0; + transition: opacity var(--transition-base); +} + +.gallery__item:hover .gallery__overlay, +.gallery__item:focus .gallery__overlay { + opacity: 1; +} + +.gallery__tag { + padding: 0.25rem 0.5rem; + background: var(--color-accent); + color: var(--color-bg); + font-size: 0.75rem; + font-weight: 500; + border-radius: var(--radius-sm); + margin-bottom: 0.25rem; +} + +.gallery__label { + font-size: 1rem; + font-weight: 500; +} + +/* About */ +.about { + padding: var(--space-xl) 0; + background: var(--color-bg); +} + +.about__grid { + display: grid; + grid-template-columns: 0.8fr 1.2fr; + gap: var(--space-lg); + align-items: center; +} + +.about__visual { + position: relative; +} + +.about__portrait { + position: relative; + z-index: 1; +} + +.about__portrait svg { + width: 100%; + max-width: 280px; + margin-inline: auto; +} + +.about__title { + font-family: var(--font-body); + font-size: clamp(1.75rem, 4vw, 2.5rem); + font-weight: 600; + margin-bottom: var(--space-md); +} + +.about__lead { + font-size: 1.125rem; + font-weight: 400; + line-height: 1.6; + margin-bottom: var(--space-sm); + color: var(--color-accent-light); + max-width: 55ch; +} + +.about__text { + font-size: 1rem; + color: var(--color-text-muted); + margin-bottom: var(--space-sm); + max-width: 55ch; +} + +.about__stats { + display: flex; + gap: var(--space-lg); + margin-top: var(--space-md); + padding-top: var(--space-md); + border-top: 1px solid rgba(201, 168, 124, 0.15); +} + +.stat { + text-align: center; +} + +.stat__number { + display: block; + font-family: var(--font-body); + font-size: 2.25rem; + font-weight: 600; + color: var(--color-accent); + line-height: 1; +} + +.stat__label { + font-size: 0.875rem; + color: var(--color-text-muted); +} + +/* Booking */ +.booking { + padding: var(--space-xl) 0; + background: linear-gradient(135deg, var(--color-bg-elevated) 0%, rgba(201, 168, 124, 0.04) 100%); +} + +.booking__grid { + display: grid; + grid-template-columns: 1fr 1.4fr; + gap: var(--space-lg); + align-items: start; +} + +.booking__title { + font-family: var(--font-body); + font-size: clamp(1.75rem, 4vw, 2.5rem); + font-weight: 600; + margin-bottom: var(--space-xs); +} + +.booking__subtitle { + font-size: 1.0625rem; + color: var(--color-text-muted); + margin-bottom: var(--space-md); +} + +.booking__hours, +.booking__contact { + margin-bottom: var(--space-md); +} + +.booking__hours h3, +.booking__contact h3 { + font-size: 1rem; + font-weight: 500; + margin-bottom: var(--space-xs); + color: var(--color-accent); +} + +.booking__hours ul { + list-style: none; +} + +.booking__hours li { + display: flex; + justify-content: space-between; + padding: var(--space-xs) 0; + border-bottom: 1px solid rgba(255, 255, 255, 0.05); + font-size: 0.9375rem; + color: var(--color-text-muted); +} + +.booking__contact p { + font-size: 0.9375rem; + color: var(--color-text-muted); + margin-bottom: 0.25rem; +} + +.booking__contact a { + color: var(--color-text); + transition: color var(--transition-fast); +} + +.booking__contact a:hover, +.booking__contact a:focus { + color: var(--color-accent); +} + +.booking__note { + font-size: 0.75rem !important; + color: var(--color-accent) !important; + font-style: italic; + margin-top: var(--space-xs); +} + +.booking__form { + background: var(--color-bg); + padding: var(--space-md); + border-radius: var(--radius-lg); + border: 1px solid rgba(201, 168, 124, 0.1); +} + +.form-group { + margin-bottom: var(--space-sm); +} + +.form-group label { + display: block; + margin-bottom: 0.25rem; + font-size: 0.875rem; + font-weight: 500; + color: var(--color-text-muted); +} + +.form-group label span { + color: var(--color-accent); +} + +.form-group input, +.form-group select, +.form-group textarea { + width: 100%; + padding: 0.875rem 1rem; + background: var(--color-bg-elevated); + border: 1px solid rgba(201, 168, 124, 0.15); + border-radius: var(--radius-sm); + transition: border-color var(--transition-fast), box-shadow var(--transition-fast); +} + +.form-group input:focus, +.form-group select:focus, +.form-group textarea:focus { + outline: none; + border-color: var(--color-accent); + box-shadow: 0 0 0 3px rgba(201, 168, 124, 0.15); +} + +.form-group input:invalid:not(:placeholder-shown), +.form-group select:invalid:not([value=""]), +.form-group textarea:invalid:not(:placeholder-shown) { + border-color: #e57373; +} + +.form-group select { + cursor: pointer; + appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23a8a8a8' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: left 1rem center; + padding-inline-start: 2.5rem; +} + +html[dir="ltr"] .form-group select { + background-position: right 1rem center; + padding-inline-start: 1rem; + padding-inline-end: 2.5rem; +} + +.form-row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--space-sm); +} + +/* Contact */ +.contact { + padding: var(--space-lg) 0; + background: var(--color-bg); + border-top: 1px solid rgba(201, 168, 124, 0.1); +} + +.contact__grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--space-md); +} + +.contact__item { + text-align: center; + padding: var(--space-md); + background: var(--color-bg-elevated); + border-radius: var(--radius-md); + border: 1px solid rgba(201, 168, 124, 0.08); + transition: border-color var(--transition-base); +} + +.contact__item:hover { + border-color: rgba(201, 168, 124, 0.2); +} + +.contact__icon { + width: 44px; + height: 44px; + margin: 0 auto var(--space-sm); + color: var(--color-accent); +} + +.contact__icon svg { + width: 100%; + height: 100%; +} + +.contact__item h3 { + font-family: var(--font-body); + font-size: 1.125rem; + font-weight: 600; + margin-bottom: 0.25rem; +} + +.contact__item p { + font-size: 0.9375rem; + color: var(--color-text-muted); +} + +.contact__item a { + color: var(--color-text-muted); + transition: color var(--transition-fast); +} + +.contact__item a:hover, +.contact__item a:focus { + color: var(--color-accent); +} + +/* Footer */ +.footer { + padding: var(--space-md) 0; + background: var(--color-bg-elevated); + border-top: 1px solid rgba(201, 168, 124, 0.1); +} + +.footer__inner { + display: flex; + flex-direction: column; + align-items: center; + gap: var(--space-sm); + text-align: center; +} + +.footer__brand { + display: flex; + align-items: center; + gap: var(--space-xs); + font-family: var(--font-body); + font-size: 1.125rem; + font-weight: 500; + color: var(--color-accent); +} + +.footer__logo { + width: 32px; + height: 32px; +} + +.footer__nav { + display: flex; + gap: var(--space-md); + flex-wrap: wrap; + justify-content: center; +} + +.footer__nav a { + font-size: 0.875rem; + color: var(--color-text-muted); + transition: color var(--transition-fast); +} + +.footer__nav a:hover, +.footer__nav a:focus { + color: var(--color-accent); +} + +.footer__nav a:focus-visible { + outline: 2px solid var(--color-accent); + outline-offset: 2px; +} + +.footer__copy { + font-size: 0.8rem; + color: var(--color-text-muted); +} + +/* Reveal Animation */ +.reveal { + opacity: 0; + transform: translateY(24px); + transition: opacity 0.6s ease, transform 0.6s ease; +} + +.reveal.revealed { + opacity: 1; + transform: translateY(0); +} + +/* Responsive */ +@media (max-width: 1024px) { + .about__grid, + .booking__grid { + grid-template-columns: 1fr; + gap: var(--space-md); + } + + .about__visual { + order: -1; + } + + .about__portrait svg { + max-width: 220px; + } + + .services__grid { + grid-template-columns: repeat(2, 1fr); + } + + .service-card--featured { + grid-column: span 2; + grid-template-columns: auto 1fr; + grid-template-rows: auto auto auto; + } + + .service-card--featured .service-card__badge { + grid-column: 1 / -1; + } + + .service-card--featured .service-card__icon { + grid-row: 2 / 4; + } + + .service-card--featured .service-card__title { + grid-column: 2; + } + + .service-card--featured .service-card__desc { + grid-column: 2; + } + + .service-card--featured .service-card__price { + grid-column: 2; + grid-row: auto; + justify-self: start; + margin-top: var(--space-xs); + } + + .gallery__grid { + grid-template-columns: repeat(4, 1fr); + grid-auto-rows: 180px; + } + + .gallery__item--wide { + grid-column: span 2; + } + + .gallery__item--tall { + grid-column: span 2; + grid-row: span 2; + } + + .gallery__item:not(.gallery__item--wide):not(.gallery__item--tall) { + grid-column: span 2; + } +} + +@media (max-width: 768px) { + :root { + --space-xl: 4rem; + --nav-height: 64px; + } + + .nav__menu { + position: fixed; + top: var(--nav-height); + inset-inline: 0; + flex-direction: column; + padding: var(--space-md); + background: var(--color-bg); + border-bottom: 1px solid rgba(201, 168, 124, 0.1); + transform: translateY(-100%); + opacity: 0; + visibility: hidden; + transition: all var(--transition-base); + } + + .nav__menu.is-open { + transform: translateY(0); + opacity: 1; + visibility: visible; + } + + .nav__toggle { + display: flex; + } + + .nav__toggle.is-open span:nth-child(1) { + transform: rotate(45deg) translate(5px, 5px); + } + + .nav__toggle.is-open span:nth-child(2) { + opacity: 0; + } + + .nav__toggle.is-open span:nth-child(3) { + transform: rotate(-45deg) translate(5px, -5px); + } + + .hero__actions { + flex-direction: column; + align-items: center; + } + + .btn { + width: 100%; + max-width: 280px; + } + + .services__grid { + grid-template-columns: 1fr; + } + + .service-card--featured { + grid-column: span 1; + display: block; + } + + .service-card--featured .service-card__badge { + position: absolute; + top: var(--space-sm); + inset-inline-start: var(--space-sm); + margin-bottom: 0; + } + + .service-card--featured .service-card__icon { + margin-bottom: var(--space-sm); + } + + .service-card--featured .service-card__title { + margin-bottom: var(--space-xs); + } + + .service-card--featured .service-card__desc { + margin-bottom: var(--space-sm); + } + + .gallery__grid { + grid-template-columns: repeat(2, 1fr); + grid-auto-rows: 160px; + } + + .gallery__item--wide, + .gallery__item:not(.gallery__item--wide):not(.gallery__item--tall) { + grid-column: span 1; + } + + .gallery__item--tall { + grid-column: span 1; + grid-row: span 2; + } + + .gallery__overlay { + opacity: 1; + } + + .about__stats { + flex-wrap: wrap; + justify-content: center; + gap: var(--space-md); + } + + .contact__grid { + grid-template-columns: 1fr; + } + + .form-row { + grid-template-columns: 1fr; + } +} + +@media (max-width: 480px) { + :root { + --space-md: 1.5rem; + --space-lg: 3rem; + --space-xl: 3rem; + } + + .hero__title { + font-size: 2.25rem; + } + + .gallery__grid { + grid-template-columns: 1fr; + grid-auto-rows: 200px; + } + + .gallery__item--tall, + .gallery__item--wide { + grid-column: span 1; + grid-row: span 1; + } + + .about__stats { + gap: var(--space-sm); + } + + .stat__number { + font-size: 1.75rem; + } +}