.ffgh-hero {
  --cream: #f7f3ec;
  --brown: #4a3528;
  --saddle: #8a6548;
  --horse-width: clamp(300px, 162px, 410px);
  --horse-bottom: clamp(32px, 30px, 84px);
  --journey-duration: 13.4s;
  /* The pastry is 318px from the bottom of the 1536x1024 café drawing. */
  --cafe-pastry-from-bottom: max(124.2px, 31.1%);
  --cafe-mouth-from-bottom: clamp(158px, 85.2px, 216px);
  position: relative;
  isolation: isolate;
  min-height: max(760px, 400px);
  overflow: hidden;
  background: var(--cream);
  color: var(--brown);
}

.ffgh-copy {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: min(100%, 900px);
  margin-inline: auto;
  padding: clamp(7rem, 52px, 10rem) 2rem 2rem;
  text-align: center;
}

.ffgh-copy::before {
  position: absolute;
  inset: 0 -3rem -6rem;
  z-index: -1;
  background: radial-gradient(ellipse 44% 70% at 50% 50%, var(--cream) 55%, rgb(247 243 236 / 0.96) 73%, transparent 100%);
  mask-image: linear-gradient(to bottom, #000 0%, #000 70%, transparent 100%);
  content: "";
  pointer-events: none;
}

.ffgh-trip {
  margin: 0 0 1rem;
  color: var(--saddle);
  font-size: clamp(0.86rem, 6px, 1rem);
  letter-spacing: 0.025em;
}

.ffgh-copy h1 {
  max-width: 13ch;
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(3.7rem, 37.2px, 6.5rem);
  font-weight: 400;
  letter-spacing: -0.055em;
  line-height: 0.96;
  text-wrap: balance;
}

.ffgh-description {
  max-width: 34rem;
  margin: 1.3rem 0 0;
  font-size: clamp(1rem, 7.2px, 1.15rem);
  line-height: 1.5;
}

.ffgh-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.5rem;
  flex-wrap: wrap;
  margin-top: 1.7rem;
}

.ffgh-book,
.ffgh-explore {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

.ffgh-book {
  padding: 0.78rem 1.4rem;
  border-radius: 999px;
  background: var(--brown);
  color: var(--cream);
}

.ffgh-explore {
  color: var(--brown);
  text-decoration: underline;
  text-decoration-color: var(--saddle);
  text-underline-offset: 0.3em;
}

.ffgh-book:focus-visible,
.ffgh-explore:focus-visible {
  outline: 3px solid #304f5b;
  outline-offset: 4px;
}

.ffgh-art {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
}

.ffgh-scene {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: block;
  width: 100%;
  height: 100%;
  background-position: center bottom;
  background-size: cover;
  object-fit: cover;
  object-position: center bottom;
}

.ffgh-lake {
  animation: ffgh-lakeWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-art::after {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(to bottom, var(--cream), rgb(247 243 236 / 0.5) 24%, transparent 48%);
  content: "";
}

.ffgh-castle {
  background-image: url("./assets/ffg-horse-castle.webp");
  background-position: left bottom;
  background-size: 112% 100%;
  animation: ffgh-castleWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-cafe {
  background-image: url("./assets/ffg-horse-cafe.webp");
  background-position: 78.5% bottom;
  animation: ffgh-cafeWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-cafeEmpty {
  background-image: url("./assets/ffg-horse-cafe-empty.webp");
  background-position: 78.5% bottom;
  mask-image: radial-gradient(ellipse 8% 5% at 78.5% calc(100% - var(--cafe-pastry-from-bottom)), #000 50%, transparent 100%);
  animation: ffgh-cafePlateWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-forest {
  background-image: url("./assets/ffg-horse-forest.webp");
  transform: scaleX(-1);
  animation: ffgh-forestWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-trough {
  background-image: url("./assets/ffg-horse-trough.webp");
  animation: ffgh-troughWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-horse {
  position: absolute;
  z-index: 2;
  right: 25%;
  bottom: var(--horse-bottom);
  width: var(--horse-width);
  height: auto;
  aspect-ratio: 3 / 2;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  filter: saturate(0.84) contrast(0.96);
}

.ffgh-horse::before {
  position: absolute;
  z-index: -1;
  right: 13%;
  bottom: 2%;
  left: 11%;
  height: 13%;
  background: radial-gradient(ellipse, rgb(49 40 27 / 0.32), transparent 72%);
  content: "";
}

.ffgh-rest {
  display: none;
}

.ffgh-lakeHorse {
  right: auto;
  left: 300px;
  animation: ffgh-lakeWindow var(--journey-duration) steps(1, end) infinite,
    ffgh-lakePath var(--journey-duration) linear infinite;
}

.ffgh-lakeHorse::before {
  animation: ffgh-lakeShadow var(--journey-duration) linear infinite;
}

.ffgh-lakeHorse span {
  position: absolute;
  inset: 0;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
}

.ffgh-lakeWalk {
  animation: ffgh-lakeWalkWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-lakeBrace {
  background-image: url("./assets/ffg-horse-horse-walk-b.webp");
  animation: ffgh-lakeBraceWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-lakeTakeoff {
  background-image: url("./assets/ffg-horse-horse-gallop-gather.webp");
  animation: ffgh-lakeTakeoffWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-lakeAir {
  background-image: url("./assets/ffg-horse-horse-gallop-extend.webp");
  animation: ffgh-lakeAirWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-lakeLand {
  background-image: url("./assets/ffg-horse-horse-gallop-land.webp");
  animation: ffgh-lakeLandWindow var(--journey-duration) linear infinite;
}

.ffgh-lakeSettle {
  background-image: url("./assets/ffg-horse-horse-rest.webp");
  animation: ffgh-lakeSettleWindow var(--journey-duration) linear infinite;
}

.ffgh-castleHorse {
  right: auto;
  left: 50%;
  transform: translateX(-50%);
  animation: ffgh-castleWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-forestWalking {
  right: 40%;
  transform-origin: center bottom;
  filter: saturate(0.75) brightness(0.91);
  animation: ffgh-forestWindow var(--journey-duration) steps(1, end) infinite,
    ffgh-forestAdvance var(--journey-duration) linear infinite;
}

.ffgh-forestWalking span {
  position: absolute;
  inset: 0;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
}

.ffgh-stepOne {
  background-image: url("./assets/ffg-horse-horse-walk-a.webp");
  animation: ffgh-firstStep 0.64s steps(1, end) infinite;
}

.ffgh-stepTwo {
  background-image: url("./assets/ffg-horse-horse-walk-b.webp");
  animation: ffgh-secondStep 0.64s steps(1, end) infinite;
}

.ffgh-drinking {
  right: 18%;
  bottom: 11%;
  filter: saturate(0.82) brightness(1.03);
  animation: ffgh-troughWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-drinkReady,
.ffgh-drinkSip,
.ffgh-graze {
  position: absolute;
  inset: 0;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
}

.ffgh-drinkReady {
  background-image: url("./assets/ffg-horse-horse-drink.webp");
}

.ffgh-drinkSip {
  background-image: url("./assets/ffg-horse-horse-sip.webp");
}

.ffgh-graze {
  background-image: url("./assets/ffg-horse-horse-graze.webp");
  animation: ffgh-castleGrazePose var(--journey-duration) linear infinite;
}

.ffgh-castleHorse .ffgh-drinkReady {
  animation: ffgh-castleReadyPose var(--journey-duration) linear infinite;
}

.ffgh-castleHorse .ffgh-drinkSip {
  animation: ffgh-castleSipPose var(--journey-duration) linear infinite;
}

.ffgh-castleGrass {
  position: absolute;
  z-index: 3;
  top: 86%;
  left: 88%;
  width: 12%;
  height: 9%;
  overflow: visible;
  fill: none;
  stroke: #5c6238;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2.4;
  transform-origin: center bottom;
  animation: ffgh-castleGrassBite var(--journey-duration) ease-in-out infinite;
}

.ffgh-drinking .ffgh-drinkReady {
  animation: ffgh-troughReadyPose var(--journey-duration) linear infinite;
}

.ffgh-drinking .ffgh-drinkSip {
  animation: ffgh-troughSipPose var(--journey-duration) linear infinite;
}

.ffgh-waterSplash {
  position: absolute;
  z-index: 3;
  top: 66%;
  left: 87%;
  width: 25%;
  overflow: visible;
  fill: none;
  stroke: #c7eaf0;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2.4;
  animation: ffgh-sipSplash var(--journey-duration) ease-out infinite;
}

.ffgh-waterSplash circle {
  fill: #f2faf7;
  stroke: #78b8c9;
  stroke-width: 1;
}

.ffgh-cafeHigh,
.ffgh-cafeMid,
.ffgh-cafeHorse,
.ffgh-cafeBite {
  right: 21.5%;
  bottom: calc(var(--cafe-pastry-from-bottom) - var(--cafe-mouth-from-bottom));
  transform: scale(1.1);
  transform-origin: right bottom;
}

.ffgh-cafeHigh,
.ffgh-cafeMid {
  bottom: calc(var(--cafe-pastry-from-bottom) - var(--cafe-mouth-from-bottom) + 8px);
  transform: scale(1.18);
}

.ffgh-cafeHigh {
  background-image: url("./assets/ffg-horse-horse-cafe-high.webp");
  animation: ffgh-cafeHighWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-cafeMid {
  background-image: url("./assets/ffg-horse-horse-cafe-mid.webp");
  animation: ffgh-cafeMidWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-cafeHorse {
  background-image: url("./assets/ffg-horse-horse-cafe.webp");
  animation: ffgh-cafeIdleWindow var(--journey-duration) steps(1, end) infinite;
}

.ffgh-cafeBite {
  background-image: url("./assets/ffg-horse-horse-bite.webp");
  animation: ffgh-cafeBiteWindow var(--journey-duration) steps(1, end) infinite;
}

/* Lake 0-2.6s, castle 2.6-5s, café 5-8s, forest 8-10.4s, trough 10.4-13.4s. */
@keyframes ffgh-lakeWindow {
  0%, 19.39% { opacity: 1; }
  19.40%, 100% { opacity: 0; }
}

@keyframes ffgh-lakePath {
  0% { transform: translate(-50%, 0); }
  7.38% { transform: translate(calc(-50% + 48px), 0); }
  9.31% { transform: translate(calc(-50% + 51px), 5px); }
  12.03% { transform: translate(calc(-50% + 90px), -16px); }
  15.14% { transform: translate(calc(-50% + 150px), -24px); }
  16.30% { transform: translate(calc(-50% + 174px), -8px); }
  17.86%, 100% { transform: translate(calc(-50% + 192px), 0); }
}

@keyframes ffgh-lakeShadow {
  0%, 7.38% { opacity: 1; transform: translateY(0) scale(1); }
  9.31% { opacity: 0.75; transform: translateY(-5px) scale(0.9); }
  12.03% { opacity: 0.35; transform: translateY(16px) scale(0.7); }
  15.14% { opacity: 0.25; transform: translateY(24px) scale(0.6); }
  16.30% { opacity: 0.7; transform: translateY(8px) scale(0.85); }
  17.86%, 100% { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes ffgh-lakeWalkWindow {
  0%, 7.37% { opacity: 1; }
  7.38%, 100% { opacity: 0; }
}

@keyframes ffgh-lakeBraceWindow {
  0%, 7.37%, 9.31%, 100% { opacity: 0; }
  7.38%, 9.30% { opacity: 1; }
}

@keyframes ffgh-lakeTakeoffWindow {
  0%, 9.30%, 12.03%, 100% { opacity: 0; }
  9.31%, 12.01% { opacity: 1; }
}

@keyframes ffgh-lakeAirWindow {
  0%, 12.01%, 16.30%, 100% { opacity: 0; }
  12.03%, 16.29% { opacity: 1; }
}

@keyframes ffgh-lakeLandWindow {
  0%, 16.29%, 18.24%, 100% { opacity: 0; }
  16.30%, 17.27% { opacity: 1; }
}

@keyframes ffgh-lakeSettleWindow {
  0%, 17.27% { opacity: 0; }
  18.24%, 100% { opacity: 1; }
}

@keyframes ffgh-castleWindow {
  0%, 19.39%, 37.31%, 100% { opacity: 0; }
  19.40%, 37.30% { opacity: 1; }
}

@keyframes ffgh-cafeWindow {
  0%, 37.30%, 59.70%, 100% { opacity: 0; }
  37.31%, 59.69% { opacity: 1; }
}

@keyframes ffgh-cafePlateWindow {
  0%, 48.50%, 59.70%, 100% { opacity: 0; }
  48.51%, 59.69% { opacity: 1; }
}

@keyframes ffgh-cafeIdleWindow {
  0%, 44.59%, 46.27%, 50.19%, 51.87%, 59.70%, 100% { opacity: 0; }
  44.60%, 46.26%, 50.20%, 51.86% { opacity: 1; }
}

@keyframes ffgh-cafeBiteWindow {
  0%, 46.26%, 50.20%, 100% { opacity: 0; }
  46.27%, 50.19% { opacity: 1; }
}

@keyframes ffgh-cafeHighWindow {
  0%, 37.30%, 41.23%, 54.10%, 59.70%, 100% { opacity: 0; }
  37.31%, 41.22%, 54.11%, 59.69% { opacity: 1; }
}

@keyframes ffgh-cafeMidWindow {
  0%, 41.22%, 44.60%, 51.86%, 54.11%, 100% { opacity: 0; }
  41.23%, 44.59%, 51.87%, 54.10% { opacity: 1; }
}

@keyframes ffgh-forestWindow {
  0%, 59.69%, 77.61%, 100% { opacity: 0; }
  59.70%, 77.60% { opacity: 1; }
}

@keyframes ffgh-troughWindow {
  0%, 77.60% { opacity: 0; }
  77.61%, 100% { opacity: 1; }
}

@keyframes ffgh-forestAdvance {
  0%, 59.70% { transform: translate(-95px, 24px) scale(1.04); }
  77.61%, 100% { transform: translate(95px, -55px) scale(0.84); }
}

@keyframes ffgh-castleReadyPose {
  0%, 21.64% { opacity: 1; }
  22.76%, 32.46% { opacity: 0; }
  33.58%, 100% { opacity: 1; }
}

@keyframes ffgh-castleSipPose {
  0%, 21.64% { opacity: 0; }
  22.76% { opacity: 1; }
  23.88%, 31.34% { opacity: 0; }
  32.46% { opacity: 1; }
  33.58%, 100% { opacity: 0; }
}

@keyframes ffgh-castleGrazePose {
  0%, 22.76% { opacity: 0; }
  23.88%, 31.34% { opacity: 1; }
  32.46%, 100% { opacity: 0; }
}

@keyframes ffgh-castleGrassBite {
  0%, 23.88% { transform: rotate(0) scaleY(1); }
  26.12% { transform: rotate(-6deg) scaleY(0.93); }
  28.36% { transform: rotate(4deg) scaleY(0.82); }
  31.34% { transform: rotate(-3deg) scaleY(0.72); }
  32.46%, 100% { transform: rotate(0) scaleY(0.72); }
}

@keyframes ffgh-troughReadyPose {
  0%, 81.64% { opacity: 1; }
  84.55%, 94.18% { opacity: 0; }
  96.65%, 100% { opacity: 1; }
}

@keyframes ffgh-troughSipPose {
  0%, 81.64% { opacity: 0; }
  84.55%, 94.18% { opacity: 1; }
  96.65%, 100% { opacity: 0; }
}

@keyframes ffgh-sipSplash {
  0%, 84.33%, 94.63%, 100% { opacity: 0; transform: translateY(5px) scale(0.8); }
  85.68%, 88.36%, 91.50% { opacity: 1; transform: translateY(-4px) scale(1); }
  87.01%, 89.93%, 93.06% { opacity: 0.45; transform: translateY(1px) scale(0.92); }
}

@keyframes ffgh-firstStep {
  0%, 49.99% { opacity: 1; }
  50%, 100% { opacity: 0; }
}

@keyframes ffgh-secondStep {
  0%, 49.99% { opacity: 0; }
  50%, 100% { opacity: 1; }
}

@keyframes ffgh-lakePathMobile {
  0% { transform: translate(-50%, 0); }
  7.38% { transform: translate(calc(-50% + 48px), 0); }
  9.31% { transform: translate(calc(-50% + 60px), 0); }
  12.03% { transform: translate(calc(-50% + 78px), -5.6px); }
  15.14% { transform: translate(calc(-50% + 108px), -12px); }
  16.30% { transform: translate(calc(-50% + 114px), -8px); }
  17.86%, 100% { transform: translate(calc(-50% + 132px), 0); }
}

@keyframes ffgh-lakeShadowMobile {
  0%, 7.38% { opacity: 1; transform: translateY(0) scale(1); }
  9.31% { opacity: 0.75; transform: translateY(0) scale(0.9); }
  12.03% { opacity: 0.35; transform: translateY(5.6px) scale(0.7); }
  15.14% { opacity: 0.25; transform: translateY(12px) scale(0.6); }
  16.30% { opacity: 0.7; transform: translateY(8px) scale(0.85); }
  17.86%, 100% { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes ffgh-forestAdvanceMobile {
  0%, 59.70% { transform: translate(-42px, 18px) scale(1.02); }
  77.61%, 100% { transform: translate(75px, -72px) scale(0.84); }
}

@media (prefers-reduced-motion: reduce), (prefers-reduced-data: reduce) {
  .ffgh-forest,
  .ffgh-castle,
  .ffgh-trough,
  .ffgh-cafe,
  .ffgh-cafeEmpty,
  .ffgh-castleHorse,
  .ffgh-forestWalking,
  .ffgh-stepOne,
  .ffgh-stepTwo,
  .ffgh-drinking,
  .ffgh-drinkReady,
  .ffgh-drinkSip,
  .ffgh-graze,
  .ffgh-castleGrass,
  .ffgh-waterSplash,
  .ffgh-cafeHigh,
  .ffgh-cafeMid,
  .ffgh-cafeHorse,
  .ffgh-cafeBite,
  .ffgh-lakeHorse {
    display: none;
    animation: none;
  }

  .ffgh-rest {
    display: block;
  }

  .ffgh-lake {
    animation: none;
  }
}

.ffg-casa-product .product-card{min-width:0;border:1px solid var(--line);background:#fffdf9}.ffg-casa-product .product-card__visual{display:block}.ffg-casa-product .product-art{position:relative;display:grid;place-items:center;min-height:255px;overflow:hidden;background:#ebd9c1}.ffg-casa-product .product-art--cookie{background:#ead5be}.ffg-casa-product .product-art--loaf{background:#e0e5cf}.ffg-casa-product .product-art--roll{background:#f0d7c7}.ffg-casa-product .product-art--bun{background:#e5dfc8}.ffg-casa-product .product-art__arch{position:absolute;bottom:0;width:65%;height:83%;border-radius:140px 140px 0 0;background:#f8e9d8}.ffg-casa-product .product-art--loaf .product-art__arch{background:#f1eedf}.ffg-casa-product .product-art--roll .product-art__arch{background:#fae9df}.ffg-casa-product .product-art__plate{position:absolute;bottom:18%;left:10%;width:80%;height:10%;border:4px solid #c8a782;border-radius:50%;background:#fff5e6}.ffg-casa-product .product-art__bake{position:absolute;z-index:1;bottom:33%;left:17%;width:66%;height:210%;background:#bb742c;box-shadow:inset -11px -12px 0 rgba(106,56,20,.13)}.ffg-casa-product .product-art--cookie .product-art__bake{border-radius:50%;transform:rotate(-17deg);background:radial-gradient(circle at 30% 27%,#57351f 0 4%,transparent 5%),radial-gradient(circle at 70% 23%,#57351f 0 5%,transparent 6%),radial-gradient(circle at 53% 55%,#57351f 0 6%,transparent 7%),radial-gradient(circle at 22% 70%,#57351f 0 4%,transparent 5%),radial-gradient(circle at 76% 75%,#57351f 0 5%,transparent 6%),#c98a43}.ffg-casa-product .product-art--loaf .product-art__bake{bottom:26%;left:6%;width:88%;height:240%;border-radius:62% 62% 17% 17%;background:repeating-linear-gradient(118deg,transparent 0 32px,#f1d49b 34px 41px,transparent 44px 68px),#bc722a}.ffg-casa-product .product-art--roll .product-art__bake{left:14%;width:72%;height:265%;border-radius:48% 48% 35% 35%;background:radial-gradient(ellipse at 50% 40%,#fff2dd 0 10%,#9d5424 11% 15%,#edd1ae 17% 26%,#985122 28% 32%,#d99b5c 34% 45%,#9a542b 49% 54%,#c0803d 58%),#b67234}.ffg-casa-product .product-art--bun .product-art__bake{left:10%;width:80%;height:205%;border-radius:62% 62% 25% 25%;background:radial-gradient(circle at 52% 20%,#fff1dd 0 8%,transparent 9%),radial-gradient(circle at 40% 34%,#fff1dd 0 7%,transparent 8%),radial-gradient(circle at 64% 40%,#fff1dd 0 8%,transparent 9%),#c38645}.ffg-casa-product .product-art__caption{position:absolute;bottom:9px;left:0;right:0;color:#6c6e50;font:italic .75rem/1 var(--serif);text-align:center}.ffg-casa-product .product-art img{width:100%;height:100%;min-height:255px;object-fit:cover}.ffg-casa-product .product-card__body{display:flex;flex-direction:column;min-height:237px;padding:18px 18px 16px}.ffg-casa-product .product-card__category{color:var(--orange);font-size:.71rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.ffg-casa-product .product-card h3{margin:10px 0 6px;color:var(--forest);font:400 clamp(1.22rem,1.8vw,1.65rem)/1.15 var(--serif)}.ffg-casa-product .product-card h3 a:hover{color:var(--orange)}.ffg-casa-product .product-card p{margin:0 0 16px;color:#5f6759;font-size:.85rem;line-height:1.5}.ffg-casa-product .product-card__bottom{display:flex;align-items:center;justify-content:space-between;margin-top:auto}.ffg-casa-product .product-card__bottom strong{color:var(--forest);font-size:1.05rem}.ffg-casa-product .product-card small{margin-top:4px;color:#777567;font-size:.73rem}.ffg-casa-product .product-art--large{min-height:590px}.ffg-casa-product .product-art--large .product-art__arch{width:61%;height:83%;border-radius:260px 260px 0 0}.ffg-casa-product .product-art--large .product-art__caption{bottom:22px;font-size:1rem}.ffg-casa-product .product-art--large img{height:590px}
@media(max-width:1000px){.ffg-casa-product .product-card__body{min-height:220px}.ffg-casa-product .product-art{min-height:300px}}
@media(max-width:700px){.ffg-casa-product .product-art{min-height:230px}.ffg-casa-product .product-card__body{padding:13px;min-height:252px}.ffg-casa-product .product-card h3{font-size:1.32rem}.ffg-casa-product .product-art--large{min-height:420px}.ffg-casa-product .product-art--large img{height:420px}}
@media(max-width:480px){.ffg-casa-product .product-art{min-height:170px}.ffg-casa-product .product-art__arch{height:85%}.ffg-casa-product .product-card__body{min-height:254px;padding:11px}.ffg-casa-product .product-card__category{font-size:.6rem}.ffg-casa-product .product-card h3{font-size:1.13rem}.ffg-casa-product .product-card p{font-size:.76rem}.ffg-casa-product .product-card__bottom strong{font-size:.9rem}}
.ffg-casa-product .product-card,.ffg-casa-product .product-art--large{border-radius:18px}
.ffg-casa-product .product-card,.ffg-casa-product .product-art--large{overflow:hidden}
@media(max-width:480px){.ffg-casa-product .product-card{display:flex;flex-direction:column}.ffg-casa-product .product-card__visual{flex:none}.ffg-casa-product .product-card__body{flex:1;min-height:0;padding:11px}.ffg-casa-product .product-card__category{font-size:.62rem}.ffg-casa-product .product-card h3{font-size:1.14rem}.ffg-casa-product .product-card p{display:none}.ffg-casa-product .product-card__bottom{flex-wrap:wrap;gap:6px}.ffg-casa-product .product-card__bottom strong{font-size:.94rem}.ffg-casa-product .product-card__action{min-width:68px}.ffg-casa-product .product-card__minimum{margin-right:0}}
.ffg-casa-product .product-art{aspect-ratio:1;min-height:0}.ffg-casa-product .product-art img{position:absolute;inset:0;display:block;width:100%;height:100%;min-height:0;object-fit:cover}.ffg-casa-product .product-art--large{min-height:0}.ffg-casa-product .product-art--large img{height:100%}.ffg-casa-product .product-art[data-product-id="walnut-cookie"] img{transform:scale(1.85);transform-origin:left center}.ffg-casa-product .product-art[data-product-id="raspberry-cookie"] img{transform:scale(1.85);transform-origin:right center}
.ffg-casa-product .product-art__missing{padding:24px;color:var(--forest);font:italic 1.2rem var(--serif);text-align:center}

.ffg-casa-product .product-card__bottom{flex-wrap:wrap;align-content:flex-end;gap:6px;min-height:92px}
.ffg-casa-product .product-card__meta{display:flex;align-items:center;flex-wrap:wrap;gap:2px 7px}
.ffg-casa-product .product-card__minimum{border-left:1px solid var(--line);padding-left:7px;color:var(--forest);font-size:.68rem;font-weight:700;line-height:1.2;white-space:nowrap}
.ffg-casa-product .product-card__quantity{display:grid;grid-template-columns:44px minmax(16px,1fr) 44px;align-items:center;width:100%;height:44px;overflow:hidden;border-radius:999px;color:var(--forest);box-shadow:inset 0 0 0 1px var(--forest);animation:ffg-casa-card-quantity-in .24s cubic-bezier(.2,.8,.2,1)}
.ffg-casa-product .product-card__editing{display:grid;grid-template-columns:minmax(0,1fr);width:100%;gap:4px}
.ffg-casa-product .product-card{position:relative;transform-origin:center 70%;transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s}
@media(hover:hover) and (pointer:fine){.ffg-casa-product .product-card:hover{z-index:1;transform:translateY(-8px);box-shadow:0 18px 30px rgba(16,42,23,.16);animation:ffg-casa-product-card-wiggle .42s ease-in-out}}
@keyframes ffg-casa-product-card-wiggle{0%,100%{rotate:0deg}32%{rotate:-1.3deg}68%{rotate:.9deg}}
@media(prefers-reduced-motion:reduce){.ffg-casa-product .product-card{transition:none}.ffg-casa-product .product-card:hover{transform:none;animation:none}}
.ffg-casa-product .product-card__quantity button{display:grid;place-items:center;width:44px;height:44px;border:0;background:transparent;color:inherit;font-size:1.35rem;line-height:1}
.ffg-casa-product .product-card__quantity button:focus-visible{outline:2px solid var(--orange);outline-offset:-3px;border-radius:50%}
.ffg-casa-product .product-card__quantity button:disabled{opacity:.35;cursor:not-allowed}
.ffg-casa-product .product-card__quantity output{text-align:center;font-size:.9rem;font-weight:800}
.ffg-casa-product .product-card__action{display:inline-flex;align-items:center;justify-content:center;flex:none;min-width:76px;min-height:44px;border:0;border-radius:999px;padding:0 11px;background:var(--orange);color:white;font-size:.78rem;font-weight:800;line-height:1;transition:background-color .2s,transform .2s}
.ffg-casa-product .product-card__action:hover{background:#cc4711}
.ffg-casa-product .product-card__action:active{transform:scale(.96)}
.ffg-casa-product .product-card__confirm{justify-content:space-between;gap:4px;width:100%;min-width:0;padding-inline:10px;white-space:nowrap}
.ffg-casa-product .product-card__confirm-total{font-variant-numeric:tabular-nums}
.ffg-casa-product .product-card__feedback{position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:5px;flex:0 0 100%;width:100%;max-width:100%;min-height:44px;border-radius:999px;padding:0 9px;background:#cc4711;box-shadow:0 6px 12px rgba(129,45,11,.15);color:white;font-size:.72rem;font-weight:800;white-space:nowrap;animation:ffg-casa-card-feedback-in .25s cubic-bezier(.2,.8,.2,1) both}
.ffg-casa-product .product-card__feedback svg{width:22px;height:22px;flex:none;overflow:visible}
.ffg-casa-product .product-card__feedback path{fill:none;stroke:white;stroke-width:2.7;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:24;stroke-dashoffset:24;animation:ffg-casa-card-feedback-check .36s .16s ease-out forwards}
.ffg-casa-product .product-card__spark{position:absolute;top:5px;width:5px;height:5px;border-radius:50%;background:#f7b35b;opacity:0;pointer-events:none;animation:ffg-casa-card-feedback-spark .65s .12s ease-out both}
.ffg-casa-product .product-card__spark--one{left:19%;--spark-x:-8px;--spark-y:-16px}
.ffg-casa-product .product-card__spark--two{left:38%;--spark-x:-3px;--spark-y:-22px;animation-delay:.18s}
.ffg-casa-product .product-card__spark--three{right:34%;--spark-x:4px;--spark-y:-19px;animation-delay:.15s}
.ffg-casa-product .product-card__spark--four{right:16%;--spark-x:9px;--spark-y:-14px;animation-delay:.21s}
@keyframes ffg-casa-card-quantity-in{from{opacity:.45;transform:translateX(9px) scale(.96)}to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes ffg-casa-card-feedback-in{from{opacity:.4;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
@keyframes ffg-casa-card-feedback-check{to{stroke-dashoffset:0}}
@keyframes ffg-casa-card-feedback-spark{0%{opacity:0;transform:translate(0,0) scale(.5)}30%{opacity:1}100%{opacity:0;transform:translate(var(--spark-x),var(--spark-y)) scale(1)}}
@media(prefers-reduced-motion:reduce){.ffg-casa-product .product-card__quantity{animation:none}.ffg-casa-product .product-card__action{transition:none}}
@media(max-width:480px){.ffg-casa-product .product-card__minimum{font-size:.62rem}.ffg-casa-product .product-card__feedback{gap:3px;padding:0 6px;font-size:.66rem}.ffg-casa-product .product-card__feedback svg{width:20px;height:20px}}
@media(max-width:360px){.ffg-casa-product .product-card__minimum{border-left:0;padding-left:0}.ffg-casa-product .product-card__confirm{padding-inline:7px;font-size:.68rem}}
.ffg-casa-product .product-card__bottom{justify-content:flex-end}
.ffg-casa-product .product-card__price{margin-right:auto;white-space:nowrap}

.ffg-oven .about-hero__oven{width:min(100%,500px);justify-self:center}
.ffg-oven .about-hero__oven svg{display:block;width:100%;height:auto;overflow:visible}
.ffg-oven .about-hero__oven-tray{transform-box:fill-box;transform-origin:center 70%;animation:ffg-casa-oven-scroll-out 6s ease-in-out infinite}
.ffg-oven .about-hero__oven-steam path{opacity:.45;animation:ffg-casa-oven-steam 3.6s ease-in-out infinite}
.ffg-oven .about-hero__oven-steam path:nth-child(2){animation-delay:-1.2s}
.ffg-oven .about-hero__oven-steam path:nth-child(3){animation-delay:-2.4s}
@keyframes ffg-casa-oven-scroll-out{0%,12%,100%{transform:translateY(-24px) scale(.84)}48%,70%{transform:translateY(28px) scale(1.1)}}
@keyframes ffg-casa-oven-steam{0%,100%{opacity:.1;transform:translateY(8px)}50%{opacity:.7;transform:translateY(-8px)}}
@media(prefers-reduced-motion:reduce){.ffg-oven .about-hero__oven-tray,.ffg-oven .about-hero__oven-steam path{animation:none}.ffg-oven .about-hero__oven-tray{transform:translateY(28px) scale(1.1)}}

/* Public mobile page and enquiry form polish */

.ffg-matchd-receipt .relative {
    position: relative
}
.ffg-matchd-receipt .z-10 {
    z-index: 10
}
.ffg-matchd-receipt .mx-auto {
    margin-left: auto;
    margin-right: auto
}
.ffg-matchd-receipt .-mt-2 {
    margin-top: -0.5rem
}
.ffg-matchd-receipt .mt-0\.5 {
    margin-top: 0.125rem
}
.ffg-matchd-receipt .mt-1 {
    margin-top: 0.25rem
}
.ffg-matchd-receipt .mt-1\.5 {
    margin-top: 0.375rem
}
.ffg-matchd-receipt .mt-3 {
    margin-top: 0.75rem
}
.ffg-matchd-receipt .mt-3\.5 {
    margin-top: 0.875rem
}
.ffg-matchd-receipt .mt-4 {
    margin-top: 1rem
}
.ffg-matchd-receipt .block {
    display: block
}
.ffg-matchd-receipt .flex {
    display: flex
}
.ffg-matchd-receipt .inline-flex {
    display: inline-flex
}
.ffg-matchd-receipt .h-9 {
    height: 2.25rem
}
.ffg-matchd-receipt .h-\[15px\] {
    height: 15px
}
.ffg-matchd-receipt .h-\[9px\] {
    height: 9px
}
.ffg-matchd-receipt .w-9 {
    width: 2.25rem
}
.ffg-matchd-receipt .w-\[15px\] {
    width: 15px
}
.ffg-matchd-receipt .w-full {
    width: 100%
}
.ffg-matchd-receipt .min-w-0 {
    min-width: 0px
}
.ffg-matchd-receipt .max-w-\[340px\] {
    max-width: 340px
}
.ffg-matchd-receipt .flex-1 {
    flex: 1 1 0%
}
.ffg-matchd-receipt .shrink-0 {
    flex-shrink: 0
}
.ffg-matchd-receipt .rotate-180 {
    --tw-rotate: 180deg;
    transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
@keyframes spin {
    to {
        transform: rotate(360deg)
    }
}
.ffg-matchd-receipt .animate-spin {
    animation: spin 1s linear infinite
}
.ffg-matchd-receipt .flex-wrap {
    flex-wrap: wrap
}
.ffg-matchd-receipt .items-start {
    align-items: flex-start
}
.ffg-matchd-receipt .items-end {
    align-items: flex-end
}
.ffg-matchd-receipt .items-center {
    align-items: center
}
.ffg-matchd-receipt .items-baseline {
    align-items: baseline
}
.ffg-matchd-receipt .justify-center {
    justify-content: center
}
.ffg-matchd-receipt .justify-between {
    justify-content: space-between
}
.ffg-matchd-receipt .gap-2 {
    gap: 0.5rem
}
.ffg-matchd-receipt .gap-3 {
    gap: 0.75rem
}
.ffg-matchd-receipt .gap-\[2px\] {
    gap: 2px
}
.ffg-matchd-receipt .space-y-0\.5 > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(0.125rem * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(0.125rem * var(--tw-space-y-reverse))
}
.ffg-matchd-receipt .overflow-hidden {
    overflow: hidden
}
.ffg-matchd-receipt .truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap
}
.ffg-matchd-receipt .rounded-2xl {
    border-radius: 1rem
}
.ffg-matchd-receipt .rounded-full {
    border-radius: 9999px
}
.ffg-matchd-receipt .rounded-pill {
    border-radius: 9999px
}
.ffg-matchd-receipt .border {
    border-width: 1px
}
.ffg-matchd-receipt .border-t {
    border-top-width: 1px
}
.ffg-matchd-receipt .border-dashed {
    border-style: dashed
}
.ffg-matchd-receipt .border-neutral-300 {
    --tw-border-opacity: 1;
    border-color: rgb(212 212 212 / var(--tw-border-opacity, 1))
}
.ffg-matchd-receipt .border-neutral-500 {
    --tw-border-opacity: 1;
    border-color: rgb(115 115 115 / var(--tw-border-opacity, 1))
}
.ffg-matchd-receipt .border-neutral-700 {
    --tw-border-opacity: 1;
    border-color: rgb(64 64 64 / var(--tw-border-opacity, 1))
}
.ffg-matchd-receipt .border-neutral-900 {
    --tw-border-opacity: 1;
    border-color: rgb(23 23 23 / var(--tw-border-opacity, 1))
}
.ffg-matchd-receipt .border-white\/10 {
    border-color: rgb(255 255 255 / 0.1)
}
.ffg-matchd-receipt .bg-neutral-50 {
    --tw-bg-opacity: 1;
    background-color: rgb(250 250 250 / var(--tw-bg-opacity, 1))
}
.ffg-matchd-receipt .bg-neutral-800 {
    --tw-bg-opacity: 1;
    background-color: rgb(38 38 38 / var(--tw-bg-opacity, 1))
}
.ffg-matchd-receipt .bg-neutral-900 {
    --tw-bg-opacity: 1;
    background-color: rgb(23 23 23 / var(--tw-bg-opacity, 1))
}
.ffg-matchd-receipt .bg-neutral-950 {
    --tw-bg-opacity: 1;
    background-color: rgb(10 10 10 / var(--tw-bg-opacity, 1))
}
.ffg-matchd-receipt .bg-white {
    --tw-bg-opacity: 1;
    background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1))
}
.ffg-matchd-receipt .p-4 {
    padding: 1rem
}
.ffg-matchd-receipt .px-1 {
    padding-left: 0.25rem;
    padding-right: 0.25rem
}
.ffg-matchd-receipt .px-4 {
    padding-left: 1rem;
    padding-right: 1rem
}
.ffg-matchd-receipt .px-5 {
    padding-left: 1.25rem;
    padding-right: 1.25rem
}
.ffg-matchd-receipt .py-2 {
    padding-top: 0.5rem;
    padding-bottom: 0.5rem
}
.ffg-matchd-receipt .pb-3 {
    padding-bottom: 0.75rem
}
.ffg-matchd-receipt .pt-3 {
    padding-top: 0.75rem
}
.ffg-matchd-receipt .pt-5 {
    padding-top: 1.25rem
}
.ffg-matchd-receipt .text-left {
    text-align: left
}
.ffg-matchd-receipt .text-center {
    text-align: center
}
.ffg-matchd-receipt .text-right {
    text-align: right
}
.ffg-matchd-receipt .font-mono {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace
}
.ffg-matchd-receipt .text-\[10\.5px\] {
    font-size: 10.5px
}
.ffg-matchd-receipt .text-\[10px\] {
    font-size: 10px
}
.ffg-matchd-receipt .text-\[11\.5px\] {
    font-size: 11.5px
}
.ffg-matchd-receipt .text-\[11px\] {
    font-size: 11px
}
.ffg-matchd-receipt .text-\[12\.5px\] {
    font-size: 12.5px
}
.ffg-matchd-receipt .text-\[12px\] {
    font-size: 12px
}
.ffg-matchd-receipt .text-\[13px\] {
    font-size: 13px
}
.ffg-matchd-receipt .text-\[14px\] {
    font-size: 14px
}
.ffg-matchd-receipt .text-\[15px\] {
    font-size: 15px
}
.ffg-matchd-receipt .text-\[8\.5px\] {
    font-size: 8.5px
}
.ffg-matchd-receipt .text-\[9\.5px\] {
    font-size: 9.5px
}
.ffg-matchd-receipt .font-bold {
    font-weight: 700
}
.ffg-matchd-receipt .font-extrabold {
    font-weight: 800
}
.ffg-matchd-receipt .font-semibold {
    font-weight: 600
}
.ffg-matchd-receipt .uppercase {
    text-transform: uppercase
}
.ffg-matchd-receipt .tabular-nums {
    --tw-numeric-spacing: tabular-nums;
    font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)
}
.ffg-matchd-receipt .leading-\[1\.7\] {
    line-height: 1.7
}
.ffg-matchd-receipt .leading-\[1\.8\] {
    line-height: 1.8
}
.ffg-matchd-receipt .leading-relaxed {
    line-height: 1.625
}
.ffg-matchd-receipt .leading-tight {
    line-height: 1.25
}
.ffg-matchd-receipt .tracking-\[0\.6px\] {
    letter-spacing: 0.6px
}
.ffg-matchd-receipt .tracking-\[0\.8px\] {
    letter-spacing: 0.8px
}
.ffg-matchd-receipt .tracking-\[1\.4px\] {
    letter-spacing: 1.4px
}
.ffg-matchd-receipt .tracking-\[2px\] {
    letter-spacing: 2px
}
.ffg-matchd-receipt .tracking-tight {
    letter-spacing: -0.025em
}
.ffg-matchd-receipt .text-neutral-300 {
    --tw-text-opacity: 1;
    color: rgb(212 212 212 / var(--tw-text-opacity, 1))
}
.ffg-matchd-receipt .text-neutral-400 {
    --tw-text-opacity: 1;
    color: rgb(163 163 163 / var(--tw-text-opacity, 1))
}
.ffg-matchd-receipt .text-neutral-500 {
    --tw-text-opacity: 1;
    color: rgb(115 115 115 / var(--tw-text-opacity, 1))
}
.ffg-matchd-receipt .text-neutral-600 {
    --tw-text-opacity: 1;
    color: rgb(82 82 82 / var(--tw-text-opacity, 1))
}
.ffg-matchd-receipt .text-neutral-700 {
    --tw-text-opacity: 1;
    color: rgb(64 64 64 / var(--tw-text-opacity, 1))
}
.ffg-matchd-receipt .text-neutral-900 {
    --tw-text-opacity: 1;
    color: rgb(23 23 23 / var(--tw-text-opacity, 1))
}
.ffg-matchd-receipt .text-neutral-950 {
    --tw-text-opacity: 1;
    color: rgb(10 10 10 / var(--tw-text-opacity, 1))
}
.ffg-matchd-receipt .text-white {
    --tw-text-opacity: 1;
    color: rgb(255 255 255 / var(--tw-text-opacity, 1))
}
.ffg-matchd-receipt .shadow {
    --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
    --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
    box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
.ffg-matchd-receipt .shadow-\[0_10px_30px_-14px\] {
    --tw-shadow: 0 10px 30px -14px;
    --tw-shadow-colored: 0 10px 30px -14px var(--tw-shadow-color);
    box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
.ffg-matchd-receipt .shadow-\[0_18px_40px_-12px\] {
    --tw-shadow: 0 18px 40px -12px;
    --tw-shadow-colored: 0 18px 40px -12px var(--tw-shadow-color);
    box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
.ffg-matchd-receipt .shadow-black\/60 {
    --tw-shadow-color: rgb(0 0 0 / 0.6);
    --tw-shadow: var(--tw-shadow-colored)
}
.ffg-matchd-receipt .shadow-black\/70 {
    --tw-shadow-color: rgb(0 0 0 / 0.7);
    --tw-shadow: var(--tw-shadow-colored)
}
.ffg-matchd-receipt .ring-1 {
    --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
    --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
    box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)
}
.ffg-matchd-receipt .ring-white\/10 {
    --tw-ring-color: rgb(255 255 255 / 0.1)
}
.ffg-matchd-receipt .transition {
    transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms
}
.ffg-matchd-receipt .transition-transform {
    transition-property: transform;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms
}
.ffg-matchd-receipt .duration-300 {
    transition-duration: 300ms
}
.ffg-matchd-receipt .hover\:border-neutral-500:hover {
    --tw-border-opacity: 1;
    border-color: rgb(115 115 115 / var(--tw-border-opacity, 1))
}
.ffg-matchd-receipt .hover\:bg-neutral-200:hover {
    --tw-bg-opacity: 1;
    background-color: rgb(229 229 229 / var(--tw-bg-opacity, 1))
}
.ffg-matchd-receipt .hover\:opacity-80:hover {
    opacity: 0.8
}
.ffg-matchd-receipt .receipt-paper {
  transform: translateY(-100%);
  /* Duration is set inline — printing (1400ms) and retracting (800ms) are
     different speeds, and a printer that rewinds at print speed looks broken.
     The overshoot in the curve is the paper settling, not a bounce effect. */
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.22, 1.15, 0.36, 1);
  will-change: transform;
}

.ffg-matchd-receipt .receipt-paper-out {
  transform: translateY(0);
}

/* The card acknowledges the charge with one small breath. Anything bigger
   here starts competing with the paper, which is the actual event. */
@keyframes receipt-confirm-pulse {
  0% {
    transform: scale(1);
  }
  45% {
    transform: scale(1.014);
  }
  100% {
    transform: scale(1);
  }
}

.ffg-matchd-receipt .receipt-confirm-pulse {
  animation: receipt-confirm-pulse 0.45s ease-out both;
}

/* The tick lands rather than appears. */
@keyframes receipt-check-in {
  from {
    opacity: 0;
    transform: scale(0.4);
  }
  60% {
    transform: scale(1.12);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

.ffg-matchd-receipt .receipt-check-in {
  animation: receipt-check-in 0.25s cubic-bezier(0.16, 1, 0.3, 1) both;
}

/* Torn bottom edge. A conic-gradient mask repeated across the strip cuts
   triangles out of the paper itself, so the notches show the page behind
   rather than a painted-on zigzag that breaks on any other background. */
.ffg-matchd-receipt .receipt-tear {
  /* The sector must point DOWN into the strip. `from 135deg` sweeps
     135deg..225deg — straight down — cutting a triangle out of each 12px
     tile. Starting at -45deg sweeps UP, out of the element, which masks away
     almost everything and reads as a flat edge. */
  -webkit-mask-image: conic-gradient(from 135deg at 50% 0, #000 0 90deg, transparent 0);
  mask-image: conic-gradient(from 135deg at 50% 0, #000 0 90deg, transparent 0);
  -webkit-mask-size: 12px 100%;
  mask-size: 12px 100%;
  -webkit-mask-repeat: repeat-x;
  mask-repeat: repeat-x;
}

/* Reduced motion: the component already renders the finished receipt with no
   sequence at all, so there is nothing to slow down — but the paper class can
   still be mounted mid-swap, and a half-translated sheet is worse than none. */
@media (prefers-reduced-motion: reduce) {
  .ffg-matchd-receipt .receipt-paper {
    transform: translateY(0);
    transition: none !important;
  }
  .ffg-matchd-receipt .receipt-confirm-pulse,
  .ffg-matchd-receipt .receipt-check-in {
    animation: none !important;
  }
}


.ffg-thuis-signature .sig{
  width: 560px;
  background: #fff;
  font-family: -apple-system, 'Helvetica Neue', Arial, sans-serif;
  border: 1px solid #e0e8ea;
  border-radius: 6px;
  overflow: hidden;
  display: flex;
  flex-direction: row;
  height: 170px;
}.ffg-thuis-signature .sig-photo{
  width: 220px;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
}.ffg-thuis-signature .sig-photo img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 60%;
  display: block;
}.ffg-thuis-signature .sig-right{
  flex: 1;
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  border-left: 3px solid #1C3F48;
}.ffg-thuis-signature .sig-logo img{
  height: 16px;
  display: block;
  margin-bottom: 10px;
}.ffg-thuis-signature .sig-name{
  font-size: 16px;
  font-weight: 700;
  color: #1C3F48;
  font-family: Georgia, 'Times New Roman', serif;
  letter-spacing: 0.02em;
  margin-bottom: 8px;
}.ffg-thuis-signature .sig-contact{
  font-size: 12px;
  color: #4a5a5f;
  line-height: 1.9;
}.ffg-thuis-signature .sig-contact a{
  color: #1C3F48;
  text-decoration: none;
}.ffg-thuis-signature .dot{ color: #9ab5bc; margin: 0 6px; }

.noise {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
}

.noise--fixed {
  position: fixed;
}

.noise__grain {
  position: absolute;
  inset: 0;
  background-repeat: repeat;
  image-rendering: pixelated;
}

.noise__dust {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.noise__lines {
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0.55) 0,
    rgba(0, 0, 0, 0.55) 1px,
    transparent 1px,
    transparent 3px
  );
}


.ffg-page{background:#fff;color:#151719;font:16px/1.5 var(--font-site,Arial,sans-serif);min-height:100%;overflow-x:clip}
.ffg-page>main{max-width:1440px;margin:auto;padding:155px 72px 100px}
.ffg-intro>p{font-size:13px;margin:0 0 22px;color:#6f7880}
.ffg-intro h1{font:italic 400 clamp(58px,7vw,104px)/1.02 var(--font-site-highlight,Georgia,serif);letter-spacing:-3px;margin:0 0 38px}
.ffg-intro>div{display:flex;align-items:flex-end;justify-content:space-between;gap:35px;margin:0 0 62px}
.ffg-intro>div>p{font-size:18px;line-height:1.6;color:#6c7379;margin:0}
.ffg-filters{display:flex;flex-wrap:wrap;gap:7px}
.ffg-filters button{border:1px solid #e7e8ea;border-radius:999px;background:#fff;color:#687078;font:inherit;font-size:13px;padding:9px 15px;cursor:pointer}
.ffg-filters button[aria-pressed=true]{background:#151719;border-color:#151719;color:#fff}
.ffg-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:48px 24px}
.ffg-item{min-width:0}
.ffg-preview{position:relative;isolation:isolate;display:block;aspect-ratio:3/2;overflow:hidden;border-radius:20px;width:100%}
.ffg-item:nth-child(5n+2) .ffg-preview{border-radius:5px 24px 5px 24px}
.ffg-art{display:block;width:100%;height:100%;object-fit:cover}
.ffg-image-window{width:540px;height:330px;border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 18px 46px #0002;outline-offset:5px}
.ffg-image-window img{display:block;width:100%;height:auto;margin-top:var(--ffg-image-offset,0px)}
.ffg-image-inspect{overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
.ffg-image-inspect img{margin-top:0}
.ffg-matchd-stage{position:absolute;inset:0;display:grid;place-items:center}
.ffg-matchd-receipt{position:absolute;top:14px;left:50%;width:340px;transform:translateX(-50%) scale(.54);transform-origin:top center;font:16px/1.5 Arial,sans-serif;--tw-ring-inset:;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#fff1;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}
.ffg-matchd-receipt *,.ffg-matchd-receipt *:before,.ffg-matchd-receipt *:after{box-sizing:border-box;border:0 solid;--tw-ring-inset:;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#fff1;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}
.ffg-matchd-receipt p{margin:0}
.ffg-matchd-receipt button{font:inherit;color:inherit;background:transparent;cursor:pointer}
.ffg-matchd-receipt svg{display:block}
.ffg-replay{position:absolute;bottom:14px;right:18px;padding:7px 12px;border:1px solid #ffffff30;border-radius:99px;background:#ffffff0c;color:#ddd;font:12px/1.4 Arial,sans-serif;cursor:pointer}
.ffg-thuis-signature{width:560px;box-shadow:0 20px 50px #21404718}
.ffg-thuis-signature *{box-sizing:border-box}
.ffg-lakes-services{display:grid;grid-template-columns:repeat(2,180px);gap:28px 55px}
.ffg-lakes-services>div{display:grid;justify-items:center;gap:13px;font:12px/1.4 Arial,sans-serif;color:#365365}
.ffg-lakes-services img{width:88px;height:88px;object-fit:contain}
.ffg-open,.ffg-rail-link{position:absolute!important;inset:0;z-index:5;border:0;background:transparent;color:#fff;cursor:pointer;text-decoration:none}
.ffg-open>span,.ffg-rail-link>span{position:absolute;right:12px;bottom:12px;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#151719;color:#fff;font:20px/1 Arial;opacity:0;translate:0 4px;transition:opacity .18s,translate .18s}
.ffg-open:hover>span,.ffg-open:focus-visible>span,.ffg-rail-link:hover>span,.ffg-rail-link:focus-visible>span{opacity:1;translate:0}
.ffg-caption{margin-top:15px}
.ffg-caption h2{font:500 18px/1.35 var(--font-site,Arial,sans-serif);letter-spacing:-.3px;margin:0 0 4px}
.ffg-caption>span{font-size:12px;color:#858b91}
.ffg-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.ffg-sample{position:absolute;inset:0;overflow:hidden;container-type:inline-size}
.ffg-sample-inner{position:absolute;top:0;left:0;width:600px;height:400px;transform-origin:top left;overflow:hidden;display:grid;place-items:center;font:14px/1.45 var(--font-site,Arial,sans-serif)}
.ffg-sample-inner>div,.ffg-sample-inner>section{box-sizing:border-box}
.ffg-rail-item>.lift{position:relative;display:block!important;height:100%}
.work .wall .ffg-rail-item .tile{display:block;aspect-ratio:3/2;overflow:hidden}
.work .wall .ffg-rail-item .tile:before,.work .wall .ffg-rail-item .tile:after{display:none}
.ffg-rail-controls{display:none}
/* Override the captured wall's intentional bleed: every selected tile sits
   within the page, in normal row order, with no separate scroll container. */
.work.work>section:has(>.ff-work-study)>.wall.wall{width:100%;min-width:0;margin:0;padding:0;grid-auto-flow:row;grid-auto-columns:auto;overflow:visible;scroll-snap-type:none;gap:var(--gap)}
.work .wall .ffg-rail-item{min-width:0}
.ffg-bread{position:absolute;inset:40px 28px 24px;overflow:hidden}
.ffg-bread canvas{display:block;width:100%;height:100%;touch-action:pan-y}
.ffg-oven{width:360px;height:350px;display:grid;place-items:center}
.ffg-oven svg{display:block;width:100%;height:100%;overflow:visible}
.ffg-casa-product{--forest:#193a1e;--orange:#cc4711;--paper:#fffaf2;--ink:#243328;--line:#d9cbb7;--serif:Georgia,serif;--sans:Arial,sans-serif;width:224px;color:var(--forest)}
.ffg-casa-product .product-card{border-radius:14px;overflow:hidden;box-shadow:0 15px 36px #4b321018}
.ffg-casa-product .product-art,.ffg-casa-product .product-art img{width:100%;height:154px;min-height:154px}
.ffg-casa-product .product-art img{object-fit:contain;background:#f6e7d0;padding:14px;box-sizing:border-box}
.ffg-casa-product .product-card__body{min-height:173px;padding:12px 14px}
.ffg-casa-product .product-card h3{font-size:21px;margin:6px 0}
.ffg-casa-product .product-card p{font-size:11px;margin-bottom:12px}
.ffg-casa-product .product-card__category{font-size:8px}
.ffg-casa-product .product-card__minimum{font-size:8px}
.ffg-hub{width:550px;font:13px/1.5 var(--font-site,Arial,sans-serif)}
.ffg-hub .block{margin:0!important;box-sizing:border-box}
.ffg-hub .ff-record{padding:18px;border-radius:18px}
.ffg-hub .ff-record-card{padding:15px}
.ffg-hub .ff-record-card h4{font-size:19px}
.ffg-hub .ff-record-views{gap:10px;grid-template-columns:1fr 1fr!important}
.ffg-hub .ff-record-link{display:none}
.ffg-hub .ff-system{padding:18px;border-radius:18px}
.ffg-hub .ff-system-stage{min-height:260px;height:260px}
.ffg-hub .ff-system-note,.ffg-hub .ff-record-card>p,.ffg-hub .ff-sample{display:none}
.ffg-hub .ff-system-piece{font-size:9px;padding:8px 10px}
.ffg-hub .ff-system-core{width:105px;height:105px}
/* The Lab scales a fixed 600 × 400 canvas: keep the two-view experiment
   within that canvas even when the surrounding page is narrow. */
.ffg-hub .ff-record-views{margin-top:20px;align-items:stretch}
.ffg-hub .ff-panel-top{flex-direction:row;align-items:center}
.ffg-hub .ff-record-card{padding:15px}
.ffg-hub .ff-record-card h4{font-size:19px;margin:18px 0 12px}
.ffg-hub .ff-record-card dl>div{padding:9px 0}
.ffg-hub .ff-venue-card li{grid-template-columns:1fr;gap:3px}
.ffg-hub .ff-venue-card li>b{text-align:left;max-width:none}
.ffg-hub .ff-primary{margin-top:17px;padding:12px;font-size:11px}
.ffg-hub .ff-system-stage{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;height:auto!important;min-height:0;margin-top:20px}
.ffg-hub .ff-system-core{position:relative!important;grid-column:1/-1;grid-row:1;left:auto!important;top:auto!important;transform:none!important;justify-self:center;width:170px;height:75px;margin:0 0 8px!important}
.ffg-hub .ff-system-core svg{height:24px;width:24px;margin-bottom:3px}
.ffg-hub .ff-system-core b{font-size:12px}
.ffg-hub .ff-system-core span{font-size:9px}
.ffg-hub .ff-system-piece{position:relative!important;left:auto!important;top:auto!important;transform:none!important;width:auto!important;height:65px!important;padding:8px 4px;font-size:9px!important;box-sizing:border-box}
.ffg-hub .ff-system-piece svg{height:23px;width:23px}
.ffg-hub .ff-system-stage:before,.ffg-hub .ff-system-stage:after{display:none}
.ffg-horse-poses{position:absolute;inset:30px 20px 20px}
.ffg-pose{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;animation:ffg-poses 6s steps(1,end) infinite;opacity:0}
.ffg-pose-1{animation-delay:1.5s}.ffg-pose-2{animation-delay:3s}.ffg-pose-3{animation-delay:4.5s}
.ffg-horse-shadow{position:absolute;left:20%;right:16%;bottom:7%;height:9%;border-radius:50%;background:#3b2b161a;filter:blur(10px)}
@keyframes ffg-poses{0%,24.99%{opacity:1}25%,100%{opacity:0}}
.ffg-sample-inner .ffgh-hero{width:600px!important;height:400px!important;min-height:0!important;--horse-width:230px;--horse-bottom:24px;--cafe-pastry-from-bottom:124px;--cafe-mouth-from-bottom:135px}
.ffg-sample-inner .ffgh-horse{width:230px!important;bottom:24px!important}
.ffg-sample-inner .ffgh-art:after{display:none}
.ffg-sample-inner .ffgh-copy{display:none}
.ffg-booking-piece{width:550px;font-family:var(--font-site,Arial,sans-serif)}
.ffg-booking-piece .booking-dialog{position:static!important;display:flex;width:100%;max-width:none;max-height:none;background:#fff;border-radius:15px;box-shadow:0 15px 45px #182e4a20;overflow:hidden;font-size:12px;pointer-events:none}
.ffg-booking-piece .booking-calendar{width:350px;padding:20px}
.ffg-booking-piece .booking-times{width:200px;padding:20px 16px}
.ffg-booking-piece .booking-day{font-size:12px}
.ffg-booking-piece .booking-month{margin-bottom:15px}
.ffg-booking-piece .booking-weekdays{margin-bottom:10px}
.ffg-booking-piece .booking-slots{max-height:256px;overflow:hidden}
.ffg-booking-piece .booking-slots button{min-height:29px;padding:3px 5px}
.ffg-booking-piece .booking-availability-note{font-size:8px;margin-top:10px}
.ffg-booking-timezone{width:300px}
.ffg-booking-piece .booking-timezone-popover{position:static;display:flex;width:100%;border:0;border-radius:15px;box-shadow:none;animation:none;overflow:hidden}
.ffg-booking-piece .booking-timezone-results{max-height:225px}
.ffg-booking-piece .booking-timezone-option{min-height:45px;padding:7px 9px}
.ffg-booking-piece .booking-timezone-option-copy strong{font-size:11px}
.ffg-booking-piece .booking-timezone-status{display:none}
.ffg-enquiry{width:470px;display:grid;gap:30px;align-content:center}
.ffg-enquiry>img{width:48px;height:48px;margin:auto}
.ffg-enquiry .ff-enquiry-start{gap:13px}
.ffg-enquiry .ff-enquiry-start>label{font-size:20px;letter-spacing:-.4px}
.ffg-enquiry .ff-enquiry-start-field input{font-size:13px}
.ffg-enquiry .ff-enquiry-start-field button{font-size:12px;padding:13px 16px;gap:12px}
.ffg-dialog{width:min(1050px,calc(100vw - 36px));max-width:none;max-height:calc(100dvh - 36px);padding:0;border:0;border-radius:22px;overflow:auto;color:#151719;background:#fff;box-shadow:0 30px 100px #0004;font:14px/1.5 var(--font-site,Arial,sans-serif)}
.ffg-dialog::backdrop{background:#111b2866;backdrop-filter:blur(12px)}
.ffg-dialog-shell>header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 25px}
.ffg-dialog-shell>header h2{font:500 17px/1.4 var(--font-site,Arial,sans-serif);margin:0}
.ffg-dialog-shell>header p{font-size:12px;color:#818990;margin:2px 0 0}
.ffg-close{display:grid;place-items:center;width:34px;height:34px;border:0;background:#f3f4f5;border-radius:50%;font-size:25px;cursor:pointer}
.ffg-viewer-stage{border-radius:0}
.ffg-dialog-shell>footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 25px}
.ffg-dialog-shell>footer>div{display:flex;align-items:center;gap:17px;color:#83898f;font-size:12px}
.ffg-dialog-shell>footer button{border:1px solid #e1e5e8;background:white;border-radius:50%;width:32px;height:32px;font-size:17px;cursor:pointer}
.ffg-dialog-shell>footer a,.ffg-dialog-shell>footer .ffg-try{color:#151719;font-size:13px;text-decoration:none}
.ffg-dialog-shell>footer .ffg-try{width:auto;height:auto;border:0;border-radius:0}
.ffg-demo-label{color:#818990;font-size:11px}
.ffg-page :is(a,button):focus-visible{outline:2px solid #168bff;outline-offset:4px}
@media(max-width:1000px){.ffg-page>main{padding:135px 35px 75px}.ffg-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:35px 20px}.ffg-intro>div{align-items:flex-start;flex-direction:column;gap:25px}}
@media(max-width:600px){.ffg-page>main{padding:120px 20px 55px}.ffg-intro h1{font-size:58px;letter-spacing:-2px}.ffg-intro>div{margin-bottom:36px}.ffg-intro>div>p{font-size:16px}.ffg-filters{gap:5px}.ffg-filters button{padding:8px 12px;font-size:12px}.ffg-grid{grid-template-columns:1fr;gap:30px}.ffg-caption h2{font-size:17px}.ffg-dialog{width:calc(100vw - 18px);max-height:calc(100dvh - 18px);border-radius:16px}.ffg-dialog-shell>header{padding:15px}.ffg-dialog-shell>footer{padding:14px 15px}.ffg-open>span{opacity:1;translate:none}}
@media(prefers-reduced-motion:reduce){.ffg-preview *{animation:none!important;transition:none!important}.ffg-pose{opacity:0}.ffg-pose-0{opacity:1}}

/* Component studies use the site's shared React runtime and isolated CSS. */
.ffg-sample-inner{top:50%;left:50%;transform-origin:center}
.ffg-screen-fit{display:block;width:90%;height:86%;position:absolute;inset:7% 5%;object-fit:contain;object-position:center;border-radius:8px}
.ffg-reference-clip{display:block;width:100%;height:100%;object-fit:contain}
.ffg-study{position:relative;width:600px;height:400px;overflow:hidden;box-sizing:border-box;font:14px/1.5 var(--font-site,Arial,sans-serif)}
.ffg-study *{box-sizing:border-box}
.ffg-study button,.ffg-study input,.ffg-study a{font:inherit}
.ffg-study button{cursor:pointer}
.ffg-study button:focus-visible,.ffg-study a:focus-visible,.ffg-study input:focus-visible{outline:3px solid #168bff;outline-offset:5px}
.ffg-study img{display:block;object-fit:contain}
.ffg-orbits{display:flex;align-items:center;justify-content:center;background:#edf4fe}
.ffg-orbit-core{display:grid;place-items:center;width:100px;height:100px;border-radius:27px;background:#fff;box-shadow:0 15px 35px #2b68af1a;border:1px solid #dce7f6;z-index:2}
.ffg-orbit-core img{width:59px;height:59px}
.ffg-orbit-path{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.ffg-orbit-path-circle{stroke:#b8ccea;stroke-width:1}
.ffg-orbit-node{position:absolute;display:flex;align-items:center;justify-content:center;width:var(--icon-size);height:var(--icon-size);border-radius:50%;animation:ffg-orbit calc(var(--duration)*1s) linear infinite;will-change:transform}
.ffg-orbit-reverse{animation-direction:reverse}
.ffg-orbit-icon{display:grid;place-items:center;width:100%;height:100%;background:#fff;border:1px solid #dbe7f7;border-radius:16px;color:#287ed0;box-shadow:0 5px 14px #3974ba12}
.ffg-orbit-icon svg{width:29px;height:29px}
.ffg-orbit-icon-small{border-radius:11px}.ffg-orbit-icon-small svg{width:21px;height:21px}
@keyframes ffg-orbit{from{transform:rotate(calc(var(--angle)*1deg)) translateY(calc(var(--radius)*1px)) rotate(calc(var(--angle)*-1deg))}to{transform:rotate(calc(var(--angle)*1deg + 360deg)) translateY(calc(var(--radius)*1px)) rotate(calc(var(--angle)*-1deg - 360deg))}}
.ffg-ripples{display:grid;place-items:center;--foreground:#aa8660;background:#f4eee5}
.ffg-ripple-field{position:absolute;inset:0;pointer-events:none;mask-image:linear-gradient(to bottom,#fff,#fff6);user-select:none}
.ffg-ripple-ring{position:absolute;border-radius:50%;background:#bb946912;animation:ffg-ripple 3s ease calc(var(--i)*.2s) infinite}
@keyframes ffg-ripple{0%,100%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(.9)}}
.ffg-ripple-core{z-index:1;display:grid;place-items:center;width:95px;height:95px;border:1px solid #fefefe;border-radius:50%;background:#fffaf4;box-shadow:0 12px 35px #654c2824}
.ffg-ripple-core img{width:48px;height:48px;filter:grayscale(1)}
.ffg-moving-type{display:flex;flex-direction:column;justify-content:center;gap:24px;background:#168bff;color:#fff;transform:rotate(-6deg) scale(1.08)}
.ffg-marquee{--gap:24px;--duration:26s;display:flex;gap:var(--gap);overflow:hidden;padding:5px 0}
.ffg-marquee-group{display:flex;flex-shrink:0;justify-content:space-around;gap:var(--gap)}
.ffg-marquee-horizontal{flex-direction:row}.ffg-marquee-vertical{flex-direction:column}
.ffg-marquee-animate{animation:ffg-marquee var(--duration) linear infinite}
.ffg-marquee-reverse{animation-direction:reverse}
.ffg-marquee:hover .ffg-marquee-hover-pause{animation-play-state:paused}
.ffg-moving-type span{display:flex;align-items:center;gap:28px;white-space:nowrap;font:500 57px/1.1 var(--font-site,Arial,sans-serif);letter-spacing:-2.7px}
.ffg-moving-type .ffg-marquee+.ffg-marquee{color:#e1f1ff}.ffg-moving-type .ffg-marquee+.ffg-marquee span{font:italic 54px/1.1 var(--font-site-highlight,Georgia,serif)}
.ffg-moving-type i{font-style:normal;font-size:48px;color:#b7e2ff}
@keyframes ffg-marquee{to{transform:translateX(calc(-100% - var(--gap)))}}
.ffg-magnetic{display:grid;place-items:center;background:#f0f1ed}
.ffg-magnetic-grid{position:absolute;inset:0;background:radial-gradient(#9da69870 1px,transparent 1px) 0 0/24px 24px;mask-image:radial-gradient(ellipse,#000,transparent 72%)}
.ffg-magnet-button{display:flex;align-items:center;gap:18px;padding:27px 32px;border:1px solid #fff;border-radius:24px;background:#fcfdf9;color:#252a25;box-shadow:0 15px 25px #343d2714;font-size:20px!important;letter-spacing:-.5px}
.ffg-magnet-button img{width:42px;height:42px;filter:grayscale(1)}
.ffg-study-hint{position:absolute;bottom:45px;font-size:12px;color:#81867d}
.ffg-grain{background:#22356e;color:#fff}
.ffg-grain-orb{position:absolute;width:420px;height:420px;left:230px;top:45px;border-radius:50%;background:radial-gradient(circle at 22% 18%,#b5f3ff 0,#5796e8 23%,#bfb7e8 46%,#2d3f77 72%);box-shadow:-35px 25px 100px #5785d688;transition:filter .6s}
.ffg-grain-1{background:#473743}.ffg-grain-1 .ffg-grain-orb{filter:hue-rotate(120deg)}.ffg-grain-2{background:#224a44}.ffg-grain-2 .ffg-grain-orb{filter:hue-rotate(260deg)}
.ffg-grain-type{position:absolute;left:48px;top:78px;font-size:54px;line-height:1.05;letter-spacing:-2px;z-index:1}
.ffg-grain-type em{font-family:var(--font-site-highlight,Georgia,serif);font-weight:400}
.ffg-grain-switch{position:absolute;bottom:36px;left:48px;z-index:1;border:0;background:transparent;padding:0;color:#fff;font-size:13px!important}.ffg-grain-switch span{margin-left:8px}
.ffg-chart{width:500px;height:330px;padding:28px 28px 18px;border-radius:22px;background:#fff;box-shadow:0 20px 45px #273c5615}
.ffg-chart-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.ffg-chart-head>div>span{display:block;color:#748193;font-size:12px}
.ffg-chart-head strong{display:block;font-size:36px;line-height:1.35;letter-spacing:-1.5px;font-weight:500;color:#18334b}.ffg-chart-head strong small{font-size:12px;letter-spacing:0;color:#8b97a5;font-weight:400}
.ffg-chart-tabs{display:flex;gap:2px;padding:3px;border-radius:9px;background:#f1f4f7}
.ffg-chart-tabs button{border:0;border-radius:6px;background:transparent;color:#8a96a3;font-size:11px;padding:5px 9px}
.ffg-chart-tabs button[aria-pressed=true]{background:#fff;color:#34536e;box-shadow:0 1px 4px #0001}
.ffg-chart-plot{margin-top:8px}.ffg-chart-plot svg{display:block;width:100%;height:170px}
.ffg-chart-bar{transform-box:fill-box;transform-origin:bottom;animation:ffg-bar .75s cubic-bezier(.2,.8,.2,1) both;transition:y .5s,height .5s,fill .2s}
@keyframes ffg-bar{from{transform:scaleY(.04)}to{transform:scaleY(1)}}
.ffg-chart-days{display:grid;grid-template-columns:repeat(7,1fr);margin:0 -2px}
.ffg-chart-days button{border:0;padding:4px;background:transparent;color:#9aa6b2;font-size:10px}.ffg-chart-days button[aria-pressed=true]{color:#168bff}
.ffg-chart-note{display:block;text-align:right;color:#a6afb9;font-size:9px;margin-top:3px}
.ffg-search-study{display:grid;place-items:center;background:#e9e7f4}
.ffg-search-box{width:470px;border:1px solid #fff;border-radius:19px;background:#fff;box-shadow:0 25px 65px #2f285c1c;overflow:hidden}
.ffg-search-field{display:flex;align-items:center;gap:12px;padding:19px 21px;border-bottom:1px solid #eef0f3;color:#959ca8}
.ffg-search-field input{font-size:16px;border:0;min-width:0;flex:1;outline-offset:2px;background:#fff;color:#283442}.ffg-search-field input::placeholder{color:#89909b}
.ffg-search-field kbd{font-size:13px;font-family:inherit;padding:1px 5px;border:1px solid #e5e7eb;border-radius:5px;color:#a0a6af}
.ffg-search-results{padding:8px}
.ffg-search-results a{display:flex;align-items:center;gap:13px;padding:12px;border-radius:11px;color:#384356;text-decoration:none;transition:background .15s}
.ffg-search-results a.is-selected{background:#eef3fc}.ffg-search-results a>span:last-child{margin-left:auto;color:#a1aab7}
.ffg-search-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#fff;border:1px solid #e5eaf2;color:#6f86af}.ffg-search-icon svg,.ffg-search-icon img{width:22px;height:22px}
.ffg-search-results b{display:block;font-size:13px;font-weight:500}.ffg-search-results small{font-size:10px;color:#9aa3b0}
.ffg-search-results p{padding:10px 15px;font-size:13px;color:#8993a1}
.ffg-search-foot{display:flex;justify-content:space-between;padding:12px 20px;border-top:1px solid #f0f1f4;color:#a1a9b5;font-size:10px}
/* Restore the reference's Mix / Sort control without a second scroll canvas. */
.ffg-layout{display:flex;align-items:center;gap:17px;flex-shrink:0;padding:12px 18px;border:1px solid #e8ebef;border-radius:99px;background:#fff}
.ffg-layout button{font:500 15px/1.4 var(--font-site,Arial,sans-serif);padding:3px 0;background:none;border:0;color:#a1a6ad;cursor:pointer}
.ffg-layout button[aria-pressed=true]{color:#171b20}
.ffg-layout-icon{display:grid;grid-template-columns:repeat(2,5px);gap:3px;width:14px;height:14px}.ffg-layout-icon i{display:block;background:#168bff;border-radius:1px;transition:transform .3s}.ffg-layout-icon.mix i:nth-child(1){transform:translate(-2px,-2px) rotate(-16deg)}.ffg-layout-icon.mix i:nth-child(4){transform:translate(2px,2px) rotate(16deg)}
.ffg-gallery-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 35px}.ffg-piece-count{font-size:12px;color:#9ba1a9;white-space:nowrap}
.ffg-grid.ffg-layout-mix{align-items:start;row-gap:52px}
.ffg-layout-mix>.ffg-item:nth-child(6n+2):not(.ffg-email-feature){margin-top:32px}.ffg-layout-mix>.ffg-item:nth-child(6n+3):not(.ffg-email-feature){margin-top:12px}
.ffg-layout-mix>.ffg-item:nth-child(7n+4) .ffg-preview{aspect-ratio:4/3}
.ffg-layout-sort .ffg-preview{border-radius:20px}
.ffg-credits{max-width:760px;margin:65px auto 0;text-align:center;font-size:11px;line-height:1.8;color:#9ca2aa}.ffg-credits a{color:inherit;text-underline-offset:3px}
@media(max-width:1000px){.ffg-intro>div{flex-direction:row;align-items:flex-end}.ffg-layout-mix>.ffg-item:nth-child(6n+2):not(.ffg-email-feature){margin-top:0}.ffg-layout-mix>.ffg-item:nth-child(even):not(.ffg-email-feature){margin-top:28px}}
@media(max-width:600px){.ffg-intro>div{align-items:flex-start;gap:24px;flex-direction:column}.ffg-layout{padding:10px 16px}.ffg-gallery-toolbar{align-items:flex-start}.ffg-piece-count{padding-top:9px}.ffg-grid.ffg-layout-mix{gap:30px}.ffg-layout-mix>.ffg-item:nth-child(n):not(.ffg-email-feature){margin-top:0}.ffg-layout-mix>.ffg-item:nth-child(n) .ffg-preview{aspect-ratio:3/2}.ffg-credits{margin-top:40px}}
@media(prefers-reduced-motion:reduce){.ffg-study *{animation:none!important;transition:none!important}.ffg-layout-icon i{transition:none}.ffg-magnet-button{transform:none!important}}

/* The Lab now uses the captured Play wall itself, including its original
   square sizing, infinite pan, grouping and bottom-centred pixel switch. */
.ffg-original-wall .caption,.ffg-original-wall .words{display:none!important}
.ffg-original-wall[data-mode="cloud"] .kind{display:none}
.ffg-original-wall[data-mode="grid"] .kind{display:flex}
.ffg-wall-visual{display:block;position:absolute;inset:0;overflow:hidden;isolation:isolate;pointer-events:none}
.ffg-wall-visual-open{pointer-events:auto;z-index:2}
.ffg-original-wall .ffg-wall-visual .ffg-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ffg-original-wall .ffg-wall-visual .ffg-orbit-core img{width:59px;height:59px}
.ffg-original-wall .ffg-wall-visual .ffg-magnet-button img{width:42px;height:42px}
.ffg-original-wall .ffg-wall-visual .ffg-ripple-core img{width:48px;height:48px}
.ffg-original-wall .ffg-wall-visual .ffg-search-icon img{width:22px;height:22px}
.ffg-original-wall .ffg-wall-visual .ffg-pose{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.ffg-original-wall .work:has(.ffg-wall-visual)>.pic{inset:0;transform:none!important}
.ffg-original-wall .bar>nav{bottom:max(28px,calc(env(safe-area-inset-bottom) + 16px))}

/* Each square gets the canvas its artwork was designed for. Keep media rules
   on direct children so project image layers keep their own positioning. */
.ffg-original-wall .pic>img{transform:none}
.ffg-original-wall .pic>video{transform:scale(var(--ffg-media-zoom,1));transform-origin:center}
.ffg-original-wall .ffg-wall-visual:not(.ffg-wall-visual-open) .ffg-study:not(.ffg-chart){width:var(--ffg-study-width,600px);height:var(--ffg-study-height,400px)}
.ffg-wall-visual[data-visual="grain-study"] .ffg-grain-type{left:30px;font-size:46px}
.ffg-wall-visual[data-visual="grain-study"] .ffg-grain-orb{left:140px}
.ffg-wall-visual[data-visual="grain-study"] .ffg-grain-switch{left:30px}
.ffg-wall-visual[data-visual="casa-cart"] .ffg-casa-product{width:330px}
.ffg-wall-visual[data-visual="matchd-receipt"]:not(.ffg-wall-visual-open) .ffg-matchd-receipt{top:18px;transform:translateX(-50%) scale(.75)}
.ffg-wall-visual:not(.ffg-wall-visual-open) .ffg-receipt-breakdown,.ffg-wall-visual:not(.ffg-wall-visual-open) .ffg-receipt-metadata{display:none}
.ffg-wall-visual[data-visual="custom-emails"]:not(.ffg-wall-visual-open) .ffe-teaser{width:400px;height:400px}
.ffg-wall-visual[data-visual="custom-emails"]:not(.ffg-wall-visual-open) .ffe-teaser-heading,.ffg-wall-visual[data-visual="custom-emails"]:not(.ffg-wall-visual-open) .ffe-teaser-link{display:none}
.ffg-wall-visual[data-visual="custom-emails"]:not(.ffg-wall-visual-open) .ffe-teaser-paper{left:35px;top:20px;width:330px;height:360px;transform:none}
.ffg-wall-visual[data-visual="custom-emails"]:not(.ffg-wall-visual-open) .ffe-teaser-paper iframe{width:600px;height:660px;transform:scale(.55);transform-origin:top left}
.ffg-original-wall .ffg-wall-visual .ffgh-scene{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

.ffe-showcase{--ffe-blue:#224e68;color:#182a34;scroll-margin-top:180px;margin:10px 0 30px;font-family:var(--font-site,Arial,sans-serif)}
.ffe-intro{display:flex;justify-content:space-between;align-items:end;gap:45px;margin-bottom:28px}.ffe-intro>div>p{font-size:13px;color:#667783;margin:0 0 15px}.ffe-intro h2{font-size:clamp(32px,4vw,55px);font-weight:500;letter-spacing:-1.6px;line-height:1.08;margin:0}.ffe-intro>p{max-width:35ch;color:#63727d;font-size:16px;line-height:1.6;margin:0}
.ffe-workspace{overflow:hidden;border:1px solid #dce4e8;border-radius:20px;background:#fff}.ffe-toolbar{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:22px 26px;background:#eff5f8;border-bottom:1px solid #dce4e8}.ffe-toolbar label{display:grid;gap:8px;color:#536a79;font-size:12px;min-width:0;flex:1}.ffe-toolbar select{box-sizing:border-box;max-width:100%;width:450px;padding:12px 40px 12px 14px;border:1px solid #c9d8e2;border-radius:9px;background:#fff;color:#162c3a;font:500 15px/1.4 var(--font-site,Arial,sans-serif)}
.ffe-stepper{display:flex;align-items:center;gap:15px;flex:none}.ffe-stepper span{font-size:12px;color:#627382;white-space:nowrap;font-variant-numeric:tabular-nums}.ffe-stepper button{width:38px;height:38px;display:grid;place-items:center;border:1px solid #c9d8e2;border-radius:50%;background:#fff;color:#20465f;font-size:18px;cursor:pointer}.ffe-stepper button:hover{background:#dceeff}
.ffe-message-meta{padding:22px 26px;background:#fff}.ffe-message-meta h3{font-size:18px!important;font-weight:500!important;line-height:1.4!important;margin:0 0 14px!important;letter-spacing:-.3px!important}.ffe-message-meta dl{display:grid;gap:7px;margin:0;font-size:12px;line-height:1.5}.ffe-message-meta dl>div{display:flex;gap:12px}.ffe-message-meta dt{color:#798590;width:38px;flex:none}.ffe-message-meta dd{color:#4d6371;margin:0}
.ffe-email-document{background:#eee8df;padding:20px}.ffe-email-document iframe{display:block;width:100%;height:720px;border:0;background:#eee8df;border-radius:8px}.ffe-footnote{padding:13px 26px;font-size:11px;color:#798590;border-top:1px solid #e2e8ed}.ffe-explanation{max-width:75ch;color:#6c7882;font-size:13px;line-height:1.6;margin:17px 0 0}
.ffe-showcase :is(select,button):focus-visible,.ffe-teaser:focus-visible{outline:2px solid #168bff;outline-offset:4px}.ffg-grid>.ffg-email-feature{grid-column:1/-1;min-width:0;margin:18px 0 10px}.ffe-embedded{margin-top:26px}.ffe-embedded .ffe-email-document iframe{height:650px}
.ffe-teaser{display:block;position:relative;width:600px;height:400px;overflow:hidden;text-decoration:none;color:#283c49;background:#dfeaf0}.ffe-teaser-heading{position:absolute;left:30px;top:25px;right:30px;display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:500;z-index:2}.ffe-teaser-heading>span{font-size:10px;font-weight:400}.ffe-teaser-paper{position:absolute;top:65px;left:118px;width:370px;height:500px;transform:rotate(-5deg);box-shadow:0 18px 45px #152d4333;border-radius:7px;overflow:hidden;background:#f7f3ec}.ffe-teaser-paper iframe{display:block;width:100%;height:600px;border:0;pointer-events:none}.ffe-teaser-link{position:absolute;left:22px;right:22px;bottom:18px;background:#fff;border-radius:9px;padding:12px 16px;display:flex;justify-content:space-between;font-size:12px;box-shadow:0 4px 16px #152d4314}.ffe-service-link{display:inline-flex;gap:20px;align-items:center;margin-top:20px;color:#225b7c!important;font-size:14px;text-decoration:underline!important;text-underline-offset:4px}
@media(max-width:700px){.ffe-intro{display:block;margin-bottom:23px}.ffe-intro>p{max-width:48ch;margin-top:20px;font-size:14px}.ffe-intro h2{font-size:37px;letter-spacing:-1.1px}.ffe-toolbar{align-items:flex-start;flex-wrap:wrap;padding:18px;gap:16px}.ffe-toolbar label{flex-basis:100%;width:100%}.ffe-toolbar select{width:100%;font-size:14px}.ffe-stepper{margin-left:auto}.ffe-message-meta{padding:20px 18px}.ffe-message-meta h3{font-size:16px!important}.ffe-message-meta dl>div{gap:8px}.ffe-email-document{padding:0}.ffe-email-document iframe,.ffe-embedded .ffe-email-document iframe{height:650px;border-radius:0}.ffe-footnote{padding:12px 18px}.ffe-workspace{border-radius:15px}.ffe-explanation{font-size:12px}}
.ffe-template-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 22px}.ffe-template-cards button{display:flex;align-items:center;gap:14px;padding:17px 18px;border:1px solid #d9e3e9;border-radius:12px;background:#fff;color:#405b6c;text-align:left;cursor:pointer;font:inherit;min-width:0}.ffe-template-cards button:hover{border-color:#8fb7d2;background:#f7fbfd}.ffe-template-cards button[aria-pressed=true]{border-color:#245d80;background:#eaf4fb;color:#163c57;box-shadow:inset 0 0 0 1px #245d80}.ffe-card-icon{display:grid;place-items:center;width:36px;height:36px;flex:none;color:#376c8b;background:#edf5f9;border-radius:8px}.ffe-card-icon svg{width:23px;height:23px}.ffe-template-cards strong{display:block;font-size:14px;font-weight:500;line-height:1.4}.ffe-template-cards small{display:block;margin-top:4px;font-size:11px;line-height:1.4;color:#748794}.ffe-selected-label{display:block;font-size:14px;font-weight:500}.ffe-selected-note{display:block;font-size:12px;color:#617785;margin-top:5px;line-height:1.4}.ffe-reply-result{display:flex;gap:25px;align-items:center;justify-content:space-between;padding:22px 26px;background:#e6f3ff;border-bottom:1px solid #bfd8eb;color:#164666}.ffe-reply-result strong{font-size:15px;font-weight:550}.ffe-reply-result p{font-size:13px!important;line-height:1.5!important;margin:6px 0 0!important}.ffe-reply-result button{flex:none;background:#fff;border:1px solid #b9d1e2;border-radius:8px;color:#225472;padding:10px 13px;font:12px var(--font-site,Arial,sans-serif);cursor:pointer}
@media(max-width:650px){.ffe-template-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.ffe-template-cards button{padding:13px 11px;gap:9px}.ffe-card-icon{width:28px;height:32px;background:transparent}.ffe-card-icon svg{width:21px}.ffe-template-cards strong{font-size:13px}.ffe-template-cards small{font-size:10px}.ffe-toolbar{flex-wrap:nowrap}.ffe-stepper{gap:8px}.ffe-stepper button{width:33px;height:33px}.ffe-selected-label{font-size:13px}.ffe-selected-note{font-size:11px;max-width:26ch}.ffe-reply-result{display:block;padding:18px}.ffe-reply-result button{margin-top:14px}}
.ffe-showcase:target{padding-top:76px}
