/* DOMA24 — тёплый лён, сочный апельсин, графит */
:root {
  --linen: #F4EFE6;
  --cream: #FBF6EF;
  --powder: #EFE6DA;
  --peach: #F8D3B4;
  --apricot: #E39A62;
  --orange: #D4470F;
  --orange-bright: #E36A28;
  --orange-deep: #C2410C;
  --orange-ink: #9A3412;
  --terra: #D4470F;
  --deep: #3C3935;
  --cocoa: #2C2A28;
  --muted: #5E5A56;
  --graphite: #2A2826;
  --line: #E6DDD2;
  --white: #fff;
  --ok: #2F7D4F;
  --bad: #C23B2E;
  --r: 22px;
  --r-sm: 14px;
  --shadow: 0 24px 50px -24px rgba(36, 32, 28, .32);
  --shadow-sm: 0 12px 26px -16px rgba(36, 32, 28, .26);
  --grad: linear-gradient(180deg, #D4470F, #B83A0A);
  --font-d: 'Commissioner', 'Manrope', system-ui, sans-serif;
  --font: 'Manrope', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --ease: cubic-bezier(.22, 1, .36, 1);
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --fs-display: clamp(1.65rem, 2.4vw, 2.2rem);
  --fs-h1: clamp(1.5rem, 2.1vw, 2.05rem);
  --fs-h2: 1.5rem;
  --fs-h3: 1.12rem;
  --fs-ui: .9375rem;
  --lh-body: 1.5;
  --lh-head: 1.15;
  --track-head: -.03em;
  --space-section: 48px;
  --space-block: 22px;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; }
body {
  margin: 0; font-family: var(--font); color: var(--cocoa); line-height: var(--lh-body); font-size: 16px;
  font-optical-sizing: auto;
  background:
    radial-gradient(880px 460px at 0% -8%, rgba(248, 211, 180, .5), transparent 62%),
    radial-gradient(620px 380px at 100% 0%, rgba(212, 71, 15, .07), transparent 58%),
    var(--linen);
  background-attachment: fixed;
  opacity: 0; transition: opacity .5s var(--ease);
  overflow-x: hidden;
}
body.ready { opacity: 1; }
body.no-scroll { overflow: hidden; }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; touch-action: manipulation; }
button { font: inherit; color: inherit; cursor: pointer; touch-action: manipulation; user-select: none; -webkit-user-select: none; }
h1, h2, h3, h4 {
  font-family: var(--font-d); line-height: var(--lh-head); margin: 0;
  letter-spacing: var(--track-head); font-weight: 600; font-optical-sizing: auto;
  overflow-wrap: break-word; text-wrap: balance;
}
h1 { font-weight: 700; }
p { margin: 0; line-height: var(--lh-body); }
ul { margin: 0; padding: 0; list-style: none; }
.wrap { width: min(1280px, 100% - 40px); margin-inline: auto; }
.ic { width: 1.15em; height: 1.15em; flex: none; vertical-align: -.2em; }
:focus-visible { outline: 3px solid rgba(212, 71, 15, .55); outline-offset: 2px; border-radius: 8px; }
::selection { background: var(--peach); color: var(--cocoa); }
.only-m { display: none !important; }
[hidden] { display: none !important; }
.skip { position: absolute; left: -999px; }

/* ---------- кнопки (объёмные) ---------- */
.btn {
  --bg: var(--powder); --bd: #E4D5C4; --fg: var(--cocoa);
  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: .55em;
  padding: .78em 1.35em; border: 0; border-radius: 16px; font-family: var(--font-d); font-weight: 650; font-size: var(--fs-ui); letter-spacing: -.01em;
  background: var(--bg); color: var(--fg); box-shadow: 0 4px 0 var(--bd), 0 12px 22px -10px rgba(36, 32, 28, .28);
  transition: transform .16s var(--ease), box-shadow .16s var(--ease), filter .16s; overflow: hidden; white-space: nowrap;
  user-select: none; -webkit-user-select: none;
}
.btn:active { transform: translateY(3px) scale(.98); box-shadow: 0 1px 0 var(--bd), 0 4px 8px -4px rgba(36, 32, 28, .34); }
a.btn { touch-action: manipulation; }
a.btn:active,
a.btn:active:visited { transform: none; }
.btn:visited { color: var(--fg); }
.btn[disabled] { opacity: .6; pointer-events: none; }
.btn-primary { --bg: var(--grad); --bd: var(--orange-ink); --fg: #fff; background: var(--bg); text-shadow: 0 1px 0 rgba(80, 24, 0, .35); }
.btn-primary::after {
  content: ''; position: absolute; inset: 0; background: linear-gradient(115deg, transparent 35%, rgba(255, 255, 255, .45) 50%, transparent 65%);
  transform: translateX(-120%); transition: transform .7s var(--ease);
}
.btn-soft { --bg: #F4EBE1; --bd: #E0D0C0; --fg: var(--cocoa); }
.btn-soft:active,
.btn-soft:active:visited { --bg: var(--grad); --bd: #9A3412; --fg: #fff; }
.btn-ghost { --bg: var(--cream); --bd: var(--line); border: 1px solid var(--line); }
.btn-danger { --bg: #FBE1DB; --bd: #E5B2A7; --fg: #A33A2A; }
.btn-ok { --bg: #DDF0E3; --bd: #B3D6BF; --fg: #2F6E48; }
.btn-sm { padding: .62em 1.1em; font-size: .85rem; border-radius: 13px; }
.btn-lg { padding: 1.05em 2em; font-size: 1.05rem; border-radius: 18px; }
.btn-block { width: 100%; }
.link-btn { background: none; border: 0; padding: 4px 0; color: var(--orange-deep); font-weight: 700; font-size: .875rem; text-decoration: underline; text-underline-offset: 3px; }

/* ---------- шапка ---------- */
.site-header { position: sticky; top: 0; z-index: 60; padding: 12px 0; }
.site-header.scrolled { background: #F4EFE6; box-shadow: 0 1px 0 #E6DDD2; }
.header-in { display: flex; align-items: center; gap: 22px; }
.brand { display: inline-flex; align-items: center; gap: 10px; font-family: var(--font-d); font-weight: 700; font-size: 1.28rem; letter-spacing: -.02em; }
.brand { flex: none; }
.brand-mark { width: auto; height: 78px; max-width: none; flex: none; filter: drop-shadow(0 8px 10px rgba(92, 56, 40, .28)); transition: transform .16s var(--ease); }
@media (hover: hover) and (pointer: fine) {
  .brand:hover .brand-mark { transform: translateY(-2px); }
  .btn:hover { transform: translateY(-2px); box-shadow: 0 6px 0 var(--bd), 0 18px 26px -10px rgba(36, 32, 28, .34); }
  a.btn:hover { transform: none; }
  .btn-soft:hover { --bg: #F8D3B4; --bd: #C2410C; --fg: #9A3412; }
  .btn-primary:hover::after { transform: translateX(120%); }
  .nav a:hover { color: var(--cocoa); background: rgba(226, 199, 176, .45); }
  .nav a.active:hover { color: #fff; background: var(--grad); }
  .tool-btn:hover { background: #fff; border-color: var(--apricot); }
}
.brand-word b { color: var(--orange); }
.brand-light .brand-mark { background: rgba(248, 244, 238, .94); border-radius: 16px; padding: 2px 6px; }
.nav { display: flex; gap: 4px; margin-left: 12px; padding: 5px; background: rgba(255, 255, 255, .6); border: 1px solid var(--line); border-radius: 999px; }
.nav a { padding: .52em 1.05em; border-radius: 999px; font-family: var(--font-d); font-weight: 650; font-size: var(--fs-ui); letter-spacing: -.015em; color: var(--muted); transition: background-color .2s var(--ease), color .2s var(--ease), box-shadow .2s var(--ease); }
.nav a.active { color: #fff; background: var(--grad); box-shadow: 0 4px 0 var(--orange-ink), 0 8px 14px -6px rgba(154, 52, 18, .45); }
.nav-mobile-extra { display: none; }
.header-tools { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.tool-btn { white-space: nowrap; display: inline-flex; align-items: center; gap: 6px; padding: .5em .8em; background: rgba(255, 255, 255, .65); border: 1px solid var(--line); border-radius: 999px; font-family: var(--font-d); font-weight: 650; font-size: .875rem; letter-spacing: -.01em; position: relative; transition: background-color .2s, border-color .2s; }
.tool-btn .ic { width: 1.1em; height: 1.1em; }
.tool-login.is-in { background: var(--powder); }
.fav-count { position: absolute; top: -6px; right: -4px; min-width: 22px; height: 22px; padding: 0 5px; border-radius: 99px; background: var(--orange-deep); color: #fff; font-size: .8125rem; display: grid; place-items: center; box-shadow: 0 2px 6px rgba(0, 0, 0, .2); }
.dd { position: relative; }
.dd .tool-btn .ic:last-child { transition: transform .25s; }
.dd.open .tool-btn .ic:last-child { transform: rotate(180deg); }
.dd-menu { position: absolute; right: 0; top: calc(100% + 8px); min-width: 170px; padding: 6px; background: #fff; color: var(--cocoa); border: 1px solid var(--line); border-radius: 16px; box-shadow: var(--shadow); opacity: 0; transform: translateY(-6px) scale(.97); pointer-events: none; transition: all .22s var(--ease); z-index: 70; }
.dd.open .dd-menu { opacity: 1; transform: none; pointer-events: auto; }
.dd-menu a, .dd-menu button { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; padding: .6em .9em; border: 0; background: none; border-radius: 10px; font-weight: 600; font-size: .9rem; }
.dd-menu a svg, .dd-menu button svg { width: 16px; height: 16px; flex: none; border-radius: 5px; }
.dd-menu a:hover, .dd-menu button:hover { background: var(--powder); }
#dd-cur .dd-menu { min-width: 148px; padding: 6px; }
#dd-cur .dd-menu button { gap: 8px; padding: .32em .6em .32em .32em; font-weight: 750; font-size: .82rem; }
#dd-cur .cur-mark { width: 15px; height: 15px; border-radius: 50%; overflow: hidden; display: block; flex: none; box-shadow: 0 0 0 1px rgba(44, 42, 40, .08); }
#dd-cur .cur-mark svg { width: 15px; height: 15px; display: block; }
#dd-cur .dd-menu button .cur-mark { width: 15px; height: 15px; }
#dd-cur .dd-menu button .cur-mark svg { width: 15px; height: 15px; }
#dd-cur .dd-menu button.on { background: var(--powder); }
#dd-cur .dd-menu button.on::after { content: ""; margin-left: auto; width: 7px; height: 7px; border-radius: 50%; background: var(--orange); box-shadow: 0 0 0 3px #F6D3C4; }
.burger { display: none; width: 46px; height: 46px; border-radius: 14px; background: #fff; border: 1px solid var(--line); flex-direction: column; justify-content: center; align-items: center; gap: 5px; margin-left: auto; }
.burger i { width: 20px; height: 2px; background: var(--cocoa); border-radius: 2px; transition: .3s var(--ease); }
.menu-open .burger i:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.menu-open .burger i:nth-child(2) { opacity: 0; }
.menu-open .burger i:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ---------- hero ---------- */
.hero {
  position: relative; padding: 36px 0 88px; overflow: hidden;
  background-color: var(--linen);
  background-image:
    linear-gradient(90deg, rgba(244, 239, 230, .98) 0%, rgba(244, 239, 230, .98) 36%, rgba(251, 246, 239, .8) 50%, rgba(244, 239, 230, .36) 66%, rgba(244, 239, 230, .08) 84%, rgba(244, 239, 230, 0) 100%),
    linear-gradient(180deg, rgba(251, 246, 239, .16) 0%, rgba(244, 239, 230, 0) 28%, rgba(244, 239, 230, .55) 100%),
    url("../assets/hero-bg.jpg?v=7");
  background-repeat: no-repeat;
  background-size: auto, auto, auto 132%;
  background-position: 0 0, 0 0, calc(100% + 48px) 46%;
}
@media (min-width: 761px) {
  .hero-copy { max-width: min(26rem, 32vw); }
  body[data-page="home"] .hero-copy { max-width: min(34rem, 44vw); }
}
.blob { position: absolute; border-radius: 50%; filter: blur(50px); opacity: .2; z-index: 0; animation: drift 16s cubic-bezier(0.77, 0, 0.175, 1) infinite alternate; pointer-events: none; }
.blob.b1 { width: 420px; height: 420px; background: #F8D3B4; left: -120px; top: -80px; }
.blob.b2 { width: 360px; height: 360px; background: #E36A28; opacity: .12; right: 5%; top: 40px; animation-delay: -5s; }
.blob.b3 { width: 300px; height: 300px; background: #EFE6DA; left: 40%; bottom: -120px; animation-delay: -9s; }
@keyframes drift { to { transform: translate(60px, 40px) scale(1.15); } }
.hero-grid { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1fr); gap: 30px; align-items: center; }
.hero-grid > * { min-width: 0; }
@media (max-width: 760px) { .hero h1 em { white-space: normal; } .hero { overflow: hidden; } }
.eyebrow { display: inline-flex; align-items: center; gap: 8px; padding: .4em .9em; background: rgba(255, 255, 255, .75); border: 1px solid var(--line); border-radius: 99px; font-family: var(--font-d); font-weight: 650; font-size: .8125rem; letter-spacing: .02em; color: var(--terra); margin-bottom: 14px; }
.eyebrow i { width: 8px; height: 8px; border-radius: 50%; background: var(--ok); box-shadow: 0 0 0 0 rgba(47, 125, 79, .55); animation: ping 2s infinite; }
@keyframes ping { to { box-shadow: 0 0 0 10px rgba(47, 125, 79, 0); } }
.hero h1 { font-size: var(--fs-display); font-weight: 700; letter-spacing: var(--track-head); margin-bottom: 12px; }
.hero h1 em { font-style: normal; position: relative; color: var(--terra); }
.hero h1 em::after { content: ''; position: absolute; left: 0; right: 0; bottom: -.08em; height: .3em; background: var(--peach); z-index: -1; border-radius: 99px; transform-origin: left; animation: grow 1s .5s var(--ease) both; }
@keyframes grow { from { transform: scaleX(0); } }
.hero-title {
  display: flex; flex-direction: column; align-items: flex-start;
  gap: .08em; margin: 0 0 14px; text-wrap: wrap;
}
.hero-title .ht-types,
.hero-title .ht-offer,
.hero-title .ht-place { display: block; }
.hero-title .ht-types {
  font-size: clamp(1.28rem, 2.15vw, 1.72rem);
  font-weight: 750; letter-spacing: -.028em; word-spacing: .46em; line-height: 1.12;
  color: var(--cocoa);
}
.hero-title .ht-offer {
  position: relative; z-index: 0;
  font-size: clamp(1.12rem, 1.85vw, 1.38rem);
  font-weight: 500; letter-spacing: -.018em; line-height: 1.12;
  color: var(--terra);
}
.hero-title .ht-offer::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: .05em;
  height: .22em; background: var(--peach); z-index: -1; border-radius: 99px;
  transform-origin: left; animation: grow 1s .45s var(--ease) both;
}
.hero-title .ht-place {
  margin-top: .22em;
  font-size: clamp(1.08rem, 1.55vw, 1.28rem);
  font-weight: 650; letter-spacing: .01em; line-height: 1.25;
  color: var(--deep);
}
.hero-sub { font-size: 1.05rem; line-height: 1.5; color: var(--muted); max-width: 36ch; margin-bottom: 20px; font-weight: 500; }
.hero-stats { display: flex; gap: 22px; flex-wrap: wrap; margin-top: 20px; }
.hero-stats div b { display: block; font-family: var(--font-d); font-size: 1.55rem; letter-spacing: -.03em; color: var(--terra); }
.hero-stats div span { font-size: .85rem; color: var(--muted); font-weight: 600; }
.hero-art { display: none; }
.logo-stage { position: relative; width: min(560px, 100%); aspect-ratio: 780 / 360; transform-style: preserve-3d; transform: rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)); transition: transform .25s cubic-bezier(0.23, 1, 0.32, 1); animation: floaty 7s cubic-bezier(0.77, 0, 0.175, 1) infinite; }
.logo-stage img { position: relative; width: 100%; height: 100%; filter: drop-shadow(0 22px 18px rgba(92, 56, 40, .28)); }
.logo-disc { position: absolute; inset: 8% 0; border-radius: 36px; background: radial-gradient(circle at 30% 20%, rgba(255, 255, 255, .82), rgba(248, 244, 238, .55) 60%, transparent 78%); transform: translateZ(-20px); }
@keyframes floaty { 0%, 100% { translate: 0 0; } 50% { translate: 0 -10px; } }
.orbit { z-index: 4; position: absolute; display: inline-flex; align-items: center; gap: 8px; padding: .65em 1em; background: rgba(255, 255, 255, .88); backdrop-filter: blur(8px); border: 1px solid #fff; border-radius: 16px; font-weight: 700; font-size: .82rem; box-shadow: var(--shadow-sm); animation: floaty 5s ease-in-out infinite; }
.orbit .ic { color: var(--orange); }
.orbit.o1 { left: -2%; top: 14%; animation-delay: -1s; } .orbit.o2 { right: -2%; top: 30%; animation-delay: -2.5s; } .orbit.o3 { left: 6%; bottom: 8%; animation-delay: -4s; }
.search-wrap { position: relative; z-index: 3; margin-top: -72px; }
.search {
  display: grid; grid-template-columns: 1.1fr 1fr 1fr 1.3fr auto; gap: 6px; padding: 10px; background: rgba(255, 255, 255, .92); backdrop-filter: blur(14px);
  border: 1px solid #fff; border-radius: 28px; box-shadow: 0 30px 60px -28px rgba(36, 32, 28, .28), 0 0 0 6px rgba(212, 71, 15, .1);
}
.sf { position: relative; display: flex; flex-direction: column; justify-content: center; padding: 10px 18px; border-radius: 20px; transition: background .2s; min-width: 0; }
.sf:hover, .sf:focus-within { background: var(--cream); }
.sf > span { display: flex; align-items: center; gap: 8px; font-size: .8125rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.sf > span .ic { width: 40px; height: 40px; padding: 8px; border-radius: 12px; background: var(--orange); color: #fff; stroke-width: 2.2; box-sizing: border-box; }
.sf select, .sf input, .sf > button { border: 0; background: none; font: inherit; font-weight: 700; font-size: 1rem; color: var(--cocoa); padding: 4px 0 0; outline: none; width: 100%; text-align: left; min-width: 0; }
.sf input::placeholder { color: var(--muted); font-weight: 650; }
.sf-count input { font-variant-numeric: tabular-nums; caret-color: var(--orange); }
.sf select { appearance: none; cursor: pointer; }
.sf-type { z-index: 5; }
.type-btn { cursor: pointer; }
.type-native { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; overflow: hidden; clip: rect(0, 0, 0, 0); pointer-events: none; }
.type-pop { position: absolute; left: 8px; right: 8px; top: calc(100% - 6px); z-index: 40; display: grid; gap: 4px; padding: 8px; background: #fff; border: 1px solid var(--line); border-radius: 18px; box-shadow: var(--shadow); }
.type-pop[hidden] { display: none; }
.type-pop button { min-height: 44px; padding: .55em .9em; border: 0; border-radius: 12px; background: transparent; color: var(--cocoa); font: inherit; font-weight: 750; text-align: left; cursor: pointer; }
.type-pop button:hover, .type-pop button:focus-visible { background: var(--peach); color: var(--orange-ink); outline: none; }
.type-pop button[aria-selected="true"] { background: var(--grad); color: #fff; box-shadow: 0 3px 0 var(--orange-ink); }
.type-pop button[aria-selected="true"]:hover, .type-pop button[aria-selected="true"]:focus-visible { background: var(--grad); color: #fff; }
.search-hint { display: block; margin: 2px 0 0; color: var(--orange-ink); font-style: normal; font-weight: 750; font-size: .82rem; line-height: 1.3; }
.search-hint[hidden], .party-hint[hidden], .cap-hint[hidden] { display: none; }
.party-hint, .cap-hint { margin: -6px 0 12px; color: var(--orange-ink); font-weight: 750; font-size: .9rem; line-height: 1.35; }
.bk-warn, .bk-path { margin: 8px 0 0; color: var(--orange-ink); font-weight: 750; font-size: .92rem; line-height: 1.4; }
.bk-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 18px; flex-wrap: wrap; }
.ptable-head + .party-hint { margin-top: 8px; }
.search-go { align-self: stretch; padding-inline: 2em; border-radius: 20px; }
body[data-page="home"] .search { padding: 14px; gap: 8px; border-radius: 32px; }
body[data-page="home"] .sf { padding: 14px 20px; border-radius: 22px; }
body[data-page="home"] .sf > span { font-size: .875rem; gap: 10px; }
body[data-page="home"] .sf > span .ic { width: 44px; height: 44px; padding: 9px; border-radius: 13px; }
body[data-page="home"] .sf select,
body[data-page="home"] .sf input,
body[data-page="home"] .sf > button { font-size: 1.0625rem; padding-top: 6px; }
body[data-page="home"] .search-go { padding-inline: 2.2em; border-radius: 22px; font-size: 1.05rem; }
.guest-pop { position: absolute; left: 0; top: calc(100% + 8px); width: 290px; padding: 14px; background: #fff; border: 1px solid var(--line); border-radius: 18px; box-shadow: var(--shadow); z-index: 20; }
.guest-note { margin: 10px 0 0; color: var(--muted); font-size: .82rem; font-weight: 650; line-height: 1.35; }
.guest-pop .link-btn { display: inline-flex; margin-top: 6px; }
.guest-pop .link-btn[hidden] { display: none; }
.step-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 0; font-weight: 600; font-size: .92rem; }
.stepper { display: inline-flex; align-items: center; gap: 10px; }
.stepper button { width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--line); background: var(--cream); display: grid; place-items: center; transition: all .2s; }
.stepper button:hover { background: var(--peach); border-color: var(--apricot); transform: scale(1.08); }
.stepper b { min-width: 24px; text-align: center; font-family: var(--font-d); font-size: .95rem; }

/* ---------- каталог ---------- */
.section { padding: var(--space-section) 0; position: relative; }
.section-head { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: var(--space-block); flex-wrap: wrap; }
.section-head h2 { font-size: var(--fs-display); }
.section-head p { color: var(--muted); max-width: 54ch; margin-top: 8px; font-size: 1.02rem; line-height: 1.5; }
.kicker { display: inline-block; font-family: var(--font-d); font-size: .78rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--orange); margin-bottom: 8px; }
#catalog { padding: 40px 0 20px; }
.cat-bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; scroll-margin-top: 90px; }
.found { font-family: var(--font-d); font-size: 1.12rem; letter-spacing: -.02em; } .found b { color: var(--terra); }
.cat-tools { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.sort { position: relative; display: inline-flex; align-items: center; }
.sort-btn {
  position: relative; min-height: 38px; padding: .4em 2em .4em .9em; border: 1px solid var(--line); border-radius: 13px;
  background: var(--cream); font-family: var(--font); font-size: .88rem; font-weight: 650; color: var(--cocoa);
  line-height: 1.2; text-align: left; cursor: pointer;
}
.sort-btn::after {
  content: ''; position: absolute; right: 12px; top: 50%; width: 7px; height: 7px; margin-top: -5px;
  border-right: 1.8px solid var(--muted); border-bottom: 1.8px solid var(--muted); transform: rotate(45deg); pointer-events: none;
}
.sort-pop {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 50; min-width: max(100%, 196px);
  display: grid; gap: 3px; padding: 6px; background: #fff; border: 1px solid var(--line);
  border-radius: 16px; box-shadow: var(--shadow);
}
.sort-pop[hidden] { display: none; }
.sort-pop button {
  min-height: 40px; padding: .4em .85em; border: 0; border-radius: 11px; background: none;
  font-family: var(--font); font-size: .88rem; font-weight: 650; line-height: 1.25;
  color: var(--cocoa); text-align: left; cursor: pointer;
}
.sort-pop button[aria-selected="true"] { background: var(--grad); color: #fff; box-shadow: 0 2px 0 var(--orange-ink); }
.cat-grid { display: grid; grid-template-columns: 300px 1fr; gap: 28px; align-items: start; }
.filters { position: sticky; top: 86px; max-height: calc(100vh - 106px); overflow: auto; padding: 22px; background: rgba(255, 255, 255, .8); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow-sm); scrollbar-width: thin; scrollbar-color: var(--peach) transparent; }
.filters-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.filters-head h2 { font-size: 1.1rem; }
.filters-x, .filters-apply { display: none; }
.fgroup { border: 0; border-top: 1px dashed var(--line); margin: 0; padding: 16px 0 12px; min-width: 0; }
.fgroup legend { font-weight: 800; font-size: .8125rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); padding: 0 8px 0 0; float: left; width: 100%; margin-bottom: 8px; }
.fgroup > * { clear: both; }
.chk { display: flex; align-items: center; gap: 10px; padding: 5px 0; cursor: pointer; font-weight: 600; font-size: .92rem; }
.chk input { position: absolute; opacity: 0; pointer-events: none; }
.chk i { width: 20px; height: 20px; border-radius: 7px; border: 2px solid #E4CDB8; background: #fff; display: grid; place-items: center; transition: all .2s var(--ease); flex: none; }
.chk i::after { content: ''; width: 9px; height: 5px; border: 2.5px solid #fff; border-top: 0; border-right: 0; transform: rotate(-45deg) scale(0); transition: transform .2s var(--ease); margin-top: -2px; }
.chk input:checked + i { background: var(--orange); border-color: var(--orange); }
.chk input:checked + i::after { transform: rotate(-45deg) scale(1); }
.chk input:focus-visible + i { outline: 3px solid rgba(212, 71, 15, .5); outline-offset: 2px; }
.chk:hover i { border-color: var(--apricot); }
.type-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.tchip { display: inline-flex; align-items: center; gap: 6px; padding: .55em .95em; border-radius: 99px; border: 1.5px solid var(--line); background: #fff; font-weight: 700; font-size: .85rem; transition: all .2s var(--ease); }
.tchip:hover { border-color: var(--apricot); transform: translateY(-1px); }
.tchip.on { background: var(--orange); color: #fff; border-color: var(--orange); box-shadow: 0 6px 12px -6px rgba(199, 90, 31, .7); }
.range-top { font-size: .95rem; font-weight: 700; margin-bottom: 6px; } .range-top b { color: var(--terra); }
input[type=range] { width: 100%; appearance: none; height: 8px; border-radius: 99px; background: linear-gradient(90deg, var(--peach), var(--orange)); outline-offset: 6px; }
input[type=range]::-webkit-slider-thumb { appearance: none; width: 26px; height: 26px; border-radius: 50%; background: #fff; border: 5px solid var(--orange); box-shadow: 0 4px 10px rgba(154, 52, 18, .35); cursor: grab; transition: transform .2s; }
input[type=range]::-webkit-slider-thumb:hover { transform: scale(1.15); }
input[type=range]::-moz-range-thumb { width: 18px; height: 18px; border-radius: 50%; background: #fff; border: 5px solid var(--orange); }
.more { margin-bottom: 6px; }
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 24px; }
.skeleton { height: 480px; border-radius: var(--r); background: linear-gradient(100deg, #F3EBE1 30%, #FFF8F2 50%, #F3EBE1 70%); background-size: 300% 100%; animation: shimmer 1.4s linear infinite; }
@keyframes shimmer { to { background-position: -150% 0; } }
.empty { grid-column: 1 / -1; text-align: center; padding: 60px 20px; background: rgba(255, 255, 255, .6); border: 2px dashed var(--line); border-radius: var(--r); }
.empty-ic { width: 70px; height: 70px; margin: 0 auto 16px; display: grid; place-items: center; border-radius: 50%; background: var(--powder); color: var(--orange); font-size: 2rem; }
.empty p { color: var(--muted); margin: 8px 0 20px; }

/* ---------- карточка ---------- */
.card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; box-shadow: var(--shadow-sm); transition: transform .4s var(--ease), box-shadow .4s var(--ease); }
.card:hover { box-shadow: var(--shadow); }
@media (hover: none) {
  .card:hover { transform: none; }
  .card:hover .card-photo img, .g-main:hover img, .tile:hover img { transform: none; }
}
.card.flash { animation: flash 1.4s; }
@keyframes flash { 30% { box-shadow: 0 0 0 5px rgba(212, 71, 15, .4), var(--shadow); } }
.card-media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--powder); }
.card-photo, .card-photo img { display: block; width: 100%; height: 100%; }
.card-photo img { object-fit: cover; transition: transform .8s var(--ease), opacity .25s; }
.card:hover .card-photo img { transform: scale(1.07); }
.card-media::after { content: ''; position: absolute; inset: auto 0 0 0; height: 40%; background: linear-gradient(transparent, rgba(32, 28, 26, .5)); pointer-events: none; }
.card-badges { position: absolute; left: 12px; top: 12px; display: flex; gap: 6px; z-index: 2; }
.badge { display: inline-flex; align-items: center; gap: 4px; padding: .35em .8em; border-radius: 99px; font-weight: 800; font-size: .8125rem; letter-spacing: .06em; }
.badge-hit { background: var(--grad); color: #fff; box-shadow: 0 3px 0 var(--orange-ink); }
.badge-glass { background: rgba(255, 255, 255, .85); backdrop-filter: blur(6px); }
.badge-glass .ic { color: var(--orange); }
.fav-btn { position: absolute; right: 12px; top: 12px; z-index: 3; width: 40px; height: 40px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .9); display: grid; place-items: center; font-size: 1.1rem; color: var(--terra); box-shadow: 0 6px 14px -6px rgba(0, 0, 0, .4); transition: transform .3s var(--ease); }
.fav-btn:hover { transform: scale(1.12); }
.fav-btn.on { background: var(--terra); color: #fff; } .fav-btn.on .ic { fill: currentColor; animation: pop .4s var(--ease); }
@keyframes pop { 40% { transform: scale(1.5); } }
.car { position: absolute; top: 50%; translate: 0 -50%; z-index: 2; width: 36px; height: 36px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .88); font-size: 1.4rem; line-height: 1; opacity: 0; transition: all .25s; display: grid; place-items: center; padding: 0 0 3px; box-shadow: 0 4px 14px -6px rgba(44, 42, 40, .35); }
.car.prev { left: 10px; } .car.next { right: 10px; }
.card:hover .car, .car:focus-visible { opacity: 1; }
.car:hover { background: #fff; transform: scale(1.1); }
@media (hover: none), (pointer: coarse) {
  .car { opacity: .92; width: 40px; height: 40px; background: rgba(255, 255, 255, .94); }
  .car.prev { left: 8px; } .car.next { right: 8px; }
}
.card-media.is-swiping .card-photo img { transition: none; }
.dots { position: absolute; bottom: 10px; left: 0; right: 0; display: flex; justify-content: center; gap: 5px; z-index: 2; }
.dots i { width: 6px; height: 6px; border-radius: 99px; background: rgba(255, 255, 255, .6); transition: all .3s; }
.dots i.on { width: 20px; background: #fff; }
.card-body { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px 16px; flex: 1; }
.card-tags { display: flex; gap: 6px; flex-wrap: wrap; }
.tag { display: inline-flex; align-items: center; gap: 5px; padding: .3em .8em; border-radius: 99px; background: var(--powder); font-weight: 800; font-size: .8125rem; color: var(--deep); }
.tag-apartment { background: #F7DACB; } .tag-sauna { background: #F5D4CC; }
.tag-deal { background: #E4F1E6; color: #2F6E48; }
.card-title { font-size: 1.05rem; line-height: 1.25; }
.card-title a { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
.card-no { font-family: var(--font-d); font-size: 1.22rem; font-weight: 800; color: var(--terra); letter-spacing: -.03em; line-height: 1.12; }
.card-name { font-family: var(--font); font-size: .88rem; font-weight: 600; color: var(--muted); line-height: 1.3; }
.card-title a:hover .card-no { color: var(--orange-ink); }
.card-title a:hover .card-name { color: var(--cocoa); }
.specs { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: .84rem; font-weight: 600; color: var(--muted); }
.specs li { display: inline-flex; align-items: center; gap: 5px; } .specs .ic { color: var(--orange); }
.loc { display: flex; gap: 8px; font-size: .85rem; color: var(--muted); } .loc .ic { color: var(--orange); margin-top: 2px; } .loc b { color: var(--cocoa); }
.card-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 10px; margin-top: auto; padding-top: 14px; border-top: 1px dashed var(--line); }
.card-rate { font-size: .8125rem; color: var(--muted); font-weight: 600; line-height: 1.35; }
.rate { display: inline-flex; align-items: center; gap: 3px; color: var(--cocoa); font-size: 1rem; } .rate .ic { color: var(--orange); }
.card-price { position: relative; z-index: 2; text-align: right; } .card-price b { font-family: var(--font-d); font-size: 1.3rem; color: var(--terra); display: block; line-height: 1.1; }
.card-price small { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 4px; color: var(--muted); font-weight: 600; font-size: .8125rem; }
.price-tip { position: relative; width: 16px; height: 16px; margin: 0; padding: 0; border-radius: 50%; border: 1.5px solid #C8C2BA; background: #F3F3F3; color: #6E6A66; display: inline-grid; place-items: center; flex: none; line-height: 1; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.price-tip i { font-style: normal; font-family: Georgia, 'Times New Roman', serif; font-size: 11px; font-weight: 700; pointer-events: none; }
.price-pop { position: absolute; right: -4px; bottom: calc(100% + 8px); width: max-content; max-width: 240px; padding: 8px 10px; border-radius: 10px; background: #EBEBEB; color: #1a1a1a; font-size: 12px; font-weight: 650; line-height: 1.45; text-align: left; white-space: normal; box-shadow: 0 8px 20px -8px rgba(0, 0, 0, .35); opacity: 0; visibility: hidden; z-index: 8; }
.price-pop::after { content: ''; position: absolute; right: 6px; top: 100%; border: 5px solid transparent; border-top-color: #EBEBEB; }
.price-tip.is-open .price-pop, .price-tip:focus-visible .price-pop { opacity: 1; visibility: visible; }
@media (hover: hover) and (pointer: fine) {
  .price-tip:hover .price-pop { opacity: 1; visibility: visible; }
}
.price-note-field { margin: 18px 0 8px; }
.price-note-field small { font-size: .8rem; font-weight: 650; color: var(--muted); text-transform: none; letter-spacing: 0; }
.price-note-field textarea { min-height: 72px; font-size: 16px; }

/* ---------- карта ---------- */
.map-panel { max-height: 0; overflow: hidden; opacity: 0; transition: max-height .6s var(--ease), opacity .4s, margin .4s; margin-bottom: 0; }
.map-panel.open { max-height: 860px; opacity: 1; margin-bottom: 28px; }
.map-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 12px; } .map-head h3 { font-size: 1.1rem; } .map-head span { color: var(--muted); font-weight: 700; font-size: .85rem; }
.map-wrap { position: relative; border-radius: var(--r); overflow: hidden; border: 1px solid var(--line); box-shadow: var(--shadow-sm); background: #E8E4DC; }
.ymap-wrap { display: flex; flex-direction: column; background: #E8E4DC; }
.ymap-frame { position: relative; width: 100%; height: min(480px, 62vh); min-height: 280px; background: #d9d5cc; }
.ymap-single .ymap-frame { height: min(420px, 55vh); }
.ymap { display: block; width: 100%; height: 100%; border: 0; background: #d9d5cc; }
.ymap-chips { display: flex; gap: 8px; overflow-x: auto; padding: 10px 12px; background: #fff; border-top: 1px solid var(--line); scrollbar-width: thin; }
.ymap-chip { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 8px; padding: .45em .9em; border-radius: 999px; border: 1px solid var(--line); background: var(--cream); color: var(--cocoa); font-size: .8125rem; font-weight: 700; white-space: nowrap; transition: background-color .2s, border-color .2s, color .2s; }
.ymap-chip i { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.ymap-chip:hover, .ymap-chip.on { border-color: var(--orange); color: var(--orange-deep); background: #fff; }
.map-legend { position: absolute; left: 14px; bottom: 14px; z-index: 2; display: flex; gap: 14px; padding: 8px 14px; background: rgba(255, 255, 255, .92); border-radius: 99px; font-size: .8125rem; font-weight: 700; pointer-events: none; }
.map-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 6px; }
.map-pop { position: absolute; left: 14px; top: 14px; width: min(300px, calc(100% - 28px)); display: flex; gap: 10px; padding: 10px; background: #fff; border-radius: 16px; box-shadow: var(--shadow); z-index: 4; animation: popin .3s var(--ease); }
@keyframes popin { from { opacity: 0; translate: 0 8px; } }
.map-pop img { width: 84px; height: 84px; object-fit: cover; border-radius: 12px; }
.map-pop div { display: flex; flex-direction: column; gap: 3px; font-size: .8125rem; min-width: 0; } .map-pop b { font-size: .88rem; line-height: 1.25; } .map-pop span { color: var(--muted); }
.map-pop .pop-price { color: var(--terra); font-weight: 800; } .map-pop a { color: var(--orange-deep); font-weight: 800; } .map-pop a:hover, .map-pop a:active { color: var(--orange); }
.pop-x { position: absolute; right: 6px; top: 6px; width: 24px; height: 24px; border-radius: 50%; border: 0; background: var(--powder); display: grid; place-items: center; font-size: .8125rem; }

/* ---------- блоки главной ---------- */
.steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; counter-reset: s; position: relative; }
.step { position: relative; padding: 22px 20px; background: #fff; border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow-sm); transition: transform .4s var(--ease); counter-increment: s; }
.step:hover { transform: translateY(-6px) rotate(-.6deg); }
.step::before { content: counter(s); display: grid; place-items: center; width: 42px; height: 42px; margin-bottom: 12px; border-radius: 14px; font: 650 1.1rem var(--font-d); color: #fff; background: var(--grad); box-shadow: 0 5px 0 var(--orange-ink); }
.step h3, .step h2 { font-size: 1.12rem; margin-bottom: 8px; } .step p { color: var(--muted); font-size: .95rem; line-height: 1.45; }
.date-pick > *, .panel-head > *, .obj-head > * { min-width: 0; }
.date-pick input { min-width: 0; max-width: 100%; }
.panel-head h1, .obj-head h1 { overflow-wrap: anywhere; }
.obj-top > *, .two-col > *, .auth > *, .cat-grid > *, .cta > *, .row2 > *, .row3 > * { min-width: 0; }
.steps.s3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 760px) { .steps.s3 { grid-template-columns: 1fr; } }
.tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.tile { position: relative; display: flex; flex-direction: column; justify-content: flex-end; min-height: 300px; padding: 26px; border-radius: 30px; overflow: hidden; color: #fff; box-shadow: var(--shadow); transition: transform .5s var(--ease); isolation: isolate; }
.tile:hover { transform: translateY(-8px) scale(1.01); }
.tile img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; transition: transform 1s var(--ease); }
.tile:hover img { transform: scale(1.1); }
.tile::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top, rgba(32, 28, 26, .82), rgba(32, 28, 26, .08) 70%); }
.tile h3 { font-size: var(--fs-h2); margin-bottom: 6px; } .tile p { opacity: .9; font-weight: 600; font-size: .92rem; }
.tile .go { position: absolute; right: 20px; top: 20px; width: 46px; height: 46px; display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, .9); color: var(--terra); transition: transform .4s var(--ease); }
.tile:hover .go { transform: rotate(-45deg) scale(1.1); }
.dirs { display: flex; flex-wrap: wrap; gap: 12px; }
.dir-chip { display: inline-flex; align-items: center; gap: 10px; padding: .8em 1.3em; border-radius: 99px; background: #fff; border: 1px solid var(--line); font-weight: 700; box-shadow: var(--shadow-sm); transition: all .3s var(--ease); }
.dir-chip:hover { background: var(--orange); color: #fff; transform: translateY(-4px) rotate(-1.5deg); border-color: var(--orange); }
.dir-chip small { padding: .15em .6em; border-radius: 99px; background: var(--powder); color: var(--deep); font-weight: 800; } .dir-chip:hover small { background: rgba(255, 255, 255, .25); color: #fff; }
.benefits { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.benefit { padding: 22px 20px; border-radius: var(--r); background: linear-gradient(165deg, #fff, var(--cream)); border: 1px solid var(--line); transition: transform .4s var(--ease); }
.benefit:hover { transform: translateY(-5px); }
.benefit .bi { width: 48px; height: 48px; margin-bottom: 12px; display: grid; place-items: center; border-radius: 16px; background: var(--powder); color: var(--terra); font-size: 1.35rem; box-shadow: inset 0 -4px 0 rgba(199, 90, 31, .15); }
.benefit h3 { font-size: 1.12rem; margin-bottom: 6px; } .benefit p { color: var(--muted); font-size: .94rem; line-height: 1.45; }
.cta { position: relative; overflow: hidden; display: grid; grid-template-columns: 1fr; gap: 24px; align-items: center; padding: 40px 36px; border-radius: 32px; color: #F6F1E8; background: radial-gradient(480px 240px at 100% 0%, rgba(227, 106, 40, .42), transparent 62%), linear-gradient(145deg, #3A3734, #242220); box-shadow: 0 40px 70px -34px rgba(28, 26, 24, .5); }
.cta h2 { font-size: var(--fs-display); margin-bottom: 10px; } .cta p { color: #E4DDD4; max-width: 46ch; margin-bottom: 18px; line-height: 1.5; }
.cta img { display: none; }
.marquee { overflow: hidden; padding: 20px 0; border-block: 1px solid var(--line); background: rgba(255, 255, 255, .5); }
.marquee-t { display: flex; gap: 48px; width: max-content; animation: slide 36s linear infinite; font-family: var(--font-d); font-size: 1.3rem; color: var(--terra); }
.marquee-t span { display: inline-flex; align-items: center; gap: 48px; white-space: nowrap; } .marquee-t span::after { content: '✦'; color: var(--peach); }
.marquee:hover .marquee-t { animation-play-state: paused; }
@keyframes slide { to { transform: translateX(-50%); } }

/* ---------- внутренние страницы ---------- */
.page-hero { padding: 28px 0 12px; position: relative; }
.page-hero h1 { font-size: var(--fs-display); margin-bottom: 10px; }
.page-hero p { color: var(--muted); font-size: 1.05rem; line-height: 1.5; max-width: 62ch; }
.crumbs { display: flex; gap: 8px; align-items: center; font-family: var(--font-d); font-size: .875rem; font-weight: 650; letter-spacing: -.01em; color: var(--muted); margin-bottom: 8px; flex-wrap: wrap; } .crumbs a:hover { color: var(--terra); } .crumbs span { opacity: .5; }
.prose-card { padding: 24px 24px 22px; background: #fff; border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow-sm); }
.prose-card h2 { font-size: var(--fs-h2); margin-bottom: 10px; } .prose-card h2:not(:first-child) { margin-top: 22px; }
.prose-card h3 { font-family: var(--font-d); font-size: 1.12rem; margin: 18px 0 8px; letter-spacing: -.02em; }
.prose-card p { color: var(--muted); font-size: 1.02rem; line-height: 1.55; } .prose-card p + p { margin-top: 10px; }
.prose-card ol, .prose-card ul { color: var(--muted); font-size: 1.02rem; line-height: 1.55; padding-left: 1.25em; margin: 8px 0 0; }
.prose-card li + li { margin-top: 6px; }
.prose-card .offer-meta { display: flex; flex-wrap: wrap; gap: 8px 14px; margin: 0 0 18px; padding: 12px 14px; border-radius: 14px; background: var(--cream); border: 1px solid var(--line); font-size: .92rem; color: var(--cocoa); font-weight: 650; }
.prose-card .offer-meta span { display: inline-flex; align-items: center; gap: 6px; }
.prose-card .offer-req { margin-top: 22px; padding: 16px 18px; border-radius: 16px; background: linear-gradient(180deg, #fff, var(--cream)); border: 1px solid var(--line); }
.prose-card .offer-req h2 { margin-top: 0; }
.two-col { display: grid; grid-template-columns: 1.4fr 1fr; gap: 24px; align-items: start; }
.contact-list li { display: flex; gap: 12px; align-items: center; padding: 12px 0; border-bottom: 1px dashed var(--line); font-weight: 700; } .contact-list li:last-child { border: 0; } .contact-list .ic { color: var(--orange); font-size: 1.3rem; }
.reach-call {
  display: flex; align-items: center; gap: 12px; margin-top: 18px; padding: 14px 16px;
  border-radius: 16px; background: var(--grad); color: #fff;
  box-shadow: 0 4px 0 var(--orange-ink);
  touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none;
}
.reach-call svg { width: 22px; height: 22px; flex: none; color: #fff; }
.reach-call span { min-width: 0; }
.reach-call small { display: block; font-size: .95rem; font-weight: 800; letter-spacing: .01em; line-height: 1.2; color: #fff; opacity: 1; }
.reach-call b { display: block; margin-top: 2px; font-size: 1.12rem; font-weight: 800; letter-spacing: 0; line-height: 1.25; color: #fff; }
.prose-card a.reach-call,
.prose-card a.reach-call small,
.prose-card a.reach-call b,
.book-card a.reach-call,
.book-card a.reach-call small,
.book-card a.reach-call b,
.host-card a.reach-call,
.host-card a.reach-call small,
.host-card a.reach-call b { color: #fff; }
.reach-call:active { transform: translateY(2px); box-shadow: 0 2px 0 var(--orange-ink); }
.reach { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 10px; }
.reach a {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px;
  min-height: 76px; min-width: 0; padding: 10px 4px; border-radius: 16px;
  border: 1px solid var(--line); background: #fff; color: var(--cocoa);
  font-weight: 800; font-size: .78rem; line-height: 1.15; text-align: center;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none;
}
.reach a svg { width: 28px; height: 28px; flex: none; }
.reach a span { max-width: 100%; overflow-wrap: anywhere; }
.reach a:active { transform: scale(.98); }
@media (hover: hover) and (pointer: fine) {
  .reach-call:hover { filter: brightness(1.04); }
  .reach a:hover { transform: translateY(-2px); box-shadow: 0 10px 16px -12px rgba(44, 42, 40, .55); border-color: transparent; }
}
.faq details { background: #fff; border: 1px solid var(--line); border-radius: 18px; padding: 2px 20px; margin-bottom: 8px; transition: box-shadow .3s; }
.faq details[open] { box-shadow: var(--shadow-sm); }
.faq summary { cursor: pointer; list-style: none; padding: 14px 0; font-family: var(--font-d); font-weight: 650; font-size: 1.05rem; letter-spacing: -.02em; display: flex; justify-content: space-between; gap: 10px; align-items: center; } .faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; width: 30px; height: 30px; flex: none; display: grid; place-items: center; border-radius: 50%; background: var(--powder); color: var(--terra); font-size: 1.2rem; transition: transform .3s var(--ease); }
.faq details[open] summary::after { transform: rotate(45deg); } .faq details p { padding: 0 0 18px; color: var(--muted); }

/* ---------- страница объекта ---------- */
.obj-page { padding-top: 8px; padding-bottom: 40px; }
.obj-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin: 0 0 14px; flex-wrap: wrap; }
.obj-head-text { min-width: 0; flex: 1 1 220px; }
.obj-no { margin: 0 0 4px; font-size: .88rem; font-weight: 700; color: var(--terra); letter-spacing: -.01em; line-height: 1.2; }
.obj-head h1 { font-size: clamp(1.45rem, 2.6vw, 2.05rem); max-width: 28ch; }
.obj-addr { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin: 8px 0 0; }
.obj-addr a { display: inline-flex; align-items: center; gap: 7px; min-width: 0; color: var(--cocoa); font-weight: 750; font-size: .98rem; line-height: 1.3; text-underline-offset: 3px; }
.obj-addr a .ic { flex: none; color: var(--terra); }
.obj-addr em { color: var(--muted); font-style: normal; font-weight: 650; font-size: .88rem; }
@media (hover: hover) and (pointer: fine) {
  .obj-addr a:hover { color: var(--orange); text-decoration: underline; }
}
.obj-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.obj-top { display: grid; grid-template-columns: 1.55fr 1fr; gap: 20px; align-items: start; }
.obj-side { display: flex; flex-direction: column; gap: 10px; }
.host-card .reach a { min-height: 58px; padding: 8px 4px; }
.gallery { position: sticky; top: 90px; }
.g-main { position: relative; aspect-ratio: 16 / 11; border-radius: 28px; overflow: hidden; background: var(--powder); box-shadow: var(--shadow); cursor: zoom-in; }
.g-main img { width: 100%; height: 100%; object-fit: cover; transition: opacity .3s, transform .8s var(--ease); } .g-main:hover img { transform: scale(1.04); }
.g-nav { position: absolute; top: 50%; translate: 0 -50%; width: 46px; height: 46px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .9); font-size: 1.8rem; line-height: 1; padding-bottom: 4px; transition: transform .2s; } .g-nav:hover { transform: scale(1.1); }
.g-nav.prev { left: 14px; } .g-nav.next { right: 14px; }
.g-count { position: absolute; right: 14px; bottom: 14px; padding: .35em .9em; background: rgba(40, 20, 10, .6); color: #fff; backdrop-filter: blur(6px); border-radius: 99px; font-weight: 700; font-size: .8125rem; }
.thumbs { display: flex; gap: 10px; margin-top: 12px; overflow-x: auto; padding-bottom: 4px; }
.thumbs button { flex: none; width: 96px; aspect-ratio: 4 / 3; border-radius: 14px; overflow: hidden; border: 3px solid transparent; padding: 0; opacity: .65; transition: all .25s; } .thumbs button.on { border-color: var(--orange); opacity: 1; } .thumbs button:hover { opacity: 1; }
.thumbs img { width: 100%; height: 100%; object-fit: cover; }
.host-card, .book-card { padding: 16px 16px 14px; background: #fff; border: 1px solid var(--line); border-radius: 22px; box-shadow: var(--shadow); }
.book-card { position: sticky; top: 90px; }
.side-title,
.obj-sec > h2,
.ptable-head h2 {
  margin: 0 0 12px;
  font-family: var(--font-d);
  font-size: 1.5rem;
  font-weight: 600;
  letter-spacing: -.035em;
  line-height: 1.12;
  color: var(--cocoa);
}
.side-title::after,
.obj-sec > h2::after,
.ptable-head h2::after {
  content: '';
  display: block;
  width: 2.15em;
  height: 3px;
  margin-top: 8px;
  border-radius: 99px;
  background: var(--orange);
}
.host-card .facts { margin-bottom: 12px; }
.host-card .owner-box { margin-bottom: 10px; padding: 10px 12px; }
.host-ms-lab { margin: 8px 0 6px; font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.owner-reach { display: flex; flex-direction: column; gap: 8px; margin: 0; }
.owner-reach .reach-call { margin-top: 0; }
.owner-reach .reach { margin-top: 0; }
.profile-note, .profile-hint { color: var(--muted); font-weight: 650; font-size: .9rem; line-height: 1.45; }
.profile-hint { margin: -4px 0 8px; }
.price-row { display: flex; gap: 22px; align-items: baseline; flex-wrap: wrap; margin-bottom: 14px; }
.price-row b { display: block; font-family: var(--font-d); font-size: 1.9rem; color: var(--terra); line-height: 1.1; } .price-row small { color: var(--muted); font-weight: 700; font-size: .8125rem; }
.facts { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; } .facts li { display: inline-flex; gap: 6px; align-items: center; padding: .45em .9em; border-radius: 99px; background: var(--powder); font-weight: 700; font-size: .85rem; } .facts .ic { color: var(--terra); }
.addr-line { display: flex; flex-direction: column; gap: 4px; margin-bottom: 16px; font-size: .92rem; } .addr-line h2, .addr-line p { margin: 0; font-size: 1rem; font-family: var(--font); font-weight: 800; } .addr-line span { color: var(--muted); font-weight: 600; font-size: .85rem; }
.owner-box { display: flex; align-items: center; gap: 12px; padding: 14px; margin-bottom: 16px; background: var(--cream); border-radius: 18px; border: 1px solid var(--line); }
.avatar { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; background: var(--grad); color: #fff; font: 700 1.1rem var(--font-d); flex: none; }
.owner-box small { display: block; color: var(--muted); font-weight: 600; font-size: .8125rem; }
.phone-line { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.phone-line a.num { font-weight: 800; font-size: 1.05rem; }
.msgrs { display: flex; gap: 8px; margin-bottom: 16px; } .msgrs a { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 0; text-align: center; padding: .5em .35em; border-radius: 12px; font-weight: 800; font-size: .78rem; border: 1px solid var(--line); background: #fff; color: var(--cocoa); transition: transform .2s var(--ease), box-shadow .2s var(--ease); } .msgrs a svg { width: 22px; height: 22px; flex: none; } .msgrs a:hover { transform: translateY(-2px); box-shadow: 0 10px 16px -12px rgba(44, 42, 40, .55); border-color: transparent; }
.sess-pick { display: flex; flex-direction: column; gap: 8px; margin: 0 0 10px; }
.sess-pick .date-pick { margin: 0; grid-template-columns: 1fr 1fr; }
.sess-pick select, .sess-pick input { font-size: 16px; }
.sess-pick select:disabled { opacity: .5; }
.date-pick { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 8px; }
.date-pick label, .field { display: flex; flex-direction: column; gap: 6px; }
.date-pick label span, .field > span { font-size: .8125rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); }
.date-pick input, .field input, .field select, .field textarea {
  width: 100%; padding: .8em 1em; border: 1.5px solid var(--line); border-radius: 14px; background: var(--cream); font: inherit; font-weight: 600; color: var(--cocoa); outline: none; transition: all .2s;
}
.field textarea { resize: vertical; min-height: 84px; }
.date-pick input:focus, .field input:focus, .field select:focus, .field textarea:focus { border-color: var(--orange); background: #fff; box-shadow: 0 0 0 4px rgba(212, 71, 15, .18); }

/* ---------- плавающие плейсхолдеры + vanish ---------- */
.vph { position: relative; width: 100%; min-width: 0; }
.vph-input { position: relative; z-index: 1; width: 100%; }
.vph-ph {
  position: absolute; left: 1.05em; right: 1.05em; top: 50%; z-index: 2;
  transform: translateY(-50%); margin: 0; pointer-events: none;
  color: var(--muted); font: inherit; font-weight: 600; font-size: 1rem; line-height: 1.35;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  opacity: 0; transition: opacity .35s var(--ease), transform .45s var(--ease);
}
.vph-air .vph-ph { top: 1em; transform: none; white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.vph-ph.is-show { opacity: .7; transform: translateY(-50%); }
.vph-air .vph-ph.is-show { opacity: .7; transform: none; }
.vph-ph.is-out { opacity: 0; transform: translateY(-130%); }
.vph-air .vph-ph.is-out { opacity: 0; transform: translateY(-12px); }
.vph-ph.is-in { opacity: 0; transform: translateY(70%); }
.vph-air .vph-ph.is-in { opacity: 0; transform: translateY(10px); }
.vph.is-filled .vph-ph,
.vph.is-focus .vph-ph { opacity: 0 !important; visibility: hidden; transition: none; }
.vph-air .vph-input {
  min-height: 100px; border-radius: 18px;
  background: linear-gradient(165deg, #fff 0%, var(--cream) 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .8);
}
.vph-air .vph-input:focus {
  background: #fff;
  box-shadow: 0 0 0 4px rgba(212, 71, 15, .18), inset 0 1px 0 rgba(255, 255, 255, .9);
}
.vph-canvas { position: absolute; left: 0; top: 0; z-index: 4; pointer-events: none; border-radius: inherit; }
.form.is-vanishing { pointer-events: none; opacity: .92; transition: opacity .25s var(--ease); }
@media (prefers-reduced-motion: reduce) {
  .vph-ph { transition: none; }
}
.dpick-native { position: absolute !important; width: 1px !important; height: 1px !important; margin: -1px !important; padding: 0 !important; border: 0 !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; pointer-events: none !important; }
.dpick-btn { display: flex; align-items: center; gap: 8px; width: 100%; min-width: 0; border: 0; background: none; padding: 0; text-align: left; cursor: pointer; font: inherit; font-weight: 700; color: var(--cocoa); }
.dpick-tx { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dpick-tx.is-ph { color: var(--muted); font-weight: 600; }
.dpick-btn .ic { width: 1.05em; height: 1.05em; margin-left: auto; color: var(--orange); pointer-events: none; }
.dpick-btn.is-empty .ic { color: var(--apricot); }
.sf > .dpick-btn .ic { display: none; }
.date-pick .dpick-btn, .field .dpick-btn { padding: .8em 1em; border: 1.5px solid var(--line); border-radius: 14px; background: var(--cream); font-weight: 600; }
.date-pick label span.dpick-tx { font-size: 1rem; font-weight: 700; letter-spacing: 0; text-transform: none; color: var(--cocoa); }
.date-pick label span.dpick-tx.is-ph, .field .dpick-tx.is-ph { color: var(--muted); font-weight: 600; }
.date-pick .dpick-btn.is-open, .field .dpick-btn.is-open { border-color: var(--orange); background: #fff; box-shadow: 0 0 0 4px rgba(212, 71, 15, .18); }
.dpick-pop { position: fixed; z-index: 140; width: min(312px, calc(100vw - 16px)); padding: 12px 12px 10px; background: #fff; border: 1px solid var(--line); border-radius: 22px; box-shadow: var(--shadow); font-family: var(--font); color: var(--cocoa); opacity: 0; transform: translateY(8px); transition: transform .2s var(--ease), opacity .2s var(--ease); pointer-events: none; max-height: calc(100dvh - 16px); overflow: auto; overscroll-behavior: contain; }
.dpick-pop[data-side="above"] { transform: translateY(-8px); }
.dpick-pop.in { opacity: 1; transform: translateY(0); pointer-events: auto; }
.dpick-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.dpick-title { font-family: var(--font); font-weight: 800; font-size: .95rem; letter-spacing: 0; text-transform: none; color: var(--cocoa); }
.dpick-nav { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--line); background: var(--cream); color: var(--cocoa); font: inherit; font-size: 1.25rem; line-height: 1; padding: 0 0 2px; transition: transform .16s var(--ease), opacity .16s var(--ease); }
.dpick-nav:hover:not(:disabled) { transform: translateY(-1px); background: var(--peach); }
.dpick-nav:disabled { opacity: .35; cursor: default; }
.dpick-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; text-align: center; }
.dpick-dow { font-size: .8125rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); padding: 4px 0; }
.dpick-dow:nth-child(6), .dpick-dow:nth-child(7) { color: var(--terra); }
.dpick-empty { aspect-ratio: 1; }
.dpick-day { aspect-ratio: 1; border: 0; border-radius: 12px; padding: 0; background: transparent; color: var(--cocoa); font-family: var(--font); font-weight: 700; font-size: .9rem; transition: transform .16s var(--ease), opacity .16s var(--ease); }
.dpick-day:hover:not(:disabled) { transform: scale(1.08); background: var(--powder); }
.dpick-day:disabled { color: var(--apricot); opacity: .4; cursor: default; }
.dpick-day.is-busy {
  background: #C2412D; color: #fff; opacity: 1; text-decoration: none;
}
.dpick-day.is-busy:hover { transform: none; background: #C2412D; }
.dpick-day.is-today:not(.is-sel) { box-shadow: inset 0 0 0 2px var(--orange); }
.dpick-day.is-in { background: var(--peach); color: var(--deep); border-radius: 8px; }
.dpick-day.is-in:hover:not(:disabled) { background: var(--peach); }
.dpick-day.is-today.is-in:not(.is-sel) { box-shadow: inset 0 0 0 2px var(--orange); }
.dpick-day.is-sel { background: var(--grad); color: #fff; border-radius: 12px; box-shadow: 0 3px 0 var(--orange-ink); }
.dpick-day.is-sel:hover:not(:disabled) { background: var(--grad); }
.dpick-day.is-today.is-sel { box-shadow: inset 0 0 0 2px #fff, 0 3px 0 var(--orange-ink); }
@media (prefers-reduced-motion: reduce) {
  .dpick-pop, .dpick-day, .dpick-nav { transition: none; }
}
.field input[aria-invalid=true] { border-color: var(--bad); }
.total-line { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 2px 12px; padding: 12px 0; margin-bottom: 4px; border-top: 1px dashed var(--line); font-weight: 700; } .total-line span { flex: 1 1 auto; min-width: min(100%, 16em); } .total-line b { margin-left: auto; white-space: nowrap; font-family: var(--font-d); font-size: 1.2rem; color: var(--terra); }
.note { margin-top: 12px; font-size: .8125rem; color: var(--muted); font-weight: 600; text-align: center; }
.tabs { position: sticky; top: 112px; z-index: 55; display: flex; align-items: stretch; gap: 3px; padding: 6px; margin: 18px 0 16px; background: #F7F1E8; border: 1px solid var(--line); border-radius: 999px; box-shadow: 0 12px 22px -16px rgba(44, 42, 40, .55); overflow-x: auto; scrollbar-width: none; }
.tabs a {
  flex: 1 0 auto; min-width: 0; padding: .68em 1em; border-radius: 999px;
  font-family: var(--font-d); font-weight: 650; font-size: 1.05rem; letter-spacing: -.02em;
  line-height: 1.2; text-align: center; white-space: nowrap; color: var(--muted);
  touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none;
  transition: background-color .2s var(--ease), color .2s var(--ease), box-shadow .2s var(--ease), transform .12s var(--ease);
}
.tabs a:active { transform: scale(.98); }
.tabs a.on { background: var(--orange); color: #fff; box-shadow: 0 4px 0 var(--orange-ink); }
@media (hover: hover) and (pointer: fine) {
  .tabs a:hover { color: var(--cocoa); background: var(--powder); }
  .tabs a.on:hover { color: #fff; background: var(--orange); }
}
.tab-off { display: inline-flex; margin-left: 6px; padding: .14em .5em; border-radius: 99px; background: var(--orange); color: #fff; font-style: normal; font-weight: 700; font-size: .78rem; vertical-align: 1px; }
.tabs a.on .tab-off { background: #fff; color: var(--orange); }
.obj-deal { display: flex; align-items: center; gap: 18px; padding: 18px 20px; border-radius: 22px; background: #fff; border: 1px solid #F0C2A8; box-shadow: 0 14px 32px -20px rgba(212, 71, 15, .7); }
.obj-deal-mark { flex: none; display: flex; flex-direction: column; align-items: flex-start; padding: 12px 16px; border-radius: 16px; background: var(--orange); color: #fff; line-height: 1; }
.obj-deal-mark small { font-size: .68rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; margin-bottom: 4px; }
.obj-deal-mark b { font-family: var(--font-d); font-size: 2rem; letter-spacing: -.03em; }
.obj-deal-mark.toned { background: var(--d); }
.obj-deal-mark b.is-range { font-size: 1.35rem; }
.obj-deal p { margin: 0; font-weight: 700; max-width: 62ch; }
.obj-deal-price { margin-top: 8px; }
.obj-deal-price s { color: var(--muted); font-weight: 650; margin-right: 8px; }
.obj-deal-price b { font-family: var(--font-d); font-size: 1.6rem; color: var(--terra); }
.obj-deal-price span { color: var(--muted); font-weight: 700; font-size: .85rem; }
.deal-empty { color: var(--muted); font-weight: 650; }
.gdeal-months { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 320px)); gap: 12px; margin-top: 14px; }
.gcal { padding: 14px 14px 16px; background: #fff; border: 1px solid var(--line); border-radius: 20px; }
.gcal > b { display: block; margin-bottom: 10px; font-family: var(--font-d); font-size: 1.05rem; }
.gcal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; text-align: center; }
.gcal-grid span { font-size: .7rem; font-weight: 800; color: var(--muted); padding-bottom: 2px; }
.gday { aspect-ratio: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; border-radius: 10px; background: #F6F1EA; font-style: normal; font-weight: 750; font-size: .82rem; line-height: 1; }
.gday b { font-weight: 800; font-size: .82rem; line-height: 1; }
.gday small { font-size: .58rem; font-weight: 800; line-height: 1; letter-spacing: -.03em; white-space: nowrap; }
.gday.empty { visibility: hidden; grid-column: auto; padding: 0; border: 0; background: transparent; aspect-ratio: 1; }
.gday.past { background: transparent; color: #C4BDB4; }
.gday.on { background: var(--d, var(--orange)); color: #fff; }
.gdeal-legend { display: flex; flex-wrap: wrap; gap: 12px 16px; margin-top: 12px; font-size: .85rem; font-weight: 750; color: var(--cocoa); }
.gdeal-legend i { display: inline-block; width: 14px; height: 14px; border-radius: 4px; margin-right: 6px; vertical-align: -2px; background: var(--d); }
.gdeal-note { margin-top: 8px; }
@media (max-width: 720px) {
  .obj-deal { flex-direction: column; align-items: flex-start; }
}
.obj-sec { scroll-margin-top: 180px; margin-bottom: 28px; }
.obj-sec > h2 { font-size: var(--fs-h2); margin-bottom: 12px; }
.obj-sec > h3 { font-size: var(--fs-h3); margin-bottom: 10px; }
.desc { font-size: 1.125rem; line-height: 1.7; color: var(--cocoa); max-width: 75ch; }
.char-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 18px; }
.char-card { padding: 22px; background: #fff; border: 1px solid var(--line); border-radius: 20px; } .char-card h3 { font-size: .98rem; margin-bottom: 12px; }
.ticks li { display: flex; gap: 10px; align-items: flex-start; padding: 5px 0; font-weight: 600; font-size: .94rem; } .ticks .ic { color: var(--ok); margin-top: 3px; width: 1.1em; stroke-width: 2.6; }
.am-block { margin-bottom: 20px; padding: 22px; background: #fff; border: 1px solid var(--line); border-radius: 20px; } .am-block h3 { font-size: .98rem; margin-bottom: 10px; }
.am-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 0 20px; }
.rules-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 18px; }
.time-pair { display: flex; gap: 16px; margin-bottom: 18px; } .time-pair div { flex: 1; padding: 18px 22px; border-radius: 20px; background: var(--powder); } .time-pair small { display: block; color: var(--muted); font-weight: 700; font-size: .8125rem; } .time-pair b { font-family: var(--font-d); font-size: 1.2rem; }
.pay-list { display: flex; flex-wrap: wrap; gap: 10px; } .pay-list li { display: inline-flex; gap: 8px; align-items: center; padding: .7em 1.2em; border-radius: 16px; background: #fff; border: 1px solid var(--line); font-weight: 700; } .pay-list .ic { color: var(--orange); }
.review { padding: 20px 22px; margin-bottom: 14px; background: #fff; border: 1px solid var(--line); border-radius: 20px; }
.review header { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; } .review .score { margin-left: auto; padding: .3em .8em; border-radius: 99px; background: var(--powder); font-weight: 800; color: var(--terra); display: inline-flex; gap: 4px; align-items: center; } .review small { color: var(--muted); font-weight: 600; }
.review p { color: var(--cocoa); }
.cal-wrap { display: block; max-width: 640px; min-width: 0; }
.cal-wrap:has(.cal-pair) { max-width: none; }
.cal { padding: 20px; background: #fff; border: 1px solid var(--line); border-radius: 22px; min-width: 0; max-width: 100%; }
.cal-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 12px; } .cal-head b { font-family: var(--font-d); font-size: .95rem; text-transform: capitalize; min-width: 0; }
.cal-nav { display: flex; gap: 6px; flex: none; } .cal-nav button { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--line); background: var(--cream); font-size: 1.2rem; padding: 0 0 3px; } .cal-nav button:hover:not(:disabled) { background: var(--peach); }
.cal-nav button:disabled { opacity: .35; cursor: default; }
.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; text-align: center; min-width: 0; }
.cal-grid .dow { font-size: .8125rem; font-weight: 800; color: var(--muted); padding: 4px 0; text-transform: uppercase; }
.day { position: relative; aspect-ratio: 1; min-width: 0; border: 0; border-radius: 12px; font-family: inherit; font-weight: 700; font-size: .85rem; background: #DDD8D1; color: #2C2A28; transition: background-color .15s, transform .15s; padding: 0; display: grid; place-items: center; }
#cal .hslot, #cal .day, #cal .occ-day:not(.view-day), #cal .vslot { pointer-events: none; cursor: default; user-select: none; }
.day.sale { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; line-height: 1; padding: 1px 0 2px; }
.day.sale b { font-weight: 800; font-size: .92em; line-height: 1; }
.day.sale small { font-size: .62rem; font-weight: 800; letter-spacing: -.04em; line-height: 1; }
.day.sale:not(.sel):not(.busy):not(.past):not(.in-range) { background: var(--d-soft, #fff); color: var(--d-deep, var(--orange-ink)); box-shadow: inset 0 0 0 1.5px var(--d, var(--orange)); }
.day.today.sale:not(.sel):not(.busy) { box-shadow: inset 0 0 0 2px #2C2A28; }
.day.sel.sale { box-shadow: 0 4px 0 var(--orange-ink); }
.day.past.sale { background: transparent; color: #C4BDB4; box-shadow: none; }
.day.in-range.sale { color: var(--d-deep, var(--orange-ink)); }
.day:hover:not(:disabled):not(.sel):not(.sale):not(.busy):not(.past) { transform: scale(1.06); background: #D0CBC3; }
.day.busy { background: #C2412D; color: #fff; text-decoration: none; opacity: 1; }
.day.past { background: transparent; color: #C4BDB4; }
.day.today:not(.sel):not(.busy) { box-shadow: inset 0 0 0 1.5px #2C2A28; }
.day.today.busy { box-shadow: inset 0 0 0 1.5px #fff; }
.day.in-range { background: #F6E4D4; color: #2C2A28; border-radius: 8px; }
.day.sel { background: var(--orange); color: #fff; box-shadow: 0 4px 0 var(--orange-ink); }
.day.empty { visibility: hidden; grid-column: auto; padding: 0; border: 0; background: transparent; }
.legend { display: flex; gap: 18px; margin-top: 14px; font-size: .82rem; font-weight: 700; color: var(--muted); flex-wrap: wrap; } .legend i { display: inline-block; width: 12px; height: 12px; border-radius: 4px; margin-right: 6px; vertical-align: -1px; box-shadow: inset 0 0 0 1px rgba(44, 42, 40, .12); }
.legend .sale-dot { background: var(--d-soft, #fff); box-shadow: inset 0 0 0 1.5px var(--d, var(--orange)); }
.cal-wrap.hour-mode { max-width: 760px; }
.hcal { padding: 18px; background: #fff; border: 1px solid var(--line); border-radius: 22px; }
.hdays { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 10px; margin-bottom: 12px; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
.hday { flex: 0 0 auto; min-width: 64px; min-height: 58px; padding: 8px 10px; border-radius: 16px; border: 1px solid var(--line); background: #fff; font-weight: 800; line-height: 1.15; -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.hday small { display: block; margin-top: 3px; font-size: .72rem; font-weight: 750; color: var(--muted); }
.hday.on { background: var(--orange); color: #fff; border-color: var(--orange); box-shadow: 0 3px 0 var(--orange-ink); }
.hday.sale:not(.on) { box-shadow: inset 0 -3px 0 var(--d, var(--orange)); }
.hday.on.sale { box-shadow: 0 3px 0 var(--orange-ink), inset 0 -3px 0 #fff; }
.hday.on small { color: rgba(255, 255, 255, .86); }
.hday.full:not(.on) { background: #F6E4D4; }
.hgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(76px, 1fr)); gap: 8px; }
.hslot { min-height: 48px; border: 0; border-radius: 14px; background: #DDD8D1; color: #2C2A28; font-weight: 800; font-size: .9rem; font-variant-numeric: tabular-nums; padding: 8px 4px; -webkit-tap-highlight-color: transparent; touch-action: manipulation; user-select: none; }
.hslot.busy, .occ-card .hslot.booked { background: #C2412D; color: #fff; }
.hslot.past { background: transparent; color: #C4BDB4; cursor: default; }
.hslot.sel { background: var(--orange); color: #fff; box-shadow: 0 3px 0 var(--orange-ink); }
.hslot:disabled { cursor: default; }
.hhint { margin: 12px 0 0; color: var(--muted); font-weight: 700; font-size: .88rem; }
.bk-tabs { display: flex; gap: 6px; padding: 5px; margin: 0 0 16px; background: #fff; border: 1px solid var(--line); border-radius: 999px; }
.bk-tabs button { flex: 1; border: 0; background: none; border-radius: 99px; padding: .55em .7em; font-weight: 800; font-size: .88rem; color: var(--muted); }
.bk-tabs button.on { background: var(--orange); color: #fff; box-shadow: 0 3px 0 var(--orange-ink); }
.bk-when-next { margin-top: 14px; }
.modal .hcal { padding: 14px; }
.modal .hgrid { grid-template-columns: repeat(auto-fill, minmax(68px, 1fr)); }
.occ-card.wide { max-width: 760px; }
.occ-card .hslot { background: #F6F1EA; }
.occ-card .hslot.block { background: var(--orange); color: #fff; }
.occ-card .hslot.past { background: #F3EEE8; color: #C4B2A4; }
.lg-book { background: #C2412D; }
@media (hover: hover) and (pointer: fine) {
  .hday:hover:not(.on) { background: var(--powder); }
  .bk-tabs button:hover:not(.on) { background: var(--powder); }
  .hslot:hover:not(:disabled):not(.sel):not(.booked):not(.busy) { transform: translateY(-1px); }
  .hcal .hslot:hover:not(:disabled):not(.sel):not(.busy) { background: #D0CBC3; }
  .day.sale:hover:not(:disabled):not(.sel):not(.busy):not(.past) { filter: brightness(.97); }
  .occ-card .hslot.free:hover, .occ-card .hslot.block:hover { filter: brightness(.97); }
  .vslot:hover:not(:disabled):not(.on) { background: #E7F3EC; }
  .sort-pop button:hover { background: var(--peach); }
  .sort-pop button[aria-selected="true"]:hover { background: var(--grad); }
}
@media (min-width: 981px) {
  .cal-months { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; max-width: none; align-items: stretch; }
  .cal-months .cal { display: flex; flex-direction: column; padding: 16px 14px 14px; }
  .cal-months .cal-grid { flex: 1; align-content: start; }
  .cal-head-split { display: grid; grid-template-columns: 36px minmax(0, 1fr) 36px; align-items: center; gap: 4px; }
  .cal-head-split b { text-align: center; font-size: 1.02rem; }
  .cal-nav-gap { width: 36px; height: 36px; }
  .cal-shift { width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--line); background: var(--cream); color: var(--cocoa); font-size: 1.25rem; line-height: 1; padding: 0 0 2px; }
  .cal-shift:hover:not(:disabled) { background: var(--peach); }
  .cal-shift:disabled { opacity: .35; cursor: default; }
}

.occ-badge { width: 46px; height: 46px; border-radius: 50%; background: var(--powder); color: var(--terra); display: grid; place-items: center; flex: none; font-size: 1.2rem; }
.house-row { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 16px; }
.house-pill { display: inline-flex; align-items: center; gap: 10px; max-width: 100%; padding: 12px 16px; border-radius: 18px; border: 1px solid var(--line); background: #fff; text-align: left; }
.house-pill .hp { display: flex; flex-direction: column; min-width: 0; }
.house-pill b { font-size: .92rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 280px; }
.house-pill small { color: var(--muted); font-weight: 600; font-size: .8125rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 280px; }
.house-pill.on { background: var(--orange); color: #fff; border-color: var(--orange); box-shadow: 0 4px 0 var(--orange-ink); }
.house-pill.on small { color: rgba(255, 255, 255, .86); }
.occ-card { max-width: 640px; padding: 22px; background: #fff; border: 1px solid var(--line); border-radius: 24px; }
.cal-pair { display: grid; gap: 16px; align-items: start; }
.cal-pair .occ-card { max-width: none; }
.view-lead { margin: 0 0 14px; color: var(--muted); font-weight: 650; font-size: .9rem; }
.view-grid .occ-day.has { background: #3FA66A; color: #fff; }
.view-grid .occ-day.has.past { background: #C9E6D4; color: #5A8F6C; }
.view-grid .occ-day.pick { box-shadow: inset 0 0 0 2px var(--cocoa); }
.view-grid .occ-day.has.pick { background: var(--ok); box-shadow: inset 0 0 0 2px #fff; }
.view-grid .occ-day.has.today { box-shadow: inset 0 0 0 2px #fff; }
.view-dayline { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; margin: 16px 0 10px; }
.view-dayline b { font-family: var(--font-d); font-size: 1.05rem; }
.view-dayline span { color: var(--muted); font-weight: 750; font-size: .85rem; text-align: right; }
.vgrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.vslot {
  min-height: 40px;
  display: grid;
  place-items: center;
  padding: 0;
  margin: 0;
  border: 0;
  border-radius: 14px;
  background: #F6F1EA;
  color: var(--cocoa);
  font-weight: 750;
  font-size: .78rem;
  letter-spacing: .05em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  -webkit-appearance: none;
  appearance: none;
  transition: background-color .18s var(--ease), color .18s var(--ease), box-shadow .18s var(--ease);
}
.vslot > span { display: block; line-height: 1; transform: translateY(1px); }
.vslot.on {
  background: linear-gradient(180deg, #45A56A 0%, #2F7D4F 100%);
  color: #fff;
  box-shadow: 0 3px 0 #246340;
}
.vslot:disabled, .vslot.is-gone { background: #F3EEE8; color: #C4B2A4; cursor: not-allowed; box-shadow: none; }
.lg-view { background: var(--ok); }
@media (min-width: 1100px) {
  .cal-pair { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}
.occ-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 18px; }
.occ-title { display: flex; align-items: center; gap: 12px; }
.occ-title b { display: block; font-family: var(--font-d); font-size: 1.35rem; }
.occ-title small { color: var(--muted); font-weight: 700; }
.occ-nav { display: flex; gap: 8px; }
.occ-nav button { height: 42px; min-width: 42px; padding: 0 14px; border-radius: 14px; border: 1px solid var(--line); background: var(--cream); font-weight: 700; }
.occ-nav button:hover { background: var(--powder); }
.occ-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; }
.occ-grid .dow { text-align: center; font-size: .8125rem; font-weight: 800; color: var(--muted); padding-bottom: 4px; }
.occ-day { position: relative; aspect-ratio: 1; min-width: 0; border: 0; border-radius: 14px; background: #F6F1EA; color: var(--cocoa); font-weight: 700; font-size: .95rem; padding: 0; display: grid; place-items: center; transition: background-color .16s var(--ease), color .16s var(--ease); }
.occ-lock { position: absolute; top: 5px; right: 5px; width: 13px; height: 13px; color: #fff; pointer-events: none; }
.occ-lock svg { display: block; width: 100%; height: 100%; }
.occ-day.flash-on { animation: occ-on .2s ease-out; }
.occ-day.flash-off { animation: occ-off .2s ease-out; }
.occ-day.flash-on .occ-lock { animation: occ-lock-in .24s ease-out; }
@keyframes occ-on { from { background-color: #F6F1EA; color: var(--cocoa); } }
@keyframes occ-off { from { background-color: var(--orange); color: #fff; } }
@keyframes occ-lock-in { from { opacity: 0; transform: scale(.4); } }
.occ-spin { position: absolute; inset: 0; display: grid; place-items: center; border-radius: inherit; background: rgba(43, 26, 18, .3); pointer-events: none; animation: occ-spin-out .6s ease-out forwards; }
.occ-spin i { width: 16px; height: 16px; border: 2px solid rgba(255, 255, 255, .35); border-top-color: #fff; border-radius: 50%; animation: occ-rot .6s linear infinite; }
@keyframes occ-spin-out { 0%, 70% { opacity: 1; } 100% { opacity: 0; visibility: hidden; } }
@keyframes occ-rot { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .occ-day.flash-on, .occ-day.flash-off, .occ-day.flash-on .occ-lock { animation: none; }
  .occ-spin i { animation: none; }
}
.occ-day.empty { aspect-ratio: 1; visibility: hidden; grid-column: auto; padding: 0; border: 0; background: transparent; }
.occ-day.block, .occ-day.booked, .occ-day.sale { background: var(--orange); color: #fff; }
.occ-day.sale.p10, .occ-day.sale.p15, .occ-day.sale.p20, .occ-day.sale.p25, .occ-day.sale.p30 { background: var(--d); color: var(--d-ink); }
.occ-day.sale { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; padding: 2px 0; line-height: 1; }
.occ-day.sale b { display: block; font-weight: 800; font-size: .92em; line-height: 1; }
.occ-day.sale small { display: block; font-size: .68rem; font-weight: 800; line-height: 1; letter-spacing: -.03em; white-space: nowrap; }
.occ-day.past { background: #F3EEE8; color: #C4B2A4; cursor: not-allowed; }
.occ-day:disabled { cursor: not-allowed; }
.occ-day.today { box-shadow: inset 0 0 0 2px var(--terra); }
.occ-day.block.today, .occ-day.booked.today { box-shadow: inset 0 0 0 2px #fff; }
.occ-day.sale.today { box-shadow: inset 0 0 0 2px #fff; }
.occ-legend { display: flex; gap: 18px; flex-wrap: wrap; margin-top: 18px; font-size: .85rem; font-weight: 700; color: var(--muted); }
.occ-legend i { display: inline-block; width: 14px; height: 14px; border-radius: 4px; margin-right: 6px; vertical-align: -2px; }
.lg-busy { background: var(--orange); } .lg-free { background: #F6F1EA; border: 1px solid var(--line); } .lg-past { background: #F3EEE8; }
.occ-legend i.swatch { background: var(--d); }
@media (hover: hover) and (pointer: fine) {
  .occ-day.free:hover, .occ-day.block:hover, .occ-day.sale:hover, .view-grid .occ-day.has:hover { filter: brightness(.97); }
}
.obj-map { height: auto; }
.hour-price { font-size: 1.4rem; }
.ptable-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.ptable-head h2 { margin: 0; font-size: 1.5rem; }
.ptable-guests { margin: 0; }
.book-card .ptable-guests { margin: 2px 0 14px; }
.party-step { display: flex; flex-direction: column; gap: 4px; margin: 0 0 14px; padding: 10px 12px 10px 16px; border: 1.5px solid var(--line); border-radius: 16px; background: var(--cream); }
.party-step-main { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 40px; }
.party-step-lab { font-size: .8125rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); }
.party-step .stepper { flex: none; gap: 8px; }
.party-step .stepper button { width: 40px; height: 40px; touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none; }
.party-step .stepper b { min-width: 1.6rem; font-size: 1.25rem; font-variant-numeric: tabular-nums; }
.party-step-cap { color: var(--muted); font-weight: 650; font-size: .78rem; }
.party-step.is-mini { margin: 0; padding: 10px 12px; }
.party-step.is-mini .party-step-main { min-height: 36px; }
.ptable-head .party-step { margin: 0; min-width: min(100%, 280px); }
.ptable-card { background: #fff; border: 1px solid var(--line); border-radius: 22px; overflow: hidden; }
.ptable-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }
.ptable { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.ptable th, .ptable td { padding: 16px 18px; text-align: right; font-weight: 700; white-space: nowrap; }
.ptable th:first-child, .ptable td:first-child { text-align: left; position: sticky; left: 0; z-index: 1; background: #fff; }
.ptable thead th { font-family: var(--font-d); font-size: 1.02rem; font-weight: 700; letter-spacing: -.02em; color: var(--cocoa); background: #fff; vertical-align: bottom; padding-top: 18px; }
.ptable thead th:first-child { z-index: 2; color: var(--muted); font-size: .78rem; font-family: var(--font); letter-spacing: .04em; text-transform: uppercase; }
.ptable thead small { display: block; margin-top: 3px; font-family: var(--font); font-weight: 650; font-size: .72rem; letter-spacing: 0; text-transform: none; color: var(--muted); }
.ptable thead th.k-ny { color: var(--terra); }
.ptable td.k-ny { background: #FFF8F2; }
.ptable tbody th { font-weight: 750; color: var(--cocoa); font-size: .98rem; }
.ptable tbody tr + tr th, .ptable tbody tr + tr td { border-top: 1px solid #F3E6D8; }
.ptable .is-on th, .ptable .is-on td { background: #FFF3E8; }
.ptable .ptable-you th, .ptable .ptable-you td { background: #fff; color: var(--terra); font-family: var(--font-d); font-size: 1.05rem; }
.ptable .is-on td.k-ny, .ptable .ptable-you td.k-ny { background: #FFF3E8; }
.ptable-empty { color: #C9B8A8; font-weight: 600; }
.ptable-svc { border-top: 1px solid var(--line); }
.ptable-svc small { margin-left: 6px; color: var(--muted); font-weight: 650; font-size: .75rem; }
.ptable-note { margin: 12px 0 0; color: var(--muted); font-size: .85rem; font-weight: 600; max-width: 68ch; }
.ptable-edit td { padding: 2px 8px; }
.ptable-edit .ptable-in { width: 100%; min-width: 4.6rem; border: 0; background: transparent; text-align: right; font: 700 16px/1.2 var(--font); font-variant-numeric: tabular-nums; color: var(--cocoa); padding: 10px 4px; border-radius: 10px; touch-action: manipulation; }
.ptable-edit td:focus-within { background: #fff; box-shadow: inset 0 0 0 2px var(--orange); }
.ptable-edit .band-span { min-width: 12.5rem; display: flex; align-items: center; gap: 6px; padding: 6px 10px; }
.band-range { display: inline-flex; align-items: center; gap: 4px; }
.band-range .ptable-in { width: 2.8rem; min-width: 2.8rem; text-align: center; padding: 8px 2px; }
.band-range em { color: var(--muted); font-style: normal; font-weight: 700; font-size: .85rem; }
.band-range > small { color: var(--muted); font-size: .68rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.ptable tbody th .band-range { gap: 6px; }
.ptable tbody th .band-range b { font-weight: 750; font-variant-numeric: tabular-nums; }
.band-del { flex: none; width: 28px; height: 28px; border: 0; border-radius: 9px; background: var(--powder); display: grid; place-items: center; color: var(--cocoa); touch-action: manipulation; }
.band-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; margin: 10px 2px 0; }
.band-tools p { margin: 0; color: var(--muted); font-size: .82rem; font-weight: 600; max-width: 52ch; line-height: 1.4; }
.price-lead h2 { font-size: 1.45rem; margin-bottom: 16px; }
.price-quick { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 16px 0; padding: 14px; background: #fff; border: 1px solid var(--line); border-radius: 20px; }
.price-quick label { display: flex; align-items: center; gap: 8px; font-weight: 800; font-size: .88rem; }
.price-quick input { width: 6.5rem; padding: .55em .8em; border-radius: 12px; border: 1px solid var(--line); background: var(--cream); font-weight: 800; font-size: 16px; touch-action: manipulation; }
.price-quick input::placeholder, .svc-row input::placeholder, .ptable-in::placeholder { color: #C4B2A4; }
.price-quick p { flex: 1 1 100%; margin: 0; color: var(--muted); font-size: .82rem; font-weight: 600; line-height: 1.45; }
.hour-field { max-width: 240px; margin-bottom: 14px; }
.hour-field input { font-size: 16px; }
.price-svc { margin-top: 18px; }
.price-svc h3 { font-size: 1.05rem; margin-bottom: 10px; }
.preset-note { margin: 0 0 10px; color: var(--muted); font-size: .85rem; font-weight: 650; max-width: 62ch; }
.preset-row { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.preset { padding: .45em .9em; border-radius: 999px; border: 1px solid var(--line); background: #fff; font-weight: 750; font-size: .82rem; color: var(--cocoa); touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none; }
.preset:active { transform: scale(.98); }
.preset.on { background: var(--powder); border-color: var(--orange); color: var(--orange-deep); }
.svc-row { display: grid; grid-template-columns: minmax(0, 1fr) 96px minmax(120px, 150px) 36px; gap: 8px; align-items: center; margin-bottom: 8px; }
.svc-row input, .svc-row select { width: 100%; min-width: 0; padding: .6em .75em; border-radius: 12px; border: 1px solid var(--line); background: #fff; font-weight: 700; font-size: 16px; touch-action: manipulation; }
.svc-row button { width: 36px; height: 36px; border: 0; border-radius: 12px; background: var(--powder); display: grid; place-items: center; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.price-bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 18px; padding: 14px 16px; background: #fff; border: 1px solid var(--line); border-radius: 20px; position: relative; z-index: 4; }
.occ-save { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line); }
.occ-save p { margin: 0; color: var(--muted); font-weight: 650; font-size: .92rem; }
.occ-save .btn[disabled] { opacity: .45; cursor: default; }
#price-from { font-size: .95rem; font-weight: 750; min-width: 0; }
.from-tip { position: relative; display: inline-flex; align-items: center; gap: 10px; max-width: 100%; }
.from-anchor { position: relative; flex: none; }
.from-seal { width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: var(--grad); color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; box-shadow: 0 3px 0 var(--orange-ink); cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.from-seal small { font-size: .58rem; font-weight: 800; line-height: 1; letter-spacing: .06em; opacity: .92; }
.from-seal b { font-family: var(--font-d); font-size: 1rem; line-height: 1; font-weight: 650; }
.from-pop { position: absolute; z-index: 6; right: -6px; bottom: calc(100% + 14px); width: 252px; max-width: min(252px, calc(100vw - 56px)); padding: 14px 14px 13px; background: #fff; border: 1px solid var(--line); border-radius: 22px; box-shadow: 0 22px 44px -20px rgba(44, 42, 40, .48); opacity: 0; transform: translateY(8px) scale(.94); transform-origin: calc(100% - 22px) calc(100% + 14px); pointer-events: none; transition: opacity .18s var(--ease), transform .28s var(--ease); }
.from-pop::after { content: ""; position: absolute; right: 16px; bottom: -6px; width: 12px; height: 12px; background: #fff; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); transform: rotate(45deg); }
.from-num { display: flex; align-items: baseline; gap: 7px; }
.from-num small { font-weight: 800; font-size: .82rem; color: var(--apricot); letter-spacing: .04em; }
.from-num b { font-family: var(--font-d); font-size: 2.2rem; line-height: .85; letter-spacing: -.04em; color: var(--cocoa); font-weight: 600; }
.from-num em { font-style: normal; font-weight: 750; color: var(--muted); font-size: .92rem; }
.from-when { display: inline-flex; margin: 8px 0; padding: .18em .7em; border-radius: 999px; background: var(--powder); color: var(--orange-ink); font-size: .75rem; font-weight: 800; }
.from-pop p { margin: 0; color: var(--cocoa); font-size: .84rem; font-weight: 650; line-height: 1.45; }
.from-tip.is-open .from-pop, .from-tip:focus-within .from-pop { opacity: 1; transform: none; pointer-events: auto; }
@media (hover: hover) and (pointer: fine) {
  .from-tip:hover .from-pop { opacity: 1; transform: none; pointer-events: auto; }
  .from-seal:hover { filter: brightness(1.06); }
}
@media (prefers-reduced-motion: reduce) { .from-pop { transition: none; } }
#price-save.is-dirty { box-shadow: 0 4px 0 var(--orange-ink); }
.bk-sum { display: flex; flex-direction: column; gap: 4px; margin: 4px 0 12px; padding: 12px 14px; border-radius: 16px; background: var(--powder); font-weight: 700; font-size: .9rem; }
.bk-sum b { font-family: var(--font-d); color: var(--terra); font-size: 1.05rem; }
.bk-sum .sum-rate { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 6px; padding-bottom: 8px; border-bottom: 1px solid var(--line); }
.bk-sum .sum-rate b { font-size: 1.35rem; line-height: 1; }
.bk-sum .sum-rate span { color: var(--muted); font-weight: 650; font-size: .82rem; text-align: right; }
.svc-pick { display: flex; flex-direction: column; gap: 8px; margin-bottom: 8px; }
.svc-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.svc-qty { display: inline-flex; align-items: center; gap: 6px; flex: none; font-size: .8rem; font-weight: 750; color: var(--muted); }
.svc-qty[hidden] { display: none; }
.svc-qty input { width: 64px; font-size: 16px; font-weight: 750; color: var(--cocoa); border: 1.5px solid var(--line); border-radius: 12px; padding: 6px 8px; background: #fff; }
.svc-pick small { display: block; color: var(--muted); font-weight: 650; }
.stepper button:disabled { opacity: .35; }
@media (hover: hover) and (pointer: fine) {
  .preset:hover { border-color: var(--orange); }
  .stepper button:disabled:hover { background: var(--cream); border-color: var(--line); transform: none; }
}
@media (max-width: 640px) {
  .ptable th, .ptable td { padding: 12px 10px; font-size: .88rem; }
  .ptable thead th { font-size: .92rem; padding-top: 14px; }
  .ptable thead th:first-child { font-size: .68rem; }
  .ptable thead small { font-size: .64rem; }
  .ptable-head { align-items: stretch; flex-direction: column; }
  .ptable-head .party-step, .book-card .party-step { width: 100%; }
  .host-card, .book-card { padding: 14px 14px 12px; border-radius: 18px; }
  .side-title, .obj-sec > h2, .ptable-head h2 { margin-bottom: 12px; font-size: var(--fs-h2); }
  .side-title::after { width: 1.85em; height: 3px; margin-top: 8px; }
  .host-card .facts { margin-bottom: 8px; gap: 6px; }
  .host-card .facts li { padding: .32em .7em; font-size: .78rem; }
  .host-card .owner-box { margin-bottom: 8px; padding: 8px 10px; }
  .host-card .avatar { width: 40px; height: 40px; font-size: 1rem; }
  .host-ms-lab { margin: 6px 0 4px; }
  .host-card .reach a { min-height: 50px; padding: 6px 2px; }
  .host-card .reach-call { padding: 10px 12px; border-radius: 14px; }
  .book-card .sale-banner { margin-bottom: 8px; padding: 6px 10px; }
  .book-card .sale-banner b { font-size: 1.08rem; }
  .book-card .price-row { margin-bottom: 8px; gap: 8px; }
  .book-card .price-row b { font-size: 1.42rem; }
  .book-card .party-step { margin-bottom: 8px; padding: 4px 8px 4px 12px; }
  .book-card .party-step-main { min-height: 36px; }
  .book-card .party-step-cap { display: none; }
  .book-card .party-step .stepper button { width: 36px; height: 36px; }
  .book-card .party-step .stepper b { font-size: 1.1rem; }
  .book-card .date-pick { grid-template-columns: 1fr 1fr; gap: 6px; margin-bottom: 4px; }
  .book-card .date-pick label span { font-size: .7rem; letter-spacing: .04em; }
  .book-card .sess-pick { gap: 6px; margin-bottom: 6px; }
  .book-card .total-line { padding: 8px 0 6px; }
  .book-card .total-line span { min-width: 0; font-size: .82rem; }
  .book-card .total-line b { font-size: 1.05rem; }
  .book-card .btn-lg { padding: .78em 1.1em; font-size: 1rem; border-radius: 14px; }
  .book-card .note { margin-top: 8px; font-size: .75rem; }
  .obj-addr { margin-top: 8px; }
  .obj-addr a { font-size: .9rem; }
  .svc-row { grid-template-columns: 1fr 1fr; }
  .svc-row select { grid-column: 1 / -1; }
  .svc-row button { grid-column: 2; justify-self: end; }
  .price-bar, .occ-save { align-items: stretch; flex-direction: column; }
  .occ-save .btn { width: 100%; }
}
.lightbox { position: fixed; inset: 0; z-index: 120; background: rgba(40, 20, 10, .9); display: grid; place-items: center; padding: 30px; } .lightbox img { max-height: 88vh; max-width: 92vw; border-radius: 18px; } .lightbox button { position: absolute; top: 20px; right: 20px; width: 48px; height: 48px; border-radius: 50%; border: 0; background: #fff; }
.similar { margin-top: 12px; }

/* ---------- формы и окна ---------- */
.modal-back { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 20px; background: rgba(28, 26, 24, .48); backdrop-filter: blur(6px); opacity: 0; transition: opacity .25s; overflow-y: auto; }
.modal-back.in { opacity: 1; }
.modal { position: relative; width: min(520px, 100%); margin: auto; padding: 28px 24px; background: var(--cream); border-radius: 28px; box-shadow: 0 40px 80px -20px rgba(70, 30, 10, .6); transform: translateY(16px) scale(.97); transition: transform .28s var(--ease); max-height: calc(100vh - 40px); overflow-y: auto; }
.modal.wide { width: min(780px, 100%); }
.modal-back.in .modal { transform: none; }
.modal-x { position: absolute; right: 16px; top: 16px; width: 38px; height: 38px; border-radius: 50%; border: 0; background: var(--powder); display: grid; place-items: center; transition: transform .3s var(--ease); z-index: 2; } .modal-x:hover { transform: rotate(90deg); }
.modal-title { font-size: var(--fs-h2); margin-bottom: 6px; padding-right: 40px; } .modal-lead { color: var(--muted); margin-bottom: 16px; line-height: 1.45; }
.form { display: flex; flex-direction: column; gap: 14px; }
.row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; } .row3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.stay-clocks { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
.stay-clock { min-width: 0; padding: 14px 12px 12px; border-radius: 22px; background: #fff; border: 1px solid var(--line); text-align: center; }
.stay-clock > span { display: block; font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.stay-dial { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 8px 0 10px; }
.hour-face { display: inline-block; min-width: 4.6ch; font-family: var(--font-d); font-size: 2.4rem; line-height: 1; letter-spacing: -.03em; font-weight: 650; transition: transform .14s var(--ease), opacity .14s; }
.hour-face.flip { transform: translateY(-8px); opacity: .2; }
.hour-step { width: 42px; height: 42px; border: 0; border-radius: 50%; background: var(--powder); color: var(--cocoa); font-size: 1.6rem; line-height: 1; cursor: pointer; }
.hour-step:active { transform: scale(.94); }
.hour-strip { display: flex; gap: 6px; width: 100%; min-width: 0; overflow-x: auto; scroll-snap-type: x mandatory; padding: 2px 2px 8px; scrollbar-width: none; }
.hour-strip::-webkit-scrollbar { height: 0; }
.hour-chip { flex: none; scroll-snap-align: center; border: 1px solid var(--line); background: var(--cream); border-radius: 999px; padding: .38em .72em; font-weight: 800; font-size: .82rem; color: var(--muted); }
.hour-chip.on { background: var(--grad); color: #fff; border-color: transparent; box-shadow: 0 3px 0 var(--orange-ink); }
@media (max-width: 640px) { .stay-clocks { grid-template-columns: minmax(0, 1fr); } .hour-face { font-size: 2.2rem; } }
.addr-find { display: grid; grid-template-columns: 1fr auto; gap: 10px; align-items: end; }
.addr-map { height: 230px; border-radius: 18px; overflow: hidden; border: 1px solid var(--line); background: #E8E4DC; }
.addr-map iframe { width: 100%; height: 100%; border: 0; display: block; }
.addr-picks { display: flex; flex-direction: column; gap: 6px; }
.addr-pick { text-align: left; padding: 10px 12px; border-radius: 14px; border: 1px solid var(--line); background: #fff; font: inherit; font-weight: 650; font-size: .86rem; line-height: 1.35; color: var(--cocoa); cursor: pointer; }
.addr-pick:hover, .addr-pick.on { border-color: var(--orange); }
.addr-status { margin: 0; color: var(--muted); font-weight: 700; font-size: .9rem; line-height: 1.4; }
@media (max-width: 640px) { .addr-find { grid-template-columns: 1fr; } .addr-find .btn { width: 100%; } }
.tg-note { display: flex; align-items: center; gap: 8px; margin: 0; color: var(--muted); font-size: .86rem; font-weight: 600; line-height: 1.35; }
.tg-note .ic, .tg-note svg { flex: none; width: 18px; height: 18px; color: var(--orange); }
.ms-box { display: flex; flex-direction: column; gap: 10px; }
.ms-tabs { display: flex; gap: 4px; padding: 4px; background: var(--powder); border-radius: 999px; }
.ms-tab { flex: 1; position: relative; }
.ms-tab input { position: absolute; opacity: 0; width: 1px; height: 1px; overflow: hidden; }
.ms-tab span { display: flex; align-items: center; justify-content: center; gap: 6px; min-height: 42px; border-radius: 999px; font-weight: 800; font-size: .9rem; color: var(--muted); }
.ms-tab span .ic { width: 16px; height: 16px; }
.ms-tab input:checked + span { background: #fff; color: var(--cocoa); box-shadow: 0 6px 14px -10px rgba(44, 42, 40, .55); }
.ms-tab input:focus-visible + span { outline: 2px solid var(--orange); outline-offset: 2px; }
.ms-tab input:checked + span .ic { color: var(--orange); }
.ms-box.is-viber .ms-nick { display: none; }
.ms-box.is-viber .ms-tab input:checked + span .ic { color: #7360F2; }
.ms-box.is-viber .ms-note .ic { color: #7360F2; }
@media (hover: hover) and (pointer: fine) {
  .ms-tab input:not(:checked) + span:hover { color: var(--cocoa); }
}
.form-err { padding: .7em 1em; border-radius: 12px; background: #FBE1DB; color: #A33A2A; font-weight: 700; font-size: .88rem; }
.photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; }
.photo-tile { position: relative; margin: 0; aspect-ratio: 4 / 3; border-radius: 14px; overflow: hidden; background: var(--powder); border: 1px solid var(--line); }
.photo-tile img { width: 100%; height: 100%; object-fit: cover; display: block; }
.photo-tile button { position: absolute; top: 6px; right: 6px; width: 28px; height: 28px; padding: 0; border: 0; border-radius: 50%; background: rgba(44, 42, 40, .72); color: #fff; display: grid; place-items: center; }
.photo-tile button .ic { width: 14px; height: 14px; }
.photo-tools { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.photo-hint, .photo-empty { margin: 0; color: var(--muted); font-size: .85rem; line-height: 1.4; }
.photo-empty { padding: 14px; border: 1px dashed var(--line); border-radius: 14px; text-align: center; }
.done { text-align: center; padding: 10px 0; } .done .btn { margin: 10px 6px 0; }
.done-facts { margin: 0 0 6px; font-weight: 750; color: var(--cocoa); }
.done-reply { margin: 0 0 18px; color: var(--muted); font-weight: 600; font-size: .92rem; line-height: 1.4; }
.next-cards { display: grid; gap: 10px; margin-top: 4px; text-align: left; }
.next-card {
  display: flex; align-items: center; gap: 14px;
  padding: 15px 16px 15px 14px; min-height: 78px;
  border-radius: 20px; background: #fff; border: 1px solid var(--line);
  color: inherit; text-decoration: none;
  transition: transform .16s var(--ease), box-shadow .16s var(--ease), border-color .16s;
}
.next-card:hover { border-color: var(--orange); transform: translateY(-1px); box-shadow: 0 12px 24px -16px rgba(70, 30, 10, .45); }
.next-card:active { transform: scale(.985); }
.next-mark { flex: none; width: 44px; height: 44px; border-radius: 14px; display: grid; place-items: center; background: var(--powder); color: var(--terra); }
.next-mark .ic { width: 22px; height: 22px; }
.next-mark svg { width: 28px; height: 28px; display: block; }
.next-copy { flex: 1; min-width: 0; }
.next-copy strong { display: block; font-size: 1.02rem; }
.next-copy small { display: block; margin-top: 3px; color: var(--muted); font-weight: 600; font-size: .82rem; line-height: 1.35; }
.next-card > .ic { flex: none; width: 18px; color: var(--muted); }
.next-tg .next-mark { background: #E7F6FD; }
.next-view .next-mark { background: #F6E4D4; }
.bk-foot {
  position: sticky; bottom: -34px; z-index: 1;
  margin: 6px -34px -8px; padding: 16px 34px 8px;
  background: linear-gradient(to top, var(--cream) 72%, rgba(244, 239, 230, 0));
}
.inspect-page { max-width: 640px; margin: 0 auto; padding: 20px 0 48px; }
.inspect-page h1 { font-size: var(--fs-h1); margin: 0 0 8px; letter-spacing: var(--track-head); }
.inspect-note { color: var(--muted); font-weight: 600; margin: 0; line-height: 1.45; }
.inspect-chip {
  display: inline-flex; align-items: center; gap: 8px;
  margin-top: 14px; padding: 8px 14px;
  background: #fff; border: 1px solid var(--line); border-radius: 999px;
  font-weight: 750; font-size: .88rem;
}
.inspect-chip .ic { width: 16px; height: 16px; color: var(--orange); }
.inspect-cal { margin-top: 20px; }
.inspect-bar {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  margin-top: 16px; padding: 14px 16px;
  background: #fff; border: 1px solid var(--line); border-radius: 22px;
}
.inspect-bar p { margin: 0; font-weight: 750; }
.inspect-bar .btn { min-width: 180px; }
.inspect-err { margin: 12px 0 0; color: #C2412D; font-weight: 700; }
.done-ic { width: 76px; height: 76px; margin: 0 auto 16px; display: grid; place-items: center; border-radius: 50%; background: #DDF0E3; color: var(--ok); font-size: 2.2rem; animation: pop .6s var(--ease); } .done-ic .ic { stroke-width: 2.6; }
#toasts { position: fixed; left: 50%; bottom: 24px; translate: -50% 0; z-index: 200; display: flex; flex-direction: column; gap: 8px; align-items: center; pointer-events: none; }
.toast { display: inline-flex; align-items: center; gap: 10px; padding: .8em 1.3em; background: var(--cocoa); color: #fff; border-radius: 99px; font-weight: 700; font-size: .9rem; box-shadow: 0 16px 30px -10px rgba(0, 0, 0, .5); opacity: 0; transform: translateY(14px); transition: all .35s var(--ease); } .toast.in { opacity: 1; transform: none; } .toast .ic { color: #8BE0A9; } .toast.err .ic { color: #FF9E8D; }

/* ---------- вход, кабинет, админка ---------- */
.auth { display: grid; grid-template-columns: minmax(0, 480px); justify-content: center; gap: 28px; align-items: center; padding: 36px 0 56px; }
.auth-card { padding: 28px 24px; background: #fff; border: 1px solid var(--line); border-radius: 28px; box-shadow: var(--shadow); }
.auth-card h1 { font-size: var(--fs-h1); margin-bottom: 6px; } .auth-card > p { color: var(--muted); margin-bottom: 18px; }
.demo-box { margin-top: 22px; padding: 16px; border-radius: 18px; background: var(--powder); font-size: .86rem; } .demo-box b { display: block; margin-bottom: 8px; } .demo-box div { display: flex; flex-wrap: wrap; gap: 8px; }
.demo-box button { padding: .45em .9em; border-radius: 99px; border: 1px solid #E3C3AA; background: #fff; font-weight: 700; font-size: .8125rem; } .demo-box button:hover { background: var(--peach); }
.auth-art { display: none; }
.auth-art h2 { margin-top: 24px; font-size: 1.5rem; } .auth-art p { color: var(--muted); margin-top: 8px; }
.panel { padding: 24px 0 56px; }
.panel-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; }
.panel-head h1 { font-size: var(--fs-h1); } .panel-head p { color: var(--muted); font-weight: 600; }
.admin-cats {
  display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px;
  margin: -8px 0 18px;
}
.admin-cat {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 48px; padding: 0 12px; border: 1px solid var(--line); border-radius: 16px;
  background: #fff; font-weight: 750; font-size: .95rem; letter-spacing: -.02em;
  transition: background .18s var(--ease), color .18s var(--ease), transform .12s var(--ease), box-shadow .18s var(--ease);
}
.admin-cat .ic { width: 18px; height: 18px; color: var(--orange); flex: none; }
.admin-cat.on { background: var(--grad); color: #fff; border-color: transparent; box-shadow: 0 3px 0 var(--orange-ink); }
.admin-cat.on .ic { color: #fff; }
.admin-cat .cnt {
  min-width: 20px; height: 20px; padding: 0 6px; border-radius: 99px;
  background: var(--powder); font-size: .75rem; font-weight: 800; display: grid; place-items: center;
}
.admin-cat.on .cnt { background: rgba(255, 255, 255, .28); color: #fff; }
.admin-cat:active { transform: scale(.97); }
.admin-cat-lead { margin: 0 0 18px; color: var(--muted); font-weight: 650; }
.admin-cat-lead b { color: var(--cocoa); }
@media (hover: hover) and (pointer: fine) {
  .admin-cat:hover:not(.on) { background: var(--peach); }
}
.ptabs { position: sticky; top: 104px; z-index: 45; display: flex; gap: 6px; padding: 6px; margin-bottom: 26px; overflow-x: auto; background: #fff; border: 1px solid var(--line); border-radius: 999px; width: max-content; max-width: 100%; box-shadow: 0 0 0 10px var(--linen), 0 14px 24px -18px rgba(44, 42, 40, .45); scrollbar-width: none; }
.ptabs::-webkit-scrollbar { display: none; }
.ptabs button { flex: none; padding: .6em 1.2em; border: 0; background: none; border-radius: 99px; font-weight: 800; font-size: .88rem; color: var(--muted); display: inline-flex; gap: 6px; align-items: center; white-space: nowrap; } .ptabs button:hover { background: var(--powder); } .ptabs button.on { background: var(--orange); color: #fff; box-shadow: 0 4px 0 var(--orange-ink); }
@media (min-width: 981px) {
  .ptabs { width: 100%; max-width: none; }
  .ptabs button { flex: 1 1 auto; justify-content: center; }
}
.ptabs .cnt { min-width: 20px; height: 20px; padding: 0 6px; border-radius: 99px; background: rgba(0, 0, 0, .12); font-size: .8125rem; display: grid; place-items: center; } .ptabs .on .cnt { background: rgba(255, 255, 255, .3); }
.pwa-card {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin: 0 0 14px; padding: 7px 8px 7px 7px;
  background: #fff; border: 1px solid var(--line); border-radius: 16px;
}
.pwa-mark { width: 36px; height: 36px; border-radius: 10px; flex: none; }
.pwa-copy { flex: 1 1 140px; min-width: 0; }
.pwa-card h2 { margin: 0; font-family: var(--font); font-size: .88rem; font-weight: 800; letter-spacing: -.02em; }
.pwa-card p { margin: 1px 0 0; color: var(--muted); font-weight: 650; font-size: .78rem; line-height: 1.3; }
.pwa-note { color: var(--orange-ink) !important; font-weight: 700 !important; }
.pwa-note:empty { display: none; }
.pwa-actions { display: flex; gap: 6px; flex: none; margin-left: auto; }
.pwa-actions .btn { padding: .42em .9em; border-radius: 11px; }
.pwa-actions .btn.is-on { pointer-events: none; opacity: .85; }
.d24-install {
  position: fixed; left: 14px; right: 14px; bottom: 14px; z-index: 90;
  padding: 0 0 env(safe-area-inset-bottom); background: transparent; box-shadow: none;
  transform: translateY(110%); opacity: 0; pointer-events: none;
  transition: transform .4s var(--ease), opacity .28s ease;
}
.d24-install.on { transform: none; opacity: 1; pointer-events: auto; }
body:has(.modal-back) .d24-install { transform: translateY(110%); pointer-events: none; }
body.has-install { padding-bottom: 78px; }
body.has-install #toasts { bottom: 86px; }
.d24-install-in {
  display: flex; align-items: center; gap: 10px; max-width: 460px; margin: 0 auto;
  padding: 7px 7px 7px 10px; border-radius: 16px;
  background: rgba(44, 42, 40, .94); color: #fff;
  box-shadow: 0 16px 36px -16px rgba(36, 32, 28, .55);
  backdrop-filter: blur(12px);
  cursor: pointer;
}
.d24-install.is-ios .d24-install-in { cursor: default; }
.d24-install-in > img { width: 32px; height: 32px; border-radius: 9px; flex: none; }
.d24-install-text { flex: 1; min-width: 0; }
.d24-install-text strong { display: block; font-size: .86rem; font-weight: 800; letter-spacing: -.02em; line-height: 1.15; }
.d24-install-text span { display: block; margin-top: 1px; color: rgba(255, 255, 255, .78); font-size: .72rem; font-weight: 650; line-height: 1.25; }
.d24-share { display: inline-block; vertical-align: -3px; margin: 0 2px; }
.d24-install-actions { display: flex; align-items: center; gap: 6px; flex: none; }
.d24-install-btn {
  padding: 7px 12px; border: 0; border-radius: 10px; background: var(--orange); color: #fff;
  font: inherit; font-size: .8rem; font-weight: 800; cursor: pointer; white-space: nowrap;
  transition: transform .12s var(--ease), background .15s ease;
}
.d24-install-btn:hover { background: #c33e0c; }
.d24-install-btn:active { transform: scale(.97); }
.d24-install-x {
  width: 30px; height: 30px; padding: 0; border: 0; border-radius: 9px;
  background: rgba(255, 255, 255, .12); color: #fff; display: grid; place-items: center; cursor: pointer;
}
.d24-install-x:hover { background: rgba(255, 255, 255, .22); }
.d24-install-x:active { transform: scale(.96); }
@media (max-width: 640px) {
  .d24-install { left: 10px; right: 10px; bottom: 10px; }
  .d24-install-text span { white-space: normal; }
  body.has-install { padding-bottom: 84px; }
  body.has-install #toasts { bottom: 92px; }
}
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); gap: 10px; margin-bottom: 18px; }
.stat { padding: 12px 14px; background: #fff; border: 1px solid var(--line); border-radius: 16px; box-shadow: var(--shadow-sm); } .stat small { color: var(--muted); font-weight: 700; font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; line-height: 1.25; } .stat b { display: block; font-family: var(--font-d); font-size: 1.35rem; color: var(--terra); margin-top: 2px; line-height: 1.15; } .stat.hl { background: var(--grad); color: #fff; } .stat.hl small, .stat.hl b { color: #fff; }
.bars { display: flex; flex-direction: column; gap: 12px; padding: 24px; background: #fff; border: 1px solid var(--line); border-radius: 22px; } .bar { display: grid; grid-template-columns: 110px 1fr 40px; gap: 12px; align-items: center; font-weight: 700; font-size: .9rem; } .bar i { display: block; height: 14px; border-radius: 99px; background: linear-gradient(90deg, var(--peach), var(--orange)); transform-origin: left; animation: grow 1s var(--ease) both; }
.list { display: flex; flex-direction: column; gap: 12px; }
.row-card { display: grid; grid-template-columns: 1fr auto; gap: 16px; align-items: center; padding: 18px 22px; background: #fff; border: 1px solid var(--line); border-radius: 20px; transition: box-shadow .3s; } .row-card:hover { box-shadow: var(--shadow-sm); }
.row-card h3 { font-size: 1rem; font-family: var(--font); font-weight: 800; margin-bottom: 4px; } .row-card .meta { color: var(--muted); font-size: .86rem; font-weight: 600; display: flex; gap: 6px 16px; flex-wrap: wrap; } .row-card .meta span { display: inline-flex; gap: 5px; align-items: center; }
.row-card .acts { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; align-items: center; }
.row-card.has-img { grid-template-columns: 96px 1fr auto; } .row-card.has-img img { width: 96px; height: 76px; object-fit: cover; border-radius: 14px; }
.status { display: inline-flex; padding: .25em .8em; border-radius: 99px; font-weight: 800; font-size: .8125rem; background: var(--powder); color: var(--deep); }
.status.new { background: #FFE9B8; color: #7A5600; } .status.confirmed { background: #DDF0E3; color: #2F6E48; } .status.completed { background: #E5E9F6; color: #3E4C86; } .status.declined, .status.cancelled, .status.hidden { background: #FBE1DB; color: #A33A2A; } .status.published { background: #DDF0E3; color: #2F6E48; }
.empty-s { padding: 40px; text-align: center; color: var(--muted); border: 2px dashed var(--line); border-radius: 22px; font-weight: 600; }
.check-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 2px 14px; }
.form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; }
.form-sec { margin: 6px 0 -2px; font-weight: 800; font-size: .8125rem; text-transform: uppercase; letter-spacing: .06em; color: var(--terra); }
.table-wrap { overflow-x: auto; background: #fff; border: 1px solid var(--line); border-radius: 22px; }
table.tbl { width: 100%; border-collapse: collapse; font-size: .9rem; } .tbl th { text-align: left; padding: 14px 18px; background: var(--cream); font-size: .8125rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); } .tbl td { padding: 14px 18px; border-top: 1px solid #F4E6DA; vertical-align: top; } .tbl tr:hover td { background: #FFFAF5; }
.access-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 22px; }
.access-head h2 { font-size: 1.28rem; }
.access-head p { margin-top: 6px; max-width: 54ch; color: var(--muted); font-weight: 650; font-size: .92rem; line-height: 1.4; }
.access-sec { display: flex; align-items: baseline; gap: 8px; margin: 22px 0 12px; font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; color: var(--terra); }
.access-sec small { color: var(--muted); letter-spacing: 0; text-transform: none; font-size: .82rem; font-weight: 700; }
.access-grid { display: flex; flex-direction: column; gap: 12px; }
.access-card {
  display: grid; grid-template-columns: 48px 1fr; gap: 14px 16px; padding: 16px 18px;
  background: #fff; border: 1px solid var(--line); border-radius: 22px; box-shadow: var(--shadow-sm);
}
.access-mark {
  width: 48px; height: 48px; border-radius: 16px; display: grid; place-items: center;
  background: var(--grad); color: #fff; font-family: var(--font-d); font-weight: 800; font-size: 1rem; letter-spacing: -.03em;
}
.access-card.is-admin .access-mark { background: var(--cocoa); }
.access-body { min-width: 0; }
.access-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.access-top h3 { font-size: 1.05rem; }
.access-mail { margin-top: 2px; color: var(--muted); font-weight: 650; font-size: .86rem; word-break: break-all; }
.access-quota {
  display: inline-flex; align-items: baseline; gap: 5px; padding: .22em .7em; border-radius: 99px;
  background: var(--powder); color: var(--deep); font-weight: 800; font-size: .78rem;
}
.access-quota b { font-family: var(--font-d); font-size: .95rem; }
.access-quota.is-full { background: #FBE1DB; color: #A33A2A; }
.access-card .meta { margin-top: 8px; color: var(--muted); font-size: .86rem; font-weight: 600; display: flex; gap: 6px 16px; flex-wrap: wrap; }
.access-card .meta span { display: inline-flex; gap: 5px; align-items: center; }
.access-objects { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.access-chip {
  display: inline-flex; max-width: 100%; padding: .28em .7em; border-radius: 999px;
  background: var(--cream); color: var(--cocoa); font-size: .78rem; font-weight: 700;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.access-chip:hover { background: var(--peach); }
.access-card .acts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; justify-content: flex-start; align-items: center; }
.access-pass { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
.access-pass input { width: 100%; }
.access-slip {
  display: grid; gap: 10px; margin: 4px 0 16px; padding: 14px 16px;
  background: var(--cream); border-radius: 18px;
}
.access-slip p { display: grid; gap: 2px; }
.access-slip span { color: var(--muted); font-size: .75rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.access-slip b { font-size: 1.02rem; word-break: break-all; }
.access-slip-acts { display: flex; flex-wrap: wrap; gap: 8px; }
@media (max-width: 640px) {
  .access-head { flex-direction: column; align-items: stretch; }
  .access-card { grid-template-columns: 1fr; }
}

/* ---------- подвал ---------- */
.site-footer { margin-top: 48px; padding: 40px 0 0; color: #3C342C; background: linear-gradient(165deg, #F8E6D0 0%, #E8C9A4 48%, #F3D7B6 100%); border-radius: 40px 40px 0 0; position: relative; }
.footer-grid { display: grid; grid-template-columns: 1.25fr .9fr 1fr 1.15fr .85fr; gap: 28px 32px; }
.site-footer a:not(.btn) { color: inherit; }
.see-also { margin-top: 18px; font-weight: 650; color: var(--muted); }
.see-also a, .step a, .faq details a, .prose-card a:not(.btn):not(.reach-call) { color: var(--orange-deep); font-weight: 700; text-underline-offset: 3px; }
.site-footer h3 { font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; color: #C2410C; margin-bottom: 12px; font-family: var(--font-d); font-weight: 700; }
.site-footer li { padding: 6px 0; } .site-footer li a:hover { color: #C2410C; text-decoration: underline; text-underline-offset: 3px; }
.foot-brand p { margin: 16px 0 18px; color: #5E564E; max-width: 32ch; font-size: .94rem; line-height: 1.65; }
.foot-contacts li { display: flex; align-items: center; gap: 10px; } .foot-contacts .ic { color: #C2410C; } .foot-contacts + .btn { margin-top: 14px; }
.foot-news { color: #5E564E; margin-bottom: 16px; font-size: .94rem; }
.socials { display: flex; gap: 8px; } .socials a { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 14px; background: #fff; box-shadow: 0 8px 16px -10px rgba(60, 52, 44, .45); transition: transform .3s var(--ease), box-shadow .3s var(--ease); } .socials a svg { width: 28px; height: 28px; display: block; } .socials a:hover { background: #fff; transform: translateY(-3px); box-shadow: 0 14px 18px -10px rgba(194, 65, 12, .5); }
.site-footer .brand-light .brand-mark { background: none; padding: 0; border-radius: 0; filter: none; box-shadow: none; }
.footer-bottom { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-top: 28px; padding: 16px 0; border-top: 1px solid rgba(60, 52, 44, .14); font-size: .85rem; color: #6A6158; }
.to-top { position: fixed; right: 22px; bottom: 22px; z-index: 50; width: 50px; height: 50px; border-radius: 16px; border: 0; background: var(--grad); color: #fff; box-shadow: 0 5px 0 var(--orange-ink), 0 14px 20px -8px rgba(0, 0, 0, .4); display: grid; place-items: center; font-size: 1.2rem; opacity: 0; translate: 0 20px; pointer-events: none; transition: all .35s var(--ease); } .to-top .ic { rotate: -90deg; } .to-top.show { opacity: 1; translate: 0 0; pointer-events: auto; }

.reveal { opacity: 0; transform: translateY(28px); transition: opacity .8s var(--ease), transform .8s var(--ease), box-shadow .4s var(--ease); }
.reveal.in { opacity: 1; transform: none; }
.card.reveal { transform: none; }
.card.reveal.in { transition: box-shadow .4s var(--ease), opacity .8s var(--ease); }
[data-tilt] { transform-style: preserve-3d; }

/* ---------- адаптивность ---------- */
@media (max-width: 1440px) {
  .dd-social { display: none; }
  .header-in { gap: 12px; }
  .nav a { padding: .5em .85em; }
}
@media (max-width: 1180px) {
  .search { grid-template-columns: 1fr 1fr 1fr; } .search-go { grid-column: 1 / -1; padding: 1em; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .obj-top { grid-template-columns: 1fr; }
  .gallery, .obj-side, .book-card { position: static; }
  .obj-side { display: contents; }
  .gallery { order: 1; }
  .host-card { order: 2; }
  .book-card { order: 3; }
  .tool-txt, .dd-social .tool-btn { font-size: 0; } .dd-social { display: none; } .tool-btn .tool-txt { display: none; } .tool-login.is-in .tool-txt { display: inline; font-size: .85rem; }
  .brand-mark { height: 64px; }
  .brand-light .brand-mark { height: 48px; }
  .ptabs { top: 88px; }
}
@media (max-width: 980px) {
  .burger { display: flex; }
  .header-tools { margin-left: 0; } .header-in { flex-wrap: nowrap; gap: 10px; }
  .brand-mark { height: 48px; }
  .brand-light .brand-mark { height: 44px; }
  .nav { position: absolute; left: 20px; right: 20px; top: 100%; flex-direction: column; border-radius: 24px; margin: 0; padding: 10px; background: rgba(255, 249, 243, .97); backdrop-filter: blur(16px); box-shadow: var(--shadow); opacity: 0; transform: translateY(-10px); pointer-events: none; transition: all .3s var(--ease); }
  .menu-open .nav { opacity: 1; transform: none; pointer-events: auto; }
  .nav a { padding: .9em 1.2em; } .nav-mobile-extra { display: flex; flex-direction: column; border-top: 1px dashed var(--line); margin-top: 6px; padding-top: 6px; } .nav-mobile-extra a { padding: .9em 1.2em; font-weight: 700; color: var(--muted); }
  #open-contact { display: none; }
  .hero { padding: 28px 0 72px; }
  .hero h1 { font-size: 1.85rem; }
  .hero-sub { font-size: 1.0625rem; }
  .hero-stats { gap: 16px; }
  .search { padding: 8px; border-radius: 20px; }
  .tile { min-height: 220px; border-radius: 22px; padding: 20px; }
  .cta { padding: 28px 22px; border-radius: 24px; }
  .cat-grid { grid-template-columns: 1fr; } .only-m { display: inline-flex !important; }
  .filters { position: fixed; z-index: 90; left: 0; top: 0; bottom: 0; width: min(360px, 90vw); max-height: none; border-radius: 0 28px 28px 0; transform: translateX(-105%); transition: transform .4s var(--ease); padding-bottom: 90px; }
  .filters-open .filters { transform: none; } .filters-x { display: grid; width: 38px; height: 38px; place-items: center; border-radius: 50%; border: 0; background: var(--powder); }
  .filters-apply { display: flex; position: sticky; bottom: 0; margin-top: 14px; }
  .filters-back { position: fixed; inset: 0; z-index: 80; background: rgba(28, 26, 24, .45); opacity: 0; pointer-events: none; transition: opacity .3s; } .filters-open .filters-back { opacity: 1; pointer-events: auto; }
  .steps, .tiles, .benefits { grid-template-columns: 1fr 1fr; } .cta { text-align: center; } .cta p { margin-inline: auto; }
  .two-col, .auth { grid-template-columns: 1fr; }
  .tabs { top: 80px; gap: 4px; padding: 5px; overflow-x: auto; overflow-y: hidden; overscroll-behavior-x: contain; scrollbar-width: none; -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity; }
  .ptabs { top: 72px; }
  .tabs::-webkit-scrollbar { display: none; }
  .tabs a { flex: 0 0 auto; min-width: max-content; padding: .62em .9em; font-size: .98rem; letter-spacing: -.02em; scroll-snap-align: start; }
  .obj-sec { scroll-margin-top: 150px; }
}
@media (max-width: 760px) {
  .wrap { width: calc(100% - 24px); }
  .site-header { padding: 8px 0; }
  .brand-mark { height: 44px; width: auto; }
  .header-tools { margin-left: auto; gap: 4px; min-width: 0; }
  .burger { width: 42px; height: 42px; margin-left: 4px; border-radius: 12px; flex: none; }
  .search {
    grid-template-columns: 1fr; border-radius: 16px; gap: 2px; padding: 4px;
    box-shadow: 0 8px 18px -14px rgba(36, 32, 28, .22);
  }
  .search .sf:first-child, .search .sf-guests { grid-column: auto; }
  .search-go {
    min-height: 40px; width: 100%; padding: .45em 1em; font-size: .9rem;
    border-radius: 12px; box-shadow: 0 3px 0 var(--orange-ink);
  }
  .sf { padding: 4px 12px 5px; border-radius: 12px; min-height: 0; }
  .sf > span { font-size: .6875rem; letter-spacing: .04em; line-height: 1.15; gap: 8px; }
  .sf > span .ic { width: 36px; height: 36px; padding: 7px; border-radius: 11px; }
  .sf select, .sf input, .sf > button { font-size: 16px; min-height: 0; padding: 1px 0 0; line-height: 1.25; }
  .sf > .dpick-btn { min-height: 0; padding: 1px 0 0; }
  .guest-pop { top: auto; bottom: calc(100% + 8px); left: 0; right: 0; width: auto; z-index: 30; }
  body[data-page="home"] .search { gap: 3px; padding: 4px; border-radius: 18px; }
  body[data-page="home"] .sf { padding: 3px 10px 4px; border-radius: 14px; }
  body[data-page="home"] .sf > span { font-size: .75rem; gap: 8px; }
  body[data-page="home"] .sf > span .ic { width: 32px; height: 32px; padding: 6px; border-radius: 10px; }
  body[data-page="home"] .sf select,
  body[data-page="home"] .sf input,
  body[data-page="home"] .sf > button { font-size: 16px; padding-top: 0; line-height: 1.2; }
  body[data-page="home"] .search-go { min-height: 42px; padding: .4em .9em; border-radius: 14px; font-size: 1rem; }
  .steps, .tiles, .benefits, .row2, .row3 { grid-template-columns: 1fr; }
  .row-guests { grid-template-columns: 1fr 1fr; }
  .sf-count { min-height: 56px; }
  .cards { grid-template-columns: 1fr; gap: 16px; }
  .card { border-radius: 18px; }
  .card-media { aspect-ratio: 16 / 10; }
  .card-body { padding: 14px 14px 16px; gap: 10px; }
  .tile { min-height: 210px; border-radius: 18px; }
  .step, .benefit, .prose-card, .book-card, .host-card, .stat, .bars { border-radius: 18px; }
  .step, .benefit { padding: 18px 16px; }
  .g-main { border-radius: 18px; }
  .thumbs button { width: 72px; border-width: 2px; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 8px 16px; align-items: start; }
  .foot-brand { grid-column: 1 / -1; }
  .footer-grid > div:last-child { display: none; }
  .site-footer {
    margin-top: 24px; padding-top: 14px; border-radius: 18px 18px 0 0;
    color: #3C342C;
    background: linear-gradient(165deg, #F8E6D0 0%, #E8C9A4 55%, #F3D7B6 100%);
  }
  .site-footer h3 { color: #C2410C; margin-bottom: 4px; font-size: .68rem; }
  .site-footer li { padding: 1px 0; font-size: .84rem; }
  .site-footer li a:hover { color: #C2410C; }
  .foot-brand p { display: none; }
  .foot-contacts .ic { color: #C2410C; }
  .site-footer .foot-contacts + .btn { margin-top: 8px; padding: .4em .8em; font-size: .8rem; }
  .footer-bottom { margin-top: 10px; padding: 8px 0 12px; color: #6A6158; border-top-color: rgba(60, 52, 44, .14); font-size: .75rem; gap: 2px; }
  .site-footer .brand-light .brand-mark { height: 40px; background: none; padding: 0; border-radius: 0; filter: none; box-shadow: none; }
  .site-footer .socials { margin-top: 2px; }
  .site-footer .socials a { width: 36px; height: 36px; border-radius: 12px; background: #fff; }
  .site-footer .socials a svg { width: 24px; height: 24px; }
  .modal { padding: 20px 16px; border-radius: 20px; }
  .row-card, .row-card.has-img { grid-template-columns: 1fr; padding: 14px; } .row-card .acts { justify-content: flex-start; }
  .row-card.has-img img { width: 100%; height: 160px; object-fit: cover; }
  .card-photo img, .tile img, .g-main img, .thumbs img { object-fit: cover; max-width: 100%; }
  .time-pair { flex-direction: column; }
  .tabs { top: 68px; scroll-snap-type: x proximity; }
  .obj-sec { scroll-margin-top: 132px; }
  .cal-wrap { max-width: none; }
  .cal { padding: 14px 10px; }
  .cal-grid { gap: 3px; }
  .day { font-size: .8rem; border-radius: 10px; }
  .day.sale small { font-size: .58rem; }
  .day.sale b { font-size: .78rem; }
  .legend { flex-wrap: wrap; gap: 8px 14px; }
  .hcal { padding: 14px 12px; }
  .hgrid { gap: 6px; }
  .hslot { min-height: 44px; font-size: .82rem; border-radius: 12px; }
  .auth { padding: 24px 0 48px; }
  .auth-card { padding: 20px 16px; border-radius: 20px; }
  .auth-card h1 { font-size: 1.55rem; }
  .prose-card { padding: 18px 16px; }
  .hero {
    padding: 16px 0 188px;
    background-image:
      linear-gradient(180deg, rgba(244, 239, 230, .28) 0%, rgba(244, 239, 230, .16) 48%, rgba(244, 239, 230, .06) 70%, rgba(244, 239, 230, 0) 84%),
      url("../assets/hero-bg.jpg?v=6");
    background-size: auto, 280% auto;
    background-position: 0 0, 78% 100%;
  }
  .hero-copy {
    position: relative;
    padding: 12px 14px 14px;
    background: rgba(244, 239, 230, .42);
    border: 1px solid rgba(255, 255, 255, .45);
    border-radius: 22px;
    box-shadow: 0 10px 28px -18px rgba(44, 42, 40, .28);
    backdrop-filter: blur(3px);
  }
  .hero h1, .hero-sub, .hero-stats, .hero .eyebrow { text-shadow: 0 1px 0 rgba(251, 246, 239, .85); }
  .search-wrap { margin-top: -42px; }
  .hero-sub { font-size: 1rem; margin-bottom: 14px; } .section { padding: 28px 0; }
  .section-head { margin-bottom: 14px; gap: 10px; }
  .section-head h2, .page-hero h1 { font-size: 1.5rem; }
  .page-hero { padding: 16px 0 8px; }
  .hero h1 em { white-space: normal; }
  .hero h1 { font-size: clamp(1.5rem, 7.2vw, 1.7rem); }
  .hero-title .ht-types {
    font-size: clamp(1.12rem, 5.1vw, 1.38rem);
    white-space: nowrap;
    word-spacing: .38em;
  }
  .hero-title .ht-offer { font-size: clamp(1.06rem, 4.6vw, 1.2rem); }
  .hero-title .ht-place { font-size: 1.08rem; }
  .hero-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 8px; }
  .hero-stats, .hero-stats b, .hero-stats span { text-shadow: none; }
  .hero-stats div b { font-size: 2.35rem; line-height: 1; }
  .hero-stats div span { display: block; margin-top: 3px; font-size: .95rem; font-weight: 700; color: var(--cocoa); line-height: 1.15; }
  .tool-login.is-in .tool-txt { display: none; }
  .header-tools { gap: 4px; }
  .eyebrow { font-size: .8125rem; margin-bottom: 12px; }
  .cta { padding: 22px 16px; border-radius: 18px; }
  .btn { white-space: normal; text-align: center; }
  .date-pick input, .field input, .field select, .field textarea {
    font-size: 16px; min-height: 48px; padding: 12px 14px; border-radius: 14px;
  }
  .found { font-size: 1.05rem; }
  .sort { width: 100%; }
  .sort-btn { width: 100%; min-height: 40px; font-size: .88rem; padding: .45em 2em .45em .9em; }
  .sort-pop { left: 0; right: 0; min-width: 0; }
  .sort-pop button { font-size: .88rem; min-height: 42px; font-weight: 650; }
  .date-pick .dpick-btn, .field .dpick-btn { font-size: 16px; min-height: 48px; padding: 12px 14px; }
  .field textarea { min-height: 96px; }
  .panel { padding: 24px 0 48px; }
  .ptabs { top: 60px; }
  .panel-head h1 { font-size: 1.4rem; } .date-pick { grid-template-columns: 1fr; }
  .book-card .date-pick, .book-card .sess-pick .date-pick { grid-template-columns: 1fr 1fr; }
  .book-card .date-pick input, .book-card .date-pick .dpick-btn,
  .book-card .sess-pick input, .book-card .sess-pick select {
    min-height: 44px; padding: 8px 10px; font-size: 16px; border-radius: 12px;
  }
  .admin-cat { min-height: 44px; font-size: .82rem; gap: 5px; padding: 0 6px; }
  .admin-cat .ic { width: 15px; height: 15px; }
  .occ-card { padding: 12px 10px; border-radius: 18px; }
  .occ-grid { gap: 3px; }
  .occ-day { border-radius: 10px; font-size: .8rem; }
  .occ-lock { top: 2px; right: 2px; width: 9px; height: 9px; }
  .occ-spin i { width: 12px; height: 12px; }
  .occ-day.sale { padding: 4px 0 5px; }
  .occ-day.sale b { font-size: .78rem; }
  .occ-day.sale small { font-size: .64rem; letter-spacing: -.02em; }
  .occ-head { align-items: flex-start; }
  .occ-legend { gap: 8px 12px; font-size: .78rem; }
  .house-row { display: grid; grid-template-columns: 1fr; }
  .house-pill { width: 100%; padding: 10px 12px; border-radius: 14px; max-width: none; align-items: flex-start; }
  .house-pill .hp { flex: 1; min-width: 0; }
  .house-pill b, .house-pill small { max-width: none; white-space: normal; overflow: visible; text-overflow: unset; }
  .gcal { padding: 12px 8px 14px; }
  .gcal-grid { gap: 3px; }
  .gday { font-size: .75rem; border-radius: 8px; }
  .gday.on { padding: 3px 0 4px; }
  .gday b { font-size: .74rem; }
  .gday small { font-size: .62rem; letter-spacing: -.02em; }
  .obj-deal { padding: 14px; gap: 12px; }
  .obj-deal-mark { padding: 10px 12px; }
  .obj-deal-mark b { font-size: 1.6rem; }
  .obj-deal-mark b.is-range { font-size: 1.15rem; }
  .deal-lead h2 { font-size: 1.2rem; }
  .deal-hint { font-size: .78rem; }
  .card-photo img, .g-main img, .tile img, .thumbs img { object-position: center; }
  .thumbs { max-width: 100%; }
  .g-main { max-width: 100%; }
  .card-title { font-size: 1rem; font-family: var(--font); }
  .card-no { font-size: 1rem; }
  .card-name { font-size: .8rem; font-family: var(--font); font-weight: 600; }
  .obj-no { font-size: .84rem; }
  .occ-card { max-width: 640px; }
  .filters { padding: 16px 14px 80px; border-radius: 0 20px 20px 0; }
  .dirs, .dir-row {
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px; overflow: visible;
  }
  .dir-row { clear: both; }
  .dir-chip, .dir-row .chk {
    min-width: 0; width: 100%; box-sizing: border-box;
    justify-content: center; text-align: center; white-space: normal;
    padding: .45em .2em; font-size: .72rem; line-height: 1.2; gap: 4px;
    letter-spacing: -.01em;
  }
  .dir-chip { display: block; min-height: 2.4em; }
  .dir-chip .ic { display: none; }
  .dir-chip small { margin-left: 3px; padding: .05em .4em; white-space: nowrap; }
  .dir-row .chk { border-radius: 16px; }
  .dir-row .chk i { width: 16px; height: 16px; border-radius: 5px; }
  .map-legend { left: 8px; right: 8px; flex-wrap: wrap; justify-content: center; gap: 4px 12px; padding: 6px 10px; border-radius: 16px; font-size: .75rem; }
  .ymap-frame { height: min(360px, 58vh); min-height: 240px; }
  .ymap-chips { padding: 8px 10px; gap: 6px; }
  .ymap-chip { font-size: .75rem; padding: .4em .75em; }
  .to-top { right: 12px; bottom: 12px; width: 44px; height: 44px; border-radius: 14px; }
  .marquee-t { font-size: 1rem; gap: 28px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
  .reveal { opacity: 1; transform: none; }
}

/* ---------- скидки ---------- */
.p10 { --d: #C98412; --d-ink: #fff; --d-deep: #8A5A08; --d-soft: #FFF4DE; }
.p15 { --d: #E07A32; --d-ink: #fff; --d-deep: #9A4E16; --d-soft: #FFF0E4; }
.p20 { --d: #D4470F; --d-ink: #fff; --d-deep: #9A3412; --d-soft: #FFE8DC; }
.p25 { --d: #B4234A; --d-ink: #fff; --d-deep: #7A1832; --d-soft: #FDE8EE; }
.p30 { --d: #5C3D32; --d-ink: #fff; --d-deep: #3A241C; --d-soft: #F3EBE6; }
.pf-10 { --a: #E39A62; --a-deep: #C98412; --sale-size: 50px; }
.pf-15 { --a: #E07A32; --a-deep: #C2410C; --sale-size: 64px; }
.pf-20 { --a: #D4470F; --a-deep: #9A3412; --sale-size: 80px; }
.pf-25 { --a: #C2410C; --a-deep: #7A280E; --sale-size: 96px; }
.pf-30 { --a: #9A3412; --a-deep: #5C220C; --sale-size: 114px; }
.pf-to-10 { --b: #E39A62; }
.pf-to-15 { --b: #E07A32; }
.pf-to-20 { --b: #D4470F; }
.pf-to-25 { --b: #C2410C; }
.pf-to-30 { --b: #9A3412; }
.sale-flag {
  --sale-size: 64px;
  position: absolute; left: 12px; bottom: 12px; z-index: 3;
  width: var(--sale-size); height: var(--sale-size); padding: 0;
  display: grid; place-items: center;
  border-radius: 50%; color: #fff; line-height: .9;
  pointer-events: none; user-select: none;
  background-color: var(--a, var(--orange));
  background-image:
    radial-gradient(circle at 32% 26%, rgba(255, 255, 255, .9) 0 7%, rgba(255, 246, 239, .28) 18%, transparent 42%),
    radial-gradient(circle at 50% 120%, rgba(58, 36, 20, .38) 0 26%, transparent 54%),
    radial-gradient(circle at 50% 42%, var(--a, var(--orange)) 0%, var(--a-deep, var(--orange-ink)) 100%);
  box-shadow:
    0 0 0 3px rgba(255, 255, 255, .92),
    0 1px 0 rgba(255, 255, 255, .5) inset,
    0 -10px 16px rgba(58, 36, 20, .28) inset,
    0 14px 22px -8px rgba(154, 52, 18, .55);
  overflow: hidden;
  transition: transform .2s var(--ease);
}
.sale-flag::after {
  content: ''; position: absolute; inset: -30% -50%;
  background: linear-gradient(118deg, transparent 40%, rgba(255, 255, 255, .5) 50%, transparent 60%);
  transform: translateX(-70%);
  animation: sale-shine 4.2s cubic-bezier(0.77, 0, 0.175, 1) infinite;
}
.sale-flag b {
  position: relative; z-index: 1;
  font-family: var(--font-d); font-weight: 700;
  font-size: calc(var(--sale-size) * .32); letter-spacing: -.04em;
  color: #fff; text-shadow: 0 1px 0 rgba(80, 24, 0, .35);
}
.sale-flag b.is-range { font-size: calc(var(--sale-size) * .2); letter-spacing: -.03em; }
@keyframes sale-shine {
  0% { transform: translateX(-80%); }
  42%, 100% { transform: translateX(80%); }
}
@media (hover: hover) and (pointer: fine) {
  .card:hover .sale-flag, .g-main:hover .sale-flag { transform: scale(1.07); }
}
@media (prefers-reduced-motion: reduce) {
  .sale-flag::after { animation: none; opacity: .35; transform: translateX(-10%); }
}
.sale-when { display: inline-flex; align-items: center; padding: .12em .5em; border-radius: 99px; background: #FFE4D4; color: var(--orange-ink); font-style: normal; font-weight: 800; font-size: .72rem; line-height: 1.3; }
.card.is-sale .dots { left: 126px; right: 12px; bottom: 16px; justify-content: flex-start; }
.card-price.is-sale > s { display: block; color: var(--muted); font-weight: 700; font-size: .82rem; text-decoration: line-through; line-height: 1.2; }
.card-price.is-sale > b { color: var(--orange); }
.card-price small s { color: var(--muted); text-decoration: line-through; font-weight: 650; }
.sale-banner { display: flex; align-items: center; gap: 12px; margin: 0 0 12px; padding: 8px 14px 8px 8px; border-radius: 999px; background: #FFF1E8; color: var(--orange-ink); font-weight: 800; }
.sale-banner b { font-family: var(--font-d); color: #fff; line-height: 1; }
.sale-flag.in-banner,
.sale-flag.in-deal {
  position: relative; left: auto; bottom: auto; flex: none;
  width: calc(var(--sale-size) * .72); height: calc(var(--sale-size) * .72);
}
.sale-flag.in-banner b,
.sale-flag.in-deal b { font-size: calc(var(--sale-size) * .72 * .32); }
.sale-flag.in-deal { width: var(--sale-size); height: var(--sale-size); }
.sale-flag.in-deal b { font-size: calc(var(--sale-size) * .32); }
.g-main .sale-flag { left: 14px; bottom: 14px; }
.price-sale s { display: block; color: var(--muted); text-decoration: line-through; font-weight: 700; font-size: .95rem; }
.price-sale i { display: inline-flex; margin-left: 8px; padding: .15em .55em; border-radius: 99px; background: var(--d, var(--orange)); color: #fff; font-style: normal; font-weight: 800; font-size: .75rem; letter-spacing: .04em; vertical-align: 6px; }
.pt-sale { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; line-height: 1.15; }
.pt-sale s { color: var(--muted); font-weight: 650; font-size: .72rem; text-decoration: line-through; }
.map-pop .pop-price s { color: var(--muted); font-weight: 650; text-decoration: line-through; margin-right: 4px; }
.bk-sum s { color: var(--muted); font-weight: 650; margin-right: 4px; }
.sum-off { color: var(--orange-ink); }
.status.sale { background: #FFE4D4; color: var(--orange-ink); }
.meta-sale s { color: var(--muted); font-weight: 650; margin: 0 4px; text-decoration: line-through; }
.deal-page { display: flex; flex-direction: column; gap: 16px; }
.deal-lead h2 { font-size: 1.35rem; margin-bottom: 6px; }
.deal-lead p { max-width: 68ch; color: var(--muted); font-weight: 650; }
.deal-list { display: flex; flex-direction: column; gap: 12px; }
.deal-card { display: grid; grid-template-columns: 168px 1fr; gap: 16px; padding: 14px; background: #fff; border: 1px solid var(--line); border-radius: 22px; box-shadow: var(--shadow-sm); }
.deal-card.is-on { border-color: #F0C2A8; box-shadow: 0 14px 32px -20px rgba(212, 71, 15, .7); }
.deal-photo { position: relative; border-radius: 16px; overflow: hidden; aspect-ratio: 4 / 3; background: var(--powder); }
.deal-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.deal-badge { position: absolute; left: 8px; bottom: 8px; padding: .28em .6em; border-radius: 12px; background: #fff; color: var(--orange); font-family: var(--font-d); font-weight: 700; font-size: 1.05rem; box-shadow: 0 8px 16px -8px rgba(44, 42, 40, .5); }
.deal-main h3 { font-size: 1.05rem; line-height: 1.25; }
.deal-main h3 a:hover { color: var(--terra); }
.deal-where { margin: 4px 0 8px; color: var(--muted); font-size: .85rem; font-weight: 650; }
.deal-preview { margin-bottom: 12px; font-weight: 700; }
.deal-preview s { color: var(--muted); font-weight: 650; margin-right: 6px; }
.deal-preview b { font-family: var(--font-d); color: var(--terra); font-size: 1.2rem; }
.deal-picks { display: flex; flex-wrap: wrap; gap: 8px; }
.deal-pick { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 72px; min-height: 44px; padding: 0 12px; border-radius: 14px; border: 1.5px solid var(--line); background: var(--cream); color: var(--cocoa); font-weight: 800; font-size: 1rem; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.deal-pick small { font-size: .72rem; font-weight: 800; opacity: .8; }
.deal-pick.p10, .deal-pick.p15, .deal-pick.p20, .deal-pick.p25, .deal-pick.p30 { background: var(--d-soft); color: var(--d-deep); border-color: var(--d); }
.deal-pick.on { background: var(--d, var(--orange)); border-color: var(--d, var(--orange)); color: var(--d-ink, #fff); box-shadow: 0 3px 0 var(--d-deep, var(--orange-ink)); }
.deal-pick.was { border-style: dashed; border-color: var(--orange); color: var(--orange); background: #fff; }
.deal-until { display: flex; align-items: center; gap: 10px; margin-top: 12px; font-weight: 750; font-size: .9rem; }
.deal-until input { font-size: 16px; border: 1.5px solid var(--line); border-radius: 12px; padding: 8px 10px; background: #fff; color: var(--cocoa); }
.deal-hint { margin-top: 6px; color: var(--muted); font-size: .8rem; font-weight: 650; }
.deal-cal .deal-main { margin-bottom: 18px; }
.deal-tools { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.deal-tools button { min-height: 44px; padding: 0 14px; border-radius: 14px; border: 1.5px solid var(--line); background: var(--cream); color: var(--cocoa); font-weight: 750; }
#w-total s { color: var(--muted); font-weight: 650; margin-right: 4px; text-decoration: line-through; font-size: .85rem; }
@media (hover: hover) and (pointer: fine) {
  .deal-pick:hover { filter: brightness(.97); }
  .deal-tools button:hover { background: var(--powder); }
  .deal-pick.on:hover { color: var(--d-ink, #fff); }
}
@media (max-width: 720px) {
  .deal-card { grid-template-columns: 1fr; }
  .deal-photo { aspect-ratio: 16 / 8; }
  .sale-flag { left: 10px; bottom: 10px; }
  .pf-10 { --sale-size: 44px; }
  .pf-15 { --sale-size: 54px; }
  .pf-20 { --sale-size: 66px; }
  .pf-25 { --sale-size: 80px; }
  .pf-30 { --sale-size: 96px; }
  .card.is-sale .dots { left: 108px; }
}

/* ---------- compact home finder ---------- */
body[data-page="catalog"]:not([data-landing]) .page-hero {
  padding: 16px 0 0;
  background: linear-gradient(180deg, rgba(248, 211, 180, .34) 0%, rgba(244, 239, 230, 0) 100%);
}
body[data-page="catalog"]:not([data-landing]) .page-hero .crumbs { margin-bottom: 6px; }
body[data-page="catalog"]:not([data-landing]) .page-hero h1 { margin-bottom: 6px; }
body[data-page="catalog"]:not([data-landing]) .page-hero p {
  max-width: 52ch;
  font-size: .98rem;
  line-height: 1.4;
}
body[data-page="catalog"]:not([data-landing]) .search-wrap {
  margin-top: 12px;
  margin-bottom: 0;
}
body[data-page="catalog"]:not([data-landing]) #catalog { padding-top: 18px; }
@media (max-width: 760px) {
  body[data-page="catalog"]:not([data-landing]) .page-hero { padding: 10px 0 0; }
  body[data-page="catalog"]:not([data-landing]) .page-hero h1 { margin-bottom: 4px; }
  body[data-page="catalog"]:not([data-landing]) .page-hero p { font-size: .92rem; line-height: 1.35; }
  body[data-page="catalog"]:not([data-landing]) .search-wrap { margin-top: 10px; }
  body[data-page="catalog"]:not([data-landing]) #catalog { padding-top: 12px; }
}
body[data-page="home"] .hero-sub {
  max-width: none; margin: 0 0 14px; color: var(--orange-ink);
  font-family: var(--font-d); font-size: clamp(1.04rem, 1.7vw, 1.2rem);
  font-weight: 700; letter-spacing: .035em;
}
body[data-page="home"] .hero-stats {
  width: fit-content; max-width: 100%; gap: 0; margin-top: 12px; padding: 9px 12px;
  border: 1px solid rgba(230, 221, 210, .92); border-radius: 18px;
  background: rgba(251, 246, 239, .86); backdrop-filter: blur(9px);
  box-shadow: 0 12px 28px -22px rgba(44, 42, 40, .45);
}
body[data-page="home"] .hero-stats div { min-width: 84px; padding: 0 12px; }
body[data-page="home"] .hero-stats div + div { border-left: 1px solid var(--line); }
body[data-page="home"] .hero-stats div b { font-size: 1.45rem; line-height: 1; }
body[data-page="home"] .hero-stats div span { margin-top: 2px; font-size: .75rem; }
.search.search-home {
  display: grid; grid-template-columns: 1fr; gap: 8px; padding: 10px;
  border: 1px solid rgba(227, 154, 98, .35); border-radius: 26px;
  background: rgba(255, 255, 255, .96);
  box-shadow: 0 24px 55px -28px rgba(44, 42, 40, .42), 0 0 0 5px rgba(248, 211, 180, .45);
}
.home-find-types, .home-find-dates {
  display: grid; gap: 6px;
}
.home-find-types { grid-template-columns: 1fr 1fr 1fr; }
.home-find-dates { grid-template-columns: 1fr 1fr; }
.home-find-type {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 52px; padding: 0 10px; border: 0; border-radius: 16px;
  background: var(--cream); color: var(--cocoa);
  font-weight: 750; font-size: .95rem; letter-spacing: -.02em;
  transition: background .18s var(--ease), color .18s var(--ease), transform .12s var(--ease), box-shadow .18s var(--ease);
}
.home-find-type .ic { width: 18px; height: 18px; color: var(--orange); flex: none; }
.home-find-type.on { background: var(--grad); color: #fff; box-shadow: 0 3px 0 var(--orange-ink); }
.home-find-type.on .ic { color: #fff; }
.home-find-type:active { transform: scale(.97); }
@media (hover: hover) and (pointer: fine) {
  .home-find-type:hover:not(.on) { background: var(--peach); }
  .home-find-date .dpick-btn:hover { background: #fff; }
  .home-find-step:hover:not(:disabled) { background: var(--peach); }
}
.home-find-date { position: relative; margin: 0; display: block; min-width: 0; }
.home-find-date .dpick-btn {
  min-height: 52px; padding: 0 16px; border-radius: 16px; background: var(--cream);
  font-size: 1rem; font-weight: 750;
}
.home-find-date .dpick-btn.is-open { background: #fff; box-shadow: inset 0 0 0 2px var(--orange); }
.home-find-date .dpick-btn:active { transform: scale(.98); }
.home-find-guests {
  display: grid; grid-template-columns: 48px 1fr 48px; align-items: center; gap: 4px;
  min-height: 52px; padding: 4px; border-radius: 16px; background: var(--cream);
}
.home-find-guests #s-guests-tx {
  text-align: center; font-family: var(--font-d); font-weight: 700; font-size: 1.08rem;
  letter-spacing: -.02em;
}
.home-find-step {
  width: 44px; height: 44px; border: 0; border-radius: 12px; background: #fff;
  color: var(--orange); font-size: 1.4rem; font-weight: 700; line-height: 1;
  box-shadow: 0 1px 0 rgba(44, 42, 40, .06);
  transition: transform .12s var(--ease), background .18s var(--ease);
}
.home-find-step:active:not(:disabled) { transform: scale(.96); }
.home-find-step:disabled { opacity: .35; cursor: default; }
html.tg-embed .site-header,
html.tg-embed .site-footer,
body.tg-embed .site-header,
body.tg-embed .site-footer,
body.tg-embed .burger {
  display: none !important;
}
body.tg-embed {
  padding-top: 0;
}
body.tg-embed .ptabs {
  top: 8px;
}
body.tg-embed .panel-head {
  display: none;
}
body.tg-embed #open-contact {
  display: none !important;
}
@media (max-width: 1180px) {
  .search.search-home { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  body[data-page="home"] .hero { padding-bottom: 150px; }
  body[data-page="home"] .hero-copy { padding: 10px 12px 12px; }
  body[data-page="home"] .hero-sub {
    font-size: .9rem; letter-spacing: .04em; margin-bottom: 10px; white-space: nowrap;
  }
  body[data-page="home"] .hero-stats { display: flex; width: 100%; justify-content: space-around; padding: 8px 4px; border-radius: 16px; }
  body[data-page="home"] .hero-stats div { flex: 1; min-width: 0; padding: 0 5px; text-align: center; }
  body[data-page="home"] .hero-stats div b { font-size: 1.55rem; }
  body[data-page="home"] .hero-stats div span { font-size: .7rem; }
  .search.search-home { gap: 6px; padding: 8px; border-radius: 22px; }
  .home-find-type { min-height: 48px; font-size: .82rem; gap: 5px; padding: 0 4px; }
  .home-find-type .ic { width: 15px; height: 15px; }
  .home-find-date .dpick-btn, .home-find-guests { min-height: 48px; }
  .home-find-step { width: 42px; height: 42px; }
}
@media (pointer: coarse) {
  input, textarea, select { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  body { transition: none; }
  .hero-title .ht-offer::after,
  .hero h1 em::after { animation: none; transform: none; }
}

.article-meta { margin: 0 0 18px; color: var(--muted); font-size: .92rem; font-weight: 650; }
.article-body { max-width: 78ch; }
.article-body > h2 { font-size: var(--fs-h2); margin: 28px 0 12px; letter-spacing: -.02em; }
.article-body > h3 { font-family: var(--font-d); font-size: 1.12rem; margin: 20px 0 8px; letter-spacing: -.02em; }
.article-body p { color: var(--muted); font-size: 1.02rem; line-height: 1.55; }
.article-body p + p { margin-top: 10px; }
.article-body ol, .article-body ul { color: var(--muted); font-size: 1.02rem; line-height: 1.55; padding-left: 1.25em; margin: 8px 0 0; }
.article-body li + li { margin-top: 6px; }
.article-body a:not(.btn) { color: var(--orange-deep); font-weight: 700; text-underline-offset: 3px; }
.article-body .table-wrap { margin: 14px 0 22px; }
.article-body table.tbl { min-width: 640px; }
.article-body table.tbl th:first-child,
.article-body table.tbl td:first-child { position: sticky; left: 0; z-index: 1; font-weight: 750; color: var(--cocoa); min-width: 9rem; background: var(--cream); }
.article-body table.tbl tbody td:first-child { background: #fff; }
.article-cta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 28px; }
.articles-card .kicker { display: inline-block; margin-bottom: 8px; }
.articles-card h2 { margin-bottom: 10px; }
.articles-list { list-style: none; padding: 0; margin: 8px 0 0; }
.articles-list li { padding: 12px 0 0; }
.articles-list a { display: block; color: var(--orange-deep); font-weight: 700; text-underline-offset: 3px; }
.articles-list a span { display: block; margin: 6px 0 0; color: var(--muted); font-size: .95rem; font-weight: 600; line-height: 1.45; text-decoration: none; }
@media (max-width: 720px) {
  .article-body table.tbl { min-width: 560px; font-size: .82rem; }
  .article-body table.tbl th, .article-body table.tbl td { padding: 10px 12px; }
}
