/* NIVA — restrained motion shared by all pages. Content stays visible
   unless the entrance controller has explicitly queued an element. */
:root{
  --niva-ease:cubic-bezier(.22,.68,.2,1);
  --niva-quick:240ms;
  --niva-soft:620ms;
}
.motion-pending{opacity:0}
@view-transition{navigation:none}
.heading-line{
  display:block;
  overflow:hidden;
  overflow:clip;
  padding:.1em .035em .16em;
  margin:-.1em -.035em -.16em;
}
.heading-line-inner{
  display:inline-block;
  max-width:100%;
  vertical-align:top;
  transform-origin:left bottom;
}
.page-seam{position:relative}
.page-seam:before{
  content:'';
  position:absolute;
  inset:0 0 auto;
  height:1px;
  background:var(--line);
  transform-origin:left;
  pointer-events:none;
}

@media(prefers-reduced-motion:no-preference){
  .page-seam[data-motion-state=visible]:before{animation:niva-seam-in 820ms var(--niva-ease) both}

  .button{
    transition:background var(--niva-quick),border-color var(--niva-quick),
      color var(--niva-quick),box-shadow 350ms var(--niva-ease),
      translate 350ms var(--niva-ease),scale 220ms var(--niva-ease);
  }
  .button:hover,.button:focus-visible{transform:none;translate:0 -2px}
  .button:active{transform:none;translate:0 0;scale:.985}
  .button:after{transition:transform 460ms var(--niva-ease)}

  .text-link{
    position:relative;
    background-image:linear-gradient(currentColor,currentColor);
    background-position:left bottom;
    background-repeat:no-repeat;
    background-size:0 1px;
    border-bottom-color:color-mix(in srgb,currentColor 45%,transparent);
    transition:color var(--niva-quick),border-color var(--niva-quick),
      background-size 400ms var(--niva-ease);
  }
  .text-link:hover,.text-link:focus-visible{background-size:100% 1px}
  .desktop-nav a:after{transition:transform 380ms var(--niva-ease)}
  .header-cta{transition:color var(--niva-quick),border-color var(--niva-quick)}
  .header-cta:hover,.header-cta:focus-visible{color:var(--olive);border-color:var(--olive)}
  .footer-top nav a,.footer-bottom a{
    background:linear-gradient(currentColor,currentColor) left bottom/0 1px no-repeat;
    transition:color var(--niva-quick),background-size 380ms var(--niva-ease);
  }
  .footer-top nav a:hover,.footer-top nav a:focus-visible,
  .footer-bottom a:hover,.footer-bottom a:focus-visible{background-size:100% 1px}

  .about-panorama>img,.module-image>img,.detail-picture>img,
  .home-feature-picture img,.home-landscape img{
    transition:scale 700ms var(--niva-ease),filter 500ms var(--niva-ease);
  }
  .about-panorama:hover>img{scale:1.025}
  .home-feature-picture:is(:hover,:focus-within) img,
  .home-landscape:is(:hover,:focus-within) img{scale:1.035}
  .home-feature-picture img,.home-landscape img{transition-duration:850ms,500ms}
  .module-card:hover .module-image>img,
  .detail-photo:hover .detail-picture>img,
  .detail-photo:focus-visible .detail-picture>img{transform:none;scale:1.025}
  .about-principles article{
    transition:border-color 280ms,translate 500ms var(--niva-ease);
  }
  .about-principles article:hover{border-color:var(--olive);translate:0 -4px}
  .about-principles article>span{transition:color var(--niva-quick)}
  .about-principles article:hover>span{color:var(--ink)}

  .contact-form-wrap.niva-contact-card :is(input:not([type=radio]),select,textarea){
    transition:border-color var(--niva-quick),background-color var(--niva-quick),
      box-shadow 280ms;
  }
  .contact-form-wrap.niva-contact-card :is(input:not([type=radio]),select,textarea):focus-visible{
    background:#fff;
    box-shadow:0 0 0 3px #6b705f12;
  }
  .niva-contact-card .fc-choices span{
    transition:background-color var(--niva-quick),border-color var(--niva-quick),
      color var(--niva-quick);
  }
  .niva-contact-card .fc-choices label:hover span{border-color:var(--olive)}
  .niva-contact-card .fc-result:not([hidden]){animation:niva-panel-in 430ms var(--niva-ease) both}

  .mobile-nav:not([hidden]){animation:niva-menu-in 280ms var(--niva-ease) both}
  .mobile-nav:not([hidden]) a{animation:niva-link-in 380ms var(--niva-ease) both}
  .mobile-nav:not([hidden]) a:nth-child(2){animation-delay:25ms}
  .mobile-nav:not([hidden]) a:nth-child(3){animation-delay:50ms}
  .mobile-nav:not([hidden]) a:nth-child(4){animation-delay:75ms}
  .mobile-nav:not([hidden]) a:nth-child(5){animation-delay:100ms}
  .mobile-nav:not([hidden]) a:nth-child(6){animation-delay:125ms}
  .footer-faq>summary{transition:color var(--niva-quick)}
  .footer-faq>summary:hover{color:#d7e0c6}
  .footer-faq>summary>span{transition:transform 280ms var(--niva-ease)}
  .footer-faq[open]>.faq-list{animation:niva-panel-in 380ms var(--niva-ease) both}

  .gallery-dialog[open]{animation:niva-dialog-in 300ms var(--niva-ease) both}
  .gallery-dialog[open]::backdrop{animation:niva-backdrop-in 250ms ease-out both}
  .gallery-dialog .gallery-close,.gallery-dialog-controls button{
    transition:background-color var(--niva-quick),border-color var(--niva-quick),
      color var(--niva-quick);
  }
}

@keyframes niva-seam-in{from{transform:scaleX(.2);opacity:.3}to{transform:scaleX(1);opacity:1}}
@keyframes niva-panel-in{from{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}
@keyframes niva-menu-in{from{opacity:0}to{opacity:1}}
@keyframes niva-link-in{from{opacity:0;translate:0 -5px}to{opacity:1;translate:0 0}}
@keyframes niva-dialog-in{from{opacity:0;scale:.985}to{opacity:1;scale:1}}
@keyframes niva-backdrop-in{from{opacity:0}to{opacity:1}}

@media(prefers-reduced-motion:reduce){
  .motion-pending{opacity:1}
  .button,.text-link,.header-cta,.desktop-nav a:after,
  .footer-top nav a,.footer-bottom a,.about-panorama>img,.module-image>img,
  .detail-picture>img,.home-feature-picture img,.home-landscape img,
  .about-principles article,.about-principles article>span,
  .contact-form-wrap.niva-contact-card :is(input,select,textarea),
  .niva-contact-card .fc-choices span,.footer-faq>summary,.footer-faq>summary>span,
  .gallery-dialog .gallery-close,.gallery-dialog-controls button{transition:none}
  .button:hover,.button:focus-visible,.button:active,
  .about-panorama:hover>img,.module-card:hover .module-image>img,
  .detail-photo:hover .detail-picture>img,.detail-photo:focus-visible .detail-picture>img,
  .home-feature-picture:is(:hover,:focus-within) img,
  .home-landscape:is(:hover,:focus-within) img,
  .about-principles article:hover{translate:none;scale:none}
  .niva-contact-card .fc-result,.mobile-nav,.mobile-nav a,
  .footer-faq>.faq-list,.gallery-dialog,.gallery-dialog::backdrop,
  .page-seam:before{animation:none}
  .heading-line-inner{transform:none}
}
