/* Shared local refinements. All content remains visible without animation support. */
/* Include SVG interaction surfaces, labels and legal-page links in the tap reset. */
*{-webkit-tap-highlight-color:transparent}
:where(a,button,summary,[role="button"],[tabindex]):focus:not(:focus-visible){outline:none}
:focus-visible{outline:2px solid var(--ink);outline-offset:5px}
.hero :focus-visible,.site-header :focus-visible,.form-block :focus-visible,.commercial :focus-visible,.trust :focus-visible,.territory :focus-visible,.site-footer :focus-visible{outline-color:var(--yellow)}
.spain-flag{display:block;flex:0 0 30px;width:30px;height:20px;border:0;background:none;object-fit:contain}
.footer-bottom .spain-flag{flex-basis:24px;width:24px;height:16px;border:0}
@media(max-width:760px){.hero .hero-origin{gap:12px 16px}}
/* Native view timelines: reveal above the mobile CTA bar, then hold for reading.
   An inset makes the scale/fade visible inside the screen rather than below its edge. */
@media(prefers-reduced-motion:no-preference){
  @supports(animation-timeline:view()){
    :is(.proposal-copy h2,.proposal-copy>p,.opportunities>li,
      .section-heading h2,.product-image,.product-info,.product-specs>p,.product-specs dl,
      .commercial-intro h2,.value-list>li,.trust h2,.trust li,.cellar-image,
      .contact-copy h2,.contact-intro,.tradition h2,.tradition p,.tradition figure,.partnership-result){
      --arrival-x:0px;--arrival-y:34px;--arrival-scale:1;--departure-scale:.98;
      --entry-start:0%;
      animation:editorial-enter auto linear both,editorial-exit auto linear forwards;
      animation-timeline:view(block 0% 18%);
      animation-range:entry var(--entry-start) cover 38%,exit 0% exit 100%;
      transform-origin:center;
    }
    :is(.proposal-copy h2,.section-heading h2,.commercial-intro h2,.trust h2,.contact-copy h2,.tradition h2){--arrival-x:0px;--arrival-y:36px;--arrival-scale:.9;--departure-scale:.95;transform-origin:left center}
    :is(.opportunities>li,.value-list>li,.trust li){--arrival-x:24px;--arrival-y:12px}
    :is(.opportunities>li,.value-list>li,.trust li):nth-child(even){--entry-start:15%}
    :is(.proposal-copy>p,.product-specs>p,.contact-intro,.tradition p){--entry-start:10%}
    /* Animate the image frame, not a child of overflow:hidden (a separate scroll container). */
    :is(.product-image,.cellar-image,.tradition figure){--arrival-y:48px;--arrival-scale:.93}
    .partnership-result{--arrival-y:24px;--arrival-scale:.98;--departure-scale:1;--entry-start:0%;animation-range:entry 0% cover 28%,exit 0% exit 100%}
    .product:nth-child(2) .product-image{--arrival-y:56px;--entry-start:8%}
    .product:nth-child(3) .product-image{--arrival-y:68px;--entry-start:16%}
    :is(.opportunities>li,.value-list>li,.trust li,.product-info,.partnership-result):has(:focus-visible){animation:none}
    @keyframes editorial-enter{from{opacity:.06;transform:translate(var(--arrival-x),var(--arrival-y)) scale(var(--arrival-scale))}to{opacity:1;transform:translate(0,0) scale(1)}}
    @keyframes editorial-exit{from{opacity:1;transform:translate(0,0) scale(1)}to{opacity:.06;transform:translateY(-28px) scale(var(--departure-scale))}}
  }
  /* One short invitation per viewport arrival, never an endless attention loop. */
  :is(.text-link,.submit-button,.scroll-cue){position:relative;--cue-x:7px;--cue-y:0px}
  .text-link{--cue-x:5px;--cue-y:-5px}
  .scroll-cue{--cue-x:0px;--cue-y:6px}
  :is(.text-link,.submit-button,.scroll-cue).has-arrived .icon{animation:action-invitation 900ms var(--ease) 1}
  .text-link.has-arrived::after{content:'';position:absolute;inset:auto 0 -1px;height:1px;background:currentColor;transform-origin:left;animation:action-underline 1000ms var(--ease) 1;opacity:0;pointer-events:none}
  :is(.button,.text-link,.map-motion-toggle){transition:scale 160ms var(--ease),background-color 200ms,color 200ms,border-color 200ms}
  :is(.button,.text-link,.map-motion-toggle):active{scale:.975}
  @keyframes action-invitation{0%{translate:0 0}38%{translate:var(--cue-x) var(--cue-y)}100%{translate:0 0}}
  @keyframes action-underline{0%{transform:scaleX(.12);opacity:0}35%{opacity:1}85%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}}
}
