/* ==========================================================================
   SADHYA — style.css
   variables.css + base.css + layout.css + components.css + leaf.css + sections.css + animations.css + overlays.css
   concatenated in cascade order. Section styles are generated from the
   per-section partials; see README.md.
   ========================================================================== */

/* ---------- variables.css ---------- */
/* ==========================================================================
   SADHYA — Design tokens
   Single source of truth for colour, type, space, motion and elevation.
   Nothing else in the codebase may hard-code a colour or a raw duration.
   ========================================================================== */

:root {
  /* ----------------------------------------------------------------------
     PALETTE — Banana leaf, kasavu gold, rice, brass, turmeric, laterite.
     Greens run 900 (deepest, near-black) to 300 (young leaf).
     ---------------------------------------------------------------------- */
  --leaf-900: #0d1c13;
  --leaf-800: #12271a;
  --leaf-700: #1a3624;
  --leaf-600: #23482e;
  --leaf-500: #2e5c39;
  --leaf-400: #3f7a4a;
  --leaf-300: #5c9a63;
  --leaf-200: #8dbb8c;

  /* Warm neutrals — rice, ivory, unbleached cotton */
  --rice: #fdfbf5;
  --cream: #f7f1e3;
  --cream-deep: #efe6d2;
  --sand: #e3d7bd;

  /* Kasavu gold + brass. Decorative only at small sizes — see contrast notes. */
  --gold: #c9a227;
  --gold-soft: #d9bd6a;
  --gold-deep: #8f6f1c;
  --brass: #b08d4f;

  /* Spice accents */
  --turmeric: #e0a526;
  --turmeric-deep: #b57c14;
  --clay: #a8543a;
  --chilli: #8c2f22;
  --coconut: #f4ece0;

  /* Ink — text colours, warm-shifted so nothing reads as pure grey */
  --ink: #191410;
  --ink-soft: #4a4136;
  --ink-mute: #6f6555;
  --ink-invert: #f7f1e3;
  --ink-invert-soft: #cbd6c4;
  --ink-invert-mute: #93a48e;

  /* ----------------------------------------------------------------------
     SEMANTIC SURFACES
     Each section picks a surface pair; components read these, never raw hues.
     ---------------------------------------------------------------------- */
  --surface: var(--cream);
  --surface-raised: var(--rice);
  --surface-sunken: var(--cream-deep);
  --text: var(--ink);
  --text-soft: var(--ink-soft);
  --text-mute: var(--ink-mute);
  --rule: color-mix(in srgb, var(--ink) 14%, transparent);
  --rule-strong: color-mix(in srgb, var(--ink) 26%, transparent);
  --accent: var(--leaf-600);
  --accent-contrast: var(--rice);
  --focus: var(--leaf-500);

  /* ----------------------------------------------------------------------
     TYPOGRAPHY
     ---------------------------------------------------------------------- */
  --font-display: "Fraunces", "Iowan Old Style", "Palatino Linotype", Palatino,
    "Georgia", "Times New Roman", serif;
  --font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    "Helvetica Neue", Arial, sans-serif;
  --font-mal: "Noto Sans Malayalam", "Manjari", "Meera", "Rachana",
    "Nirmala UI", var(--font-body);
  --font-mal-display: "Noto Serif Malayalam", "Rachana", "Manjari",
    var(--font-mal);

  /* Fluid scale. Display sizes are cinematic; body stays honest and readable. */
  --fs-mega: clamp(3.25rem, 12vw, 10.5rem);
  --fs-display: clamp(2.75rem, 8.4vw, 7.5rem);
  --fs-h1: clamp(2.4rem, 6.4vw, 5.25rem);
  --fs-h2: clamp(1.95rem, 4.4vw, 3.5rem);
  --fs-h3: clamp(1.35rem, 2.4vw, 1.95rem);
  --fs-h4: clamp(1.1rem, 1.6vw, 1.35rem);
  --fs-lede: clamp(1.05rem, 0.55vw + 0.95rem, 1.375rem);
  --fs-body: clamp(1rem, 0.2vw + 0.95rem, 1.0625rem);
  --fs-small: 0.9375rem;
  --fs-micro: 0.8125rem;
  --fs-eyebrow: 0.75rem;

  --lh-tight: 0.94;
  --lh-snug: 1.08;
  --lh-heading: 1.16;
  --lh-body: 1.62;
  --lh-loose: 1.75;

  --ls-mega: -0.035em;
  --ls-display: -0.028em;
  --ls-heading: -0.018em;
  --ls-body: 0;
  --ls-eyebrow: 0.24em;
  --ls-caps: 0.14em;

  /* ----------------------------------------------------------------------
     SPACE — 4px base, doubling-ish scale
     ---------------------------------------------------------------------- */
  --sp-1: 0.25rem;
  --sp-2: 0.5rem;
  --sp-3: 0.75rem;
  --sp-4: 1rem;
  --sp-5: 1.5rem;
  --sp-6: 2rem;
  --sp-7: 2.75rem;
  --sp-8: 3.5rem;
  --sp-9: 4.5rem;
  --sp-10: 6rem;
  --sp-11: 8rem;
  --sp-12: 10rem;

  /* Rhythm */
  --section-y: clamp(4.5rem, 9vw, 9rem);
  --section-y-lg: clamp(6rem, 12vw, 12rem);
  --gutter: clamp(1.25rem, 4.5vw, 4rem);
  --wrap-max: 1280px;
  --wrap-narrow: 720px;
  --wrap-wide: 1560px;
  --measure: 62ch;
  --measure-tight: 46ch;

  /* ----------------------------------------------------------------------
     SHAPE + ELEVATION
     Organic radii — nothing here is a perfect rounded rectangle by accident.
     ---------------------------------------------------------------------- */
  --r-xs: 4px;
  --r-sm: 8px;
  --r-md: 14px;
  --r-lg: 22px;
  --r-xl: 34px;
  --r-pill: 999px;
  --r-organic: 62% 38% 44% 56% / 48% 56% 44% 52%;

  --shadow-xs: 0 1px 2px color-mix(in srgb, var(--leaf-900) 8%, transparent);
  --shadow-sm: 0 2px 6px color-mix(in srgb, var(--leaf-900) 8%, transparent),
    0 1px 2px color-mix(in srgb, var(--leaf-900) 6%, transparent);
  --shadow-md: 0 10px 24px -8px color-mix(in srgb, var(--leaf-900) 22%, transparent),
    0 2px 6px color-mix(in srgb, var(--leaf-900) 8%, transparent);
  --shadow-lg: 0 28px 60px -20px color-mix(in srgb, var(--leaf-900) 34%, transparent),
    0 6px 16px color-mix(in srgb, var(--leaf-900) 10%, transparent);
  --shadow-glow: 0 0 0 6px color-mix(in srgb, var(--gold) 18%, transparent);

  /* ----------------------------------------------------------------------
     MOTION
     Durations are tokens so `prefers-reduced-motion` can zero them globally.
     ---------------------------------------------------------------------- */
  --dur-instant: 90ms;
  --dur-fast: 180ms;
  --dur-base: 320ms;
  --dur-slow: 620ms;
  --dur-slower: 1000ms;
  --dur-cinema: 1600ms;

  --ease-out: cubic-bezier(0.22, 0.68, 0.24, 1);
  --ease-in-out: cubic-bezier(0.65, 0.02, 0.24, 1);
  --ease-spring: cubic-bezier(0.34, 1.42, 0.48, 1);
  --ease-soft: cubic-bezier(0.4, 0, 0.2, 1);

  /* Multiplier honoured by JS-driven timings (see js/modules/motion.js) */
  --motion-scale: 1;

  /* ----------------------------------------------------------------------
     LAYERS
     ---------------------------------------------------------------------- */
  --z-base: 0;
  --z-raised: 10;
  --z-sticky: 100;
  --z-nav: 200;
  --z-cursor: 300;
  --z-modal: 400;
  --z-loader: 500;

  /* Interactive leaf geometry — shared by CSS and JS.
     Landscape aspect matches assets/leaf.svg viewBox. */
  --leaf-ratio: 1.9736842;   /* 1500 / 760 */
  --marker-size: clamp(2.75rem, 4.4vw, 3.75rem);
  --marker-size-sm: 2.25rem;
}

/* --------------------------------------------------------------------------
   SURFACE THEMES
   Applied per-section. Components inherit and never need to know which
   background they are sitting on.
   -------------------------------------------------------------------------- */

[data-theme="cream"] {
  --surface: var(--cream);
  --surface-raised: var(--rice);
  --surface-sunken: var(--cream-deep);
  --text: var(--ink);
  --text-soft: var(--ink-soft);
  --text-mute: var(--ink-mute);
  --rule: color-mix(in srgb, var(--ink) 14%, transparent);
  --rule-strong: color-mix(in srgb, var(--ink) 26%, transparent);
  --accent: var(--leaf-600);
  --accent-contrast: var(--rice);
  --focus: var(--leaf-500);
}

[data-theme="rice"] {
  --surface: var(--rice);
  --surface-raised: #fff;
  --surface-sunken: var(--cream);
  --text: var(--ink);
  --text-soft: var(--ink-soft);
  --text-mute: var(--ink-mute);
  --rule: color-mix(in srgb, var(--ink) 12%, transparent);
  --rule-strong: color-mix(in srgb, var(--ink) 24%, transparent);
  --accent: var(--leaf-600);
  --accent-contrast: var(--rice);
  --focus: var(--leaf-500);
}

[data-theme="leaf"] {
  --surface: var(--leaf-800);
  --surface-raised: var(--leaf-700);
  --surface-sunken: var(--leaf-900);
  --text: var(--ink-invert);
  --text-soft: var(--ink-invert-soft);
  --text-mute: var(--ink-invert-mute);
  --rule: color-mix(in srgb, var(--rice) 18%, transparent);
  --rule-strong: color-mix(in srgb, var(--rice) 34%, transparent);
  --accent: var(--gold-soft);
  --accent-contrast: var(--leaf-900);
  --focus: var(--gold-soft);
}

[data-theme="night"] {
  --surface: var(--leaf-900);
  --surface-raised: var(--leaf-800);
  --surface-sunken: #070f0a;
  --text: var(--ink-invert);
  --text-soft: var(--ink-invert-soft);
  --text-mute: var(--ink-invert-mute);
  --rule: color-mix(in srgb, var(--rice) 16%, transparent);
  --rule-strong: color-mix(in srgb, var(--rice) 30%, transparent);
  --accent: var(--gold-soft);
  --accent-contrast: var(--leaf-900);
  --focus: var(--gold-soft);
}

/* --------------------------------------------------------------------------
   REDUCED MOTION
   Durations collapse at the token level, so every transition and animation
   that uses them stops without needing its own media query.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  :root {
    --dur-instant: 1ms;
    --dur-fast: 1ms;
    --dur-base: 1ms;
    --dur-slow: 1ms;
    --dur-slower: 1ms;
    --dur-cinema: 1ms;
    --motion-scale: 0;
  }
}

/* ---------- base.css ---------- */
/* ==========================================================================
   SADHYA — Reset, typography, and the handful of primitives every section
   is built from.
   ========================================================================== */

*,
*::before,
*::after {
  box-sizing: border-box;
}

* {
  margin: 0;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  /* Keeps anchored sections clear of the sticky rail */
  scroll-padding-top: 5rem;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}

body {
  min-height: 100svh;
  background: var(--surface);
  color: var(--text);
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  font-synthesis-weight: none;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  /* The single most important overflow guard on the page. */
  overflow-x: clip;
}

img,
svg,
picture,
video,
canvas {
  display: block;
  max-width: 100%;
}

img {
  height: auto;
  /* An image that fails still occupies a calm, intentional block. */
  background: var(--surface-sunken);
  color: transparent;
}

input,
button,
textarea,
select {
  font: inherit;
  color: inherit;
}

button {
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}

ul[class],
ol[class] {
  list-style: none;
  padding: 0;
}

p,
li {
  text-wrap: pretty;
  overflow-wrap: break-word;
}

:target {
  scroll-margin-top: 6rem;
}

/* --------------------------------------------------------------------------
   Focus — one ring, everywhere, always visible against any surface.
   -------------------------------------------------------------------------- */

:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 3px;
  border-radius: var(--r-xs);
}

/* Belt and braces for browsers that fire :focus on click for custom controls */
:focus:not(:focus-visible) {
  outline: none;
}

::selection {
  background: color-mix(in srgb, var(--gold) 40%, transparent);
  color: var(--ink);
}

/* --------------------------------------------------------------------------
   Type
   -------------------------------------------------------------------------- */

h1,
h2,
h3,
h4 {
  font-family: var(--font-display);
  font-weight: 400;
  font-optical-sizing: auto;
  line-height: var(--lh-heading);
  letter-spacing: var(--ls-heading);
  text-wrap: balance;
  color: var(--text);
}

h1 {
  font-size: var(--fs-h1);
}
h2 {
  font-size: var(--fs-h2);
}
h3 {
  font-size: var(--fs-h3);
}
h4 {
  font-size: var(--fs-h4);
}

/* Display utilities — cinematic sizes, used sparingly. */
.t-mega,
.t-display {
  font-family: var(--font-display);
  font-weight: 300;
  font-optical-sizing: auto;
  text-wrap: balance;
}

.t-mega {
  font-size: var(--fs-mega);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-mega);
}

.t-display {
  font-size: var(--fs-display);
  line-height: var(--lh-snug);
  letter-spacing: var(--ls-display);
}

/* An italic, lighter phrase inside a display line — the editorial accent. */
.t-soft {
  font-style: italic;
  font-weight: 300;
  color: var(--accent);
}

/* Small caps label. Used for chapter numbers, section eyebrows, metadata. */
.eyebrow {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  font-family: var(--font-body);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--text-mute);
  margin: 0;
}

.eyebrow--center {
  justify-content: center;
}

/* The little brass tick that precedes an eyebrow. */
.eyebrow::before {
  content: '';
  inline-size: clamp(1.5rem, 3vw, 2.75rem);
  block-size: 1px;
  flex: none;
  background: linear-gradient(
    to right,
    var(--accent),
    color-mix(in srgb, var(--accent) 10%, transparent)
  );
}

.eyebrow__num {
  font-variant-numeric: tabular-nums;
  color: var(--accent);
}

.lede {
  font-size: var(--fs-lede);
  line-height: var(--lh-loose);
  color: var(--text-soft);
  max-width: var(--measure);
  font-weight: 350;
}

.prose {
  max-width: var(--measure);
  color: var(--text-soft);
}

.prose > * + * {
  margin-block-start: 1em;
}

.prose strong {
  color: var(--text);
  font-weight: 600;
}

/* Malayalam. Sits at a slightly larger size — the script needs the room. */
.mal {
  font-family: var(--font-mal);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0;
}

.mal--display {
  font-family: var(--font-mal-display);
  line-height: 1.28;
}

/* A quiet romanisation shown under a Malayalam or dish name. */
.say {
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-caps);
  text-transform: lowercase;
  color: var(--text-mute);
  font-variant: normal;
}

.caps {
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-caps);
  text-transform: uppercase;
  font-weight: 500;
}

a {
  color: inherit;
  text-decoration-color: color-mix(in srgb, currentColor 35%, transparent);
  text-underline-offset: 0.22em;
  text-decoration-thickness: 1px;
  transition: text-decoration-color var(--dur-fast) var(--ease-out);
}

a:hover {
  text-decoration-color: currentColor;
}

/* --------------------------------------------------------------------------
   Utilities
   -------------------------------------------------------------------------- */

.visually-hidden:not(:focus-within):not(:active) {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.skip-link {
  position: absolute;
  inset-block-start: var(--sp-3);
  inset-inline-start: var(--sp-3);
  z-index: var(--z-loader);
  padding: var(--sp-3) var(--sp-5);
  background: var(--leaf-800);
  color: var(--rice);
  border-radius: var(--r-pill);
  font-size: var(--fs-small);
  font-weight: 500;
  text-decoration: none;
  box-shadow: var(--shadow-md);
  transform: translateY(-160%);
  transition: transform var(--dur-base) var(--ease-out);
}

.skip-link:focus-visible {
  transform: translateY(0);
}

/* Content is visible by default. The reveal system only ever hides things
   once JS has confirmed it is running — see animations.css. */
.no-js [data-reveal] {
  opacity: 1;
  transform: none;
}

.no-js [data-requires-js] {
  display: none;
}

.js [data-no-js-only] {
  display: none;
}

/* A short explanatory line shown where an interactive widget would be, if
   scripting is unavailable. */
.no-js-note {
  padding: var(--sp-5);
  border: 1px dashed var(--rule-strong);
  border-radius: var(--r-md);
  color: var(--text-mute);
  font-size: var(--fs-small);
}

/* ---------- layout.css ---------- */
/* ==========================================================================
   SADHYA — Page scaffolding: wrappers, section shells, grids.
   Every section on the page uses the same shell, so the vertical rhythm
   holds together from the hero to the footer.
   ========================================================================== */

.wrap {
  inline-size: min(var(--wrap-max), 100% - var(--gutter) * 2);
  margin-inline: auto;
}

.wrap--narrow {
  inline-size: min(var(--wrap-narrow), 100% - var(--gutter) * 2);
}

.wrap--wide {
  inline-size: min(var(--wrap-wide), 100% - var(--gutter) * 2);
}

/* --------------------------------------------------------------------------
   Section shell
   -------------------------------------------------------------------------- */

.section {
  position: relative;
  padding-block: var(--section-y);
  background: var(--surface);
  color: var(--text);
  /* Sections are opaque so consecutive themes butt cleanly against each other */
  isolation: isolate;
}

.section--tall {
  padding-block: var(--section-y-lg);
}

.section--flush-top {
  padding-block-start: 0;
}

.section--flush-bottom {
  padding-block-end: 0;
}

/* A hairline that reads as the gold thread on a kasavu border. */
.section--seam::before {
  content: '';
  position: absolute;
  inset-block-start: 0;
  inset-inline: 0;
  block-size: 1px;
  background: linear-gradient(
    to right,
    transparent,
    color-mix(in srgb, var(--gold) 55%, transparent) 18%,
    color-mix(in srgb, var(--gold) 55%, transparent) 82%,
    transparent
  );
  opacity: 0.7;
}

.section__head {
  display: flex;
  flex-direction: column;
  gap: var(--sp-5);
  max-width: 58ch;
  margin-block-end: clamp(2.5rem, 5vw, 4.5rem);
}

.section__head--center {
  align-items: center;
  text-align: center;
  max-width: 62ch;
  margin-inline: auto;
}

.section__head--wide {
  max-width: none;
}

.section__title {
  font-size: var(--fs-h2);
  line-height: var(--lh-snug);
  letter-spacing: var(--ls-display);
  font-weight: 300;
}

/* Two-line editorial title where the second line is set softer. */
.section__title span {
  display: block;
}

.section__title .is-quiet {
  color: var(--text-soft);
  font-style: italic;
  font-weight: 300;
}

/* --------------------------------------------------------------------------
   Grids
   -------------------------------------------------------------------------- */

.grid {
  display: grid;
  gap: var(--sp-6);
}

/* Editorial split: a big statement on the left, the story on the right. */
.split {
  display: grid;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
  grid-template-columns: 1fr;
}

@media (min-width: 62rem) {
  .split {
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  }

  .split--wide-left {
    grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
  }

  .split--wide-right {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr);
  }

  /* Keeps the right-hand column optically aligned with the left baseline. */
  .split__aside {
    padding-block-start: 0.6rem;
  }
}

.cards {
  display: grid;
  gap: var(--sp-5);
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr));
}

.cards--roomy {
  gap: var(--sp-6);
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 21rem), 1fr));
}

/* Vertical flow with a consistent gap. */
.stack {
  display: flex;
  flex-direction: column;
  gap: var(--sp-5);
  align-items: flex-start;
}

.stack--center {
  align-items: center;
  text-align: center;
}

.stack--tight {
  gap: var(--sp-3);
}

.stack--loose {
  gap: var(--sp-7);
}

.row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-4);
  align-items: center;
}

.row--between {
  justify-content: space-between;
}

.row--end {
  justify-content: flex-end;
}

/* --------------------------------------------------------------------------
   Sticky chapter rail — the thin progress marker down the left edge.
   -------------------------------------------------------------------------- */

.rail {
  position: fixed;
  /* nav.js copies the current section's theme here, so the dots stay
     legible whether they are sitting over cream or over deep green. */
  color: var(--text);
  transition: color var(--dur-base) var(--ease-out);
  inset-block-start: 50%;
  inset-inline-start: clamp(0.75rem, 1.6vw, 1.5rem);
  translate: 0 -50%;
  z-index: var(--z-sticky);
  display: none;
  flex-direction: column;
  gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-2);
}

@media (min-width: 75rem) {
  .rail {
    display: flex;
  }
}

.rail__item {
  position: relative;
  display: block;
  inline-size: 1.5rem;
  block-size: 1.5rem;
  border-radius: var(--r-pill);
  display: grid;
  place-items: center;
}

.rail__dot {
  inline-size: 6px;
  block-size: 6px;
  border-radius: var(--r-pill);
  background: color-mix(in srgb, currentColor 35%, transparent);
  transition: inline-size var(--dur-base) var(--ease-spring),
    block-size var(--dur-base) var(--ease-spring),
    background-color var(--dur-base) var(--ease-out);
}

.rail__item[aria-current='true'] .rail__dot {
  inline-size: 9px;
  block-size: 9px;
  background: var(--gold);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--gold) 22%, transparent);
}

/* Chapter name slides out on hover / focus. */
.rail__label {
  position: absolute;
  inset-inline-start: 130%;
  inset-block-start: 50%;
  translate: 0 -50%;
  white-space: nowrap;
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-caps);
  text-transform: uppercase;
  padding: 0.35em 0.75em;
  border-radius: var(--r-pill);
  background: var(--leaf-800);
  color: var(--rice);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-fast) var(--ease-out),
    translate var(--dur-fast) var(--ease-out);
  translate: -4px -50%;
}

.rail__item:hover .rail__label,
.rail__item:focus-visible .rail__label {
  opacity: 1;
  translate: 0 -50%;
}

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */

.footer {
  padding-block: clamp(3.5rem, 7vw, 6rem) var(--sp-7);
  background: var(--surface);
  color: var(--text);
}

.footer__grid {
  display: grid;
  gap: clamp(2rem, 5vw, 4rem);
  grid-template-columns: 1fr;
  align-items: start;
}

@media (min-width: 48rem) {
  .footer__grid {
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr);
  }
}

.footer__links {
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
  font-size: var(--fs-small);
}

.footer__bottom {
  margin-block-start: clamp(2.5rem, 5vw, 4rem);
  padding-block-start: var(--sp-5);
  border-block-start: 1px solid var(--rule);
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-4);
  justify-content: space-between;
  align-items: center;
  font-size: var(--fs-micro);
  color: var(--text-mute);
}

/* ---------- components.css ---------- */
/* ==========================================================================
   SADHYA — Shared components.
   Everything here is surface-aware: drop it on cream or on deep green and it
   picks up the right contrast from the theme tokens without extra classes.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Buttons
   -------------------------------------------------------------------------- */

.btn {
  --btn-bg: transparent;
  --btn-fg: var(--text);
  --btn-border: transparent;

  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-3);
  padding: 0.95em 1.65em;
  min-block-size: 3rem;
  border-radius: var(--r-pill);
  border: 1px solid var(--btn-border);
  background: var(--btn-bg);
  color: var(--btn-fg);
  font-size: var(--fs-small);
  font-weight: 500;
  letter-spacing: 0.02em;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: transform var(--dur-base) var(--ease-spring),
    background-color var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    color var(--dur-base) var(--ease-out),
    box-shadow var(--dur-base) var(--ease-out);
}

.btn:hover {
  transform: translateY(-2px);
}

.btn:active {
  transform: translateY(0);
  transition-duration: var(--dur-instant);
}

.btn[disabled],
.btn[aria-disabled='true'] {
  opacity: 0.45;
  pointer-events: none;
}

.btn--primary {
  --btn-bg: var(--accent);
  --btn-fg: var(--accent-contrast);
  --btn-border: var(--accent);
  box-shadow: var(--shadow-sm);
}

.btn--primary:hover {
  --btn-bg: color-mix(in srgb, var(--accent) 86%, var(--text));
  box-shadow: var(--shadow-md);
}

.btn--ghost {
  --btn-border: var(--rule-strong);
  --btn-fg: var(--text);
}

.btn--ghost:hover {
  --btn-border: var(--accent);
  --btn-bg: color-mix(in srgb, var(--accent) 8%, transparent);
}

.btn--quiet {
  --btn-fg: var(--text-soft);
  padding-inline: 0.5em;
  min-block-size: 2.5rem;
}

.btn--quiet:hover {
  --btn-fg: var(--text);
}

.btn--sm {
  padding: 0.6em 1.15em;
  min-block-size: 2.5rem;
  font-size: var(--fs-micro);
}

.btn__icon {
  inline-size: 1.05em;
  block-size: 1.05em;
  flex: none;
  transition: transform var(--dur-base) var(--ease-spring);
}

.btn:hover .btn__icon--arrow {
  transform: translateX(3px);
}

.btn:hover .btn__icon--down {
  transform: translateY(3px);
}

.btn-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-4);
  align-items: center;
}

/* --------------------------------------------------------------------------
   Chips — filters, flavour keys, memory words.
   Selected state is carried by a filled dot and a weight change as well as
   by colour, so it never depends on hue alone.
   -------------------------------------------------------------------------- */

.chip {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  padding: 0.62em 1.1em;
  min-block-size: 2.75rem;
  border-radius: var(--r-pill);
  border: 1px solid var(--rule-strong);
  background: transparent;
  color: var(--text-soft);
  font-size: var(--fs-small);
  font-weight: 450;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    color var(--dur-base) var(--ease-out),
    transform var(--dur-fast) var(--ease-spring);
}

.chip:hover {
  border-color: var(--accent);
  color: var(--text);
}

.chip:active {
  transform: scale(0.97);
}

.chip__dot {
  inline-size: 0.5rem;
  block-size: 0.5rem;
  border-radius: var(--r-pill);
  flex: none;
  border: 1px solid currentColor;
  background: transparent;
  transition: background-color var(--dur-base) var(--ease-out),
    box-shadow var(--dur-base) var(--ease-out);
}

.chip[aria-pressed='true'],
.chip[aria-selected='true'],
.chip.is-on {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--accent-contrast);
  font-weight: 550;
}

.chip[aria-pressed='true'] .chip__dot,
.chip[aria-selected='true'] .chip__dot,
.chip.is-on .chip__dot {
  background: currentColor;
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent-contrast) 28%, transparent);
}

.chip__count {
  font-variant-numeric: tabular-nums;
  font-size: 0.85em;
  opacity: 0.7;
}

.chip-group {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
}

/* Horizontal scroller for narrow screens — filters must never wrap into a
   four-line block on a phone. */
.chip-group--scroll {
  flex-wrap: nowrap;
  overflow-x: auto;
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
  scrollbar-color: var(--rule-strong) transparent;
  padding-block-end: var(--sp-2);
  /* Let chips reach the screen edge while staying aligned to the wrap. */
  margin-inline: calc(var(--gutter) * -1);
  padding-inline: var(--gutter);
  -webkit-overflow-scrolling: touch;
}

.chip-group--scroll > .chip {
  scroll-snap-align: start;
}

@media (min-width: 48rem) {
  .chip-group--scroll {
    flex-wrap: wrap;
    overflow-x: visible;
    margin-inline: 0;
    padding-inline: 0;
  }
}

/* --------------------------------------------------------------------------
   Tags and small metadata
   -------------------------------------------------------------------------- */

.tag {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  padding: 0.32em 0.7em;
  border-radius: var(--r-pill);
  border: 1px solid var(--rule);
  font-size: var(--fs-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-mute);
  white-space: nowrap;
}

.tag--accent {
  border-color: color-mix(in srgb, var(--accent) 45%, transparent);
  color: var(--accent);
}

.tag-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
}

/* Flavour readout: "Creamy · Coconut-rich · Mild" */
.flavour-line {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5em;
  font-size: var(--fs-small);
  color: var(--text-soft);
}

.flavour-line li + li::before {
  content: '·';
  margin-inline-end: 0.5em;
  color: var(--accent);
}

.flavour-line li {
  display: inline;
}

/* --------------------------------------------------------------------------
   Rules and separators
   -------------------------------------------------------------------------- */

.rule {
  border: 0;
  block-size: 1px;
  background: var(--rule);
  margin: 0;
}

/* Kasavu: two gold threads with a woven gap between them. */
.rule--kasavu {
  block-size: 6px;
  background: linear-gradient(
      to bottom,
      color-mix(in srgb, var(--gold) 70%, transparent) 0 1px,
      transparent 1px 5px,
      color-mix(in srgb, var(--gold) 70%, transparent) 5px 6px
    ),
    none;
  opacity: 0.75;
}

/* A brass dot flanked by two hairlines — used to close a section. */
.rule--brass {
  display: flex;
  align-items: center;
  gap: var(--sp-4);
  block-size: auto;
  background: none;
  color: var(--accent);
}

.rule--brass::before,
.rule--brass::after {
  content: '';
  flex: 1;
  block-size: 1px;
  background: linear-gradient(
    to right,
    transparent,
    var(--rule-strong),
    transparent
  );
}

.rule--brass span {
  inline-size: 7px;
  block-size: 7px;
  border-radius: var(--r-pill);
  background: var(--gold);
  flex: none;
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--gold) 16%, transparent);
}

/* --------------------------------------------------------------------------
   Cards — the dish index, payasam varieties, story panels.
   -------------------------------------------------------------------------- */

.card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
  padding: var(--sp-5);
  border-radius: var(--r-lg);
  background: var(--surface-raised);
  border: 1px solid var(--rule);
  text-align: start;
  inline-size: 100%;
  transition: transform var(--dur-base) var(--ease-out),
    box-shadow var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out);
}

button.card,
a.card {
  cursor: pointer;
}

button.card:hover,
a.card:hover {
  transform: translateY(-3px);
  border-color: color-mix(in srgb, var(--accent) 40%, transparent);
  box-shadow: var(--shadow-md);
}

.card__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sp-3);
}

.card__name {
  font-family: var(--font-display);
  font-size: var(--fs-h4);
  font-weight: 400;
  letter-spacing: var(--ls-heading);
  line-height: 1.2;
  color: var(--text);
}

.card__mal {
  font-family: var(--font-mal);
  font-size: 1rem;
  color: var(--accent);
  white-space: nowrap;
}

.card__text {
  font-size: var(--fs-small);
  color: var(--text-soft);
  line-height: 1.6;
  margin: 0;
}

.card__foot {
  margin-block-start: auto;
  padding-block-start: var(--sp-3);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
}

/* The small colour swatch that ties a card to its serving on the leaf. */
.swatch {
  /* Explicit, because a swatch is often dropped straight into a text run,
     where an inline box would ignore its size entirely. */
  display: inline-block;
  flex: none;
  inline-size: 1.75rem;
  block-size: 1.75rem;
  border-radius: 58% 42% 47% 53% / 52% 48% 52% 48%;
  flex: none;
  background: radial-gradient(
    circle at 32% 28%,
    color-mix(in srgb, var(--swatch, var(--accent)) 100%, white 22%),
    var(--swatch, var(--accent)) 62%,
    var(--swatch-deep, var(--accent)) 100%
  );
  box-shadow: inset 0 -1px 3px color-mix(in srgb, var(--leaf-900) 28%, transparent);
}

.swatch--sm {
  inline-size: 1.1rem;
  block-size: 1.1rem;
}

/* --------------------------------------------------------------------------
   Counter readout — "12 dishes" in the builder, and the flavour tally.
   -------------------------------------------------------------------------- */

.counter {
  display: flex;
  align-items: baseline;
  gap: var(--sp-3);
}

.counter__value {
  font-family: var(--font-display);
  font-size: clamp(2.75rem, 6vw, 4.5rem);
  font-weight: 300;
  line-height: 1;
  letter-spacing: var(--ls-display);
  font-variant-numeric: tabular-nums;
  color: var(--text);
}

.counter__label {
  font-size: var(--fs-small);
  color: var(--text-mute);
  letter-spacing: var(--ls-caps);
  text-transform: uppercase;
}

/* Thin progress bar. Doubles as the builder's completeness meter. */
.meter {
  inline-size: 100%;
  block-size: 3px;
  border-radius: var(--r-pill);
  background: var(--rule);
  overflow: hidden;
}

.meter__fill {
  display: block;
  block-size: 100%;
  inline-size: 0%;
  border-radius: inherit;
  background: linear-gradient(to right, var(--leaf-400), var(--gold));
  transition: inline-size var(--dur-slow) var(--ease-out);
}

/* --------------------------------------------------------------------------
   Toast — share fallbacks and small confirmations.
   -------------------------------------------------------------------------- */

.toast {
  position: fixed;
  inset-block-end: max(var(--sp-5), env(safe-area-inset-bottom));
  inset-inline: var(--sp-4);
  margin-inline: auto;
  inline-size: fit-content;
  max-inline-size: min(28rem, calc(100% - var(--sp-8)));
  z-index: var(--z-modal);
  padding: var(--sp-4) var(--sp-5);
  border-radius: var(--r-pill);
  background: var(--leaf-800);
  color: var(--rice);
  font-size: var(--fs-small);
  text-align: center;
  box-shadow: var(--shadow-lg);
  opacity: 0;
  translate: 0 1rem;
  pointer-events: none;
  transition: opacity var(--dur-base) var(--ease-out),
    translate var(--dur-base) var(--ease-out);
}

.toast.is-open {
  opacity: 1;
  translate: 0 0;
}

/* ---------- leaf.css ---------- */
/* ==========================================================================
   SADHYA — The interactive leaf.
   Used twice: once in #feast (a laid sadhya you can explore) and once in
   #build (an empty leaf you fill yourself). Both share this component.

   The stage is landscape on wide screens and rotates a quarter turn on narrow
   ones, so the leaf always runs along the long axis of the viewport. Servings are
   positioned in landscape coordinates and counter-rotated, so one set of
   coordinates drives both orientations.
   ========================================================================== */

.leaf-stage {
  position: relative;
  inline-size: 100%;
  aspect-ratio: var(--leaf-ratio);
  /* Warm ground so the leaf reads as though it is on a table. */
  --stage-rot: 0deg;
  --marker-rot: 0deg;
}

.leaf-stage__inner {
  position: absolute;
  inset: 0;
  container-type: inline-size;
  container-name: leaf;
  transform-origin: center;
}

.leaf-stage__blade {
  position: absolute;
  inset: 0;
  inline-size: 100%;
  block-size: 100%;
  object-fit: contain;
  background: none;
  filter: drop-shadow(0 clamp(6px, 1.4cqw, 22px) clamp(14px, 3cqw, 46px)
    color-mix(in srgb, var(--leaf-900) 30%, transparent));
  transition: filter var(--dur-slow) var(--ease-out),
    opacity var(--dur-slow) var(--ease-out);
}

/* If leaf.svg ever fails to load, this shape is still a leaf. */
.leaf-stage__fallback {
  position: absolute;
  inset: 6% 2%;
  border-radius: 50% 46% 50% 46% / 50%;
  background: linear-gradient(
    to bottom,
    var(--leaf-600),
    var(--leaf-400) 48%,
    var(--leaf-500) 52%,
    var(--leaf-700)
  );
  z-index: -1;
}

.leaf-stage__markers {
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

/* --------------------------------------------------------------------------
   Portrait — narrow screens turn the whole stage a quarter turn so the leaf
   runs down the page with its tip at the top.
   -------------------------------------------------------------------------- */

@media (max-width: 47.99rem) {
  .leaf-stage {
    aspect-ratio: calc(1 / var(--leaf-ratio));
    --marker-rot: -90deg;
  }

  .leaf-stage__inner {
    inset: auto;
    inset-block-start: 50%;
    inset-inline-start: 50%;
    inline-size: calc(var(--leaf-ratio) * 100%);
    block-size: auto;
    aspect-ratio: var(--leaf-ratio);
    transform: translate(-50%, -50%) rotate(90deg);
  }
}

/* --------------------------------------------------------------------------
   A dish on the leaf
   -------------------------------------------------------------------------- */

.dish {
  position: absolute;
  /* left / top are written by the build step from the leaf geometry */
  margin: 0;
}

.dish__btn {
  position: absolute;
  inset-block-start: 0;
  inset-inline-start: 0;
  /* Always at least a comfortable tap target, whatever the serving size. */
  min-inline-size: 44px;
  min-block-size: 44px;
  display: grid;
  place-items: center;
  padding: 0;
  border-radius: var(--r-pill);
  transform: translate(-50%, -50%) rotate(var(--marker-rot))
    translateY(var(--dish-lift, 0px)) scale(var(--dish-scale, 1));
  transition: transform var(--dur-base) var(--ease-spring),
    opacity var(--dur-base) var(--ease-out),
    filter var(--dur-base) var(--ease-out);
  cursor: pointer;
}

.dish__btn:focus-visible {
  outline-offset: 5px;
}

@media (hover: hover) {
  .dish__btn:hover {
    --dish-lift: -4px;
    --dish-scale: 1.09;
    z-index: 3;
  }
}

.dish__btn:active {
  --dish-scale: 1.02;
  transition-duration: var(--dur-instant);
}

/* Selected / currently open in the panel. */
.dish.is-active .dish__btn {
  --dish-scale: 1.12;
  z-index: 4;
}

/* Dimmed by a flavour filter. Never fully invisible, and the ring below
   keeps the matched ones distinguishable without relying on opacity alone. */
.dish.is-dim .dish__btn {
  opacity: 0.32;
  filter: saturate(0.4);
}

.dish.is-match .dish__serving::after {
  opacity: 1;
  transform: scale(1);
}

/* --------------------------------------------------------------------------
   Servings — every dish is drawn, not photographed. Each `form` gets its own
   silhouette so a pool of sambar never looks like a mound of thoran.

   Sizes are in `cqw` against the leaf container, so a serving keeps its
   proportion to the blade at every screen size and in both orientations.
   -------------------------------------------------------------------------- */

.dish__serving {
  --serving: 5.4cqw;
  position: relative;
  display: block;
  inline-size: var(--serving);
  block-size: var(--serving);
  border-radius: var(--r-organic);
  background:
    radial-gradient(
      ellipse 46% 42% at 34% 26%,
      color-mix(in srgb, var(--dish-color) 62%, white) 0%,
      transparent 70%
    ),
    radial-gradient(ellipse at 50% 52%, var(--dish-color) 44%, var(--dish-deep) 100%);
  /* A contact shadow plus a hairline rim — this is what separates a pale
     serving from a pale leaf highlight. */
  box-shadow: 0 0.3cqw 0.75cqw color-mix(in srgb, var(--leaf-900) 48%, transparent),
    0 0.08cqw 0.15cqw color-mix(in srgb, var(--leaf-900) 40%, transparent),
    inset 0 -0.22cqw 0.45cqw color-mix(in srgb, var(--dish-deep) 65%, transparent);
}

/* The match ring used by the flavour map. */
.dish__serving::after {
  content: '';
  position: absolute;
  inset: -26%;
  border-radius: var(--r-pill);
  border: 0.16cqw solid var(--gold);
  opacity: 0;
  transform: scale(0.8);
  transition: opacity var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-spring);
  pointer-events: none;
}

.dish[data-size='sm'] .dish__serving {
  --serving: 4.2cqw;
}
.dish[data-size='md'] .dish__serving {
  --serving: 5.8cqw;
}
.dish[data-size='lg'] .dish__serving {
  --serving: 8cqw;
}

/* --- pool: a wet curry, flatter and glossier ---------------------------- */
.dish__serving--pool {
  block-size: calc(var(--serving) * 0.64);
  border-radius: 52% 48% 46% 54% / 58% 54% 46% 42%;
  background:
    radial-gradient(
      ellipse 40% 30% at 32% 26%,
      color-mix(in srgb, white 55%, transparent) 0%,
      transparent 70%
    ),
    radial-gradient(ellipse at 50% 55%, var(--dish-color) 40%, var(--dish-deep) 100%);
  box-shadow: 0 0.25cqw 0.6cqw color-mix(in srgb, var(--leaf-900) 46%, transparent),
    inset 0 0.18cqw 0.4cqw color-mix(in srgb, white 30%, transparent),
    inset 0 -0.15cqw 0.3cqw color-mix(in srgb, var(--dish-deep) 70%, transparent);
}

/* --- mound: a dry, spooned heap with a little texture -------------------
   Note: radial-gradient() will not take a percentage for a `circle`, only
   for an `ellipse` — writing `circle 12%` silently invalidates the whole
   declaration. --------------------------------------------------------- */
.dish__serving--mound {
  border-radius: 54% 46% 58% 42% / 62% 58% 42% 38%;
  background:
    radial-gradient(
      ellipse 8% 8% at 66% 60%,
      color-mix(in srgb, white 26%, transparent) 0 70%,
      transparent 100%
    ),
    radial-gradient(
      ellipse 7% 7% at 38% 70%,
      color-mix(in srgb, var(--dish-deep) 55%, transparent) 0 70%,
      transparent 100%
    ),
    radial-gradient(
      ellipse 6% 6% at 56% 33%,
      color-mix(in srgb, white 20%, transparent) 0 70%,
      transparent 100%
    ),
    radial-gradient(
      ellipse 48% 42% at 34% 24%,
      color-mix(in srgb, var(--dish-color) 55%, white) 0%,
      transparent 72%
    ),
    radial-gradient(ellipse at 50% 52%, var(--dish-color) 42%, var(--dish-deep) 100%);
}

/* --- heap: the rice, taller and grainier -------------------------------- */
.dish__serving--heap {
  block-size: calc(var(--serving) * 0.8);
  border-radius: 48% 52% 44% 56% / 68% 64% 36% 32%;
  background:
    repeating-linear-gradient(
      58deg,
      color-mix(in srgb, white 40%, transparent) 0 0.1cqw,
      transparent 0.1cqw 0.4cqw
    ),
    repeating-linear-gradient(
      -34deg,
      color-mix(in srgb, var(--dish-deep) 30%, transparent) 0 0.08cqw,
      transparent 0.08cqw 0.46cqw
    ),
    radial-gradient(
      ellipse 68% 56% at 38% 24%,
      color-mix(in srgb, white 72%, var(--dish-color)) 0%,
      transparent 72%
    ),
    radial-gradient(ellipse at 50% 58%, var(--dish-color) 40%, var(--dish-deep) 100%);
}

/* --- crisp: a thin wafer, seen almost edge-on ---------------------------- */
.dish__serving--crisp {
  block-size: calc(var(--serving) * 0.76);
  border-radius: 50%;
  background: radial-gradient(
    ellipse at 42% 34%,
    color-mix(in srgb, var(--dish-color) 55%, white) 0%,
    var(--dish-color) 48%,
    var(--dish-deep) 100%
  );
  box-shadow: 0 0.24cqw 0.55cqw color-mix(in srgb, var(--leaf-900) 44%, transparent),
    inset 0 0 0 0.12cqw color-mix(in srgb, var(--dish-deep) 65%, transparent);
}

.dish__serving--crisp::before {
  content: '';
  position: absolute;
  inset: 18% 14%;
  border-radius: 50%;
  border: 0.09cqw solid color-mix(in srgb, var(--dish-deep) 46%, transparent);
  opacity: 0.75;
}

/* --- nugget: a small dark cluster (pickle, sharkara varatti) ------------- */
.dish__serving--nugget {
  block-size: calc(var(--serving) * 0.74);
  border-radius: 46% 54% 52% 48% / 56% 46% 54% 44%;
  background:
    radial-gradient(
      ellipse 26% 30% at 32% 34%,
      color-mix(in srgb, var(--dish-color) 70%, white) 0 60%,
      transparent 100%
    ),
    radial-gradient(
      ellipse 24% 28% at 68% 42%,
      color-mix(in srgb, var(--dish-color) 92%, white) 0 60%,
      transparent 100%
    ),
    radial-gradient(
      ellipse 22% 26% at 48% 72%,
      color-mix(in srgb, var(--dish-color) 80%, white) 0 60%,
      transparent 100%
    ),
    radial-gradient(ellipse at 50% 50%, var(--dish-deep) 40%, var(--dish-deep) 100%);
  box-shadow: 0 0.24cqw 0.6cqw color-mix(in srgb, var(--leaf-900) 52%, transparent);
}

/* --- slice: a piece of ripe plantain ------------------------------------ */
.dish__serving--slice {
  inline-size: calc(var(--serving) * 1.2);
  block-size: calc(var(--serving) * 0.5);
  border-radius: var(--r-pill);
  background: linear-gradient(
    160deg,
    color-mix(in srgb, var(--dish-color) 50%, white),
    var(--dish-color) 45%,
    var(--dish-deep)
  );
  box-shadow: 0 0.26cqw 0.6cqw color-mix(in srgb, var(--leaf-900) 46%, transparent);
}

/* --- bowl: payasam, in a small brass-rimmed dish ------------------------- */
.dish__serving--bowl {
  border-radius: 50%;
  background: radial-gradient(
    ellipse at 46% 38%,
    color-mix(in srgb, var(--dish-color) 55%, white) 0%,
    var(--dish-color) 54%,
    var(--dish-deep) 100%
  );
  box-shadow: 0 0.3cqw 0.7cqw color-mix(in srgb, var(--leaf-900) 48%, transparent),
    inset 0 0 0 0.2cqw color-mix(in srgb, var(--brass) 85%, transparent);
}

/* --- grain: the pinch of salt ------------------------------------------- */
.dish__serving--grain {
  inline-size: calc(var(--serving) * 0.66);
  block-size: calc(var(--serving) * 0.42);
  border-radius: 60% 40% 50% 50% / 80% 76% 24% 20%;
  background: linear-gradient(
    to bottom,
    color-mix(in srgb, white 90%, var(--dish-color)),
    var(--dish-deep)
  );
  box-shadow: 0 0.14cqw 0.36cqw color-mix(in srgb, var(--leaf-900) 40%, transparent);
}

/* --------------------------------------------------------------------------
   The label that appears on hover / focus.
   Screen readers get the full name from the button's accessible name instead,
   so this is purely a sighted-user affordance.
   -------------------------------------------------------------------------- */

.dish__label {
  position: absolute;
  inset-block-end: calc(100% + 0.5rem);
  inset-inline-start: 50%;
  translate: -50% 4px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.1em;
  padding: 0.4em 0.75em;
  border-radius: var(--r-sm);
  background: var(--leaf-900);
  color: var(--rice);
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  z-index: 5;
  transition: opacity var(--dur-fast) var(--ease-out),
    translate var(--dur-fast) var(--ease-out);
}

.dish__label-name {
  font-size: 0.8rem;
  font-weight: 500;
  letter-spacing: 0.02em;
}

.dish__label-mal {
  font-family: var(--font-mal);
  font-size: 0.75rem;
  color: var(--gold-soft);
}

.dish__btn:hover .dish__label,
.dish__btn:focus-visible .dish__label,
.dish.is-active .dish__label {
  opacity: 1;
  translate: -50% 0;
}

/* In portrait the whole stage is rotated, so the tooltip would fly off the
   side of the screen. Anchor it below the serving instead. */
@media (max-width: 47.99rem) {
  .dish__label {
    inset-block-end: auto;
    inset-block-start: calc(100% + 0.4rem);
    translate: -50% -4px;
  }

  .dish__btn:hover .dish__label,
  .dish__btn:focus-visible .dish__label,
  .dish.is-active .dish__label {
    translate: -50% 0;
  }
}

/* --------------------------------------------------------------------------
   Builder states — an empty leaf that fills up.
   -------------------------------------------------------------------------- */

.leaf-stage--build .dish[data-placed='false'] .dish__btn {
  --dish-scale: 0.2;
  opacity: 0;
  pointer-events: none;
}

.leaf-stage--build .dish[data-placed='false'] .dish__label {
  display: none;
}

.leaf-stage--build .dish[data-placed='true'] .dish__btn {
  animation: serving-land var(--dur-slow) var(--ease-spring) both;
}

/* An empty leaf is quieter; it warms up as it fills. */
.leaf-stage--build .leaf-stage__blade {
  filter: drop-shadow(0 clamp(6px, 1.4cqw, 22px) clamp(14px, 3cqw, 46px)
      color-mix(in srgb, var(--leaf-900) 30%, transparent))
    saturate(calc(0.55 + 0.45 * var(--fill, 0)));
}

@keyframes serving-land {
  0% {
    transform: translate(-50%, -50%) rotate(var(--marker-rot)) translateY(-14px)
      scale(0.4);
    opacity: 0;
  }
  60% {
    opacity: 1;
  }
  100% {
    transform: translate(-50%, -50%) rotate(var(--marker-rot)) translateY(0)
      scale(1);
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .leaf-stage--build .dish[data-placed='true'] .dish__btn {
    animation: none;
  }
}

/* --------------------------------------------------------------------------
   Caption under the leaf — reflects whatever is hovered, focused or open.
   -------------------------------------------------------------------------- */

.leaf-caption {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: center;
  gap: var(--sp-2) var(--sp-4);
  min-block-size: 3.25rem;
  padding-block-start: var(--sp-4);
  text-align: center;
}

.leaf-caption__name {
  font-family: var(--font-display);
  font-size: var(--fs-h4);
  color: var(--text);
}

.leaf-caption__mal {
  font-family: var(--font-mal);
  color: var(--accent);
}

.leaf-caption__short {
  font-size: var(--fs-small);
  color: var(--text-mute);
  inline-size: 100%;
}

.leaf-caption__hint {
  font-size: var(--fs-small);
  color: var(--text-mute);
}

/* ---------- sections.css ---------- */
/* ==========================================================================
   SADHYA — section styles.
   GENERATED by tools/build.mjs from src/sections/*.css, in page order.
   Edit the partials, not this file.
   ========================================================================== */

/* === hero === */

.hero {
  position: relative;
  min-block-size: 100svh;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: var(--sp-7);
  padding-block: calc(var(--sp-10) + 3rem) var(--sp-6);
  background: var(--leaf-900);
  color: var(--ink-invert);
  overflow: clip;
  isolation: isolate;
}

/* Warm light spilling in from the upper right, as if from a doorway. */
.hero__ground {
  position: absolute;
  inset: 0;
  z-index: -4;
  background:
    radial-gradient(
      120% 90% at 78% 8%,
      color-mix(in srgb, var(--turmeric) 22%, transparent) 0%,
      transparent 58%
    ),
    radial-gradient(
      90% 70% at 12% 92%,
      color-mix(in srgb, var(--leaf-600) 55%, transparent) 0%,
      transparent 62%
    ),
    var(--leaf-900);
}

/* ---------------------------------------------------------------- the leaf */

.hero__leaf {
  position: absolute;
  z-index: -3;
  pointer-events: none;
  /* Mobile: sits high and faint, behind the type. */
  inset-block-start: 4%;
  inset-inline-start: 50%;
  inline-size: 190%;
  translate: -50% 0;
  opacity: 0.22;
  rotate: -8deg;
}

/* The individual servings are illegible at this scale and only add noise
   behind the headline, so on small screens the blade carries the hero alone. */
@media (max-width: 47.99rem) {
  .hero__leaf .leaf-stage__markers {
    display: none;
  }
}

.leaf-stage--hero .dish__serving {
  --serving: 5.6cqw;
}

@media (min-width: 48rem) {
  .hero__leaf {
    inset-block-start: 50%;
    inset-inline-start: auto;
    inset-inline-end: -18%;
    inline-size: 104%;
    translate: 0 -46%;
    opacity: 0.5;
    rotate: -13deg;
  }
}

@media (min-width: 75rem) {
  .hero__leaf {
    inset-inline-end: -10%;
    inline-size: 82%;
    opacity: 0.92;
    rotate: -11deg;
  }
}

/* Barely-there movement, like a leaf on a table under a fan. */
@media (min-width: 48rem) {
  .hero__leaf .leaf-stage {
    animation: leaf-drift 14s var(--ease-in-out) infinite;
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero__leaf .leaf-stage {
    animation: none;
  }
}

/* Keeps the headline readable where it crosses the leaf. Kept as its own
   unrotated layer, so the gradient's edge never shows as a diagonal seam. */
.hero__scrim {
  position: absolute;
  inset: 0;
  z-index: -2;
  pointer-events: none;
  background:
    linear-gradient(
      to bottom,
      color-mix(in srgb, var(--leaf-900) 82%, transparent) 0%,
      color-mix(in srgb, var(--leaf-900) 58%, transparent) 45%,
      color-mix(in srgb, var(--leaf-900) 88%, transparent) 100%
    );
}

@media (min-width: 48rem) {
  .hero__scrim {
    background: linear-gradient(
      100deg,
      var(--leaf-900) 4%,
      color-mix(in srgb, var(--leaf-900) 74%, transparent) 32%,
      color-mix(in srgb, var(--leaf-900) 24%, transparent) 58%,
      transparent 76%
    );
  }
}

@media (min-width: 75rem) {
  .hero__scrim {
    background: linear-gradient(
      100deg,
      var(--leaf-900) 1%,
      color-mix(in srgb, var(--leaf-900) 62%, transparent) 24%,
      color-mix(in srgb, var(--leaf-900) 12%, transparent) 46%,
      transparent 62%
    );
  }
}

/* ---------------------------------------------------------------- the type */

.hero__inner {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--sp-5);
  margin-block-start: auto;
}

.hero__meta {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  margin: 0;
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--gold-soft);
}

.hero__meta-dot {
  inline-size: 4px;
  block-size: 4px;
  border-radius: var(--r-pill);
  background: currentColor;
  opacity: 0.7;
}

.hero__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--fs-display);
  font-weight: 300;
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-display);
  text-wrap: balance;
  max-inline-size: 16ch;
  /* Fraunces' f-ligatures make "feast" read as "fcast" at display size. */
  font-variant-ligatures: no-common-ligatures;
}

/* Each line is a mask that the text rises through on load. */
.hero__line {
  display: block;
  overflow: hidden;
  padding-block-end: 0.06em;
}

.hero__line > span {
  display: block;
}

.js .hero__line > span {
  transform: translate3d(0, 105%, 0);
  transition: transform var(--dur-cinema) var(--ease-in-out);
}

.js .hero.is-ready .hero__line > span {
  transform: none;
}

.js .hero__line:nth-child(2) > span {
  transition-delay: 140ms;
}

.hero__title .hero__line:nth-child(2) > span {
  color: var(--gold-soft);
  font-style: italic;
}

.hero__mal {
  display: flex;
  align-items: baseline;
  gap: var(--sp-3);
  margin: 0;
}

.hero__mal .mal {
  font-size: clamp(1.6rem, 3vw, 2.25rem);
  color: var(--ink-invert);
  line-height: 1;
}

.hero__lede {
  margin: 0;
  max-inline-size: 42ch;
  font-size: var(--fs-lede);
  line-height: 1.6;
  color: var(--ink-invert-soft);
  font-weight: 350;
}

.hero__actions {
  margin-block-start: var(--sp-2);
}

.hero .btn--ghost {
  --btn-border: color-mix(in srgb, var(--rice) 32%, transparent);
  --btn-fg: var(--rice);
}

.hero .btn--ghost:hover {
  --btn-border: var(--gold-soft);
  --btn-bg: color-mix(in srgb, var(--rice) 8%, transparent);
}

/* Everything above the fold fades up once, on load. */
.js .hero__meta,
.js .hero__mal,
.js .hero__lede,
.js .hero__actions,
.js .hero__foot {
  opacity: 0;
  transform: translate3d(0, 1rem, 0);
  transition: opacity var(--dur-slow) var(--ease-out),
    transform var(--dur-slow) var(--ease-out);
}

.js .hero.is-ready .hero__meta,
.js .hero.is-ready .hero__mal,
.js .hero.is-ready .hero__lede,
.js .hero.is-ready .hero__actions,
.js .hero.is-ready .hero__foot {
  opacity: 1;
  transform: none;
}

.js .hero.is-ready .hero__meta {
  transition-delay: 60ms;
}
.js .hero.is-ready .hero__mal {
  transition-delay: 520ms;
}
.js .hero.is-ready .hero__lede {
  transition-delay: 620ms;
}
.js .hero.is-ready .hero__actions {
  transition-delay: 720ms;
}
.js .hero.is-ready .hero__foot {
  transition-delay: 820ms;
}

/* ---------------------------------------------------------------- the foot */

.hero__foot {
  position: relative;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--sp-5);
  padding-block-start: var(--sp-6);
}

.hero__est {
  margin: 0;
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--ink-invert-mute);
}

.hero__cue {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--sp-3);
  text-decoration: none;
  color: var(--ink-invert-mute);
  transition: color var(--dur-base) var(--ease-out);
}

.hero__cue:hover {
  color: var(--rice);
}

.hero__cue-text {
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
}

.hero__cue-line {
  inline-size: 1px;
  block-size: clamp(2rem, 5vh, 3.5rem);
  background: linear-gradient(to bottom, var(--gold-soft), transparent);
  animation: scroll-cue 2.6s var(--ease-in-out) infinite;
}

@media (prefers-reduced-motion: reduce) {
  .hero__cue-line {
    animation: none;
  }
}

@media (max-width: 33rem) {
  .hero__foot {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--sp-4);
  }

  .hero__cue {
    flex-direction: row;
    align-items: center;
    gap: var(--sp-3);
  }

  .hero__cue-line {
    block-size: 1.5rem;
  }
}

/* On short landscape viewports the hero must not force a scroll to read. */
@media (max-height: 34rem) and (min-width: 48rem) {
  .hero {
    min-block-size: auto;
    padding-block: calc(var(--sp-9) + 3rem) var(--sp-6);
  }
}

/* === about === */
/* Chapter 01. An editorial split: one typographic statement on the left,
   the explanation and a short key/value block on the right. Mobile-first —
   the two halves are simply stacked until there is room for both. */

.about__split {
  align-items: start;
}

/* --------------------------------------------------------------------------
   Left — the statement, then the word itself.
   -------------------------------------------------------------------------- */

.about__lockup {
  max-inline-size: var(--measure-tight);
}

.about__statement {
  color: var(--text);
}

/* Two short lines, stacked and read as one gesture. The second is indented
   so the block sits on a slight diagonal rather than a hard left edge. */
.about__statement span {
  display: block;
}

.about__statement .t-soft {
  margin-inline-start: var(--sp-4);
}

.about__word {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--sp-3);
  margin-block-start: var(--sp-8);
  padding-block-start: var(--sp-6);
  border-block-start: 1px solid var(--rule);
}

.about__mal {
  font-size: var(--fs-h1);
  color: var(--accent);
}

.about__say {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--sp-2) var(--sp-4);
}

.about__gloss {
  font-size: var(--fs-micro);
  color: var(--text-mute);
}

/* Ambient: a warm brass haze behind the Malayalam word, the width of a
   lamp rather than a highlight. Transform + opacity only. */
.about__word::before {
  content: '';
  position: absolute;
  z-index: calc(var(--z-base) - 1);
  inset-block-start: var(--sp-4);
  inset-inline-start: 0;
  inline-size: var(--sp-12);
  block-size: var(--sp-11);
  border-radius: var(--r-pill);
  background: radial-gradient(
    circle at 50% 50%,
    color-mix(in srgb, var(--gold) 24%, transparent),
    transparent 68%
  );
  pointer-events: none;
  animation: about-haze calc(var(--dur-cinema) * 11) var(--ease-in-out) infinite;
}

@keyframes about-haze {
  0%,
  100% {
    opacity: 0.5;
    transform: scale(1);
  }
  50% {
    opacity: 0.85;
    transform: scale(1.05);
  }
}

@media (prefers-reduced-motion: reduce) {
  .about__word::before {
    animation: none;
  }
}

/* --------------------------------------------------------------------------
   Right — the story and the facts.
   -------------------------------------------------------------------------- */

.about__story {
  display: flex;
  flex-direction: column;
  gap: var(--sp-8);
}

.about__facts-block {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
}

.about__facts-title {
  font-family: var(--font-body);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--text-mute);
}

.about__facts {
  display: grid;
  border-block-start: 1px solid var(--rule);
  max-inline-size: var(--measure);
}

/* Narrow screens: label above, answer below. Nothing has to share a line. */
.about__fact {
  display: grid;
  gap: var(--sp-1);
  padding-block: var(--sp-4);
  border-block-end: 1px solid var(--rule);
}

.about__fact dt {
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-caps);
  text-transform: uppercase;
  color: var(--text-mute);
}

.about__fact dd {
  font-family: var(--font-display);
  font-size: var(--fs-h4);
  line-height: var(--lh-heading);
  letter-spacing: var(--ls-heading);
  color: var(--text);
  overflow-wrap: break-word;
}

/* Once there is room, the pair reads across the line like a spec sheet. */
@media (min-width: 30rem) {
  .about__fact {
    grid-template-columns: minmax(0, auto) minmax(0, 1fr);
    align-items: baseline;
    gap: var(--sp-5);
  }

  .about__fact dd {
    justify-self: end;
    text-align: end;
  }
}

@media (min-width: 48rem) {
  /* Let the haze sit off the text block, into the gutter. */
  .about__word::before {
    inset-inline-start: calc(var(--sp-5) * -1);
  }
}

/* Two columns. The statement holds while the story scrolls past it — but
   only when the viewport is tall enough to show the whole lockup. */
@media (min-width: 62rem) and (min-height: 52rem) {
  .about__lockup {
    position: sticky;
    inset-block-start: var(--sp-7);
  }
}

/* === leaf === */
/* Chapter 02. The dark beat of the page: two columns of text, then one very
   large annotated leaf. Mobile-first — the annotations start life as a plain
   legend under the diagram and only climb onto the blade when there is room
   for them to sit apart. No information is ever carried by hover. */

.leaf__intro {
  display: grid;
  gap: var(--sp-5);
  margin-block-end: var(--sp-9);
}

.leaf__intro .prose {
  max-inline-size: var(--measure-tight);
}

/* --------------------------------------------------------------------------
   The diagram
   -------------------------------------------------------------------------- */

.leaf__figure {
  /* Shared geometry for the markers and the annotation column width.
     The annotation column is a fraction of the reading measure, so labels
     hold one line and their descriptions fold to two at most. */
  --dot-size: calc(var(--marker-size-sm) * 0.8);
  --note-measure: calc(var(--measure-tight) / 1.9);

  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--sp-6);
}

.leaf__stage {
  position: relative;
}

/* The blade sits on a faintly sunken panel, so it reads as something set
   down on a table rather than an image floating in the dark. */
.leaf__frame {
  position: relative;
  inline-size: 100%;
  aspect-ratio: var(--leaf-ratio);
  border-radius: var(--r-lg);
  background: color-mix(in srgb, var(--leaf-900) 55%, transparent);
}

.leaf__blade {
  inline-size: 100%;
  block-size: 100%;
  object-fit: contain;
  background: transparent;
  opacity: 0.92;
}

/* Numbered markers that stay on the blade when the labels move off it. */
.leaf__pins {
  position: absolute;
  inset: 0;
  margin: 0;
}

.leaf__pin {
  position: absolute;
  inset-inline-start: var(--x);
  inset-block-start: var(--y);
  translate: -50% -50%;
}

.leaf__dot {
  display: grid;
  place-items: center;
  flex: none;
  inline-size: var(--dot-size);
  block-size: var(--dot-size);
  border-radius: var(--r-pill);
  background: var(--accent);
  color: var(--accent-contrast);
  font-family: var(--font-body);
  font-size: var(--fs-micro);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--leaf-900) 60%, transparent);
}

/* --------------------------------------------------------------------------
   Annotations — a legend first, an overlay later.
   -------------------------------------------------------------------------- */

.leaf__notes {
  display: grid;
  gap: var(--sp-5);
  margin-block-start: var(--sp-6);
}

.leaf__note {
  display: flex;
  align-items: flex-start;
  gap: var(--sp-4);
  padding-block-start: var(--sp-4);
  border-block-start: 1px solid var(--rule);
}

.leaf__note-body {
  display: flex;
  flex-direction: column;
  gap: var(--sp-1);
  min-inline-size: 0;
}

.leaf__note-label {
  font-family: var(--font-display);
  font-size: var(--fs-h4);
  font-weight: 400;
  line-height: var(--lh-heading);
  letter-spacing: var(--ls-heading);
  color: var(--text);
}

.leaf__note-text {
  font-size: var(--fs-micro);
  line-height: var(--lh-body);
  color: var(--text-soft);
}

.leaf__caption {
  font-size: var(--fs-micro);
  line-height: var(--lh-body);
  color: var(--text-mute);
  max-inline-size: var(--measure-tight);
  padding-block-start: var(--sp-4);
  border-block-start: 1px solid var(--rule);
}

@media (min-width: 34rem) {
  .leaf__notes {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--sp-5) var(--sp-6);
  }
}

@media (min-width: 48rem) {
  .leaf__intro {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--sp-8);
  }
}

/* --------------------------------------------------------------------------
   Wide: the labels move onto the blade. The image is dimmed a little so
   cream text clears it comfortably, and the loose markers are dropped
   because every annotation now carries its own.
   -------------------------------------------------------------------------- */

@media (min-width: 60rem) {
  .leaf__figure {
    --dot-size: var(--marker-size-sm);
    gap: var(--sp-7);
  }

  .leaf__blade {
    opacity: 0.74;
  }

  .leaf__pins {
    display: none;
  }

  .leaf__notes {
    position: absolute;
    inset: 0;
    display: block;
    margin: 0;
  }

  .leaf__note {
    position: absolute;
    inset-inline-start: var(--x);
    inset-block-start: var(--y);
    align-items: center;
    padding-block-start: 0;
    border-block-start: 0;
    inline-size: max-content;
    max-inline-size: var(--note-measure);
  }

  .leaf__note-body {
    padding-inline-start: var(--sp-4);
    border-inline-start: 1px solid var(--rule-strong);
  }

  .leaf__note--start {
    translate: calc(var(--dot-size) / -2) -50%;
  }

  .leaf__note--end {
    flex-direction: row-reverse;
    translate: calc(var(--dot-size) / 2 - 100%) -50%;
  }

  .leaf__note--end .leaf__note-body {
    align-items: flex-end;
    text-align: end;
    padding-inline-start: 0;
    padding-inline-end: var(--sp-4);
    border-inline-start: 0;
    border-inline-end: 1px solid var(--rule-strong);
  }

  /* Over the blade both lines take the full text colour; the hierarchy is
     carried by size and weight, not by fading one of them out. */
  .leaf__note-text {
    color: var(--text);
  }

  .leaf__note-label,
  .leaf__note-text {
    text-shadow: 0 0 var(--sp-2) color-mix(in srgb, var(--leaf-900) 80%, transparent),
      0 0 var(--sp-4) color-mix(in srgb, var(--leaf-900) 55%, transparent);
  }
}

/* === feast === */

.feast {
  /* A warm pool of light under the leaf, so it reads as sitting on a table. */
  background:
    radial-gradient(
      70% 46% at 50% 58%,
      color-mix(in srgb, var(--turmeric) 10%, transparent) 0%,
      transparent 70%
    ),
    var(--surface);
}

.feast__stage {
  position: relative;
  margin-inline: auto;
  inline-size: 100%;
  max-inline-size: 92rem;
}

/* The leaf casts a soft contact shadow onto the table. */
.feast__stage::before {
  content: '';
  position: absolute;
  inset-block-end: 6%;
  inset-inline: 12%;
  block-size: 8%;
  border-radius: 50%;
  background: color-mix(in srgb, var(--leaf-900) 16%, transparent);
  filter: blur(28px);
  z-index: -1;
}

.feast__controls {
  margin-block-start: var(--sp-6);
  gap: var(--sp-4);
}

.feast__hint {
  margin: 0;
  font-size: var(--fs-micro);
  color: var(--text-mute);
  display: none;
}

/* Keyboard hints are noise on a touch device. */
@media (hover: hover) and (pointer: fine) {
  .feast__hint {
    display: block;
  }
}

.feast__hint kbd {
  font-family: var(--font-body);
  font-size: 0.9em;
  padding: 0.15em 0.45em;
  border-radius: var(--r-xs);
  border: 1px solid var(--rule-strong);
  background: var(--surface-sunken);
  color: var(--text-soft);
}

/* While the tour is running the leaf gets a touch more presence. */
.feast.is-touring .leaf-stage__blade {
  filter: drop-shadow(0 clamp(6px, 1.4cqw, 22px) clamp(14px, 3cqw, 46px)
      color-mix(in srgb, var(--leaf-900) 38%, transparent))
    saturate(1.06);
}

@media (max-width: 47.99rem) {
  /* Portrait leaf: give it breathing room and cap how tall it can get. */
  .feast__stage {
    max-inline-size: 22rem;
  }

  .feast__controls {
    justify-content: center;
  }
}

@media (min-width: 48rem) and (max-width: 74.99rem) {
  .feast__stage {
    max-inline-size: 60rem;
  }
}

/* === dishes === */

.dishes__bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
  margin-block-end: var(--sp-7);
  padding-block-end: var(--sp-5);
  border-block-end: 1px solid var(--rule);
}

.dishes__count {
  margin: 0;
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-caps);
  text-transform: uppercase;
  color: var(--text-mute);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.dishes__grid {
  margin: 0;
  padding: 0;
  list-style: none;
}

/* Filtering animates the cards out and back without collapsing the grid to
   zero height mid-transition, so the page below never jumps. */
.dish-card {
  transition: opacity var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out);
}

.dish-card[hidden] {
  display: none;
}

.dish-card.is-leaving {
  opacity: 0;
  transform: scale(0.97);
}

.dish-card.is-entering {
  opacity: 0;
  transform: translate3d(0, 10px, 0);
}

.dish-card__top {
  display: flex;
  align-items: flex-start;
  gap: var(--sp-4);
}

.dish-card__swatch {
  margin-block-start: 0.15rem;
}

.dish-card__names {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  min-inline-size: 0;
}

.dish-card__name {
  font-family: var(--font-display);
  font-size: var(--fs-h4);
  font-weight: 400;
  line-height: 1.15;
  letter-spacing: var(--ls-heading);
  margin: 0;
}

.dish-card__mal {
  font-family: var(--font-mal);
  font-size: 1rem;
  color: var(--accent);
  line-height: 1.4;
}

.dish-card__short {
  margin: 0;
  font-size: var(--fs-small);
  color: var(--text-soft);
  line-height: 1.55;
}

.dish-card__foot {
  margin-block-start: auto;
  padding-block-start: var(--sp-4);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  border-block-start: 1px solid var(--rule);
}

.dish-card__open {
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  min-block-size: 2.75rem;
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-caps);
  text-transform: uppercase;
  color: var(--accent);
  transition: gap var(--dur-fast) var(--ease-out);
}

.dish-card__open:hover {
  gap: 0.85em;
}

.dish-card__open svg {
  inline-size: 0.85em;
  block-size: 0.85em;
}

/* The no-JS disclosure. Native, keyboard-accessible, no script required. */
.dish-card__details {
  font-size: var(--fs-small);
  color: var(--text-soft);
}

.dish-card__details > summary {
  cursor: pointer;
  min-block-size: 2.75rem;
  display: flex;
  align-items: center;
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-caps);
  text-transform: uppercase;
  color: var(--accent);
}

.dish-card__details[open] > summary {
  margin-block-end: var(--sp-3);
}

.dish-card__details dl {
  margin: var(--sp-3) 0 0;
  display: grid;
  gap: var(--sp-2);
}

.dish-card__details dt {
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-caps);
  text-transform: uppercase;
  color: var(--text-mute);
}

.dish-card__details dd {
  margin: 0;
}

.dishes__empty {
  margin-block-start: var(--sp-7);
  text-align: center;
  color: var(--text-mute);
}

.dishes__empty[hidden] {
  display: none;
}

/* === build === */

.build__layout {
  display: grid;
  gap: clamp(2rem, 4vw, 3.5rem);
  align-items: center;
}

@media (min-width: 64rem) {
  .build__layout {
    grid-template-columns: minmax(0, 1fr) minmax(15rem, 20rem);
  }
}

.build__stage {
  position: relative;
  inline-size: 100%;
  margin-inline: auto;
  max-inline-size: 22rem;
}

@media (min-width: 48rem) {
  .build__stage {
    max-inline-size: none;
  }
}

/* --------------------------------------------------------------- readout */

.build__panel {
  display: flex;
  flex-direction: column;
  gap: var(--sp-6);
}

.build__readout {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
  padding: var(--sp-6);
  border-radius: var(--r-lg);
  background: var(--surface-sunken);
  border: 1px solid var(--rule);
}

.build__readout .eyebrow {
  color: var(--text-mute);
}

.build__readout .eyebrow__num {
  letter-spacing: var(--ls-eyebrow);
}

/* The message block holds its height so the panel never jumps as it changes. */
.build__message {
  margin: 0;
  min-block-size: 3.25rem;
  font-size: var(--fs-small);
  line-height: 1.5;
  color: var(--text-soft);
  transition: opacity var(--dur-base) var(--ease-out);
}

.build__message.is-swapping {
  opacity: 0;
}

/* The completion line, set in Malayalam and then English. */
.build__message .mal {
  display: block;
  font-family: var(--font-mal-display);
  font-size: 1.25rem;
  color: var(--accent);
  margin-block-end: 0.15em;
}

.build__actions {
  gap: var(--sp-3);
}

/* --------------------------------------------------------------- palette */

.build__palette-wrap {
  margin-block-start: clamp(2.5rem, 5vw, 4rem);
  padding-block-start: var(--sp-6);
  border-block-start: 1px solid var(--rule);
}

.build__palette-title {
  font-size: var(--fs-micro);
  font-family: var(--font-body);
  font-weight: 500;
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--text-mute);
  margin-block-end: var(--sp-5);
}

.build__palette {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.build__chip {
  gap: 0.6em;
}

/* The swatch inside a palette chip tints itself to the dish. */
.build__chip .swatch--sm {
  --swatch: var(--dish-color);
  --swatch-deep: var(--dish-deep);
}

/* Selected chips read as "already on the leaf" — the tick is the signal,
   not the fill colour. */
.build__chip[aria-pressed='true'] .build__chip-tick {
  opacity: 1;
  transform: none;
}

.build__chip-tick {
  inline-size: 0.9em;
  block-size: 0.9em;
  flex: none;
  opacity: 0;
  transform: scale(0.6);
  transition: opacity var(--dur-fast) var(--ease-out),
    transform var(--dur-fast) var(--ease-spring);
}

/* --------------------------------------------------------- ready state */

.build.is-complete .build__readout {
  border-color: color-mix(in srgb, var(--gold) 55%, transparent);
  background: color-mix(in srgb, var(--gold) 7%, var(--surface-sunken));
}

.build.is-complete .counter__value {
  color: var(--gold-deep);
}

/* === order === */

/* The timeline is one grid per step. Both the connector and the marker are
   pseudo-elements placed into that grid, so the markup carries content only
   and the two layouts share the same geometry. */

.order__steps {
  /* Geometry, kept in one place because the vertical and the horizontal
     arrangement have to agree on where a marker sits. */
  --order-rail: var(--sp-6); /* marker column, stacked layout */
  --order-dot: var(--sp-3); /* marker diameter */
  --order-marker-row: var(--sp-5); /* row the marker is centred in */
  --order-step-gap: var(--sp-7); /* between steps, stacked layout */
  --order-col-gap: var(--sp-5); /* between columns, wide layout */

  position: relative;
  z-index: var(--z-base);
  display: grid;
  row-gap: var(--order-step-gap);
}

.order__step {
  display: grid;
  grid-template-columns: var(--order-rail) minmax(0, 1fr);
  grid-template-rows: var(--order-marker-row) auto auto auto;
  column-gap: var(--sp-4);
  row-gap: var(--sp-2);
}

/* Connector. One segment per step, stretched from this marker to the next,
   so the line stops dead at the last marker and never runs past it. */
.order__step::before {
  content: '';
  grid-area: 1 / 1 / -1 / 2;
  justify-self: center;
  align-self: stretch;
  inline-size: 1px;
  margin-block: calc(var(--order-marker-row) / 2)
    calc((var(--order-step-gap) + var(--order-marker-row) / 2) * -1);
  background: var(--rule-strong);
  position: relative;
  z-index: var(--z-base);
}

.order__step:last-child::before {
  content: none;
}

/* Marker. Sits above the connector and carries a ring of the surface colour,
   so the hairline is broken cleanly at every step. */
.order__step::after {
  content: '';
  grid-area: 1 / 1;
  place-self: center;
  inline-size: var(--order-dot);
  block-size: var(--order-dot);
  border-radius: var(--r-pill);
  background: var(--accent);
  box-shadow: 0 0 0 var(--sp-1) var(--surface);
  position: relative;
  z-index: var(--z-raised);
}

/* The sequence closes on brass rather than green. */
.order__step:last-child::after {
  background: var(--gold);
  box-shadow: 0 0 0 var(--sp-1) var(--surface),
    0 0 0 calc(var(--sp-1) * 2) color-mix(in srgb, var(--gold) 24%, transparent);
}

.order__num {
  grid-area: 1 / 2;
  align-self: center;
  font-family: var(--font-display);
  font-size: var(--fs-h4);
  font-weight: 300;
  line-height: 1;
  letter-spacing: var(--ls-heading);
  font-variant-numeric: tabular-nums;
  color: var(--text-mute);
}

.order__mal {
  grid-area: 2 / 2;
  font-size: var(--fs-h4);
  color: var(--accent);
}

.order__title {
  grid-area: 3 / 2;
  font-size: var(--fs-h3);
  font-weight: 400;
}

.order__blurb {
  grid-area: 4 / 2;
  margin-block-start: var(--sp-1);
  max-inline-size: var(--measure-tight);
  font-size: var(--fs-small);
  line-height: var(--lh-body);
  color: var(--text-soft);
}

.order__coda {
  margin-block-start: var(--sp-8);
  padding-block-start: var(--sp-5);
  border-block-start: 1px solid var(--rule);
  max-inline-size: var(--measure-tight);
  font-size: var(--fs-small);
  color: var(--text-mute);
}

/* --------------------------------------------------------------------------
   Wide: five columns, with the hairline threaded left to right through the
   markers. Each marker hangs half its width into the left margin of its
   column, so the connector begins exactly on the text edge.
   -------------------------------------------------------------------------- */

@media (min-width: 60rem) {
  .order__steps {
    --order-col-gap: var(--sp-4);

    grid-template-columns: repeat(5, minmax(0, 1fr));
    column-gap: var(--order-col-gap);
    row-gap: 0;
    align-items: start;
  }

  .order__step {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto var(--order-marker-row) auto auto auto;
    column-gap: 0;
  }

  .order__step::before {
    grid-area: 2 / 1;
    justify-self: stretch;
    align-self: center;
    inline-size: auto;
    block-size: 1px;
    margin-block: 0;
    margin-inline: 0 calc(var(--order-col-gap) * -1);
  }

  .order__step::after {
    grid-area: 2 / 1;
    place-self: center start;
    margin-inline-start: calc(var(--order-dot) / -2);
  }

  .order__num {
    grid-area: 1 / 1;
    align-self: end;
  }

  .order__mal {
    grid-area: 3 / 1;
    margin-block-start: var(--sp-2);
  }

  .order__title {
    grid-area: 4 / 1;
    font-size: var(--fs-h4);
  }

  .order__blurb {
    grid-area: 5 / 1;
    max-inline-size: none;
  }

  .order__coda {
    margin-block-start: var(--sp-9);
  }
}

@media (min-width: 75rem) {
  .order__steps {
    --order-col-gap: var(--sp-6);
  }
}

/* === flavours === */

/* Two columns of standing text between the deck and the panel. */
.flavours__intro {
  display: grid;
  gap: var(--sp-5);
  padding-block-start: var(--sp-5);
  border-block-start: 1px solid var(--rule);
  color: var(--text-soft);
}

.flavours__intro p {
  max-inline-size: var(--measure);
}

/* --------------------------------------------------------------------------
   The panel — a sunken plate on the deep green, closed by a single gold
   thread along its top edge.
   -------------------------------------------------------------------------- */

.flavours__panel {
  --flavours-pad: var(--sp-5);

  position: relative;
  margin-block-start: var(--sp-8);
  padding: var(--flavours-pad);
  border: 1px solid var(--rule);
  border-radius: var(--r-lg);
  background: var(--surface-sunken);
}

.flavours__panel::before {
  content: '';
  position: absolute;
  inset-block-start: 0;
  inset-inline: var(--flavours-pad);
  block-size: 1px;
  background: linear-gradient(
    to right,
    transparent,
    color-mix(in srgb, var(--gold) 60%, transparent) 20%,
    color-mix(in srgb, var(--gold) 60%, transparent) 80%,
    transparent
  );
}

/* Keys. On a phone they run off the edge of the plate rather than stacking
   four rows deep, and scroll inside their own box. */
.flavours__keys {
  display: flex;
  flex-wrap: nowrap;
  gap: var(--sp-3);
  overflow-x: auto;
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
  scrollbar-color: var(--rule-strong) transparent;
  margin-inline: calc(var(--flavours-pad) * -1);
  padding-inline: var(--flavours-pad);
  padding-block-end: var(--sp-4);
  border-block-end: 1px solid var(--rule);
  -webkit-overflow-scrolling: touch;
}

.flavours__keys > .chip {
  scroll-snap-align: start;
}

.flavours__readout {
  margin-block-start: var(--sp-5);
  min-block-size: calc(var(--fs-small) * var(--lh-body));
  font-size: var(--fs-small);
  color: var(--text-soft);
}

.flavours__cloud {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
  margin-block-start: var(--sp-5);
}

/* --------------------------------------------------------------------------
   Dish chips. Resting, matched, dimmed — toggled by class from JS.
   Only opacity and transform are animated; the matched state is carried by a
   border, a heavier weight and a filled dot as well as by colour.
   -------------------------------------------------------------------------- */

.flavours__chip {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  padding: 0.55em 1em;
  min-block-size: var(--sp-7);
  border-radius: var(--r-pill);
  border: 1px solid var(--rule);
  background: transparent;
  color: var(--text-soft);
  font-size: var(--fs-small);
  font-weight: 400;
  line-height: 1;
  transition: opacity var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-spring);
}

/* The dot holds its space at rest, so matching a taste never reflows the
   cloud sideways. */
.flavours__chip::before {
  content: '';
  inline-size: var(--sp-2);
  block-size: var(--sp-2);
  flex: none;
  border-radius: var(--r-pill);
  background: var(--accent);
  opacity: 0;
  transform: scale(0.3);
  transition: opacity var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-spring);
}

/* Where the chip already ships a serving swatch, that becomes the dot instead:
   a faint colour hint at rest, filling out when the taste matches. */
.flavours__chip:has(.swatch)::before {
  content: none;
}

.flavours__chip .swatch {
  opacity: 0.55;
  transform: scale(0.55);
  transition: opacity var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-spring);
}

.flavours__chip.is-match .swatch {
  opacity: 1;
  transform: scale(1);
}

.flavours__chip.is-match {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 14%, transparent);
  color: var(--text);
  font-weight: 600;
  transform: translateY(calc(var(--sp-1) * -0.5));
}

.flavours__chip.is-match::before {
  opacity: 1;
  transform: scale(1);
}

/* Dimmed, not hidden: the text steps up to full strength so that lowering the
   opacity still leaves it comfortably readable. */
.flavours__chip.is-dim {
  opacity: 0.6;
  color: var(--text);
  border-color: color-mix(in srgb, var(--rule) 50%, transparent);
}

/* --------------------------------------------------------------------------
   Wider
   -------------------------------------------------------------------------- */

@media (min-width: 48rem) {
  .flavours__intro {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--sp-8);
    padding-block-start: var(--sp-6);
  }

  .flavours__panel {
    --flavours-pad: var(--sp-7);

    margin-block-start: var(--sp-9);
    border-radius: var(--r-xl);
  }

  .flavours__keys {
    flex-wrap: wrap;
    overflow-x: visible;
    margin-inline: 0;
    padding-inline: 0;
  }
}

/* The keys become a standing legend beside the map. */
@media (min-width: 62rem) {
  .flavours__panel {
    --flavours-pad: var(--sp-8);

    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(0, 7fr);
    /* The readout takes exactly its own height; the cloud takes what is left,
       so the legend spanning both rows cannot push a gap between them. */
    grid-template-rows: auto 1fr;
    column-gap: var(--sp-6);
    align-items: start;
  }

  .flavours__keys {
    grid-column: 1;
    grid-row: 1 / -1;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--sp-2);
    padding-inline-end: var(--sp-6);
    padding-block-end: 0;
    border-block-end: 0;
    border-inline-end: 1px solid var(--rule);
  }

  .flavours__readout {
    grid-column: 2;
    grid-row: 1;
    margin-block-start: 0;
  }

  .flavours__cloud {
    grid-column: 2;
    grid-row: 2;
    align-self: start;
    margin-block-start: var(--sp-6);
  }
}

/* === payasam === */

/* --------------------------------------------------------------------------
   Chapter 08. The darkest, slowest beat on the page: a deep ground, one very
   slow bloom of warmth behind the heading, and the three varieties set as a
   tasting menu — wide hairline rows with the index number out in the margin,
   never a grid of boxes.
   -------------------------------------------------------------------------- */

.payasam {
  /* Keeps the ambient bloom inside this section's own block. */
  overflow: clip;
}

/* The one ambient motion in this section. Transform and opacity only, and it
   sits behind the content on the section's own stacking context. */
.payasam::after {
  content: '';
  position: absolute;
  z-index: calc(var(--z-base) - 1);
  inset-block-start: calc(var(--sp-11) * -1);
  inset-inline-start: calc(var(--sp-9) * -1);
  inline-size: min(var(--wrap-narrow), 150%);
  aspect-ratio: 1;
  pointer-events: none;
  background: radial-gradient(
    closest-side,
    color-mix(in srgb, var(--turmeric) 18%, transparent),
    color-mix(in srgb, var(--clay) 12%, transparent) 45%,
    transparent 72%
  );
  animation: payasam-bloom calc(var(--dur-cinema) * 12) var(--ease-in-out)
    infinite alternate;
}

@keyframes payasam-bloom {
  from {
    transform: translate3d(-3%, -2%, 0) scale(0.94);
    opacity: 0.5;
  }
  to {
    transform: translate3d(4%, 3%, 0) scale(1.08);
    opacity: 0.95;
  }
}

@media (prefers-reduced-motion: reduce) {
  .payasam::after {
    animation: none;
  }
}

/* --------------------------------------------------------------------------
   Body column — narrower than the wrap, so the menu reads as a page rather
   than as a full-bleed layout.
   -------------------------------------------------------------------------- */

.payasam__body {
  max-inline-size: calc(var(--wrap-narrow) + var(--sp-11));
}

.payasam__intro {
  max-inline-size: var(--measure);
  margin-block-end: var(--sp-8);
  color: var(--text-soft);
}

/* --------------------------------------------------------------------------
   The varieties. JS fills the list; the numbering is a CSS counter so the
   markup never has to carry it.
   -------------------------------------------------------------------------- */

.payasam__cards {
  counter-reset: payasam-index;
  border-block-end: 1px solid var(--rule);
}

.payasam__card {
  --payasam-num: var(--fs-h2);

  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  column-gap: var(--sp-4);
  row-gap: var(--sp-2);
  padding-block: var(--sp-7);
  border-block-start: 1px solid var(--rule);
  counter-increment: payasam-index;
}

/* Narrow screens: every part of a row takes its own line. */
.payasam__card > * {
  flex-basis: 100%;
  min-inline-size: 0;
}

.payasam__card::before {
  content: counter(payasam-index, decimal-leading-zero);
  flex: none;
  font-family: var(--font-display);
  font-size: var(--payasam-num);
  font-weight: 300;
  font-variant-numeric: tabular-nums;
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-display);
  color: color-mix(in srgb, var(--accent) 70%, transparent);
}

.payasam__card .mal {
  font-size: var(--fs-lede);
  color: var(--accent);
  overflow-wrap: break-word;
}

.payasam__card .say {
  margin-block-start: var(--sp-1);
}

/* The description. `:not(.say)` so the romanisation keeps its own register
   whether JS emits it as a paragraph or as a span. */
.payasam__card p:not(.say) {
  max-inline-size: var(--measure);
  margin-block-start: var(--sp-3);
  color: var(--text-soft);
}

.payasam__card .flavour-line {
  margin-block-start: var(--sp-3);
  color: var(--text-mute);
}

@media (min-width: 48rem) {
  .payasam__card {
    padding-block: var(--sp-8);
    padding-inline-start: calc(var(--payasam-num) * 1.35 + var(--sp-6));
  }

  /* The index moves out into the margin and the name leads the row. */
  .payasam__card::before {
    position: absolute;
    inset-block-start: var(--sp-8);
    inset-inline-start: 0;
    inline-size: calc(var(--payasam-num) * 1.35);
  }

  .payasam__card h3,
  .payasam__card .mal {
    flex-basis: auto;
  }
}

.payasam__coda {
  max-inline-size: var(--measure-tight);
  margin-block-start: var(--sp-8);
  color: var(--text-mute);
  font-size: var(--fs-small);
}

/* === onam === */

/* --------------------------------------------------------------------------
   Chapter 09. One large statement carrying the whole section, then the story
   in two narrow columns set against it. The statement runs the full wrap so it
   settles into three or four lines; the story is half that width and drops to
   the opposite corner once there is room.
   -------------------------------------------------------------------------- */

.onam__lead {
  margin-block-start: var(--sp-6);
  color: var(--text);
}

.onam__story {
  max-inline-size: var(--wrap-narrow);
  margin-block-start: var(--sp-8);
}

/* A short length of the kasavu thread, not a full-width divider. */
.onam__thread {
  inline-size: var(--sp-10);
  margin-block-end: var(--sp-6);
}

.onam__cols {
  color: var(--text-soft);
}

.onam__cols p {
  margin-block-end: var(--sp-5);
  break-inside: avoid;
}

.onam__cols p:last-child {
  margin-block-end: 0;
}

@media (min-width: 48rem) {
  .onam__story {
    margin-block-start: var(--sp-10);
  }

  .onam__cols {
    columns: 2;
    column-gap: var(--sp-8);
    column-rule: 1px solid var(--rule);
  }
}

/* Once there is room, the story sits opposite the statement rather than
   under it. */
@media (min-width: 75rem) {
  .onam__story {
    margin-inline-start: auto;
  }
}

/* === pookalam ===
   A secondary chapter, deliberately compact: a drawn circle of guide rings
   that JS fills one ring of petals at a time, with the reading matter beside
   it. Nothing here should out-shout the leaf.
   ========================================================================== */

/* .split already handles the columns; this only opens up the stacked gap
   between the disc and the reading column on a phone. */
.pookalam__body {
  row-gap: var(--sp-8);
}

/* The stage owns one size and lends it to both the disc and its caption, so
   the two share an edge on every screen. */
.pookalam__stage {
  --pookalam-size: min(100%, calc(var(--wrap-narrow) / 2));

  display: grid;
  justify-items: start;
  gap: var(--sp-4);
}

.pookalam__stage figcaption {
  max-inline-size: var(--pookalam-size);
  font-size: var(--fs-small);
  line-height: var(--lh-body);
  color: var(--text-mute);
}

/* --------------------------------------------------------------------------
   The disc — swept ground with the chalked guide rings still showing.
   -------------------------------------------------------------------------- */

.pookalam__disc {
  --pookalam-guide: color-mix(in srgb, var(--text) 9%, transparent);
  --pookalam-rings: 6;

  position: relative;
  inline-size: var(--pookalam-size);
  aspect-ratio: 1;
  border-radius: var(--r-pill);
  /* Petals may bloom a little past the rim without ever widening the page. */
  overflow: clip;
  overflow-clip-margin: var(--sp-5);
  background-image:
    repeating-radial-gradient(
      circle closest-side at 50% 50%,
      transparent 0 calc(100% / var(--pookalam-rings) - 1px),
      var(--pookalam-guide) calc(100% / var(--pookalam-rings) - 1px)
        calc(100% / var(--pookalam-rings))
    ),
    radial-gradient(
      circle closest-side at 50% 50%,
      var(--surface-sunken) 0 58%,
      transparent 100%
    );
}

/* --------------------------------------------------------------------------
   Petals — appended by JS, each carrying --angle, --radius, --petal-size and
   --petal-color. The element itself is a full-disc layer so that --radius, a
   percentage, resolves against the disc rather than against the petal; the
   flower is drawn by the pseudo-element at that layer's centre.

     --angle   0deg points at the top of the disc, clockwise from there
     --radius  0% sits on the centre, 100% sits on the rim
   -------------------------------------------------------------------------- */

.pookalam__petal {
  --petal-hue: var(--petal-color, var(--gold-soft));

  position: absolute;
  inset: 0;
  pointer-events: none;
  /* Halved: the percentage resolves against the diameter, not the radius. */
  transform: rotate(var(--angle, 0deg)) translate(0, calc(var(--radius, 0%) * -0.5));
}

.pookalam__petal::before {
  content: '';
  position: absolute;
  inset-block-start: 50%;
  inset-inline-start: 50%;
  inline-size: var(--petal-size, var(--sp-4));
  block-size: calc(var(--petal-size, var(--sp-4)) * 1.15);
  /* Kept on the individual property so the bloom can scale independently. */
  translate: -50% -50%;
  border-radius: var(--r-organic);
  background: radial-gradient(
    circle at 34% 30%,
    color-mix(in srgb, var(--petal-hue) 74%, var(--rice)),
    var(--petal-hue) 62%,
    color-mix(in srgb, var(--petal-hue) 86%, var(--leaf-900))
  );
  box-shadow: inset 0 -1px 2px color-mix(in srgb, var(--leaf-900) 16%, transparent);
  animation: pookalam-bloom var(--dur-slow) var(--ease-spring) both;
  /* --motion-scale is 0 under reduced motion, which flattens the stagger. */
  animation-delay: calc(var(--petal-delay, 0ms) * var(--motion-scale));
}

@keyframes pookalam-bloom {
  from {
    scale: 0.15;
    opacity: 0;
  }
  60% {
    scale: 1.06;
    opacity: 1;
  }
  to {
    scale: 1;
    opacity: 1;
  }
}

/* --------------------------------------------------------------------------
   The reading column: prose, then the two controls, then the readout.
   -------------------------------------------------------------------------- */

.pookalam__aside {
  display: grid;
  justify-items: start;
  gap: var(--sp-6);
}

/* .btn--quiet stops at 2.5rem on its own, under the 44px minimum target.
   --sp-7 is exactly 44px. */
.pookalam__controls .btn--quiet {
  min-block-size: var(--sp-7);
  padding-inline: var(--sp-4);
}

/* Two lines are held open so the row of buttons never shifts under the
   pointer as the count changes. */
.pookalam__status {
  min-block-size: calc(var(--fs-small) * var(--lh-body) * 2);
  font-size: var(--fs-small);
  line-height: var(--lh-body);
  color: var(--text-mute);
  font-variant-numeric: tabular-nums;
}

/* A brass dot, so the readout is never carried by colour alone. Inline-block
   rather than a flex item, so a long status still wraps at 320px. */
.pookalam__status:not(:empty)::before {
  content: '';
  display: inline-block;
  inline-size: var(--sp-2);
  block-size: var(--sp-2);
  margin-inline-end: var(--sp-3);
  border-radius: var(--r-pill);
  background: var(--gold);
  box-shadow: 0 0 0 var(--sp-1) color-mix(in srgb, var(--gold) 18%, transparent);
}

@media (min-width: 62rem) {
  .pookalam__stage {
    gap: var(--sp-5);
  }

  .pookalam__aside {
    gap: var(--sp-7);
  }
}

/* === memory ===
   The closing question. A quiet field of words on the left, and the answer
   set large on the right, separated by a single hairline doing real work.
   ========================================================================== */

.memory__intro {
  margin-block-end: var(--sp-9);
}

.memory__panel {
  display: grid;
  align-items: start;
  gap: var(--sp-7);
}

.memory__words {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
  max-inline-size: var(--measure);
}

/* Memory words are phrases, not one-word filters: let them wrap inside the
   chip rather than push the page sideways on a narrow screen. */
.memory__words .chip {
  max-inline-size: 100%;
  white-space: normal;
  text-align: start;
  line-height: var(--lh-snug);
}

/* --------------------------------------------------------------------------
   The payoff. Set between h3 and h2, on a measure tight enough to break into
   two or three handsome lines, in a box whose height never changes.
   -------------------------------------------------------------------------- */

.memory__response {
  --memory-size: calc((var(--fs-h2) + var(--fs-h3)) / 2);
  --memory-lines: 3;

  font-family: var(--font-display);
  font-weight: 300;
  font-size: var(--memory-size);
  line-height: var(--lh-heading);
  letter-spacing: var(--ls-heading);
  color: var(--text);
  text-wrap: balance;
  /* Display type wants a shorter measure than body copy: ~29 characters. */
  max-inline-size: calc(var(--measure-tight) / 1.6);
  min-block-size: calc(var(--memory-size) * var(--lh-heading) * var(--memory-lines));
  padding-block-start: var(--sp-6);
  border-block-start: 1px solid var(--rule);
  transition: opacity var(--dur-slow) var(--ease-out),
    translate var(--dur-slow) var(--ease-out);
}

/* Before anything is chosen the space is held by a single brass thread rather
   than by a hole in the page. */
.memory__response:empty {
  opacity: 0.75;
  translate: 0 var(--sp-1);
}

.memory__response:empty::before {
  content: '';
  display: block;
  inline-size: var(--sp-6);
  block-size: 1px;
  margin-block-start: calc(var(--memory-size) * var(--lh-heading) / 2);
  background: color-mix(in srgb, var(--accent) 50%, transparent);
}

@media (min-width: 62rem) {
  .memory__panel {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
    gap: var(--sp-9);
  }

  .memory__response {
    /* The reserved three lines carry over, so the hairline and the block
       below it hold still whatever the answer turns out to be. */
    padding-block-start: 0;
    border-block-start: 0;
    padding-inline-start: var(--sp-7);
    border-inline-start: 1px solid var(--rule);
  }
}

/* === invitation === */
/* The last beat before the footer: one line of type, a low warm light coming
   up behind it, and as much air as the page can afford. The thread, the glow
   and the gaps are the whole design — there is nothing else to hide behind. */

.invitation {
  /* One rhythm scale for the section, widened once at a single breakpoint so
     the composition breathes as a whole rather than piece by piece.
     step = inside a group, leap = between groups, void = between movements. */
  --inv-step: var(--sp-4);
  --inv-leap: var(--sp-6);
  --inv-void: var(--sp-8);

  text-align: center;
}

/* The lights coming up on a cleared table. One step below the base layer sits
   it above the section's own background (the shell isolates) and below every
   word. */
.invitation::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: calc(var(--z-base) - 1);
  pointer-events: none;
  background: radial-gradient(
    ellipse 78% 46% at 50% 40%,
    color-mix(in srgb, var(--gold) 12%, transparent),
    transparent 72%
  );
}

.invitation__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* A single gold thread arriving out of the seam above and stopping at the
   eyebrow. It is the only thing that carries the eye down into the space. */
.invitation__inner::before {
  content: '';
  inline-size: 1px;
  block-size: var(--sp-8);
  margin-block-end: var(--inv-leap);
  background: linear-gradient(
    to bottom,
    transparent,
    color-mix(in srgb, var(--gold) 70%, transparent)
  );
}

/* The eyebrow ships with a rule on its left only; a centred one needs both. */
.invitation__eyebrow::after {
  content: '';
  flex: none;
  inline-size: clamp(var(--sp-5), 3vw, var(--sp-7));
  block-size: 1px;
  background: linear-gradient(
    to left,
    var(--accent),
    color-mix(in srgb, var(--accent) 10%, transparent)
  );
}

/* Tight to its eyebrow, so the two read as one object against the voids. */
.invitation__title {
  margin-block-start: var(--inv-step);
}

.invitation__line {
  /* .lede reads its width from --measure, so narrowing the token narrows the
     component without overriding a single one of its rules. */
  --measure: var(--measure-tight);

  margin-block-start: var(--inv-leap);
  margin-inline: auto;
}

/* Each sentence gets its own line and balances its own rag, so the break
   always falls at the full stop instead of somewhere inside a clause. */
.invitation__line span {
  display: block;
  text-wrap: balance;
}

/* The room after the meal. Set to the same narrow measure as the line above so
   the two blocks share one column down the middle of the section. */
.invitation__after {
  --measure: var(--measure-tight);

  margin-inline: auto;
}

.invitation__actions {
  margin-block-start: var(--inv-void);
  justify-content: center;
}

/* Buttons are nowrap by default. On a 320px screen the long label must fold
   inside its own pill rather than push the page wide. */
.invitation__actions .btn {
  white-space: normal;
}

.invitation__nojs {
  margin-block-start: var(--inv-step);
  font-size: var(--fs-micro);
  color: var(--text-mute);
}

.invitation__thanks {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp-2);
  margin-block-start: var(--inv-void);
}

.invitation__thanks-mal {
  font-size: var(--fs-h3);
  color: var(--accent);
}

.invitation__thanks-say {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: center;
  gap: var(--sp-2);
  color: var(--text-mute);
}

.invitation__gloss {
  font-family: var(--font-display);
  font-style: italic;
  font-size: var(--fs-micro);
}

.invitation__gloss::before {
  content: '·';
  margin-inline-end: var(--sp-2);
  color: var(--accent);
}

@media (min-width: 48rem) {
  .invitation {
    --inv-step: var(--sp-5);
    --inv-leap: var(--sp-7);
    --inv-void: var(--sp-10);
  }

  .invitation__inner::before {
    block-size: var(--sp-9);
  }
}

/* === footer === */
/* A quiet close. One kasavu thread across the top is the only ornament; the
   rest is type, space and honest small print. */

.footer__seam {
  margin-block-end: var(--sp-8);
}

.footer__brand {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
}

.footer__wordmark {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--sp-4);
  font-family: var(--font-display);
  font-size: var(--fs-h2);
  font-weight: 300;
  line-height: var(--lh-snug);
}

/* Set from lowercase source so screen readers say the word rather than
   spelling it out; the tracking does the wordmark's work. */
.footer__wordmark-en {
  text-transform: uppercase;
  letter-spacing: var(--ls-caps);
}

.footer__wordmark-mal {
  font-size: var(--fs-h3);
  color: var(--accent);
}

.footer__tagline {
  max-inline-size: var(--measure-tight);
  font-size: var(--fs-small);
  color: var(--text-soft);
}

/* Column heads: .caps carries the size and tracking, this only re-sets the
   family (h2 defaults to the display serif) and drops it back to a whisper. */
.footer__label {
  font-family: var(--font-body);
  color: var(--text-mute);
  margin-block-end: var(--sp-5);
}

.footer__note {
  /* .prose reads its width from --measure — narrow the token, not the rule. */
  --measure: var(--measure-tight);

  font-size: var(--fs-small);
}

/* Links carry the same brass tick the eyebrows use, and it lengthens on
   hover — colour is never the only thing that moves. */
.footer .footer__links {
  gap: var(--sp-1);
}

.footer__link {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-3);
  min-block-size: var(--sp-7);
  color: var(--text-soft);
  text-decoration: none;
  transition: color var(--dur-fast) var(--ease-out);
}

.footer__link::before {
  content: '';
  flex: none;
  inline-size: var(--sp-4);
  block-size: 1px;
  background: var(--rule-strong);
  transition: inline-size var(--dur-base) var(--ease-out),
    background-color var(--dur-base) var(--ease-out);
}

.footer__link:hover,
.footer__link:focus-visible {
  color: var(--text);
}

.footer__link:hover::before,
.footer__link:focus-visible::before {
  inline-size: var(--sp-5);
  background: var(--accent);
}

/* Keeps its underline: it is a lone link sitting in a line of plain text. */
.footer__top {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-3);
  min-block-size: var(--sp-7);
}

/* Sized in em, so it tracks whatever the bottom bar's type is set at. */
.footer__arrow {
  inline-size: 1em;
  block-size: 1em;
  flex: none;
  color: var(--accent);
  transition: transform var(--dur-base) var(--ease-spring);
}

.footer__top:hover .footer__arrow,
.footer__top:focus-visible .footer__arrow {
  transform: translateY(calc(var(--sp-1) * -1));
}

@media (min-width: 48rem) {
  .footer__seam {
    margin-block-end: var(--sp-9);
  }
}

/* ---------- animations.css ---------- */
/* ==========================================================================
   SADHYA — Motion.

   Two rules govern everything here:
   1. Content is visible by default. The reveal system only hides an element
      after JS has confirmed it is running AND that the observer is attached,
      so a broken script can never leave the page blank.
   2. Durations come from tokens, which collapse to 1ms under
      `prefers-reduced-motion`. Only genuinely decorative, infinite animations
      need their own reduced-motion guard.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Scroll reveals
   -------------------------------------------------------------------------- */

.js .reveal-ready [data-reveal] {
  opacity: 0;
  transform: translate3d(0, clamp(14px, 2vh, 28px), 0);
  transition: opacity var(--dur-slow) var(--ease-out),
    transform var(--dur-slow) var(--ease-out);
  transition-delay: var(--reveal-delay, 0ms);
  will-change: opacity, transform;
}

.js .reveal-ready [data-reveal].is-revealed {
  opacity: 1;
  transform: none;
  will-change: auto;
}

/* Staggered children — the container is observed, the children follow. */
.js .reveal-ready [data-reveal='stagger'] {
  opacity: 1;
  transform: none;
}

.js .reveal-ready [data-reveal='stagger'] > * {
  opacity: 0;
  transform: translate3d(0, clamp(12px, 1.6vh, 22px), 0);
  transition: opacity var(--dur-slow) var(--ease-out),
    transform var(--dur-slow) var(--ease-out);
  transition-delay: calc(var(--stagger-index, 0) * 90ms + var(--reveal-delay, 0ms));
}

.js .reveal-ready [data-reveal='stagger'].is-revealed > * {
  opacity: 1;
  transform: none;
}

/* A wipe that uncovers text from below, for headline lines. */
.js .reveal-ready [data-reveal='mask'] {
  opacity: 1;
  transform: none;
  clip-path: inset(0 0 100% 0);
  transition: clip-path var(--dur-cinema) var(--ease-in-out);
  transition-delay: var(--reveal-delay, 0ms);
}

.js .reveal-ready [data-reveal='mask'].is-revealed {
  clip-path: inset(0 0 -12% 0);
}

/* Under reduced motion the observer still runs (so any JS keyed to
   `is-revealed` still fires) but nothing moves. */
@media (prefers-reduced-motion: reduce) {
  .js .reveal-ready [data-reveal],
  .js .reveal-ready [data-reveal='stagger'] > * {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .js .reveal-ready [data-reveal='mask'] {
    clip-path: none;
    transition: none;
  }
}

/* --------------------------------------------------------------------------
   Parallax — driven by a scroll-linked custom property set in JS.
   The transform is capped so it can never push content out of view.
   -------------------------------------------------------------------------- */

[data-parallax] {
  --parallax-shift: 0;
  transform: translate3d(0, calc(var(--parallax-shift) * var(--parallax-depth, 1) * 1px), 0);
  will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
  [data-parallax] {
    transform: none;
  }
}

/* --------------------------------------------------------------------------
   Named keyframes shared across sections
   -------------------------------------------------------------------------- */

@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes rise-in {
  from {
    opacity: 0;
    transform: translate3d(0, 1.4rem, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

/* A leaf resting in still air — 2 degrees, nine seconds. */
@keyframes leaf-drift {
  0%,
  100% {
    transform: rotate(-0.5deg) translate3d(0, 0, 0);
  }
  50% {
    transform: rotate(0.6deg) translate3d(0, -0.8%, 0);
  }
}

/* Warmth moving behind a heading. */
@keyframes glow-drift {
  0%,
  100% {
    transform: translate3d(-6%, 0, 0) scale(1);
    opacity: 0.55;
  }
  50% {
    transform: translate3d(6%, -4%, 0) scale(1.12);
    opacity: 0.8;
  }
}

@keyframes pulse-soft {
  0%,
  100% {
    opacity: 0.4;
    transform: scale(1);
  }
  50% {
    opacity: 0.85;
    transform: scale(1.06);
  }
}

/* Scroll cue: a line that falls, pauses, and falls again. */
@keyframes scroll-cue {
  0% {
    transform: scaleY(0);
    transform-origin: top;
  }
  38% {
    transform: scaleY(1);
    transform-origin: top;
  }
  62% {
    transform: scaleY(1);
    transform-origin: bottom;
  }
  100% {
    transform: scaleY(0);
    transform-origin: bottom;
  }
}

/* --------------------------------------------------------------------------
   Petals — the builder's reward. Small, few, and short-lived.
   Each petal is positioned and tinted from custom properties set in JS.
   -------------------------------------------------------------------------- */

.petal-field {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 6;
}

.petal {
  position: absolute;
  inset-block-start: -6%;
  inset-inline-start: var(--petal-x, 50%);
  inline-size: var(--petal-size, 10px);
  block-size: calc(var(--petal-size, 10px) * 0.72);
  border-radius: 60% 40% 55% 45% / 70% 65% 35% 30%;
  background: var(--petal-color, var(--turmeric));
  opacity: 0;
  animation: petal-fall var(--petal-duration, 3600ms) var(--ease-soft) forwards;
  animation-delay: var(--petal-delay, 0ms);
}

@keyframes petal-fall {
  0% {
    opacity: 0;
    transform: translate3d(0, 0, 0) rotate(0deg);
  }
  12% {
    opacity: 0.9;
  }
  100% {
    opacity: 0;
    transform: translate3d(var(--petal-drift, 30px), var(--petal-distance, 320px), 0)
      rotate(var(--petal-spin, 220deg));
  }
}

@media (prefers-reduced-motion: reduce) {
  .petal-field {
    display: none;
  }
}

/* ---------- overlays.css ---------- */
/* ==========================================================================
   SADHYA — Things that float above the page:
   the loading curtain, the header, the contents dialog, the dish panel,
   and the desktop cursor.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Loading curtain
   Shown for as long as the fonts and the leaf take, capped hard in JS. It is
   removed from the DOM entirely once done, so it can never trap focus.
   -------------------------------------------------------------------------- */

.loader {
  position: fixed;
  inset: 0;
  z-index: var(--z-loader);
  display: grid;
  place-items: center;
  gap: var(--sp-4);
  background: var(--leaf-900);
  color: var(--rice);
  text-align: center;
  transition: opacity var(--dur-slow) var(--ease-out);
}

.loader.is-done {
  opacity: 0;
  pointer-events: none;
}

.loader__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp-4);
  padding: var(--gutter);
}

.loader__mal {
  font-family: var(--font-mal-display);
  font-size: clamp(3rem, 12vw, 6rem);
  line-height: 1;
  color: var(--rice);
  animation: rise-in var(--dur-slow) var(--ease-out) both;
}

.loader__line {
  font-size: var(--fs-small);
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--ink-invert-mute);
  animation: rise-in var(--dur-slow) var(--ease-out) both;
  animation-delay: 220ms;
}

.loader__bar {
  inline-size: clamp(6rem, 22vw, 11rem);
  block-size: 1px;
  background: color-mix(in srgb, var(--rice) 22%, transparent);
  overflow: hidden;
}

.loader__bar::after {
  content: '';
  display: block;
  block-size: 100%;
  inline-size: 100%;
  background: var(--gold);
  transform: scaleX(var(--load-progress, 0));
  transform-origin: left;
  transition: transform var(--dur-base) var(--ease-out);
}

/* --------------------------------------------------------------------------
   Header
   -------------------------------------------------------------------------- */

.header {
  position: fixed;
  inset-block-start: 0;
  inset-inline: 0;
  z-index: var(--z-nav);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
  padding: var(--sp-3) var(--gutter);
  color: var(--rice);
  /* Hidden until the reader leaves the hero. */
  transform: translateY(-100%);
  opacity: 0;
  transition: transform var(--dur-base) var(--ease-out),
    opacity var(--dur-base) var(--ease-out),
    background-color var(--dur-base) var(--ease-out);
  pointer-events: none;
}

.header.is-visible {
  transform: none;
  opacity: 1;
  pointer-events: auto;
  background: color-mix(in srgb, var(--leaf-900) 88%, transparent);
  backdrop-filter: blur(10px) saturate(1.2);
  border-block-end: 1px solid color-mix(in srgb, var(--rice) 12%, transparent);
}

.header__mark {
  display: inline-flex;
  align-items: baseline;
  gap: var(--sp-3);
  font-family: var(--font-display);
  font-size: 1.0625rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  text-decoration: none;
  color: inherit;
}

.header__mark .mal {
  font-size: 1rem;
  color: var(--gold-soft);
  letter-spacing: 0;
  text-transform: none;
}

.header__nav {
  display: none;
  gap: var(--sp-5);
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-caps);
  text-transform: uppercase;
}

@media (min-width: 56rem) {
  .header__nav {
    display: flex;
  }
}

.header__nav a {
  display: inline-flex;
  align-items: center;
  min-block-size: 2.75rem;
  text-decoration: none;
  color: color-mix(in srgb, var(--rice) 76%, transparent);
  transition: color var(--dur-fast) var(--ease-out);
}

.header__nav a:hover,
.header__nav a[aria-current='true'] {
  color: var(--rice);
}

.header__nav a[aria-current='true'] {
  text-decoration: underline;
  text-underline-offset: 0.4em;
  text-decoration-color: var(--gold);
}

.header .btn--ghost {
  --btn-border: color-mix(in srgb, var(--rice) 30%, transparent);
  --btn-fg: var(--rice);
}

.header .btn--ghost:hover {
  --btn-border: var(--gold-soft);
  --btn-bg: color-mix(in srgb, var(--rice) 8%, transparent);
}

/* --------------------------------------------------------------------------
   Dialogs — shared shell for the contents list and the dish panel.
   Native <dialog> gives focus trapping, Escape, and inert background for free.
   -------------------------------------------------------------------------- */

.dialog {
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--text);
  max-inline-size: none;
  max-block-size: none;
}

.dialog::backdrop {
  background: color-mix(in srgb, var(--leaf-900) 62%, transparent);
  backdrop-filter: blur(3px);
  opacity: 0;
  transition: opacity var(--dur-base) var(--ease-out);
}

.dialog[open]::backdrop {
  opacity: 1;
}

@starting-style {
  .dialog[open]::backdrop {
    opacity: 0;
  }
}

.dialog__panel {
  position: relative;
  background: var(--surface-raised);
  color: var(--text);
  box-shadow: var(--shadow-lg);
  overflow-y: auto;
  overscroll-behavior: contain;
}

.dialog__close {
  position: absolute;
  inset-block-start: var(--sp-4);
  inset-inline-end: var(--sp-4);
  inline-size: 2.75rem;
  block-size: 2.75rem;
  display: grid;
  place-items: center;
  border-radius: var(--r-pill);
  border: 1px solid var(--rule);
  color: var(--text-soft);
  background: var(--surface);
  transition: background-color var(--dur-fast) var(--ease-out),
    color var(--dur-fast) var(--ease-out),
    transform var(--dur-fast) var(--ease-spring);
  z-index: 2;
}

.dialog__close:hover {
  background: var(--surface-sunken);
  color: var(--text);
  transform: rotate(90deg);
}

/* ---- The dish panel: a side sheet on desktop, a bottom sheet on mobile --- */

.sheet {
  --sheet-inline: min(30rem, 100%);
  margin: 0 0 0 auto;
  block-size: 100dvh;
  inline-size: var(--sheet-inline);
  transition: translate var(--dur-base) var(--ease-out),
    opacity var(--dur-base) var(--ease-out), overlay var(--dur-base) allow-discrete,
    display var(--dur-base) allow-discrete;
  translate: 100% 0;
  opacity: 0;
}

.sheet[open] {
  translate: 0 0;
  opacity: 1;
}

@starting-style {
  .sheet[open] {
    translate: 100% 0;
    opacity: 0;
  }
}

.sheet .dialog__panel {
  block-size: 100%;
  padding: clamp(2rem, 4vw, 3rem) clamp(1.5rem, 3.5vw, 2.75rem);
  border-start-start-radius: var(--r-xl);
  border-end-start-radius: var(--r-xl);
}

@media (max-width: 47.99rem) {
  .sheet {
    --sheet-inline: 100%;
    margin: auto 0 0;
    block-size: auto;
    max-block-size: 88dvh;
    translate: 0 100%;
  }

  .sheet[open] {
    translate: 0 0;
  }

  @starting-style {
    .sheet[open] {
      translate: 0 100%;
    }
  }

  .sheet .dialog__panel {
    max-block-size: 88dvh;
    border-radius: var(--r-xl) var(--r-xl) 0 0;
    padding-block-end: max(var(--sp-7), env(safe-area-inset-bottom));
  }

  /* The grab handle that says "this is a sheet you can dismiss". */
  .sheet .dialog__panel::before {
    content: '';
    position: sticky;
    inset-block-start: 0;
    display: block;
    inline-size: 2.5rem;
    block-size: 4px;
    margin: 0 auto var(--sp-5);
    border-radius: var(--r-pill);
    background: var(--rule-strong);
  }
}

/* ---- Dish panel contents ------------------------------------------------ */

.dish-panel__head {
  display: flex;
  align-items: flex-start;
  gap: var(--sp-4);
  padding-inline-end: 3rem;
}

.dish-panel__serving {
  --serving: 4rem;
  flex: none;
  inline-size: 4rem;
  block-size: 4rem;
}

.dish-panel__title {
  font-size: clamp(1.9rem, 4vw, 2.5rem);
  line-height: 1.1;
  font-weight: 300;
  letter-spacing: var(--ls-display);
}

.dish-panel__mal {
  display: block;
  font-family: var(--font-mal-display);
  font-size: clamp(1.35rem, 3vw, 1.7rem);
  color: var(--accent);
  margin-block-start: 0.15em;
}

.dish-panel__body {
  display: flex;
  flex-direction: column;
  gap: var(--sp-5);
  margin-block-start: var(--sp-6);
}

.dish-panel__desc {
  font-size: var(--fs-lede);
  line-height: 1.55;
  color: var(--text);
}

.dish-panel__block {
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
  padding-block-start: var(--sp-5);
  border-block-start: 1px solid var(--rule);
}

.dish-panel__label {
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--text-mute);
}

.dish-panel__ingredients {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
}

.dish-panel__note {
  font-size: var(--fs-small);
  line-height: 1.65;
  color: var(--text-soft);
  font-style: italic;
  padding-inline-start: var(--sp-4);
  border-inline-start: 2px solid color-mix(in srgb, var(--gold) 55%, transparent);
}

.dish-panel__nav {
  display: flex;
  justify-content: space-between;
  gap: var(--sp-3);
  margin-block-start: auto;
  padding-block-start: var(--sp-6);
}

/* ---- Contents dialog ---------------------------------------------------- */

.contents {
  margin: auto;
  inline-size: min(38rem, calc(100% - var(--sp-6)));
  transition: translate var(--dur-base) var(--ease-out),
    opacity var(--dur-base) var(--ease-out), overlay var(--dur-base) allow-discrete,
    display var(--dur-base) allow-discrete;
  translate: 0 1.5rem;
  opacity: 0;
}

.contents[open] {
  translate: 0 0;
  opacity: 1;
}

@starting-style {
  .contents[open] {
    translate: 0 1.5rem;
    opacity: 0;
  }
}

.contents .dialog__panel {
  border-radius: var(--r-xl);
  padding: clamp(1.75rem, 4vw, 2.5rem);
  max-block-size: 82dvh;
}

.contents__list {
  display: grid;
  gap: 2px;
  margin-block-start: var(--sp-5);
}

.contents__link {
  display: grid;
  grid-template-columns: 2.5rem 1fr auto;
  align-items: baseline;
  gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-3);
  border-radius: var(--r-sm);
  text-decoration: none;
  color: var(--text);
  transition: background-color var(--dur-fast) var(--ease-out);
}

.contents__link:hover {
  background: var(--surface-sunken);
}

.contents__num {
  font-variant-numeric: tabular-nums;
  font-size: var(--fs-micro);
  color: var(--accent);
  letter-spacing: 0.08em;
}

.contents__name {
  font-family: var(--font-display);
  font-size: 1.1rem;
}

.contents__mal {
  font-family: var(--font-mal);
  font-size: var(--fs-small);
  color: var(--text-mute);
}

/* --------------------------------------------------------------------------
   Desktop cursor
   Pointer devices only, and never when the reader prefers reduced motion.
   It is decorative: it duplicates information already available on hover.
   -------------------------------------------------------------------------- */

.cursor {
  position: fixed;
  inset-block-start: 0;
  inset-inline-start: 0;
  z-index: var(--z-cursor);
  display: none;
  place-items: center;
  inline-size: 2.25rem;
  block-size: 2.25rem;
  border-radius: var(--r-pill);
  border: 1px solid color-mix(in srgb, var(--gold) 70%, transparent);
  background: color-mix(in srgb, var(--gold) 12%, transparent);
  pointer-events: none;
  translate: -50% -50%;
  transition: inline-size var(--dur-base) var(--ease-spring),
    block-size var(--dur-base) var(--ease-spring),
    background-color var(--dur-base) var(--ease-out),
    opacity var(--dur-base) var(--ease-out);
  opacity: 0;
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .cursor.is-enabled {
    display: grid;
  }
}

.cursor.is-visible {
  opacity: 1;
}

.cursor.is-hot {
  inline-size: 4.75rem;
  block-size: 4.75rem;
  background: color-mix(in srgb, var(--gold) 92%, transparent);
  border-color: transparent;
}

.cursor__label {
  font-size: 0.5625rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--leaf-900);
  opacity: 0;
  transform: scale(0.8);
  transition: opacity var(--dur-fast) var(--ease-out),
    transform var(--dur-fast) var(--ease-spring);
}

.cursor.is-hot .cursor__label {
  opacity: 1;
  transform: none;
}

/* ---------- the leaf, inlined ---------- */

/* Previously assets/leaf.svg. Declared once so the browser decodes it once
   and shares it between the hero, the feast and the builder. */
.leaf-stage__blade,
.leaf__blade {
  /* These were <img> elements, which are replaced inline boxes; a <span>
     is plain inline and would ignore the 100% sizing they rely on. */
  display: block;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1500 760' width='1500' height='760' role='img' aria-label='A banana leaf'%3E%3Ctitle%3EA banana leaf%3C/title%3E%3Cdefs%3E%3ClinearGradient id='blade' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%231f4a29'/%3E%3Cstop offset='0.18' stop-color='%232a6134'/%3E%3Cstop offset='0.42' stop-color='%233a7c46'/%3E%3Cstop offset='0.50' stop-color='%2342894d'/%3E%3Cstop offset='0.58' stop-color='%23387643'/%3E%3Cstop offset='0.84' stop-color='%23275c31'/%3E%3Cstop offset='1' stop-color='%231c4526'/%3E%3C/linearGradient%3E%3ClinearGradient id='sheen' x1='0.05' y1='0' x2='0.85' y2='1'%3E%3Cstop offset='0' stop-color='%23d8f0b8' stop-opacity='0.30'/%3E%3Cstop offset='0.35' stop-color='%23a9dd8c' stop-opacity='0.10'/%3E%3Cstop offset='0.7' stop-color='%230d1c13' stop-opacity='0.06'/%3E%3Cstop offset='1' stop-color='%230d1c13' stop-opacity='0.20'/%3E%3C/linearGradient%3E%3ClinearGradient id='rib' x1='0' y1='0' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%23cfd9a0' stop-opacity='0'/%3E%3Cstop offset='0.10' stop-color='%23c6d396' stop-opacity='0.55'/%3E%3Cstop offset='0.45' stop-color='%23a8bd6e' stop-opacity='0.85'/%3E%3Cstop offset='0.88' stop-color='%238aa457' stop-opacity='0.7'/%3E%3Cstop offset='1' stop-color='%237b9450' stop-opacity='0.25'/%3E%3C/linearGradient%3E%3Cfilter id='grain' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' seed='7'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='linear' slope='0.16'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Cfilter id='soften' x='-20%25' y='-40%25' width='140%25' height='180%25'%3E%3CfeGaussianBlur stdDeviation='9'/%3E%3C/filter%3E%3CclipPath id='blade-clip'%3E%3Cpath d='M 1460.00 587.33 C 1456.31 607.38 1459.96 587.36 1459.88 587.41 C 1459.80 587.47 1459.68 587.55 1459.52 587.66 C 1459.35 587.77 1459.15 587.91 1458.91 588.07 C 1458.67 588.24 1458.38 588.43 1458.06 588.65 C 1457.74 588.88 1457.37 589.12 1456.97 589.40 C 1456.57 589.68 1456.12 589.98 1455.64 590.31 C 1455.16 590.64 1454.63 591.00 1454.07 591.39 C 1453.50 591.78 1452.90 592.19 1452.26 592.64 C 1451.61 593.08 1450.93 593.55 1450.20 594.05 C 1449.48 594.55 1448.71 595.07 1447.91 595.63 C 1447.11 596.18 1446.26 596.76 1445.38 597.37 C 1444.50 597.98 1443.58 598.62 1442.61 599.29 C 1441.65 599.96 1440.65 600.65 1439.61 601.37 C 1438.57 602.10 1437.49 602.85 1436.37 603.62 C 1435.25 604.40 1434.09 605.21 1432.90 606.04 C 1431.70 606.87 1430.46 607.73 1429.19 608.61 C 1427.91 609.49 1426.60 610.40 1425.25 611.33 C 1423.90 612.26 1422.51 613.21 1421.08 614.18 C 1419.65 615.15 1418.19 616.15 1416.68 617.15 C 1415.18 618.16 1413.64 619.18 1412.06 620.22 C 1410.48 621.25 1408.86 622.30 1407.20 623.35 C 1405.55 624.40 1403.86 625.46 1402.13 626.52 C 1400.40 627.57 1398.63 628.64 1396.83 629.70 C 1395.02 630.75 1393.18 631.81 1391.31 632.86 C 1389.43 633.90 1387.52 634.95 1385.57 635.98 C 1383.62 637.01 1381.63 638.04 1379.61 639.06 C 1377.59 640.08 1375.53 641.08 1373.44 642.09 C 1371.34 643.10 1369.22 644.10 1367.05 645.10 C 1364.89 646.10 1362.69 647.10 1360.46 648.11 C 1358.22 649.12 1355.96 650.13 1353.65 651.17 C 1351.35 652.20 1349.01 653.24 1346.64 654.30 C 1344.27 655.36 1341.87 656.44 1339.43 657.53 C 1336.99 658.63 1334.52 659.75 1332.02 660.88 C 1329.51 662.00 1326.97 663.15 1324.40 664.30 C 1321.83 665.44 1319.23 666.60 1316.59 667.74 C 1313.96 668.88 1311.29 670.02 1308.59 671.12 C 1305.89 672.21 1303.16 673.30 1300.39 674.33 C 1297.63 675.36 1294.84 676.36 1292.01 677.30 C 1289.19 678.25 1286.33 679.14 1283.45 679.99 C 1280.56 680.84 1277.64 681.63 1274.70 682.40 C 1271.75 683.16 1268.77 683.88 1265.77 684.60 C 1262.76 685.33 1259.73 686.01 1256.66 686.74 C 1253.60 687.47 1250.51 688.18 1247.39 688.96 C 1244.26 689.74 1241.11 690.54 1237.94 691.41 C 1234.76 692.27 1231.56 693.19 1228.32 694.14 C 1225.09 695.10 1221.83 696.12 1218.55 697.15 C 1215.26 698.18 1211.95 699.26 1208.61 700.31 C 1205.27 701.35 1201.91 702.43 1198.51 703.44 C 1195.12 704.44 1191.71 705.44 1188.27 706.36 C 1184.83 707.28 1181.36 708.14 1177.87 708.96 C 1174.38 709.78 1170.87 710.52 1167.33 711.27 C 1163.79 712.01 1160.23 712.68 1156.64 713.41 C 1153.06 714.14 1149.45 714.84 1145.82 715.62 C 1142.19 716.41 1138.53 717.22 1134.86 718.11 C 1131.18 719.01 1127.49 719.98 1123.77 720.99 C 1120.05 722.00 1116.31 723.10 1112.55 724.17 C 1108.79 725.24 1105.01 726.38 1101.21 727.41 C 1097.40 728.44 1093.58 729.48 1089.74 730.37 C 1085.90 731.26 1082.04 732.07 1078.16 732.75 C 1074.29 733.43 1070.39 733.97 1066.47 734.44 C 1062.56 734.91 1058.63 735.24 1054.68 735.57 C 1050.73 735.90 1046.76 736.13 1042.77 736.42 C 1038.79 736.72 1034.79 736.99 1030.77 737.34 C 1026.75 737.69 1022.72 738.09 1018.67 738.51 C 1014.62 738.94 1010.56 739.44 1006.48 739.88 C 1002.40 740.33 998.31 740.82 994.20 741.17 C 990.10 741.52 985.98 741.84 981.84 741.99 C 977.71 742.14 973.56 742.18 969.40 742.10 C 965.24 742.02 961.07 741.77 956.89 741.51 C 952.70 741.25 948.51 740.85 944.30 740.54 C 940.09 740.23 935.88 739.88 931.65 739.66 C 927.42 739.44 923.18 739.29 918.93 739.25 C 914.69 739.20 910.43 739.29 906.16 739.40 C 901.90 739.50 897.62 739.74 893.34 739.89 C 889.05 740.04 884.76 740.24 880.46 740.29 C 876.16 740.34 871.86 740.34 867.54 740.21 C 863.23 740.09 858.91 739.83 854.58 739.53 C 850.26 739.24 845.93 738.81 841.59 738.46 C 837.25 738.10 832.91 737.69 828.56 737.40 C 824.22 737.11 819.87 736.87 815.51 736.72 C 811.16 736.56 806.80 736.54 802.44 736.49 C 798.07 736.45 793.71 736.51 789.34 736.45 C 784.98 736.38 780.61 736.33 776.24 736.08 C 771.87 735.83 767.49 735.47 763.12 734.94 C 758.75 734.40 754.37 733.67 750.00 732.85 C 745.63 732.03 741.25 731.02 736.88 730.03 C 732.51 729.04 728.13 727.94 723.76 726.92 C 719.39 725.91 715.02 724.89 710.66 723.95 C 706.29 723.00 701.93 722.13 697.56 721.25 C 693.20 720.37 688.84 719.56 684.49 718.64 C 680.13 717.73 675.78 716.81 671.44 715.74 C 667.09 714.67 662.75 713.50 658.41 712.21 C 654.07 710.91 649.74 709.46 645.42 707.97 C 641.09 706.49 636.77 704.86 632.46 703.30 C 628.14 701.75 623.84 700.13 619.54 698.64 C 615.24 697.16 610.95 695.72 606.66 694.41 C 602.38 693.09 598.10 691.90 593.84 690.76 C 589.57 689.61 585.31 688.60 581.07 687.55 C 576.82 686.50 572.58 685.52 568.35 684.44 C 564.12 683.37 559.91 682.28 555.70 681.09 C 551.49 679.91 547.30 678.65 543.11 677.35 C 538.93 676.06 534.76 674.67 530.60 673.32 C 526.44 671.97 522.29 670.58 518.16 669.27 C 514.02 667.97 509.90 666.69 505.80 665.51 C 501.69 664.33 497.60 663.23 493.52 662.17 C 489.44 661.12 485.38 660.16 481.33 659.18 C 477.28 658.19 473.25 657.27 469.23 656.26 C 465.21 655.24 461.21 654.22 457.23 653.09 C 453.24 651.96 449.27 650.75 445.32 649.46 C 441.37 648.17 437.44 646.76 433.53 645.33 C 429.61 643.90 425.71 642.37 421.84 640.86 C 417.96 639.36 414.10 637.80 410.26 636.30 C 406.42 634.80 402.60 633.30 398.79 631.86 C 394.99 630.42 391.21 629.03 387.45 627.66 C 383.69 626.28 379.95 624.97 376.23 623.63 C 372.51 622.29 368.82 620.99 365.14 619.63 C 361.47 618.27 357.81 616.91 354.18 615.48 C 350.55 614.05 346.94 612.57 343.36 611.05 C 339.77 609.52 336.21 607.93 332.67 606.32 C 329.13 604.72 325.62 603.05 322.13 601.40 C 318.64 599.76 315.17 598.08 311.73 596.44 C 308.29 594.81 304.88 593.18 301.49 591.60 C 298.09 590.03 294.73 588.49 291.39 586.99 C 288.05 585.50 284.74 584.05 281.45 582.63 C 278.17 581.22 274.91 579.85 271.68 578.48 C 268.44 577.11 265.24 575.78 262.06 574.43 C 258.89 573.08 255.74 571.74 252.61 570.37 C 249.49 569.00 246.40 567.62 243.34 566.21 C 240.27 564.80 237.24 563.37 234.23 561.92 C 231.23 560.46 228.25 558.98 225.30 557.49 C 222.36 556.00 219.44 554.48 216.55 552.97 C 213.67 551.46 210.81 549.94 207.99 548.43 C 205.16 546.92 202.37 545.41 199.61 543.92 C 196.84 542.43 194.11 540.95 191.41 539.49 C 188.71 538.03 186.04 536.58 183.41 535.14 C 180.77 533.71 178.17 532.29 175.60 530.87 C 173.03 529.45 170.49 528.05 167.98 526.64 C 165.48 525.23 163.01 523.82 160.57 522.41 C 158.13 520.99 155.73 519.57 153.36 518.13 C 150.99 516.70 148.65 515.26 146.35 513.79 C 144.04 512.33 141.78 510.86 139.54 509.37 C 137.31 507.88 135.11 506.37 132.95 504.85 C 130.78 503.34 128.66 501.80 126.56 500.26 C 124.47 498.72 122.41 497.17 120.39 495.61 C 118.37 494.05 116.38 492.49 114.43 490.92 C 112.48 489.35 110.57 487.78 108.69 486.21 C 106.82 484.65 104.98 483.08 103.17 481.51 C 101.37 479.95 99.60 478.39 97.87 476.83 C 96.14 475.27 94.45 473.72 92.80 472.18 C 91.14 470.63 89.52 469.09 87.94 467.56 C 86.36 466.03 84.82 464.50 83.32 462.99 C 81.81 461.47 80.35 459.96 78.92 458.45 C 77.49 456.95 76.10 455.45 74.75 453.96 C 73.40 452.47 72.09 450.98 70.81 449.50 C 69.54 448.03 68.30 446.56 67.10 445.09 C 65.91 443.63 64.75 442.18 63.63 440.73 C 62.51 439.28 61.43 437.84 60.39 436.41 C 59.35 434.98 58.35 433.56 57.39 432.15 C 56.42 430.74 55.50 429.34 54.62 427.95 C 53.74 426.56 52.89 425.19 52.09 423.83 C 51.29 422.47 50.52 421.12 49.80 419.79 C 49.07 418.47 48.39 417.15 47.74 415.87 C 47.10 414.59 46.50 413.32 45.93 412.09 C 45.37 410.85 44.84 409.64 44.36 408.48 C 43.88 407.31 43.43 406.18 43.03 405.10 C 42.63 404.03 42.26 402.99 41.94 402.03 C 41.62 401.08 41.33 400.17 41.09 399.38 C 40.85 398.58 40.65 397.86 40.48 397.28 C 40.32 396.70 40.20 396.22 40.12 395.91 C 40.04 395.61 40.02 400.45 40.00 395.44 C 39.98 390.42 39.98 370.83 40.00 365.82 C 40.02 360.82 40.04 365.67 40.12 365.39 C 40.20 365.11 40.32 364.66 40.48 364.13 C 40.65 363.60 40.85 362.93 41.09 362.21 C 41.33 361.48 41.62 360.64 41.94 359.77 C 42.26 358.89 42.63 357.93 43.03 356.94 C 43.43 355.95 43.88 354.91 44.36 353.84 C 44.84 352.76 45.37 351.65 45.93 350.52 C 46.50 349.38 47.10 348.21 47.74 347.03 C 48.39 345.85 49.07 344.64 49.80 343.41 C 50.52 342.19 51.29 340.95 52.09 339.70 C 52.89 338.44 53.74 337.17 54.62 335.89 C 55.50 334.61 56.42 333.32 57.39 332.02 C 58.35 330.72 59.35 329.41 60.39 328.09 C 61.43 326.77 62.51 325.45 63.63 324.12 C 64.75 322.79 65.91 321.45 67.10 320.11 C 68.30 318.77 69.54 317.42 70.81 316.08 C 72.09 314.73 73.40 313.38 74.75 312.03 C 76.10 310.68 77.49 309.33 78.92 307.98 C 80.35 306.63 81.81 305.28 83.32 303.93 C 84.82 302.58 86.36 301.24 87.94 299.89 C 89.52 298.55 91.14 297.21 92.80 295.87 C 94.45 294.53 96.14 293.19 97.87 291.86 C 99.60 290.52 101.37 289.19 103.17 287.87 C 104.98 286.54 106.82 285.21 108.69 283.89 C 110.57 282.56 112.48 281.24 114.43 279.92 C 116.38 278.59 118.37 277.27 120.39 275.94 C 122.41 274.61 124.47 273.29 126.56 271.95 C 128.66 270.62 130.78 269.28 132.95 267.94 C 135.11 266.59 137.31 265.25 139.54 263.89 C 141.78 262.53 144.04 261.16 146.35 259.79 C 148.65 258.42 150.99 257.04 153.36 255.65 C 155.73 254.26 158.13 252.86 160.57 251.46 C 163.01 250.06 165.48 248.65 167.98 247.25 C 170.49 245.84 173.03 244.42 175.60 243.02 C 178.17 241.61 180.77 240.20 183.41 238.79 C 186.04 237.39 188.71 235.99 191.41 234.60 C 194.11 233.21 196.84 231.83 199.61 230.45 C 202.37 229.08 205.16 227.71 207.99 226.35 C 210.81 224.98 213.67 223.63 216.55 222.27 C 219.44 220.92 222.36 219.57 225.30 218.20 C 228.25 216.84 231.23 215.48 234.23 214.09 C 237.24 212.71 240.27 211.31 243.34 209.89 C 246.40 208.47 249.49 207.03 252.61 205.56 C 255.74 204.09 258.89 202.59 262.06 201.07 C 265.24 199.55 268.44 197.99 271.68 196.43 C 274.91 194.87 278.17 193.27 281.45 191.69 C 284.74 190.11 288.05 188.51 291.39 186.93 C 294.73 185.36 298.09 183.79 301.49 182.26 C 304.88 180.73 308.29 179.22 311.73 177.77 C 315.17 176.32 318.64 174.90 322.13 173.54 C 325.62 172.18 329.13 170.87 332.67 169.60 C 336.21 168.33 339.77 167.12 343.36 165.91 C 346.94 164.71 350.55 163.55 354.18 162.37 C 357.81 161.20 361.47 160.05 365.14 158.86 C 368.82 157.67 372.51 156.48 376.23 155.24 C 379.95 154.00 383.69 152.73 387.45 151.42 C 391.21 150.11 394.99 148.76 398.79 147.39 C 402.60 146.02 406.42 144.60 410.26 143.20 C 414.10 141.80 417.96 140.37 421.84 138.98 C 425.71 137.59 429.61 136.20 433.53 134.86 C 437.44 133.52 441.37 132.21 445.32 130.94 C 449.27 129.66 453.24 128.44 457.23 127.22 C 461.21 126.01 465.21 124.84 469.23 123.64 C 473.25 122.45 477.28 121.28 481.33 120.04 C 485.38 118.81 489.44 117.57 493.52 116.25 C 497.60 114.94 501.69 113.58 505.80 112.17 C 509.90 110.75 514.02 109.27 518.16 107.79 C 522.29 106.30 526.44 104.75 530.60 103.27 C 534.76 101.78 538.93 100.27 543.11 98.88 C 547.30 97.48 551.49 96.12 555.70 94.90 C 559.91 93.68 564.12 92.56 568.35 91.57 C 572.58 90.57 576.82 89.71 581.07 88.93 C 585.31 88.15 589.57 87.51 593.84 86.88 C 598.10 86.25 602.38 85.72 606.66 85.16 C 610.95 84.59 615.24 84.06 619.54 83.47 C 623.84 82.87 628.14 82.26 632.46 81.59 C 636.77 80.92 641.09 80.20 645.42 79.47 C 649.74 78.73 654.07 77.94 658.41 77.20 C 662.75 76.45 667.09 75.68 671.44 74.99 C 675.78 74.30 680.13 73.64 684.49 73.05 C 688.84 72.47 693.20 71.95 697.56 71.47 C 701.93 70.99 706.29 70.59 710.66 70.17 C 715.02 69.74 719.39 69.37 723.76 68.90 C 728.13 68.44 732.51 67.98 736.88 67.40 C 741.25 66.82 745.63 66.16 750.00 65.42 C 754.37 64.68 758.75 63.82 763.12 62.94 C 767.49 62.06 771.87 61.06 776.24 60.12 C 780.61 59.18 784.98 58.18 789.34 57.31 C 793.71 56.43 798.07 55.57 802.44 54.87 C 806.80 54.17 811.16 53.57 815.51 53.10 C 819.87 52.63 824.22 52.31 828.56 52.06 C 832.91 51.81 837.25 51.71 841.59 51.61 C 845.93 51.51 850.26 51.51 854.58 51.46 C 858.91 51.40 863.23 51.37 867.54 51.27 C 871.86 51.17 876.16 51.04 880.46 50.85 C 884.76 50.67 889.05 50.41 893.34 50.16 C 897.62 49.92 901.90 49.61 906.16 49.36 C 910.43 49.11 914.69 48.84 918.93 48.67 C 923.18 48.50 927.42 48.36 931.65 48.31 C 935.88 48.26 940.09 48.29 944.30 48.37 C 948.51 48.44 952.70 48.61 956.89 48.75 C 961.07 48.90 965.24 49.11 969.40 49.25 C 973.56 49.38 977.71 49.53 981.84 49.58 C 985.98 49.63 990.10 49.63 994.20 49.54 C 998.31 49.46 1002.40 49.29 1006.48 49.08 C 1010.56 48.88 1014.62 48.58 1018.67 48.32 C 1022.72 48.06 1026.75 47.74 1030.77 47.51 C 1034.79 47.29 1038.79 47.07 1042.77 46.99 C 1046.76 46.91 1050.73 46.89 1054.68 47.02 C 1058.63 47.15 1062.56 47.40 1066.47 47.76 C 1070.39 48.12 1074.29 48.63 1078.16 49.20 C 1082.04 49.77 1085.90 50.46 1089.74 51.18 C 1093.58 51.89 1097.40 52.70 1101.21 53.49 C 1105.01 54.27 1108.79 55.10 1112.55 55.90 C 1116.31 56.69 1120.05 57.49 1123.77 58.26 C 1127.49 59.04 1131.18 59.79 1134.86 60.55 C 1138.53 61.30 1142.19 62.03 1145.82 62.80 C 1149.45 63.57 1153.06 64.33 1156.64 65.15 C 1160.23 65.97 1163.79 66.82 1167.33 67.72 C 1170.87 68.63 1174.38 69.59 1177.87 70.60 C 1181.36 71.62 1184.83 72.70 1188.27 73.81 C 1191.71 74.92 1195.12 76.09 1198.51 77.27 C 1201.91 78.44 1205.27 79.67 1208.61 80.87 C 1211.95 82.07 1215.26 83.29 1218.55 84.46 C 1221.83 85.64 1225.09 86.81 1228.32 87.92 C 1231.56 89.03 1234.76 90.11 1237.94 91.14 C 1241.11 92.17 1244.26 93.16 1247.39 94.10 C 1250.51 95.05 1253.60 95.94 1256.66 96.82 C 1259.73 97.69 1262.76 98.53 1265.77 99.36 C 1268.77 100.20 1271.75 101.01 1274.70 101.84 C 1277.64 102.67 1280.56 103.49 1283.45 104.35 C 1286.33 105.21 1289.19 106.07 1292.01 106.98 C 1294.84 107.89 1297.63 108.83 1300.39 109.80 C 1303.16 110.77 1305.89 111.78 1308.59 112.83 C 1311.29 113.87 1313.96 114.95 1316.59 116.05 C 1319.23 117.15 1321.83 118.29 1324.40 119.43 C 1326.97 120.58 1329.51 121.75 1332.02 122.93 C 1334.52 124.10 1336.99 125.29 1339.43 126.47 C 1341.87 127.65 1344.27 128.83 1346.64 130.00 C 1349.01 131.17 1351.35 132.33 1353.65 133.48 C 1355.96 134.62 1358.22 135.76 1360.46 136.87 C 1362.69 137.99 1364.89 139.08 1367.05 140.16 C 1369.22 141.24 1371.34 142.30 1373.44 143.34 C 1375.53 144.38 1377.59 145.40 1379.61 146.41 C 1381.63 147.42 1383.62 148.41 1385.57 149.38 C 1387.52 150.36 1389.43 151.32 1391.31 152.27 C 1393.18 153.22 1395.02 154.15 1396.83 155.08 C 1398.63 156.00 1400.40 156.91 1402.13 157.82 C 1403.86 158.72 1405.55 159.61 1407.20 160.50 C 1408.86 161.38 1410.48 162.25 1412.06 163.11 C 1413.64 163.98 1415.18 164.83 1416.68 165.67 C 1418.19 166.51 1419.65 167.34 1421.08 168.15 C 1422.51 168.97 1423.90 169.77 1425.25 170.56 C 1426.60 171.34 1427.91 172.12 1429.19 172.88 C 1430.46 173.63 1431.70 174.37 1432.90 175.10 C 1434.09 175.82 1435.25 176.53 1436.37 177.21 C 1437.49 177.90 1438.57 178.57 1439.61 179.21 C 1440.65 179.86 1441.65 180.49 1442.61 181.09 C 1443.58 181.69 1444.50 182.28 1445.38 182.83 C 1446.26 183.39 1447.11 183.93 1447.91 184.44 C 1448.71 184.95 1449.48 185.44 1450.20 185.91 C 1450.93 186.37 1451.61 186.81 1452.26 187.23 C 1452.90 187.64 1453.50 188.03 1454.07 188.40 C 1454.63 188.76 1455.16 189.10 1455.64 189.41 C 1456.12 189.73 1456.57 190.01 1456.97 190.27 C 1457.37 190.54 1457.74 190.77 1458.06 190.98 C 1458.38 191.19 1458.67 191.38 1458.91 191.53 C 1459.15 191.69 1459.35 191.82 1459.52 191.93 C 1459.68 192.03 1459.80 192.11 1459.88 192.16 C 1459.96 192.22 1457.15 179.09 1460.00 192.24 C 1462.85 205.40 1473.00 242.31 1477.00 271.10 C 1481.00 299.89 1483.17 332.32 1484.00 364.98 C 1484.83 397.64 1486.00 430.02 1482.00 467.08 C 1478.00 504.14 1463.69 567.27 1460.00 587.33 Z'/%3E%3C/clipPath%3E%3C/defs%3E%3Cg%3E%3Cpath d='M 1460.00 587.33 C 1456.31 607.38 1459.96 587.36 1459.88 587.41 C 1459.80 587.47 1459.68 587.55 1459.52 587.66 C 1459.35 587.77 1459.15 587.91 1458.91 588.07 C 1458.67 588.24 1458.38 588.43 1458.06 588.65 C 1457.74 588.88 1457.37 589.12 1456.97 589.40 C 1456.57 589.68 1456.12 589.98 1455.64 590.31 C 1455.16 590.64 1454.63 591.00 1454.07 591.39 C 1453.50 591.78 1452.90 592.19 1452.26 592.64 C 1451.61 593.08 1450.93 593.55 1450.20 594.05 C 1449.48 594.55 1448.71 595.07 1447.91 595.63 C 1447.11 596.18 1446.26 596.76 1445.38 597.37 C 1444.50 597.98 1443.58 598.62 1442.61 599.29 C 1441.65 599.96 1440.65 600.65 1439.61 601.37 C 1438.57 602.10 1437.49 602.85 1436.37 603.62 C 1435.25 604.40 1434.09 605.21 1432.90 606.04 C 1431.70 606.87 1430.46 607.73 1429.19 608.61 C 1427.91 609.49 1426.60 610.40 1425.25 611.33 C 1423.90 612.26 1422.51 613.21 1421.08 614.18 C 1419.65 615.15 1418.19 616.15 1416.68 617.15 C 1415.18 618.16 1413.64 619.18 1412.06 620.22 C 1410.48 621.25 1408.86 622.30 1407.20 623.35 C 1405.55 624.40 1403.86 625.46 1402.13 626.52 C 1400.40 627.57 1398.63 628.64 1396.83 629.70 C 1395.02 630.75 1393.18 631.81 1391.31 632.86 C 1389.43 633.90 1387.52 634.95 1385.57 635.98 C 1383.62 637.01 1381.63 638.04 1379.61 639.06 C 1377.59 640.08 1375.53 641.08 1373.44 642.09 C 1371.34 643.10 1369.22 644.10 1367.05 645.10 C 1364.89 646.10 1362.69 647.10 1360.46 648.11 C 1358.22 649.12 1355.96 650.13 1353.65 651.17 C 1351.35 652.20 1349.01 653.24 1346.64 654.30 C 1344.27 655.36 1341.87 656.44 1339.43 657.53 C 1336.99 658.63 1334.52 659.75 1332.02 660.88 C 1329.51 662.00 1326.97 663.15 1324.40 664.30 C 1321.83 665.44 1319.23 666.60 1316.59 667.74 C 1313.96 668.88 1311.29 670.02 1308.59 671.12 C 1305.89 672.21 1303.16 673.30 1300.39 674.33 C 1297.63 675.36 1294.84 676.36 1292.01 677.30 C 1289.19 678.25 1286.33 679.14 1283.45 679.99 C 1280.56 680.84 1277.64 681.63 1274.70 682.40 C 1271.75 683.16 1268.77 683.88 1265.77 684.60 C 1262.76 685.33 1259.73 686.01 1256.66 686.74 C 1253.60 687.47 1250.51 688.18 1247.39 688.96 C 1244.26 689.74 1241.11 690.54 1237.94 691.41 C 1234.76 692.27 1231.56 693.19 1228.32 694.14 C 1225.09 695.10 1221.83 696.12 1218.55 697.15 C 1215.26 698.18 1211.95 699.26 1208.61 700.31 C 1205.27 701.35 1201.91 702.43 1198.51 703.44 C 1195.12 704.44 1191.71 705.44 1188.27 706.36 C 1184.83 707.28 1181.36 708.14 1177.87 708.96 C 1174.38 709.78 1170.87 710.52 1167.33 711.27 C 1163.79 712.01 1160.23 712.68 1156.64 713.41 C 1153.06 714.14 1149.45 714.84 1145.82 715.62 C 1142.19 716.41 1138.53 717.22 1134.86 718.11 C 1131.18 719.01 1127.49 719.98 1123.77 720.99 C 1120.05 722.00 1116.31 723.10 1112.55 724.17 C 1108.79 725.24 1105.01 726.38 1101.21 727.41 C 1097.40 728.44 1093.58 729.48 1089.74 730.37 C 1085.90 731.26 1082.04 732.07 1078.16 732.75 C 1074.29 733.43 1070.39 733.97 1066.47 734.44 C 1062.56 734.91 1058.63 735.24 1054.68 735.57 C 1050.73 735.90 1046.76 736.13 1042.77 736.42 C 1038.79 736.72 1034.79 736.99 1030.77 737.34 C 1026.75 737.69 1022.72 738.09 1018.67 738.51 C 1014.62 738.94 1010.56 739.44 1006.48 739.88 C 1002.40 740.33 998.31 740.82 994.20 741.17 C 990.10 741.52 985.98 741.84 981.84 741.99 C 977.71 742.14 973.56 742.18 969.40 742.10 C 965.24 742.02 961.07 741.77 956.89 741.51 C 952.70 741.25 948.51 740.85 944.30 740.54 C 940.09 740.23 935.88 739.88 931.65 739.66 C 927.42 739.44 923.18 739.29 918.93 739.25 C 914.69 739.20 910.43 739.29 906.16 739.40 C 901.90 739.50 897.62 739.74 893.34 739.89 C 889.05 740.04 884.76 740.24 880.46 740.29 C 876.16 740.34 871.86 740.34 867.54 740.21 C 863.23 740.09 858.91 739.83 854.58 739.53 C 850.26 739.24 845.93 738.81 841.59 738.46 C 837.25 738.10 832.91 737.69 828.56 737.40 C 824.22 737.11 819.87 736.87 815.51 736.72 C 811.16 736.56 806.80 736.54 802.44 736.49 C 798.07 736.45 793.71 736.51 789.34 736.45 C 784.98 736.38 780.61 736.33 776.24 736.08 C 771.87 735.83 767.49 735.47 763.12 734.94 C 758.75 734.40 754.37 733.67 750.00 732.85 C 745.63 732.03 741.25 731.02 736.88 730.03 C 732.51 729.04 728.13 727.94 723.76 726.92 C 719.39 725.91 715.02 724.89 710.66 723.95 C 706.29 723.00 701.93 722.13 697.56 721.25 C 693.20 720.37 688.84 719.56 684.49 718.64 C 680.13 717.73 675.78 716.81 671.44 715.74 C 667.09 714.67 662.75 713.50 658.41 712.21 C 654.07 710.91 649.74 709.46 645.42 707.97 C 641.09 706.49 636.77 704.86 632.46 703.30 C 628.14 701.75 623.84 700.13 619.54 698.64 C 615.24 697.16 610.95 695.72 606.66 694.41 C 602.38 693.09 598.10 691.90 593.84 690.76 C 589.57 689.61 585.31 688.60 581.07 687.55 C 576.82 686.50 572.58 685.52 568.35 684.44 C 564.12 683.37 559.91 682.28 555.70 681.09 C 551.49 679.91 547.30 678.65 543.11 677.35 C 538.93 676.06 534.76 674.67 530.60 673.32 C 526.44 671.97 522.29 670.58 518.16 669.27 C 514.02 667.97 509.90 666.69 505.80 665.51 C 501.69 664.33 497.60 663.23 493.52 662.17 C 489.44 661.12 485.38 660.16 481.33 659.18 C 477.28 658.19 473.25 657.27 469.23 656.26 C 465.21 655.24 461.21 654.22 457.23 653.09 C 453.24 651.96 449.27 650.75 445.32 649.46 C 441.37 648.17 437.44 646.76 433.53 645.33 C 429.61 643.90 425.71 642.37 421.84 640.86 C 417.96 639.36 414.10 637.80 410.26 636.30 C 406.42 634.80 402.60 633.30 398.79 631.86 C 394.99 630.42 391.21 629.03 387.45 627.66 C 383.69 626.28 379.95 624.97 376.23 623.63 C 372.51 622.29 368.82 620.99 365.14 619.63 C 361.47 618.27 357.81 616.91 354.18 615.48 C 350.55 614.05 346.94 612.57 343.36 611.05 C 339.77 609.52 336.21 607.93 332.67 606.32 C 329.13 604.72 325.62 603.05 322.13 601.40 C 318.64 599.76 315.17 598.08 311.73 596.44 C 308.29 594.81 304.88 593.18 301.49 591.60 C 298.09 590.03 294.73 588.49 291.39 586.99 C 288.05 585.50 284.74 584.05 281.45 582.63 C 278.17 581.22 274.91 579.85 271.68 578.48 C 268.44 577.11 265.24 575.78 262.06 574.43 C 258.89 573.08 255.74 571.74 252.61 570.37 C 249.49 569.00 246.40 567.62 243.34 566.21 C 240.27 564.80 237.24 563.37 234.23 561.92 C 231.23 560.46 228.25 558.98 225.30 557.49 C 222.36 556.00 219.44 554.48 216.55 552.97 C 213.67 551.46 210.81 549.94 207.99 548.43 C 205.16 546.92 202.37 545.41 199.61 543.92 C 196.84 542.43 194.11 540.95 191.41 539.49 C 188.71 538.03 186.04 536.58 183.41 535.14 C 180.77 533.71 178.17 532.29 175.60 530.87 C 173.03 529.45 170.49 528.05 167.98 526.64 C 165.48 525.23 163.01 523.82 160.57 522.41 C 158.13 520.99 155.73 519.57 153.36 518.13 C 150.99 516.70 148.65 515.26 146.35 513.79 C 144.04 512.33 141.78 510.86 139.54 509.37 C 137.31 507.88 135.11 506.37 132.95 504.85 C 130.78 503.34 128.66 501.80 126.56 500.26 C 124.47 498.72 122.41 497.17 120.39 495.61 C 118.37 494.05 116.38 492.49 114.43 490.92 C 112.48 489.35 110.57 487.78 108.69 486.21 C 106.82 484.65 104.98 483.08 103.17 481.51 C 101.37 479.95 99.60 478.39 97.87 476.83 C 96.14 475.27 94.45 473.72 92.80 472.18 C 91.14 470.63 89.52 469.09 87.94 467.56 C 86.36 466.03 84.82 464.50 83.32 462.99 C 81.81 461.47 80.35 459.96 78.92 458.45 C 77.49 456.95 76.10 455.45 74.75 453.96 C 73.40 452.47 72.09 450.98 70.81 449.50 C 69.54 448.03 68.30 446.56 67.10 445.09 C 65.91 443.63 64.75 442.18 63.63 440.73 C 62.51 439.28 61.43 437.84 60.39 436.41 C 59.35 434.98 58.35 433.56 57.39 432.15 C 56.42 430.74 55.50 429.34 54.62 427.95 C 53.74 426.56 52.89 425.19 52.09 423.83 C 51.29 422.47 50.52 421.12 49.80 419.79 C 49.07 418.47 48.39 417.15 47.74 415.87 C 47.10 414.59 46.50 413.32 45.93 412.09 C 45.37 410.85 44.84 409.64 44.36 408.48 C 43.88 407.31 43.43 406.18 43.03 405.10 C 42.63 404.03 42.26 402.99 41.94 402.03 C 41.62 401.08 41.33 400.17 41.09 399.38 C 40.85 398.58 40.65 397.86 40.48 397.28 C 40.32 396.70 40.20 396.22 40.12 395.91 C 40.04 395.61 40.02 400.45 40.00 395.44 C 39.98 390.42 39.98 370.83 40.00 365.82 C 40.02 360.82 40.04 365.67 40.12 365.39 C 40.20 365.11 40.32 364.66 40.48 364.13 C 40.65 363.60 40.85 362.93 41.09 362.21 C 41.33 361.48 41.62 360.64 41.94 359.77 C 42.26 358.89 42.63 357.93 43.03 356.94 C 43.43 355.95 43.88 354.91 44.36 353.84 C 44.84 352.76 45.37 351.65 45.93 350.52 C 46.50 349.38 47.10 348.21 47.74 347.03 C 48.39 345.85 49.07 344.64 49.80 343.41 C 50.52 342.19 51.29 340.95 52.09 339.70 C 52.89 338.44 53.74 337.17 54.62 335.89 C 55.50 334.61 56.42 333.32 57.39 332.02 C 58.35 330.72 59.35 329.41 60.39 328.09 C 61.43 326.77 62.51 325.45 63.63 324.12 C 64.75 322.79 65.91 321.45 67.10 320.11 C 68.30 318.77 69.54 317.42 70.81 316.08 C 72.09 314.73 73.40 313.38 74.75 312.03 C 76.10 310.68 77.49 309.33 78.92 307.98 C 80.35 306.63 81.81 305.28 83.32 303.93 C 84.82 302.58 86.36 301.24 87.94 299.89 C 89.52 298.55 91.14 297.21 92.80 295.87 C 94.45 294.53 96.14 293.19 97.87 291.86 C 99.60 290.52 101.37 289.19 103.17 287.87 C 104.98 286.54 106.82 285.21 108.69 283.89 C 110.57 282.56 112.48 281.24 114.43 279.92 C 116.38 278.59 118.37 277.27 120.39 275.94 C 122.41 274.61 124.47 273.29 126.56 271.95 C 128.66 270.62 130.78 269.28 132.95 267.94 C 135.11 266.59 137.31 265.25 139.54 263.89 C 141.78 262.53 144.04 261.16 146.35 259.79 C 148.65 258.42 150.99 257.04 153.36 255.65 C 155.73 254.26 158.13 252.86 160.57 251.46 C 163.01 250.06 165.48 248.65 167.98 247.25 C 170.49 245.84 173.03 244.42 175.60 243.02 C 178.17 241.61 180.77 240.20 183.41 238.79 C 186.04 237.39 188.71 235.99 191.41 234.60 C 194.11 233.21 196.84 231.83 199.61 230.45 C 202.37 229.08 205.16 227.71 207.99 226.35 C 210.81 224.98 213.67 223.63 216.55 222.27 C 219.44 220.92 222.36 219.57 225.30 218.20 C 228.25 216.84 231.23 215.48 234.23 214.09 C 237.24 212.71 240.27 211.31 243.34 209.89 C 246.40 208.47 249.49 207.03 252.61 205.56 C 255.74 204.09 258.89 202.59 262.06 201.07 C 265.24 199.55 268.44 197.99 271.68 196.43 C 274.91 194.87 278.17 193.27 281.45 191.69 C 284.74 190.11 288.05 188.51 291.39 186.93 C 294.73 185.36 298.09 183.79 301.49 182.26 C 304.88 180.73 308.29 179.22 311.73 177.77 C 315.17 176.32 318.64 174.90 322.13 173.54 C 325.62 172.18 329.13 170.87 332.67 169.60 C 336.21 168.33 339.77 167.12 343.36 165.91 C 346.94 164.71 350.55 163.55 354.18 162.37 C 357.81 161.20 361.47 160.05 365.14 158.86 C 368.82 157.67 372.51 156.48 376.23 155.24 C 379.95 154.00 383.69 152.73 387.45 151.42 C 391.21 150.11 394.99 148.76 398.79 147.39 C 402.60 146.02 406.42 144.60 410.26 143.20 C 414.10 141.80 417.96 140.37 421.84 138.98 C 425.71 137.59 429.61 136.20 433.53 134.86 C 437.44 133.52 441.37 132.21 445.32 130.94 C 449.27 129.66 453.24 128.44 457.23 127.22 C 461.21 126.01 465.21 124.84 469.23 123.64 C 473.25 122.45 477.28 121.28 481.33 120.04 C 485.38 118.81 489.44 117.57 493.52 116.25 C 497.60 114.94 501.69 113.58 505.80 112.17 C 509.90 110.75 514.02 109.27 518.16 107.79 C 522.29 106.30 526.44 104.75 530.60 103.27 C 534.76 101.78 538.93 100.27 543.11 98.88 C 547.30 97.48 551.49 96.12 555.70 94.90 C 559.91 93.68 564.12 92.56 568.35 91.57 C 572.58 90.57 576.82 89.71 581.07 88.93 C 585.31 88.15 589.57 87.51 593.84 86.88 C 598.10 86.25 602.38 85.72 606.66 85.16 C 610.95 84.59 615.24 84.06 619.54 83.47 C 623.84 82.87 628.14 82.26 632.46 81.59 C 636.77 80.92 641.09 80.20 645.42 79.47 C 649.74 78.73 654.07 77.94 658.41 77.20 C 662.75 76.45 667.09 75.68 671.44 74.99 C 675.78 74.30 680.13 73.64 684.49 73.05 C 688.84 72.47 693.20 71.95 697.56 71.47 C 701.93 70.99 706.29 70.59 710.66 70.17 C 715.02 69.74 719.39 69.37 723.76 68.90 C 728.13 68.44 732.51 67.98 736.88 67.40 C 741.25 66.82 745.63 66.16 750.00 65.42 C 754.37 64.68 758.75 63.82 763.12 62.94 C 767.49 62.06 771.87 61.06 776.24 60.12 C 780.61 59.18 784.98 58.18 789.34 57.31 C 793.71 56.43 798.07 55.57 802.44 54.87 C 806.80 54.17 811.16 53.57 815.51 53.10 C 819.87 52.63 824.22 52.31 828.56 52.06 C 832.91 51.81 837.25 51.71 841.59 51.61 C 845.93 51.51 850.26 51.51 854.58 51.46 C 858.91 51.40 863.23 51.37 867.54 51.27 C 871.86 51.17 876.16 51.04 880.46 50.85 C 884.76 50.67 889.05 50.41 893.34 50.16 C 897.62 49.92 901.90 49.61 906.16 49.36 C 910.43 49.11 914.69 48.84 918.93 48.67 C 923.18 48.50 927.42 48.36 931.65 48.31 C 935.88 48.26 940.09 48.29 944.30 48.37 C 948.51 48.44 952.70 48.61 956.89 48.75 C 961.07 48.90 965.24 49.11 969.40 49.25 C 973.56 49.38 977.71 49.53 981.84 49.58 C 985.98 49.63 990.10 49.63 994.20 49.54 C 998.31 49.46 1002.40 49.29 1006.48 49.08 C 1010.56 48.88 1014.62 48.58 1018.67 48.32 C 1022.72 48.06 1026.75 47.74 1030.77 47.51 C 1034.79 47.29 1038.79 47.07 1042.77 46.99 C 1046.76 46.91 1050.73 46.89 1054.68 47.02 C 1058.63 47.15 1062.56 47.40 1066.47 47.76 C 1070.39 48.12 1074.29 48.63 1078.16 49.20 C 1082.04 49.77 1085.90 50.46 1089.74 51.18 C 1093.58 51.89 1097.40 52.70 1101.21 53.49 C 1105.01 54.27 1108.79 55.10 1112.55 55.90 C 1116.31 56.69 1120.05 57.49 1123.77 58.26 C 1127.49 59.04 1131.18 59.79 1134.86 60.55 C 1138.53 61.30 1142.19 62.03 1145.82 62.80 C 1149.45 63.57 1153.06 64.33 1156.64 65.15 C 1160.23 65.97 1163.79 66.82 1167.33 67.72 C 1170.87 68.63 1174.38 69.59 1177.87 70.60 C 1181.36 71.62 1184.83 72.70 1188.27 73.81 C 1191.71 74.92 1195.12 76.09 1198.51 77.27 C 1201.91 78.44 1205.27 79.67 1208.61 80.87 C 1211.95 82.07 1215.26 83.29 1218.55 84.46 C 1221.83 85.64 1225.09 86.81 1228.32 87.92 C 1231.56 89.03 1234.76 90.11 1237.94 91.14 C 1241.11 92.17 1244.26 93.16 1247.39 94.10 C 1250.51 95.05 1253.60 95.94 1256.66 96.82 C 1259.73 97.69 1262.76 98.53 1265.77 99.36 C 1268.77 100.20 1271.75 101.01 1274.70 101.84 C 1277.64 102.67 1280.56 103.49 1283.45 104.35 C 1286.33 105.21 1289.19 106.07 1292.01 106.98 C 1294.84 107.89 1297.63 108.83 1300.39 109.80 C 1303.16 110.77 1305.89 111.78 1308.59 112.83 C 1311.29 113.87 1313.96 114.95 1316.59 116.05 C 1319.23 117.15 1321.83 118.29 1324.40 119.43 C 1326.97 120.58 1329.51 121.75 1332.02 122.93 C 1334.52 124.10 1336.99 125.29 1339.43 126.47 C 1341.87 127.65 1344.27 128.83 1346.64 130.00 C 1349.01 131.17 1351.35 132.33 1353.65 133.48 C 1355.96 134.62 1358.22 135.76 1360.46 136.87 C 1362.69 137.99 1364.89 139.08 1367.05 140.16 C 1369.22 141.24 1371.34 142.30 1373.44 143.34 C 1375.53 144.38 1377.59 145.40 1379.61 146.41 C 1381.63 147.42 1383.62 148.41 1385.57 149.38 C 1387.52 150.36 1389.43 151.32 1391.31 152.27 C 1393.18 153.22 1395.02 154.15 1396.83 155.08 C 1398.63 156.00 1400.40 156.91 1402.13 157.82 C 1403.86 158.72 1405.55 159.61 1407.20 160.50 C 1408.86 161.38 1410.48 162.25 1412.06 163.11 C 1413.64 163.98 1415.18 164.83 1416.68 165.67 C 1418.19 166.51 1419.65 167.34 1421.08 168.15 C 1422.51 168.97 1423.90 169.77 1425.25 170.56 C 1426.60 171.34 1427.91 172.12 1429.19 172.88 C 1430.46 173.63 1431.70 174.37 1432.90 175.10 C 1434.09 175.82 1435.25 176.53 1436.37 177.21 C 1437.49 177.90 1438.57 178.57 1439.61 179.21 C 1440.65 179.86 1441.65 180.49 1442.61 181.09 C 1443.58 181.69 1444.50 182.28 1445.38 182.83 C 1446.26 183.39 1447.11 183.93 1447.91 184.44 C 1448.71 184.95 1449.48 185.44 1450.20 185.91 C 1450.93 186.37 1451.61 186.81 1452.26 187.23 C 1452.90 187.64 1453.50 188.03 1454.07 188.40 C 1454.63 188.76 1455.16 189.10 1455.64 189.41 C 1456.12 189.73 1456.57 190.01 1456.97 190.27 C 1457.37 190.54 1457.74 190.77 1458.06 190.98 C 1458.38 191.19 1458.67 191.38 1458.91 191.53 C 1459.15 191.69 1459.35 191.82 1459.52 191.93 C 1459.68 192.03 1459.80 192.11 1459.88 192.16 C 1459.96 192.22 1457.15 179.09 1460.00 192.24 C 1462.85 205.40 1473.00 242.31 1477.00 271.10 C 1481.00 299.89 1483.17 332.32 1484.00 364.98 C 1484.83 397.64 1486.00 430.02 1482.00 467.08 C 1478.00 504.14 1463.69 567.27 1460.00 587.33 Z' fill='url(%23blade)'/%3E%3Cg clip-path='url(%23blade-clip)'%3E%3Cg stroke='%235ea368' fill='none' stroke-linecap='round' opacity='0.26'%3E%3Cpath d='M 73.35 380.00 Q 65.49 345.05 50.89 317.40' stroke-width='0.79'/%3E%3Cpath d='M 73.35 380.00 Q 65.49 417.93 50.89 447.93' stroke-width='0.82'/%3E%3Cpath d='M 103.10 380.00 Q 91.94 330.36 71.21 291.11' stroke-width='0.92'/%3E%3Cpath d='M 103.10 380.00 Q 91.94 433.87 71.21 476.47' stroke-width='0.95'/%3E%3Cpath d='M 131.63 380.00 Q 117.93 319.06 92.48 270.87' stroke-width='1.01'/%3E%3Cpath d='M 131.63 380.00 Q 117.93 446.13 92.48 498.43' stroke-width='1.05'/%3E%3Cpath d='M 159.40 380.00 Q 143.55 309.53 114.11 253.79' stroke-width='1.09'/%3E%3Cpath d='M 159.40 380.00 Q 143.55 456.48 114.11 516.97' stroke-width='1.14'/%3E%3Cpath d='M 186.61 380.00 Q 168.87 301.12 135.92 238.73' stroke-width='1.16'/%3E%3Cpath d='M 186.61 380.00 Q 168.87 465.61 135.92 533.31' stroke-width='1.22'/%3E%3Cpath d='M 213.38 380.00 Q 193.93 293.52 157.81 225.12' stroke-width='1.23'/%3E%3Cpath d='M 213.38 380.00 Q 193.93 473.85 157.81 548.08' stroke-width='1.29'/%3E%3Cpath d='M 239.80 380.00 Q 218.78 286.54 179.75 212.63' stroke-width='1.28'/%3E%3Cpath d='M 239.80 380.00 Q 218.78 481.42 179.75 561.64' stroke-width='1.35'/%3E%3Cpath d='M 265.92 380.00 Q 243.44 280.07 201.70 201.03' stroke-width='1.34'/%3E%3Cpath d='M 265.92 380.00 Q 243.44 488.45 201.70 574.22' stroke-width='1.41'/%3E%3Cpath d='M 291.77 380.00 Q 267.93 274.01 223.66 190.18' stroke-width='1.39'/%3E%3Cpath d='M 291.77 380.00 Q 267.93 495.03 223.66 586.00' stroke-width='1.47'/%3E%3Cpath d='M 317.40 380.00 Q 292.28 268.30 245.62 179.96' stroke-width='1.44'/%3E%3Cpath d='M 317.40 380.00 Q 292.28 501.22 245.62 597.09' stroke-width='1.52'/%3E%3Cpath d='M 342.82 380.00 Q 316.49 262.91 267.58 170.31' stroke-width='1.48'/%3E%3Cpath d='M 342.82 380.00 Q 316.49 507.07 267.58 607.57' stroke-width='1.57'/%3E%3Cpath d='M 368.06 380.00 Q 340.57 257.80 289.53 161.15' stroke-width='1.53'/%3E%3Cpath d='M 368.06 380.00 Q 340.57 512.62 289.53 617.50' stroke-width='1.61'/%3E%3Cpath d='M 393.13 380.00 Q 364.55 252.94 311.48 152.45' stroke-width='1.57'/%3E%3Cpath d='M 393.13 380.00 Q 364.55 517.89 311.48 626.94' stroke-width='1.66'/%3E%3Cpath d='M 418.04 380.00 Q 388.43 248.32 333.43 144.18' stroke-width='1.60'/%3E%3Cpath d='M 418.04 380.00 Q 388.43 522.90 333.43 635.93' stroke-width='1.70'/%3E%3Cpath d='M 442.82 380.00 Q 412.21 243.92 355.37 136.30' stroke-width='1.64'/%3E%3Cpath d='M 442.82 380.00 Q 412.21 527.68 355.37 644.48' stroke-width='1.74'/%3E%3Cpath d='M 467.46 380.00 Q 435.91 239.73 377.32 128.79' stroke-width='1.68'/%3E%3Cpath d='M 467.46 380.00 Q 435.91 532.22 377.32 652.62' stroke-width='1.78'/%3E%3Cpath d='M 491.98 380.00 Q 459.53 235.74 399.28 121.65' stroke-width='1.71'/%3E%3Cpath d='M 491.98 380.00 Q 459.53 536.55 399.28 660.37' stroke-width='1.81'/%3E%3Cpath d='M 516.38 380.00 Q 483.08 231.95 421.24 114.86' stroke-width='1.74'/%3E%3Cpath d='M 516.38 380.00 Q 483.08 540.67 421.24 667.74' stroke-width='1.85'/%3E%3Cpath d='M 540.68 380.00 Q 506.57 228.35 443.23 108.40' stroke-width='1.77'/%3E%3Cpath d='M 540.68 380.00 Q 506.57 544.58 443.23 674.75' stroke-width='1.88'/%3E%3Cpath d='M 564.87 380.00 Q 529.99 224.93 465.22 102.29' stroke-width='1.80'/%3E%3Cpath d='M 564.87 380.00 Q 529.99 548.29 465.22 681.38' stroke-width='1.91'/%3E%3Cpath d='M 588.97 380.00 Q 553.36 221.70 487.24 96.50' stroke-width='1.83'/%3E%3Cpath d='M 588.97 380.00 Q 553.36 551.79 487.24 687.66' stroke-width='1.94'/%3E%3Cpath d='M 612.97 380.00 Q 576.68 218.66 509.29 91.05' stroke-width='1.85'/%3E%3Cpath d='M 612.97 380.00 Q 576.68 555.09 509.29 693.58' stroke-width='1.97'/%3E%3Cpath d='M 636.89 380.00 Q 599.96 215.80 531.37 85.93' stroke-width='1.88'/%3E%3Cpath d='M 636.89 380.00 Q 599.96 558.20 531.37 699.13' stroke-width='2.00'/%3E%3Cpath d='M 660.72 380.00 Q 623.19 213.13 553.49 81.15' stroke-width='1.90'/%3E%3Cpath d='M 660.72 380.00 Q 623.19 561.10 553.49 704.33' stroke-width='2.02'/%3E%3Cpath d='M 684.48 380.00 Q 646.39 210.64 575.65 76.70' stroke-width='1.92'/%3E%3Cpath d='M 684.48 380.00 Q 646.39 563.79 575.65 709.16' stroke-width='2.04'/%3E%3Cpath d='M 708.16 380.00 Q 669.55 208.35 597.86 72.59' stroke-width='1.94'/%3E%3Cpath d='M 708.16 380.00 Q 669.55 566.28 597.86 713.61' stroke-width='2.06'/%3E%3Cpath d='M 731.77 380.00 Q 692.69 206.25 620.11 68.83' stroke-width='1.96'/%3E%3Cpath d='M 731.77 380.00 Q 692.69 568.56 620.11 717.70' stroke-width='2.08'/%3E%3Cpath d='M 755.30 380.00 Q 715.80 204.35 642.43 65.42' stroke-width='1.97'/%3E%3Cpath d='M 755.30 380.00 Q 715.80 570.63 642.43 721.39' stroke-width='2.10'/%3E%3Cpath d='M 778.77 380.00 Q 738.88 202.64 664.80 62.37' stroke-width='1.99'/%3E%3Cpath d='M 778.77 380.00 Q 738.88 572.47 664.80 724.70' stroke-width='2.12'/%3E%3Cpath d='M 802.18 380.00 Q 761.95 201.15 687.25 59.69' stroke-width='2.00'/%3E%3Cpath d='M 802.18 380.00 Q 761.95 574.10 687.25 727.61' stroke-width='2.13'/%3E%3Cpath d='M 825.52 380.00 Q 785.00 199.86 709.76 57.38' stroke-width='2.01'/%3E%3Cpath d='M 825.52 380.00 Q 785.00 575.50 709.76 730.12' stroke-width='2.14'/%3E%3Cpath d='M 848.80 380.00 Q 808.05 198.79 732.35 55.46' stroke-width='2.02'/%3E%3Cpath d='M 848.80 380.00 Q 808.05 576.66 732.35 732.20' stroke-width='2.15'/%3E%3Cpath d='M 872.03 380.00 Q 831.08 197.93 755.03 53.93' stroke-width='2.03'/%3E%3Cpath d='M 872.03 380.00 Q 831.08 577.59 755.03 733.86' stroke-width='2.16'/%3E%3Cpath d='M 895.19 380.00 Q 854.10 197.30 777.79 52.81' stroke-width='2.03'/%3E%3Cpath d='M 895.19 380.00 Q 854.10 578.27 777.79 735.08' stroke-width='2.16'/%3E%3Cpath d='M 918.31 380.00 Q 877.13 196.91 800.65 52.10' stroke-width='2.04'/%3E%3Cpath d='M 918.31 380.00 Q 877.13 578.70 800.65 735.85' stroke-width='2.17'/%3E%3Cpath d='M 941.37 380.00 Q 900.15 196.75 823.61 51.81' stroke-width='2.04'/%3E%3Cpath d='M 941.37 380.00 Q 900.15 578.87 823.61 736.16' stroke-width='2.17'/%3E%3Cpath d='M 964.38 380.00 Q 923.18 196.83 846.68 51.96' stroke-width='2.04'/%3E%3Cpath d='M 964.38 380.00 Q 923.18 578.78 846.68 736.00' stroke-width='2.17'/%3E%3Cpath d='M 987.34 380.00 Q 946.22 197.17 869.85 52.56' stroke-width='2.03'/%3E%3Cpath d='M 987.34 380.00 Q 946.22 578.42 869.85 735.35' stroke-width='2.17'/%3E%3Cpath d='M 1010.25 380.00 Q 969.26 197.76 893.14 53.62' stroke-width='2.03'/%3E%3Cpath d='M 1010.25 380.00 Q 969.26 577.77 893.14 734.20' stroke-width='2.16'/%3E%3Cpath d='M 1033.12 380.00 Q 992.32 198.61 916.56 55.16' stroke-width='2.02'/%3E%3Cpath d='M 1033.12 380.00 Q 992.32 576.85 916.56 732.53' stroke-width='2.15'/%3E%3Cpath d='M 1055.93 380.00 Q 1015.39 199.74 940.10 57.17' stroke-width='2.01'/%3E%3Cpath d='M 1055.93 380.00 Q 1015.39 575.62 940.10 730.34' stroke-width='2.14'/%3E%3Cpath d='M 1078.71 380.00 Q 1038.48 201.15 963.78 59.69' stroke-width='2.00'/%3E%3Cpath d='M 1078.71 380.00 Q 1038.48 574.10 963.78 727.61' stroke-width='2.13'/%3E%3Cpath d='M 1101.44 380.00 Q 1061.59 202.84 987.60 62.72' stroke-width='1.99'/%3E%3Cpath d='M 1101.44 380.00 Q 1061.59 572.26 987.60 724.33' stroke-width='2.11'/%3E%3Cpath d='M 1124.13 380.00 Q 1084.73 204.82 1011.56 66.27' stroke-width='1.97'/%3E%3Cpath d='M 1124.13 380.00 Q 1084.73 570.11 1011.56 720.47' stroke-width='2.10'/%3E%3Cpath d='M 1146.78 380.00 Q 1107.89 207.11 1035.68 70.37' stroke-width='1.95'/%3E%3Cpath d='M 1146.78 380.00 Q 1107.89 567.63 1035.68 716.03' stroke-width='2.07'/%3E%3Cpath d='M 1169.38 380.00 Q 1131.08 209.70 1059.95 75.01' stroke-width='1.93'/%3E%3Cpath d='M 1169.38 380.00 Q 1131.08 564.81 1059.95 710.98' stroke-width='2.05'/%3E%3Cpath d='M 1191.95 380.00 Q 1154.31 212.62 1084.39 80.23' stroke-width='1.90'/%3E%3Cpath d='M 1191.95 380.00 Q 1154.31 561.65 1084.39 705.32' stroke-width='2.02'/%3E%3Cpath d='M 1214.48 380.00 Q 1177.56 215.85 1109.00 86.03' stroke-width='1.88'/%3E%3Cpath d='M 1214.48 380.00 Q 1177.56 558.14 1109.00 699.03' stroke-width='1.99'/%3E%3Cpath d='M 1236.97 380.00 Q 1200.86 219.43 1133.79 92.43' stroke-width='1.85'/%3E%3Cpath d='M 1236.97 380.00 Q 1200.86 554.26 1133.79 692.08' stroke-width='1.96'/%3E%3Cpath d='M 1259.43 380.00 Q 1224.20 223.34 1158.76 99.44' stroke-width='1.81'/%3E%3Cpath d='M 1259.43 380.00 Q 1224.20 550.01 1158.76 684.48' stroke-width='1.93'/%3E%3Cpath d='M 1281.85 380.00 Q 1247.58 227.61 1183.92 107.08' stroke-width='1.78'/%3E%3Cpath d='M 1281.85 380.00 Q 1247.58 545.38 1183.92 676.19' stroke-width='1.89'/%3E%3Cpath d='M 1304.23 380.00 Q 1271.00 232.23 1209.28 115.36' stroke-width='1.74'/%3E%3Cpath d='M 1304.23 380.00 Q 1271.00 540.36 1209.28 667.19' stroke-width='1.85'/%3E%3Cpath d='M 1326.58 380.00 Q 1294.47 237.23 1234.84 124.31' stroke-width='1.70'/%3E%3Cpath d='M 1326.58 380.00 Q 1294.47 534.94 1234.84 657.49' stroke-width='1.80'/%3E%3Cpath d='M 1348.90 380.00 Q 1318.00 242.60 1260.61 133.93' stroke-width='1.65'/%3E%3Cpath d='M 1348.90 380.00 Q 1318.00 529.11 1260.61 647.05' stroke-width='1.75'/%3E%3Cpath d='M 1371.18 380.00 Q 1341.58 248.36 1286.59 144.24' stroke-width='1.60'/%3E%3Cpath d='M 1371.18 380.00 Q 1341.58 522.86 1286.59 635.85' stroke-width='1.70'/%3E%3Cpath d='M 1393.44 380.00 Q 1365.21 254.51 1312.80 155.27' stroke-width='1.55'/%3E%3Cpath d='M 1393.44 380.00 Q 1365.21 516.18 1312.80 623.89' stroke-width='1.64'/%3E%3Cpath d='M 1415.65 380.00 Q 1388.91 261.07 1339.23 167.02' stroke-width='1.50'/%3E%3Cpath d='M 1415.65 380.00 Q 1388.91 509.06 1339.23 611.14' stroke-width='1.58'/%3E%3Cpath d='M 1437.84 380.00 Q 1412.66 268.05 1365.90 179.51' stroke-width='1.44'/%3E%3Cpath d='M 1437.84 380.00 Q 1412.66 501.49 1365.90 597.58' stroke-width='1.52'/%3E%3C/g%3E%3Cg stroke='%2316351f' fill='none' stroke-width='2.4' stroke-linecap='round' opacity='0.45'%3E%3Cpath d='M 599.13 103.32 Q 638.51 235.23 680.07 341.39'/%3E%3Cpath d='M 964.61 625.86 Q 990.15 533.66 1034.27 420.98'/%3E%3C/g%3E%3Cpath d='M 40.00 387.00 C 40.25 387.01 40.51 387.02 41.52 387.04 C 42.53 387.06 44.05 387.08 46.07 387.11 C 48.09 387.14 50.62 387.18 53.64 387.22 C 56.66 387.26 60.19 387.30 64.19 387.35 C 68.20 387.39 72.70 387.44 77.68 387.49 C 82.66 387.55 88.12 387.60 94.05 387.66 C 99.97 387.72 106.37 387.78 113.22 387.84 C 120.07 387.90 127.38 387.97 135.12 388.04 C 142.86 388.10 151.06 388.17 159.66 388.24 C 168.26 388.32 177.30 388.39 186.72 388.46 C 196.14 388.54 205.99 388.62 216.19 388.70 C 226.40 388.77 237.01 388.85 247.95 388.94 C 258.90 389.02 270.23 389.10 281.86 389.18 C 293.50 389.27 305.50 389.35 317.78 389.44 C 330.06 389.53 342.68 389.61 355.55 389.70 C 368.42 389.79 381.60 389.88 395.00 389.97 C 408.40 390.06 422.09 390.15 435.98 390.24 C 449.86 390.33 463.99 390.42 478.29 390.51 C 492.60 390.61 507.12 390.70 521.78 390.79 C 536.44 390.88 551.29 390.98 566.24 391.07 C 581.19 391.16 596.30 391.25 611.49 391.35 C 626.67 391.44 641.98 391.53 657.33 391.62 C 672.67 391.71 688.12 391.81 703.56 391.90 C 719.01 391.99 734.52 392.08 750.00 392.17 C 765.48 392.26 780.99 392.35 796.44 392.44 C 811.88 392.53 827.33 392.61 842.67 392.70 C 858.02 392.79 873.33 392.88 888.51 392.96 C 903.70 393.05 918.81 393.13 933.76 393.21 C 948.71 393.30 963.56 393.38 978.22 393.46 C 992.88 393.54 1007.40 393.62 1021.71 393.70 C 1036.01 393.78 1050.14 393.85 1064.02 393.93 C 1077.91 394.00 1091.60 394.08 1105.00 394.15 C 1118.40 394.22 1131.58 394.29 1144.45 394.36 C 1157.32 394.43 1169.94 394.50 1182.22 394.56 C 1194.50 394.63 1206.50 394.69 1218.14 394.75 C 1229.77 394.81 1241.10 394.87 1252.05 394.93 C 1262.99 394.99 1273.60 395.04 1283.81 395.09 C 1294.01 395.15 1303.86 395.20 1313.28 395.25 C 1322.70 395.30 1331.74 395.34 1340.34 395.39 C 1348.94 395.43 1357.14 395.47 1364.88 395.51 C 1372.62 395.55 1379.93 395.59 1386.78 395.63 C 1393.63 395.66 1400.03 395.69 1405.95 395.72 C 1411.88 395.76 1417.34 395.78 1422.32 395.81 C 1427.30 395.83 1431.80 395.86 1435.81 395.88 C 1439.81 395.90 1443.34 395.92 1446.36 395.93 C 1449.38 395.95 1451.91 395.96 1453.93 395.97 C 1455.95 395.98 1457.47 395.99 1458.48 395.99 C 1459.49 396.00 1459.75 396.00 1460.00 396.00' fill='none' stroke='%2314301c' stroke-width='30' stroke-linecap='round' opacity='0.20' filter='url(%23soften)'/%3E%3Crect x='0' y='0' width='1500' height='760' fill='url(%23sheen)'/%3E%3Crect x='0' y='0' width='1500' height='760' filter='url(%23grain)' opacity='0.5'/%3E%3C/g%3E%3Cpath d='M 1460.00 386.50 C 1459.89 388.62 1459.77 386.50 1459.32 386.50 C 1458.87 386.50 1458.20 386.49 1457.30 386.49 C 1456.40 386.49 1455.27 386.48 1453.93 386.48 C 1452.58 386.47 1451.01 386.46 1449.21 386.46 C 1447.42 386.45 1445.40 386.44 1443.17 386.43 C 1440.94 386.42 1438.48 386.41 1435.81 386.40 C 1433.14 386.39 1430.24 386.38 1427.14 386.37 C 1424.03 386.36 1420.71 386.34 1417.18 386.33 C 1413.65 386.32 1409.91 386.30 1405.95 386.29 C 1402.00 386.27 1397.84 386.25 1393.48 386.24 C 1389.12 386.22 1384.54 386.20 1379.78 386.18 C 1375.01 386.16 1370.04 386.14 1364.88 386.12 C 1359.72 386.10 1354.35 386.08 1348.81 386.06 C 1343.26 386.04 1337.52 386.01 1331.60 385.99 C 1325.68 385.97 1319.57 385.94 1313.28 385.92 C 1307.00 385.89 1300.53 385.87 1293.89 385.84 C 1287.26 385.81 1280.44 385.79 1273.47 385.76 C 1266.49 385.73 1259.35 385.70 1252.05 385.67 C 1244.75 385.64 1237.28 385.61 1229.67 385.58 C 1222.06 385.55 1214.29 385.52 1206.38 385.49 C 1198.47 385.46 1190.41 385.42 1182.22 385.39 C 1174.03 385.36 1165.70 385.32 1157.24 385.29 C 1148.78 385.25 1140.19 385.22 1131.48 385.18 C 1122.78 385.15 1113.94 385.11 1105.00 385.08 C 1096.06 385.04 1087.00 385.00 1077.84 384.97 C 1068.68 384.93 1059.42 384.89 1050.06 384.85 C 1040.70 384.81 1031.24 384.78 1021.71 384.74 C 1012.17 384.70 1002.53 384.66 992.83 384.62 C 983.13 384.58 973.35 384.54 963.50 384.50 C 953.66 384.46 943.73 384.41 933.76 384.37 C 923.79 384.33 913.75 384.29 903.67 384.25 C 893.59 384.21 883.46 384.16 873.29 384.12 C 863.12 384.08 852.91 384.04 842.67 383.99 C 832.44 383.95 822.16 383.91 811.88 383.87 C 801.60 383.82 791.28 383.78 780.97 383.73 C 770.66 383.69 760.32 383.65 750.00 383.60 C 739.68 383.56 729.34 383.52 719.03 383.47 C 708.72 383.43 698.40 383.38 688.12 383.34 C 677.84 383.30 667.56 383.25 657.33 383.21 C 647.09 383.16 636.88 383.12 626.71 383.08 C 616.54 383.03 606.41 382.99 596.33 382.94 C 586.25 382.90 576.21 382.86 566.24 382.81 C 556.27 382.77 546.34 382.73 536.50 382.68 C 526.65 382.64 516.87 382.60 507.17 382.55 C 497.47 382.51 487.83 382.47 478.29 382.43 C 468.76 382.38 459.30 382.34 449.94 382.30 C 440.58 382.26 431.32 382.22 422.16 382.17 C 413.00 382.13 403.94 382.09 395.00 382.05 C 386.06 382.01 377.22 381.97 368.52 381.93 C 359.81 381.89 351.22 381.85 342.76 381.81 C 334.30 381.77 325.97 381.74 317.78 381.70 C 309.59 381.66 301.53 381.62 293.62 381.58 C 285.71 381.55 277.94 381.51 270.33 381.47 C 262.72 381.44 255.25 381.40 247.95 381.37 C 240.65 381.33 233.51 381.30 226.53 381.26 C 219.56 381.23 212.74 381.20 206.11 381.16 C 199.47 381.13 193.00 381.10 186.72 381.07 C 180.43 381.04 174.32 381.01 168.40 380.98 C 162.48 380.95 156.74 380.92 151.19 380.89 C 145.65 380.86 140.28 380.83 135.12 380.81 C 129.96 380.78 124.99 380.76 120.22 380.73 C 115.46 380.70 110.88 380.68 106.52 380.66 C 102.16 380.63 98.00 380.61 94.05 380.59 C 90.09 380.57 86.35 380.55 82.82 380.53 C 79.29 380.51 75.97 380.49 72.86 380.47 C 69.76 380.45 66.86 380.44 64.19 380.42 C 61.52 380.40 59.06 380.39 56.83 380.38 C 54.60 380.36 52.58 380.35 50.79 380.34 C 48.99 380.33 47.42 380.32 46.07 380.31 C 44.73 380.30 43.60 380.29 42.70 380.28 C 41.80 380.28 41.13 380.27 40.68 380.27 C 40.23 380.26 40.11 380.35 40.00 380.26 C 39.89 380.17 39.89 379.84 40.00 379.75 C 40.11 379.66 40.23 379.75 40.68 379.74 C 41.13 379.74 41.80 379.73 42.70 379.73 C 43.60 379.72 44.73 379.71 46.07 379.71 C 47.42 379.70 48.99 379.69 50.79 379.68 C 52.58 379.66 54.60 379.65 56.83 379.64 C 59.06 379.63 61.52 379.61 64.19 379.60 C 66.86 379.58 69.76 379.56 72.86 379.55 C 75.97 379.53 79.29 379.51 82.82 379.49 C 86.35 379.47 90.09 379.45 94.05 379.43 C 98.00 379.41 102.16 379.39 106.52 379.37 C 110.88 379.35 115.46 379.32 120.22 379.30 C 124.99 379.27 129.96 379.25 135.12 379.22 C 140.28 379.20 145.65 379.17 151.19 379.14 C 156.74 379.12 162.48 379.09 168.40 379.06 C 174.32 379.03 180.43 379.00 186.72 378.97 C 193.00 378.94 199.47 378.91 206.11 378.88 C 212.74 378.85 219.56 378.82 226.53 378.78 C 233.51 378.75 240.65 378.72 247.95 378.69 C 255.25 378.65 262.72 378.62 270.33 378.58 C 277.94 378.55 285.71 378.51 293.62 378.48 C 301.53 378.44 309.59 378.40 317.78 378.37 C 325.97 378.33 334.30 378.29 342.76 378.26 C 351.22 378.22 359.81 378.18 368.52 378.14 C 377.22 378.10 386.06 378.07 395.00 378.03 C 403.94 377.99 413.00 377.95 422.16 377.91 C 431.32 377.87 440.58 377.83 449.94 377.79 C 459.30 377.75 468.76 377.71 478.29 377.67 C 487.83 377.63 497.47 377.59 507.17 377.54 C 516.87 377.50 526.65 377.46 536.50 377.42 C 546.34 377.38 556.27 377.34 566.24 377.29 C 576.21 377.25 586.25 377.21 596.33 377.17 C 606.41 377.13 616.54 377.08 626.71 377.04 C 636.88 377.00 647.09 376.96 657.33 376.91 C 667.56 376.87 677.84 376.83 688.12 376.79 C 698.40 376.75 708.72 376.70 719.03 376.66 C 729.34 376.62 739.68 376.58 750.00 376.53 C 760.32 376.49 770.66 376.45 780.97 376.41 C 791.28 376.37 801.60 376.33 811.88 376.28 C 822.16 376.24 832.44 376.20 842.67 376.16 C 852.91 376.12 863.12 376.08 873.29 376.04 C 883.46 376.00 893.59 375.95 903.67 375.91 C 913.75 375.87 923.79 375.83 933.76 375.79 C 943.73 375.75 953.66 375.72 963.50 375.68 C 973.35 375.64 983.13 375.60 992.83 375.56 C 1002.53 375.52 1012.17 375.48 1021.71 375.45 C 1031.24 375.41 1040.70 375.37 1050.06 375.33 C 1059.42 375.30 1068.68 375.26 1077.84 375.23 C 1087.00 375.19 1096.06 375.15 1105.00 375.12 C 1113.94 375.08 1122.78 375.05 1131.48 375.02 C 1140.19 374.98 1148.78 374.95 1157.24 374.91 C 1165.70 374.88 1174.03 374.85 1182.22 374.82 C 1190.41 374.79 1198.47 374.75 1206.38 374.72 C 1214.29 374.69 1222.06 374.66 1229.67 374.63 C 1237.28 374.60 1244.75 374.58 1252.05 374.55 C 1259.35 374.52 1266.49 374.49 1273.47 374.46 C 1280.44 374.44 1287.26 374.41 1293.89 374.39 C 1300.53 374.36 1307.00 374.34 1313.28 374.31 C 1319.57 374.29 1325.68 374.26 1331.60 374.24 C 1337.52 374.22 1343.26 374.20 1348.81 374.17 C 1354.35 374.15 1359.72 374.13 1364.88 374.11 C 1370.04 374.09 1375.01 374.07 1379.78 374.06 C 1384.54 374.04 1389.12 374.02 1393.48 374.00 C 1397.84 373.99 1402.00 373.97 1405.95 373.96 C 1409.91 373.94 1413.65 373.93 1417.18 373.91 C 1420.71 373.90 1424.03 373.89 1427.14 373.88 C 1430.24 373.86 1433.14 373.85 1435.81 373.84 C 1438.48 373.83 1440.94 373.82 1443.17 373.81 C 1445.40 373.81 1447.42 373.80 1449.21 373.79 C 1451.01 373.78 1452.58 373.78 1453.93 373.77 C 1455.27 373.77 1456.40 373.76 1457.30 373.76 C 1458.20 373.76 1458.87 373.75 1459.32 373.75 C 1459.77 373.75 1459.89 371.63 1460.00 373.75 C 1460.11 375.87 1460.11 384.38 1460.00 386.50 Z' fill='url(%23rib)' opacity='0.55'/%3E%3Cpath d='M 1460.00 587.33 C 1456.31 607.38 1459.96 587.36 1459.88 587.41 C 1459.80 587.47 1459.68 587.55 1459.52 587.66 C 1459.35 587.77 1459.15 587.91 1458.91 588.07 C 1458.67 588.24 1458.38 588.43 1458.06 588.65 C 1457.74 588.88 1457.37 589.12 1456.97 589.40 C 1456.57 589.68 1456.12 589.98 1455.64 590.31 C 1455.16 590.64 1454.63 591.00 1454.07 591.39 C 1453.50 591.78 1452.90 592.19 1452.26 592.64 C 1451.61 593.08 1450.93 593.55 1450.20 594.05 C 1449.48 594.55 1448.71 595.07 1447.91 595.63 C 1447.11 596.18 1446.26 596.76 1445.38 597.37 C 1444.50 597.98 1443.58 598.62 1442.61 599.29 C 1441.65 599.96 1440.65 600.65 1439.61 601.37 C 1438.57 602.10 1437.49 602.85 1436.37 603.62 C 1435.25 604.40 1434.09 605.21 1432.90 606.04 C 1431.70 606.87 1430.46 607.73 1429.19 608.61 C 1427.91 609.49 1426.60 610.40 1425.25 611.33 C 1423.90 612.26 1422.51 613.21 1421.08 614.18 C 1419.65 615.15 1418.19 616.15 1416.68 617.15 C 1415.18 618.16 1413.64 619.18 1412.06 620.22 C 1410.48 621.25 1408.86 622.30 1407.20 623.35 C 1405.55 624.40 1403.86 625.46 1402.13 626.52 C 1400.40 627.57 1398.63 628.64 1396.83 629.70 C 1395.02 630.75 1393.18 631.81 1391.31 632.86 C 1389.43 633.90 1387.52 634.95 1385.57 635.98 C 1383.62 637.01 1381.63 638.04 1379.61 639.06 C 1377.59 640.08 1375.53 641.08 1373.44 642.09 C 1371.34 643.10 1369.22 644.10 1367.05 645.10 C 1364.89 646.10 1362.69 647.10 1360.46 648.11 C 1358.22 649.12 1355.96 650.13 1353.65 651.17 C 1351.35 652.20 1349.01 653.24 1346.64 654.30 C 1344.27 655.36 1341.87 656.44 1339.43 657.53 C 1336.99 658.63 1334.52 659.75 1332.02 660.88 C 1329.51 662.00 1326.97 663.15 1324.40 664.30 C 1321.83 665.44 1319.23 666.60 1316.59 667.74 C 1313.96 668.88 1311.29 670.02 1308.59 671.12 C 1305.89 672.21 1303.16 673.30 1300.39 674.33 C 1297.63 675.36 1294.84 676.36 1292.01 677.30 C 1289.19 678.25 1286.33 679.14 1283.45 679.99 C 1280.56 680.84 1277.64 681.63 1274.70 682.40 C 1271.75 683.16 1268.77 683.88 1265.77 684.60 C 1262.76 685.33 1259.73 686.01 1256.66 686.74 C 1253.60 687.47 1250.51 688.18 1247.39 688.96 C 1244.26 689.74 1241.11 690.54 1237.94 691.41 C 1234.76 692.27 1231.56 693.19 1228.32 694.14 C 1225.09 695.10 1221.83 696.12 1218.55 697.15 C 1215.26 698.18 1211.95 699.26 1208.61 700.31 C 1205.27 701.35 1201.91 702.43 1198.51 703.44 C 1195.12 704.44 1191.71 705.44 1188.27 706.36 C 1184.83 707.28 1181.36 708.14 1177.87 708.96 C 1174.38 709.78 1170.87 710.52 1167.33 711.27 C 1163.79 712.01 1160.23 712.68 1156.64 713.41 C 1153.06 714.14 1149.45 714.84 1145.82 715.62 C 1142.19 716.41 1138.53 717.22 1134.86 718.11 C 1131.18 719.01 1127.49 719.98 1123.77 720.99 C 1120.05 722.00 1116.31 723.10 1112.55 724.17 C 1108.79 725.24 1105.01 726.38 1101.21 727.41 C 1097.40 728.44 1093.58 729.48 1089.74 730.37 C 1085.90 731.26 1082.04 732.07 1078.16 732.75 C 1074.29 733.43 1070.39 733.97 1066.47 734.44 C 1062.56 734.91 1058.63 735.24 1054.68 735.57 C 1050.73 735.90 1046.76 736.13 1042.77 736.42 C 1038.79 736.72 1034.79 736.99 1030.77 737.34 C 1026.75 737.69 1022.72 738.09 1018.67 738.51 C 1014.62 738.94 1010.56 739.44 1006.48 739.88 C 1002.40 740.33 998.31 740.82 994.20 741.17 C 990.10 741.52 985.98 741.84 981.84 741.99 C 977.71 742.14 973.56 742.18 969.40 742.10 C 965.24 742.02 961.07 741.77 956.89 741.51 C 952.70 741.25 948.51 740.85 944.30 740.54 C 940.09 740.23 935.88 739.88 931.65 739.66 C 927.42 739.44 923.18 739.29 918.93 739.25 C 914.69 739.20 910.43 739.29 906.16 739.40 C 901.90 739.50 897.62 739.74 893.34 739.89 C 889.05 740.04 884.76 740.24 880.46 740.29 C 876.16 740.34 871.86 740.34 867.54 740.21 C 863.23 740.09 858.91 739.83 854.58 739.53 C 850.26 739.24 845.93 738.81 841.59 738.46 C 837.25 738.10 832.91 737.69 828.56 737.40 C 824.22 737.11 819.87 736.87 815.51 736.72 C 811.16 736.56 806.80 736.54 802.44 736.49 C 798.07 736.45 793.71 736.51 789.34 736.45 C 784.98 736.38 780.61 736.33 776.24 736.08 C 771.87 735.83 767.49 735.47 763.12 734.94 C 758.75 734.40 754.37 733.67 750.00 732.85 C 745.63 732.03 741.25 731.02 736.88 730.03 C 732.51 729.04 728.13 727.94 723.76 726.92 C 719.39 725.91 715.02 724.89 710.66 723.95 C 706.29 723.00 701.93 722.13 697.56 721.25 C 693.20 720.37 688.84 719.56 684.49 718.64 C 680.13 717.73 675.78 716.81 671.44 715.74 C 667.09 714.67 662.75 713.50 658.41 712.21 C 654.07 710.91 649.74 709.46 645.42 707.97 C 641.09 706.49 636.77 704.86 632.46 703.30 C 628.14 701.75 623.84 700.13 619.54 698.64 C 615.24 697.16 610.95 695.72 606.66 694.41 C 602.38 693.09 598.10 691.90 593.84 690.76 C 589.57 689.61 585.31 688.60 581.07 687.55 C 576.82 686.50 572.58 685.52 568.35 684.44 C 564.12 683.37 559.91 682.28 555.70 681.09 C 551.49 679.91 547.30 678.65 543.11 677.35 C 538.93 676.06 534.76 674.67 530.60 673.32 C 526.44 671.97 522.29 670.58 518.16 669.27 C 514.02 667.97 509.90 666.69 505.80 665.51 C 501.69 664.33 497.60 663.23 493.52 662.17 C 489.44 661.12 485.38 660.16 481.33 659.18 C 477.28 658.19 473.25 657.27 469.23 656.26 C 465.21 655.24 461.21 654.22 457.23 653.09 C 453.24 651.96 449.27 650.75 445.32 649.46 C 441.37 648.17 437.44 646.76 433.53 645.33 C 429.61 643.90 425.71 642.37 421.84 640.86 C 417.96 639.36 414.10 637.80 410.26 636.30 C 406.42 634.80 402.60 633.30 398.79 631.86 C 394.99 630.42 391.21 629.03 387.45 627.66 C 383.69 626.28 379.95 624.97 376.23 623.63 C 372.51 622.29 368.82 620.99 365.14 619.63 C 361.47 618.27 357.81 616.91 354.18 615.48 C 350.55 614.05 346.94 612.57 343.36 611.05 C 339.77 609.52 336.21 607.93 332.67 606.32 C 329.13 604.72 325.62 603.05 322.13 601.40 C 318.64 599.76 315.17 598.08 311.73 596.44 C 308.29 594.81 304.88 593.18 301.49 591.60 C 298.09 590.03 294.73 588.49 291.39 586.99 C 288.05 585.50 284.74 584.05 281.45 582.63 C 278.17 581.22 274.91 579.85 271.68 578.48 C 268.44 577.11 265.24 575.78 262.06 574.43 C 258.89 573.08 255.74 571.74 252.61 570.37 C 249.49 569.00 246.40 567.62 243.34 566.21 C 240.27 564.80 237.24 563.37 234.23 561.92 C 231.23 560.46 228.25 558.98 225.30 557.49 C 222.36 556.00 219.44 554.48 216.55 552.97 C 213.67 551.46 210.81 549.94 207.99 548.43 C 205.16 546.92 202.37 545.41 199.61 543.92 C 196.84 542.43 194.11 540.95 191.41 539.49 C 188.71 538.03 186.04 536.58 183.41 535.14 C 180.77 533.71 178.17 532.29 175.60 530.87 C 173.03 529.45 170.49 528.05 167.98 526.64 C 165.48 525.23 163.01 523.82 160.57 522.41 C 158.13 520.99 155.73 519.57 153.36 518.13 C 150.99 516.70 148.65 515.26 146.35 513.79 C 144.04 512.33 141.78 510.86 139.54 509.37 C 137.31 507.88 135.11 506.37 132.95 504.85 C 130.78 503.34 128.66 501.80 126.56 500.26 C 124.47 498.72 122.41 497.17 120.39 495.61 C 118.37 494.05 116.38 492.49 114.43 490.92 C 112.48 489.35 110.57 487.78 108.69 486.21 C 106.82 484.65 104.98 483.08 103.17 481.51 C 101.37 479.95 99.60 478.39 97.87 476.83 C 96.14 475.27 94.45 473.72 92.80 472.18 C 91.14 470.63 89.52 469.09 87.94 467.56 C 86.36 466.03 84.82 464.50 83.32 462.99 C 81.81 461.47 80.35 459.96 78.92 458.45 C 77.49 456.95 76.10 455.45 74.75 453.96 C 73.40 452.47 72.09 450.98 70.81 449.50 C 69.54 448.03 68.30 446.56 67.10 445.09 C 65.91 443.63 64.75 442.18 63.63 440.73 C 62.51 439.28 61.43 437.84 60.39 436.41 C 59.35 434.98 58.35 433.56 57.39 432.15 C 56.42 430.74 55.50 429.34 54.62 427.95 C 53.74 426.56 52.89 425.19 52.09 423.83 C 51.29 422.47 50.52 421.12 49.80 419.79 C 49.07 418.47 48.39 417.15 47.74 415.87 C 47.10 414.59 46.50 413.32 45.93 412.09 C 45.37 410.85 44.84 409.64 44.36 408.48 C 43.88 407.31 43.43 406.18 43.03 405.10 C 42.63 404.03 42.26 402.99 41.94 402.03 C 41.62 401.08 41.33 400.17 41.09 399.38 C 40.85 398.58 40.65 397.86 40.48 397.28 C 40.32 396.70 40.20 396.22 40.12 395.91 C 40.04 395.61 40.02 400.45 40.00 395.44 C 39.98 390.42 39.98 370.83 40.00 365.82 C 40.02 360.82 40.04 365.67 40.12 365.39 C 40.20 365.11 40.32 364.66 40.48 364.13 C 40.65 363.60 40.85 362.93 41.09 362.21 C 41.33 361.48 41.62 360.64 41.94 359.77 C 42.26 358.89 42.63 357.93 43.03 356.94 C 43.43 355.95 43.88 354.91 44.36 353.84 C 44.84 352.76 45.37 351.65 45.93 350.52 C 46.50 349.38 47.10 348.21 47.74 347.03 C 48.39 345.85 49.07 344.64 49.80 343.41 C 50.52 342.19 51.29 340.95 52.09 339.70 C 52.89 338.44 53.74 337.17 54.62 335.89 C 55.50 334.61 56.42 333.32 57.39 332.02 C 58.35 330.72 59.35 329.41 60.39 328.09 C 61.43 326.77 62.51 325.45 63.63 324.12 C 64.75 322.79 65.91 321.45 67.10 320.11 C 68.30 318.77 69.54 317.42 70.81 316.08 C 72.09 314.73 73.40 313.38 74.75 312.03 C 76.10 310.68 77.49 309.33 78.92 307.98 C 80.35 306.63 81.81 305.28 83.32 303.93 C 84.82 302.58 86.36 301.24 87.94 299.89 C 89.52 298.55 91.14 297.21 92.80 295.87 C 94.45 294.53 96.14 293.19 97.87 291.86 C 99.60 290.52 101.37 289.19 103.17 287.87 C 104.98 286.54 106.82 285.21 108.69 283.89 C 110.57 282.56 112.48 281.24 114.43 279.92 C 116.38 278.59 118.37 277.27 120.39 275.94 C 122.41 274.61 124.47 273.29 126.56 271.95 C 128.66 270.62 130.78 269.28 132.95 267.94 C 135.11 266.59 137.31 265.25 139.54 263.89 C 141.78 262.53 144.04 261.16 146.35 259.79 C 148.65 258.42 150.99 257.04 153.36 255.65 C 155.73 254.26 158.13 252.86 160.57 251.46 C 163.01 250.06 165.48 248.65 167.98 247.25 C 170.49 245.84 173.03 244.42 175.60 243.02 C 178.17 241.61 180.77 240.20 183.41 238.79 C 186.04 237.39 188.71 235.99 191.41 234.60 C 194.11 233.21 196.84 231.83 199.61 230.45 C 202.37 229.08 205.16 227.71 207.99 226.35 C 210.81 224.98 213.67 223.63 216.55 222.27 C 219.44 220.92 222.36 219.57 225.30 218.20 C 228.25 216.84 231.23 215.48 234.23 214.09 C 237.24 212.71 240.27 211.31 243.34 209.89 C 246.40 208.47 249.49 207.03 252.61 205.56 C 255.74 204.09 258.89 202.59 262.06 201.07 C 265.24 199.55 268.44 197.99 271.68 196.43 C 274.91 194.87 278.17 193.27 281.45 191.69 C 284.74 190.11 288.05 188.51 291.39 186.93 C 294.73 185.36 298.09 183.79 301.49 182.26 C 304.88 180.73 308.29 179.22 311.73 177.77 C 315.17 176.32 318.64 174.90 322.13 173.54 C 325.62 172.18 329.13 170.87 332.67 169.60 C 336.21 168.33 339.77 167.12 343.36 165.91 C 346.94 164.71 350.55 163.55 354.18 162.37 C 357.81 161.20 361.47 160.05 365.14 158.86 C 368.82 157.67 372.51 156.48 376.23 155.24 C 379.95 154.00 383.69 152.73 387.45 151.42 C 391.21 150.11 394.99 148.76 398.79 147.39 C 402.60 146.02 406.42 144.60 410.26 143.20 C 414.10 141.80 417.96 140.37 421.84 138.98 C 425.71 137.59 429.61 136.20 433.53 134.86 C 437.44 133.52 441.37 132.21 445.32 130.94 C 449.27 129.66 453.24 128.44 457.23 127.22 C 461.21 126.01 465.21 124.84 469.23 123.64 C 473.25 122.45 477.28 121.28 481.33 120.04 C 485.38 118.81 489.44 117.57 493.52 116.25 C 497.60 114.94 501.69 113.58 505.80 112.17 C 509.90 110.75 514.02 109.27 518.16 107.79 C 522.29 106.30 526.44 104.75 530.60 103.27 C 534.76 101.78 538.93 100.27 543.11 98.88 C 547.30 97.48 551.49 96.12 555.70 94.90 C 559.91 93.68 564.12 92.56 568.35 91.57 C 572.58 90.57 576.82 89.71 581.07 88.93 C 585.31 88.15 589.57 87.51 593.84 86.88 C 598.10 86.25 602.38 85.72 606.66 85.16 C 610.95 84.59 615.24 84.06 619.54 83.47 C 623.84 82.87 628.14 82.26 632.46 81.59 C 636.77 80.92 641.09 80.20 645.42 79.47 C 649.74 78.73 654.07 77.94 658.41 77.20 C 662.75 76.45 667.09 75.68 671.44 74.99 C 675.78 74.30 680.13 73.64 684.49 73.05 C 688.84 72.47 693.20 71.95 697.56 71.47 C 701.93 70.99 706.29 70.59 710.66 70.17 C 715.02 69.74 719.39 69.37 723.76 68.90 C 728.13 68.44 732.51 67.98 736.88 67.40 C 741.25 66.82 745.63 66.16 750.00 65.42 C 754.37 64.68 758.75 63.82 763.12 62.94 C 767.49 62.06 771.87 61.06 776.24 60.12 C 780.61 59.18 784.98 58.18 789.34 57.31 C 793.71 56.43 798.07 55.57 802.44 54.87 C 806.80 54.17 811.16 53.57 815.51 53.10 C 819.87 52.63 824.22 52.31 828.56 52.06 C 832.91 51.81 837.25 51.71 841.59 51.61 C 845.93 51.51 850.26 51.51 854.58 51.46 C 858.91 51.40 863.23 51.37 867.54 51.27 C 871.86 51.17 876.16 51.04 880.46 50.85 C 884.76 50.67 889.05 50.41 893.34 50.16 C 897.62 49.92 901.90 49.61 906.16 49.36 C 910.43 49.11 914.69 48.84 918.93 48.67 C 923.18 48.50 927.42 48.36 931.65 48.31 C 935.88 48.26 940.09 48.29 944.30 48.37 C 948.51 48.44 952.70 48.61 956.89 48.75 C 961.07 48.90 965.24 49.11 969.40 49.25 C 973.56 49.38 977.71 49.53 981.84 49.58 C 985.98 49.63 990.10 49.63 994.20 49.54 C 998.31 49.46 1002.40 49.29 1006.48 49.08 C 1010.56 48.88 1014.62 48.58 1018.67 48.32 C 1022.72 48.06 1026.75 47.74 1030.77 47.51 C 1034.79 47.29 1038.79 47.07 1042.77 46.99 C 1046.76 46.91 1050.73 46.89 1054.68 47.02 C 1058.63 47.15 1062.56 47.40 1066.47 47.76 C 1070.39 48.12 1074.29 48.63 1078.16 49.20 C 1082.04 49.77 1085.90 50.46 1089.74 51.18 C 1093.58 51.89 1097.40 52.70 1101.21 53.49 C 1105.01 54.27 1108.79 55.10 1112.55 55.90 C 1116.31 56.69 1120.05 57.49 1123.77 58.26 C 1127.49 59.04 1131.18 59.79 1134.86 60.55 C 1138.53 61.30 1142.19 62.03 1145.82 62.80 C 1149.45 63.57 1153.06 64.33 1156.64 65.15 C 1160.23 65.97 1163.79 66.82 1167.33 67.72 C 1170.87 68.63 1174.38 69.59 1177.87 70.60 C 1181.36 71.62 1184.83 72.70 1188.27 73.81 C 1191.71 74.92 1195.12 76.09 1198.51 77.27 C 1201.91 78.44 1205.27 79.67 1208.61 80.87 C 1211.95 82.07 1215.26 83.29 1218.55 84.46 C 1221.83 85.64 1225.09 86.81 1228.32 87.92 C 1231.56 89.03 1234.76 90.11 1237.94 91.14 C 1241.11 92.17 1244.26 93.16 1247.39 94.10 C 1250.51 95.05 1253.60 95.94 1256.66 96.82 C 1259.73 97.69 1262.76 98.53 1265.77 99.36 C 1268.77 100.20 1271.75 101.01 1274.70 101.84 C 1277.64 102.67 1280.56 103.49 1283.45 104.35 C 1286.33 105.21 1289.19 106.07 1292.01 106.98 C 1294.84 107.89 1297.63 108.83 1300.39 109.80 C 1303.16 110.77 1305.89 111.78 1308.59 112.83 C 1311.29 113.87 1313.96 114.95 1316.59 116.05 C 1319.23 117.15 1321.83 118.29 1324.40 119.43 C 1326.97 120.58 1329.51 121.75 1332.02 122.93 C 1334.52 124.10 1336.99 125.29 1339.43 126.47 C 1341.87 127.65 1344.27 128.83 1346.64 130.00 C 1349.01 131.17 1351.35 132.33 1353.65 133.48 C 1355.96 134.62 1358.22 135.76 1360.46 136.87 C 1362.69 137.99 1364.89 139.08 1367.05 140.16 C 1369.22 141.24 1371.34 142.30 1373.44 143.34 C 1375.53 144.38 1377.59 145.40 1379.61 146.41 C 1381.63 147.42 1383.62 148.41 1385.57 149.38 C 1387.52 150.36 1389.43 151.32 1391.31 152.27 C 1393.18 153.22 1395.02 154.15 1396.83 155.08 C 1398.63 156.00 1400.40 156.91 1402.13 157.82 C 1403.86 158.72 1405.55 159.61 1407.20 160.50 C 1408.86 161.38 1410.48 162.25 1412.06 163.11 C 1413.64 163.98 1415.18 164.83 1416.68 165.67 C 1418.19 166.51 1419.65 167.34 1421.08 168.15 C 1422.51 168.97 1423.90 169.77 1425.25 170.56 C 1426.60 171.34 1427.91 172.12 1429.19 172.88 C 1430.46 173.63 1431.70 174.37 1432.90 175.10 C 1434.09 175.82 1435.25 176.53 1436.37 177.21 C 1437.49 177.90 1438.57 178.57 1439.61 179.21 C 1440.65 179.86 1441.65 180.49 1442.61 181.09 C 1443.58 181.69 1444.50 182.28 1445.38 182.83 C 1446.26 183.39 1447.11 183.93 1447.91 184.44 C 1448.71 184.95 1449.48 185.44 1450.20 185.91 C 1450.93 186.37 1451.61 186.81 1452.26 187.23 C 1452.90 187.64 1453.50 188.03 1454.07 188.40 C 1454.63 188.76 1455.16 189.10 1455.64 189.41 C 1456.12 189.73 1456.57 190.01 1456.97 190.27 C 1457.37 190.54 1457.74 190.77 1458.06 190.98 C 1458.38 191.19 1458.67 191.38 1458.91 191.53 C 1459.15 191.69 1459.35 191.82 1459.52 191.93 C 1459.68 192.03 1459.80 192.11 1459.88 192.16 C 1459.96 192.22 1457.15 179.09 1460.00 192.24 C 1462.85 205.40 1473.00 242.31 1477.00 271.10 C 1481.00 299.89 1483.17 332.32 1484.00 364.98 C 1484.83 397.64 1486.00 430.02 1482.00 467.08 C 1478.00 504.14 1463.69 567.27 1460.00 587.33 Z' fill='none' stroke='%2317381f' stroke-width='2.5' opacity='0.55'/%3E%3C/g%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}
