:root {
  --bk-color-page: #cfc7bb;
  --bk-color-bg: #eee8df;
  --bk-color-surf: #f8f5f0;
  --bk-color-surf2: #e7e0d5;
  --bk-color-ink: #172225;
  --bk-color-ink2: #465155;
  --bk-color-ink3: #5a6366;
  --bk-color-line: #dad2c6;
  --bk-color-pri: #15383d;
  --bk-color-on-pri: #f3f1ec;
  --bk-color-water: #a9d1d1;
  --bk-color-water-ink: #1e5256;
  --bk-color-tuff: #9f5236;
  --bk-color-tuff-bg: #f1ddd2;
  --bk-color-ok: #2b6549;
  --bk-color-ok-bg: #dceae0;
  --bk-color-warn: #7c500d;
  --bk-color-warn-bg: #f4e6cb;
  --bk-color-err: #a0372b;
  --bk-color-err-bg: #f4d9d3;
  --bk-color-focus: #1f6f78;
  --bk-color-scrim: rgba(14, 22, 24, 0.38);
  --bk-glass-bg: rgba(248, 245, 240, 0.56);
  --bk-glass-bg-scrolled: rgba(248, 245, 240, 0.74);
  --bk-glass-edge: rgba(255, 255, 255, 0.7);
  --bk-glass-highlight: rgba(255, 255, 255, 0.85);
  --bk-glass-tint: rgba(21, 56, 61, 0.9);
  --bk-glass-shadow: 0px 10px 30px -12px rgba(23, 34, 37, 0.35), 0px 1px 2px 0px rgba(23, 34, 37, 0.08);
  --bk-glass-shadow-scrolled: 0px 14px 34px -12px rgba(23, 34, 37, 0.45), 0px 1px 2px 0px rgba(23, 34, 37, 0.1);
  --bk-glass-specular: linear-gradient( 180deg, rgba(255, 255, 255, 0.42) 0%, rgba(255, 255, 255, 0) 55% );
  --bk-font-display: "BaghnikSerif", "Cormorant Garamond", "Noto Serif Armenian", "Georgia", serif;
  --bk-font-ui: "BaghnikSans", "Manrope", "Noto Sans Armenian", system-ui, sans-serif;
  --bk-font-mono: "JetBrains Mono", ui-monospace, monospace;
  --bk-font-weight-regular: 400;
  --bk-font-weight-medium: 500;
  --bk-font-weight-semibold: 600;
  --bk-font-weight-bold: 700;
  --bk-font-weight-extrabold: 800;
  --bk-glass-backdrop: blur(22px) saturate(1.7);
}
@media (prefers-color-scheme: dark) {
:root {
  --bk-color-page: #050809;
  --bk-color-bg: #0e1517;
  --bk-color-surf: #172124;
  --bk-color-surf2: #1f2b2f;
  --bk-color-ink: #ece5da;
  --bk-color-ink2: #b7bebb;
  --bk-color-ink3: #9ca4a1;
  --bk-color-line: #2a3639;
  --bk-color-pri: #eee8df;
  --bk-color-on-pri: #172225;
  --bk-color-water: #5f9d9d;
  --bk-color-water-ink: #bfddd8;
  --bk-color-tuff: #e39373;
  --bk-color-tuff-bg: #3a241b;
  --bk-color-ok: #90d1ae;
  --bk-color-ok-bg: #17302a;
  --bk-color-warn: #e8bf76;
  --bk-color-warn-bg: #33290f;
  --bk-color-err: #f2a395;
  --bk-color-err-bg: #3b1d19;
  --bk-color-focus: #e4d8c4;
  --bk-color-scrim: rgba(0, 0, 0, 0.55);
  --bk-glass-bg: rgba(30, 42, 45, 0.52);
  --bk-glass-bg-scrolled: rgba(30, 42, 45, 0.74);
  --bk-glass-edge: rgba(255, 255, 255, 0.14);
  --bk-glass-highlight: rgba(255, 255, 255, 0.18);
  --bk-glass-tint: rgba(238, 232, 223, 0.92);
  --bk-glass-shadow: 0px 10px 30px -10px rgba(0, 0, 0, 0.7);
  --bk-glass-shadow-scrolled: 0px 10px 30px -10px rgba(0, 0, 0, 0.7);
  --bk-glass-specular: linear-gradient( 180deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0) 55% );
}
}
@font-face { font-family: "BaghnikSerif"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/fonts/BaghnikSerif-Regular.latin.woff2") format("woff2"); unicode-range: U+0020-007E,U+00A0-00FF,U+2010-2015,U+2018-201E,U+2022,U+2026,U+2032-2033,U+20AC; }
@font-face { font-family: "BaghnikSerif"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/fonts/BaghnikSerif-Regular.armenian.woff2") format("woff2"); unicode-range: U+0530-058F,U+FB13-FB17; }
@font-face { font-family: "BaghnikSerif"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/fonts/BaghnikSerif-Regular.cyrillic.woff2") format("woff2"); unicode-range: U+0400-045F,U+0490-0491,U+2116; }
@font-face { font-family: "BaghnikSerif"; font-style: normal; font-weight: 500; font-display: swap; src: url("/assets/fonts/BaghnikSerif-Medium.latin.woff2") format("woff2"); unicode-range: U+0020-007E,U+00A0-00FF,U+2010-2015,U+2018-201E,U+2022,U+2026,U+2032-2033,U+20AC; }
@font-face { font-family: "BaghnikSerif"; font-style: normal; font-weight: 500; font-display: swap; src: url("/assets/fonts/BaghnikSerif-Medium.armenian.woff2") format("woff2"); unicode-range: U+0530-058F,U+FB13-FB17; }
@font-face { font-family: "BaghnikSerif"; font-style: normal; font-weight: 500; font-display: swap; src: url("/assets/fonts/BaghnikSerif-Medium.cyrillic.woff2") format("woff2"); unicode-range: U+0400-045F,U+0490-0491,U+2116; }
@font-face { font-family: "BaghnikSans"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/fonts/BaghnikSans-Regular.latin.woff2") format("woff2"); unicode-range: U+0020-007E,U+00A0-00FF,U+2010-2015,U+2018-201E,U+2022,U+2026,U+2032-2033,U+20AC; }
@font-face { font-family: "BaghnikSans"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/fonts/BaghnikSans-Regular.armenian.woff2") format("woff2"); unicode-range: U+0530-058F,U+FB13-FB17; }
@font-face { font-family: "BaghnikSans"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/fonts/BaghnikSans-Regular.cyrillic.woff2") format("woff2"); unicode-range: U+0400-045F,U+0490-0491,U+2116; }
@font-face { font-family: "BaghnikSans"; font-style: normal; font-weight: 500; font-display: swap; src: url("/assets/fonts/BaghnikSans-Medium.latin.woff2") format("woff2"); unicode-range: U+0020-007E,U+00A0-00FF,U+2010-2015,U+2018-201E,U+2022,U+2026,U+2032-2033,U+20AC; }
@font-face { font-family: "BaghnikSans"; font-style: normal; font-weight: 500; font-display: swap; src: url("/assets/fonts/BaghnikSans-Medium.armenian.woff2") format("woff2"); unicode-range: U+0530-058F,U+FB13-FB17; }
@font-face { font-family: "BaghnikSans"; font-style: normal; font-weight: 500; font-display: swap; src: url("/assets/fonts/BaghnikSans-Medium.cyrillic.woff2") format("woff2"); unicode-range: U+0400-045F,U+0490-0491,U+2116; }
@font-face { font-family: "BaghnikSans"; font-style: normal; font-weight: 600; font-display: swap; src: url("/assets/fonts/BaghnikSans-SemiBold.latin.woff2") format("woff2"); unicode-range: U+0020-007E,U+00A0-00FF,U+2010-2015,U+2018-201E,U+2022,U+2026,U+2032-2033,U+20AC; }
@font-face { font-family: "BaghnikSans"; font-style: normal; font-weight: 600; font-display: swap; src: url("/assets/fonts/BaghnikSans-SemiBold.armenian.woff2") format("woff2"); unicode-range: U+0530-058F,U+FB13-FB17; }
@font-face { font-family: "BaghnikSans"; font-style: normal; font-weight: 600; font-display: swap; src: url("/assets/fonts/BaghnikSans-SemiBold.cyrillic.woff2") format("woff2"); unicode-range: U+0400-045F,U+0490-0491,U+2116; }
/* The tokens (colours, glass, font stacks) and the @font-face rules are written above this file by
   apps/site/build.ts, from packages/tokens and apps/site/src/fonts. */
:root {
  --gutter: clamp(12px, 3vw, 40px);
  --pool-r: clamp(22px, 3.4vw, 48px);
  --lip: clamp(6px, 0.8vw, 11px);
  --spring: cubic-bezier(0.22, 1, 0.36, 1);
  /* What differs at night: the page's script reads --night to light the pool the same way. */
  --night: 0;
  --pool-fallback: linear-gradient(170deg, #9fd3cf 0%, #4e7e81 52%, #1b4a50 100%);
  --lip-top: rgba(255, 255, 255, 0.95);
  --lip-shade: rgba(23, 34, 37, 0.3);
  --grain-blend: multiply;
  --logo-on-light: block;
  --logo-on-dark: none;
}
@media (prefers-color-scheme: dark) {
  :root {
    --night: 1;
    --pool-fallback: linear-gradient(170deg, #2b6b6f 0%, #123e44 52%, #081a1d 100%);
    --lip-top: rgba(255, 255, 255, 0.09);
    --lip-shade: rgba(0, 0, 0, 0.7);
    --grain-blend: screen;
    --logo-on-light: none;
    --logo-on-dark: block;
  }
}

*,
*::before,
*::after {
  box-sizing: border-box;
}
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  background: var(--bk-color-bg);
}
body {
  margin: 0;
  min-height: 100svh;
  background: var(--bk-color-bg);
  color: var(--bk-color-ink);
  font: 500 1rem / 1.4 var(--bk-font-ui);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
/* The grain of the stone the pool is set in. */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.55;
  mix-blend-mode: var(--grain-blend);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .36 0 0 0 0 .33 0 0 0 0 .28 0 0 0 .16 0'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)'/%3E%3C/svg%3E");
}
:focus-visible {
  outline: 2px solid var(--bk-color-focus);
  outline-offset: 3px;
}

.page {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  min-height: 100svh;
  max-width: 1360px;
  margin: 0 auto;
  padding: 0 max(var(--gutter), env(safe-area-inset-right)) 0
    max(var(--gutter), env(safe-area-inset-left));
}
main {
  flex: 1;
}

/* Header: the logo on the bare stone (its rules ask for a plain ground), the language switch in glass. */
.top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: clamp(14px, 2vw, 24px) clamp(2px, 0.6vw, 8px);
}
.brand {
  display: block;
  border-radius: 10px;
}
.brand svg {
  display: block;
  width: auto;
  height: clamp(32px, 3vw, 40px);
}
.brand .on-light {
  display: var(--logo-on-light);
}
.brand .on-dark {
  display: var(--logo-on-dark);
}

.lang {
  position: relative;
  display: flex;
  padding: 3px;
  border-radius: 999px;
  background: var(--bk-glass-bg);
  box-shadow:
    inset 0 0 0 1px var(--bk-glass-edge),
    inset 0 1px 0 var(--bk-glass-highlight),
    0 1px 2px rgba(23, 34, 37, 0.08),
    0 8px 24px -14px rgba(23, 34, 37, 0.3);
  -webkit-backdrop-filter: blur(18px) saturate(1.6);
  backdrop-filter: blur(18px) saturate(1.6);
}
.lang a {
  position: relative;
  z-index: 1;
  padding: 9px 15px;
  border-radius: 999px;
  color: var(--bk-color-ink2);
  font: 600 0.8125rem / 1 var(--bk-font-ui);
  letter-spacing: 0.01em;
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.3s ease;
  -webkit-tap-highlight-color: transparent;
}
/* The pill stays slim; the place a finger can land is 44 points and more tall. */
.lang a::after {
  content: "";
  position: absolute;
  inset: -8px 0;
}
.lang a:hover {
  color: var(--bk-color-ink);
}
.lang a[aria-current="true"] {
  background: var(--bk-color-pri);
  color: var(--bk-color-on-pri);
}
.lang .short {
  display: none;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.lang-thumb {
  position: absolute;
  top: 3px;
  bottom: 3px;
  left: 0;
  width: 0;
  border-radius: 999px;
  background: var(--bk-color-pri);
  opacity: 0;
}
.lang.has-thumb a[aria-current="true"] {
  background: none;
}
.lang.has-thumb .lang-thumb {
  opacity: 1;
}
.lang.moves .lang-thumb {
  transition:
    transform 0.55s var(--spring),
    width 0.55s var(--spring);
}
@media (max-width: 560px) {
  .lang .full {
    display: none;
  }
  .lang .short {
    display: inline;
  }
  .lang a {
    padding: 9px 12px;
    font-size: 0.75rem;
  }
}

/* The pool: a basin sunk into the stone, with a lip of lighter stone round it. */
.coping {
  padding: var(--lip);
  border-radius: calc(var(--pool-r) + var(--lip));
  background: linear-gradient(180deg, var(--bk-color-surf), var(--bk-color-surf2));
  box-shadow:
    inset 0 1px 0 var(--lip-top),
    inset 0 -1px 0 rgba(23, 34, 37, 0.08),
    0 1px 2px rgba(23, 34, 37, 0.1),
    0 44px 90px -54px var(--lip-shade);
}
.pool {
  position: relative;
  height: clamp(400px, calc(100svh - 300px), 780px);
  overflow: hidden;
  isolation: isolate;
  border-radius: var(--pool-r);
  background: var(--pool-fallback);
  box-shadow:
    inset 0 0 0 1px rgba(23, 34, 37, 0.22),
    inset 0 18px 36px -18px rgba(8, 26, 29, 0.6);
  touch-action: pan-y;
  -webkit-user-select: none;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
}
.pool canvas {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  opacity: 0;
  transition: opacity 0.7s ease;
}
.pool.live canvas {
  opacity: 1;
}
/* The pool's own edge shadow stays above the canvas, so the lip reads as stone over water. */
.pool::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  border-radius: inherit;
  box-shadow:
    inset 0 0 0 1px rgba(23, 34, 37, 0.22),
    inset 0 1.5px 0 rgba(255, 255, 255, 0.16);
}
.pool h1 {
  position: absolute;
  right: 6.5%;
  bottom: 11%;
  left: 6.5%;
  z-index: 1;
  margin: 0;
  color: #eee8df;
  font: 500 clamp(2.6rem, 8.4vw, 7.25rem) / 0.98 var(--bk-font-display);
  letter-spacing: -0.02em;
  text-wrap: balance;
}
/* Once the water is live the line is painted on the pool's floor; the heading stays for readers. */
.pool.live h1 {
  clip-path: inset(50%);
  width: 1px;
  height: 1px;
  overflow: hidden;
  white-space: nowrap;
}

html[lang="hy"] .pool h1 {
  font-weight: 400;
  font-size: clamp(2.2rem, 6.6vw, 5.75rem);
  line-height: 1.12;
  letter-spacing: -0.01em;
}
/* The words on the stone. */
.words {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
  gap: clamp(28px, 6vw, 96px);
  align-items: end;
  padding: clamp(36px, 6.2vw, 92px) clamp(8px, 2.4vw, 34px) clamp(44px, 7vw, 108px);
}
.lede {
  max-width: 21ch;
  margin: 0;
  font: 500 clamp(1.75rem, 3.7vw, 3.375rem) / 1.07 var(--bk-font-display);
  letter-spacing: -0.016em;
  text-wrap: balance;
}
.story {
  display: grid;
  gap: clamp(18px, 2.2vw, 30px);
}
.closing {
  margin: 0;
  color: var(--bk-color-ink2);
  font: 500 clamp(1.375rem, 2vw, 1.875rem) / 1.16 var(--bk-font-display);
  text-wrap: balance;
}

/* Coming soon, and where. */
.soon {
  display: grid;
  gap: clamp(14px, 1.6vw, 20px);
  justify-items: start;
}
.soon-title {
  display: flex;
  align-items: center;
  gap: 0.36em;
  margin: 0;
  font: 500 clamp(2rem, 3.7vw, 3.375rem) / 1.07 var(--bk-font-display);
  letter-spacing: -0.016em;
}
html[lang="hy"] .lede,
html[lang="hy"] .closing,
html[lang="hy"] .soon-title {
  font-weight: 400;
  line-height: 1.24;
  letter-spacing: 0;
}
html[lang="hy"] .lede {
  max-width: 24ch;
  font-size: clamp(1.5rem, 3vw, 2.75rem);
}
html[lang="ru"] .lede {
  max-width: 23ch;
}
.platforms {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.platforms li {
  padding: 11px 17px;
  border-radius: 999px;
  background: var(--bk-glass-bg);
  box-shadow:
    inset 0 0 0 1px var(--bk-glass-edge),
    inset 0 1px 0 var(--bk-glass-highlight),
    0 1px 2px rgba(23, 34, 37, 0.08),
    0 10px 26px -16px rgba(23, 34, 37, 0.35);
  color: var(--bk-color-ink);
  font: 600 0.875rem / 1 var(--bk-font-ui);
}
.dot {
  position: relative;
  flex: none;
  width: 0.2em;
  height: 0.2em;
  min-width: 8px;
  min-height: 8px;
  border-radius: 50%;
  background: var(--bk-color-water-ink);
}
.dot::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  box-shadow: 0 0 0 1.5px var(--bk-color-water-ink);
  animation: ring 2.8s var(--spring) infinite;
}
@keyframes ring {
  0% {
    opacity: 0.7;
    transform: scale(1);
  }
  70%,
  100% {
    opacity: 0;
    transform: scale(3.1);
  }
}
@media (max-width: 760px) {
  .words {
    grid-template-columns: 1fr;
    gap: 28px;
  }
}

/* Words rise one after another when their line comes into view (the app's first run does the same). */
[data-rise] .w {
  display: inline-block;
  opacity: 0;
  transform: translateY(0.55em);
  filter: blur(6px);
  transition:
    opacity 0.7s ease calc(var(--i) * 38ms),
    transform 0.9s var(--spring) calc(var(--i) * 38ms),
    filter 0.7s ease calc(var(--i) * 38ms);
}
[data-rise].in .w {
  opacity: 1;
  transform: none;
  filter: none;
}

/* The privacy policy and the terms: one quiet column for reading. */
.legal {
  max-width: 46rem;
  margin: 0 auto;
  padding: clamp(20px, 4vw, 56px) clamp(8px, 2.4vw, 34px) clamp(48px, 8vw, 112px);
  font: 400 1rem / 1.62 var(--bk-font-ui);
  overflow-wrap: break-word;
}
.draft-mark {
  display: inline-block;
  margin: 0 0 18px;
  padding: 7px 12px;
  border-radius: 999px;
  background: var(--bk-color-warn-bg);
  color: var(--bk-color-warn);
  font: 600 0.75rem / 1 var(--bk-font-ui);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.legal-title {
  margin: 0 0 clamp(24px, 4vw, 44px);
  font: 500 clamp(2.25rem, 6vw, 3.75rem) / 1.02 var(--bk-font-display);
  letter-spacing: -0.02em;
  text-wrap: balance;
}
.legal h2 {
  margin: 2.4em 0 0.6em;
  font: 500 clamp(1.5rem, 2.6vw, 1.875rem) / 1.12 var(--bk-font-display);
  letter-spacing: -0.01em;
  text-wrap: balance;
}
.legal h3 {
  margin: 2em 0 0.5em;
  font: 600 1.0625rem / 1.3 var(--bk-font-ui);
}
.legal p,
.legal ul,
.legal ol {
  margin: 0 0 1em;
}
.legal ul,
.legal ol {
  padding-left: 1.3em;
}
.legal li {
  margin-bottom: 0.45em;
}
.legal li > ul {
  margin: 0.45em 0 0;
}
.legal strong {
  font-weight: 600;
}
.legal a {
  color: var(--bk-color-water-ink);
  text-underline-offset: 3px;
}
.legal code {
  font: 500 0.9em var(--bk-font-mono);
}
.table-scroll {
  margin: 0 0 1.4em;
  overflow-x: auto;
  border: 1px solid var(--bk-color-line);
  border-radius: 14px;
  background: var(--bk-color-surf);
}
.legal table {
  width: 100%;
  min-width: 34rem;
  border-collapse: collapse;
  font-size: 0.875rem;
  line-height: 1.5;
}
.legal th,
.legal td {
  padding: 11px 14px;
  border-bottom: 1px solid var(--bk-color-line);
  text-align: left;
  vertical-align: top;
}
.legal th {
  color: var(--bk-color-ink2);
  font-weight: 600;
}
.legal tbody tr:last-child td {
  border-bottom: 0;
}

.foot {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 10px 24px;
  padding: 18px clamp(8px, 2.4vw, 34px) max(26px, env(safe-area-inset-bottom));
  border-top: 1px solid var(--bk-color-line);
  color: var(--bk-color-ink3);
  font: 500 0.8125rem / 1.45 var(--bk-font-ui);
}
.foot-links {
  display: flex;
  gap: 22px;
}
.foot a {
  position: relative;
  color: var(--bk-color-ink2);
  text-decoration: none;
  transition: color 0.2s ease;
}
/* A line of small type, with room for a finger above and below it. */
.foot a::after {
  content: "";
  position: absolute;
  inset: -14px -8px;
}
.foot a:hover,
.foot a[aria-current="page"] {
  color: var(--bk-color-ink);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* The states gallery's SITE-STILL page shows the Reduce Motion state on any machine. */
.page[data-still] [data-rise] .w {
  opacity: 1;
  transform: none;
  filter: none;
  transition: none;
}
.page[data-still] .dot::after {
  animation: none;
}
.page[data-still] .lang.moves .lang-thumb,
.page[data-still] .pool canvas {
  transition: none;
}
@media (prefers-reduced-motion: reduce) {
  [data-rise] .w {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }
  .dot::after {
    animation: none;
  }
  .lang.moves .lang-thumb,
  .pool canvas {
    transition: none;
  }
}
