:root{--ec-portal4-motion-layer-ready:1}/* PORTAL 4.0 coherent motion layer — rebased local integration candidate. */

/* PORTAL 4.0 homepage motion prototype — local preview only.
   Load after the current editorial33/editorial15 sheets. */

html.ec33-motion-ready #main-content.ec-edition33 .ec33-motion-reveal {
  opacity: 0;
  transform: translate3d(var(--ec33-motion-x, 0), 8px, 0);
  transition:
    opacity 480ms cubic-bezier(.2, .7, .2, 1),
    transform 560ms cubic-bezier(.2, .7, .2, 1);
  transition-delay: var(--ec33-reveal-delay, 0ms);
}

html.ec33-motion-ready #main-content.ec-edition33 .ec33-motion-reveal.is-inview,
html.ec33-motion-ready #main-content.ec-edition33 .ec33-motion-reveal:focus-within {
  opacity: 1;
  transform: none;
  transition-delay: 0ms;
}

/* A tiny editorial sun beside the hero copy; separate from the raster/SVG wordmark. */
#main-content.ec-edition33 .ec33-hero__copy {
  position: relative;
}

#main-content.ec-edition33 .ec33-hero__copy::after {
  content: "";
  position: absolute;
  top: -.2rem;
  right: .15rem;
  width: 2.4rem;
  aspect-ratio: 1;
  pointer-events: none;
  opacity: .78;
  background:
    radial-gradient(circle, #f0b342 0 .31rem, transparent .34rem),
    repeating-conic-gradient(from 0deg, transparent 0deg 38deg, #e4a43c 38deg 42deg, transparent 42deg 60deg);
  transform-origin: 50% 50%;
  animation: ec33-sun-turn 72s linear infinite;
}

@keyframes ec33-sun-turn {
  to { transform: rotate(1turn); }
}

/* Pointer devices get a restrained surface cue; photo transforms are intentionally
   avoided because editorial33 applies transform:none!important to authored photos. */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  #main-content.ec-edition33 :is(.ec33-destination, .ec33-card, .ec33-story, .ec33-park) {
    transition: transform 260ms ease, box-shadow 260ms ease, outline-color 260ms ease;
  }

  #main-content.ec-edition33 :is(.ec33-destination, .ec33-card, .ec33-story, .ec33-park):hover {
    transform: translateY(-2px) scale(1.008) rotate(.08deg);
    box-shadow: 0 8px 24px rgb(31 62 49 / 8%);
  }
}

#main-content.ec-edition33 :is(.ec33-destination, .ec33-card, .ec33-story, .ec33-park):focus-within {
  outline: 2px solid #668b79;
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  html.ec33-motion-ready #main-content.ec-edition33 .ec33-motion-reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  #main-content.ec-edition33 .ec33-hero__copy::after {
    animation: none !important;
  }
}
/* PORTAL 4.0 restrained editorial motifs — local prototype only. */
.ec-home-portal .ec-edition33 #home-stories .ec-journal-today {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .55rem 1.25rem;
  margin: clamp(1rem, 2vw, 1.5rem) 0 .8rem;
  padding: .65rem 0;
  border-top: 1px solid rgba(49, 95, 80, .28);
  border-bottom: 1px solid rgba(49, 95, 80, .28);
  color: #315f50;
  font: 650 .7rem/1.45 var(--atlas-body, "DM Sans", Arial, sans-serif);
  letter-spacing: .11em;
  text-transform: uppercase;
}

.ec-home-portal .ec-edition33 #home-stories .ec-journal-today__note {
  color: #66776f;
  font-weight: 500;
  letter-spacing: .025em;
  text-transform: none;
}

.ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif {
  position: relative;
  height: clamp(4rem, 7vw, 5.25rem);
  margin: 0 0 clamp(1.25rem, 2.5vw, 2rem);
  overflow: hidden;
  color: #315f50;
  pointer-events: none;
  user-select: none;
}

.ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif__landmarks {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
  opacity: .42;
}

.ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif__landmarks :is(path, line, ellipse) {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.2;
  vector-effect: non-scaling-stroke;
}

.ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif__sun {
  fill: #e6ae48;
  opacity: .78;
}

.ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif__route {
  position: absolute;
  inset: auto 0 .42rem;
  height: 1.65rem;
  overflow: hidden;
}

.ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif__runner {
  position: absolute;
  top: 0;
  right: 120px;
  width: 2.35rem;
  height: 1.55rem;
}

.ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif__boat {
  display: block;
  width: 100%;
  height: 100%;
  animation: ec-coastline-bob 3.8s ease-in-out infinite;
  transform-origin: 52% 78%;
  will-change: transform;
}

.ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif__boat svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

@keyframes ec-coastline-bob {
  0%, 100% { transform: translateY(0) rotate(-.35deg); }
  50% { transform: translateY(-1.5px) rotate(.35deg); }
}

@media (max-width: 760px) {
  .ec-home-portal .ec-edition33 #home-stories .ec-journal-today {
    align-items: flex-start;
    flex-direction: column;
    margin-top: .8rem;
  }

  .ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif {
    height: 4rem;
    margin-bottom: 1.25rem;
  }

  .ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif__landmarks {
    opacity: .36;
  }

  .ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif__runner {
    width: 2rem;
    right: 24px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif__boat {
    animation: none !important;
    transform: none !important;
    will-change: auto;
  }
}

/* Integration guard: the homepage must never show the retired scroll-following boat. */
.ec-home-portal :is(.ec33-scroll-route, .ec-site-scroll-route) {
  display: none !important;
}

@media (forced-colors: active) {
  .ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif,
  .ec-home-portal .ec-edition33 #home-stories .ec-journal-today {
    color: CanvasText;
    border-color: CanvasText;
  }

  .ec-home-portal .ec-edition33 #home-stories .ec-coastline-motif__sun {
    fill: CanvasText;
  }
}


/* PORTAL 4.0 site-wide motion candidate — local preview only.
   Add after the active template styles. The homepage keeps its separate motion candidate. */
html.ec-site-motion-ready .ec-site-motion-reveal {
  opacity: 0;
  transform: translate3d(var(--ec-site-motion-x, 0), 8px, 0);
  transition: opacity 460ms cubic-bezier(.2,.7,.2,1), transform 540ms cubic-bezier(.2,.7,.2,1), translate 240ms ease, rotate 240ms ease;
  transition-delay: var(--ec-site-motion-delay, 0ms);
}
html.ec-site-motion-ready .ec-site-motion-reveal.is-inview,
html.ec-site-motion-ready .ec-site-motion-reveal:focus-within {
  opacity: 1;
  transform: none;
  transition-delay: 0ms;
}

@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  :is(.ec-around-profile__card,.ec-destination29-card,.ec-bestof-card,.ec-portal-search__start,.ec-saved-card,.ec-trip-item) {
    transition: box-shadow 240ms ease, translate 240ms ease, rotate 240ms ease;
  }
  :is(.ec-around-profile__card,.ec-destination29-card,.ec-bestof-card,.ec-portal-search__start,.ec-saved-card,.ec-trip-item):hover {
    box-shadow: 0 7px 22px rgb(31 62 49 / 8%);
    translate: 0 -1px;
    rotate: .08deg;
  }
}
:is(.ec-around-profile__card,.ec-destination29-card,.ec-bestof-card,.ec-portal-search__start,.ec-saved-card,.ec-trip-item):focus-within {
  outline: 2px solid #668b79;
  outline-offset: 3px;
}

/* One anchored sea mark may sit under a suitable page heading. */
.ec-site-sea-mark {
  position: relative;
  height: 2rem;
  margin-block: .8rem 1rem;
  overflow: hidden;
  pointer-events: none;
  user-select: none;
}
.ec-site-sea-mark::before {
  content: "";
  position: absolute;
  inset: auto 0 .45rem;
  height: 1px;
  background: linear-gradient(90deg,rgba(49,95,80,.18),rgba(49,95,80,.62) 66%,rgba(49,95,80,.18));
}
.ec-site-sea-mark__boat {
  position: absolute;
  right: clamp(1.5rem, 9vw, 6rem);
  bottom: .48rem;
  display: block;
  width: 2rem;
  height: 1.5rem;
  color: #285d49;
  transform-origin: 52% 78%;
  animation: ec-site-boat-bob 3.8s ease-in-out infinite;
  will-change: transform;
}
.ec-site-sea-mark__boat svg { display: block; width: 100%; height: 100%; overflow: visible; }
@keyframes ec-site-boat-bob {
  0%,100% { transform: translateY(0) rotate(-.35deg); }
  50% { transform: translateY(-1.5px) rotate(.35deg); }
}

@media (max-width:760px) {
  .ec-site-sea-mark { height: 1.75rem; margin-block: .65rem .85rem; }
  .ec-site-sea-mark__boat { right: 1.25rem; width: 1.85rem; }
}

/* One SVG-native title motif. A landmark appears only when the template provides
   an explicit data-ec-landmark-motif value; route names are never guessed here. */
.ec-site-title-motif {
  display: inline-flex;
  align-items: flex-end;
  gap: .14em;
  width: auto;
  height: .5em;
  margin-inline-start: .24em;
  vertical-align: .56em;
  color: #dca844;
  pointer-events: none;
  user-select: none;
}
.ec-site-title-motif__sun,
.ec-site-title-motif__landmark { display: block; flex: none; height: 100%; width: auto; overflow: visible; }
.ec-site-title-motif__sun {
  width: .5em;
  min-width: .5em;
  max-width: .5em;
  height: .5em;
  flex: 0 0 .5em;
  aspect-ratio: 1;
  transform-origin: 50% 50%;
  animation: ec-site-sun-turn 96s linear infinite;
}
.ec-site-title-motif__landmark { height: .84em; color: #315f50; }
.ec-site-title-motif[data-kind="cathedral"] .ec-site-title-motif__landmark { width: 1.02em; }
.ec-site-title-motif[data-kind="arena"] .ec-site-title-motif__landmark { width: 1.14em; }
@keyframes ec-site-sun-turn { to { transform: rotate(1turn); } }

@media (max-width:760px) {
  .ec-site-title-motif { height: .44em; gap: .12em; margin-inline-start: .2em; }
  .ec-site-title-motif__sun {
    width: .44em;
    min-width: .44em;
    max-width: .44em;
    height: .44em;
    flex-basis: .44em;
  }
}

@media (prefers-reduced-motion:reduce) {
  html.ec-site-motion-ready .ec-site-motion-reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .ec-site-sea-mark__boat {
    animation: none !important;
    transform: none !important;
    will-change: auto;
  }
  .ec-site-title-motif__sun { animation: none !important; }
}

@media (forced-colors:active) {
  .ec-site-title-motif,
  .ec-site-title-motif__landmark { color: CanvasText; }
}

/* Safari/Firefox/Chromium hard cap for the inline title sun. */
.ec-site-title-motif__sun { width:.5em!important; min-width:.5em!important; max-width:.5em!important; height:.5em!important; flex:0 0 .5em!important; }
@media (max-width:760px) { .ec-site-title-motif__sun { width:.44em!important; min-width:.44em!important; max-width:.44em!important; height:.44em!important; flex-basis:.44em!important; } }
