/* ==========================================================================
   RUSMUNICH — design system v3
   Concept «Афиша и тариф».

   The business has to do two incompatible things at once: make Bavaria
   desirable, and make it predictable. Rather than average them into one
   tasteful tone, the interface runs two explicit registers and alternates:

     ПОСТЕР  photography, heavy condensed uppercase, generous scale.
             Answers "what is there to see".
     ТАРИФ   white ruled sheets, monospaced numerals, honest tables.
             Answers "what does it cost, how far, how long".

   Everything else follows from the wordmark, not from a mood board:
     • colour   the logo's own signal red #ED1C24 over a neutral grey ramp
     • accent   exactly one red word per headline — the wordmark's grey RUS /
                red MUNICH move, applied to typography
     • form     zero radii, zero drop shadows. Separation is hairlines and
                value contrast, the way a printed sheet does it. The squared
                terminals of the mark set the geometry of the whole system.
   ========================================================================== */

:root{
  /* ---- colour: derived from logotype.png ---------------------------- */
  --red:      #ED1C24;   /* sampled from the wordmark: fills, rules, display */
  --red-d:    #C4141B;   /* hover on filled red */
  /* The wordmark red reaches only 4.4:1 on white — fine for a fill or a 40px
     headline, short of AA for a 13px price. Small red TEXT uses these two
     instead, so the accent stays the brand's without failing contrast. */
  --red-tx:   #CE1017;   /* small red text on light surfaces  — 5.7:1 */
  --red-on:   #FF5257;   /* small red text on ink surfaces    — 6.0:1 */
  --ink:      #111315;
  --ink-deep: #0A0C0D;
  --tx:       #15181B;
  --tx-2:     #565D64;
  --tx-3:     #686F76;   /* the wordmark's grey, darkened to clear AA on fog */
  --paper:    #FFFFFF;
  --fog:      #F3F4F5;
  --fog-2:    #E7E9EB;
  --line:     #DEE1E4;
  --line-2:   #C4C9CE;
  --on:       #F2F3F4;   /* text on ink */
  --on-2:     #A6ADB4;
  --line-on:  rgba(255,255,255,.15);
  --wa:       #25D366;   /* only ever on the WhatsApp affordance */

  /* ---- type -------------------------------------------------------- */
  --fd: "Fira Sans Condensed", "Fira Sans", "Arial Narrow", system-ui, sans-serif;
  --ft: "Fira Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --fm: "Fira Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  /* ---- metrics ----------------------------------------------------- */
  --wrap: 1320px;
  --gut:  clamp(20px, 4.5vw, 56px);
  --head: 66px;
  --ease: cubic-bezier(.2,.6,.2,1);

  /* ---- spacing -------------------------------------------------------
     One ladder, used everywhere. Before this the sheet carried forty
     hand-written clamps — 26/34/42, 28/40/46, 30/40/52 — values close
     enough to look accidental and far enough apart to read as sloppy.
     Each step is ~1.45× the one below it, so any two of them sit in an
     obvious relationship instead of a nearly-equal one. Steps below
     --sp-m are fixed: at 12px and under, fluid scaling is invisible and
     only makes the rhythm harder to predict.

       2xs  8   hairline gaps, icon rows
       xs  12   chips, inline runs
       s   14–20  inside small cards, tight stacks
       m   18–30  card padding, list blocks
       l   26–44  between elements of one block
       xl  34–64  between blocks of one section
       2xl 44–84  between sections of one page region
       3xl 56–112 the section rhythm itself, and the air a light page
                  keeps before the dark closing band
  */
  --sp-2xs: 8px;
  --sp-xs:  12px;
  --sp-s:   clamp(14px, 1.5vw, 20px);
  --sp-m:   clamp(18px, 2.2vw, 30px);
  --sp-l:   clamp(26px, 3.2vw, 44px);
  --sp-xl:  clamp(34px, 4.4vw, 64px);
  --sp-2xl: clamp(44px, 6vw, 84px);
  --sp-3xl: clamp(56px, 7.5vw, 112px);
}

/* ------------------------------------------------------------------ reset */
*,*::before,*::after{ box-sizing:border-box; }
[hidden]{ display:none !important; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
}
body{
  margin:0; background:var(--paper); color:var(--tx);
  font-family:var(--ft); font-size:17px; line-height:1.6;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;   /* body owns the viewport scroller here */
}

/* -------------------------------------------------------------- lock
   One lock for every overlay — navigation sheet, lightbox. Freezing the page
   with overflow:hidden takes the scrollbar away, the viewport grows by its
   width and everything slides right; so the width main.js measured is handed
   straight back as padding. The page keeps its place to the pixel, the
   overlays still cover the full width, and nothing is reserved while the page
   is at rest. */
body.rm-locked{ overflow:hidden; padding-right:var(--rm-sbw,0px); }
body.rm-locked .rm-bar{ right:var(--rm-sbw,0px); }
body.rm-locked .rm-top{ right:calc(18px + var(--rm-sbw,0px)); }
img{ max-width:100%; height:auto; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; padding:0; cursor:pointer; }
input,select,textarea{ font:inherit; }
h1,h2,h3,h4{ margin:0; }
p{ margin:0 0 1em; }
table{ border-collapse:collapse; }

.rm-ico{ width:1.25em; height:1.25em; flex:none; }
.rm-ico--star{ fill:currentColor; stroke:none; }

:focus-visible{ outline:2px solid var(--red); outline-offset:2px; }
.rm-sec--ink :focus-visible, .rm-okt :focus-visible,
.rm-contact :focus-visible, .rm-foot :focus-visible{ outline-color:#fff; }
::selection{ background:var(--red); color:#fff; }

.screen-reader-text{ position:absolute !important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.rm-skip{ position:absolute; left:-9999px; }
.rm-skip:focus{ position:fixed; left:16px; top:16px; z-index:200; background:var(--ink); color:#fff; padding:.8em 1.3em; font-family:var(--fm); font-size:.8rem; }

[id]{ scroll-margin-top:calc(var(--head) + 18px); }

/* ------------------------------------------------------------------- type */
.rm-h1{
  font-family:var(--fd); font-weight:800; text-transform:uppercase;
  font-size:clamp(2.3rem, 5.2vw, 4.4rem); line-height:.96; letter-spacing:-.005em;
}
.rm-h1--page{ font-size:clamp(2rem, 4.4vw, 3.5rem); margin-top:16px; }
.rm-h1__e{ font-family:var(--ft); margin-right:.25em; }
.rm-h2{
  font-family:var(--fd); font-weight:800; text-transform:uppercase;
  font-size:clamp(1.75rem, 3.4vw, 2.9rem); line-height:.98; letter-spacing:0;
}
/* One red word per headline — the wordmark's move, in typography. */
.rm-h1 em, .rm-h2 em, .rm-h1 i, .rm-h2 i{ font-style:normal; color:var(--red); }
.rm-h2--on{ color:#fff; }

.rm-label{
  font-family:var(--fm); font-weight:500; font-size:.7rem;
  letter-spacing:.11em; text-transform:uppercase; color:var(--tx-2);
}
.rm-label--on{ color:var(--on-2); }
.rm-rule{ display:block; width:44px; height:3px; background:var(--red); }
.rm-dot{ display:block; width:7px; height:7px; background:var(--red); flex:none; }
.rm-dot--live{ animation:rm-pulse 2.6s infinite; }
@keyframes rm-pulse{ 0%,100%{ opacity:1 } 50%{ opacity:.3 } }

.rm-stand{
  margin:16px 0 0; max-width:64ch; color:var(--tx-2);
  font-size:clamp(1rem, 1.1vw, 1.1rem); line-height:1.62;
}
.rm-stand--on{ color:var(--on-2); }
.rm-stand p:last-child{ margin-bottom:0; }

.rm-empty{
  font-family:var(--fm); font-size:.86rem; color:var(--tx-3); line-height:1.6;
  padding:28px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}

/* ----------------------------------------------------------------- layout */
.rm-wrap{ width:min(100% - var(--gut)*2, var(--wrap)); margin-inline:auto; }

.rm-sec{ padding-block:var(--sp-3xl); }
.rm-sec--fog{ background:var(--fog); }
.rm-sec--ink{ background:var(--ink); color:var(--on); }
.rm-sec:not(.rm-sec--fog):not(.rm-sec--ink) + .rm-sec:not(.rm-sec--fog):not(.rm-sec--ink){ border-top:1px solid var(--line); }
.rm-sec__more{ display:flex; flex-wrap:wrap; gap:12px; margin-top:var(--sp-l); }

/* section masthead: red rule + mono label in a rail, poster head beside it */
.rm-mast{ display:grid; gap:var(--sp-s) var(--sp-l); margin-bottom:var(--sp-l); }
.rm-mast__rail{ display:flex; flex-direction:column; align-items:flex-start; gap:12px; }
@media (min-width:900px){
  .rm-mast{ grid-template-columns:190px minmax(0,1fr); }
}
@media (min-width:1180px){
  .rm-mast__body{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:0 var(--sp-xl); align-items:end; }
  .rm-mast__body .rm-stand{ margin:0; padding-bottom:.35em; }
}

/* ---------------------------------------------------------------- buttons */
.rm-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.55em;
  font-family:var(--fd); font-weight:700; text-transform:uppercase; letter-spacing:.035em;
  font-size:.95rem; line-height:1; padding:.95em 1.5em;
  border:1px solid transparent; border-radius:0; white-space:nowrap;
  transition:background .18s var(--ease), color .18s var(--ease), border-color .18s var(--ease);
}
.rm-btn .rm-ico{ width:1.15em; height:1.15em; }
.rm-btn--lg{ padding:1.1em 1.85em; font-size:1.02rem; }
.rm-btn--block{ display:flex; width:100%; }
.rm-btn--red{ background:var(--red); color:#fff; }
.rm-btn--red:hover{ background:var(--red-d); }
.rm-btn--line{ border-color:var(--line-2); color:var(--tx); }
.rm-btn--line:hover{ background:var(--ink); border-color:var(--ink); color:#fff; }
.rm-btn--ghost-on{ border-color:var(--line-on); color:var(--on); }
.rm-btn--ghost-on:hover{ background:#fff; border-color:#fff; color:var(--ink); }
.rm-btn--wa{ background:var(--wa); color:#06331b; }
.rm-btn--wa:hover{ background:#1FBE5C; }

/* ------------------------------------------------------------------- head */
.rm-head{
  position:sticky; top:0; z-index:60;
  background:var(--paper); border-bottom:1px solid var(--line);
}
.rm-head.is-stuck{ border-bottom-color:var(--line-2); }
.rm-head__in{
  width:min(100% - var(--gut)*2, var(--wrap)); margin-inline:auto;
  display:flex; align-items:center; gap:16px; min-height:var(--head);
}
.rm-brand{ display:flex; align-items:center; gap:16px; flex:none; }
.rm-mark{ width:108px; height:auto; }
@media (min-width:700px){ .rm-mark{ width:124px; } }
.rm-brand__tag{
  display:none; padding-left:16px; border-left:1px solid var(--line);
  font-family:var(--fm); font-size:.6rem; line-height:1.4; letter-spacing:.07em;
  text-transform:uppercase; color:var(--tx-3);
}
@media (min-width:1320px){ .rm-brand__tag{ display:block; } }

/* Eight destinations is a lot for one row, so the desktop bar starts later
   and the type tightens; below that everything moves into the sheet. */
.rm-nav{ display:none; margin-left:auto; }
@media (min-width:1120px){ .rm-nav{ display:block; } }
.rm-nav__list{ display:flex; align-items:center; gap:clamp(12px, 1.35vw, 24px); list-style:none; margin:0; padding:0; }
.rm-nav__list a{
  position:relative; display:block; padding:.6em 0; white-space:nowrap;
  font-family:var(--fm); font-size:clamp(.63rem, .48vw + .28rem, .72rem); letter-spacing:.06em;
  text-transform:uppercase; color:var(--tx-2); transition:color .16s;
}
.rm-nav__list a::after{
  content:""; position:absolute; left:0; right:0; bottom:.15em; height:2px; background:var(--red);
  transform:scaleX(0); transform-origin:left; transition:transform .2s var(--ease);
}
.rm-nav__list a:hover{ color:var(--tx); }
.rm-nav__list a:hover::after,
.rm-nav__list .current-menu-item > a::after,
.rm-nav__list .current_page_item > a::after{ transform:scaleX(1); }

.rm-head__act{ display:flex; align-items:center; gap:8px; margin-left:auto; }
@media (min-width:1120px){ .rm-head__act{ margin-left:var(--sp-s); } }
.rm-head__tel{ display:none; align-items:center; gap:8px; font-family:var(--fm); font-size:.76rem; color:var(--tx-2); }
.rm-head__tel .rm-ico{ width:15px; height:15px; color:var(--red); }
.rm-head__tel:hover{ color:var(--tx); }
@media (min-width:1440px){ .rm-head__tel{ display:flex; } }
/* The write action stays in the header at every width — it is the conversion
   the whole site exists for; only its padding shrinks. */
.rm-head__cta{ padding:.8em 1.25em; font-size:.85rem; }
@media (max-width:479px){ .rm-head__cta{ padding:.75em .95em; font-size:.78rem; } }
@media (max-width:339px){ .rm-head__cta{ display:none; } }

.rm-burger{ width:40px; height:40px; display:grid; align-content:center; gap:8px; justify-items:end; }
@media (min-width:1120px){ .rm-burger{ display:none; } }
.rm-burger span{ display:block; width:22px; height:2px; background:var(--ink); }
.rm-burger span:last-child{ width:15px; }

/* ------------------------------------------------------- navigation sheet
   The sheet is exactly as tall as the viewport and never taller: masthead and
   footer are fixed rails, and only the list of links between them scrolls, so
   the close button and the phone number stay in reach on a short screen.
   inset:0 already gives it a definite height, which is what lets the rails
   stay put while the middle scrolls. */
.rm-sheet{
  position:fixed; inset:0; z-index:80; background:var(--paper);
  display:flex; flex-direction:column; overflow:hidden;
  opacity:0; transform:translateY(-10px); transition:opacity .2s var(--ease), transform .2s var(--ease);
}
.rm-sheet-open .rm-sheet{ opacity:1; transform:none; }
.rm-sheet__top{
  flex:none;
  display:flex; align-items:center; justify-content:space-between;
  /* the border is the header's own hairline, so the rail carries it on top of
     a full --head of content and the two glyphs share a centre line */
  padding:0 var(--gut); border-bottom:1px solid var(--line); min-height:calc(var(--head) + 1px);
}
/* The burger and the cross are one control in two states, so neither may move
   as the sheet opens: the rail is the header's own height, the box sits on the
   same right edge, and the glyph draws the same 22px across. A 2px bar turned
   45 degrees covers (L + 2) / root 2, so 29px of bar draws those 22px; the pair
   hangs 3.5px past the box to put its right-hand tips exactly where the
   burger's rules end. */
.rm-sheet__x{ position:relative; width:40px; height:40px; }
.rm-sheet__x span{ position:absolute; top:19px; right:-3.5px; width:29px; height:2px; background:var(--ink); }
.rm-sheet__x span:first-child{ transform:rotate(45deg); }
.rm-sheet__x span:last-child{ transform:rotate(-45deg); }

.rm-sheet__nav{ flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; }
.rm-sheetnav{ list-style:none; margin:0; padding:0; counter-reset:sn; }
.rm-sheetnav li{ counter-increment:sn; border-bottom:1px solid var(--line); }
/* Item height follows the screen: eight links plus both rails fit without a
   scroll from roughly 700px of viewport up, and shrink instead of overflowing
   below that. */
.rm-sheetnav a{
  display:flex; align-items:baseline; gap:16px;
  padding:clamp(8px, 1.6vh, 16px) var(--gut);
  font-family:var(--fd); font-weight:700; text-transform:uppercase;
  font-size:clamp(1.05rem, 3.25vh, 1.6rem); line-height:1.1; letter-spacing:.01em;
}
.rm-sheetnav a::before{
  content:counter(sn, decimal-leading-zero);
  font-family:var(--fm); font-weight:400; font-size:.68rem; letter-spacing:.08em; color:var(--red-tx);
}
.rm-sheetnav a:active{ color:var(--red); }

.rm-sheet__foot{
  flex:none; background:var(--ink); color:var(--on);
  --sheet-pad:clamp(14px, 2.2vh, 26px);
  padding:var(--sheet-pad) var(--gut) calc(var(--sheet-pad) + env(safe-area-inset-bottom));
}
.rm-sheet__phone{ display:block; font-family:var(--fd); font-weight:700; font-size:clamp(1.15rem, 3.1vh, 1.55rem); color:#fff; }
.rm-sheet__hours{ margin:6px 0 clamp(10px, 1.5vh, 16px); font-family:var(--fm); font-size:.64rem; letter-spacing:.07em; text-transform:uppercase; color:var(--on-2); }
.rm-sheet__chan{ display:grid; gap:8px; }
/* side by side as soon as the labels fit — two stacked buttons cost 50px of
   height the short screens do not have */
.rm-sheet__chan .rm-btn{ padding-inline:1em; }
@media (min-width:360px){ .rm-sheet__chan{ grid-template-columns:1fr 1fr; } }
@media (max-height:560px){ .rm-sheet__hours{ display:none; } }

/* ------------------------------------------------------------------- hero */
.rm-hero{ padding-top:var(--sp-xl); }
/* The hero headline is authored as two lines with a hard break. At the shared
   .rm-h1 size those lines are wider than the text column, so each of them wrapped
   again and the title arrived in four ragged pieces. This size is set from the
   column: the longer of the two lines fits with room to spare at every width. */
.rm-hero .rm-h1{ font-size:clamp(1.9rem, 3.75vw, 3.4rem); }
.rm-hero__grid{ display:grid; gap:var(--sp-xl); }
@media (min-width:960px){
  .rm-hero__grid{ grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr); align-items:center; }
}
.rm-hero__eyebrow{
  display:flex; align-items:center; gap:12px; margin:0 0 24px;
  font-family:var(--fm); font-size:.7rem; letter-spacing:.11em;
  text-transform:uppercase; color:var(--tx-2);
}
.rm-hero__sub{ margin:24px 0 0; max-width:52ch; font-size:clamp(1.02rem, 1.2vw, 1.15rem); color:var(--tx-2); line-height:1.62; }
.rm-hero__act{ display:flex; flex-wrap:wrap; gap:12px; margin-top:32px; }
.rm-hero__act .rm-ico{ width:1.1em; height:1.1em; }

/* Plates, not a stock hero: the photo archive is amateur and small, so the
   images are shown at plate scale where they stay sharp, each captioned like
   a catalogue entry. */
/* 0.84 makes the two small plates square, which is the shape their sources
   actually are, and brings the picture column down to roughly the height of
   the text beside it — at 1.02 the text floated in the middle of a slab twice
   its height. */
.rm-hero__plates{
  display:grid; grid-template-columns:1.16fr .84fr; grid-template-rows:1fr 1fr;
  gap:8px; aspect-ratio:1 / .84;
}
.rm-plate{ position:relative; margin:0; overflow:hidden; background:var(--fog-2); }
.rm-plate--tall{ grid-row:1 / 3; }
.rm-plate img{ width:100%; height:100%; object-fit:cover; }
.rm-plate figcaption{
  position:absolute; left:0; right:0; bottom:0; display:flex; gap:8px;
  justify-content:space-between; align-items:baseline; padding:8px 12px;
  background:rgba(17,19,21,.88); color:#fff;
  font-family:var(--fm); font-size:.58rem; letter-spacing:.08em; text-transform:uppercase;
}
.rm-plate figcaption span{ color:var(--on-2); white-space:nowrap; }

@media (max-width:959px){
  /* Poster order on a phone: title, picture, caption — then the ask. */
  .rm-hero__grid{ display:flex; flex-direction:column; gap:0; }
  .rm-hero__text{ display:contents; }
  .rm-hero__eyebrow{ order:1; }
  .rm-h1{ order:2; }
  .rm-hero__plates{ order:3; margin:24px 0 0; aspect-ratio:4 / 3; grid-template-columns:1fr; grid-template-rows:1fr; }
  .rm-hero__plates .rm-plate:not(.rm-plate--tall){ display:none; }
  .rm-plate--tall{ grid-row:1; }
  .rm-hero__sub{ order:4; }
  .rm-hero__act{ order:5; }
}

/* facts band — the first appearance of the tariff register */
.rm-facts{ border-top:1px solid var(--line); border-bottom:1px solid var(--line); margin-top:var(--sp-xl); }
.rm-facts__row{ display:grid; grid-template-columns:repeat(2, 1fr); margin:0; }
@media (min-width:760px){ .rm-facts__row{ grid-template-columns:repeat(4, 1fr); } }
.rm-fact{ padding:16px 0 16px 24px; border-left:1px solid var(--line); }
.rm-fact:first-child{ border-left:0; padding-left:0; }
@media (max-width:759px){
  .rm-fact:nth-child(3){ border-left:0; padding-left:0; }
  .rm-fact:nth-child(n+3){ border-top:1px solid var(--line); }
}
.rm-fact dt{ font-family:var(--fd); font-weight:800; text-transform:uppercase; font-size:clamp(1.45rem, 2.5vw, 2.05rem); line-height:1; }
.rm-fact dd{ margin:8px 0 0; font-family:var(--fm); font-size:.64rem; letter-spacing:.09em; text-transform:uppercase; color:var(--tx-3); }

/* -------------------------------------------------------------- catalogue */
/* Sub-categories are links to destination archives, not filter buttons —
   which is what lets paging and filtering finally agree. */
.rm-subcats{
  display:flex; flex-wrap:wrap; gap:8px;
  padding-bottom:16px; margin-bottom:var(--sp-m);
  border-bottom:1px solid var(--line);
}
.rm-sec--fog .rm-subcats{ border-bottom-color:var(--line-2); }
.rm-subcat{
  display:inline-flex; align-items:baseline; gap:8px;
  padding:8px 16px; border:1px solid var(--line-2); background:var(--paper);
  font-family:var(--fm); font-size:.7rem; letter-spacing:.07em; text-transform:uppercase;
  color:var(--tx-2); transition:background .16s, color .16s, border-color .16s;
}
.rm-subcat__n{ font-size:.62rem; color:var(--tx-3); }
.rm-subcat:hover{ border-color:var(--ink); color:var(--tx); }
.rm-subcat.is-on{ background:var(--ink); border-color:var(--ink); color:#fff; }
.rm-subcat.is-on .rm-subcat__n{ color:var(--red-on); }

/* --------------------------------------------------------- excursion card
   Large photograph, then the four things a booking decision is actually made
   on — format, duration, price, rating — then one explicit CTA. */
.rm-tours{ display:grid; gap:var(--sp-m); grid-template-columns:1fr; }
@media (min-width:560px){ .rm-tours{ grid-template-columns:repeat(2, 1fr); } }
@media (min-width:1000px){ .rm-tours{ grid-template-columns:repeat(3, 1fr); } }

.rm-tour{ display:flex; flex-direction:column; background:var(--paper); border:1px solid var(--line); transition:border-color .18s; }
.rm-sec--fog .rm-tour{ border-color:var(--line-2); }
.rm-tour:hover{ border-color:var(--ink); }
.rm-tour__media{ position:relative; display:block; overflow:hidden; aspect-ratio:3 / 2; background:var(--fog-2); }
.rm-tour__media img{ width:100%; height:100%; object-fit:cover; transition:transform .55s var(--ease); }
.rm-tour:hover .rm-tour__media img{ transform:scale(1.04); }
.rm-tour__tag{
  position:absolute; left:0; top:0; padding:8px 12px; background:var(--ink); color:#fff;
  font-family:var(--fm); font-size:.57rem; letter-spacing:.09em; text-transform:uppercase;
}
.rm-tour__body{ display:flex; flex-direction:column; flex:1; padding:var(--sp-m); }
.rm-tour__t{
  font-family:var(--fd); font-weight:700; text-transform:uppercase;
  font-size:1.22rem; line-height:1.08; letter-spacing:.008em;
}
.rm-tour__t a{ transition:color .16s; }
.rm-tour:hover .rm-tour__t a{ color:var(--red-tx); }
.rm-tour__meta{
  margin:8px 0 0; font-family:var(--fm); font-size:.68rem;
  letter-spacing:.06em; text-transform:uppercase; color:var(--tx-3); line-height:1.5;
}
.rm-tour__price{ margin:16px 0 0; display:flex; align-items:baseline; flex-wrap:wrap; gap:8px; }
.rm-tour__price b{
  font-family:var(--fd); font-weight:800; text-transform:uppercase;
  font-size:1.55rem; line-height:1; color:var(--red-tx);
}
.rm-tour__price small{ font-family:var(--fm); font-size:.62rem; letter-spacing:.06em; color:var(--tx-3); }
.rm-tour__price b.rm-tour__price--ask{ font-size:1.05rem; color:var(--tx); }
.rm-tour__rate{ margin-top:8px; }
.rm-tour__go{ margin:16px 0 0; margin-top:auto; padding-top:16px; }
.rm-tour__go a{
  display:flex; align-items:center; gap:.5em; width:100%;
  padding-top:16px; border-top:1px solid var(--line);
  font-family:var(--fd); font-weight:700; text-transform:uppercase;
  font-size:.9rem; letter-spacing:.035em; transition:color .16s;
}
.rm-tour__go .rm-ico{ width:1.05em; height:1.05em; margin-left:auto; transition:transform .2s var(--ease); }
.rm-tour:hover .rm-tour__go a{ color:var(--red-tx); }
.rm-tour:hover .rm-tour__go .rm-ico{ transform:translateX(4px); }

/* ----------------------------------------------------------------- rating
   Real partial fill, so 4.9 does not silently round up to five stars. */
.rm-rate{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.rm-rate__stars{ position:relative; display:inline-block; line-height:0; }
.rm-rate__bg{ display:inline-flex; gap:2px; color:var(--line-2); }
.rm-rate__fg{ display:inline-flex; gap:2px; color:var(--red); position:absolute; left:0; top:0; overflow:hidden; white-space:nowrap; }
.rm-rate .rm-ico{ width:15px; height:15px; flex:none; }
.rm-rate__n{ font-family:var(--fm); font-weight:500; font-size:.82rem; color:var(--tx); }
.rm-rate__c{ font-family:var(--fm); font-size:.64rem; letter-spacing:.06em; text-transform:uppercase; color:var(--tx-3); }
.rm-sec--ink .rm-rate__n{ color:#fff; }

/* --------------------------------------------------- editorial poster grid
   Guide articles and other editorial archives: no price, no rating. */
.rm-grid{ display:grid; gap:var(--sp-m) var(--sp-s); grid-template-columns:repeat(2, 1fr); }
@media (min-width:700px){ .rm-grid{ grid-template-columns:repeat(3, 1fr); } }
@media (min-width:1100px){ .rm-grid{ grid-template-columns:repeat(4, 1fr); } }
.rm-poster__a{ display:flex; flex-direction:column; height:100%; }
.rm-poster__media{ position:relative; display:block; overflow:hidden; aspect-ratio:4 / 5; background:var(--fog-2); }
.rm-poster__media img{ width:100%; height:100%; object-fit:cover; transition:transform .55s var(--ease); }
.rm-poster__a:hover .rm-poster__media img{ transform:scale(1.045); }
.rm-poster__body{ display:flex; flex-direction:column; flex:1; padding-top:16px; }
.rm-poster__t{
  font-family:var(--fd); font-weight:700; text-transform:uppercase;
  font-size:1.12rem; line-height:1.1; letter-spacing:.008em; transition:color .16s;
}
.rm-poster__a:hover .rm-poster__t{ color:var(--red-tx); }
.rm-poster__d{ display:block; margin-top:8px; font-size:.89rem; line-height:1.5; color:var(--tx-2); }
.rm-poster__foot{
  display:flex; justify-content:space-between; align-items:baseline; gap:8px;
  margin-top:auto; padding-top:12px; border-top:1px solid var(--line);
  font-family:var(--fm); font-size:.68rem; letter-spacing:.05em;
}
.rm-sec--fog .rm-poster__foot{ border-top-color:var(--line-2); }
.rm-poster__dur{ text-transform:uppercase; color:var(--tx-3); }
.rm-poster__p{ color:var(--red-tx); white-space:nowrap; }

/* ----------------------------------------------------------- ruled row list
   Transfer directions, the guide index and search results. */
.rm-rows{ list-style:none; margin:0; padding:0; counter-reset:ln; border-top:1px solid var(--line-2); }
.rm-line{ counter-increment:ln; border-bottom:1px solid var(--line); }
.rm-line__a{
  display:grid; align-items:center; gap:3px 16px; padding:16px 0;
  grid-template-columns:38px minmax(0,1fr) auto;
}
.rm-line__a::before{
  content:counter(ln, decimal-leading-zero); grid-column:1; grid-row:1 / 3;
  align-self:start; padding-top:.35em;
  font-family:var(--fm); font-size:.68rem; color:var(--tx-3);
}
.rm-line__t{
  grid-column:2; grid-row:1;
  font-family:var(--fd); font-weight:700; text-transform:uppercase;
  font-size:1.04rem; line-height:1.14; letter-spacing:.01em; transition:color .16s;
}
.rm-line__p{ grid-column:3; grid-row:1; justify-self:end; font-family:var(--fm); font-size:.8rem; color:var(--red-tx); white-space:nowrap; }
.rm-line__ask{ color:var(--tx-3); }
.rm-line__c{ grid-column:2; grid-row:2; }
.rm-line__d{ grid-column:3; grid-row:2; justify-self:end; }
.rm-line__c,.rm-line__d{ font-family:var(--fm); font-size:.64rem; letter-spacing:.07em; text-transform:uppercase; color:var(--tx-3); }
.rm-line__go{ display:none; color:var(--tx-3); transition:transform .2s var(--ease), color .16s; }
.rm-line__a:hover .rm-line__t{ color:var(--red-tx); }
.rm-line__a:hover .rm-line__go{ color:var(--red); transform:translateX(4px); }
@media (min-width:900px){
  .rm-line__a{ grid-template-columns:46px minmax(0,1.5fr) minmax(0,1fr) 140px 118px 28px; padding:20px 0; }
  .rm-line__a::before{ grid-row:1; align-self:center; padding-top:0; }
  .rm-line__t{ grid-column:2; }
  .rm-line__c{ grid-column:3; grid-row:1; }
  .rm-line__d{ grid-column:4; grid-row:1; justify-self:start; }
  .rm-line__p{ grid-column:5; grid-row:1; justify-self:end; font-size:.88rem; }
  .rm-line__go{ display:block; grid-column:6; grid-row:1; justify-self:end; }
  .rm-line__go .rm-ico{ width:18px; height:18px; }
}

/* ------------------------------------------------ «Что мы организуем» ----
   The shape of the offering, before any catalogue. Each tile discloses its
   secondary lines as a text run — which is what keeps the main navigation
   down to eight items. */
.rm-caps{ display:grid; gap:1px; background:var(--line-2); border:1px solid var(--line-2); }
@media (min-width:640px){ .rm-caps{ grid-template-columns:repeat(2, 1fr); } }
@media (min-width:1040px){ .rm-caps{ grid-template-columns:repeat(3, 1fr); } }
.rm-cap{
  display:flex; flex-direction:column; background:var(--paper);
  padding:var(--sp-m); transition:background .18s;
}
a.rm-cap:hover{ background:var(--ink); color:var(--on); }
.rm-cap__n{ font-family:var(--fm); font-size:.68rem; letter-spacing:.08em; color:var(--red-tx); }
a.rm-cap:hover .rm-cap__n{ color:var(--red-on); }
.rm-cap__t{
  margin-top:16px; font-family:var(--fd); font-weight:700; text-transform:uppercase;
  font-size:1.4rem; line-height:1.05; letter-spacing:.008em;
}
a.rm-cap:hover .rm-cap__t{ color:#fff; }
.rm-cap__d{ margin:12px 0 0; font-size:.95rem; line-height:1.55; color:var(--tx-2); }
a.rm-cap:hover .rm-cap__d{ color:var(--on-2); }
.rm-cap__i{
  margin:16px 0 0; padding-top:16px; border-top:1px solid var(--line);
  font-family:var(--fm); font-size:.64rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--tx-3); line-height:1.7;
}
a.rm-cap:hover .rm-cap__i{ border-top-color:var(--line-on); color:var(--on-2); }
.rm-cap__go{
  display:flex; align-items:center; gap:.5em; margin-top:auto; padding-top:16px;
  font-family:var(--fd); font-weight:700; text-transform:uppercase;
  font-size:.85rem; letter-spacing:.035em; color:var(--tx);
}
.rm-cap__go .rm-ico{ width:1.05em; height:1.05em; transition:transform .2s var(--ease); }
a.rm-cap:hover .rm-cap__go{ color:#fff; }
a.rm-cap:hover .rm-cap__go .rm-ico{ transform:translateX(4px); }

/* --------------------------------------------------- «Почему RUSMUNICH» --
   The trust beat. The founding year is carried by the headline as the red
   word and repeated as a figure below, because a date read as a number
   lands harder than a date read as a sentence. */
.rm-why{ display:grid; gap:1px; background:var(--line-2); border:1px solid var(--line-2); }
@media (min-width:640px){ .rm-why{ grid-template-columns:repeat(2, 1fr); } }
@media (min-width:1040px){ .rm-why{ grid-template-columns:repeat(3, 1fr); } }
.rm-whyi{ background:var(--fog); padding:var(--sp-m); }
.rm-whyi__n{ font-family:var(--fm); font-size:.68rem; letter-spacing:.08em; color:var(--red-tx); }
.rm-whyi__t{
  margin-top:16px; font-family:var(--fd); font-weight:700; text-transform:uppercase;
  font-size:1.16rem; line-height:1.12; letter-spacing:.008em;
}
.rm-whyi__d{ margin:8px 0 0; font-size:.92rem; line-height:1.58; color:var(--tx-2); }

.rm-figs{ display:grid; grid-template-columns:repeat(2, 1fr); margin:var(--sp-l) 0 0; border-top:1px solid var(--line-2); }
@media (min-width:820px){ .rm-figs{ grid-template-columns:repeat(4, 1fr); } }
.rm-fig{ padding:20px 0 20px 24px; border-left:1px solid var(--line-2); }
.rm-fig:first-child{ border-left:0; padding-left:0; }
@media (max-width:819px){
  .rm-fig:nth-child(3){ border-left:0; padding-left:0; }
  .rm-fig:nth-child(n+3){ border-top:1px solid var(--line-2); }
}
.rm-fig dt{ font-family:var(--fd); font-weight:800; text-transform:uppercase; font-size:clamp(1.5rem, 2.6vw, 2.2rem); line-height:1; }
.rm-fig dd{ margin:8px 0 0; font-family:var(--fm); font-size:.64rem; letter-spacing:.09em; text-transform:uppercase; color:var(--tx-3); line-height:1.5; }

/* ------------------------------------------------------------- автопарк --
   Own transport is both a trust argument and a product, so each car gets the
   sequence a buyer needs: photograph, capacity, luggage, what you get, order. */
.rm-cars{ display:grid; gap:var(--sp-m); grid-template-columns:1fr; }
@media (min-width:620px){ .rm-cars{ grid-template-columns:repeat(2, 1fr); } }
@media (min-width:1000px){ .rm-cars{ grid-template-columns:repeat(3, 1fr); } }
.rm-car{ display:flex; flex-direction:column; border:1px solid var(--line); border-top:3px solid var(--ink); background:var(--paper); transition:border-top-color .18s; }
.rm-car:hover{ border-top-color:var(--red); }
.rm-car__media{ display:block; overflow:hidden; aspect-ratio:16 / 10; background:var(--fog-2); }
.rm-car__media img{ width:100%; height:100%; object-fit:cover; transition:transform .55s var(--ease); }
.rm-car:hover .rm-car__media img{ transform:scale(1.04); }
.rm-car__plate{
  display:flex; align-items:center; justify-content:space-between;
  aspect-ratio:21 / 9; padding:0 24px; background:var(--fog); color:var(--tx-3);
}
.rm-sec--fog .rm-car__plate{ background:var(--fog-2); }
.rm-car__plate .rm-ico{ width:44px; height:44px; }
.rm-car__plate b{ font-family:var(--fm); font-weight:400; font-size:1.6rem; color:var(--line-2); }
.rm-car__body{ display:flex; flex-direction:column; flex:1; padding:var(--sp-m); }
.rm-car__klass{ margin:0; font-family:var(--fm); font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; color:var(--red-tx); }
.rm-car__t{ margin-top:8px; font-family:var(--fd); font-weight:800; text-transform:uppercase; font-size:1.5rem; line-height:1.02; }
.rm-car__spec{ display:grid; grid-template-columns:repeat(2, 1fr); margin:16px 0 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.rm-car__spec > div{ padding:12px 16px 12px 0; }
.rm-car__spec > div + div{ border-left:1px solid var(--line); padding-left:16px; }
.rm-car__spec dt{ font-family:var(--fm); font-size:.6rem; letter-spacing:.09em; text-transform:uppercase; color:var(--tx-3); }
.rm-car__spec dd{ margin:8px 0 0; font-family:var(--fd); font-weight:700; text-transform:uppercase; font-size:1.08rem; }
.rm-car__note{ margin:16px 0 0; font-size:.91rem; line-height:1.55; color:var(--tx-2); }
.rm-car__perks{ list-style:none; margin:16px 0 0; padding:0; display:grid; gap:8px; }
.rm-car__perks li{ display:flex; gap:8px; align-items:flex-start; font-size:.88rem; line-height:1.45; color:var(--tx-2); }
.rm-car__perks .rm-ico{ width:15px; height:15px; margin-top:.25em; color:var(--red); flex:none; }
.rm-car__cta{ margin-top:auto; padding-top:24px; }
.rm-cars__note{
  margin:var(--sp-m) 0 0; font-family:var(--fm); font-size:.68rem;
  letter-spacing:.05em; line-height:1.8; color:var(--tx-3);
}
.rm-textlink{ display:inline-flex; align-items:center; gap:.45em; color:var(--red-tx); border-bottom:1px solid rgba(206,16,23,.4); }
.rm-textlink:hover{ border-bottom-color:var(--red-tx); }
.rm-textlink .rm-ico{ width:1em; height:1em; }

/* ------------------------------------------------------------ fare sheet */
.rm-fares{ border-top:2px solid var(--ink); }
.rm-fares__bar{
  display:flex; flex-wrap:wrap; gap:12px 24px; align-items:center; justify-content:space-between;
  padding:16px 0; border-bottom:1px solid var(--line);
}
.rm-fares__tabs{ display:flex; flex-wrap:wrap; gap:2px 24px; }
.rm-tab{
  position:relative; padding:8px 0;
  font-family:var(--fm); font-size:.72rem; letter-spacing:.08em; text-transform:uppercase;
  color:var(--tx-2); transition:color .16s;
}
.rm-tab::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:2px; background:var(--red);
  transform:scaleX(0); transform-origin:left; transition:transform .18s var(--ease);
}
.rm-tab:hover{ color:var(--tx); }
.rm-tab.is-on{ color:var(--tx); }
.rm-tab.is-on::after{ transform:scaleX(1); }
.rm-fares__q{ display:flex; align-items:center; gap:8px; min-width:220px; padding:4px 2px; border-bottom:1px solid var(--line-2); }
.rm-fares__q .rm-ico{ width:16px; height:16px; color:var(--tx-3); }
.rm-fares__q input{ flex:1; min-width:0; border:0; background:none; outline:none; padding:2px 0; font-size:.92rem; color:var(--tx); }
.rm-fares__q input::placeholder{ color:var(--tx-3); }
.rm-fares__q:focus-within{ border-bottom-color:var(--red); }
.rm-fares__note{ margin:16px 0 0; font-family:var(--fm); font-size:.66rem; line-height:1.7; letter-spacing:.04em; color:var(--tx-3); max-width:80ch; }
.rm-fares__none{ margin:24px 0 0; font-family:var(--fm); font-size:.82rem; color:var(--tx-3); }
.rm-fares__rest{ margin:0; padding:16px 0; border-bottom:1px solid var(--line); font-family:var(--fm); font-size:.72rem; letter-spacing:.06em; text-transform:uppercase; color:var(--tx-3); }
.rm-fares__rest a{ display:inline-flex; align-items:center; gap:.6em; color:var(--red-tx); }
.rm-fares__rest .rm-ico{ width:15px; height:15px; transition:transform .2s var(--ease); }
.rm-fares__rest a:hover .rm-ico{ transform:translateX(4px); }

.rm-fare{ width:100%; font-variant-numeric:tabular-nums; }
.rm-fare thead th{
  padding:16px 8px; text-align:right; border-bottom:1px solid var(--line);
  font-family:var(--fm); font-weight:400; font-size:.62rem; letter-spacing:.09em;
  text-transform:uppercase; color:var(--tx-3); white-space:nowrap;
}
.rm-fare thead th:first-child{ text-align:left; padding-left:0; }
.rm-fare thead th:last-child{ padding-right:0; }
.rm-fare tbody th,.rm-fare tbody td{ padding:12px 8px; text-align:right; border-bottom:1px solid var(--line); font-family:var(--fm); font-size:.88rem; font-weight:400; }
.rm-fare tbody th.fd{
  text-align:left; padding-left:0;
  font-family:var(--fd); font-weight:700; text-transform:uppercase;
  font-size:1.02rem; letter-spacing:.01em;
}
.rm-fare tbody td:last-child{ padding-right:0; }
.rm-fare tbody td.fk,.rm-fare tbody td.ft{ color:var(--tx-3); }
.rm-fare tbody td.fp1{ color:var(--red-tx); }
.rm-fare tbody tr:hover{ background:var(--fog); }
.rm-sec--fog .rm-fare tbody tr:hover{ background:var(--paper); }
/* Trimmed sheet (home page): the overflow stays in the DOM so search can
   reach it — the cap is lifted the moment someone types. */
.rm-fares.is-capped .rm-fare tbody tr.is-over{ display:none; }

@media (max-width:820px){
  /* Six columns cannot be read on a phone. Same data, restructured: the
     destination, then distance and time, then the three fares side by side
     under their passenger labels. */
  .rm-fare thead{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }
  .rm-fare,.rm-fare tbody,.rm-fare tr,.rm-fare th,.rm-fare td{ display:block; }
  .rm-fare tbody tr{ display:grid; grid-template-columns:repeat(3, 1fr); gap:0 12px; padding:16px 0; border-bottom:1px solid var(--line); }
  .rm-fare tbody th.fd{ grid-column:1 / -1; padding:0 0 8px; border:0; font-size:1.08rem; }
  .rm-fare tbody td.fk{ grid-column:1 / 2; }
  .rm-fare tbody td.ft{ grid-column:2 / 4; }
  .rm-fare tbody td.fk,.rm-fare tbody td.ft{
    padding:0 0 12px; border:0; text-align:left;
    font-size:.66rem; letter-spacing:.07em; text-transform:uppercase; color:var(--tx-3);
  }
  .rm-fare tbody td.fk::before,.rm-fare tbody td.ft::before{ content:attr(data-l) " "; }
  .rm-fare tbody td.fp{ padding:0; border:0; text-align:left; font-size:1rem; color:var(--tx); }
  .rm-fare tbody td.fp::before{
    content:attr(data-l); display:block; margin-bottom:4px;
    font-size:.56rem; letter-spacing:.08em; text-transform:uppercase; color:var(--tx-3);
  }
  .rm-fare tbody td.fp1{ color:var(--red-tx); }
  .rm-fare tbody tr:hover{ background:none; }
}

/* ----------------------------------------------------------- oktoberfest */
.rm-okt{ position:relative; isolation:isolate; overflow:hidden; background:var(--ink); color:var(--on); padding-block:var(--sp-3xl); }
.rm-okt__bg{ position:absolute; inset:0; z-index:-2; width:100%; height:100%; object-fit:cover; }
/* Dark enough to read the headline on the left, light enough that the fair is
   actually visible on the right — the band is a photograph, not a black box. */
.rm-okt::after{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(100deg, rgba(10,12,13,.95) 0%, rgba(10,12,13,.9) 34%, rgba(10,12,13,.7) 62%, rgba(10,12,13,.56) 100%);
}
@media (max-width:899px){
  .rm-okt::after{ background:linear-gradient(180deg, rgba(10,12,13,.72) 0%, rgba(10,12,13,.92) 45%, rgba(10,12,13,.95) 100%); }
}
.rm-okt__in{ display:grid; gap:32px; }
@media (min-width:900px){ .rm-okt__in{ grid-template-columns:minmax(0,1fr) 320px; gap:var(--sp-xl); align-items:end; } }
.rm-okt__date{ display:flex; align-items:center; gap:12px; margin:0 0 16px; font-family:var(--fm); font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:#fff; }
.rm-okt__fine{ margin:12px 0 0; font-family:var(--fm); font-size:.62rem; line-height:1.6; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.82); text-align:center; }

/* --------------------------------------------------------------- services */
.rm-svc{ border-top:2px solid var(--ink); display:grid; grid-template-columns:1fr; }
@media (min-width:900px){ .rm-svc{ grid-template-columns:1fr 1fr; column-gap:var(--sp-xl); } }
.rm-svc__i{
  display:grid; grid-template-columns:38px minmax(0,1fr) auto 24px; gap:4px 16px;
  align-items:center; padding:20px 0; border-bottom:1px solid var(--line);
}
.rm-sec--fog .rm-svc__i{ border-bottom-color:var(--line-2); }
.rm-svc__n{ align-self:start; padding-top:.3em; font-family:var(--fm); font-size:.68rem; color:var(--tx-3); }
.rm-svc__t{ display:block; font-family:var(--fd); font-weight:700; text-transform:uppercase; font-size:1.08rem; line-height:1.15; letter-spacing:.01em; transition:color .16s; }
.rm-svc__e{ font-family:var(--ft); margin-right:.45em; }
.rm-svc__d{ display:block; margin-top:4px; font-size:.89rem; line-height:1.5; color:var(--tx-2); }
.rm-svc__p{ font-family:var(--fm); font-size:.76rem; color:var(--red-tx); white-space:nowrap; }
.rm-svc__go{ color:var(--tx-3); transition:transform .2s var(--ease), color .16s; }
.rm-svc__go .rm-ico{ width:18px; height:18px; }
.rm-svc__i:hover .rm-svc__t{ color:var(--red-tx); }
.rm-svc__i:hover .rm-svc__go{ color:var(--red); transform:translateX(4px); }
.rm-svc__more{ margin:var(--sp-m) 0 0; font-size:.98rem; color:var(--tx-2); }
.rm-svc__more a{ color:var(--red-tx); border-bottom:1px solid rgba(237,28,36,.4); display:inline-flex; align-items:baseline; gap:.4em; }
.rm-svc__more a:hover{ border-bottom-color:var(--red); }
.rm-svc__more .rm-ico{ width:.9em; height:.9em; }

/* --------------------------------------------------------------- reviews */
.rm-wall{ display:grid; gap:var(--sp-l); }
@media (min-width:820px){ .rm-wall{ grid-template-columns:repeat(3, 1fr); } }
.rm-quote{ margin:0; padding-top:16px; border-top:2px solid var(--red); }
.rm-quote__stars{ display:flex; gap:2px; color:var(--red); }
.rm-quote__stars .rm-ico{ width:15px; height:15px; }
.rm-quote__stars--big .rm-ico{ width:20px; height:20px; }
.rm-quote blockquote{ margin:16px 0 0; font-size:1rem; line-height:1.65; color:#E4E7E9; }
.rm-quote figcaption{ display:flex; flex-direction:column; gap:4px; margin-top:16px; font-family:var(--fm); font-size:.64rem; letter-spacing:.08em; text-transform:uppercase; color:var(--on-2); }
.rm-quote figcaption b{ font-weight:500; color:#fff; }

.rm-wall--light{ display:block; columns:1; column-gap:var(--sp-l); }
@media (min-width:640px){ .rm-wall--light{ columns:2; } }
@media (min-width:1060px){ .rm-wall--light{ columns:3; } }
.rm-wall--light .rm-quote{ break-inside:avoid; margin-bottom:var(--sp-l); }
.rm-wall--light .rm-quote blockquote{ color:var(--tx); }
.rm-wall--light .rm-quote figcaption{ color:var(--tx-3); }
.rm-wall--light .rm-quote figcaption b{ color:var(--tx); }

/* -------------------------------------------------------------------- FAQ */
.rm-faq{ border-top:2px solid var(--ink); }
.rm-q{ border-bottom:1px solid var(--line); }
.rm-q__s{ display:grid; grid-template-columns:44px minmax(0,1fr) 18px; gap:16px; align-items:center; padding:20px 0; cursor:pointer; list-style:none; }
.rm-q__s::-webkit-details-marker{ display:none; }
.rm-q__n{ font-family:var(--fm); font-size:.68rem; color:var(--tx-3); }
.rm-q__t{ font-family:var(--fd); font-weight:700; text-transform:uppercase; font-size:1.1rem; line-height:1.2; letter-spacing:.01em; transition:color .16s; }
.rm-q__s:hover .rm-q__t{ color:var(--red-tx); }
.rm-q__i{ position:relative; width:16px; height:16px; justify-self:end; }
.rm-q__i::before,.rm-q__i::after{ content:""; position:absolute; background:var(--red); transition:transform .2s var(--ease); }
.rm-q__i::before{ left:0; right:0; top:7px; height:2px; }
.rm-q__i::after{ top:0; bottom:0; left:7px; width:2px; }
.rm-q[open] .rm-q__i::after{ transform:scaleY(0); }
.rm-q__a{ padding:0 0 24px 60px; max-width:82ch; }
.rm-q__a p{ margin:0; color:var(--tx-2); line-height:1.68; }
@media (max-width:520px){ .rm-q__a{ padding-left:0; } }

/* ------------------------------------------------------------- lightbox
   Photographs open over the page. Near-black ground, no chrome beyond the
   controls, caption in the label face — the frame gets out of the way. */
.rm-lb{
  position:fixed; inset:0; z-index:120;
  display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center;
  gap:var(--sp-s); padding:var(--sp-m);
  background:rgba(8,9,10,.94);
}
.rm-lb[hidden]{ display:none; }
.rm-lb__fig{ margin:0; display:flex; flex-direction:column; align-items:center; gap:14px; min-width:0; }
.rm-lb__fig img{
  max-width:100%; max-height:calc(100vh - var(--sp-2xl) - 60px); max-height:calc(100dvh - var(--sp-2xl) - 60px);
  width:auto; height:auto; object-fit:contain; background:#111315;
  transition:opacity .18s;
}
.rm-lb.is-loading .rm-lb__fig img{ opacity:.25; }
.rm-lb figcaption{
  font-family:var(--fm); font-size:.66rem; letter-spacing:.08em; text-transform:uppercase;
  color:var(--on-2); text-align:center; max-width:70ch;
}
.rm-lb__x,.rm-lb__nav{
  appearance:none; border:1px solid rgba(255,255,255,.22); background:transparent;
  width:46px; height:46px; padding:0; cursor:pointer; position:relative;
  transition:border-color .16s, background .16s;
}
.rm-lb__x:hover,.rm-lb__nav:hover{ border-color:var(--red); background:var(--red); }
.rm-lb__x:focus-visible,.rm-lb__nav:focus-visible{ outline:2px solid var(--red); outline-offset:2px; }
.rm-lb__x{ position:absolute; top:var(--sp-s); right:var(--sp-s); z-index:1; }
.rm-lb__x::before,.rm-lb__x::after{
  content:""; position:absolute; left:13px; right:13px; top:22px; height:2px; background:#fff;
}
.rm-lb__x::before{ transform:rotate(45deg); }
.rm-lb__x::after{ transform:rotate(-45deg); }
.rm-lb__nav::before{
  content:""; position:absolute; top:16px; left:16px; width:12px; height:12px;
  border-left:2px solid #fff; border-bottom:2px solid #fff;
}
.rm-lb__nav--prev::before{ transform:rotate(45deg); left:18px; }
.rm-lb__nav--next::before{ transform:rotate(-135deg); left:13px; }
.rm-lb__nav[hidden]{ visibility:hidden; display:block; }
@media (max-width:700px){
  .rm-lb{ grid-template-columns:1fr; grid-template-areas:"fig"; padding:var(--sp-s); }
  .rm-lb__fig{ grid-area:fig; }
  .rm-lb__nav{ position:absolute; bottom:var(--sp-s); }
  .rm-lb__nav--prev{ left:var(--sp-s); }
  .rm-lb__nav--next{ right:var(--sp-s); }
  .rm-lb__fig img{ max-height:calc(100vh - 190px); }
}
/* A picture the page is showing smaller than the file holds invites a click. */
.rm-prose img.is-zoomable{ cursor:zoom-in; }
.rm-gal__i{ cursor:zoom-in; }
@media (max-width:600px){ .rm-q__a{ padding-left:0; } }

/* ---------------------------------------------------------------- contact */
.rm-contact{ background:var(--ink); color:var(--on); }
.rm-contact__grid{ display:grid; gap:var(--sp-xl); }
@media (min-width:980px){ .rm-contact__grid{ grid-template-columns:minmax(0,1fr) minmax(0,450px); } }
.rm-contact .rm-mast__rail{ margin-bottom:16px; }
.rm-steps{ list-style:none; margin:32px 0 0; padding:0; border-top:1px solid var(--line-on); }
.rm-step{ display:grid; grid-template-columns:44px minmax(0,1fr); gap:16px; padding:16px 0; border-bottom:1px solid var(--line-on); }
.rm-step__n{ font-family:var(--fm); font-size:.7rem; color:var(--red-on); }
.rm-step__b b{ display:block; font-family:var(--fd); font-weight:700; text-transform:uppercase; font-size:1.05rem; letter-spacing:.01em; color:#fff; }
.rm-step__b span{ display:block; margin-top:4px; font-size:.93rem; line-height:1.55; color:var(--on-2); }
.rm-ways{ list-style:none; margin:24px 0 0; padding:0; }
.rm-ways a,.rm-ways__static{ display:flex; align-items:center; gap:16px; padding:12px 0; }
.rm-ways .rm-ico{ width:20px; height:20px; color:var(--red); }
.rm-ways b{ display:block; font-weight:500; font-size:1rem; color:#fff; }
.rm-ways small{ display:block; margin-top:4px; font-family:var(--fm); font-size:.6rem; letter-spacing:.07em; text-transform:uppercase; color:var(--on-2); }
.rm-ways a:hover b{ color:var(--red-on); }
.rm-contact__chan{ display:flex; flex-wrap:wrap; gap:8px; margin-top:24px; }

/* request slip — a white sheet laid on the ink poster */
.rm-slip{ background:var(--paper); color:var(--tx); padding:var(--sp-m); align-self:start; }
.rm-slip__head{ display:flex; align-items:baseline; justify-content:space-between; gap:16px; padding-bottom:12px; margin-bottom:24px; border-bottom:2px solid var(--ink); }
.rm-slip__no{ font-family:var(--fm); font-size:.64rem; letter-spacing:.1em; color:var(--tx-3); }
.rm-f{ margin-bottom:16px; }
.rm-f label{ display:block; margin-bottom:8px; font-family:var(--fm); font-size:.6rem; letter-spacing:.1em; text-transform:uppercase; color:var(--tx-3); }
.rm-f input,.rm-f select,.rm-f textarea{
  width:100%; padding:8px 0; font-size:.98rem; color:var(--tx);
  background:transparent; border:0; border-bottom:1px solid var(--line-2);
  border-radius:0; -webkit-appearance:none; appearance:none;
}
.rm-f select{
  padding-right:24px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23868D95' stroke-width='1.6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 2px center;
}
.rm-f textarea{ resize:vertical; min-height:76px; }
.rm-f input::placeholder,.rm-f textarea::placeholder{ color:var(--tx-3); }
.rm-f input:focus,.rm-f select:focus,.rm-f textarea:focus{ outline:none; border-bottom-color:var(--red); }
.rm-f input.is-bad{ border-bottom-color:var(--red); background:rgba(237,28,36,.05); }
.rm-f-row{ display:grid; grid-template-columns:1fr; gap:0 16px; }
@media (min-width:520px){ .rm-f-row{ grid-template-columns:1fr 1fr; } }
.rm-slip__fine{ margin:16px 0 0; font-size:.78rem; line-height:1.5; color:var(--tx-3); }

/* ------------------------------------------------------------ calculator
   One ruled sheet in three rows — what you choose, what it costs, what to do
   about it. Tariff register throughout: hairline rules, monospaced numerals,
   the answer set as the one large figure. The block is hidden in markup and
   unhidden by the script, so nobody meets a control that cannot answer. */
.rm-calc{ border-top:2px solid var(--ink); border-bottom:1px solid var(--line); }
.rm-calc[hidden]{ display:none; }
.rm-calc__row{ padding:var(--sp-m) 0; }
.rm-calc__row + .rm-calc__row{ border-top:1px solid var(--line); }

.rm-calc__controls{ display:grid; gap:var(--sp-m); align-items:end; }
@media (min-width:720px){ .rm-calc__controls{ grid-template-columns:minmax(0,1fr) auto; gap:var(--sp-xl); } }
.rm-calc__dest{ margin:0; max-width:44ch; }
.rm-calc__dest select{ font-size:1.15rem; }

.rm-calc__pax{ margin:0; padding:0; border:0; min-width:0; }
.rm-calc__pax legend{
  padding:0; margin-bottom:8px;
  font-family:var(--fm); font-size:.6rem; letter-spacing:.1em; text-transform:uppercase; color:var(--tx-3);
}
.rm-calc__bands{ display:flex; }
.rm-calc__band input{ position:absolute; opacity:0; width:0; height:0; }
.rm-calc__band span{
  display:block; padding:11px 20px; margin-left:-1px;
  border:1px solid var(--line-2);
  font-family:var(--fm); font-size:.82rem; letter-spacing:.04em; color:var(--tx-2);
  cursor:pointer; white-space:nowrap; transition:background .16s, color .16s, border-color .16s;
}
.rm-calc__band:first-child span{ margin-left:0; }
.rm-calc__band input:checked + span{ background:var(--ink); border-color:var(--ink); color:#fff; position:relative; z-index:1; }
.rm-calc__band input:focus-visible + span{ outline:2px solid var(--red); outline-offset:2px; }
.rm-calc__band input:disabled + span{ color:var(--line-2); cursor:not-allowed; background:var(--fog); }

.rm-calc__result{ display:grid; gap:var(--sp-s); align-items:baseline; }
@media (min-width:720px){ .rm-calc__result{ grid-template-columns:minmax(0,1fr) auto; gap:var(--sp-xl); } }
.rm-calc__route{
  margin:0; font-family:var(--fd); font-weight:800; text-transform:uppercase;
  font-size:clamp(1.15rem, 2vw, 1.6rem); line-height:1.1; color:var(--tx-2);
}
.rm-calc__route b{ font-weight:800; color:var(--tx); }
.rm-calc__meta{ margin:10px 0 0; display:flex; flex-wrap:wrap; gap:6px 14px; }
.rm-calc__meta span{ font-family:var(--fm); font-size:.74rem; letter-spacing:.05em; color:var(--tx-3); }
.rm-calc__meta span:empty{ display:none; }
.rm-calc__meta span + span::before{ content:"· "; color:var(--line-2); }
.rm-calc__price{ margin:0; text-align:left; }
@media (min-width:720px){ .rm-calc__price{ text-align:right; } }
.rm-calc__price b{
  display:block; font-family:var(--fd); font-weight:800; line-height:.95;
  font-size:clamp(2.4rem, 5vw, 3.4rem); color:var(--red-tx);
}
.rm-calc__price small{
  display:block; margin-top:8px;
  font-family:var(--fm); font-size:.6rem; letter-spacing:.08em; text-transform:uppercase; color:var(--tx-3);
}

.rm-calc__act{ display:flex; flex-wrap:wrap; align-items:center; gap:var(--sp-s) var(--sp-m); }
.rm-calc__page{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--fm); font-size:.66rem; letter-spacing:.08em; text-transform:uppercase; color:var(--tx-2);
}
.rm-calc__page .rm-ico{ width:1.1em; height:1.1em; }
.rm-calc__page:hover{ color:var(--red-tx); }
.rm-calc__note{ margin:var(--sp-m) 0 0; max-width:76ch; font-size:.85rem; line-height:1.6; color:var(--tx-3); }
.rm-fares__note a{ display:inline-flex; align-items:center; gap:5px; margin-left:6px; color:var(--red-tx); white-space:nowrap; }
.rm-fares__note a .rm-ico{ width:1em; height:1em; }
/* Contact Form 7, if the client wires one up, inherits the slip's fields. */
.rm-slip__cf7 input[type=text],.rm-slip__cf7 input[type=email],.rm-slip__cf7 input[type=tel],
.rm-slip__cf7 input[type=date],.rm-slip__cf7 select,.rm-slip__cf7 textarea{
  width:100%; padding:8px 0; font-size:.98rem; background:transparent;
  border:0; border-bottom:1px solid var(--line-2); border-radius:0;
}
.rm-slip__cf7 input[type=submit]{
  width:100%; margin-top:8px; padding:1.1em 1.85em; border:0; border-radius:0; cursor:pointer;
  background:var(--red); color:#fff; font-family:var(--fd); font-weight:700;
  text-transform:uppercase; letter-spacing:.035em; font-size:1.02rem;
}
.rm-slip__cf7 input[type=submit]:hover{ background:var(--red-d); }
.rm-slip__cf7 .wpcf7-form-control-wrap{ display:block; margin-bottom:16px; }

/* -------------------------------------------------------------- page head */
.rm-phead{ background:var(--fog); border-bottom:1px solid var(--line); padding-block:var(--sp-l) var(--sp-xl); }
.rm-crumbs{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-bottom:var(--sp-m); font-family:var(--fm); font-size:.64rem; letter-spacing:.07em; text-transform:uppercase; color:var(--tx-3); }
.rm-crumbs a:hover{ color:var(--red-tx); }
.rm-crumbs__sep{ color:var(--line-2); }
.rm-phead__grid{ display:grid; gap:16px; }
@media (min-width:1000px){ .rm-phead__grid{ grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:var(--sp-xl); align-items:end; } }
.rm-phead__grid .rm-stand{ margin:0; padding-bottom:.4em; }
.rm-phead__count{ margin:24px 0 0; font-family:var(--fm); font-size:.68rem; letter-spacing:.09em; text-transform:uppercase; color:var(--tx-3); }
.rm-phead__count b{ font-weight:500; color:var(--red-tx); }

/* spec band */
.rm-spec{ display:grid; margin:var(--sp-l) 0 0; border-top:1px solid var(--line-2); }
.rm-spec__i{ display:flex; justify-content:space-between; align-items:baseline; gap:16px; padding:12px 0; border-bottom:1px solid var(--line); }
.rm-spec dt{ font-family:var(--fm); font-size:.62rem; letter-spacing:.09em; text-transform:uppercase; color:var(--tx-3); }
.rm-spec dd{ margin:0; font-family:var(--fd); font-weight:700; text-transform:uppercase; font-size:1.02rem; text-align:right; }
.rm-spec dd small{ display:block; margin-top:3px; font-family:var(--fm); font-weight:400; font-size:.6rem; letter-spacing:.07em; text-transform:none; color:var(--tx-3); }
.rm-spec__i--price dd{ color:var(--red-tx); }
/* Flex, not grid-auto-columns: a post may fill two spec cells or five, and
   equal fractions leave a two-cell band looking half-empty. Cells hug their
   content and wrap when the row runs out. */
@media (min-width:820px){
  .rm-spec{ display:flex; flex-wrap:wrap; border-bottom:1px solid var(--line); }
  .rm-spec__i{ flex:0 1 auto; min-width:150px; max-width:34ch; flex-direction:column; align-items:flex-start; justify-content:flex-start; gap:8px; padding:16px 24px; border-bottom:0; border-left:1px solid var(--line); }
  .rm-spec__i:first-child{ border-left:0; padding-left:0; }
  .rm-spec dd{ text-align:left; font-size:1.12rem; }
}

/* ------------------------------------------------------------------ entry */
.rm-entry{ padding-bottom:var(--sp-3xl); }
.rm-entry__grid{ display:grid; gap:var(--sp-xl); padding-top:var(--sp-xl); }
@media (min-width:1000px){ .rm-entry__grid{ grid-template-columns:minmax(0,1fr) 336px; } }
.rm-entry__aside{ align-self:start; }
@media (min-width:1000px){ .rm-entry__aside{ position:sticky; top:calc(var(--head) + 22px); } }
/* The reading column starts where the masthead starts. Centring it left the
   breadcrumb and the H1 hanging on the left while the body floated in the
   middle of the page — two different left edges on the same screen. */
.rm-read{ max-width:74ch; padding-block:var(--sp-xl) 0; }

.rm-book{ background:var(--paper); border:1px solid var(--line); border-top:3px solid var(--red); padding:var(--sp-m); }
.rm-book__head{ padding-bottom:8px; margin-bottom:16px; border-bottom:1px solid var(--line); }
.rm-book__price{ margin:0 0 16px; font-family:var(--fd); font-weight:800; text-transform:uppercase; font-size:2rem; line-height:1; color:var(--red); }
.rm-book__price small{ display:block; margin-top:8px; font-family:var(--fm); font-weight:400; font-size:.62rem; letter-spacing:.08em; text-transform:none; color:var(--tx-3); }
.rm-book__price--ask{ font-size:1.35rem; color:var(--tx); }
.rm-book__lead{ margin:0 0 16px; font-size:.92rem; line-height:1.55; color:var(--tx-2); }
.rm-book__meta{ list-style:none; margin:0 0 16px; padding:0; }
.rm-book__meta li{ display:flex; justify-content:space-between; align-items:baseline; gap:16px; padding:8px 0; border-bottom:1px solid var(--line); }
.rm-book__meta span{ font-family:var(--fm); font-size:.62rem; letter-spacing:.08em; text-transform:uppercase; color:var(--tx-3); }
.rm-book__meta b{ font-weight:500; font-size:.92rem; text-align:right; }
.rm-book .rm-btn{ margin-bottom:8px; }
.rm-book__fine{ margin:12px 0 0; font-size:.78rem; line-height:1.5; color:var(--tx-3); }

/* gallery */
.rm-gal{ margin-top:var(--sp-l); padding-top:var(--sp-m); border-top:1px solid var(--line); }
.rm-gal__grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin-top:16px; }
@media (min-width:700px){ .rm-gal__grid{ grid-template-columns:repeat(4,1fr); } }
.rm-gal__i img{ width:100%; aspect-ratio:1; object-fit:cover; transition:opacity .2s; }
.rm-gal__i:hover img{ opacity:.82; }

/* see also */
.rm-also{ margin-top:var(--sp-2xl); padding-top:var(--sp-m); border-top:1px solid var(--line); }
.rm-also__head{ display:flex; align-items:center; gap:16px; margin-bottom:20px; }
.rm-also__grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
@media (min-width:760px){ .rm-also__grid{ grid-template-columns:repeat(4,1fr); } }
.rm-also__media{ display:block; overflow:hidden; background:var(--fog-2); }
.rm-also__media img{ width:100%; aspect-ratio:4 / 3; object-fit:cover; transition:transform .5s var(--ease); }
.rm-also__item:hover img{ transform:scale(1.04); }
.rm-also__title{ display:block; margin-top:8px; font-family:var(--fd); font-weight:700; text-transform:uppercase; font-size:.98rem; line-height:1.14; transition:color .16s; }
.rm-also__item:hover .rm-also__title{ color:var(--red-tx); }
.rm-also__meta{ display:block; margin-top:8px; font-family:var(--fm); font-size:.68rem; color:var(--red-tx); }

/* ------------------------------------------------------------------ prose */
.rm-prose{ max-width:72ch; font-size:1.05rem; line-height:1.72; color:#22262A; }
.rm-prose > *:first-child{ margin-top:0; }
.rm-prose h2{ margin:1.9em 0 .5em; font-family:var(--fd); font-weight:800; text-transform:uppercase; font-size:clamp(1.4rem,2.3vw,1.95rem); line-height:1.06; color:var(--tx); }
.rm-prose h3{ margin:1.7em 0 .45em; font-family:var(--fd); font-weight:700; text-transform:uppercase; font-size:1.22rem; line-height:1.15; color:var(--tx); }
.rm-prose h4{ margin:1.5em 0 .4em; font-family:var(--fd); font-weight:700; font-size:1.08rem; }
.rm-prose p{ margin:0 0 1.1em; }
.rm-prose a{ color:var(--red-tx); text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1px; }
.rm-prose ul,.rm-prose ol{ margin:0 0 1.2em; padding:0; list-style:none; }
.rm-prose ul li{ position:relative; padding-left:24px; margin-bottom:.5em; }
.rm-prose ul li::before{ content:""; position:absolute; left:0; top:.66em; width:10px; height:2px; background:var(--red); }
.rm-prose ol{ counter-reset:pr; }
.rm-prose ol li{ counter-increment:pr; position:relative; padding-left:32px; margin-bottom:.5em; }
.rm-prose ol li::before{ content:counter(pr, decimal-leading-zero); position:absolute; left:0; top:.28em; font-family:var(--fm); font-size:.72rem; color:var(--red-tx); }
.rm-prose blockquote{ margin:1.6em 0; padding:2px 0 2px 24px; border-left:3px solid var(--red); font-size:1.08rem; }
.rm-prose blockquote p:last-child{ margin-bottom:0; }
.rm-prose figure{ margin:1.8em 0; }
.rm-prose figcaption{ margin-top:8px; font-family:var(--fm); font-size:.66rem; letter-spacing:.07em; text-transform:uppercase; color:var(--tx-3); }
.rm-prose table{ width:100%; margin:1.5em 0; font-size:.94rem; }
.rm-prose th,.rm-prose td{ padding:8px 12px 8px 0; text-align:left; border-bottom:1px solid var(--line); }
.rm-prose th{ font-family:var(--fm); font-weight:400; font-size:.64rem; letter-spacing:.08em; text-transform:uppercase; color:var(--tx-3); }
.rm-prose hr{ margin:2.2em 0; border:0; border-top:1px solid var(--line); }
.rm-prose--quote{ font-size:1.15rem; }
.rm-read .rm-prose{ max-width:none; }

/* --- illustrated list -------------------------------------------------
   «Что вы посетите» used to be a two-column table. Table layout squeezed the
   photo column to about forty pixels, so every thumbnail read as a smudge.
   The markup is now a list whose items carry a photo; the float keeps long
   descriptions flowing under the picture instead of leaving a hole. */
.rm-prose li:has(> img){
  padding-left:0;
  margin:0;
  padding-block:var(--sp-s);
  border-top:1px solid var(--line);
  overflow:hidden;                       /* contains the float */
}
.rm-prose li:has(> img)::before{ content:none; }
.rm-prose ul:has(> li > img){
  margin-block:1.6em;
  border-bottom:1px solid var(--line);
}
/* One plate size for every inline thumbnail — in a list item, or leading the
   paragraph it illustrates. The sources are a mix of 180×128 and 128×180
   scans; left at their natural size a portrait one is twice as tall as its
   caption and tears a hole in the column. */
.rm-prose li > img,
.rm-prose p > img:first-child,
.rm-prose p > a:first-child > img{
  float:left;
  width:200px;
  height:140px;
  object-fit:cover;
  margin:4px var(--sp-m) var(--sp-2xs) 0;
  background:var(--fog-2);
}
.rm-prose p:has(> img:first-child),
.rm-prose p:has(> a:first-child > img){ overflow:hidden; }   /* contains the float */

/* A photo that stands on its own is a figure, and keeps its natural size. */
.rm-prose figure:has(> img),
.rm-prose figure:has(> a > img){ margin:1.6em 0; }
.rm-prose figure > img,
.rm-prose figure > a > img{ float:none; width:auto; height:auto; margin:0; }
/* overflow keeps each paragraph in its own column beside the plate instead of
   letting the last line curl underneath it */
.rm-prose li:has(> img) > p{ margin:0 0 .7em; overflow:hidden; }
.rm-prose li:has(> img) > p:last-child{ margin-bottom:0; }
@media (max-width:640px){
  .rm-prose li > img,
  .rm-prose p > img:first-child,
  .rm-prose p > a:first-child > img{
    float:none; width:100%; height:auto; aspect-ratio:10/7; margin:0 0 var(--sp-xs);
  }
}
/* A photo left inside a real table must not be squeezed to nothing either. */
.rm-prose td img{ min-width:min(100%, 150px); }

/* --- a review quoted inside an article --------------------------------
   Same voice as the review wall: a red rule on top, the quotation set apart
   from the body copy, attribution in the monospaced label face. */
.rm-prose figure:has(> blockquote){
  margin:1.6em 0;
  padding:var(--sp-s) var(--sp-m) var(--sp-m);
  background:var(--fog);
  border-top:2px solid var(--red);
}
.rm-prose figure:has(> blockquote) + figure:has(> blockquote){ margin-top:var(--sp-s); }
.rm-prose figure > blockquote{
  margin:0;
  padding:0;
  border-left:0;
  font-size:1rem;
  line-height:1.7;
}
.rm-prose figure > blockquote p{ margin:0 0 .8em; }
.rm-prose figure > blockquote p:last-child{ margin-bottom:0; }
.rm-prose figure > blockquote + figcaption{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:4px 16px;
  margin-top:var(--sp-s);
  padding-top:12px;
  border-top:1px solid var(--line-2);
  font-size:.66rem;
  letter-spacing:.08em;
}
.rm-prose figure > blockquote + figcaption strong{ font-weight:500; color:var(--tx); }

/* ----------------------------------------------------------------- pager
   Rendered by rm_pager(), which prints nothing at all when there is only one
   page — the empty <div class="rm-pager"> the templates used to leave behind
   on «Услуги» was silently spending 52px of section padding on nothing. */
.rm-pager{ margin-top:var(--sp-l); }
.rm-pager__links,.rm-pager .wp-pagenavi,.rm-pager .nav-links{
  display:flex; flex-wrap:wrap; gap:var(--sp-2xs); align-items:center; justify-content:center;
}
.rm-pager a,.rm-pager .current,.rm-pager .pages,.rm-pager .extend,.rm-pager .page-numbers{
  display:grid; place-items:center; min-width:42px; height:42px; padding:0 var(--sp-xs);
  border:1px solid var(--line); font-family:var(--fm); font-size:.78rem; color:var(--tx-2);
  transition:background .16s, border-color .16s, color .16s;
}
.rm-pager a:hover{ background:var(--ink); border-color:var(--ink); color:#fff; }
.rm-pager .current{ background:var(--red); border-color:var(--red); color:#fff; }
.rm-pager .pages,.rm-pager .extend{ border-color:transparent; }
.rm-sec--fog .rm-pager a,.rm-sec--fog .rm-pager .page-numbers{ border-color:var(--line-2); }

/* ------------------------------------------------------- ajax paged block
   The list swaps in place; the page around it never moves. Only the list
   dims while a page is in flight — a spinner would be a bigger event than
   the thing it describes, and the rows are back within a frame or two. */
.rm-ajax{ position:relative; }
.rm-ajax [data-ajax-list]{ transition:opacity .18s var(--ease); }
.rm-ajax.is-loading [data-ajax-list]{ opacity:.4; pointer-events:none; }
.rm-ajax [data-ajax-list]:focus{ outline:none; }
.rm-ajax.is-loading .rm-pager{ pointer-events:none; }

/* -------------------------------------------------------------------- 404 */
.rm-404{ padding-block:var(--sp-3xl); }
.rm-404__doors{ margin-top:var(--sp-l); border-top:2px solid var(--ink); }
.rm-404__door{ display:grid; grid-template-columns:44px minmax(0,1fr) 24px; gap:4px 16px; align-items:center; padding:16px 0; border-bottom:1px solid var(--line); }
.rm-404__n{ grid-column:1; grid-row:1 / 3; align-self:start; padding-top:.35em; font-family:var(--fm); font-size:.68rem; color:var(--tx-3); }
.rm-404__t{ grid-column:2; grid-row:1; font-family:var(--fd); font-weight:700; text-transform:uppercase; font-size:1.2rem; transition:color .16s; }
.rm-404__d{ grid-column:2; grid-row:2; font-size:.9rem; color:var(--tx-2); }
.rm-404__door > .rm-ico{ grid-column:3; grid-row:1 / 3; color:var(--tx-3); transition:transform .2s var(--ease), color .16s; }
.rm-404__door:hover .rm-404__t{ color:var(--red-tx); }
.rm-404__door:hover > .rm-ico{ color:var(--red); transform:translateX(4px); }
.rm-404__act{ display:flex; flex-wrap:wrap; gap:12px; margin-top:32px; }

/* ------------------------------------------------------------- mobile bar */
.rm-bar{
  position:fixed; left:0; right:0; bottom:0; z-index:55; display:none;
  align-items:center; gap:16px; background:var(--paper); border-top:1px solid var(--line-2);
  padding:10px var(--gut) calc(10px + env(safe-area-inset-bottom));
}
@media (max-width:999px){ .rm-bar{ display:flex; } }
.rm-bar__price{ flex:1; min-width:0; }
.rm-bar__price b{ display:block; font-family:var(--fd); font-weight:800; text-transform:uppercase; font-size:1.22rem; line-height:1; color:var(--red); }
.rm-bar__price span{ display:block; margin-top:4px; font-family:var(--fm); font-size:.58rem; letter-spacing:.08em; text-transform:uppercase; color:var(--tx-3); }
body.rm-has-bar{ padding-bottom:80px; }
@media (min-width:1000px){ body.rm-has-bar{ padding-bottom:0; } }

/* ----------------------------------------------------------------- footer */
.rm-foot{ background:var(--ink-deep); color:var(--on-2); border-top:1px solid var(--line-on); padding-block:var(--sp-2xl) var(--sp-l); }
.rm-foot .rm-label{ color:#8B939A; }
.rm-foot__grid{ display:grid; gap:var(--sp-l); }
@media (min-width:700px){ .rm-foot__grid{ grid-template-columns:repeat(2,1fr); gap:var(--sp-l); } }
@media (min-width:1080px){ .rm-foot__grid{ grid-template-columns:1.7fr 1fr 1fr 1fr 1.15fr; } }
.rm-mark--foot{ width:148px; }
.rm-foot__brand p{ margin:var(--sp-s) 0 0; max-width:34ch; font-size:.92rem; line-height:1.6; }
.rm-foot__chan{ display:flex; gap:var(--sp-2xs); margin-top:var(--sp-m); }
.rm-foot__chan a{ width:38px; height:38px; display:grid; place-items:center; border:1px solid var(--line-on); color:var(--on); transition:background .18s, border-color .18s, color .18s; }
.rm-foot__chan a:hover{ background:var(--red); border-color:var(--red); color:#fff; }
.rm-foot__col h2{ font-size:inherit; font-weight:inherit; }
.rm-foot__col ul{ list-style:none; margin:var(--sp-s) 0 0; padding:0; display:grid; gap:8px; font-size:.93rem; }
.rm-foot__col a:hover{ color:#fff; }
.rm-foot__tel{ display:block; margin-top:var(--sp-s); font-family:var(--fd); font-weight:700; font-size:1.3rem; color:#fff; }
.rm-foot__tel:hover{ color:var(--red-on); }
.rm-foot__line ul{ margin-top:var(--sp-xs); }
.rm-foot__base{
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px 28px;
  margin-top:var(--sp-xl); padding-top:var(--sp-m); border-top:1px solid var(--line-on);
  font-family:var(--fm); font-size:.62rem; letter-spacing:.07em; text-transform:uppercase; color:#818990;
}
.rm-foot__legal{ display:flex; flex-wrap:wrap; gap:12px 24px; }
.rm-foot__legal a:hover{ color:#fff; }

/* ---------------------------------------------------------------- to top */
.rm-top{
  position:fixed; right:18px; bottom:18px; z-index:50; width:44px; height:44px;
  display:grid; place-items:center; background:var(--ink); color:#fff;
  opacity:0; visibility:hidden; transform:translateY(8px);
  transition:opacity .2s, visibility .2s, transform .2s var(--ease), background .18s;
}
.rm-top .rm-ico{ transform:rotate(180deg); width:20px; height:20px; }
.rm-top:hover{ background:var(--red); }
.rm-top.is-on{ opacity:1; visibility:visible; transform:none; }
.rm-has-bar .rm-top{ bottom:86px; }
@media (min-width:1000px){ .rm-has-bar .rm-top{ bottom:18px; } }

/* --------------------------------------------------------- no-JS fallback
   Without JS the sheet cannot open, so the burger is meaningless — but every
   navigation target is still reachable from the footer sitemap. */
html:not(.js) .rm-burger{ display:none; }

/* rating inside the spec band and the booking slip */
.rm-spec__i--rate dd{ font-family:var(--ft); font-weight:400; text-transform:none; }
.rm-book__rate{ margin:-6px 0 16px; }

/* the fleet is a full section of its own, no longer a strip under the table */
.rm-fleet-sec + .rm-sec--fog{ border-top:0; }
