/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[2].use[1]!./node_modules/next/dist/build/webpack/loaders/next-font-loader/index.js??ruleSet[1].rules[13].oneOf[2].use[2]!./node_modules/next/font/google/target.css?{"path":"src/app/[locale]/(landing)/collage.tsx","import":"Playfair_Display","arguments":[{"subsets":["latin"],"style":"italic","weight":"500","display":"swap"}],"variableName":"playfair"} ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* cyrillic */
@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/88e5e03f7eb28cd7-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/fbdb1313d82babb6-s.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/2b3775eb78475f83-s.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/892d0456bed511a7-s.p.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}@font-face {font-family: 'Playfair Display Fallback';src: local("Times New Roman");ascent-override: 97.25%;descent-override: 22.56%;line-gap-override: 0.00%;size-adjust: 111.26%
}.__className_bc1fdc {font-family: 'Playfair Display', 'Playfair Display Fallback';font-weight: 500;font-style: italic
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[10].use[3]!./src/app/[locale]/(landing)/header.css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************/
/*
 * Landing header. Everything that can be an inline style is one (the design
 * is a pile of literal px values and copying them across is the point); this
 * file carries the two things inline styles cannot express - link states and
 * the pink CTA, which is rendered by `CreateCtaLink` and only takes a class.
 *
 * The selectors are deliberately `.landing-v2 a.lp-…`: landing-v2.css styles
 * `.landing-v2 a` and `.landing-v2 a:hover` with the link brown, and a single
 * class would lose to it. Qualifying with the element keeps these rules
 * winning whatever order the stylesheets end up in.
 */

.landing-v2 a.lp-header-cta {
  white-space: nowrap;
  text-decoration: none;
  background: var(--lp-pink);
  color: #fff;
  font-weight: 700;
  padding: 10px 18px;
  border-radius: 13px;
  box-shadow: var(--lp-cta-shadow);
}
.landing-v2 a.lp-header-cta:hover {
  color: #fff;
  background: var(--lp-pink-dark);
}

.landing-v2 a.lp-nav-link {
  text-decoration: none;
  color: var(--lp-ink-soft);
}
.landing-v2 a.lp-nav-link:hover {
  color: var(--lp-ink);
}

/* Links inside the ≤720px dropdown card. */
.landing-v2 a.lp-menu-link {
  text-decoration: none;
  color: var(--lp-ink-soft);
  font-size: 15px;
  font-weight: 600;
  padding: 12px 14px;
  border-radius: 9px;
}
.landing-v2 a.lp-menu-link:hover {
  color: var(--lp-ink-soft);
  background: var(--lp-warm-tint);
}

/*
 * The flat language list at the bottom of the dropdown card. The current
 * language is a <span>, not a link, so it takes the same padding but no hover.
 */
.landing-v2 .lp-menu-languages {
  display: flex;
  flex-direction: column;
  margin-top: 6px;
  padding-top: 6px;
  border-top: 1px solid #e8dfd0;
}
.landing-v2 .lp-menu-language,
.landing-v2 a.lp-menu-language {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-radius: 9px;
  color: var(--lp-ink-soft);
  text-decoration: none;
  font-size: 15px;
  font-weight: 600;
}
.landing-v2 a.lp-menu-language:hover {
  color: var(--lp-ink-soft);
  background: var(--lp-warm-tint);
}
.landing-v2 .lp-menu-language[aria-current="true"] {
  color: var(--lp-ink);
}
.landing-v2 .lp-menu-language-name { flex: 1; }
.landing-v2 .lp-menu-language-check { font-size: 13px; }

.landing-v2 .lp-language-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--lp-ink-soft);
  padding: 4px;
  font-size: 18px;
  cursor: pointer;
}
.landing-v2 .lp-language-button:hover { background: var(--lp-warm-tint); }
.landing-v2 .lp-language-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 60;
  min-width: 132px;
  padding: 5px;
  border: 1px solid #dcd3c0;
  border-radius: 10px;
  background: var(--lp-surface);
  box-shadow: 0 10px 24px rgba(59,55,47,0.16);
}
.landing-v2 .lp-language-menu a {
  display: block;
  padding: 8px 9px;
  border-radius: 7px;
  color: var(--lp-ink-soft);
  text-decoration: none;
  font-size: 13px;
}
.landing-v2 .lp-language-menu a:hover { background: var(--lp-warm-tint); }

/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[10].use[3]!./src/app/[locale]/(landing)/landing-v2.css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************/
/*
 * Design tokens for the landing page redesign, from
 * design/landing-v2/README.md ("Design tokens"). Scoped under `.landing-v2`
 * so nothing leaks into the game or manage UIs, which have their own token
 * files.
 */
.landing-v2 {
  --lp-bg: #f6f2ea;
  --lp-surface: #fffdf9;
  --lp-border: #e5ded1;
  --lp-border-strong: #d8d0c0;
  --lp-border-warm: #e6ddcc;
  --lp-border-deep: #c9c2b4;
  --lp-ink: #35312a;
  --lp-ink-soft: #55503f;
  --lp-muted: #7d7565;
  --lp-muted-2: #8a8271;
  --lp-muted-3: #a39b88;
  --lp-pink: #b85c7e;
  --lp-pink-dark: #8d4d68;
  --lp-pink-tint: #f5e5eb;
  --lp-blue: #6b7fb0;
  --lp-blue-dark: #4d5d8d;
  --lp-blue-tint: #e8ecf5;
  --lp-link: #8a5a3b;
  --lp-link-hover: #6b4225;
  --lp-warm-tint: #f3ead9;
  --lp-stripe: repeating-linear-gradient(
    45deg,
    #efe8db,
    #efe8db 8px,
    #e6ddcc 8px,
    #e6ddcc 16px
  );
  --lp-cta-shadow: 0 4px 14px rgba(184, 92, 126, 0.35);

  background: var(--lp-bg);
  color: var(--lp-ink);
  font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Helvetica,
    Arial, sans-serif;
}

.landing-v2 a {
  color: var(--lp-link);
}
.landing-v2 a:hover {
  color: var(--lp-link-hover);
}

/* Mono all-caps kicker/eyebrow. Capitalisation happens here, never in the
 * catalogue. */
.lp-kicker {
  font-family: ui-monospace, monospace;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

/* Hero: rising emoji particles behind the score bar. */
@keyframes lp-rise {
  0% {
    transform: translateY(0) scale(0.8);
    opacity: 0;
  }
  12% {
    opacity: 0.85;
  }
  45% {
    opacity: 0.4;
  }
  70% {
    opacity: 0;
  }
  100% {
    transform: translateY(-84px) scale(1.05);
    opacity: 0;
  }
}

/* Hero: mobile scoring-chips marquee. */
@keyframes lp-marquee {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-50%);
  }
}

/* The marketing headline voice, shared with the blog: the landing's own
 * headings set this inline; the blog reaches it as a class through
 * `components/blog/fonts.ts`. !important because call sites carry per-size
 * inline font-weights from the Playfair era - the voice wins on purpose. */
.lp-headline {
  font-family: inherit;
  font-weight: 800 !important;
  letter-spacing: -0.01em;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[10].use[3]!./src/app/[locale]/(landing)/hero.css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************/
/*
 * The hero (design/landing-v2/README.md, "The hero (be precise here)").
 *
 * Only the parts that inline styles cannot express live here: the responsive
 * behaviour from hero variants 3a/3b, the two link states, and the headline's
 * clamp/balance. Everything else is an inline style on the element, so the
 * markup reads against the design file line for line.
 *
 * Breakpoints:
 *   ≤720px  scores drop off the bar, the third avatar chip goes, and the
 *           scoring chips become a marquee (matches the homepage design's own
 *           720px query).
 *   ≤430px  the short kicker replaces the long one and the CTAs stack full
 *           width (variant 3b, drawn at 375px; variant 3a at 480px still has
 *           the long kicker and a CTA row, so the switch sits between them).
 */

/* The centred content column. The score bar escapes it on purpose, so the
 * hero is a sequence of these rather than one wrapper. */
.lp-hero-col {
  max-width: 720px;
  margin: 0 auto;
  padding: 0 28px;
  text-align: center;
}

.lp-hero-h1 {
  font-size: clamp(32px, 6vw, 46px);
  font-weight: 800;
  line-height: 1.08;
  letter-spacing: -0.02em;
  margin: 0 0 16px;
  text-wrap: balance;
}

.lp-hero-sub {
  font-size: 17px;
  line-height: 1.55;
  color: var(--lp-ink-soft);
  margin: 0 auto 30px;
  max-width: 480px;
  position: relative;
  z-index: 2;
}

/* Both kickers are in the DOM; `display:none` keeps the hidden one out of the
 * accessibility tree too, so nothing is announced twice. */
.lp-kicker-short {
  display: none;
}

/* Scoring chips. Desktop is a centred wrapping row; the duplicate set only
 * exists for the mobile marquee. */
.lp-chips-wrap {
  overflow: hidden;
  margin: 0 0 30px;
}
.lp-chips-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}
.lp-chips-set {
  display: flex;
  gap: 8px;
  padding-right: 8px;
  flex-wrap: inherit;
  justify-content: inherit;
}
.lp-chips-dup {
  display: none;
}

.lp-hero-ctas {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  align-items: center;
}

/* `.landing-v2 a` in landing-v2.css sets the link brown on every anchor, so
 * these rules qualify with the element to outrank it in either source order.
 * The secondary link deliberately keeps that brown, hover included. */
.landing-v2 a.lp-hero-cta {
  text-decoration: none;
  white-space: nowrap;
  background: var(--lp-pink);
  color: #fff;
  font-weight: 800;
  font-size: 16px;
  padding: 15px 26px;
  border-radius: 13px;
  box-shadow: var(--lp-cta-shadow);
}
.landing-v2 a.lp-hero-cta:hover {
  color: #fff;
  background: var(--lp-pink-dark);
}
.landing-v2 a.lp-hero-cta-secondary {
  text-decoration: none;
  color: var(--lp-link);
  font-weight: 700;
  font-size: 15px;
  padding: 15px 8px;
}

@media (max-width: 720px) {
  .lp-chips-wrap {
    -webkit-mask-image: linear-gradient(
      90deg,
      transparent,
      #000 32px,
      #000 calc(100% - 32px),
      transparent
    );
    mask-image: linear-gradient(
      90deg,
      transparent,
      #000 32px,
      #000 calc(100% - 32px),
      transparent
    );
  }
  .lp-chips-row {
    animation: lp-marquee 16s linear infinite;
    width: max-content;
    flex-wrap: nowrap;
    justify-content: flex-start;
  }
  .lp-chips-dup {
    display: flex;
  }
  /* Names only on the bar, and a two-deep facepile. */
  .lp-bar-score {
    display: none;
  }
  .lp-avatar-last {
    /* !important because the chip carries an inline `display:flex` for its
     * own layout, which would otherwise win over this rule. */
    display: none !important;
  }
}

@media (max-width: 430px) {
  .lp-kicker-full {
    display: none;
  }
  .lp-kicker-short {
    display: block;
  }
  .lp-hero-ctas {
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 10px;
  }
  .landing-v2 a.lp-hero-cta,
  .landing-v2 a.lp-hero-cta-secondary {
    text-align: center;
  }
  .landing-v2 a.lp-hero-cta-secondary {
    padding: 10px 8px;
  }
}

/* The rising emoji and the marquee are pure decoration. With the animation
 * off the particles never fade up from their `opacity:0` resting state, which
 * is the intended outcome: motion was the whole of them. */
@media (prefers-reduced-motion: reduce) {
  .lp-particle,
  .lp-chips-row {
    animation: none !important;
  }
}

