/* Fat Cat bar: the look of the bar's own Telegram posters. Poster black, big maroon paws, grey chevron plates for the
   week, white heavy caps with a dirty speckle and a black or ember outline, condensed corner labels, the ginger logo cat,
   warm fairy-light curtains of the renovated room and yellow brush strokes from the reopening poster.
   Rule: the base style is always the FINAL state; animations only describe the way there,
   so reduced motion (and no JS) shows a complete, static page. */

@font-face { font-family: "Rubik"; src: url("/fonts/rubik.woff2") format("woff2"); font-weight: 300 900; font-display: swap; unicode-range: U+0000-00FF, U+0400-045F, U+2000-206F, U+20BE, U+2116; }
@font-face { font-family: "Oswald"; src: url("/fonts/oswald.woff2") format("woff2"); font-weight: 200 700; font-display: swap; unicode-range: U+0000-00FF, U+0400-045F, U+2000-206F, U+2116; }
@font-face { font-family: "Noto Sans Georgian"; src: url("/fonts/noto-sans-georgian.woff2") format("woff2"); font-weight: 400 900; font-display: swap; unicode-range: U+10A0-10FF, U+2D00-2D2F; }

:root {
  --night: #0b0807; --night-2: #120c0a; --wood: #1d1715; --wood-2: #2f1f13; --paw: #45090f;
  --plate: #4d4d4d; --plate-hi: #5d5d5d; --ink: #f6ece6; --muted: #cbb9ac; --line: #3a2a22;
  --ginger: #fc9f47; --ginger-d: #df713f; --amber: #fcc13f; --amber-ink: #2b1513; --ember: #b0524a; --sky: #88c9d7;
  --bulb: #fff1d6; --glow: #ffd98a;
  --body: "Rubik", "Noto Sans Georgian", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --label: "Oswald", "Noto Sans Georgian", "Arial Narrow", system-ui, sans-serif;
  --wrap: 1180px; --gutter: clamp(16px, 4vw, 36px);
  --ease: cubic-bezier(.2, .7, .2, 1); --pop: cubic-bezier(.3, 1.5, .5, 1);
  --outline: 0 .055em 0 #000, .05em 0 0 #000, -.05em 0 0 #000, 0 -.04em 0 #000, .04em .04em 0 #000, -.04em .04em 0 #000, .04em -.04em 0 #000, -.04em -.04em 0 #000;
  --dirt: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cpath fill-rule='evenodd' d='M0 0H180V180H0ZM0.0 80.4m-1.0 0a1.0 0.6 0 1 0 2.0 0a1.0 0.6 0 1 0 -2.0 0zM154.9 73.5m-1.3 0a1.3 1.1 0 1 0 2.6 0a1.3 1.1 0 1 0 -2.6 0zM85.0 50.7m-0.8 0a0.8 1.4 0 1 0 1.6 0a0.8 1.4 0 1 0 -1.6 0zM25.3 68.5m-1.4 0a1.4 1.6 0 1 0 2.8 0a1.4 1.6 0 1 0 -2.8 0zM68.9 15.2m-0.8 0a0.8 1.5 0 1 0 1.6 0a0.8 1.5 0 1 0 -1.6 0zM106.6 99.8m-1.2 0a1.2 0.8 0 1 0 2.4 0a1.2 0.8 0 1 0 -2.4 0zM55.4 143.3m-0.5 0a0.5 0.8 0 1 0 1.0 0a0.5 0.8 0 1 0 -1.0 0zM103.7 128.4m-0.5 0a0.5 1.0 0 1 0 1.0 0a0.5 1.0 0 1 0 -1.0 0zM159.7 94.0m-0.6 0a0.6 1.3 0 1 0 1.2 0a0.6 1.3 0 1 0 -1.2 0zM172.6 57.7m-1.9 0a1.9 0.5 0 1 0 3.8 0a1.9 0.5 0 1 0 -3.8 0zM129.1 145.4m-1.9 0a1.9 0.9 0 1 0 3.8 0a1.9 0.9 0 1 0 -3.8 0zM30.0 143.9m-1.9 0a1.9 1.5 0 1 0 3.8 0a1.9 1.5 0 1 0 -3.8 0zM180.0 144.1m-1.1 0a1.1 0.8 0 1 0 2.2 0a1.1 0.8 0 1 0 -2.2 0zM110.8 4.3m-1.9 0a1.9 1.6 0 1 0 3.8 0a1.9 1.6 0 1 0 -3.8 0zM63.3 157.4m-0.5 0a0.5 1.4 0 1 0 1.0 0a0.5 1.4 0 1 0 -1.0 0zM171.2 99.0m-1.5 0a1.5 1.2 0 1 0 3.0 0a1.5 1.2 0 1 0 -3.0 0zM153.6 78.1m-1.9 0a1.9 1.8 0 1 0 3.8 0a1.9 1.8 0 1 0 -3.8 0zM76.6 146.0m-1.3 0a1.3 0.8 0 1 0 2.6 0a1.3 0.8 0 1 0 -2.6 0zM8.6 9.4m-1.7 0a1.7 0.6 0 1 0 3.4 0a1.7 0.6 0 1 0 -3.4 0zM63.1 99.2m-1.1 0a1.1 1.1 0 1 0 2.2 0a1.1 1.1 0 1 0 -2.2 0zM19.1 68.2m-0.8 0a0.8 1.2 0 1 0 1.6 0a0.8 1.2 0 1 0 -1.6 0zM99.1 166.5m-0.6 0a0.6 1.8 0 1 0 1.2 0a0.6 1.8 0 1 0 -1.2 0zM178.9 139.4m-1.3 0a1.3 1.0 0 1 0 2.6 0a1.3 1.0 0 1 0 -2.6 0zM155.0 116.3m-1.3 0a1.3 0.9 0 1 0 2.6 0a1.3 0.9 0 1 0 -2.6 0zM95.9 46.2m-1.9 0a1.9 1.2 0 1 0 3.8 0a1.9 1.2 0 1 0 -3.8 0zM163.9 26.5m-0.7 0a0.7 1.8 0 1 0 1.4 0a0.7 1.8 0 1 0 -1.4 0zM124.4 51.9m-1.7 0a1.7 1.0 0 1 0 3.4 0a1.7 1.0 0 1 0 -3.4 0zM158.2 87.0m-1.3 0a1.3 0.8 0 1 0 2.6 0a1.3 0.8 0 1 0 -2.6 0zM18.1 143.7m-1.8 0a1.8 0.8 0 1 0 3.6 0a1.8 0.8 0 1 0 -3.6 0zM136.3 61.2m-1.8 0a1.8 1.1 0 1 0 3.6 0a1.8 1.1 0 1 0 -3.6 0zM0.2 3.7m-0.5 0a0.5 1.2 0 1 0 1.0 0a0.5 1.2 0 1 0 -1.0 0zM53.2 145.4m-1.0 0a1.0 1.3 0 1 0 2.0 0a1.0 1.3 0 1 0 -2.0 0zM178.2 88.7m-1.6 0a1.6 0.7 0 1 0 3.2 0a1.6 0.7 0 1 0 -3.2 0zM117.7 89.1m-0.9 0a0.9 0.8 0 1 0 1.8 0a0.9 0.8 0 1 0 -1.8 0zM89.5 112.1m-1.2 0a1.2 0.9 0 1 0 2.4 0a1.2 0.9 0 1 0 -2.4 0zM88.4 91.7m-0.7 0a0.7 1.3 0 1 0 1.4 0a0.7 1.3 0 1 0 -1.4 0zM146.9 89.4m-1.3 0a1.3 0.8 0 1 0 2.6 0a1.3 0.8 0 1 0 -2.6 0zM139.2 67.3m-0.7 0a0.7 1.2 0 1 0 1.4 0a0.7 1.2 0 1 0 -1.4 0zM69.5 35.5m-1.3 0a1.3 1.7 0 1 0 2.6 0a1.3 1.7 0 1 0 -2.6 0zM70.9 29.5m-1.8 0a1.8 1.6 0 1 0 3.6 0a1.8 1.6 0 1 0 -3.6 0zM130.7 43.3m-0.9 0a0.9 0.8 0 1 0 1.8 0a0.9 0.8 0 1 0 -1.8 0zM56.2 165.3m-1.5 0a1.5 1.2 0 1 0 3.0 0a1.5 1.2 0 1 0 -3.0 0zM76.0 92.4m-1.2 0a1.2 1.5 0 1 0 2.4 0a1.2 1.5 0 1 0 -2.4 0zM2.5 141.2m-1.7 0a1.7 0.5 0 1 0 3.4 0a1.7 0.5 0 1 0 -3.4 0zM141.1 87.5m-1.4 0a1.4 0.5 0 1 0 2.8 0a1.4 0.5 0 1 0 -2.8 0zM152.1 175.6m-1.8 0a1.8 0.8 0 1 0 3.6 0a1.8 0.8 0 1 0 -3.6 0zM30.3 66.2m-1.2 0a1.2 1.8 0 1 0 2.4 0a1.2 1.8 0 1 0 -2.4 0zM135.2 84.5m-0.8 0a0.8 1.2 0 1 0 1.6 0a0.8 1.2 0 1 0 -1.6 0zM108.8 178.8m-1.0 0a1.0 0.6 0 1 0 2.0 0a1.0 0.6 0 1 0 -2.0 0zM83.7 172.8m-1.7 0a1.7 0.6 0 1 0 3.4 0a1.7 0.6 0 1 0 -3.4 0zM104.2 130.4m-1.8 0a1.8 1.1 0 1 0 3.6 0a1.8 1.1 0 1 0 -3.6 0zM65.5 32.8m-1.9 0a1.9 1.4 0 1 0 3.8 0a1.9 1.4 0 1 0 -3.8 0zM24.8 99.8m-1.0 0a1.0 1.3 0 1 0 2.0 0a1.0 1.3 0 1 0 -2.0 0zM151.3 4.9m-1.3 0a1.3 1.6 0 1 0 2.6 0a1.3 1.6 0 1 0 -2.6 0zM145.4 138.9m-0.7 0a0.7 0.8 0 1 0 1.4 0a0.7 0.8 0 1 0 -1.4 0zM134.3 139.5m-0.6 0a0.6 1.4 0 1 0 1.2 0a0.6 1.4 0 1 0 -1.2 0zM152.6 68.1m-1.0 0a1.0 1.2 0 1 0 2.0 0a1.0 1.2 0 1 0 -2.0 0zM35.1 14.9m-1.3 0a1.3 1.5 0 1 0 2.6 0a1.3 1.5 0 1 0 -2.6 0zM177.0 95.6m-1.9 0a1.9 1.6 0 1 0 3.8 0a1.9 1.6 0 1 0 -3.8 0zM66.8 163.1m-1.2 0a1.2 1.4 0 1 0 2.4 0a1.2 1.4 0 1 0 -2.4 0zM125.4 150.7m-0.7 0a0.7 1.6 0 1 0 1.4 0a0.7 1.6 0 1 0 -1.4 0zM3.0 58.8m-2.0 0a2.0 1.4 0 1 0 4.0 0a2.0 1.4 0 1 0 -4.0 0zM168.4 140.4m-0.5 0a0.5 0.5 0 1 0 1.0 0a0.5 0.5 0 1 0 -1.0 0zM91.2 0.1m-1.3 0a1.3 1.3 0 1 0 2.6 0a1.3 1.3 0 1 0 -2.6 0zM91.3 87.5m-0.9 0a0.9 0.8 0 1 0 1.8 0a0.9 0.8 0 1 0 -1.8 0zM143.7 20.8m-0.6 0a0.6 1.7 0 1 0 1.2 0a0.6 1.7 0 1 0 -1.2 0zM72.7 166.6m-1.0 0a1.0 1.0 0 1 0 2.0 0a1.0 1.0 0 1 0 -2.0 0zM160.5 49.9m-1.2 0a1.2 1.0 0 1 0 2.4 0a1.2 1.0 0 1 0 -2.4 0zM51.9 173.0m-1.4 0a1.4 0.7 0 1 0 2.8 0a1.4 0.7 0 1 0 -2.8 0zM98.2 112.1m-1.5 0a1.5 0.6 0 1 0 3.0 0a1.5 0.6 0 1 0 -3.0 0zM24.1 22.4L20.0 25.1l.8 .8L24.9 23.2zM123.2 3.1L126.2 10.5l.8 .8L124.0 3.9zM110.0 170.2L106.7 173.8l.8 .8L110.8 171.0zM156.1 149.2L164.1 152.3l.8 .8L156.9 150.0zM74.4 176.7L68.1 183.4l.8 .8L75.2 177.5zM118.6 50.8L111.7 51.5l.8 .8L119.4 51.6zM111.8 104.5L111.6 112.4l.8 .8L112.6 105.3zM125.7 52.5L120.1 56.9l.8 .8L126.5 53.3z'/%3E%3C/svg%3E");
  --brush: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 64' preserveAspectRatio='none'%3E%3Cpath d='M6 18C4 10 12 5 30 6c40-3 90 2 150-1 40-2 70 2 96 3 12 1 19 7 18 16-1 9 2 18-2 26-4 9-20 10-48 9-50-1-110 4-170 2-28-1-58 2-70-6C2 49 8 40 6 30z'/%3E%3Cpath d='M262 4c14 0 26 1 32 3l-2 3c-8-2-18-3-30-3zM8 56c10 4 30 5 52 4v3c-22 1-42 0-54-4z'/%3E%3C/svg%3E");
  color-scheme: dark;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 1rem; background: var(--night); }
body { margin: 0; color: var(--ink); background: var(--night); font: 400 1.0625rem/1.6 var(--body); overflow-x: clip; }
img, svg { max-width: 100%; }
main { display: block; overflow-x: clip; }
a { color: inherit; text-decoration-thickness: 2px; text-underline-offset: 3px; text-decoration-color: rgba(252, 193, 63, .7); }
a:hover { color: var(--amber); }
:focus-visible { outline: 3px solid var(--sky); outline-offset: 3px; border-radius: 6px; }
.skip { position: absolute; left: 8px; top: -60px; background: var(--amber); color: var(--amber-ink); padding: .6rem 1rem; border-radius: 8px; z-index: 50; font-weight: 700; }
.skip:focus { top: 8px; }
p { margin: 0 0 1rem; }
h1, h2, h3 { margin: 0; line-height: 1.05; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* poster headline: heavy caps, black outline, speckled like worn print */
.display {
  font-family: var(--body); font-weight: 900; text-transform: uppercase; letter-spacing: .01em; color: #fff8f3;
  text-shadow: var(--outline);
  -webkit-mask-image: var(--dirt); mask-image: var(--dirt); -webkit-mask-size: 180px 180px; mask-size: 180px 180px;
  padding-block: .14em; margin-block: -.14em;
}
.display.glow { padding: .35em .4em; margin: -.35em -.4em; text-shadow: 0 .05em 0 #3a0d0d, .045em 0 0 #5a1712, -.045em 0 0 #5a1712, 0 -.04em 0 #5a1712, 0 0 .22em rgba(176, 82, 74, .95), 0 0 .55em rgba(176, 82, 74, .55); }
/* Georgian has no capitals: never text-transform it (uppercase would produce Mtavruli) */
.lang-ka .display { text-transform: none; letter-spacing: 0; }

.site-header, .section, .hero-inner, .page-head, .site-footer, .chooser-inner, .notice { width: min(var(--wrap), 100% - 2 * var(--gutter)); margin-inline: auto; }

/* ---------- header ---------- */
.site-header { position: relative; z-index: 5; display: flex; align-items: center; flex-wrap: wrap; gap: .5rem 1.4rem; padding: .9rem 0; }
/* logo: the mark sits on the wordmark's capitals; the wordmark is sized by its cap height */
.logo { display: inline-flex; align-items: center; gap: .7rem; color: #fff8f3; text-decoration: none; }
/* the head sits below the middle of the mark's box (the ears take the top): lift it so the capitals line up with the face */
.logo .mark { width: 50px; height: 50px; flex: none; translate: 0 -3px; transition: transform .4s var(--pop); }
.logo:hover .mark { transform: rotate(-8deg) scale(1.06); }
.logo .wordmark { display: block; height: 18px; width: auto; }
@media (max-width: 400px) { .logo .mark { width: 44px; height: 44px; } .logo .wordmark { height: 15px; } }
.nav { display: flex; gap: 1.3rem; margin-inline-start: auto; font-family: var(--label); font-size: 1.1rem; font-weight: 500; text-transform: uppercase; letter-spacing: .04em; }
.lang-ka .nav { text-transform: none; letter-spacing: 0; font-size: 1rem; }
.nav a { text-decoration: none; padding: .3rem 0; position: relative; }
.nav a[aria-current="page"] { color: var(--amber); }
.nav a[aria-current="page"]::after { content: ""; position: absolute; left: -4px; right: -4px; bottom: -2px; height: 4px; background: var(--amber); transform: skewX(-14deg); border-radius: 2px; }
.lang { display: flex; gap: .2rem; font-family: var(--label); font-weight: 500; font-size: .95rem; }
.lang a { text-decoration: none; padding: .25rem .5rem; position: relative; }
.lang a[aria-current="true"] { color: var(--amber-ink); }
.lang a[aria-current="true"]::before { content: ""; position: absolute; inset: 2px 0; background: var(--amber); transform: skewX(-14deg); border-radius: 4px; z-index: -1; }
.lang a { isolation: isolate; }
@media (max-width: 820px) {
  .site-header { column-gap: .6rem; }
  .site-header .head-call { display: none; }
  .logo { flex: 1 0 auto; }
  .nav { order: 3; flex: 1 0 100%; margin: 0; gap: 1rem; justify-content: space-between; font-size: 1rem; }
}

.page-home .site-header { position: absolute; top: 0; left: 0; right: 0; }
.page-home .hero { padding-top: clamp(6.5rem, 9vw, 7.5rem); }
@media (max-width: 820px) { .page-home .hero { padding-top: 8.4rem; } }

/* ---------- buttons ---------- */
.btn {
  position: relative; isolation: isolate; display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  min-height: 50px; padding: .75rem 1.6rem; font: 700 1rem/1.2 var(--body); text-decoration: none; cursor: pointer;
  color: var(--ink); background: none; border: 0; border-radius: 10px;
}
.btn::before { content: ""; position: absolute; inset: 0; z-index: -1; border-radius: 12px; transition: transform .25s var(--pop), background-color .2s; }
.btn-brush { color: var(--amber-ink); font-weight: 800; }
.btn-brush::before { inset: -5px -12px; background: var(--amber); -webkit-mask: var(--brush) center / 100% 100% no-repeat; mask: var(--brush) center / 100% 100% no-repeat; border-radius: 0; }
.btn-brush:hover { color: var(--amber-ink); }
.btn-brush:hover::before { transform: rotate(-1.5deg) scale(1.05); background: #ffd25e; }
.btn-ghost::before { border: 2px solid rgba(246, 236, 230, .75); transform: skewX(-12deg); }
.btn-ghost:hover { color: var(--ink); }
.btn-ghost:hover::before { background: rgba(77, 77, 77, .55); transform: skewX(-12deg) translateX(3px); }
.btn:active::before { transform: scale(.96); }
.btn-sm { min-height: 42px; padding: .45rem 1.1rem; }
.cta-row { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.6rem; margin: 1.5rem 0; }
.cta-row.center { justify-content: center; }
.tel { font-weight: 700; white-space: nowrap; }
.tel-big { font-family: var(--label); font-size: 1.5rem; font-weight: 500; letter-spacing: .02em; }

/* ---------- hero ---------- */
.hero { position: relative; overflow: hidden; padding: clamp(1rem, 4vw, 3rem) 0 clamp(3rem, 7vw, 5.5rem); margin-top: -1px;
  background: radial-gradient(120% 70% at 50% 0%, #3a2016 0%, #1a0f0b 45%, var(--night) 80%); }
.lights { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.lights .wire { stroke: #4a3324; stroke-width: 1; fill: none; opacity: .8; }
.lights .b, .scene .b { fill: var(--bulb); filter: drop-shadow(0 0 3px var(--glow)) drop-shadow(0 0 7px rgba(255, 190, 90, .55)); }
@media (max-width: 700px) { .hero-lights { opacity: .55 !important; } }
.hero-lights { -webkit-mask-image: linear-gradient(#000 35%, transparent 96%); mask-image: linear-gradient(#000 35%, transparent 96%); opacity: .9; }
.hero-inner { position: relative; z-index: 1; display: grid; gap: 1.5rem 3rem; align-items: center; }
@media (min-width: 900px) { .hero-inner { grid-template-columns: 1.15fr .85fr; min-height: min(78svh, 720px); } }
.eyebrow { font-family: var(--label); font-weight: 500; text-transform: uppercase; letter-spacing: .08em; font-size: 1rem; color: var(--amber); margin-bottom: .8rem; }
.lang-ka .eyebrow { text-transform: none; letter-spacing: 0; }
.hero h1 { display: grid; gap: .7rem; }
/* the hero title is the logo's wordmark in its poster finish: black outline, speckle */
.h1-logo { display: block; color: #fff8f3; }
.h1-logo .wordmark { display: block; width: min(100%, 680px); height: auto; filter: drop-shadow(0 .5rem 0 #000);
  -webkit-mask-image: var(--dirt); mask-image: var(--dirt); -webkit-mask-size: 180px 180px; mask-size: 180px 180px; }
.lang-ru .h1-logo .wordmark { width: min(100%, 620px); }
.h1-sub { font-family: var(--label); font-weight: 500; text-transform: uppercase; font-size: clamp(1.45rem, 3.3vw, 2.35rem); line-height: 1.12; letter-spacing: .01em; color: var(--amber); text-shadow: var(--outline); max-width: 22em; }
.lang-ka .h1-sub { text-transform: none; font-weight: 700; font-size: clamp(1.2rem, 2.6vw, 1.8rem); }
.lede { font-size: 1.18rem; max-width: 34em; margin-top: 1.2rem; color: #eadbd1; }
.chips { list-style: none; display: flex; flex-wrap: wrap; gap: .6rem .9rem; padding: 0; margin: 0; }
.chips li { position: relative; isolation: isolate; padding: .35rem 1rem; font-family: var(--label); font-weight: 500; font-size: 1.05rem; letter-spacing: .02em; }
.chips li::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--plate); transform: skewX(-14deg); border-radius: 8px; }
.chips .chip-free { color: var(--amber-ink); }
.chips .chip-free::before { background: var(--amber); }
.hero-badge { position: relative; justify-self: center; width: min(440px, 78vw); }
.hero-cat { display: block; width: 100%; height: auto; filter: drop-shadow(0 18px 40px rgba(255, 150, 60, .28)); }
.chooser-mark { display: block; width: 100%; height: auto; overflow: visible; filter: drop-shadow(0 18px 46px rgba(255, 150, 60, .3)); }
.sparks-deco { position: absolute; width: 74px; height: 74px; }
.sp-a { left: -4%; top: -2%; transform: rotate(-30deg); }
.sp-b { right: -6%; bottom: 8%; transform: rotate(150deg); }

/* hero motion: the garland switches on strand by strand, then twinkles; the painted cat rolls in and winks;
   the logo words stamp down. On the root chooser the logo cat pops up, its sunglasses drop on and glint, then it nods. */
.hero-lights .strand { animation: plug .7s steps(1) backwards; animation-delay: calc(var(--s) * 45ms + .15s); }
@keyframes plug { 0% { opacity: 0; } 30% { opacity: .9; } 45% { opacity: .15; } 60% { opacity: 1; } 100% { opacity: 1; } }
.b.t1 { animation: tw 3.3s ease-in-out infinite; }
.b.t2 { animation: tw 4.4s 1.1s ease-in-out infinite; }
.b.t3 { animation: tw 2.8s .6s ease-in-out infinite; }
@keyframes tw { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
.hero-cat { animation: roll-in 1s .35s var(--pop) backwards; }
@keyframes roll-in { from { opacity: 0; transform: translateX(40%) rotate(80deg) scale(.6); } }
.hero-cat .eye { transform-origin: 152px 108px; animation: blink 6s 2.4s infinite; }
@keyframes blink { 0%, 90%, 100% { transform: none; } 94% { transform: scaleY(.08); } }
.hero-cat .ear-r { transform-origin: 170px 80px; animation: twitch 8s 3s infinite; }
@keyframes twitch { 0%, 88%, 100% { transform: none; } 91% { transform: rotate(-9deg); } 94% { transform: rotate(4deg); } }
.hero-cat .whiskers { transform-origin: 120px 140px; animation: whisk 5s 1.5s ease-in-out infinite; }
@keyframes whisk { 0%, 100% { transform: none; } 50% { transform: scaleX(1.03) translateY(-1px); } }
.chooser-mark { animation: pop-up .8s .3s var(--pop) backwards; }
@keyframes pop-up { from { opacity: 0; transform: translateY(18%) scale(.8); } }
.chooser-mark .shades { transform-box: fill-box; transform-origin: 50% 0; animation: shades-on .6s 1s cubic-bezier(.3, 1.5, .5, 1) backwards; }
@keyframes shades-on { from { opacity: 0; transform: translateY(-260%) rotate(-10deg); } 60% { opacity: 1; } }
.chooser-mark .cat { transform-box: view-box; transform-origin: 60px 110px; animation: nod 2.4s 2s ease-in-out infinite; }
@keyframes nod { 0%, 100% { transform: none; } 25% { transform: rotate(-2.5deg); } 50% { transform: translateY(1.5px); } 75% { transform: rotate(2.5deg); } }
.chooser-mark .glint { animation: glint 4.5s 1.8s ease-in-out infinite; }
@keyframes glint { 0%, 78%, 100% { opacity: 1; } 84% { opacity: .1; } 90% { opacity: 1; } }
.sparks-deco path { transform-box: fill-box; transform-origin: center; animation: spark .5s var(--pop) backwards; }
.sp-a path { animation-delay: 1.15s; } .sp-b path { animation-delay: 1.3s; }
@keyframes spark { from { transform: scale(0); opacity: 0; } }
.w { display: inline-block; animation: stamp .55s var(--pop) backwards; animation-delay: calc(var(--i) * .12s + .1s); }
.h1-logo .wl { transform-box: fill-box; transform-origin: center; animation: stamp .55s var(--pop) backwards; animation-delay: calc(var(--i) * .16s + .1s); }
@keyframes stamp { 0% { opacity: 0; transform: scale(1.7) rotate(-7deg); } 55% { opacity: 1; transform: scale(.94) rotate(1deg); } 100% { transform: none; } }
.h1-sub { animation: rise .6s .55s var(--ease) backwards; }
.hero .lede, .hero .cta-row, .hero .chips { animation: rise .6s var(--ease) backwards; }
.hero .lede { animation-delay: .7s; } .hero .cta-row { animation-delay: .8s; } .hero .chips { animation-delay: .9s; }
@keyframes rise { from { opacity: 0; transform: translateY(14px); } }
/* every infinite animation runs only while its block is on screen and the tab is visible.
   !important because the animation shorthand on each element resets animation-play-state. */
.b, .hero-cat .eye, .hero-cat .ear-r, .hero-cat .whiskers, .chooser-mark .cat, .chooser-mark .glint, .scene *, .peek .mascot, .locmap .route, .locmap .pin-ring { animation-play-state: paused !important; }
.live .b, .live .hero-cat .eye, .live .hero-cat .ear-r, .live .hero-cat .whiskers, .live .chooser-mark .cat, .live .chooser-mark .glint, .live .scene *, .live .peek .mascot, .live .locmap .route, .live .locmap .pin-ring { animation-play-state: running !important; }
html.js.hidden-tab .live * { animation-play-state: paused !important; }

/* ---------- sections ---------- */
.section { position: relative; padding: clamp(2.6rem, 6vw, 4.6rem) 0; }
.section > :not(.paw-field) { position: relative; z-index: 1; }
.section > h2.display, .page-head h1 { font-size: clamp(2.3rem, 5.6vw, 4.2rem); margin-bottom: .7rem; }
.lang-ka .section > h2.display, .lang-ka .page-head h1 { font-size: clamp(1.8rem, 4.4vw, 3rem); line-height: 1.2; }
.section-intro { font-size: 1.15rem; max-width: 42em; color: #eadbd1; }
.page-head { position: relative; padding: clamp(1.6rem, 5vw, 3.6rem) 0 .6rem; }
.page-head > :not(.paw-field) { position: relative; z-index: 1; }
.page-head h1 { font-size: clamp(3rem, 8vw, 6rem); }
.more { margin-top: 1.8rem; }
.center { text-align: center; }

.paw-field { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 0; }
.paw-field .paw { position: absolute; fill: var(--paw); transform: translate(-50%, -50%) rotate(var(--r, 0deg)); opacity: .85; }
.paw { display: block; }
.page-head .paw-field, .about .paw-field { inset: 0 calc(-1 * var(--gutter)); }

/* about: pinned feature cards */
.feats { list-style: none; padding: 0; margin: 2rem 0 0; display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
.feat { padding: 1.2rem 1.2rem 1.3rem; background: linear-gradient(160deg, #24170f, var(--wood)); border: 2px solid var(--wood-2); border-radius: 14px; box-shadow: 0 10px 24px rgba(0, 0, 0, .45); }
.feat:nth-child(odd) { rotate: -1.2deg; } .feat:nth-child(even) { rotate: 1deg; }
.feat .ico { width: 58px; height: 58px; display: block; margin-bottom: .5rem; transition: transform .35s var(--pop); }
.feat:hover .ico { transform: rotate(-10deg) scale(1.12); }
.feat h3 { font-family: var(--label); font-weight: 600; text-transform: uppercase; font-size: 1.35rem; letter-spacing: .02em; color: var(--amber); margin-bottom: .35rem; }
.lang-ka .feat h3 { text-transform: none; font-size: 1.1rem; font-weight: 700; }
.feat p { margin: 0; color: #e3d3c8; font-size: 1rem; }

/* ---------- weekly schedule: the channel's poster ---------- */
.program { padding-bottom: 3.2rem; }
.week-wrap { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.6rem 2.4rem; margin-top: 1.6rem; align-items: start; }
@media (min-width: 960px) { .week-wrap { grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); } }
.week-board { position: relative; overflow: hidden; padding: clamp(1.8rem, 4vw, 2.6rem) clamp(.6rem, 2vw, 1.4rem) clamp(4.5rem, 9vw, 6rem); background: #000; border-radius: 18px; border: 2px solid #1d1311; }
.program .section-intro { margin-top: 1.6rem; }
.week-board .board-title { position: relative; z-index: 1; text-align: center; font-size: clamp(1.75rem, 3.4vw, 2.5rem); line-height: 1.05; margin-bottom: clamp(.9rem, 2.4vw, 1.5rem); }
/* the plates of poster 909: flat grey, steeply slanted, leaning right and left in turn; the slant needs room at the sides */
.week { position: relative; z-index: 1; list-style: none; margin: 0 auto; padding: 0; display: grid; gap: clamp(.75rem, 1.8vw, 1.05rem); width: calc(100% - 4rem); }
@media (min-width: 600px) { .week { width: min(100% - 6rem, 74%); } }
.plate { position: relative; --sk: -30deg; --nudge: 8px; }
.plate:nth-child(even) { --sk: 30deg; --nudge: -8px; }
@media (min-width: 600px) { .plate { --sk: -42deg; } .plate:nth-child(even) { --sk: 42deg; } }
.plate a { position: relative; isolation: isolate; display: grid; justify-items: center; text-align: center; gap: .1rem; padding: .7rem .9rem .8rem; text-decoration: none; color: #fff; }
.plate a::before { content: ""; position: absolute; inset: 0; z-index: -1; transform: skewX(var(--sk)); border-radius: 18px; background: var(--plate); transition: transform .3s var(--pop), background .2s; }
.plate a:hover::before, .plate a:focus-visible::before, .plate.on a::before { transform: skewX(var(--sk)) translateX(var(--nudge)); background: var(--plate-hi); }
.plate a:focus-visible { outline-offset: 5px; }
.plate-day { font-weight: 900; text-transform: uppercase; font-size: clamp(1.15rem, 2.1vw, 1.4rem); letter-spacing: .02em; text-shadow: 0 2px 0 rgba(0, 0, 0, .45);
  -webkit-mask-image: var(--dirt); mask-image: var(--dirt); -webkit-mask-size: 180px 180px; mask-size: 180px 180px; }
.lang-ka .plate-day { text-transform: none; font-size: 1.15rem; }
.plate-line { font-weight: 600; font-size: 1.02rem; line-height: 1.3; }
.plate-time { font-weight: 700; }
.plate.today a::before { box-shadow: 0 0 0 3px var(--amber); }
.plate.today::after { content: attr(data-today); position: absolute; z-index: 2; right: -.4rem; top: -.7rem; padding: .1rem .7rem; font: 600 .95rem/1.4 var(--label); text-transform: uppercase; letter-spacing: .04em; color: var(--amber-ink); background: var(--amber); border-radius: 4px; transform: rotate(6deg); animation: sticker .45s .3s var(--pop) backwards; }
.lang-ka .plate.today::after { text-transform: none; }
@keyframes sticker { from { transform: rotate(6deg) scale(2.2); opacity: 0; } }
/* the painted cat looks out of its round badge from behind the plates, cropped by the board's corner, as on poster 909 */
.peek { position: absolute; z-index: 0; right: 0; bottom: 0; width: clamp(190px, 54%, 380px); translate: 27% 11%; rotate: -10deg; }
/* see-through paws over the plates */
.paw-ghost { z-index: 2; }
.paw-ghost .paw { fill: #c8703f; opacity: .26; }
.peek .mascot { display: block; width: 100%; height: auto; animation: bob 4s ease-in-out infinite; }
@keyframes bob { 0%, 100% { transform: none; } 50% { transform: translateY(-6px) rotate(-3deg); } }
/* poster stack: the evening under the pointer or the focused plate */
.poster-stack { display: none; position: relative; aspect-ratio: 1; }
@media (min-width: 960px) { .poster-stack { display: block; position: sticky; top: 1.5rem; } }
.mini-poster { position: absolute; inset: 0; margin: 0; opacity: 0; transform: scale(.96) rotate(-1.5deg); transition: opacity .35s var(--ease), transform .45s var(--pop); border-radius: 10px; overflow: hidden; box-shadow: 0 24px 50px rgba(0, 0, 0, .6); }
.mini-poster.on { opacity: 1; transform: rotate(-1.2deg); }
.scene { display: block; width: 100%; height: auto; }
.corner { position: absolute; top: 4%; font-family: var(--label); font-weight: 400; font-size: clamp(1.6rem, 3.4vw, 2.6rem); line-height: 1; color: #fff; text-shadow: var(--outline); text-transform: uppercase; }
.lang-ka .corner { text-transform: none; font-size: clamp(1.3rem, 2.6vw, 2rem); }
.corner-l { left: 6%; } .corner-r { right: 6%; }
.poster-cap, .poster-title { position: absolute; left: 4%; right: 4%; bottom: 5%; margin: 0; text-align: center; font-weight: 900; text-transform: uppercase; font-size: clamp(1.6rem, 3.6vw, 2.7rem); line-height: 1; color: #fff8f3; text-shadow: 0 .06em 0 #000, .06em 0 0 #000, -.06em 0 0 #000, 0 -.05em 0 #000, .05em .05em 0 #000, -.05em .05em 0 #000, .05em -.05em 0 #000, -.05em -.05em 0 #000, 0 0 .3em rgba(0, 0, 0, .8); -webkit-mask-image: var(--dirt); mask-image: var(--dirt); -webkit-mask-size: 180px; mask-size: 180px; padding-block: .14em; }
.lang-ka .poster-cap, .lang-ka .poster-title { text-transform: none; font-size: clamp(1.3rem, 2.8vw, 2rem); line-height: 1.15; }

/* scene micro-motion (runs only while .live) */
.scene .tear { animation: tear 1.6s ease-in infinite; transform-box: fill-box; transform-origin: top; }
.scene .tear.t-r { animation-delay: .8s; }
@keyframes tear { 0% { transform: translateY(-6px) scaleY(.4); opacity: 0; } 30% { opacity: 1; } 100% { transform: translateY(18px) scaleY(1.1); opacity: 0; } }
.scene .strings { animation: strum .18s linear infinite; }
@keyframes strum { 50% { transform: translateY(1px); } }
.scene .screen, .scene .glow-screen { animation: flicker 2.6s steps(2) infinite; }
@keyframes flicker { 0%, 100% { opacity: 1; } 47% { opacity: .82; } 52% { opacity: 1; } 75% { opacity: .9; } }
.scene .beam { animation: beam 4s ease-in-out infinite; transform-box: view-box; transform-origin: 150px 30px; }
@keyframes beam { 0%, 100% { transform: rotate(-4deg); } 50% { transform: rotate(4deg); } }
.scene .sp { animation: twinkle 1.8s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.scene .sp2 { animation-delay: .6s; } .scene .sp3 { animation-delay: 1.2s; }
@keyframes twinkle { 0%, 100% { transform: scale(.6); opacity: .5; } 50% { transform: scale(1.15) rotate(20deg); opacity: 1; } }
.scene .dice { animation: roll 2.4s var(--pop) infinite; transform-box: fill-box; transform-origin: center; }
.scene .d2 { animation-delay: .3s; }
@keyframes roll { 0%, 60%, 100% { translate: 0 0; } 70% { translate: 0 -14px; } 80% { translate: 0 0; } }
.scene .reach { animation: reach 3.2s ease-in-out infinite; }
@keyframes reach { 0%, 100% { translate: 0 0; } 50% { translate: -12px 8px; } }

/* ---------- rating ---------- */
.rating-sec h2 { text-align: center; }
.ratings { display: flex; flex-wrap: wrap; justify-content: center; gap: 1.6rem 2rem; margin-top: 1.4rem; }
.ratings .rating { margin: 0; }
.ratings .rating:nth-child(even) { rotate: 1deg; }
.ratings .rating:nth-child(even):hover { rotate: -1deg; }
.rating { display: grid; justify-items: center; gap: .35rem; width: fit-content; margin: 1.4rem auto 0; padding: 1.6rem clamp(1.4rem, 5vw, 2.6rem) 1.8rem; text-decoration: none; background: var(--night-2); border: 2px solid var(--wood-2); border-radius: 22px; rotate: -1deg; box-shadow: 0 18px 40px rgba(0, 0, 0, .5); transition: rotate .3s var(--pop), transform .3s var(--pop); }
.rating:hover { rotate: 1deg; transform: translateY(-3px); color: var(--ink); }
.rating-num { font-size: clamp(5rem, 14vw, 8.5rem); line-height: .9; }
.count { font-variant-numeric: tabular-nums; }
.paw-rating { display: flex; gap: .3rem; }
.rp-fill { transform-box: fill-box; transform-origin: center; }
.rating-src { font-family: var(--label); font-weight: 500; font-size: 1.35rem; text-transform: uppercase; letter-spacing: .03em; color: var(--amber); }
.lang-ka .rating-src { text-transform: none; font-size: 1.15rem; }
.rating-count { color: var(--muted); }
.rating-open { margin-top: .3rem; font-weight: 700; text-decoration: underline; text-decoration-color: var(--amber); text-decoration-thickness: 3px; text-underline-offset: 5px; }
.rp { transition: transform .45s var(--pop), opacity .3s; transition-delay: calc(.25s + var(--i) * .1s); }
html.js:not(.no-hide) .rating:not(.in) .rp { transform: scale(1.8) rotate(-20deg); opacity: 0; }

/* ---------- notice: the big maroon paw announcement ---------- */
.notice { position: relative; overflow: hidden; display: grid; place-items: center; min-height: 420px; margin-block: clamp(1.5rem, 5vw, 3rem); padding: 3rem clamp(1.2rem, 5vw, 4rem); background: #000; border-radius: 20px; border: 2px solid #1d1311; text-align: center; }
.notice-paw { position: absolute; width: min(560px, 120%); left: 50%; top: 52%; translate: -50% -50%; fill: var(--paw); transition: scale .7s var(--pop), opacity .5s; }
html.js:not(.no-hide) .notice:not(.in) .notice-paw { scale: .6; opacity: 0; }
.notice-body { position: relative; z-index: 1; max-width: 36em; }
.notice h2 { font-size: clamp(2rem, 5vw, 3.4rem); margin-bottom: 1rem; }
.lang-ka .notice h2 { font-size: clamp(1.6rem, 4vw, 2.4rem); line-height: 1.2; }
.notice p { font-size: 1.15rem; }

/* ---------- where ---------- */
.where-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.5rem 2.5rem; margin-top: 1.4rem; align-items: start; }
@media (min-width: 860px) { .where-grid { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); } }
.where-card, .contact-card { font-style: normal; padding: 1.4rem 1.5rem; background: var(--night-2); border: 2px solid var(--wood-2); border-radius: 16px; }
.where-card p { margin-bottom: .5rem; }
.addr-label { max-width: 100%; position: relative; isolation: isolate; display: inline-flex; align-items: center; gap: .6rem; padding: .7rem 1.6rem .7rem 1rem; margin: .2rem 0 1rem; font-weight: 800; font-size: 1.15rem; line-height: 1.25; color: var(--amber-ink); rotate: -1.5deg; }
.addr-label::before { content: ""; position: absolute; inset: -4px -10px; z-index: -1; background: var(--amber); -webkit-mask: var(--brush) center / 100% 100% no-repeat; mask: var(--brush) center / 100% 100% no-repeat; }
.addr-label .ico { width: 34px; height: 34px; flex: none; }
.socials { list-style: none; padding: 0; margin: .4rem 0 0; display: flex; flex-wrap: wrap; gap: .7rem; }
.soc-btn { display: inline-flex; align-items: center; gap: .7rem; padding: .7rem 1.1rem; font-weight: 700; text-decoration: none; background: var(--plate); border-radius: 12px; transition: transform .25s var(--pop), background .2s; }
.soc-btn:hover { color: #fff; background: var(--plate-hi); transform: translateX(4px) rotate(-1deg); }
.soc { width: 24px; height: 24px; flex: none; }

/* ---------- events: poster wall ---------- */
.posters { display: flex; flex-wrap: wrap; justify-content: center; gap: clamp(2rem, 4vw, 2.8rem) clamp(1.6rem, 3vw, 2.4rem); }
.posters > .poster { flex: 0 1 360px; }
.poster { display: grid; align-content: start; gap: 1rem; scroll-margin-top: 1rem; }
.poster-art { position: relative; border-radius: 10px; overflow: hidden; box-shadow: 0 20px 44px rgba(0, 0, 0, .6); transition: transform .4s var(--pop); }
.poster:nth-child(odd) .poster-art { rotate: -1.2deg; } .poster:nth-child(even) .poster-art { rotate: 1.2deg; }
.poster:hover .poster-art { transform: translateY(-6px) scale(1.015); }
.poster .poster-title { font-size: clamp(1.6rem, 2.6vw, 2.3rem); margin: 0; overflow-wrap: anywhere; }
.lang-ka .poster .poster-title { font-size: clamp(1.3rem, 2.2vw, 1.8rem); }
.poster-when { margin: 0; font-family: var(--label); font-size: 1.15rem; letter-spacing: .02em; text-transform: uppercase; color: var(--amber); }
.lang-ka .poster-when { text-transform: none; font-size: 1.05rem; }
.poster-when strong { color: #fff; font-weight: 600; }
.poster-body p:last-child { margin: 0; }
.free { white-space: nowrap; }
.follow { text-align: start; }

/* ---------- menu ---------- */
.jump ul { list-style: none; padding: 0; margin: 1.4rem 0 0; display: flex; flex-wrap: wrap; gap: .6rem .8rem; }
.jump a { position: relative; isolation: isolate; display: inline-block; padding: .35rem 1rem; text-decoration: none; font-family: var(--label); font-weight: 500; font-size: 1.05rem; text-transform: uppercase; letter-spacing: .03em; }
.lang-ka .jump a { text-transform: none; }
.jump a::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--plate); transform: skewX(-14deg); border-radius: 8px; transition: background .2s, transform .25s var(--pop); }
.jump a:hover { color: #fff; } .jump a:hover::before { background: var(--plate-hi); transform: skewX(-14deg) translateY(-2px); }
.menu-grid { columns: 2 380px; column-gap: 1.8rem; padding-top: 1.4rem; }
.menu-card { break-inside: avoid; margin: 0 0 1.8rem; padding: 1.3rem 1.4rem 1.4rem; background: var(--night-2); border: 2px solid var(--wood-2); border-radius: 16px; scroll-margin-top: 1rem; }
.menu-card-head { display: flex; align-items: center; gap: .8rem; margin-bottom: 1rem; }
.menu-card-head .ico { width: 56px; height: 56px; flex: none; }
.menu-card h2 { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; hyphens: auto; font-size: clamp(1.45rem, 5.6vw, 2.1rem); margin: 0; }
.lang-ka .menu-card h2 { font-size: 1.45rem; }
.dishes { list-style: none; padding: 0; margin: 0; display: grid; gap: .75rem; }
.dish-line, .opt { display: flex; align-items: baseline; gap: .5rem; }
.dish-name { font-weight: 600; }
.dots { flex: 1 1 1.5rem; min-width: 1.5rem; border-bottom: 2px dotted rgba(203, 185, 172, .45); transform: translateY(-.3em); }
.dish-price { flex: none; white-space: nowrap; font-family: var(--label); font-weight: 600; font-size: 1.12rem; color: var(--amber); font-variant-numeric: tabular-nums; }
.dish-meta { margin: .1rem 0 0; font-size: .92rem; line-height: 1.45; color: var(--muted); }
.opts { list-style: none; margin: .35rem 0 0; padding: 0 0 0 1rem; display: grid; gap: .3rem; border-inline-start: 3px solid var(--plate); }
.opt-name { font-weight: 400; }
.special { position: relative; isolation: isolate; display: flex; align-items: center; gap: 1.2rem; max-width: 46em; margin: 2rem 0 .5rem; padding: 1.4rem 2rem; color: var(--amber-ink); rotate: -1deg; }
.special::before { content: ""; position: absolute; inset: 0 -12px; z-index: -1; background: var(--amber); -webkit-mask: var(--brush) center / 100% 100% no-repeat; mask: var(--brush) center / 100% 100% no-repeat; }
.special .ico { width: 72px; height: 72px; flex: none; }
.special h2 { font-size: clamp(1.4rem, 3vw, 2rem); color: var(--amber-ink); text-shadow: none; -webkit-mask-image: none; mask-image: none; margin-bottom: .3rem; }
.special p { margin: 0; font-weight: 600; }
@media (max-width: 560px) { .special { flex-direction: column; align-items: flex-start; padding: 1.8rem 1.4rem; } }

/* ---------- contacts ---------- */
.contact-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.6rem; }
@media (min-width: 860px) { .contact-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; } }
.contact-card h2 { font-size: clamp(1.7rem, 3vw, 2.3rem); margin-bottom: 1rem; }
.lang-ka .contact-card h2 { font-size: 1.5rem; }
.contact-card h2.mt { margin-top: 1.8rem; }
.contact-card address p { margin-bottom: .8rem; }
.hours { width: 100%; border-collapse: collapse; font-family: var(--label); font-size: 1.25rem; }
.hours th, .hours td { padding: .5rem 0; border-bottom: 2px dotted rgba(203, 185, 172, .35); text-align: start; font-weight: 400; }
.hours td { text-align: end; font-weight: 600; color: var(--amber); }
.maps { margin-top: 1.5rem; }
/* map tabs are the poster's grey chevron plates; the open one turns amber */
.map-tabs { display: flex; flex-wrap: wrap; gap: .7rem 1rem; margin-bottom: 1rem; }
.map-tab { font: 500 1.05rem/1.2 var(--label); text-transform: uppercase; letter-spacing: .04em; }
.map-tab::before { background: var(--plate); transform: skewX(-14deg); }
.map-tab:hover::before { background: #5d5d5d; transform: skewX(-14deg) translateY(-2px); }
.map-tab[aria-pressed="true"] { color: var(--amber-ink); }
.map-tab[aria-pressed="true"]::before { background: var(--amber); }
.lang-ka .map-tab { text-transform: none; letter-spacing: 0; }
/* the drawn neighbourhood map fills the box until a real map is opened over it */
.map { position: relative; overflow: hidden; aspect-ratio: 2 / 1; background: #15100d; border: 2px solid var(--wood-2); border-radius: 18px; }
.locmap { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.locmap-tall { display: none; }
@media (max-width: 700px) { .map { aspect-ratio: 420 / 500; } .locmap-wide { display: none; } .locmap-tall { display: block; } }
.locmap .names text { font-family: var(--label); font-weight: 500; text-anchor: middle; letter-spacing: .04em; paint-order: stroke; stroke: #0b0807; stroke-width: 4px; stroke-linejoin: round; }
.lang-ka .locmap .names text { font-family: "Noto Sans Georgian", var(--body); letter-spacing: 0; }
.locmap .osm-st text { dominant-baseline: central; fill: #b9a99d; }
.locmap .osm-lm text { fill: var(--amber); }
.locmap .osm-lm .pr { dominant-baseline: central; fill: #8fb9c4; letter-spacing: .3em; }
.locmap .osm-lm .pk, .locmap .osm-wt text { fill: #8a9b84; }
.locmap .bar-tag rect { fill: var(--amber); }
.locmap .bar-tag text { font-family: var(--label); font-weight: 600; fill: var(--amber-ink); text-anchor: middle; letter-spacing: .05em; }
.locmap .sbar { fill: #b9a99d; stroke: #b9a99d; stroke-width: .8px; }
.locmap .sbar text { font-family: var(--label); font-size: 12px; stroke: none; }
.locmap .route { animation: march 1.2s linear infinite; }
@keyframes march { to { stroke-dashoffset: -20; } }
.locmap .pin-ring { transform-box: fill-box; transform-origin: center; animation: ping 2.4s ease-out infinite; }
@keyframes ping { 0% { transform: scale(.6); opacity: 1; } 100% { transform: scale(3.2); opacity: 0; } }
.map-credit { margin: .45rem 0 0; font-size: .8rem; text-align: end; color: var(--muted); }
.map-credit a { color: var(--muted); }
.map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; z-index: 2; }
.map-links { margin-bottom: 0; }

/* ---------- FAQ ---------- */
.faq-list { display: grid; gap: 1.1rem; max-width: 54em; }
.qa-full { padding: 1.1rem 1.4rem 1.2rem; background: var(--night-2); border: 2px solid var(--wood-2); border-inline-start: 6px solid var(--amber); border-radius: 14px; }
.qa-full h2 { font-size: 1.3rem; font-weight: 800; line-height: 1.25; margin-bottom: .4rem; }
.qa-full p { margin: 0; color: #e3d3c8; }

/* ---------- footer ---------- */
.site-footer { position: relative; padding: 1rem 0 2.5rem; }
.paw-trail { display: flex; gap: clamp(.6rem, 3vw, 2.4rem); justify-content: center; margin: 1rem 0 2.2rem; }
.paw-trail .paw { width: 34px; height: 34px; fill: #6b1d1d; rotate: 80deg; transition: opacity .3s, transform .35s var(--pop); transition-delay: calc(var(--i) * .12s); }
.paw-trail .paw.up { transform: translateY(-10px); } .paw-trail .paw.down { transform: translateY(10px); rotate: 100deg; }
html.js:not(.no-hide) .paw-trail:not(.in) .paw { opacity: 0; transform: scale(.3); }
.footer-grid { display: grid; gap: 1.6rem; }
@media (min-width: 820px) { .footer-grid { grid-template-columns: 1.3fr 1.2fr 1fr; } }
.footer-brand { display: flex; gap: 1rem; align-items: flex-start; }
.footer-brand .mark { width: 76px; height: 76px; flex: none; }
.footer-name { font-weight: 900; text-transform: uppercase; font-size: 1.5rem; line-height: 1; margin-bottom: .4rem; text-shadow: var(--outline); }
.lang-ka .footer-name { text-transform: none; }
.site-footer address { font-style: normal; }
.site-footer address p { margin: 0 0 .35rem; }
.footer-links { list-style: none; padding: 0; margin: 0; display: grid; gap: .1rem; font-weight: 600; }
.footer-links a, .footer-meta a { display: inline-flex; align-items: center; gap: .45rem; padding-block: .35rem; }
.footer-links .soc { width: 20px; height: 20px; }
.footer-meta { margin-top: 1.6rem; color: var(--muted); font-size: .92rem; }

/* mobile call bar slides up after the first screen */
.cta-bar { display: none; }
@media (max-width: 760px) {
  body { padding-bottom: 5.6rem; }
  .cta-bar { position: fixed; z-index: 20; inset: auto 0 0 0; display: flex; gap: 1.2rem; padding: .8rem 1.4rem calc(.8rem + env(safe-area-inset-bottom)); background: rgba(11, 8, 7, .96); border-top: 2px solid var(--wood-2); transition: transform .45s var(--ease); }
  .cta-bar .btn { flex: 1; }
  html.js:not(.no-hide) .cta-bar:not(.show) { transform: translateY(110%); }
  html.js .cta-bar:not(.show):focus-within { transform: none; }
  html { scroll-padding-bottom: 6rem; }
}

/* ---------- root chooser and 404 ---------- */
.chooser { position: relative; overflow: hidden; min-height: 100svh; display: grid; place-items: center; background: radial-gradient(120% 70% at 50% 0%, #3a2016 0%, #1a0f0b 45%, var(--night) 80%); }
.chooser-inner { position: relative; z-index: 1; display: grid; justify-items: center; gap: .6rem; text-align: center; padding: 3rem 0; }
.chooser .hero-badge { width: min(320px, 70vw); }
.chooser h1 { font-size: clamp(2.6rem, 8vw, 5.4rem); display: grid; gap: .3rem; }
.chooser .h1-alt { font-size: .55em; color: var(--amber); }
.lost { position: relative; overflow: hidden; min-height: 100svh; display: grid; place-items: center; text-align: center; background: #000; padding: 2rem var(--gutter); }
.lost-paw { position: absolute; width: min(620px, 130vw); left: 50%; top: 50%; translate: -50% -50%; fill: var(--paw); }
.lost-body { position: relative; z-index: 1; max-width: 34em; }
.lost-code { font-size: clamp(5rem, 18vw, 10rem); line-height: .9; }
.lost h1 { font-size: clamp(1.6rem, 4vw, 2.4rem); margin: .6rem 0 .8rem; }

/* ---------- scroll reveals ---------- */
/* Blocks drop in like posters being pinned to a wall. Hidden states live only while JS is alive (no-hide guard). */
.reveal { transition: opacity .55s var(--ease), transform .7s var(--pop), clip-path .7s var(--ease); transition-delay: calc(var(--i, 0) * .09s); }
/* Not inset(... 100%): Chromium's IntersectionObserver honours the target's own clip-path, so a fully clipped block never intersects. */
html.js:not(.no-hide) .reveal:not(.in) { opacity: 0; transform: translateY(26px) rotate(-1.5deg); clip-path: inset(0 0 96% 0); }
html.js .reveal.in { clip-path: inset(-40px -40px -40px -40px); }
.plate { transition: opacity .45s var(--ease), transform .6s var(--pop); transition-delay: calc(.15s + var(--i, 0) * .08s); }
html.js:not(.no-hide) .week-board:not(.in) .plate { opacity: 0; transform: translateX(-40px); }
html.js:not(.no-hide) .week-board:not(.in) .plate:nth-child(even) { transform: translateX(40px); }
html.js:not(.no-hide) .paw-trail.reveal:not(.in) { transform: none; clip-path: none; opacity: 1; }
html.js:not(.no-hide) .notice.reveal:not(.in) { transform: none; clip-path: inset(0 0 96% 0); }
.peek { transition: transform .8s .4s var(--pop); }
html.js:not(.no-hide) .week-board:not(.in) .peek { transform: translateY(70%); }

/* page transitions (Chromium/Safari): the next page opens through a circle, like the end card of an old cartoon */
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: none; }
::view-transition-new(root) { animation: iris .55s cubic-bezier(.6, 0, .2, 1) both; }
@keyframes iris { from { clip-path: circle(0% at 50% 30%); } to { clip-path: circle(150% at 50% 30%); } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  html.js:not(.no-hide) .reveal:not(.in) { opacity: 1; transform: none; clip-path: none; }
  html.js:not(.no-hide) .rating:not(.in) .rp, html.js:not(.no-hide) .paw-trail:not(.in) .paw { opacity: 1; transform: none; }
  html.js:not(.no-hide) .notice:not(.in) .notice-paw { scale: 1; opacity: 1; }
  html.js:not(.no-hide) .week-board:not(.in) .peek { transform: none; }
  html.js:not(.no-hide) .week-board:not(.in) .plate { opacity: 1; transform: none; }
  html.js:not(.no-hide) .cta-bar:not(.show) { transform: none; }
  ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation: none !important; }
}

/* ---------- guest reviews: notes pinned to the board ---------- */
.reviews .quotes { display: grid; gap: 1.2rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); margin-top: 1.6rem; }
.quote { margin: 0; display: flex; flex-direction: column; gap: .7rem; padding: 1.2rem 1.3rem 1.1rem; background: linear-gradient(160deg, #24170f, var(--wood)); border: 2px solid var(--wood-2); border-radius: 14px; box-shadow: 0 10px 24px rgba(0, 0, 0, .45); }
.quote:nth-child(odd) { rotate: -.8deg; } .quote:nth-child(even) { rotate: .7deg; }
.quote-head { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; }
.stars { color: var(--amber); letter-spacing: .12em; font-size: 1.1rem; line-height: 1; }
.quote-who { font-family: var(--label); font-weight: 500; text-transform: uppercase; letter-spacing: .04em; color: var(--ink); text-align: right; }
.quote blockquote { margin: 0; flex: 1; white-space: pre-line; overflow-wrap: anywhere; }
.quote blockquote p { margin: 0; }
.quote-src { display: flex; flex-wrap: wrap; align-items: baseline; gap: .15rem .6rem; font-size: .92rem; color: var(--muted); }
.quote-src a { color: var(--amber); font-weight: 700; text-decoration: underline; text-underline-offset: 4px; }
.quote-src time { margin: 0; }
.reviews .more { display: flex; flex-wrap: wrap; gap: .8rem 1.2rem; }
.quote-tr { font-style: italic; }
