/* Brighter SUNRISE palette: coral, apricot and rose; dark text on light surfaces. */
:root {
  --paper: #fffaf5;
  --ink: #823b35;
  --forest: #b34438;
  --muted: #79534b;
  --line: #e9c6b7;
  --sage: #ffe2cc;
  --coral: #b34438;
  --coral-dark: #96372f;
  --apricot: #ffc58e;
  --rose: #f8d4ce;
}
::selection { background: #f6c0ac; color: #592d2a; }
.hero-dash { display: inline-block; font-size: .6em; vertical-align: .12em; font-weight: 400; }
.sun-glow { translate: var(--sun-x, 0px) var(--sun-y, 0px); transition: translate .65s cubic-bezier(.22,.61,.36,1); }
.sun-ring { translate: var(--ring-x, 0px) var(--ring-y, 0px); transition: translate .8s cubic-bezier(.22,.61,.36,1); }
.booking-glint { position: absolute; inset: 0; z-index: -1; pointer-events: none; border-radius: inherit; overflow: hidden; }
.booking-glint-light { position: absolute; top: 0; left: -45%; width: 40%; height: 100%; background: linear-gradient(105deg, transparent, #ffe6ab22, transparent); transform: skewX(-16deg); }
.lightbox { transition: background .28s; }
.lightbox-image { width: auto; height: auto; max-height: calc(100dvh - 185px); max-width: 100%; }
@media (max-width:700px) { .lightbox-image { max-height: calc(100dvh - 160px); } }
.lightbox::backdrop { transition: background .28s; }
.lightbox.is-photo-opening, .lightbox.is-photo-closing { background: transparent; }
.lightbox .lightbox-toolbar, .lightbox .lightbox-stage { transition: opacity .2s; }
.lightbox.is-photo-opening .lightbox-toolbar, .lightbox.is-photo-opening .lightbox-stage { opacity: 0; }
.lightbox.is-photo-closing::backdrop { background: transparent; }
.lightbox.is-photo-closing .lightbox-toolbar, .lightbox.is-photo-closing .lightbox-stage { opacity: 0; transition: opacity .16s; }
.lightbox.is-photo-moving .lightbox-image { visibility: hidden; }
.lightbox-flight { position: fixed; margin: 0; z-index: 5; overflow: hidden; pointer-events: none; }
.lightbox-flight img { width: 100%; height: 100%; max-width: none; object-fit: cover; }
.site-header { background: #fffaf5f7; }
.hero-description, .hero-refinement, .hero-experience, .hero-benefits li { color: var(--muted); }
.hero-experience::before { background: #ce7660; }
.hero-benefits svg, .page-sections .principles article>svg { color: #bf6245; }
.hero-benefits li+li { border-color: var(--line); }
.sun-disc { background: linear-gradient(145deg, #ffe4b5 3%, #ffc58e 48%, #f3b3a9 100%); }
.sun-disc::before { content: none; }
/* Golden layer for the scroll-driven sunrise; invisible until the page scrolls. */
.sun-disc::after { inset: 0; z-index: 0; border: 0; opacity: 0; pointer-events: none; background: linear-gradient(160deg, #ffeaa6, #ffc76e 55%, #ffb27c); }
.sun-glow { z-index: 1; }
/* Fixed WhatsApp: desktop glow and a stronger mobile pulse. */
.whatsapp-float, .whatsapp-float::before { animation: none; }
.whatsapp-float::before { content: none; }
@media (min-width:701px) {
  .whatsapp-float { box-shadow: 0 0 0 4px #20b85a24, 0 0 24px #16a95280; }
}
@media (min-width:701px) and (prefers-reduced-motion:no-preference) {
  .whatsapp-float:not(:active) { animation: wa-desktop-glow 2s ease-in-out infinite; }
}
@keyframes wa-desktop-glow {
  0%, 100% { box-shadow: 0 0 0 3px #20b85a20, 0 0 16px #16a95255; }
  50% { box-shadow: 0 0 0 6px #20b85a38, 0 0 30px #16a952aa; }
}
@media (max-width:700px) and (prefers-reduced-motion:no-preference) {
  .whatsapp-float:not(:active) { animation: wa-mobile-pulse 1.4s ease-in-out infinite; }
  .whatsapp-float::before { content: ''; border-color: #16b85a; animation: wa-mobile-ring 1.4s ease-out infinite; }
}
@keyframes wa-mobile-pulse {
  0%, 80%, 100% { opacity: .6; filter: brightness(.85); box-shadow: 0 2px 6px #183e2520; }
  25%, 45% { opacity: 1; filter: brightness(1.15); box-shadow: 0 0 0 4px #20b85a30, 0 0 20px #16a95299; }
}
@keyframes wa-mobile-ring {
  0% { transform: scale(1); opacity: .9; }
  75%, 100% { transform: scale(1.28); opacity: 0; }
}
/* Words of a heading rise from under the line during revealLines(). */
.line-mask { display: inline-block; clip-path: polygon(-20% -40%, 120% -40%, 120% calc(100% + .2em), -20% calc(100% + .2em)); }
.line-mask>span { display: inline-block; }
.sun-glow { position: absolute; inset: 0; border-radius: inherit; pointer-events: none; opacity: .28; background: radial-gradient(ellipse at 30% 30%, #fff6cf 0%, #ffdfa080 40%, transparent 72%); }
.sun-ring { position: absolute; inset: -19px; width: calc(100% + 38px); height: calc(100% + 38px); overflow: visible; pointer-events: none; transform: rotate(-90deg); }
.sun-ring circle { fill: none; stroke: #e9a26f; stroke-width: .15; stroke-dasharray: 1; stroke-dashoffset: 0; }
.sun-ring-outer { inset: -38px; width: calc(100% + 76px); height: calc(100% + 76px); transform: rotate(90deg); }
.sun-ring-outer circle { stroke: #efc2b3; }
.sun-rays { position: absolute; inset: -54px; width: calc(100% + 108px); height: calc(100% + 108px); pointer-events: none; color: #bd7a42; opacity: .65; }
.sun-rays line { stroke: currentColor; stroke-width: .16; stroke-linecap: round; }
.button { position: relative; overflow: hidden; isolation: isolate; }
.tap-wave { position: absolute; border-radius: 50%; pointer-events: none; background: radial-gradient(circle, #ffdfac33, #fff5df66 55%, transparent 72%); }
.page-sections .price-item { position: relative; }
.price-trace { position: absolute; inset: auto 0 -1px; height: 2px; background: linear-gradient(90deg, #c7654c, #e5ad6f); transform-origin: left; pointer-events: none; }
.page-sections .work-photo::before, .page-sections .work-photo::after { content: ''; position: absolute; pointer-events: none; z-index: 1; }
.page-sections .work-photo::before { inset: -30%; background: linear-gradient(110deg, transparent 35%, #fff1d426 50%, transparent 65%); transform: translateX(-80%); opacity: 0; }
.page-sections .work-photo::after { inset: 0; border-radius: inherit; box-shadow: inset 0 0 0 2px #e5ad6f99, inset 0 0 24px #ffddad33; opacity: 0; transition: opacity .3s; }
.page-sections .work-card:focus-visible .work-photo::after, .page-sections .work-card:active .work-photo::after { opacity: 1; }
@media (max-width:700px) {
  .sun-rays { inset: -39px; width: calc(100% + 78px); height: calc(100% + 78px); opacity: .55; }
  .sun-rays line { stroke-width: .25; }
  .sun-ring circle { stroke-width: .28; }
  .sun-ring { inset: -12px; width: calc(100% + 24px); height: calc(100% + 24px); }
  .sun-ring-outer { inset: -25px; width: calc(100% + 50px); height: calc(100% + 50px); }
}
.button:hover { background: var(--coral-dark); border-color: var(--coral-dark); }
.nav-indicator { background: var(--coral); }
.desktop-nav>a[aria-current="location"] { color: var(--coral-dark); }
.mobile-menu nav { background: var(--paper); }
.mobile-menu nav a[aria-current="location"] { background: #ffe2cc; box-shadow: inset 2px 0 var(--coral); }
.text-link:hover, .price-item>a:hover { color: var(--coral-dark); }
.page-sections { --deep-clay: #823b35; --soft-peach: #ffe2cc; }
.page-sections .services-section { background: linear-gradient(120deg, #ffe4c9, #ffebdf 62%, #fbe1dc); }
.page-sections .offer-box { background: #fffaf5; border-color: #e5a883; box-shadow: 0 8px 30px #ac58390a; }
.page-sections .offer-sun { color: #b96a34; }
.page-sections .price-list-heading, .page-sections .price-item { border-color: #dfb39f; }
.page-sections .price-item:focus-within { background: #ffffff70; }
.page-sections .price-item:active { background: #ffffffa0; }
.page-sections .icon-button, .page-sections .gallery-controls .icon-button { border-color: #dc9d83; color: var(--coral); }
.page-sections .gallery-controls .icon-button { background: var(--paper); }
.page-sections .icon-button:hover:not(:disabled), .page-sections .price-item>a:hover svg { background: var(--coral); color: #fff; border-color: var(--coral); }
.page-sections .booking-section { background: linear-gradient(115deg, #a73d36, #b4483c 60%, #ac463e); }
.page-sections .booking-section::before, .page-sections .booking-section::after { border-color: #ffd1a94d; }
.page-sections .booking-section .section-note, .page-sections .booking-section>div>p:not(.section-note), .page-sections .booking-steps p { color: #fff1e6; }
.page-sections .booking-section .button { background: #fffaf5; border-color: #fffaf5; color: #96372f; }
.page-sections .booking-section .button:hover { background: #ffe2cc; border-color: #ffe2cc; }
.page-sections .faq-list details[open] { background: #ffe2cc66; }
.page-sections .faq-list details[open] summary { color: var(--coral-dark); }
.page-sections .contacts-section { background: linear-gradient(120deg, #ffdfbd, #f8d4ce); }
.page-sections .contact-sun { color: #ac5832; }
.page-sections .address-card { background: var(--paper); box-shadow: 0 12px 40px #a9503a08; }
.address-pin { color: var(--coral); }
.booking-dialog, .booking-dialog .booking-close { background: var(--paper); color: var(--ink); }
.booking-field select:focus, .booking-field input:focus, .booking-field textarea:focus { outline-color: var(--coral); border-color: var(--coral); }
@media (hover:hover) {
  .page-sections .work-card:hover .work-photo::after { opacity: 1; }
  .button:hover:not(:active) { transform: translateY(-2px); box-shadow: 0 7px 20px #96372f24; }
  .page-sections .price-item:hover { background: #ffffff70; }
  .page-sections .price-item:hover>a svg { background: var(--coral); color: #fff; }
}
/* Only decorations move. Portrait geometry and text remain stable.
   The observer pauses motion outside the viewport and while a dialog is open. */
@media (prefers-reduced-motion:no-preference) {
  .sun-rays { animation: sunrise-orbit 72s linear infinite paused; }
  .hero-photo[data-motion-visible] .sun-rays { animation-play-state: running; }
  body.modal-open .hero-photo .sun-rays { animation-play-state: paused; }
  .sun-glow { animation: sunrise-light 8s ease-in-out infinite alternate paused; }
  .page-sections .booking-section::before { animation: sunrise-breathe 14s ease-in-out infinite alternate paused; }
  .page-sections .booking-section::after { animation: sunrise-breathe 14s -7s ease-in-out infinite alternate paused; }
  .page-sections .contact-sun { animation: sunrise-orbit 48s linear infinite paused; }
  .hero-photo[data-motion-visible] .sun-glow,
  .booking-section[data-motion-visible]::before,
  .booking-section[data-motion-visible]::after,
  .contact-invitation[data-motion-visible] .contact-sun { animation-play-state: running; }
  body.modal-open .hero-photo .sun-glow,
  body.modal-open .booking-section::before,
  body.modal-open .booking-section::after,
  body.modal-open .contact-invitation .contact-sun { animation-play-state: paused; }
}
@media (hover:hover) and (prefers-reduced-motion:no-preference) {
  .page-sections .work-card:hover .work-photo::before { animation: photo-light-pass .85s ease-out both; }
}
@keyframes photo-light-pass {
  0% { transform: translateX(-80%); opacity: 0; }
  35% { opacity: 1; }
  100% { transform: translateX(80%); opacity: 0; }
}
/* Scroll-driven sunrise: while the first screen scrolls away, the disc rises
   behind the still portrait and warms to gold. Older browsers keep the static disc. */
@supports (animation-timeline: scroll()) {
  @media (prefers-reduced-motion:no-preference) {
    .sun-disc { --sun-rise: -48px; animation: sunrise-rise linear both; animation-timeline: scroll(root block); animation-range: 0 70vh; }
    .sun-disc::after { animation: sunrise-gold linear both; animation-timeline: scroll(root block); animation-range: 0 70vh; }
  }
  @media (prefers-reduced-motion:no-preference) and (max-width:700px) {
    .sun-disc { --sun-rise: -22px; }
  }
}
@keyframes sunrise-rise { to { translate: 0 var(--sun-rise); } }
@keyframes sunrise-gold { to { opacity: .62; } }
@keyframes sunrise-orbit { to { transform: rotate(360deg); } }
@keyframes sunrise-breathe { to { transform: translate(18px,-12px) scale(1.035); } }
@keyframes sunrise-light { from { opacity: .18; } to { opacity: .68; } }
@media (prefers-reduced-motion:reduce) {
  .sun-glow, .sun-ring { translate: none; transition: none; }
  .lightbox, .lightbox::backdrop { transition: none; }
  .button:hover:not(:active), .button:active { transform: none; }
}
