/* Normandie Laser: ordinary linked cards first, accessible 3D enhancement second. */
.nl-flip {
  --nl-card-border: #c6dfe9;
  min-width: 0;
  border-radius: 24px;
  background: #fffdfa;
  border: 1px solid var(--nl-card-border);
  box-shadow: 0 10px 32px rgba(10, 61, 90, .055);
}
.nl-flip__inner { min-width: 0; }
.nl-flip__face { min-width: 0; padding: 26px; }
.nl-flip__front {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  background: linear-gradient(145deg, #fffdfa, #eaf4f9);
  border-radius: inherit;
}
.nl-flip__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 58px;
  height: 58px;
  margin-bottom: 27px;
  border: 1px solid #c6dfe9;
  border-radius: 18px;
  background: #fffdfa;
  color: #115f88;
}
.nl-flip__icon svg { width: 31px; height: 31px; }
.nl-flip h3.nl-flip__title {
  margin: 0 0 16px;
  font: 600 22px/1.25 var(--font, Inter, sans-serif);
  letter-spacing: -.025em;
  color: #0a3d5a;
  overflow-wrap: anywhere;
}
.nl-flip .nl-flip__price {
  display: block;
  margin: 0;
  color: #56585e;
  font-size: 14px;
  line-height: 1.55;
  font-weight: 500;
}
.nl-flip__toggle {
  display: none;
  min-height: 44px;
  padding: 8px 0;
  border: 0;
  background: none;
  color: #115f88;
  font: 600 14px/1.4 var(--font, Inter, sans-serif);
  cursor: pointer;
  text-align: left;
}
.nl-flip__toggle span { margin-left: 10px; font-size: 20px; line-height: 1; }
.nl-flip__back { padding-top: 0; }
.nl-flip__back .nl-flip__title { display: none; }
.nl-flip p.nl-flip__description {
  margin: 0 0 22px;
  color: #56585e;
  font-size: 15px;
  line-height: 1.6;
}
.nl-flip__links { display: flex; flex-direction: column; align-items: stretch; gap: 13px; margin-top: auto; }
.nl-flip a.nl-flip__detail {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  color: #115f88;
  font-size: 14px;
  line-height: 1.5;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 4px;
}
.nl-flip a.nl-flip__choose {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-height: 47px;
  padding: 13px 16px;
  border: 1px solid #115f88;
  border-radius: 999px;
  background: #115f88;
  color: #fff;
  font-size: 13px;
  line-height: 1.45;
  font-weight: 600;
  text-align: center;
  text-decoration: none;
}
.nl-flip a.nl-flip__choose:hover { background: #0a3d5a; border-color: #0a3d5a; }
.nl-flip :is(a, button):focus-visible { outline: 3px solid #c69a60; outline-offset: 5px; }
.nl-flip.is-enhanced { perspective: 1400px; background: transparent; border: 0; box-shadow: none; }
.nl-flip.is-enhanced .nl-flip__inner {
  display: grid;
  min-height: 350px;
  height: 100%;
  transform-style: preserve-3d;
  transition: transform .65s cubic-bezier(.2, .72, .18, 1);
  border-radius: inherit;
}
.nl-flip.is-enhanced.is-flipped .nl-flip__inner { transform: rotateY(180deg); }
.nl-flip.is-enhanced .nl-flip__face {
  grid-area: 1 / 1;
  border: 1px solid var(--nl-card-border);
  border-radius: inherit;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  box-shadow: 0 10px 32px rgba(10, 61, 90, .055);
}
.nl-flip.is-enhanced .nl-flip__front { padding-bottom: 25px; }
.nl-flip.is-enhanced .nl-flip__back {
  display: flex;
  flex-direction: column;
  padding: 20px 26px 26px;
  transform: rotateY(180deg);
  background: #f2f9fd;
}
.nl-flip.is-enhanced .nl-flip__back .nl-flip__title { display: block; margin: 12px 0 14px; font-size: 21px; }
.nl-flip.is-enhanced .nl-flip__toggle { display: inline-flex; align-items: center; }
.nl-flip.is-enhanced .nl-flip__open { margin-top: auto; padding-top: 28px; }
.nl-flip.is-enhanced .nl-flip__close { align-self: flex-start; min-height: 35px; color: #56585e; font-size: 12px; }
.nl-flip.is-enhanced .nl-flip__close span { margin: 0 8px 0 0; font-size: 17px; }
.nl-flip.is-enhanced:focus-within { outline: 3px solid #c69a60; outline-offset: 5px; }
@media (min-width: 901px) {
  .article .linkcards:has(> .nl-flip) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .linkcards:has(> .nl-flip) { gap: 20px; }
  .nl-flip.is-enhanced .nl-flip__inner { min-height: 330px; }
  .nl-flip__face { padding: 25px; }
  .nl-flip.is-enhanced .nl-flip__back { padding: 18px 25px 25px; }
}
@media (prefers-reduced-motion: reduce) {
  .nl-flip.is-enhanced .nl-flip__inner { transition: none; }
}
