/* Kiki Games studio site. One stylesheet. Colours mirror the game's tokens (scripts/autoload/tokens.gd).
   Per-game themes are generated from data/games.json at build time (appended below as .theme-<slug>). */
@font-face { font-family: "Fredoka"; src: url("/assets/Fredoka-Variable.071c16b8.ttf") format("truetype"); font-weight: 300 700; font-style: normal; font-display: swap; }

:root {
  color-scheme: light dark;
  --font: "Fredoka", ui-rounded, "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;
  --bg: #FFF8EA; --bg2: #FFEBC8; --surface: rgba(255, 255, 255, .74); --surface-solid: #FFFFFF; --surface-2: #FFF1D6;
  --border: rgba(90, 53, 24, .16); --ink: #3A2210; --ink2: #6A4F36; --hero-ink: #2B1A0E;
  --accent: #1A68A8; --accent2: #C93445; --gold: #F2A516; --focus: #1A68A8;
  --btn-top: #2C84D4; --btn-bottom: #1A68A8; --btn-edge: color-mix(in srgb, var(--btn-bottom) 66%, #000); --btn-ink: #FFFFFF;
  --g1: #C93445; --g2: #1F74B8; --g3: #1E7A35;
  --shadow: 0 1px 0 rgba(255, 255, 255, .7) inset, 0 24px 44px -24px rgba(58, 34, 16, .45);
  --shadow-s: 0 10px 24px -14px rgba(58, 34, 16, .5);
  --radius: 28px; --radius-s: 18px;
  --sky-top: #5EB6F8; --sky-low: #A8DEFC; --sky-horizon: #E4F5F2;
  --hill-far: #8FD98A; --hill-mid: #5CC25C; --hill-near: #3FAE4A; --bush-d: #2B8C38; --bush-m: #4CC75A; --bush-l: #8EE59A;
  --cloud: #fff; --fence: #FFF6E3; --fence-edge: #D9C7A3; --trunk: #8A5A2B; --tree-far: #6CCB78;
  --sun-core: #FFD54A; --sun-glow: #FFF1A8; --ray: #FFE48A; --stars: 0; --sunmoon: 1;
  --footer-bg: #2B1A0E; --maxw: 1180px; --gut: clamp(16px, 4vw, 32px);
  --ease: cubic-bezier(.2, .8, .2, 1);
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--bg:#121A14;--bg2:#0B100D;--surface:rgba(255,246,227,.07);--surface-solid:#1C2820;--surface-2:#243227;--border:rgba(255,246,227,.17);--ink:#FFF3DC;--ink2:#CDBFA6;--hero-ink:#FFF3DC;--accent:#8FD0FF;--accent2:#FF8E9A;--focus:#8FD0FF;--btn-top:#3590DE;--btn-bottom:#1F74B8;--g1:#FF95A0;--g2:#8FD0FF;--g3:#8EE59A;--shadow:0 1px 0 rgba(255,255,255,.08) inset,0 24px 44px -24px rgba(0,0,0,.85);--shadow-s:0 10px 24px -14px rgba(0,0,0,.8);--sky-top:#0F1B3A;--sky-low:#233A66;--sky-horizon:#3F5A86;--hill-far:#2C6A52;--hill-mid:#235A44;--hill-near:#1B4A38;--bush-d:#14402F;--bush-m:#1F5C42;--bush-l:#2F7F58;--cloud:#6E7FA8;--fence:#B9AE96;--fence-edge:#6E6552;--trunk:#3d2a18;--tree-far:#2F7A58;--sun-core:#F1EEDC;--sun-glow:#A8BDF0;--ray:transparent;--stars:1;--footer-bg:#080B09;}}
:root[data-theme="dark"]{--bg:#121A14;--bg2:#0B100D;--surface:rgba(255,246,227,.07);--surface-solid:#1C2820;--surface-2:#243227;--border:rgba(255,246,227,.17);--ink:#FFF3DC;--ink2:#CDBFA6;--hero-ink:#FFF3DC;--accent:#8FD0FF;--accent2:#FF8E9A;--focus:#8FD0FF;--btn-top:#3590DE;--btn-bottom:#1F74B8;--g1:#FF95A0;--g2:#8FD0FF;--g3:#8EE59A;--shadow:0 1px 0 rgba(255,255,255,.08) inset,0 24px 44px -24px rgba(0,0,0,.85);--shadow-s:0 10px 24px -14px rgba(0,0,0,.8);--sky-top:#0F1B3A;--sky-low:#233A66;--sky-horizon:#3F5A86;--hill-far:#2C6A52;--hill-mid:#235A44;--hill-near:#1B4A38;--bush-d:#14402F;--bush-m:#1F5C42;--bush-l:#2F7F58;--cloud:#6E7FA8;--fence:#B9AE96;--fence-edge:#6E6552;--trunk:#3d2a18;--tree-far:#2F7A58;--sun-core:#F1EEDC;--sun-glow:#A8BDF0;--ray:transparent;--stars:1;--footer-bg:#080B09;}
.theme-bloom-blocks{--accent:#1E7A35;--accent2:#C93445;--btn-top:#2FA24A;--btn-bottom:#1E7A35;--btn-ink:#FFFFFF;--sky-top:#5EB6F8;--sky-low:#A8DEFC;--sky-horizon:#E4F5F2;--hill-far:#8FD98A;--hill-mid:#5CC25C;--hill-near:#3FAE4A;--bush-d:#2B8C38;--bush-m:#4CC75A;--bush-l:#8EE59A;--g1:#C93445;--g2:#6E46B8;--g3:#1E7A35}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .theme-bloom-blocks{--accent:#7EE08A;--accent2:#FF8E9A;--btn-top:#2FA24A;--btn-bottom:#1E7A35;--btn-ink:#FFFFFF;--sky-top:#0F1B3A;--sky-low:#233A66;--sky-horizon:#3F5A86;--hill-far:#2C6A52;--hill-mid:#235A44;--hill-near:#1B4A38;--bush-d:#14402F;--bush-m:#1F5C42;--bush-l:#2F7F58;--g1:#FF95A0;--g2:#CDB4FF;--g3:#8EE59A}}
:root[data-theme="dark"] .theme-bloom-blocks{--accent:#7EE08A;--accent2:#FF8E9A;--btn-top:#2FA24A;--btn-bottom:#1E7A35;--btn-ink:#FFFFFF;--sky-top:#0F1B3A;--sky-low:#233A66;--sky-horizon:#3F5A86;--hill-far:#2C6A52;--hill-mid:#235A44;--hill-near:#1B4A38;--bush-d:#14402F;--bush-m:#1F5C42;--bush-l:#2F7F58;--g1:#FF95A0;--g2:#CDB4FF;--g3:#8EE59A}


*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 88px; }
body { --btn-edge: color-mix(in srgb, var(--btn-bottom) 66%, #000); margin: 0; font: 400 1.0625rem/1.6 var(--font); color: var(--ink); background: var(--bg); min-height: 100vh; display: flex; flex-direction: column; overflow-x: hidden; text-rendering: optimizeLegibility; }
body::before { content: ""; position: fixed; inset: 0; z-index: -1; background: radial-gradient(900px 500px at 85% -5%, color-mix(in srgb, var(--accent) 14%, transparent), transparent 70%), radial-gradient(800px 520px at -5% 30%, color-mix(in srgb, var(--accent2) 10%, transparent), transparent 70%), linear-gradient(var(--bg), var(--bg2)); }
img, svg, picture, canvas { max-width: 100%; }
h1, h2, h3, h4 { font-weight: 700; line-height: 1.1; margin: 0 0 .5em; letter-spacing: -.005em; text-wrap: balance; }
h1 { font-size: clamp(2.5rem, 1.5rem + 4.3vw, 4.9rem); line-height: 1; }
h2 { font-size: clamp(1.9rem, 1.2rem + 2.6vw, 3.2rem); }
h3 { font-size: clamp(1.25rem, 1.05rem + .8vw, 1.6rem); }
p { margin: 0 0 1em; text-wrap: pretty; }
a { color: var(--accent); text-underline-offset: .18em; text-decoration-thickness: .08em; }
a:hover { text-decoration-thickness: .16em; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; border-radius: 8px; }
.skip { position: absolute; left: 12px; top: -80px; z-index: 100; background: var(--surface-solid); color: var(--ink); padding: .7em 1.1em; border-radius: 14px; box-shadow: var(--shadow-s); font-weight: 600; transition: top .2s; }
.skip:focus { top: 12px; }
.wrap { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: var(--gut); }
.ic { width: 1.25em; height: 1.25em; flex: none; vertical-align: -.22em; }
.ic-sm { width: 1em; height: 1em; }
.sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
main { flex: 1; }
main:focus { outline: none; }

/* Header */
.site-header { position: sticky; top: 0; z-index: 50; backdrop-filter: blur(16px) saturate(1.4); -webkit-backdrop-filter: blur(16px) saturate(1.4); background: color-mix(in srgb, var(--bg) 78%, transparent); border-bottom: 1px solid var(--border); }
.bar { display: flex; align-items: center; gap: 12px; min-height: 68px; }
.brand { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 1.35rem; color: var(--ink); text-decoration: none; letter-spacing: -.01em; margin-right: auto; }
.brand:hover { text-decoration: none; }
.logo-mark { width: 40px; height: 40px; transition: transform .4s var(--ease); filter: drop-shadow(0 4px 6px rgba(58, 34, 16, .3)); }
.brand:hover .logo-mark { transform: rotate(-8deg) scale(1.08); }
.nav { display: flex; gap: 4px; align-items: center; }
.nav a { color: var(--ink); text-decoration: none; padding: .5em .95em; border-radius: 999px; font-weight: 500; transition: background .2s, transform .2s var(--ease); }
.nav a:hover { background: color-mix(in srgb, var(--accent) 14%, transparent); transform: translateY(-1px); }
.nav a[aria-current="page"] { background: color-mix(in srgb, var(--accent) 20%, transparent); font-weight: 700; }
.icon-btn { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border); background: var(--surface); color: var(--ink); display: inline-grid; place-items: center; cursor: pointer; transition: transform .25s var(--ease), background .2s; font: inherit; padding: 0; }
.icon-btn:hover { transform: translateY(-2px) rotate(-6deg); background: var(--surface-solid); }
.icon-btn .ic { width: 22px; height: 22px; }
.theme-btn .moon, :root[data-theme="dark"] .theme-btn .sun { display: none; }
:root[data-theme="dark"] .theme-btn .moon { display: block; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .theme-btn .sun { display: none; } :root:not([data-theme="light"]) .theme-btn .moon { display: block; } }
.sound-btn .off { display: block; } .sound-btn .on { display: none; }
.sound-btn[data-on="1"] .off { display: none; } .sound-btn[data-on="1"] .on { display: block; }
.sound-wrap { position: relative; }
.pop { position: absolute; right: 0; top: calc(100% + 10px); width: min(300px, 84vw); background: var(--surface-solid); color: var(--ink); border: 1px solid var(--border); border-radius: 20px; box-shadow: var(--shadow); padding: 14px; z-index: 60; }
.pop[hidden] { display: none; }
.pop h2 { font-size: 1.05rem; margin: 0 0 .5em; }
.switch { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 12px; background: none; border: 0; padding: 10px 4px; font: inherit; color: inherit; cursor: pointer; text-align: left; border-radius: 12px; }
.switch small { display: block; color: var(--ink2); font-size: .85rem; line-height: 1.3; }
.switch i { flex: none; width: 46px; height: 28px; border-radius: 99px; background: color-mix(in srgb, var(--ink2) 40%, transparent); position: relative; transition: background .25s; }
.switch i::after { content: ""; position: absolute; left: 3px; top: 3px; width: 22px; height: 22px; border-radius: 50%; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, .3); transition: transform .25s var(--ease); }
.switch[aria-checked="true"] i { background: #1E7A35; }
.switch[aria-checked="true"] i::after { transform: translateX(18px); }
.switch[aria-disabled="true"] { opacity: .55; cursor: not-allowed; }
.menu-btn { display: none; }
@media (max-width: 860px) {
  .menu-btn { display: inline-grid; }
  .js .nav { position: absolute; left: 0; right: 0; top: 100%; flex-direction: column; align-items: stretch; background: var(--surface-solid); padding: 10px var(--gut) 16px; border-bottom: 1px solid var(--border); box-shadow: var(--shadow-s); display: none; }
  .js .nav[data-open="1"] { display: flex; }
  .js .nav a { padding: .85em 1em; font-size: 1.15rem; }
  html:not(.js) .nav { order: 9; width: 100%; flex-wrap: wrap; }
  html:not(.js) .bar { flex-wrap: wrap; padding-block: 8px; }
}

/* Buttons */
.btn { --lift: 0px; display: inline-flex; align-items: center; justify-content: center; gap: .55em; padding: .8em 1.6em; border-radius: 999px; font: 700 1.2rem/1.1 var(--font); color: var(--btn-ink); text-decoration: none; cursor: pointer; border: 2px solid var(--btn-edge); background: linear-gradient(var(--btn-top), var(--btn-bottom)); box-shadow: 0 5px 0 var(--btn-edge), 0 18px 26px -10px rgba(0, 0, 0, .35), inset 0 2px 0 rgba(255, 255, 255, .35); text-shadow: 0 1px 0 rgba(0, 0, 0, .3); position: relative; overflow: hidden; transition: transform .2s var(--ease), box-shadow .2s var(--ease); min-height: 52px; will-change: transform; }
.btn::after { content: ""; position: absolute; inset: 0; background: linear-gradient(105deg, transparent 35%, rgba(255, 255, 255, .45) 50%, transparent 65%); transform: translateX(-120%); }
.btn:hover { text-decoration: none; transform: translate(var(--mx, 0), calc(var(--my, 0px) - 3px)); box-shadow: 0 8px 0 var(--btn-edge), 0 24px 30px -10px rgba(0, 0, 0, .4), inset 0 2px 0 rgba(255, 255, 255, .35); }
.btn:hover::after { transform: translateX(120%); transition: transform .8s var(--ease); }
.btn:active { transform: translateY(3px); box-shadow: 0 2px 0 var(--btn-edge), 0 6px 10px -4px rgba(0, 0, 0, .4), inset 0 2px 0 rgba(255, 255, 255, .3); }
.btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--border); box-shadow: 0 5px 0 var(--border), 0 14px 22px -12px rgba(58, 34, 16, .4); text-shadow: none; backdrop-filter: blur(10px); }
.btn-ghost:hover { box-shadow: 0 8px 0 var(--border), 0 20px 26px -12px rgba(58, 34, 16, .4); }
.btn-small { font-size: 1rem; padding: .6em 1.2em; min-height: 44px; }
.btn[aria-disabled="true"] { cursor: default; filter: saturate(.7); }
.btn[aria-disabled="true"]:hover { transform: none; }
.btn[aria-disabled="true"]::after { display: none; }
.btn-row { display: flex; flex-wrap: wrap; gap: 14px 16px; align-items: center; }
.badge-play { background: linear-gradient(#2B2B2B, #0E0E0E); border-color: #000; color: #fff; --btn-edge: #000; padding: .55em 1.3em .55em 1em; text-align: left; font-size: 1rem; gap: .8em; }
.badge-play small { display: block; font-weight: 500; font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; opacity: .9; }
.badge-play b { display: block; font-size: 1.3rem; line-height: 1.05; }
.badge-play .ic { width: 1.9em; height: 1.9em; color: #6AD86F; }
.badge-play .soon { margin-left: .4em; background: #FFC93C; color: #3A2210; text-shadow: none; border-radius: 99px; padding: .25em .7em; font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; font-weight: 700; }

/* Hero scene */
.hero { position: relative; overflow: hidden; isolation: isolate; color: var(--hero-ink); }
.hero-pad { padding-block: clamp(40px, 7vw, 96px) clamp(130px, 20vw, 260px); position: relative; z-index: 3; }
.hero-small .hero-pad { padding-block: clamp(36px, 5vw, 64px) clamp(110px, 14vw, 180px); }
.scene { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.scene-sky { position: absolute; inset: 0; background: linear-gradient(var(--sky-top), var(--sky-low) 52%, var(--sky-horizon) 82%); }
.scene .layer { position: absolute; left: 0; width: 100%; will-change: transform; transform: translate3d(0, var(--py, 0px), 0); }
.scene-stars { top: 0; height: 60%; opacity: var(--stars); transition: opacity .6s; fill: #fff; }
.scene-stars g { animation: twinkle 4s ease-in-out infinite alternate; }
.scene .scene-sun { right: 6%; top: 4%; left: auto; width: clamp(130px, 18vw, 240px); }
.scene-sun .rays path { fill: var(--ray); opacity: .7; } .scene-sun .rays { transform-origin: 0 0; animation: spin 90s linear infinite; }
.sun-core { fill: var(--sun-core); } .sun-glow { fill: var(--sun-glow); opacity: .55; }
.scene-clouds { top: 2%; height: 50%; }
.cloud-shape { fill: var(--cloud); opacity: .95; }
.drift.a { animation: drift 70s linear infinite alternate; } .drift.b { animation: drift 95s linear infinite alternate-reverse; }
.scene-far, .scene-mid, .scene-near { bottom: -3%; height: 72%; }
.scene-mid { height: 66%; } .scene-near { height: 52%; }
.hill-far { fill: var(--hill-far); } .hill-mid { fill: var(--hill-mid); } .hill-near { fill: var(--hill-near); }
.tree-far { fill: var(--tree-far); } .trunk { fill: var(--trunk); }
.fence path, .fence rect { fill: var(--fence); stroke: var(--fence-edge); stroke-width: 2; }
.bush-d { fill: var(--bush-d); } .bush-m { fill: var(--bush-m); } .bush-l { fill: var(--bush-l); opacity: .8; }
.sway { transform-box: fill-box; transform-origin: 50% 100%; animation: sway 4.5s ease-in-out infinite alternate; animation-delay: var(--d, 0s); }
.scene-fx { position: absolute; inset: 0; width: 100%; height: 100%; }
.float-tile { position: absolute; width: var(--s); height: var(--s); z-index: 2; transform: translate3d(0, var(--py, 0px), 0); }
.float-tile .tile { width: 100%; height: 100%; animation: bob 6s ease-in-out infinite; animation-delay: var(--d); filter: drop-shadow(0 12px 12px rgba(40, 20, 5, .3)); }
@media (max-width: 860px) { .float-tile.ft0, .float-tile.ft4 { display: none; } }
@media (max-width: 700px) { .scene .scene-sun { width: 96px; right: 3%; top: 2%; } .float-tile { --s: 40px !important; } .float-tile.ft0, .float-tile.ft2, .float-tile.ft3, .float-tile.ft4 { display: none; } .float-tile.ft1 { left: 84% !important; top: 8% !important; } }
.tile { display: block; width: 100%; height: auto; aspect-ratio: 1; }
.moon-only { display: none; }

.eyebrow { display: inline-flex; align-items: center; gap: .55em; padding: .35em .95em .35em .5em; border-radius: 99px; background: var(--surface); border: 1px solid var(--border); font-weight: 600; font-size: .95rem; color: var(--ink); backdrop-filter: blur(10px); margin-bottom: 1.1rem; box-shadow: var(--shadow-s); }
.eyebrow .dot { width: .8em; height: .8em; border-radius: 50%; background: #FFC93C; box-shadow: 0 0 0 4px rgba(255, 201, 60, .3); animation: pulse 2.4s ease-in-out infinite; }
.grad-text { background: linear-gradient(90deg, var(--g1), var(--g2), var(--g3), var(--g1)); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; animation: shift 9s linear infinite; padding-bottom: .08em; }
.lead { font-size: clamp(1.15rem, 1rem + .7vw, 1.5rem); line-height: 1.45; max-width: 34ch; font-weight: 500; }
.hero-grid { display: grid; gap: 40px; align-items: center; grid-template-columns: 1.1fr .9fr; }
@media (max-width: 860px) { .hero-grid { grid-template-columns: 1fr; text-align: left; } }
.hero .lead, .hero p { color: var(--hero-ink); }
.hero-text { background: color-mix(in srgb, var(--hero-ink) 0%, transparent); }

/* Phone mockups */
.phones { position: relative; display: flex; justify-content: center; align-items: flex-end; min-height: 320px; }
.phone { position: relative; width: clamp(190px, 25vw, 290px); border-radius: 34px; padding: 9px; background: linear-gradient(145deg, #4a3020, #1d120a); box-shadow: 0 40px 60px -28px rgba(20, 10, 2, .65), 0 0 0 2px #6B4220 inset, 0 2px 0 rgba(255, 255, 255, .25) inset; transition: transform .5s var(--ease); }
.phone .screen { border-radius: 26px; overflow: hidden; background: #6b4a2b; aspect-ratio: 1080 / 2412; position: relative; }
.phone .screen img { display: block; width: 100%; height: 100%; object-fit: cover; }
.phone::before { content: ""; position: absolute; top: 15px; left: 50%; width: 22px; height: 6px; margin-left: -11px; border-radius: 9px; background: #000; opacity: .55; z-index: 2; }
.phones .phone:nth-child(1) { transform: rotate(-5deg) translateY(10px); margin-right: -30px; z-index: 1; }
.phones .phone:nth-child(2) { transform: rotate(4deg) translateY(-22px); z-index: 2; }
.phones:hover .phone:nth-child(1) { transform: rotate(-8deg) translate(-12px, 6px); } .phones:hover .phone:nth-child(2) { transform: rotate(6deg) translate(12px, -30px); }
.phones.single .phone { transform: rotate(3deg); } .phones.single:hover .phone { transform: rotate(0) translateY(-8px); }
@media (max-width: 860px) { .phones { min-height: 0; margin-top: 8px; } .phone { width: clamp(160px, 42vw, 240px); } }

/* Sections */
.section { padding-block: clamp(44px, 6vw, 84px); position: relative; }
.section-head { max-width: 46rem; margin-bottom: clamp(28px, 4vw, 52px); }
.section-head p { color: var(--ink2); font-size: 1.2rem; }
.kicker { text-transform: uppercase; letter-spacing: .14em; font-size: .85rem; font-weight: 700; color: var(--accent); margin-bottom: .6rem; display: block; }
.card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); backdrop-filter: blur(16px) saturate(1.3); -webkit-backdrop-filter: blur(16px) saturate(1.3); padding: clamp(20px, 3vw, 32px); transition: transform .35s var(--ease), box-shadow .35s var(--ease); }
a.card { display: block; color: inherit; text-decoration: none; }
.lift:hover { transform: translateY(-6px); box-shadow: 0 1px 0 rgba(255, 255, 255, .7) inset, 0 34px 50px -26px rgba(58, 34, 16, .55); }
.grid { display: grid; gap: clamp(16px, 2.4vw, 28px); }
.grid-2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); }
.grid-3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr)); }
.grid-4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }
.chip { display: inline-flex; align-items: center; gap: .4em; padding: .28em .8em; border-radius: 99px; font-weight: 600; font-size: .9rem; background: color-mix(in srgb, var(--accent) 14%, var(--surface-solid)); color: var(--ink); border: 1px solid var(--border); }
.chip.soon { background: #FFC93C; color: #3A2210; border-color: #D2840F; }
.chip.live { background: #1E7A35; color: #fff; border-color: #1E6B30; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; margin-block: 14px; }
.icon-bubble { width: 54px; height: 54px; border-radius: 18px; display: grid; place-items: center; color: #fff; background: linear-gradient(var(--btn-top), var(--btn-bottom)); box-shadow: 0 4px 0 var(--btn-edge), 0 12px 16px -8px rgba(0, 0, 0, .4); margin-bottom: 16px; }
.icon-bubble .ic { width: 28px; height: 28px; }
@media (max-width: 560px) { .compact { grid-template-columns: 1fr 1fr; gap: 12px; } .compact .card { padding: 16px; } .compact .icon-bubble { width: 44px; height: 44px; margin-bottom: 10px; border-radius: 14px; } .compact .icon-bubble .ic { width: 24px; height: 24px; } .compact h3 { font-size: 1.1rem; } .compact p { font-size: .95rem; line-height: 1.4; } }
.value-card h3 { margin-bottom: .35em; } .value-card p { color: var(--ink2); margin: 0; }

/* Game card */
a.card.game-card, .game-card { display: grid; grid-template-columns: auto 1fr; gap: 8px 22px; align-items: center; }
.gicon { border-radius: 22%; }
.game-card .gicon { width: 96px; height: 96px; border-radius: 24px; box-shadow: var(--shadow-s); border: 3px solid #fff; transform: rotate(-3deg); transition: transform .4s var(--ease); }
.game-card:hover .gicon { transform: rotate(3deg) scale(1.06); }
.game-card h3 { margin: 0 0 .15em; font-size: 1.7rem; }
.game-card p { margin: 0; color: var(--ink2); }
.game-card .more { grid-column: 1 / -1; display: flex; justify-content: space-between; align-items: center; margin-top: 12px; font-weight: 700; color: var(--accent); }
.game-card > p, .game-card > .chips { grid-column: 1 / -1; margin: 0; }
.game-card.big { grid-template-columns: 1fr; }
.teaser { border-style: dashed; text-align: center; display: grid; place-items: center; min-height: 220px; gap: 6px; }
.teaser .tile { margin: 0 auto 12px; width: 56px; opacity: .85; animation: bob 5s ease-in-out infinite; }

/* Stats */
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 16px; text-align: center; }
.stat b { display: block; font-size: clamp(2.4rem, 1.6rem + 3vw, 4rem); line-height: 1; color: var(--accent); font-variant-numeric: tabular-nums; }
.stat span { color: var(--ink2); font-weight: 500; }

/* Marquee */
.strip { overflow: hidden; padding-block: 18px; background: color-mix(in srgb, var(--accent) 10%, var(--bg)); border-block: 1px solid var(--border); -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.strip-track { display: flex; gap: 14px; width: max-content; animation: marquee 48s linear infinite; }
.strip:hover .strip-track { animation-play-state: paused; }
.strip-track span { white-space: nowrap; font-weight: 600; padding: .5em 1.2em; border-radius: 99px; background: var(--surface-solid); border: 1px solid var(--border); display: inline-flex; gap: .5em; align-items: center; box-shadow: var(--shadow-s); }
.strip-track .ic { color: var(--accent); }

/* Feature rows */
.feature { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 5vw, 72px); align-items: center; padding-block: clamp(22px, 3vw, 40px); }
.feature:nth-child(even) .demo-col { order: -1; }
@media (max-width: 820px) { .feature { grid-template-columns: 1fr; } .feature:nth-child(even) .demo-col { order: 0; } }
.feature p { color: var(--ink2); font-size: 1.15rem; max-width: 36ch; }
.demo-col { display: grid; place-items: center; }
.demo { width: min(100%, 360px); aspect-ratio: 1; border-radius: 36px; background: linear-gradient(180deg, var(--sky-low), var(--sky-horizon)); border: 1px solid var(--border); box-shadow: var(--shadow); position: relative; overflow: hidden; display: grid; place-items: center; }
.demo-board { background: linear-gradient(160deg, #8a5a33, #6B4220); padding: 7%; }
.dgrid { width: 100%; aspect-ratio: 1; display: grid; grid-template-columns: repeat(6, 1fr); gap: 3px; position: relative; }
.dcell { border-radius: 8px; background: rgba(40, 20, 6, .32); position: relative; transition: transform .35s var(--ease), opacity .35s; }
.dcell svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.dcell.f { background: none; } .dcell.f .tile { position: absolute; inset: 0; width: 100%; height: 100%; }
.dcell.flash .tile { animation: flash .5s ease-in-out 2; }
.dcell.pop .tile { animation: shrink .35s ease-in forwards; }
.dcell .fl { transform: scale(0) rotate(-40deg); }
.dcell.bloom .fl { animation: bloom .7s var(--ease) forwards; animation-delay: calc(var(--k, 0) * 90ms); }
.dpiece { position: absolute; display: flex; width: calc(100% / 3 - 2px); aspect-ratio: 2 / 1; left: 100%; top: 100%; transition: left .9s var(--ease), top .9s var(--ease), opacity .2s; z-index: 3; filter: drop-shadow(0 10px 8px rgba(0, 0, 0, .35)); pointer-events: none; }
.demo-board .dpiece { position: absolute; }
.demo-board { position: relative; }
.dpiece .tile { width: 50%; }
.dcursor { position: absolute; width: 22px; height: 22px; border-radius: 50%; background: rgba(255, 255, 255, .85); box-shadow: 0 0 0 6px rgba(255, 255, 255, .3); left: 100%; top: 100%; transition: left .9s var(--ease), top .9s var(--ease), opacity .3s; z-index: 4; pointer-events: none; }
.demo-bloom svg { width: 70%; overflow: visible; }
.demo-bloom .soil { fill: #6B4220; } .demo-bloom .stem { stroke: #2B8C38; stroke-width: 4; fill: none; stroke-linecap: round; stroke-dasharray: 70; animation: grow 7s ease-in-out infinite; }
.demo-bloom .leaf-a, .demo-bloom .leaf-b { fill: #4CC75A; transform-box: fill-box; transform-origin: 100% 100%; animation: leaf 7s ease-in-out infinite; } .demo-bloom .leaf-b { transform-origin: 0 100%; }
.demo-bloom .seed { fill: #C98A4B; animation: seed 7s ease-in-out infinite; transform-box: fill-box; transform-origin: 50% 50%; }
.demo-bloom .bp { fill: #FF95A0; stroke: #FF5D6C; stroke-width: 1.5; transform-box: view-box; transform-origin: 60px 56px; transform: rotate(var(--r)) scale(0); animation: petal 7s ease-in-out infinite; animation-delay: calc(var(--i) * 90ms); }
.demo-bloom .core { fill: #FFC93C; stroke: #D2840F; stroke-width: 2; transform-box: fill-box; transform-origin: center; animation: core 7s ease-in-out infinite; }
.demo-daily { padding: 8%; align-content: center; gap: 10px; }
.ddays { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; width: 100%; }
.dday { display: grid; justify-items: center; gap: 6px; font-weight: 700; color: var(--hero-ink); }
.dday i { width: 100%; aspect-ratio: 1; border-radius: 50%; background: rgba(255, 255, 255, .6); display: grid; place-items: center; color: #fff; transition: background .3s, transform .4s var(--ease); font-style: normal; }
.dday i svg { transform: scale(0); transition: transform .4s var(--ease); }
.dday.on i { background: #2B8C38; transform: scale(1.1); } .dday.on i svg { transform: scale(1); }
.dstreak { text-align: center; color: var(--hero-ink); } .dstreak span { font-size: 4.5rem; font-weight: 700; line-height: 1; display: block; font-variant-numeric: tabular-nums; } .dstreak small { font-size: 1.05rem; font-weight: 600; }
.demo-calm { background: linear-gradient(180deg, #CDB4FF, #E9DEFF); }
.breath { position: absolute; width: 60%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgba(255, 255, 255, .85), rgba(255, 255, 255, .15) 70%); animation: breathe 8s ease-in-out infinite; }
.breath.b2 { width: 82%; animation-delay: -2.2s; opacity: .6; }
.calm-tile { width: 26%; position: relative; animation: bob 8s ease-in-out infinite; filter: drop-shadow(0 12px 12px rgba(60, 30, 120, .35)); }

/* Gallery */
.gallery { display: flex; align-items: flex-start; gap: clamp(14px, 2vw, 24px); overflow-x: auto; scroll-snap-type: x mandatory; padding: 12px var(--gut) 34px; margin-inline: calc(var(--gut) * -1); scroll-padding-inline: var(--gut); -webkit-overflow-scrolling: touch; }
.gallery figure { margin: 0; flex: none; width: min(66vw, 250px); scroll-snap-align: start; }
.shot { display: block; width: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; border-radius: 26px; transition: transform .35s var(--ease); font: inherit; color: inherit; }
.shot:hover { transform: translateY(-8px) rotate(-1deg); }
.shot .frame { display: block; border-radius: 26px; overflow: hidden; border: 6px solid #3a2210; box-shadow: 0 30px 40px -24px rgba(20, 10, 2, .7); background: #6b4a2b; }
.shot img { display: block; width: 100%; height: auto; }
.gallery figcaption { margin-top: 12px; text-align: center; font-weight: 600; color: var(--ink2); }
dialog.lightbox { border: 0; padding: 0; background: transparent; max-width: 100vw; max-height: 100dvh; width: 100%; height: 100%; color: #fff; }
dialog.lightbox::backdrop { background: rgba(14, 8, 3, .82); backdrop-filter: blur(6px); }
.lb-inner { height: 100%; display: grid; grid-template-rows: 1fr auto; place-items: center; padding: 16px; gap: 10px; }
.lb-inner img { max-height: calc(100dvh - 120px); max-width: min(100%, 900px); width: auto; height: auto; border-radius: 22px; border: 6px solid #3a2210; box-shadow: 0 40px 80px rgba(0, 0, 0, .6); object-fit: contain; animation: lbin .35s var(--ease); }
.lb-cap { font-weight: 600; text-align: center; text-shadow: 0 1px 2px #000; }
.lb-btn { position: absolute; top: 50%; transform: translateY(-50%); }
.lb-prev { left: 14px; } .lb-next { right: 14px; } .lb-close { position: absolute; right: 14px; top: 14px; }
.lb-btn, .lb-close { background: rgba(255, 255, 255, .92); color: #3A2210; }
.lb-prev .ic { transform: rotate(180deg); }

/* How to play */
.steps { counter-reset: s; display: grid; gap: 18px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); padding: 0; margin: 0; list-style: none; }
.steps li { counter-increment: s; position: relative; padding-top: 44px; }
.steps li::before { content: counter(s); position: absolute; left: 22px; top: -18px; width: 52px; height: 52px; border-radius: 50%; display: grid; place-items: center; font-weight: 700; font-size: 1.6rem; color: #fff; background: linear-gradient(var(--btn-top), var(--btn-bottom)); box-shadow: 0 4px 0 var(--btn-edge); border: 2px solid var(--btn-edge); }
.steps li { padding: 40px 22px 22px; }
.steps h3 { margin-bottom: .3em; } .steps p { margin: 0; color: var(--ink2); }
.steps-wrap { padding-top: 24px; }

/* FAQ */
.acc { display: grid; gap: 12px; max-width: 52rem; }
.acc-item { background: var(--surface); border: 1px solid var(--border); border-radius: 22px; box-shadow: var(--shadow-s); overflow: hidden; }
.acc-item h3 { margin: 0; font-size: 1.15rem; }
.acc-btn { width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 18px 22px; background: none; border: 0; color: inherit; font: 600 1.15rem/1.3 var(--font); text-align: left; cursor: pointer; min-height: 56px; }
.acc-btn .ic { transition: transform .35s var(--ease); color: var(--accent); }
.acc-btn[aria-expanded="true"] .ic { transform: rotate(180deg); }
.acc-btn:focus-visible { outline-offset: -4px; }
.acc-panel { display: grid; grid-template-rows: 1fr; transition: grid-template-rows .35s var(--ease); }
.js .acc-panel[hidden-state="1"] { grid-template-rows: 0fr; }
.acc-panel > div { overflow: hidden; }
.acc-panel p { padding: 0 22px 20px; margin: 0; color: var(--ink2); }

/* Tables and lists */
.spec { display: grid; grid-template-columns: max-content 1fr; gap: 0; border: 1px solid var(--border); border-radius: 22px; overflow: hidden; background: var(--surface); }
.spec dt, .spec dd { margin: 0; padding: 14px 20px; border-bottom: 1px solid var(--border); }
.spec dt { font-weight: 700; background: color-mix(in srgb, var(--accent) 8%, transparent); } .spec dd { color: var(--ink2); }
.spec dt:last-of-type, .spec dd:last-of-type { border-bottom: 0; }
@media (max-width: 560px) { .spec { grid-template-columns: 1fr; } .spec dt { border-bottom: 0; padding-bottom: 2px; } }
.checks { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.checks li { display: flex; gap: 12px; align-items: flex-start; } .checks .ic { color: #2B8C38; margin-top: .2em; }
.swatches { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px; }
.swatch { border-radius: 22px; overflow: hidden; border: 1px solid var(--border); background: var(--surface-solid); text-align: left; padding: 0; font: inherit; color: inherit; cursor: pointer; transition: transform .25s var(--ease); }
.swatch:hover { transform: translateY(-4px); }
.swatch i { display: block; height: 84px; } .swatch span { display: block; padding: 10px 14px 12px; font-weight: 600; } .swatch small { display: block; color: var(--ink2); font-weight: 400; }
.logo-tile { display: grid; place-items: center; gap: 14px; text-align: center; }
.logo-tile > .logo-mark, .logo-tile > picture > .gicon { width: 132px; height: 132px; }
html:not(.js) .sound-wrap, html:not(.js) .theme-btn, html:not(.js) .menu-btn { display: none; }
.logo-tile.dark { background: #1b130b; color: #fff; }
.copy-box { background: var(--surface-solid); border: 1px solid var(--border); border-radius: 18px; padding: 18px 20px; position: relative; }
.copy-box p:last-child { margin: 0; }

/* Legal */
.legal-body { max-width: 46rem; margin-inline: auto; background: var(--surface-solid); border: 1px solid var(--border); border-radius: var(--radius); padding: clamp(20px, 4vw, 44px); box-shadow: var(--shadow-s); }
.legal-body h2 { font-size: 1.45rem; margin-top: 1.8em; padding-top: 1em; border-top: 1px solid var(--border); } .legal-body h2:first-of-type { margin-top: .6em; }
.legal-body h3 { font-size: 1.15rem; margin-top: 1.2em; }
.legal-body .muted { color: var(--ink2); font-size: .95rem; }
.legal-body .draft, .legal-body .todo { background: #FFF1C9; color: #5C3D00; border-radius: 10px; padding: .3em .6em; }
.legal-body .draft { display: block; padding: .8em 1em; }
.legal-body .box { background: var(--surface-2); border: 1px solid var(--border); border-radius: 14px; padding: .9em 1.1em; margin: 1.1em 0; }
.legal-body .tablewrap { overflow-x: auto; margin: 1em 0; }
.legal-body table { border-collapse: collapse; width: 100%; min-width: 34rem; font-size: .95rem; }
.legal-body th, .legal-body td { border: 1px solid var(--border); padding: .5em .65em; text-align: left; vertical-align: top; } .legal-body th { background: var(--surface-2); }
.legal-body code { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: .9em; background: var(--surface-2); padding: 0 .3em; border-radius: 5px; word-break: break-word; }
.legal-tabs { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-bottom: 24px; }
.crumbs { font-size: .95rem; color: var(--ink2); margin-bottom: 1rem; } .crumbs a { color: var(--ink2); }
.page-head { padding-block: clamp(40px, 6vw, 80px) clamp(16px, 3vw, 32px); }
.page-head p { color: var(--ink2); font-size: 1.25rem; max-width: 40ch; }
.big-mail { font-size: clamp(1.4rem, 1rem + 2vw, 2.4rem); font-weight: 700; word-break: break-all; display: inline-block; }
.cta-band { text-align: center; border-radius: 40px; padding: clamp(32px, 6vw, 72px) clamp(20px, 4vw, 48px); background: linear-gradient(135deg, var(--btn-top), var(--btn-bottom)); color: #fff; box-shadow: 0 8px 0 var(--btn-edge), 0 40px 50px -30px rgba(0, 0, 0, .5); position: relative; overflow: hidden; }
.cta-band h2, .cta-band p { color: #fff; text-shadow: 0 2px 0 rgba(0, 0, 0, .25); }
.cta-band p { font-size: 1.25rem; max-width: 36ch; margin-inline: auto; }
.cta-band .btn:not(.badge-play) { background: #fff; color: #1b1b1b; border-color: #e4d9c2; --btn-edge: #cdbd9b; text-shadow: none; }
.cta-band .tile { position: absolute; width: 70px; opacity: .6; } .cta-band .t1 { left: 5%; top: 14%; transform: rotate(-14deg); } .cta-band .t2 { right: 6%; bottom: 12%; transform: rotate(12deg); }

/* Footer */
.site-footer { margin-top: 60px; background: var(--footer-bg, #2B1A0E); color: #FFF3DC; padding-block: 56px 28px; position: relative; }
.site-footer a { color: #FFE9B0; } .foot-grid { display: grid; gap: 32px; grid-template-columns: 1.4fr repeat(3, 1fr); }
@media (max-width: 760px) { .foot-grid { grid-template-columns: 1fr 1fr; } .foot-grid > :first-child { grid-column: 1 / -1; } }
.site-footer h2 { font-size: 1rem; text-transform: uppercase; letter-spacing: .12em; color: #FFC93C; margin-bottom: .8em; }
.site-footer ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; } .site-footer li a { text-decoration: none; } .site-footer li a:hover { text-decoration: underline; }
.site-footer .brand { color: #FFF3DC; margin-bottom: 12px; } .site-footer p { color: #E4D5B6; max-width: 34ch; }
.fine { margin-top: 36px; padding-top: 20px; border-top: 1px solid rgba(255, 243, 220, .18); display: flex; flex-wrap: wrap; gap: 8px 24px; justify-content: space-between; color: #D5C5A5; font-size: .92rem; }
.tag-token { background: #FFF1C9; color: #5C3D00; padding: 0 .35em; border-radius: 6px; font-family: ui-monospace, Menlo, monospace; font-size: .85em; }

/* Reveal and motion */
.js .reveal { opacity: 0; transform: translateY(28px) scale(.985); transition: opacity .8s var(--ease), transform .8s var(--ease); transition-delay: calc(var(--i, 0) * 80ms); }
.js .reveal.in { opacity: 1; transform: none; }
.paused *, .paused { animation-play-state: paused !important; }
@keyframes drift { to { transform: translateX(90px); } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes bob { 0%, 100% { transform: translateY(0) rotate(-3deg); } 50% { transform: translateY(-14px) rotate(4deg); } }
@keyframes sway { to { transform: rotate(4deg); } }
@keyframes twinkle { to { opacity: .45; } }
@keyframes pulse { 50% { box-shadow: 0 0 0 8px rgba(255, 201, 60, 0); } }
@keyframes shift { to { background-position: 300% 0; } }
@keyframes marquee { to { transform: translateX(-50%); } }
@keyframes flash { 50% { filter: brightness(1.8) saturate(.6); transform: scale(1.06); } }
@keyframes shrink { to { transform: scale(0); opacity: 0; } }
@keyframes bloom { to { transform: scale(1) rotate(0); } }
@keyframes grow { 0%, 12% { stroke-dashoffset: 70; } 40%, 100% { stroke-dashoffset: 0; } }
@keyframes leaf { 0%, 30% { transform: scale(0); } 48%, 100% { transform: scale(1); } }
@keyframes seed { 0%, 8% { transform: scale(1); opacity: 1; } 18%, 100% { transform: scale(0); opacity: 0; } }
@keyframes petal { 0%, 50% { transform: rotate(var(--r)) scale(0); } 62% { transform: rotate(var(--r)) scale(.5); } 78%, 94% { transform: rotate(var(--r)) scale(1); } 100% { transform: rotate(var(--r)) scale(0); } }
@keyframes core { 0%, 52% { transform: scale(0); } 70%, 94% { transform: scale(1); } 100% { transform: scale(0); } }
@keyframes breathe { 0%, 100% { transform: scale(.7); } 50% { transform: scale(1.1); } }
@keyframes lbin { from { opacity: 0; transform: scale(.94); } }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
  .js .reveal { opacity: 1; transform: none; }
  .strip-track { flex-wrap: wrap; width: auto; justify-content: center; } .strip { -webkit-mask-image: none; mask-image: none; } .strip-track [aria-hidden] { display: none; }
  .demo-bloom .stem { stroke-dashoffset: 0; } .demo-bloom .bp, .demo-bloom .core { transform: rotate(var(--r, 0deg)) scale(1); } .demo-bloom .seed { opacity: 0; } .demo-bloom .leaf-a, .demo-bloom .leaf-b { transform: none; }
  .dcell .fl { transform: none; }
}
@media print { .site-header, .scene, .site-footer, .skip { display: none !important; } body { background: #fff; color: #000; } }
