:root{
    --paper:#F1E7D8;
    --paper-2:#E9DCC8;
    --paper-3:#DFCEB5;
    --card:#F8F1E6;
    --ink:#3B3128;
    --ink-soft:#66574A;
    --ink-faint:#7F6E5B;
    --brass:#B89468;
    --brass-strong:#7E5D35;
    --bottle:#7F8F72;
    --brick:#B07D6A;
    --line:#DACBB3;
    --shadow: 0 1px 0 rgba(59,49,40,.05);
    --seal-text: rgba(59,49,40,.5);
  }
  /* Светлая тема — по умолчанию для всех. Тёмная включается только кнопкой
     в шапке; настройка системы её больше не навязывает. */
  :root[data-theme="dark"]{
    --paper:#1E1913; --paper-2:#262017; --paper-3:#2F281D; --card:#231D15;
    --ink:#EFE4D2; --ink-soft:#CDBBA2; --ink-faint:#A3927C;
    --brass:#C9A578; --brass-strong:#E3C08E;
    --bottle:#9DAE90; --brick:#D39A85; --line:#3E3527;
    --shadow: 0 1px 0 rgba(0,0,0,.3);
    --seal-text: rgba(239,228,210,.55);
  }

  *{ box-sizing:border-box; }
  body{ background:var(--paper); color:var(--ink); font-family:"PT Sans", -apple-system, sans-serif; }
  h1,h2,h3,.display{ font-family:"Alegreya", Georgia, serif; font-weight:600; text-wrap:balance; margin:0; }
  .eyebrow{ font-family:"Alegreya SC","Alegreya",serif; font-weight:600; letter-spacing:.14em; text-transform:uppercase; font-size:.78rem; color:var(--brass-strong); }
  a{ color:inherit; }
  img{ max-width:100%; }
  .wrap{ max-width:1080px; margin-inline:auto; padding-inline:20px; }
  button{ font:inherit; }

  /* ---------- Header + tabs ---------- */
  header.site{
    position:sticky; top:env(safe-area-inset-top,0px); z-index:50;
    background:var(--paper);
    backdrop-filter: blur(6px);
    border-bottom:1px solid var(--line);
  }
  .nav{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding-block:14px 8px; }
  .brand{ display:flex; align-items:center; gap:10px; font-family:"Alegreya SC", serif; font-size:1.05rem; letter-spacing:.06em; text-decoration:none; background:none; border:none; cursor:pointer; padding:0; color:var(--ink); }
  .brand .mark{ width:30px; height:30px; border-radius:50%; border:1.4px solid var(--brass); display:grid; place-items:center; font-family:"Alegreya", serif; font-weight:700; font-size:.85rem; color:var(--brass-strong); flex:none; }
  .phone-quick a{ text-decoration:none; font-size:.88rem; color:var(--ink-soft); border-bottom:1px solid var(--line); }
  .phone-quick a:hover{ color:var(--brass-strong); border-color:var(--brass); }

  .tabbar{ position:relative; display:flex; gap:2px; overflow-x:auto; padding-block:2px 12px; scrollbar-width:none; }
  .tabbar::-webkit-scrollbar{ display:none; }
  .tab-btn{ flex:none; background:none; border:none; font-family:"PT Sans",sans-serif; font-weight:700; font-size:.86rem; color:var(--ink-soft); padding:8px 14px; cursor:pointer; white-space:nowrap; border-radius:2px; transition:color .15s ease; }
  .tab-btn:hover{ color:var(--ink); }
  .tab-btn.active{ color:var(--brass-strong); }
  .tab-indicator{ position:absolute; left:0; top:auto; bottom:9px; height:2px; background:var(--brass); border-radius:2px; will-change:transform; transition: transform .3s cubic-bezier(.4,0,.2,1), width .3s cubic-bezier(.4,0,.2,1); }

  hr.hair{ border:none; border-top:1px solid var(--line); margin:0; }

  /* ---------- Views ---------- */
  .view{ display:none; }
  .view.active{ display:block; }
  @media (prefers-reduced-motion:no-preference){
    .view.active{ animation: view-in .35s cubic-bezier(.2,.7,.3,1) both; }
  }
  @keyframes view-in{ from{ opacity:0; transform:translateY(10px);} to{ opacity:1; transform:translateY(0);} }

  /* ---------- Hero ---------- */
  .hero{ padding-block:48px 40px; display:grid; gap:22px; }
  .hero h1{ font-size:clamp(2.1rem, 5vw, 3.6rem); line-height:1.06; max-width:20ch; }
  .hero .lede{ max-width:56ch; font-size:1.08rem; line-height:1.6; color:var(--ink-soft); }
  .hero-row{ display:flex; gap:14px; flex-wrap:wrap; align-items:center; margin-top:6px; }
  .btn{ display:inline-flex; align-items:center; gap:8px; padding:11px 18px; border-radius:2px; border:1px solid var(--brass-strong); background:var(--brass-strong); color:var(--card); font-family:"PT Sans", sans-serif; font-weight:700; font-size:.92rem; text-decoration:none; cursor:pointer; transition:transform .15s ease, background .15s ease, box-shadow .15s ease; position:relative; overflow:hidden; border-radius:999px; padding:12px 22px; }

  /* ---------- Ink-stamp ripple (buttons + tabs) ---------- */
  .tab-btn{ position:relative; overflow:hidden; }
  .ink-ripple{ position:absolute; border-radius:50%; background:rgba(0,0,0,.16); transform:scale(0); opacity:0; pointer-events:none; }
  @media (prefers-reduced-motion:no-preference){ .ink-ripple.go{ animation: ink-spread .6s ease-out forwards; } }
  @keyframes ink-spread{ 0%{ transform:scale(0); opacity:.55; } 100%{ transform:scale(1); opacity:0; } }

  /* ---------- Hero entrance ---------- */
  @media (prefers-reduced-motion:no-preference){
    .hero-anim > *{ animation: hero-rise .8s cubic-bezier(.16,1,.3,1) both; }
    .hero-anim > *:nth-child(1){ animation-delay:.02s; }
    .hero-anim > *:nth-child(2){ animation-delay:.1s; }
    .hero-anim > *:nth-child(3){ animation-delay:.19s; }
    .hero-anim > *:nth-child(4){ animation-delay:.28s; }
    .hero-anim > *:nth-child(5){ animation-delay:.4s; }
    .skyline g{ transition: transform .25s ease-out; }
  }
  @keyframes hero-rise{ from{ opacity:0; transform:translateY(16px); } to{ opacity:1; transform:translateY(0); } }
  .btn:hover{ background:var(--ink); border-color:var(--ink); color:var(--card); }
  .btn.ghost{ background:transparent; color:var(--ink); border-color:var(--line); }
  .btn.ghost:hover{ background:transparent; border-color:var(--brass-strong); color:var(--brass-strong); }
  .btn:active{ transform:scale(.96); }

  .skyline{ width:100%; height:auto; display:block; }

  /* ---------- About page ---------- */
  .about{ padding-block:48px; }
  .about .grid{ display:grid; grid-template-columns:1.3fr 1fr; gap:48px; }
  .about h2{ font-size:clamp(1.7rem,3.6vw,2.3rem); }
  .about p{ line-height:1.75; color:var(--ink-soft); margin:0 0 14px; max-width:62ch; }
  .about p:last-child{ margin-bottom:0; }
  .facts{ display:grid; grid-template-columns:1fr 1fr; gap:14px; align-content:start; }
  .fact{ background:var(--card); border:1px solid var(--line); border-radius:16px; padding:18px; }
  .fact .num{ font-family:"Alegreya", serif; font-size:1.7rem; font-weight:700; color:var(--brass-strong); display:block; font-variant-numeric:tabular-nums; }
  .fact .cap{ font-size:.84rem; color:var(--ink-faint); line-height:1.4; }
  .about-cta{ padding-block:0 60px; }

  /* ---------- Home: museum tiles + teaser ---------- */
  .home-museums{ padding-block:28px 56px; }
  .section-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:16px; flex-wrap:wrap; margin-bottom:22px; }
  .section-head h2{ font-size:clamp(1.6rem,3.4vw,2.1rem); margin-top:6px; }
  .more-link{ font-weight:700; font-size:.9rem; color:var(--brass-strong); text-decoration:none; }
  .more-link:hover{ color:var(--ink); }
  .tiles{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
  @media (max-width:900px){ .tiles{ grid-template-columns:1fr 1fr; } }
  @media (max-width:460px){ .tiles{ grid-template-columns:1fr; } }
  .tile{ display:flex; flex-direction:column; gap:10px; text-align:left; background:var(--card); border:1px solid var(--line); border-radius:18px; padding:20px 18px 18px; cursor:pointer; color:inherit; font:inherit; box-shadow:var(--shadow); }
  .tile-mono{ width:48px; height:48px; border-radius:50%; border:1.4px solid var(--accent, var(--brass)); display:grid; place-items:center; font-family:"Alegreya", serif; font-weight:700; font-size:1.15rem; color:var(--accent, var(--brass)); overflow:hidden; }
  .tile-mono img{ width:100%; height:100%; object-fit:cover; }
  .tile h3{ font-size:1.08rem; line-height:1.25; }
  .tile .tagline{ font-size:.86rem; }
  .tile .go{ margin-top:auto; padding-top:6px; font-size:.84rem; font-weight:700; color:var(--brass-strong); }
  @media (prefers-reduced-motion:no-preference){
    .tile{ transition: transform .22s cubic-bezier(.2,.8,.3,1), box-shadow .22s ease, border-color .22s ease; }
    .tile:hover{ transform:translateY(-4px); box-shadow:0 16px 30px -18px rgba(59,49,40,.45); border-color:var(--brass); }
    .tile .go{ transition:transform .2s ease; }
    .tile:hover .go{ transform:translateX(4px); }
  }
  .tagline{ font-style:italic; color:var(--ink-soft); font-size:.92rem; margin-top:2px; }

  .home-teaser{ background:var(--paper-2); border-block:1px solid var(--line); }
  .teaser-inner{ display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap; padding-block:34px; }
  .teaser-text{ font-family:"Alegreya", Georgia, serif; font-size:1.2rem; line-height:1.5; max-width:52ch; margin:6px 0 0; }

  /* ---------- Generic page head + contacts ---------- */
  .page-head{ padding-block:44px 8px; }
  .page-head h2{ font-size:clamp(1.7rem,3.6vw,2.3rem); margin:8px 0 14px; }
  .page-head .sub{ color:var(--ink-soft); max-width:66ch; line-height:1.65; margin:0; }
  .inline-link{ color:var(--brass-strong); font-weight:700; text-decoration:none; white-space:nowrap; }
  .inline-link:hover{ color:var(--ink); }
  .contact-list{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-block:30px 60px; }
  @media (max-width:720px){ .contact-list{ grid-template-columns:1fr; } .about .grid{ grid-template-columns:1fr; } .detail-hero{ grid-template-columns:1fr !important; } }
  .contact-card{ background:var(--card); border:1px solid var(--line); border-radius:18px; padding:20px 22px; display:grid; gap:10px; }
  .contact-card h3{ font-size:1.12rem; line-height:1.25; }
  .contact-card dl{ margin:0; display:grid; grid-template-columns:auto 1fr; gap:6px 14px; font-size:.9rem; }
  .contact-card dt{ color:var(--ink-faint); font-size:.74rem; text-transform:uppercase; letter-spacing:.06em; padding-top:2px; }
  .contact-card dd{ margin:0; color:var(--ink); }
  .contact-card dd a{ color:var(--brass-strong); text-decoration:none; }
  .contact-card dd a:hover{ color:var(--ink); text-decoration:underline; }
  .contact-card .detail-link{ justify-self:start; background:none; border:none; padding:0; font:inherit; font-size:.86rem; font-weight:700; color:var(--brass-strong); cursor:pointer; }
  .contact-card .detail-link:hover{ color:var(--ink); }

  /* ---------- Museum pager ---------- */
  .museum-pager{ display:grid; grid-template-columns:1fr 1fr; gap:14px; padding-block:34px 10px; }
  .pager-btn{ display:flex; flex-direction:column; gap:4px; background:var(--card); border:1px solid var(--line); border-radius:16px; padding:14px 18px; cursor:pointer; color:inherit; font:inherit; text-align:left; }
  .pager-btn.next{ text-align:right; align-items:flex-end; }
  .pager-btn small{ font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; color:var(--ink-faint); }
  .pager-btn span{ font-family:"Alegreya", serif; font-weight:600; font-size:1.02rem; line-height:1.25; }
  .pager-btn:hover{ border-color:var(--brass); }
  .pager-btn:hover span{ color:var(--brass-strong); }

  /* ---------- Museums index page ---------- */
  .museums-index-head{ padding-block:44px 8px; }
  .museums-index-head h2{ font-size:1.9rem; margin:8px 0 14px; }
  .museums-index-head .sub{ color:var(--ink-soft); max-width:68ch; line-height:1.65; margin-bottom:0; }
  .index-list{ border-top:1px solid var(--line); margin-top:30px; margin-bottom:50px; }
  .index-row{
    display:grid; grid-template-columns:44px 56px 1fr 28px; align-items:center; gap:20px;
    width:100%; text-align:left; background:none; border:none; border-bottom:1px solid var(--line);
    padding:24px 6px; cursor:pointer; color:inherit;
  }
  .index-row:hover{ background:var(--paper-2); }
  .index-num{ font-family:"Alegreya", serif; font-weight:700; color:var(--brass-strong); font-size:1.05rem; font-variant-numeric:tabular-nums; }
  .index-mono{ width:52px; height:52px; border-radius:50%; border:1.4px solid var(--accent, var(--brass)); display:grid; place-items:center; font-family:"Alegreya", serif; font-weight:700; font-size:1.2rem; color:var(--accent, var(--brass)); flex:none; }
  .index-text h3{ font-size:1.24rem; line-height:1.25; }
  .index-text .tagline{ font-style:italic; color:var(--ink-soft); font-size:.92rem; margin-top:3px; }
  .index-text .addr-line{ font-size:.82rem; color:var(--ink-faint); margin-top:6px; }
  .index-arrow{ font-size:1.3rem; color:var(--ink-faint); justify-self:end; }
  @media (prefers-reduced-motion:no-preference){
    .index-arrow{ transition:transform .18s ease, color .18s ease; }
    .index-row:hover .index-arrow{ transform:translateX(5px); color:var(--brass-strong); }
    .index-mono{ transition:transform .3s cubic-bezier(.34,1.56,.64,1); }
    .index-row:hover .index-mono{ transform:scale(1.12) rotate(-7deg); }
  }
  @media (max-width:600px){
    .index-row{ grid-template-columns:32px 44px 1fr; }
    .index-arrow{ display:none; }
  }

  /* ---------- Detail view ---------- */
  .back-link{ display:inline-flex; align-items:center; gap:6px; background:none; border:none; padding:20px 0 0; font-size:.86rem; color:var(--ink-faint); cursor:pointer; }
  .back-link:hover{ color:var(--brass-strong); }
  .detail-hero{ padding-block:26px 34px; display:grid; grid-template-columns:.85fr 1.15fr; gap:40px; align-items:center; border-bottom:1px solid var(--line); }
  .detail-seal{ aspect-ratio:1; max-width:260px; width:100%; margin-inline:auto; display:grid; place-items:center; background:var(--card); border:1px solid var(--line); position:relative; overflow:hidden; }
  .detail-seal svg{ width:76%; height:76%; }
  .detail-seal .ring{ transform-origin:100px 100px; }
  @media (prefers-reduced-motion:no-preference){ .detail-seal .ring{ animation: slow-spin 100s linear infinite; } }
  @media (prefers-reduced-motion:no-preference){
    .detail-seal.stamp-in{ animation: stamp-press .55s cubic-bezier(.34,1.56,.64,1) both; }
  }
  @keyframes stamp-press{ 0%{ transform:scale(1.4) rotate(-12deg); opacity:0; } 55%{ transform:scale(.95) rotate(3deg); opacity:1; } 100%{ transform:scale(1) rotate(0deg); opacity:1; } }
  .seal-media{ width:100%; height:100%; display:grid; place-items:center; }
  .seal-media img{ width:100%; height:100%; object-fit:cover; display:block; }
  .admin-photo-btn{ position:absolute; left:10px; bottom:10px; background:var(--brass-strong); color:var(--card); font-size:.72rem; font-weight:700; padding:7px 12px; border-radius:999px; cursor:pointer; letter-spacing:.02em; }
  .admin-photo-btn:hover{ background:var(--ink); }
  .admin-photo-status{ position:absolute; right:10px; top:10px; font-size:.68rem; color:var(--ink-soft); background:var(--paper); padding:3px 8px; border:1px solid var(--line); }
  @keyframes slow-spin{ to{ transform:rotate(360deg); } }
  .seal-cap-lg{ position:absolute; bottom:-22px; left:0; right:0; text-align:center; font-size:.74rem; font-style:italic; color:var(--ink-faint); }

  .detail-tagline{ font-style:italic; color:var(--ink-soft); font-size:1.05rem; margin-top:6px; }
  .detail-title{ font-size:clamp(1.7rem,4vw,2.5rem); line-height:1.08; }

  .rating-badge{ margin-top:14px; display:inline-flex; align-items:center; gap:12px; }
  .stars-anim{ position:relative; display:inline-block; font-size:1.5rem; line-height:1; letter-spacing:3px; }
  .stars-anim .bg{ color:var(--line); }
  .stars-anim .fg{ position:absolute; inset:0 auto 0 0; overflow:hidden; width:0; color:var(--brass-strong); white-space:nowrap; }
  @media (prefers-reduced-motion:no-preference){ .stars-anim.animate .fg{ transition:width 1.1s cubic-bezier(.16,1,.3,1); } }
  .rating-badge .rb-text{ font-size:.86rem; color:var(--ink-faint); line-height:1.4; }
  .rating-badge .rb-text b{ font-family:"Alegreya",serif; font-size:1.1rem; color:var(--ink); }

  .detail-desc{ line-height:1.7; color:var(--ink-soft); font-size:1rem; padding-block:30px; max-width:70ch; }
  .desc-placeholder{ margin-block:30px; max-width:70ch; border:1px dashed var(--line); padding:18px 20px; color:var(--ink-faint); font-style:italic; font-size:.95rem; }

  .info-strip{ display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
  @media (max-width:720px){ .info-strip{ grid-template-columns:1fr; } }
  .info-cell{ padding:18px 20px; border-right:1px solid var(--line); }
  .info-cell:last-child{ border-right:none; }
  .info-cell b{ display:block; font-size:.72rem; text-transform:uppercase; letter-spacing:.07em; color:var(--ink-faint); font-weight:400; margin-bottom:4px; }
  .info-cell span, .info-cell a{ font-size:.95rem; text-decoration:none; }
  .info-cell a:hover{ color:var(--brass-strong); }

  /* ---------- Ticket calculator ---------- */
  .ticket-section{ padding-block:44px; }
  .ticket-section h2{ font-size:1.5rem; margin-bottom:18px; }
  .ticket-box{ border:1px solid var(--line); background:var(--card); padding:26px; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:28px; }
  @media (max-width:640px){ .ticket-box{ grid-template-columns:1fr; text-align:center; } }
  .ticket-label{ font-size:.8rem; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.06em; margin-bottom:6px; }
  .stepper{ display:inline-flex; align-items:center; gap:16px; }
  .stepper button{ width:38px; height:38px; border-radius:50%; border:1px solid var(--brass); background:transparent; color:var(--brass-strong); font-size:1.25rem; cursor:pointer; transition:transform .15s ease, background .15s ease, color .15s ease; line-height:1; }
  .stepper button:hover{ background:var(--brass); color:var(--paper); }
  .stepper button:active{ transform:scale(.88); }
  .stepper .qty{ font-family:"Alegreya",serif; font-weight:700; font-size:1.5rem; min-width:2.2ch; text-align:center; font-variant-numeric:tabular-nums; }
  .ticket-total-wrap{ text-align:right; }
  @media (max-width:640px){ .ticket-total-wrap{ text-align:center; } }
  .ticket-total{ font-family:"Alegreya",serif; font-size:2.1rem; font-weight:700; color:var(--brass-strong); font-variant-numeric:tabular-nums; }
  .ticket-total-cap{ font-size:.76rem; color:var(--ink-faint); }
  .ticket-unavail{ font-size:.92rem; color:var(--ink-soft); }

  /* ---------- Reviews ---------- */
  .reviews-section{ padding-block:10px 60px; }
  .reviews-section h2{ font-size:1.5rem; margin-bottom:6px; }
  .reviews-section .sub{ color:var(--ink-soft); font-size:.9rem; margin-bottom:26px; }
  .reviews-grid{ display:grid; grid-template-columns:1fr 1fr; gap:32px; align-items:start; }
  @media (max-width:760px){ .reviews-grid{ grid-template-columns:1fr; } }
  .reviews-list{ display:grid; gap:10px; }
  .review{ background:var(--paper-2); border:1px solid var(--line); padding:12px 14px; font-size:.88rem; }
  .review.new{ animation: review-in .45s cubic-bezier(.2,.8,.3,1) both; }
  @keyframes review-in{ from{ opacity:0; transform:translateY(-8px) scale(.98); } to{ opacity:1; transform:translateY(0) scale(1); } }
  .review .who{ font-weight:700; display:flex; justify-content:space-between; gap:8px; }
  .review .stars{ color:var(--brass-strong); letter-spacing:1px; }
  .review p{ margin:4px 0 0; color:var(--ink-soft); line-height:1.5; }
  .review time{ font-size:.72rem; color:var(--ink-faint); }
  .empty-note{ font-size:.88rem; color:var(--ink-faint); font-style:italic; }

  form.review-form{ display:grid; gap:12px; background:var(--card); border:1px solid var(--line); padding:22px; position:relative; overflow:hidden; }
  .star-picker{ display:flex; gap:6px; font-size:1.7rem; line-height:1; }
  .star-picker button{ background:none; border:none; cursor:pointer; color:var(--line); padding:0; transition:transform .18s cubic-bezier(.34,1.56,.64,1), color .15s ease; }
  .star-picker button.on{ color:var(--brass-strong); }
  .star-picker button:hover, .star-picker button:focus-visible{ color:var(--brass-strong); transform:scale(1.25) rotate(-6deg); }
  form.review-form input[type=text], form.review-form textarea{ width:100%; font-family:"PT Sans", sans-serif; font-size:.92rem; padding:10px 11px; border:1px solid var(--line); background:var(--paper); color:var(--ink); }
  form.review-form input[type=text]:focus, form.review-form textarea:focus{ outline:2px solid var(--brass); outline-offset:1px; }
  form.review-form textarea{ min-height:70px; resize:vertical; }
  form.review-form .row-btn{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
  .demo-note{ font-size:.76rem; color:var(--ink-faint); line-height:1.5; }

  .success-pop{ display:inline-flex; align-items:center; gap:6px; opacity:0; transform:scale(.85) translateY(4px); transition:opacity .28s ease, transform .28s cubic-bezier(.34,1.56,.64,1); color:var(--bottle); font-weight:700; font-size:.88rem; }
  .success-pop.show{ opacity:1; transform:scale(1) translateY(0); }
  .success-pop .tick{ display:inline-block; }

  .confetti-piece{ position:fixed; width:6px; height:10px; pointer-events:none; z-index:90; border-radius:1px; }
  @media (prefers-reduced-motion:no-preference){
    .confetti-piece{ animation: confetti-fall .9s ease-out forwards; }
  }
  @keyframes confetti-fall{ 0%{ transform:translate(0,0) rotate(0deg); opacity:1; } 100%{ transform:translate(var(--dx),var(--dy)) rotate(var(--rot)); opacity:0; } }

  /* ---------- Footer ---------- */
  footer.site{ border-top:1px solid var(--line); padding-block:44px 60px; background:var(--paper-2); }
  .foot-grid{ display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:30px; }
  @media (max-width:640px){ .foot-grid{ grid-template-columns:1fr; } }
  .foot-grid h4{ font-family:"Alegreya SC", serif; font-size:.8rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:12px; font-weight:600; }
  .foot-grid p, .foot-grid a{ font-size:.9rem; color:var(--ink-soft); line-height:1.7; text-decoration:none; background:none; border:none; padding:0; cursor:pointer; text-align:left; display:block; }
  .foot-grid a:hover{ color:var(--brass-strong); }
  .foot-bottom{ margin-top:40px; padding-top:18px; border-top:1px solid var(--line); font-size:.78rem; color:var(--ink-faint); display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; }
  /* ---------- Softer, rounder surfaces ---------- */
  .detail-seal{ border-radius:24px; box-shadow:0 18px 40px -28px rgba(59,49,40,.5); }
  .info-strip{ border:1px solid var(--line); border-radius:18px; background:var(--card); overflow:hidden; }
  .info-cell:last-child{ border-right:none; }
  @media (max-width:720px){ .info-cell{ border-right:none; border-bottom:1px solid var(--line); } .info-cell:last-child{ border-bottom:none; } }
  .desc-placeholder{ border-radius:16px; background:var(--card); }
  .index-list{ border:1px solid var(--line); border-radius:20px; background:var(--card); overflow:hidden; }
  .index-row:last-child{ border-bottom:none; }
  .index-row{ padding-inline:20px; }
  .review{ border-radius:14px; background:var(--card); }
  form.review-form{ border-radius:20px; }
  form.review-form input[type=text], form.review-form textarea{ border-radius:10px; }
  .tab-btn{ border-radius:999px; z-index:1; background:transparent; }
  .tab-indicator{ top:0; bottom:auto; height:0; border-radius:999px; background:var(--paper-3); z-index:0; }
  footer.site{ margin-top:20px; }
  .phone-quick a{ white-space:nowrap; }
  @media (max-width:520px){ .phone-quick{ display:none; } .brand{ font-size:.98rem; text-align:left; } }
  .detail-desc{ margin:0; }
  /* ---------- About long-read ---------- */
  .longread{ display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:48px; align-items:start; padding-block:10px 20px; }
  @media (max-width:900px){ .longread{ grid-template-columns:1fr; gap:34px; } }
  .longread-body{ max-width:66ch; }
  .longread-body p{ line-height:1.78; color:var(--ink-soft); margin:0 0 16px; }
  .longread-body h3{ font-size:1.42rem; margin:36px 0 12px; }
  .longread-body h4{ font-family:"Alegreya", Georgia, serif; font-size:1.12rem; margin:0 0 8px; }
  .chronicle{ margin:0 0 26px; padding:20px 24px; border-left:3px solid var(--brass); background:var(--paper-2); border-radius:0 16px 16px 0; font-family:"Alegreya", Georgia, serif; font-size:1.24rem; font-style:italic; line-height:1.5; }
  .chronicle cite{ display:block; margin-top:10px; font-family:"PT Sans", sans-serif; font-style:normal; font-size:.78rem; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-faint); }
  .legend{ background:var(--card); border:1px solid var(--line); border-radius:18px; padding:20px 22px; margin:18px 0 22px; }
  .legend p:last-child{ margin-bottom:0; }
  .legend-chip{ display:inline-block; margin-bottom:10px; padding:4px 11px; border-radius:999px; background:var(--paper-3); color:var(--ink-soft); font-size:.7rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; }
  .timeline-aside{ position:sticky; top:150px; background:var(--card); border:1px solid var(--line); border-radius:20px; padding:22px 22px 18px; }
  @media (max-width:900px){ .timeline-aside{ position:static; } }
  .timeline-title{ font-size:1.05rem; margin-bottom:14px; }
  .timeline{ list-style:none; margin:0; padding:0 0 0 16px; border-left:1px solid var(--line); display:grid; gap:14px; }
  .timeline li{ position:relative; }
  .timeline li::before{ content:""; position:absolute; left:-21px; top:7px; width:9px; height:9px; border-radius:50%; background:var(--paper); border:1.6px solid var(--brass); }
  .timeline b{ display:block; font-family:"Alegreya", serif; font-size:1.02rem; color:var(--brass-strong); font-variant-numeric:tabular-nums; }
  .timeline span{ font-size:.86rem; line-height:1.45; color:var(--ink-soft); }
  .timeline-note{ margin:16px 0 0; font-size:.76rem; line-height:1.5; color:var(--ink-faint); }
  .about-cta{ display:flex; gap:12px; flex-wrap:wrap; padding-block:14px 64px; }
  /* ---------- Touch targets ---------- */
  .tab-btn{ min-height:40px; }
  .foot-grid a{ padding-block:5px; }
  .back-link{ min-height:40px; align-items:center; }
  .more-link{ display:inline-flex; align-items:center; min-height:36px; }
  .detail-link{ min-height:36px; align-items:center; }
  .phone-quick a{ display:inline-flex; align-items:center; min-height:36px; }
  /* ---------- Theme button, admin gate and panel ---------- */
  .head-right{ display:flex; align-items:center; gap:14px; }
  .theme-btn{ width:38px; height:38px; border-radius:50%; border:1px solid var(--line); background:var(--card); color:var(--ink-soft); font-size:1rem; cursor:pointer; display:grid; place-items:center; }
  .theme-btn:hover{ border-color:var(--brass); color:var(--brass-strong); }
  .admin-gate{ padding-block:0 60px; }
  .admin-box{ border:1px solid var(--line); border-radius:16px; background:var(--paper-2); padding:14px 18px; max-width:520px; }
  .admin-box summary{ cursor:pointer; font-size:.86rem; color:var(--ink-faint); list-style:none; }
  .admin-box summary::-webkit-details-marker{ display:none; }
  .admin-box summary::before{ content:"⚿ "; }
  .admin-box[open] summary{ color:var(--ink); margin-bottom:10px; }
  .admin-hint{ font-size:.86rem; color:var(--ink-soft); line-height:1.5; margin:0 0 12px; }
  #admin-login{ display:flex; gap:10px; flex-wrap:wrap; }
  #admin-login input{ flex:1; min-width:180px; font-family:"PT Sans",sans-serif; font-size:.92rem; padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:var(--paper); color:var(--ink); }
  .admin-msg{ margin:10px 0 0; font-size:.84rem; color:var(--brick); min-height:1em; }
  .adm-wrap{ display:grid; gap:18px; padding-block:10px 60px; }
  .adm-card{ background:var(--card); border:1px solid var(--line); border-radius:20px; padding:22px; display:grid; gap:14px; }
  .adm-card h3{ font-size:1.12rem; }
  .adm-field{ display:grid; gap:6px; }
  .adm-field > span{ font-size:.74rem; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-faint); }
  .adm-field input, .adm-field textarea{ width:100%; font-family:"PT Sans",sans-serif; font-size:.92rem; padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:var(--paper); color:var(--ink); }
  .adm-field textarea{ resize:vertical; line-height:1.55; }
  .adm-photo{ display:flex; gap:16px; align-items:center; flex-wrap:wrap; }
  .adm-thumb{ width:104px; height:104px; border-radius:16px; border:1px solid var(--line); background:var(--paper-2); display:grid; place-items:center; overflow:hidden; font-size:.74rem; color:var(--ink-faint); flex:none; }
  .adm-thumb img{ width:100%; height:100%; object-fit:cover; }
  .adm-photo-side{ display:grid; gap:8px; }
  .adm-upload{ justify-self:start; }
  .adm-note{ font-size:.78rem; color:var(--ink-faint); line-height:1.45; }
  .adm-actions{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
  .adm-save-msg{ font-size:.86rem; color:var(--ink-soft); }
  .adm-warning{ font-size:.8rem; line-height:1.55; color:var(--ink-faint); margin:0; max-width:70ch; }
  /* ---------- Панель: поля экспорта ---------- */
  #adm-export-text{ width:100%; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:.76rem; line-height:1.45;
    padding:12px; border:1px solid var(--line); border-radius:12px; background:var(--paper); color:var(--ink); resize:vertical; }
  .adm-card code{ font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:.82em; background:var(--paper-2); padding:1px 5px; border-radius:5px; }
  .adm-photo-side{ min-width:min(100%, 320px); }

  /* ============ Дополнения поверх base.css: сетка, карточки, галерея, карта ============ */

  /* overflow-x:clip вместо hidden: так страницу не увести вбок, но приклеенная
     шапка продолжает работать (hidden делает из body контейнер прокрутки) */
  html{ -webkit-text-size-adjust:100%; overflow-x:hidden; overflow-x:clip; }
  body{ margin:0; padding:0; min-height:100vh; display:flex; flex-direction:column;
        overflow-x:hidden; overflow-x:clip; font-size:1.02rem; line-height:1.6; }
  main{ flex:1 0 auto; }
  footer.site{ flex:none; }
  [hidden]{ display:none !important; }
  img{ max-width:100%; height:auto; }

  .visually-hidden{ position:absolute; width:1px; height:1px; padding:0; margin:-1px;
    overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }

  /* широкий контейнер — основная сетка сайта */
  .wrap--wide{ max-width:1320px; padding-inline:32px; }
  @media (max-width:900px){ .wrap--wide{ padding-inline:22px; } }
  @media (max-width:520px){ .wrap, .wrap--wide{ padding-inline:16px; } }

  /* элементы сетки не должны раздуваться до размера картинки внутри */
  .m-cards > *, .detail-hero > *, .map-layout > *, .longread > *,
  .foot-grid > *, .contact-list > *, .gallery > *{ min-width:0; }

  /* заголовки: уровни сместились на один вверх */
  .page-head h1{ font-size:clamp(1.9rem,4vw,2.7rem); margin:10px 0 16px; }
  .page-head--lead{ padding-block:52px 10px; }
  .page-head--lead .sub{ font-size:1.06rem; max-width:74ch; }
  .longread-body h2{ font-family:"Alegreya", Georgia, serif; font-weight:600; font-size:1.48rem; margin:38px 0 12px; }
  .legend h3{ font-family:"Alegreya", Georgia, serif; font-weight:600; font-size:1.14rem; margin:0 0 8px; }
  .contact-card h2{ font-size:1.14rem; line-height:1.25; }
  .contact-card h2 a{ text-decoration:none; }
  .contact-card h2 a:hover{ color:var(--brass-strong); }
  .foot-title{ font-family:"Alegreya SC", serif; font-size:.82rem; letter-spacing:.1em;
    text-transform:uppercase; color:var(--ink-faint); margin:0 0 12px; font-weight:600; }
  .section-head--tight{ align-items:flex-end; margin-bottom:18px; }

  /* ссылки, которые выглядят как кнопки или карточки */
  a.tab-btn{ display:inline-flex; align-items:center; justify-content:center; text-decoration:none; }
  a.brand, a.tile, a.pager-btn, a.detail-link, a.back-link, a.more-link{ text-decoration:none; }
  a.detail-link, a.back-link{ display:inline-flex; }

  a:focus-visible, button:focus-visible, summary:focus-visible,
  input:focus-visible, select:focus-visible, textarea:focus-visible{
    outline:2px solid var(--brass-strong); outline-offset:3px; border-radius:6px;
  }
  .skip-link{ position:absolute; left:0; top:0; z-index:200; background:var(--brass-strong);
    color:var(--card); padding:10px 16px; border-radius:0 0 10px 0; font-weight:700;
    text-decoration:none; transform:translateY(-130%); }
  .skip-link:focus{ transform:translateY(0); }

  /* ---------------------------------------------------------- хлебные крошки */
  .crumbs{ padding-block:18px 0; font-size:.82rem; color:var(--ink-faint);
    display:flex; flex-wrap:wrap; align-items:center; gap:2px; }
  .crumbs a{ color:var(--ink-faint); text-decoration:none; padding-block:4px; }
  .crumbs a:hover{ color:var(--brass-strong); }
  .crumbs i{ font-style:normal; margin-inline:6px; opacity:.55; }

  /* ------------------------------------------- название сайта и подзаголовок */
  .brand{ align-items:center; gap:11px; min-width:0; flex:1 1 0; }
  .head-right{ flex:none; }
  .brand .mark{ width:34px; height:34px; font-size:.95rem; }
  .brand-text{ display:flex; flex-direction:column; gap:2px; min-width:0; }
  .brand-name{ font-size:1.12rem; line-height:1.1; letter-spacing:.07em; }
  .brand-sub{ font-family:"PT Sans", system-ui, sans-serif; font-size:.74rem; font-weight:400;
    letter-spacing:0; line-height:1.3; color:var(--ink-soft); text-transform:none; white-space:nowrap; }
  @media (max-width:760px){ .brand-sub{ white-space:normal; text-wrap:balance; font-size:.7rem; line-height:1.25; } }
  @media (max-width:520px){
    .brand{ gap:9px; }
    .brand .mark{ width:32px; height:32px; font-size:.9rem; }
    .brand-name{ font-size:1rem; }
    .brand-sub{ font-size:.68rem; }
  }

  /* ------------------------------------------- шапка: компактная на телефоне */
  header.site{ z-index:60; }
  .tab-mark{ display:none; flex:none; width:30px; height:30px; border-radius:50%;
    border:1.4px solid var(--brass); align-items:center; justify-content:center;
    font-family:"Alegreya", serif; font-weight:700; font-size:.84rem; color:var(--brass-strong);
    text-decoration:none; margin-right:8px; align-self:center; }
  .tab-mark:hover{ background:var(--paper-3); }

  /* Строка с названием уезжает вверх, полоса разделов остаётся у верха экрана.
     Высота шапки в потоке не меняется, поэтому страница не дёргается. */
  @media (max-width:760px){
    header.site{ transition:transform .3s cubic-bezier(.4,0,.2,1); will-change:transform; }
    .tabbar{ transition:transform .3s cubic-bezier(.4,0,.2,1); background:var(--paper); }
    header.site.compact{ transform:translateY(calc(-1 * var(--nav-h, 62px))); }
    header.site.compact .nav{ opacity:0; transition:opacity .2s ease; }
    header.site.compact .tab-mark{ display:inline-flex; }
  }
  @media (prefers-reduced-motion:reduce){
    header.site, .tabbar{ transition:none; }
  }

  /* ------------------------------------------------------------ главная */
  .hero{ padding-block:58px 44px; }
  .hero h1{ font-size:clamp(2.3rem, 5.2vw, 3.9rem); }
  .hero-lede{ max-width:60ch; font-size:1.1rem; line-height:1.65; color:var(--ink-soft); margin:0; }
  .home-museums{ padding-block:34px 62px; }
  .section-head h2{ font-size:clamp(1.7rem,3.4vw,2.2rem); }

  /* -------------------------------------------------------- карточки музеев */
  .m-cards{ display:grid; gap:24px; align-items:stretch;
    grid-template-columns:repeat(auto-fit, minmax(262px, 1fr)); }
  @media (max-width:560px){ .m-cards{ grid-template-columns:1fr; } }

  .m-card{ display:flex; flex-direction:column; background:var(--card);
    border:1px solid var(--line); border-radius:22px; overflow:hidden; box-shadow:var(--shadow); }
  @media (prefers-reduced-motion:no-preference){
    .m-card{ transition:transform .22s cubic-bezier(.2,.8,.3,1), box-shadow .22s ease, border-color .22s ease; }
    .m-card:hover{ transform:translateY(-4px); border-color:var(--brass);
      box-shadow:0 20px 38px -24px rgba(59,49,40,.55); }
  }
  .m-card-media-link{ display:block; }

  /* горизонтальные карточки на странице «Музеи Старицы» */
  .m-cards--row{ grid-template-columns:repeat(2, minmax(0,1fr)); gap:26px; }
  .m-cards--row .m-card{ display:grid; grid-template-columns:252px minmax(0,1fr); }
  .m-cards--row .m-card-media-link{ height:100%; }
  .m-cards--row .card-media{ height:100%; aspect-ratio:auto; min-height:264px;
    border-bottom:none; border-right:1px solid var(--line); }
  .m-cards--row .m-card-body{ padding:26px 28px 26px; gap:11px; }
  @media (max-width:1120px){ .m-cards--row{ grid-template-columns:1fr; } }
  @media (max-width:640px){
    .m-cards--row .m-card{ grid-template-columns:1fr; }
    .m-cards--row .card-media{ min-height:0; aspect-ratio:4/3;
      border-right:none; border-bottom:1px solid var(--line); }
  }

  /* grid-auto-rows:minmax(0,1fr) обязателен: иначе строка сетки тянется по
     высоте самой картинки и логотип вылезает за нижний край плитки */
  .card-media{ position:relative; aspect-ratio:4/3; background:var(--paper-2);
    border-bottom:1px solid var(--line); display:grid; overflow:hidden;
    grid-auto-rows:minmax(0,1fr); }
  .card-media--seal{ place-items:center; }
  .card-media--seal .seal{ width:64%; height:64%; }
  .card-media--logo{ background:var(--brand, var(--paper-2));
    grid-template-columns:minmax(0,1fr); grid-template-rows:minmax(0,1fr); }
  .card-media--logo picture{ display:block; width:100%; height:100%; min-width:0; }
  .card-media--logo img{ width:100%; height:100%; min-width:0; object-fit:contain;
    padding:5%; display:block; }
  .card-media--photos{ gap:2px; }
  .card-media--photos img{ width:100%; height:100%; min-width:0; object-fit:cover; display:block; }
  .card-media--photos.count-1{ grid-template-columns:minmax(0,1fr);
    grid-template-rows:minmax(0,1fr); }
  .card-media--photos.count-2{ grid-template-columns:minmax(0,1fr);
    grid-template-rows:repeat(2, minmax(0,1fr)); }
  .card-media--photos.count-3{ grid-template-columns:repeat(2, minmax(0,1fr));
    grid-template-rows:minmax(0,1.5fr) minmax(0,1fr); }
  .card-media--photos.count-3 img:first-child{ grid-column:1 / span 2; }

  .m-card-body{ display:flex; flex-direction:column; gap:10px; padding:20px 20px 22px; flex:1; }
  .m-card-title{ font-size:1.22rem; line-height:1.24; margin:0; }
  .m-card-title a{ text-decoration:none; }
  .m-card-title a:hover{ color:var(--brass-strong); }
  .m-card-tagline{ font-style:italic; color:var(--ink-soft); font-size:.95rem; margin:0; }
  .m-card-desc{ font-size:.94rem; line-height:1.62; color:var(--ink-soft); margin:2px 0 0; }
  .m-card-facts{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:5px 14px;
    margin:6px 0 0; font-size:.9rem; }
  .m-card-facts dt{ color:var(--ink-faint); font-size:.72rem; text-transform:uppercase;
    letter-spacing:.06em; padding-top:3px; }
  .m-card-facts dd{ margin:0; color:var(--ink-soft); min-height:26px; }
  .m-card-actions{ margin-top:auto; padding-top:16px; display:flex; gap:10px; flex-wrap:wrap; }
  .m-card-actions .btn{ padding:11px 18px; font-size:.88rem; }

  /* значок музея рядом с названием */
  .card-logo{ width:58px; height:58px; object-fit:cover; background:var(--paper);
    border:2px solid var(--card); border-radius:14px;
    margin:-44px 0 -4px; position:relative; z-index:1;
    box-shadow:0 6px 16px -8px rgba(59,49,40,.6); }
  .contact-head{ display:flex; align-items:center; gap:13px; }
  .contact-logo{ width:48px; height:48px; flex:none; border-radius:12px; object-fit:cover;
    border:1px solid var(--line); }

  .index-cta{ display:flex; gap:12px; flex-wrap:wrap; padding-block:38px 72px; }

  /* ----------------------------------------------------- тизер карты на главной */
  .home-map{ background:var(--paper-2); border-block:1px solid var(--line); }
  .map-teaser{ display:grid; grid-template-columns:1.15fr .85fr; gap:44px;
    align-items:center; padding-block:52px; }
  @media (max-width:860px){ .map-teaser{ grid-template-columns:1fr; gap:28px; } }
  .map-teaser h2{ font-size:clamp(1.6rem,3.2vw,2.2rem); margin:8px 0 14px; }
  .map-teaser p{ color:var(--ink-soft); line-height:1.7; max-width:56ch; margin:0 0 22px; }
  .map-teaser-art{ display:block; max-width:380px; width:100%; justify-self:center; }
  .map-teaser-art svg{ width:100%; height:auto; display:block; }
  .teaser-inner{ padding-block:40px; }
  .teaser-text{ font-size:1.25rem; }

  /* ------------------------------------------------------- страница музея */
  .detail-hero{ padding-block:26px 40px; display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);
    gap:42px; align-items:center; border-bottom:1px solid var(--line); }
  .detail-seal{ max-width:100%; width:100%; aspect-ratio:auto; margin:0;
    border:1px solid var(--line); border-radius:24px; overflow:hidden; background:var(--card);
    display:block; box-shadow:0 20px 44px -30px rgba(59,49,40,.55); }
  .detail-seal .card-media{ border-bottom:none; aspect-ratio:1; }
  .detail-title{ font-size:clamp(1.9rem,4vw,2.8rem); }
  .detail-tagline{ font-size:1.1rem; }
  .detail-actions{ display:flex; gap:12px; flex-wrap:wrap; margin-top:22px; }
  @media (max-width:760px){
    .detail-hero{ grid-template-columns:1fr !important; gap:26px; padding-block:18px 30px; }
    .detail-seal{ max-width:340px; margin-inline:auto; }
  }

  .detail-desc-wrap{ padding-block:34px 4px; }
  .desc-note{ margin:0 0 10px; font-size:.82rem; letter-spacing:.02em; color:var(--ink-faint);
    font-style:italic; }
  .detail-desc{ margin:0; font-size:1.08rem; line-height:1.78; padding:0; max-width:74ch; }
  .excursion-note{ margin:22px 0 0; padding:16px 20px; border-radius:16px;
    background:var(--paper-2); border:1px solid var(--line); color:var(--ink-soft);
    font-size:.98rem; line-height:1.6; max-width:74ch; }

  /* ------------------------------------------------------------ галерея */
  .gallery-block{ padding-block:46px 0; }
  .gallery-hint{ font-size:.84rem; color:var(--ink-faint); }
  .gallery{ display:grid; gap:18px; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); }
  @media (max-width:640px){ .gallery{ grid-template-columns:1fr; gap:14px; } }
  .gallery-item{ position:relative; display:block; padding:0; margin:0; border:1px solid var(--line);
    border-radius:18px; overflow:hidden; background:var(--card); cursor:zoom-in; width:100%;
    text-align:left; color:inherit; font:inherit; }
  .gallery-item img{ display:block; width:100%; aspect-ratio:4/3; object-fit:cover; min-width:0; }
  .gallery-cap{ display:block; padding:11px 15px; font-size:.86rem; color:var(--ink-soft); }
  .gallery-zoom{ position:absolute; right:12px; top:12px; width:34px; height:34px;
    border-radius:50%; background:rgba(30,25,19,.55); color:#fff; display:grid; place-items:center;
    font-size:1.2rem; line-height:1; opacity:0; transform:scale(.85); }
  @media (prefers-reduced-motion:no-preference){
    .gallery-item img{ transition:transform .35s cubic-bezier(.2,.8,.3,1); }
    .gallery-item:hover img, .gallery-item:focus-visible img{ transform:scale(1.04); }
    .gallery-zoom{ transition:opacity .2s ease, transform .2s ease; }
  }
  .gallery-item:hover .gallery-zoom, .gallery-item:focus-visible .gallery-zoom{ opacity:1; transform:scale(1); }

  /* увеличенный снимок */
  .lightbox{ position:fixed; inset:0; z-index:300; background:rgba(22,18,13,.92);
    display:grid; grid-template-rows:1fr auto; place-items:center; padding:24px; }
  .lightbox img{ max-width:min(1200px, 94vw); max-height:78vh; width:auto; height:auto;
    border-radius:14px; box-shadow:0 30px 70px -30px rgba(0,0,0,.9); }
  .lightbox-cap{ color:#EDE2D2; font-size:.95rem; text-align:center; padding:16px 12px 4px;
    max-width:70ch; }
  .lightbox-close, .lightbox-nav{ position:absolute; background:rgba(255,255,255,.12);
    color:#fff; border:none; border-radius:50%; width:48px; height:48px; cursor:pointer;
    font-size:1.5rem; line-height:1; display:grid; place-items:center; }
  .lightbox-close:hover, .lightbox-nav:hover{ background:rgba(255,255,255,.24); }
  .lightbox-close{ top:18px; right:18px; }
  .lightbox-nav.prev{ left:18px; top:50%; transform:translateY(-50%); }
  .lightbox-nav.next{ right:18px; top:50%; transform:translateY(-50%); }
  @media (max-width:640px){
    .lightbox{ padding:12px; }
    .lightbox img{ max-height:70vh; }
    .lightbox-nav{ top:auto; bottom:18px; transform:none; width:52px; height:52px; }
    .lightbox-nav.prev{ left:24px; }
    .lightbox-nav.next{ right:24px; }
  }
  @media (prefers-reduced-motion:no-preference){
    .lightbox{ animation:lb-in .2s ease both; }
    @keyframes lb-in{ from{ opacity:0 } to{ opacity:1 } }
  }

  .museum-pager{ padding-block:46px 64px; }

  /* ------------------------------------------------------------------ карта */
  .map-layout{ display:grid; grid-template-columns:minmax(0,1.65fr) minmax(330px,1fr);
    gap:26px; align-items:start; padding-block:26px 64px; }
  @media (max-width:1040px){ .map-layout{ grid-template-columns:1fr; } }

  .map-holder{ position:relative; z-index:0; isolation:isolate; }
  #map{ height:clamp(520px, 78vh, 900px); border-radius:22px; border:1px solid var(--line);
    background:#F7F2E8; position:relative; overflow:hidden; touch-action:none;
    cursor:grab; outline-offset:3px; }
  #map:active{ cursor:grabbing; }
  #map:fullscreen{ height:100vh; border-radius:0; }
  @media (max-width:640px){ #map{ height:clamp(340px, 62vh, 540px); border-radius:18px; } }
  .map-fallback{ margin:16px 0 0; padding:16px 18px; border:1px solid var(--line);
    border-radius:16px; background:var(--card); color:var(--ink-soft); line-height:1.6; }

  /* слои просмотрщика: тайлы, ссылки-таблички, метка */
  .mv-tiles, .mv-over{ position:absolute; left:0; top:0; transform-origin:0 0;
    will-change:transform; }
  .mv-tiles{ z-index:1; }
  .mv-over{ z-index:2; pointer-events:none; }
  .mv-pins{ position:absolute; inset:0; z-index:3; pointer-events:none; }
  /* max-width:100% из общих правил обнулял бы плитку: у слоя нет своей ширины */
  .mv-tile{ position:absolute; display:block; max-width:none; user-select:none;
    -webkit-user-drag:none; image-rendering:auto; }
  .mv-over > svg{ display:block; max-width:none; }
  .mv-controls{ position:absolute; right:12px; top:12px; z-index:4;
    display:grid; gap:6px; }

  .map-veil{ position:absolute; inset:0; z-index:6; border:none; border-radius:22px;
    background:rgba(30,25,19,.28); display:grid; place-items:center; cursor:pointer;
    font:inherit; color:#fff; padding:0; }
  .map-veil span{ background:var(--brass-strong); color:var(--card); font-weight:700;
    font-size:.9rem; padding:12px 20px; border-radius:999px; box-shadow:0 6px 18px -8px rgba(0,0,0,.6); }

  /* ------------------------------------------------- панель карты */
  .map-side{ display:grid; gap:18px; align-content:start; }
  .map-panel{ background:var(--card); border:1px solid var(--line);
    border-radius:22px; padding:22px; }
  .map-panel h2{ font-size:1.18rem; margin:0 0 8px; }
  .map-panel-lead{ margin:0 0 12px; font-size:.86rem; line-height:1.55; color:var(--ink-soft); }

  /* Список всего, что есть на карте. На широком экране он прокручивается
     внутри себя, чтобы карта рядом не уезжала из виду. */
  .map-groups{ margin-top:16px; display:grid; gap:18px;
    max-height:min(60vh, 620px); overflow:auto; padding-right:6px;
    scrollbar-width:thin; overscroll-behavior:contain; }
  @media (max-width:1040px){
    .map-groups{ max-height:none; overflow:visible; padding-right:0; }
  }

  .map-group h3{ font-size:.96rem; margin:0 0 6px; display:flex; align-items:baseline; gap:8px; }
  .map-group-count{ font-family:"PT Sans",sans-serif; font-size:.72rem; font-weight:700;
    color:var(--ink-faint); background:var(--paper-2); border:1px solid var(--line);
    border-radius:999px; padding:1px 8px; }
  .map-group-note{ margin:0 0 10px; font-size:.78rem; line-height:1.5; color:var(--ink-faint); }

  .map-rows{ list-style:none; margin:0; padding:0; display:grid; gap:8px; }
  .map-row{ background:var(--paper-2); border:1px solid var(--line); border-radius:15px;
    padding:11px 13px; display:grid; gap:9px; }
  .map-row-head{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:11px;
    align-items:center; }
  .map-row-logo{ width:38px; height:38px; border-radius:10px; object-fit:cover;
    border:1px solid var(--line); }
  .map-row-text{ display:grid; gap:2px; min-width:0; }
  .map-row-name{ font-weight:700; font-size:.92rem; line-height:1.3; }
  .map-row-sub{ font-size:.77rem; color:var(--ink-faint); line-height:1.4; }
  .map-row-acts{ display:flex; flex-wrap:wrap; gap:7px; }
  .map-act{ font:inherit; font-family:"PT Sans",sans-serif; font-size:.79rem; font-weight:700;
    line-height:1.1; padding:9px 13px; border-radius:999px; border:1px solid var(--line);
    background:var(--card); color:var(--ink-soft); cursor:pointer; text-decoration:none;
    display:inline-flex; align-items:center; min-height:36px; text-align:left; }
  .map-act:hover{ border-color:var(--brass); color:var(--brass-strong); }
  .map-row-link{ color:var(--ink); text-decoration:none; }
  .map-row-link:hover, .map-row-link:focus-visible{ color:var(--brass-strong);
    text-decoration:underline; text-underline-offset:3px; }
  .map-act--page{ background:var(--brass-strong); border-color:var(--brass-strong); color:var(--card);
    flex-basis:100%; justify-content:center; }
  .map-act--page:hover{ background:var(--ink); border-color:var(--ink); color:var(--card); }
  .map-act.active{ border-color:var(--brass-strong); color:var(--brass-strong);
    background:var(--paper-3); box-shadow:0 0 0 1px var(--brass-strong) inset; }

  /* Окошко «проложить маршрут?» поверх карты */
  .map-ask{ position:absolute; inset:0; z-index:7; display:grid; place-items:center;
    background:rgba(30,25,19,.34); padding:16px; touch-action:manipulation; }
  .map-ask-card{ background:var(--card); border:1px solid var(--line); border-radius:20px;
    padding:20px 22px; max-width:350px; width:100%; outline:none;
    box-shadow:0 18px 40px -22px rgba(0,0,0,.6); }
  .map-ask-title{ margin:0 0 8px; font-family:"Alegreya",Georgia,serif; font-size:1.14rem;
    font-weight:700; line-height:1.3; }
  .map-ask-sub{ margin:0 0 4px; font-size:.82rem; line-height:1.5; color:var(--ink-faint); }
  .map-ask-row{ display:flex; flex-wrap:wrap; gap:9px; margin-top:15px; }
  .map-ask-row .btn{ flex:1 1 auto; justify-content:center; padding-inline:16px; }

  .map-note{ margin:0 0 14px; font-size:.86rem; line-height:1.5; color:var(--brass-strong);
    min-height:1.2em; font-weight:700; }
  .map-source{ margin:0; font-size:.84rem; line-height:1.6; color:var(--ink-faint);
    padding:0 4px; }

  /* нажимаемые таблички: прозрачные ссылки поверх подписей карты */
  #map svg.map-hotspots{ pointer-events:none; overflow:visible; }
  #map svg.map-hotspots a{ pointer-events:auto; cursor:pointer; outline:none; }
  #map svg.map-hotspots rect{ pointer-events:auto;
    fill:#7E5D35; fill-opacity:.001; stroke:#7E5D35; stroke-opacity:0; stroke-width:7;
    transition:fill-opacity .15s ease, stroke-opacity .15s ease; }
  #map svg.map-hotspots a:hover rect{ fill-opacity:.13; stroke-opacity:.85; }
  #map svg.map-hotspots a:focus-visible rect{ fill-opacity:.2; stroke-opacity:1; }
  @media (prefers-reduced-motion:reduce){
    #map svg.map-hotspots rect{ transition:none; }
  }

  .map-hint{ margin:12px 0 0; font-size:.88rem; line-height:1.55; color:var(--ink-soft); }
  .map-hint b{ color:var(--brass-strong); }

  /* метка выбранного музея: стоит на карте, пока не выберут другой */
  /* метка стоит над табличкой: точка привязки — её нижняя середина */
  .map-pin{ position:absolute; display:grid; place-items:center; width:56px; height:56px;
    margin-left:-28px; margin-top:-58px; pointer-events:none; }
  .map-pin-logo{ grid-area:1/1; width:44px; height:44px; border-radius:50%;
    object-fit:cover; background:var(--brand, #7E5D35);
    border:3px solid #fff; box-shadow:0 5px 14px -5px rgba(0,0,0,.65); }
  .map-pin-ring{ grid-area:1/1; width:44px; height:44px; border-radius:50%;
    border:3px solid var(--brand, var(--brass-strong)); opacity:0; }
  @media (prefers-reduced-motion:no-preference){
    .map-pin-ring{ animation:map-pin-ring 1.5s cubic-bezier(.2,.8,.3,1) 3 both; }
    @keyframes map-pin-ring{
      0%{ transform:scale(1); opacity:.9; }
      100%{ transform:scale(2.6); opacity:0; }
    }
  }

  /* кнопки поверх карты */
  .map-btn, .map-locate{ width:38px; height:38px; border-radius:11px;
    border:1px solid var(--line); background:var(--card); color:var(--brass-strong);
    font-size:1.05rem; cursor:pointer; display:grid; place-items:center;
    box-shadow:0 4px 12px -6px rgba(0,0,0,.5); margin-bottom:6px; }
  .map-btn:hover, .map-locate:hover{ border-color:var(--brass); background:var(--paper-2); }

  .contact-actions{ display:flex; gap:16px; flex-wrap:wrap; }
  .contact-list{ grid-template-columns:repeat(auto-fit, minmax(min(330px, 100%), 1fr)); }

  /* удобные цели нажатия у самостоятельных ссылок */
  .info-cell a, .info-cell span{ display:inline-flex; align-items:center; min-height:32px; }
  .contact-card dd a, .contact-card dd{ display:inline-flex; align-items:center; min-height:30px; }
  .foot-grid a{ min-height:32px; display:flex; align-items:center; }
  .admin-box summary{ display:flex; align-items:center; min-height:40px; }
  .admin-box summary::before{ content:none; }   /* знак ⚿ есть не во всех шрифтах */

  .info-strip{ font-size:.98rem; }
  .info-cell{ padding:20px 22px; }

  /* --------------------------------------------------------------- прочее */
  .notfound{ padding-block:80px 100px; display:grid; gap:18px; justify-items:start; }
  .notfound h1{ font-size:clamp(2rem,5vw,3.1rem); }
  .notfound p{ color:var(--ink-soft); line-height:1.65; max-width:52ch; margin:0; }
  .adm-denied{ padding-block:60px 90px; display:grid; gap:16px; justify-items:start; }
  .adm-denied p{ color:var(--ink-soft); line-height:1.6; max-width:52ch; margin:0; }
  .adm-denied .admin-box{ width:100%; }

  @media (max-width:520px){
    .m-card-actions .btn{ flex:1 1 100%; justify-content:center; }
  }

  @media print{
    header.site, .tabbar, .theme-btn, .museum-pager, .admin-gate, .map-side, #map{ display:none !important; }
    body{ background:#fff; color:#000; }
  }

  /* ------------------------------ достопримечательности и маршрут дня */
  .place-page{ display:grid; gap:44px; padding-block:8px 64px; }
  .place-block h2{ font-size:clamp(1.3rem, 1.05rem + .8vw, 1.75rem); margin:0 0 8px; }
  .place-lead{ margin:0 0 18px; color:var(--ink-soft); line-height:1.65; max-width:64ch; }
  .place-grid{ display:grid; gap:16px;
    grid-template-columns:repeat(auto-fill, minmax(min(300px, 100%), 1fr)); }
  .place-card{ background:var(--card); border:1px solid var(--line); border-radius:18px;
    padding:18px 20px; display:grid; gap:10px; align-content:start; min-width:0; }
  .place-card h3{ font-size:1.05rem; line-height:1.3; margin:0; }
  .place-facts{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:3px 12px;
    margin:0; font-size:.88rem; }
  .place-facts dt{ color:var(--ink-faint); }
  .place-facts dd{ margin:0; }
  .place-facts a{ color:var(--brass-strong); }
  .place-links{ display:flex; flex-wrap:wrap; gap:8px 16px; margin-top:2px; }
  .place-links .detail-link{ font-size:.84rem; }

  .mini-cards{ display:grid; gap:12px;
    grid-template-columns:repeat(auto-fill, minmax(min(240px, 100%), 1fr)); }
  .mini-card{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:12px;
    align-items:center; text-decoration:none; background:var(--paper-2);
    border:1px solid var(--line); border-radius:15px; padding:11px 14px 11px 11px;
    min-height:64px; }
  .mini-card:hover{ border-color:var(--brass); background:var(--paper-3); }
  .mini-logo{ width:44px; height:44px; border-radius:11px; object-fit:cover;
    border:1px solid var(--line); }
  .mini-text{ display:grid; gap:2px; min-width:0; }
  .mini-name{ font-weight:700; font-size:.96rem; }
  .mini-sub{ font-size:.79rem; color:var(--ink-faint); }

  .steps{ list-style:none; margin:0; padding:0 0 56px; display:grid; gap:18px; counter-reset:s; }
  .step{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:18px;
    background:var(--card); border:1px solid var(--line); border-radius:20px;
    padding:20px 22px; }
  .step-no{ width:38px; height:38px; border-radius:50%; display:grid; place-items:center;
    background:var(--brass-strong); color:var(--card); font-weight:700;
    font-family:"PT Sans", sans-serif; font-size:1rem; }
  .step-body{ min-width:0; display:grid; gap:7px; align-content:start; }
  .step-body h3{ font-size:1.14rem; line-height:1.3; margin:0; }
  .step-body p{ margin:0; line-height:1.66; color:var(--ink-soft); max-width:70ch; }
  .step-facts{ font-size:.86rem; color:var(--brass-strong) !important; font-weight:700; }
  .step-links{ display:flex; flex-wrap:wrap; gap:8px 16px; }
  .step-links .detail-link{ font-size:.84rem; }
  @media (max-width:560px){
    .step{ grid-template-columns:1fr; gap:10px; padding:17px 18px; }
    .step-no{ width:32px; height:32px; font-size:.9rem; }
  }

  /* блок «что посмотреть» на главной */
  .home-see{ padding-block:8px 46px; }
  .see-cards{ display:grid; gap:16px;
    grid-template-columns:repeat(auto-fit, minmax(min(270px, 100%), 1fr)); }
  .see-card{ display:grid; gap:9px; align-content:start; text-decoration:none;
    background:var(--card); border:1px solid var(--line); border-radius:20px;
    padding:22px 24px; min-width:0; }
  .see-card:hover{ border-color:var(--brass); background:var(--paper-2); }
  .see-card h3{ font-size:1.16rem; margin:0; }
  .see-card p{ margin:0; font-size:.92rem; line-height:1.62; color:var(--ink-soft); }
  .see-go{ font-size:.85rem; font-weight:700; color:var(--brass-strong); margin-top:3px; }

  /* длинные слова в заголовках: «Достопримечательности» не влезает в 320px */
  h1, h2, h3, .foot-title, .see-card h3, .place-card h3{ overflow-wrap:break-word; }
  h1{ hyphens:auto; -webkit-hyphens:auto; }

  /* «что рядом с музеем» — перелинковка со страницы музея */
  .nearby{ padding-block:6px 30px; display:grid; gap:10px; }
  .nearby h2{ font-size:1.22rem; margin:0; }
  .nearby-lead{ margin:0; font-size:.92rem; line-height:1.62; color:var(--ink-soft);
    max-width:70ch; }
  .nearby-list{ list-style:none; margin:4px 0 0; padding:0; display:grid; gap:8px;
    grid-template-columns:repeat(auto-fit, minmax(min(240px, 100%), 1fr)); }
  .nearby-list li{ background:var(--card); border:1px solid var(--line); border-radius:14px;
    padding:12px 15px; display:grid; gap:3px; min-width:0; }
  .nearby-list a{ font-weight:700; font-size:.97rem; }
  .nearby-list span{ font-size:.85rem; color:var(--ink-soft); }
  .nearby-more{ margin:4px 0 0; font-size:.88rem; line-height:1.9; color:var(--ink-soft); }

  /* частые вопросы на главной */
  .home-faq{ padding-block:8px 48px; }
  .faq-list{ display:grid; gap:14px;
    grid-template-columns:repeat(auto-fit, minmax(min(310px, 100%), 1fr)); }
  .faq-item{ background:var(--card); border:1px solid var(--line); border-radius:18px;
    padding:20px 22px; display:grid; gap:7px; align-content:start; min-width:0; }
  .faq-item h3{ font-size:1.05rem; line-height:1.34; margin:0; }
  .faq-item p{ margin:0; font-size:.93rem; line-height:1.66; color:var(--ink-soft); }

  /* страница «как добраться» */
  .travel{ display:grid; gap:26px; padding-block:6px 10px;
    grid-template-columns:repeat(auto-fit, minmax(min(300px, 100%), 1fr)); }
  .travel-block{ display:grid; gap:9px; align-content:start; min-width:0; }
  .travel-block h2{ font-size:1.3rem; margin:0; }
  .travel-lead{ margin:0; font-size:.93rem; line-height:1.64; color:var(--ink-soft);
    max-width:64ch; }
  .travel-list{ list-style:none; margin:4px 0 0; padding:0; display:grid; gap:9px; }
  .travel-row{ background:var(--card); border:1px solid var(--line); border-radius:16px;
    padding:14px 17px; display:grid; gap:4px; min-width:0; }
  .travel-row b{ font-size:1rem; }
  .travel-row span{ font-size:.9rem; line-height:1.55; color:var(--ink-soft); }
  .travel-row .detail-link{ font-size:.84rem; justify-self:start; }
  .travel-note{ margin:4px 0 0; font-size:.88rem; line-height:1.6; color:var(--ink-soft); }
  .travel-foot{ padding-block:26px 56px; display:grid; gap:18px; }
  .travel-checked{ margin:0; font-size:.85rem; line-height:1.65; color:var(--ink-faint);
    max-width:76ch; }
  .nearby-walk{ margin:2px 0 0; font-size:.9rem; line-height:1.6; color:var(--ink-soft); }

  /* «что вы увидите в музее» — подробный рассказ по фотографиям */
  .museum-more{ padding-block:34px 8px; display:grid; gap:16px; }
  .museum-more h2{ font-size:1.36rem; margin:0; }
  .more-grid{ display:grid; gap:14px;
    grid-template-columns:repeat(auto-fit, minmax(min(420px, 100%), 1fr)); }
  .more-item{ background:var(--card); border:1px solid var(--line); border-radius:18px;
    padding:18px 21px; display:grid; gap:7px; align-content:start; min-width:0; }
  .more-item h3{ font-size:1.06rem; line-height:1.32; margin:0; }
  .more-item p{ margin:0; font-size:.95rem; line-height:1.7; color:var(--ink-soft); }
  .more-tour{ display:grid; gap:8px; max-width:74ch; padding-top:6px; }
  .more-tour h3{ font-size:1.12rem; margin:0; }
  .more-tour p{ margin:0; font-size:1rem; line-height:1.74; color:var(--ink-soft); }
  .more-tour a{ color:var(--brass-strong); font-weight:700; }

  /* ================= раздел «История Старицы» ================= */
  .hist-head{ padding-block:34px 6px; }
  .hist-head h1{ font-size:clamp(1.75rem,3.8vw,2.55rem); margin:6px 0 14px; max-width:28ch; }
  .hist-head .sub{ color:var(--ink-soft); max-width:70ch; line-height:1.7; margin:14px 0 0; font-size:1.04rem; }
  .hist-date{ margin:14px 0 0; font-family:"Alegreya", Georgia, serif; font-weight:600; line-height:1;
    font-size:clamp(2.6rem,7vw,4.4rem); color:var(--brass-strong); font-variant-numeric:lining-nums tabular-nums;
    letter-spacing:-.01em; }
  .hist-status{ list-style:none; display:flex; flex-wrap:wrap; gap:8px; margin:4px 0 0; padding:0; }
  .chip{ display:inline-block; padding:5px 12px; border-radius:999px; font-size:.74rem; font-weight:700;
    letter-spacing:.03em; line-height:1.3; background:var(--paper-3); color:var(--ink-soft); border:1px solid transparent; }
  .chip--predanie{ background:transparent; border-color:var(--brass); color:var(--brass-strong); }
  .chip--letopis{ background:var(--brass-strong); color:var(--card); }
  .chip--multi{ background:var(--paper-3); color:var(--ink); }
  .chip--dating{ background:transparent; border:1px dashed var(--ink-faint); color:var(--ink-soft); }

  .hist-scale{ display:block; width:100%; max-width:600px; height:auto; margin:22px 0 4px; }
  .hist-scale .sc-axis{ stroke:var(--line); stroke-width:2; }
  .hist-scale .sc-tick{ stroke:var(--ink-faint); stroke-width:1; }
  .hist-scale .sc-lbl{ fill:var(--ink-faint); font:600 10px "PT Sans", sans-serif; text-anchor:middle; }
  .hist-scale .sc-mark{ fill:var(--brass); opacity:.85; }

  .hist-layout{ display:grid; grid-template-columns:250px minmax(0,1fr); gap:56px; align-items:start;
    padding-block:18px 26px; }
  .hist-layout .hist-main{ grid-column:2; grid-row:1; max-width:70ch; min-width:0; }
  .hist-layout .hist-aside{ grid-column:1; grid-row:1; }
  .hist-layout--topic{ grid-template-columns:minmax(0,1fr); }
  .hist-layout--topic .hist-main{ grid-column:1; }
  @media (max-width:900px){
    .hist-layout{ grid-template-columns:minmax(0,1fr); gap:30px; }
    .hist-layout .hist-main, .hist-layout .hist-aside{ grid-column:1; grid-row:auto; }
  }
  .hist-main .inline-link, .hub .inline-link, .hist-head .inline-link, .tl-legend .inline-link{ white-space:normal; }
  .hist-main p{ font-size:1.02rem; }
  .hist-main section{ scroll-margin-top:130px; }
  .hist-main h2{ margin-top:38px; }
  .hist-main > section:first-child h2, .hist-main > blockquote + section h2{ margin-top:8px; }
  .hist-main h3{ font-family:"Alegreya", Georgia, serif; font-weight:600; font-size:1.2rem; margin:24px 0 8px; }
  .hist-main .chronicle{ margin:6px 0 20px; }
  .hist-list{ margin:0 0 16px; padding-left:1.2em; display:grid; gap:10px; }
  .hist-list li{ line-height:1.7; color:var(--ink-soft); }

  .hist-aside{ position:sticky; top:150px; background:var(--card); border:1px solid var(--line);
    border-radius:20px; padding:20px 20px 16px; }
  @media (max-width:900px){ .hist-aside{ position:static; } }
  .hist-aside-title{ margin:0 0 12px; font-family:"Alegreya", Georgia, serif; font-weight:600; font-size:1.05rem; }
  .hist-mini li a{ display:block; text-decoration:none; color:inherit; padding:2px 0; }
  .hist-mini li a:hover span, .hist-mini li a:focus-visible span{ color:var(--brass-strong); }
  .hist-mini li.is-current::before{ background:var(--brass); }
  .hist-mini li.is-current span{ color:var(--ink); font-weight:700; }
  .hist-aside .detail-link{ margin-top:12px; font-size:.86rem; font-weight:700; color:var(--brass-strong); }

  .hist-box{ margin:34px 0 8px; padding:20px 22px; border-radius:18px; border:1px solid var(--line); background:var(--card); }
  .hist-box h2{ margin:0 0 10px !important; font-size:1.3rem; }
  .hist-box ul{ margin:0; padding-left:1.15em; display:grid; gap:9px; }
  .hist-box li{ line-height:1.65; color:var(--ink-soft); }
  .hist-known{ border-left:4px solid var(--bottle); }
  .hist-disputed{ border-left:4px solid var(--brick); background:transparent; }
  .hist-faq h3{ font-size:1.08rem; margin:20px 0 6px; }
  .hist-see-list{ list-style:none; margin:0 0 10px; padding:0; display:grid; gap:10px; }
  .hist-see-list li{ display:grid; gap:2px; padding:12px 16px; border:1px solid var(--line); border-radius:14px; }
  .hist-see-list a{ font-weight:700; color:var(--brass-strong); text-decoration:none; }
  .hist-see-list a:hover{ color:var(--ink); }
  .hist-see-list span{ font-size:.88rem; color:var(--ink-faint); }
  .hist-museum{ margin-top:26px !important; padding:14px 18px; border-radius:14px; background:var(--paper-2); }
  .hist-sources{ margin-top:34px; padding-top:6px; border-top:1px solid var(--line); }
  .hist-sources ol{ margin:0 0 12px; padding-left:1.4em; display:grid; gap:10px; }
  .hist-sources li{ font-size:.92rem; line-height:1.6; color:var(--ink-soft); overflow-wrap:anywhere; }
  .hist-sources .src-title{ color:var(--ink); }
  .hist-sources .src-link{ margin-left:6px; font-weight:700; color:var(--brass-strong); text-decoration:none; white-space:nowrap; }
  .hist-sources .src-link:hover{ color:var(--ink); }
  .hist-note{ font-size:.86rem !important; color:var(--ink-faint) !important; }

  .hist-related{ padding-block:10px 18px; }
  .hist-related > h2{ font-size:clamp(1.4rem,3vw,1.8rem); margin-bottom:6px; }
  .hist-related > h3{ font-family:"PT Sans", sans-serif; font-size:.78rem; font-weight:700; letter-spacing:.1em;
    text-transform:uppercase; color:var(--ink-faint); margin:22px 0 10px; }
  .hist-card h4{ font-family:"Alegreya", Georgia, serif; font-weight:600; font-size:1.1rem; margin:0; color:var(--ink); }
  .hist-card{ padding:18px 20px; }

  .hist-pager{ display:grid; grid-template-columns:1fr auto 1fr; gap:14px; align-items:stretch;
    padding-block:18px 50px; }
  .hist-pager a.hist-pager-prev, .hist-pager a.hist-pager-next{ display:grid; gap:4px; align-content:center;
    min-height:64px; padding:14px 18px; border:1px solid var(--line); border-radius:18px; background:var(--card);
    text-decoration:none; color:var(--ink); }
  .hist-pager a.hist-pager-next{ text-align:right; }
  .hist-pager a.hist-pager-prev:hover, .hist-pager a.hist-pager-next:hover{ border-color:var(--brass); background:var(--paper-2); }
  .hp-label{ font-size:.8rem; font-weight:700; color:var(--brass-strong); }
  .hp-title{ font-family:"Alegreya", Georgia, serif; font-size:1.05rem; line-height:1.35; }
  .hist-pager-back{ align-self:center; justify-content:center; min-height:48px; }
  .hist-pager--topic{ display:flex; flex-wrap:wrap; gap:12px; }
  @media (max-width:760px){
    .hist-pager{ grid-template-columns:1fr; }
    .hist-pager .is-empty{ display:none; }
    .hist-pager-back{ order:3; width:100%; }
    .hist-pager a.hist-pager-next{ text-align:left; }
    .hist-pager a.hist-pager-prev, .hist-pager a.hist-pager-next{ min-height:72px; }
  }

  /* хронология */
  .tl-jump{ display:flex; flex-wrap:wrap; gap:8px; margin-top:22px; }
  .tl-jump a{ padding:8px 14px; border:1px solid var(--line); border-radius:999px; font-size:.86rem; font-weight:700;
    color:var(--ink-soft); text-decoration:none; background:var(--card); min-height:40px; display:inline-flex; align-items:center; }
  .tl-jump a:hover, .tl-jump a:focus-visible{ border-color:var(--brass); color:var(--brass-strong); }
  .tl-wrap{ display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:48px; align-items:start; padding-block:18px 50px; }
  @media (max-width:980px){ .tl-wrap{ grid-template-columns:minmax(0,1fr); gap:30px; } }
  .tl-group{ scroll-margin-top:130px; margin-bottom:26px; }
  .tl-group h2{ font-size:clamp(1.35rem,3vw,1.7rem); margin:0 0 14px; }
  .tl-list{ list-style:none; margin:0; padding:0 0 0 22px; border-left:2px solid var(--line); display:grid; gap:14px; }
  .tl-list li{ position:relative; }
  .tl-list li::before{ content:""; position:absolute; left:-30px; top:24px; width:12px; height:12px; border-radius:50%;
    background:var(--paper); border:2px solid var(--brass); }
  .tl-card{ display:grid; grid-template-columns:128px minmax(0,1fr); gap:18px; padding:18px 20px; border:1px solid var(--line);
    border-radius:18px; background:var(--card); text-decoration:none; color:var(--ink); transition:border-color .15s ease, background .15s ease; }
  .tl-card:hover, .tl-card:focus-visible{ border-color:var(--brass); background:var(--paper-2); }
  .tl-date{ font-family:"Alegreya", Georgia, serif; font-weight:600; font-size:1.5rem; line-height:1.1; color:var(--brass-strong);
    font-variant-numeric:lining-nums tabular-nums; overflow-wrap:anywhere; }
  .tl-body{ display:grid; gap:8px; min-width:0; }
  .tl-title{ font-family:"Alegreya", Georgia, serif; font-weight:600; font-size:1.18rem; line-height:1.3; }
  .tl-sum{ font-size:.93rem; line-height:1.62; color:var(--ink-soft); }
  .tl-foot{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
  .tl-more{ margin-left:auto; font-size:.86rem; font-weight:700; color:var(--brass-strong); }
  @media (max-width:560px){
    .tl-card{ grid-template-columns:minmax(0,1fr); gap:6px; padding:16px; }
    .tl-list{ padding-left:16px; }
    .tl-list li::before{ left:-24px; }
    .tl-more{ margin-left:0; }
  }
  .tl-legend{ position:sticky; top:150px; background:var(--card); border:1px solid var(--line); border-radius:20px; padding:20px 22px; }
  @media (max-width:980px){ .tl-legend{ position:static; } }
  .tl-legend h2{ font-size:1.12rem; margin:0 0 12px; }
  .tl-legend ul, .tl-legend-list{ list-style:none; margin:0 0 14px; padding:0; display:grid; gap:10px; }
  .tl-legend li, .tl-legend-list li{ font-size:.88rem; line-height:1.55; color:var(--ink-soft); }
  .tl-legend p{ font-size:.88rem; line-height:1.6; color:var(--ink-soft); margin:0 0 10px; }

  /* хаб */
  .hub{ padding-block:12px 50px; display:grid; gap:44px; }
  .hub h2{ font-size:clamp(1.45rem,3.2vw,1.95rem); margin:0 0 16px; }
  .hub .see-card h3{ font-size:1.1rem; }
  .hub-eras{ display:grid; gap:14px; }
  .hub-era{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:10px 36px; padding:22px 0;
    border-top:1px solid var(--line); }
  .hub-era h3{ grid-column:1 / -1; font-size:1.3rem; }
  .hub-era p{ margin:0; line-height:1.72; color:var(--ink-soft); }
  .hub-era-list{ list-style:none; margin:0; padding:0; display:grid; gap:8px; align-content:start; }
  .hub-era-list a{ display:flex; gap:12px; align-items:baseline; padding:10px 14px; border:1px solid var(--line);
    border-radius:14px; background:var(--card); text-decoration:none; color:var(--ink); min-height:44px; }
  .hub-era-list a:hover{ border-color:var(--brass); }
  .hub-era-list b{ font-family:"Alegreya", Georgia, serif; color:var(--brass-strong); min-width:6.5em; }
  @media (max-width:760px){ .hub-era{ grid-template-columns:minmax(0,1fr); } .hub-era-list b{ min-width:5.5em; } }
  .hub-metod p, .hub-museums p{ line-height:1.72; color:var(--ink-soft); max-width:74ch; }

  /* мягкое появление — только если человек не просил убрать анимацию */
  @media (prefers-reduced-motion:no-preference){
    .tl-list li, .hist-main > section{ animation:hist-in .45s ease both; }
    @keyframes hist-in{ from{ opacity:0; transform:translateY(6px); } to{ opacity:1; transform:none; } }
  }
  @media print{ .hist-aside, .hist-pager, .hist-related, .tl-jump{ display:none !important; } }
  .hist-head h1{ line-height:1.18; }
  .page-head.hist-head h1{ line-height:1.15; }
  .hist-scale{ max-width:520px; }
  .hist-scale .sc-lbl{ font-size:11px; }
  .tl-legend .detail-link, .hist-aside .detail-link{ font-weight:700; color:var(--brass-strong); text-decoration:none; font-size:.88rem; }
  .tl-legend .detail-link:hover{ color:var(--ink); }
  .timeline--links a{ display:block; text-decoration:none; color:inherit; }
  .timeline--links a:hover span, .timeline--links a:focus-visible span{ color:var(--brass-strong); }
  .timeline-note .inline-link{ white-space:normal; }
  .longread-body .inline-link{ white-space:normal; }

  /* фотографии мест в карточках «Достопримечательностей» */
  .place-photos{ margin:2px 0 0; display:grid; gap:6px; }
  .place-photos.count-2{ grid-template-columns:3fr 2fr; }
  .place-photos picture{ display:block; min-width:0; }
  .place-photos img{ display:block; width:100%; height:180px; object-fit:cover; border-radius:12px; }
  .place-photos.count-1 img{ height:200px; }
  .place-photos figcaption{ grid-column:1 / -1; font-size:.76rem; color:var(--ink-faint); }

  /* фотография на странице истории */
  .hist-figure{ margin:0 0 26px; }
  .hist-figure picture{ display:block; }
  .hist-figure img{ display:block; width:100%; height:auto; max-height:520px; object-fit:cover; border-radius:18px;
    background:var(--paper-2); }
  .hist-figure figcaption{ margin-top:8px; font-size:.84rem; line-height:1.5; color:var(--ink-faint); }
  .hub-figure{ margin:26px 0 0; max-width:1080px; }
  .hub-figure img{ max-height:460px; }
  .step-photo{ margin:10px 0 8px; max-width:520px; }
  .step-photo img{ display:block; width:100%; height:220px; object-fit:cover; border-radius:14px; }
  .step-photo figcaption{ margin-top:5px; font-size:.76rem; color:var(--ink-faint); }

  /* два канала связи на странице «Контакты» */
  .contact-lines{ display:grid; grid-template-columns:repeat(auto-fit, minmax(min(340px, 100%), 1fr));
    gap:18px; padding-block:6px 30px; }
  .contact-line{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:18px; align-items:start;
    padding:24px 26px; border-radius:22px; border:1px solid var(--line); background:var(--card); }
  .contact-line--mail{ background:linear-gradient(135deg, var(--card), var(--paper-2)); border-color:var(--brass); }
  .contact-line-icon{ display:grid; place-items:center; width:52px; height:52px; border-radius:50%;
    background:var(--paper-3); color:var(--brass-strong); }
  .contact-line--mail .contact-line-icon{ background:var(--brass-strong); color:var(--card); }
  .contact-line-icon svg{ width:24px; height:24px; fill:currentColor; }
  .contact-line-body{ display:grid; gap:8px; justify-items:start; min-width:0; }
  .contact-line h2{ font-size:1.2rem; margin:0; }
  .contact-line p{ margin:0; color:var(--ink-soft); line-height:1.6; font-size:.95rem; }
  .contact-line .contact-line-value{ font-family:"Alegreya", Georgia, serif; font-size:clamp(1.25rem, 3.6vw, 1.55rem);
    font-weight:600; overflow-wrap:anywhere; }
  .contact-line .contact-line-value a{ color:var(--ink); text-decoration:none; }
  .contact-line .contact-line-value a:hover{ color:var(--brass-strong); }
  .contact-line .btn{ margin-top:6px; }
  .contact-list-title{ font-size:clamp(1.3rem, 3vw, 1.6rem); margin:4px 0 14px; }
  @media (max-width:420px){ .contact-line{ grid-template-columns:minmax(0,1fr); padding:20px; } }

/* Уведомление о cookie (только при подключённой Метрике) */
.cookie-note{ position:fixed; left:16px; right:16px; bottom:16px; z-index:60; max-width:560px; margin:0 auto;
  display:flex; gap:14px; align-items:center; padding:14px 16px 14px 20px; border-radius:18px;
  background:var(--card); border:1px solid var(--line); box-shadow:0 10px 30px rgba(0,0,0,.18); }
.cookie-note p{ margin:0; font-size:.88rem; line-height:1.5; color:var(--ink-soft); }
.cookie-note .btn{ flex:none; padding:9px 18px; }
@media (max-width:480px){ .cookie-note{ flex-direction:column; align-items:stretch; text-align:left; } }
@media print{ .cookie-note{ display:none; } }

  /* «События» и «За городом» */
  .ev-page, .out-page{ display:grid; gap:34px; padding-block:6px 40px; }
  .ev-block{ display:grid; gap:14px; }
  .ev-block h2{ font-size:1.4rem; margin:0; }
  .ev-lead-line{ margin:0; font-size:.94rem; line-height:1.62; color:var(--ink-soft); max-width:70ch; }
  .ev-grid{ display:grid; gap:16px; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ev-card, .out-card{ display:grid; gap:10px; align-content:start; min-width:0;
    background:var(--card); border:1px solid var(--line); border-radius:20px; padding:22px 24px; }
  .ev-card--past{ background:var(--paper-2); }
  .ev-head{ display:flex; flex-wrap:wrap; gap:8px 12px; align-items:center; }
  .ev-badge{ font-size:.74rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
    color:#fff; background:var(--brass-strong); border-radius:999px; padding:3px 11px; }
  .ev-badge--past{ background:var(--ink-faint); }
  .ev-when{ font-size:.9rem; font-weight:700; color:var(--brass-strong); }
  .ev-card h3, .out-card h3{ font-size:1.18rem; margin:0; }
  .out-card h2{ font-size:1.35rem; margin:0; }
  .out-card h3{ font-size:1rem; margin-top:4px; }
  .ev-place, .out-sub{ margin:0; font-size:.9rem; color:var(--ink-faint); }
  .ev-lead, .out-card p{ margin:0; font-size:.95rem; line-height:1.7; color:var(--ink-soft); }
  .ev-facts{ margin:0; padding-left:1.15em; display:grid; gap:7px; font-size:.92rem;
    line-height:1.65; color:var(--ink-soft); }
  .ev-more{ border-top:1px solid var(--line); padding-top:10px; font-size:.88rem; }
  .ev-more summary{ cursor:pointer; font-weight:700; color:var(--brass-strong); min-height:36px;
    display:flex; align-items:center; }
  .ev-src{ margin:6px 0 0; padding-left:1.15em; display:grid; gap:6px; }
  .ev-src a{ color:var(--brass-strong); overflow-wrap:anywhere; }
  .out-page{ gap:18px; }
  .out-links{ margin:0; }
  .ev-empty{ margin:0; color:var(--ink-soft); }
  @media (max-width:760px){
    .ev-grid{ grid-template-columns:minmax(0,1fr); }
    .ev-card, .out-card{ padding:18px 18px; }
  }

/* ==========================================================================
   Шлифовка (4 октября 2026): отклик, плавность, фокус, мягкое появление.
   Структура, цвета и тексты не менялись.
   Принципы: часто виденное — быстро и тихо; вход — ease-out; только transform
   и opacity; всё отключается при prefers-reduced-motion.
   ========================================================================== */
:root{
  --ease-out:cubic-bezier(.23,1,.32,1);
  --ease-io:cubic-bezier(.77,0,.175,1);
  --lift:0 1px 0 rgba(59,49,40,.04), 0 12px 26px -22px rgba(59,49,40,.45);
  --lift-hover:0 1px 0 rgba(59,49,40,.05), 0 20px 34px -22px rgba(59,49,40,.55);
  color-scheme:light;
}
:root[data-theme="dark"]{
  --lift:0 1px 0 rgba(0,0,0,.25), 0 12px 26px -20px rgba(0,0,0,.7);
  --lift-hover:0 1px 0 rgba(0,0,0,.3), 0 20px 34px -20px rgba(0,0,0,.85);
  color-scheme:dark;
}
html{ -webkit-text-size-adjust:100%; }
body{ -webkit-tap-highlight-color:rgba(184,148,104,.18);
  background-image:radial-gradient(900px 380px at 88% -60px,
      color-mix(in srgb,var(--brass) 13%,transparent), transparent 72%),
    radial-gradient(800px 360px at -10% 160px,
      color-mix(in srgb,var(--bottle) 7%,transparent), transparent 72%);
  background-repeat:no-repeat; }
::selection{ background:color-mix(in srgb,var(--brass) 38%,transparent); }
[id]{ scroll-margin-top:104px; }
a, button, summary, input, select, textarea, label{ touch-action:manipulation; }
p, li, .lede, .sub{ text-wrap:pretty; }
h1, h2, h3{ text-wrap:balance; }
.phone-quick a, .fact .num, .ev-when{ font-variant-numeric:tabular-nums; }

/* карточки: мягкая тень вместо тонкой линии */
.tile, .m-card, .see-card, .ev-card, .out-card, .fact, .tl-card, .contact-card{
  box-shadow:var(--lift); }

/* фокус: кольцо в цвет латуни, заметнее в тёмной теме */
a:focus-visible, button:focus-visible, summary:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible{
  outline:2px solid var(--brass-strong); outline-offset:3px;
  box-shadow:0 0 0 5px color-mix(in srgb,var(--brass) 22%,transparent); }

/* кнопки: объём и быстрый отклик на нажатие */
.btn:not(.ghost){ box-shadow:inset 0 1px 0 rgba(255,255,255,.16), 0 8px 16px -12px rgba(126,93,53,.75); }
.btn:active{ transform:scale(.97); transition-duration:.1s; }

/* нажатие по карточкам и плиткам — сразу видно, что они откликнулись */
.tile, .m-card, .see-card, .tl-card, .hub-era-list a, .mini-card{
  -webkit-user-select:none; user-select:none; }
.tile:active, .see-card:active, .tl-card:active, .mini-card:active,
.hub-era-list a:active{ transform:scale(.985); transition-duration:.1s; }
.m-card:has(a:active){ transform:scale(.99); transition-duration:.1s; }

@media (prefers-reduced-motion:no-preference){
  .see-card, .mini-card, .tl-card, .ev-card, .out-card, .hub-era-list a{
    transition:transform .22s var(--ease-out), box-shadow .22s var(--ease-out),
      border-color .15s ease, background-color .15s ease; }
  .see-go, .more-link, .detail-link{ display:inline-block;
    transition:transform .2s var(--ease-out), color .15s ease; }

  /* сайт «листается» без белой вспышки между страницами (Chrome, Edge, Safari 18+) */
  @view-transition{ navigation:auto; }
  header.site{ view-transition-name:site-header; }
  ::view-transition-group(site-header){ animation:none; }
  ::view-transition-old(root), ::view-transition-new(root){
    animation-duration:.16s; animation-timing-function:ease-out; }

  /* силуэт города проявляется слева направо */
  .skyline > *{ animation:sky-in .9s var(--ease-out) backwards; }
  .skyline > *:nth-child(2){ animation-delay:.12s; }
  .skyline > *:nth-child(3){ animation-delay:.24s; }
  .skyline > *:nth-child(4){ animation-delay:.34s; }
  .skyline > *:nth-child(5){ animation-delay:.44s; }
  .skyline > *:nth-child(6){ animation-delay:.52s; }
  .skyline > *:nth-child(7){ animation-delay:.6s; }
  .skyline > *:last-child{ --sky-o:.55; }
}
@keyframes sky-in{ from{ opacity:0; } to{ opacity:var(--sky-o,1); } }

/* наведение — только там, где есть мышь: на телефоне плитка не «залипает» */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .see-card:hover, .mini-card:hover, .tl-card:hover{
    transform:translateY(-3px); box-shadow:var(--lift-hover); border-color:var(--brass); }
  .see-card:hover .see-go, .more-link:hover, .detail-link:hover{ transform:translateX(3px); }
  .tile:hover, .m-card:hover{ box-shadow:var(--lift-hover); }
  .btn:not(.ghost):hover{ transform:translateY(-1px); }
}
@media (hover:none){
  .tile:hover, .m-card:hover, .see-card:hover, .mini-card:hover{
    transform:none; box-shadow:var(--lift); }
  .tile:hover .go{ transform:none; }
}

/* карточки мягко поднимаются, когда появляются на экране (CSS, без скриптов) */
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference){
    .tile, .m-card, .see-card, .ev-card, .out-card, .hub-era{
      animation:card-in linear backwards; animation-timeline:view();
      animation-range:entry 0% entry 32%; }
  }
}
@keyframes card-in{ from{ opacity:0; transform:translateY(16px); } to{ opacity:1; transform:none; } }
@media print{ .tile, .m-card, .see-card, .ev-card, .out-card, .hub-era{ animation:none !important; } }

/* Плашка про экскурсию: на всю ширину, как блок с адресом выше; номер не рвётся */
.excursion-note{ display:flex; align-items:center; gap:14px; width:100%; max-width:none;
  margin-top:18px; padding:20px 26px; border-radius:18px; font-size:1.02rem;
  background:linear-gradient(90deg, color-mix(in srgb,var(--brass) 20%, var(--paper-2)), var(--paper-2) 70%);
  border:1px solid var(--line); border-left:4px solid var(--brass-strong); box-shadow:var(--lift); }
.excursion-note::before{ content:""; flex:none; width:10px; height:10px; border-radius:50%;
  background:var(--brass-strong); box-shadow:0 0 0 5px color-mix(in srgb,var(--brass) 28%,transparent); }
.nowrap{ white-space:nowrap; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; }
@media (max-width:560px){ .excursion-note{ padding:16px 18px; align-items:flex-start; }
  .excursion-note::before{ margin-top:.5em; } }
.detail-desc-wrap{ padding-bottom:22px; }

/* Подвал: инфоцентр и реквизиты */
.foot-org{ display:grid; grid-template-columns:1.2fr 2fr; gap:30px; margin-top:32px; padding-top:24px;
  border-top:1px solid var(--line); }
.foot-org > *{ min-width:0; }
.foot-org p{ margin:6px 0 0; font-size:.9rem; line-height:1.7; color:var(--ink-soft); }
.foot-org a{ color:var(--ink-soft); text-decoration:none; border-bottom:1px solid var(--line); }
.foot-org a:hover{ color:var(--brass-strong); border-color:var(--brass); }
.foot-org .nowrap, .org-facts .nowrap{ font-weight:inherit; color:inherit; }
.foot-org .foot-bottom{ margin:0; }
@media (max-width:760px){ .foot-org{ grid-template-columns:1fr; gap:20px; } }

/* Контакты: карточка инфоцентра */
.org-card{ display:grid; gap:12px; margin-block:34px 8px; padding:26px 28px; border-radius:20px;
  background:linear-gradient(135deg, var(--card), var(--paper-2)); border:1px solid var(--line);
  box-shadow:var(--lift); }
.org-card h2{ font-size:1.3rem; margin:0; }
.org-lead{ margin:0; font-size:1rem; line-height:1.65; color:var(--ink-soft); max-width:70ch; }
.org-facts{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:8px 22px; margin:6px 0 0; font-size:.95rem; }
.org-facts dt{ color:var(--ink-faint); font-size:.74rem; letter-spacing:.08em; text-transform:uppercase;
  align-self:center; }
.org-facts dd{ margin:0; color:var(--ink); overflow-wrap:anywhere; }
.org-facts a{ color:var(--brass-strong); font-weight:700; text-decoration:none; }
@media (max-width:560px){ .org-card{ padding:20px 18px; } .org-facts{ grid-template-columns:1fr; gap:2px; }
  .org-facts dd{ margin-bottom:10px; } }

/* Главная: «Главное коротко» и блок инфоцентра */
.home-quick{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-top:10px; }
.qf-card{ display:grid; gap:6px; align-content:start; min-width:0; text-decoration:none; color:inherit;
  padding:18px 20px; border-radius:18px; background:var(--card); border:1px solid var(--line);
  box-shadow:var(--lift); }
.qf-label{ font-size:.72rem; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-faint); font-weight:700; }
.qf-value{ font-family:"Alegreya", Georgia, serif; font-weight:700; font-size:1.3rem; line-height:1.2;
  color:var(--ink); overflow-wrap:anywhere; }
.qf-note{ font-size:.86rem; line-height:1.5; color:var(--ink-soft); }
.qf-card--call{ background:linear-gradient(135deg, var(--brass-strong), color-mix(in srgb,var(--brass-strong) 78%, #000));
  border-color:var(--brass-strong); }
.qf-card--call .qf-label, .qf-card--call .qf-note{ color:color-mix(in srgb,var(--card) 82%, transparent); }
.qf-card--call .qf-value{ color:var(--card); }
a.qf-card{ transition:transform .2s var(--ease-out), box-shadow .2s var(--ease-out), border-color .15s ease; }
a.qf-card:active{ transform:scale(.985); }
@media (hover:hover) and (pointer:fine){ a.qf-card:hover{ transform:translateY(-3px); box-shadow:var(--lift-hover);
  border-color:var(--brass); } }
@media (max-width:980px){ .home-quick{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:520px){ .home-quick{ grid-template-columns:minmax(0,1fr); gap:10px; }
  .qf-card{ padding:16px 18px; } }

.tic{ padding-block:8px 44px; }
.tic-inner{ display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr); gap:28px; align-items:center;
  padding:30px 34px; border-radius:22px; border:1px solid var(--line); box-shadow:var(--lift);
  background:radial-gradient(520px 220px at 95% 0%, color-mix(in srgb,var(--brass) 18%, transparent), transparent 70%),
    linear-gradient(135deg, var(--card), var(--paper-2)); }
.tic-text{ display:grid; gap:10px; justify-items:start; min-width:0; }
.tic-text h2{ font-size:clamp(1.4rem,3vw,1.9rem); }
.tic-text p{ margin:0; max-width:60ch; line-height:1.65; color:var(--ink-soft); }
.tic-list{ list-style:none; margin:4px 0 0; padding:0; display:flex; flex-wrap:wrap; gap:8px; }
.tic-list li{ padding:7px 14px; border-radius:999px; background:var(--paper); border:1px solid var(--line);
  font-size:.88rem; font-weight:700; color:var(--ink-soft); }
.tic-actions{ display:grid; gap:12px; justify-items:start; min-width:0; }
.tic-actions .btn{ max-width:100%; }
@media (max-width:820px){ .tic-inner{ grid-template-columns:minmax(0,1fr); padding:24px 22px; } }

/* ==========================================================================
   ПРЕМИУМ-ОФОРМЛЕНИЕ (04.10.2026)
   Золочёные двойные рамки, орнамент, бумажная фактура, ореховый подвал.
   Только оформление: разметка, тексты, ссылки и скрипты не менялись.
   ========================================================================== */
:root{
  --gold:#B8935A; --gold-hi:#E6CB96; --gold-lo:#8A6A3A;
  --frame:color-mix(in srgb,var(--gold) 52%, transparent);
  --frame-soft:color-mix(in srgb,var(--gold) 30%, transparent);
  --btn-top:#9A7644; --btn-bot:#6B4F2C; --btn-fg:#FBF3E4; --btn-bd:#5A4023;
  --btn-top-h:#AB8650; --btn-bot-h:#7A5B34;
  --dropcap:var(--gold-lo);
  --orn:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='104' height='14' viewBox='0 0 104 14'%3E%3Cg fill='none' stroke='%23B8935A' stroke-width='1'%3E%3Cpath d='M0 7H42M62 7H104'/%3E%3Cpath d='M52 1.8 57.2 7 52 12.2 46.8 7Z' fill='%23B8935A'/%3E%3C/g%3E%3C/svg%3E");
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .36 0 0 0 0 .27 0 0 0 0 .17 0 0 0 .5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
:root[data-theme="dark"]{
  --gold:#C9A56E; --gold-hi:#EBD3A2; --gold-lo:#D9BC8A;
  --frame:color-mix(in srgb,var(--gold) 46%, transparent);
  --frame-soft:color-mix(in srgb,var(--gold) 26%, transparent);
  --btn-top:#EDD6A6; --btn-bot:#C6A26F; --btn-fg:#2A1F16; --btn-bd:#A9864F;
  --btn-top-h:#F4E2BB; --btn-bot-h:#D2AF7C;
  --dropcap:var(--gold-hi);
}
html{ scrollbar-color:color-mix(in srgb,var(--gold) 70%, transparent) var(--paper-2); }

/* бумажная фактура: едва заметное зерно под всем содержимым */
body::before{ content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
  background:var(--grain); opacity:.14; mix-blend-mode:multiply; }
:root[data-theme="dark"] body::before{ opacity:.22; mix-blend-mode:screen; filter:invert(1) opacity(.35); }
@media print{ body::before{ display:none; } }

/* шапка: золотая нить под ней и медальон-монограмма */
header.site::after{ content:""; position:absolute; left:0; right:0; bottom:-1px; height:1px; pointer-events:none;
  background:linear-gradient(90deg, transparent, var(--gold) 18%, var(--gold-hi) 50%, var(--gold) 82%, transparent); }
.brand .mark{ background:linear-gradient(145deg, var(--gold-hi), var(--gold) 55%, var(--gold-lo));
  color:#fff; border:none; text-shadow:0 1px 1px rgba(60,40,15,.45);
  box-shadow:0 0 0 2px var(--paper), 0 0 0 3px var(--gold), 0 4px 10px -4px rgba(60,40,15,.6); }
:root[data-theme="dark"] .brand .mark{ color:#2A1F16; text-shadow:none; }
.tab-btn.active{ text-shadow:0 0 .01px currentColor; }

/* надписи-«подзаголовки» и орнамент под заголовками */
.eyebrow{ display:inline-flex; align-items:center; gap:.7em; }
.eyebrow::before{ content:""; flex:none; width:6px; height:6px; transform:rotate(45deg);
  background:var(--gold); box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 22%, transparent); }
.section-head h2::after, .page-head h1::after, .page-head h2::after, .hero h1::after,
.map-teaser h2::after, .tic-text h2::after, .org-card h2::after, .place-block > h2::after{
  content:""; display:block; width:104px; height:14px; margin-top:14px;
  background:var(--orn) left center / contain no-repeat; }
.hero h1::after{ margin-top:18px; }

/* рамки: наружная линия + золочёная внутренняя (паспарту) */
.tile, .see-card, .qf-card, .ev-card, .out-card, .tic-inner, .org-card, .faq-item, .contact-card,
.contact-line, .place-card, .fact, .info-strip, .tl-card, .map-panel, .detail-seal, .m-card-body,
.hub-era-list a, .mini-card{ position:relative; }
.tile, .see-card, .qf-card, .ev-card, .out-card, .tic-inner, .org-card, .faq-item, .contact-card,
.contact-line, .place-card, .fact, .info-strip, .tl-card, .map-panel, .detail-seal, .m-card{
  border-color:var(--frame-soft); }
.tile::before, .see-card::before, .qf-card::before, .ev-card::before, .out-card::before,
.tic-inner::before, .org-card::before, .faq-item::before, .contact-card::before, .contact-line::before,
.place-card::before, .fact::before, .info-strip::before, .tl-card::before, .map-panel::before,
.detail-seal::before, .m-card-body::before{
  content:""; position:absolute; inset:6px; border:1px solid var(--frame-soft); border-radius:13px;
  pointer-events:none; transition:border-color .25s var(--ease-out); }
.fact::before{ border-radius:10px; }
.info-strip::before{ inset:5px; }
.qf-card--call::before{ border-color:rgba(255,236,200,.38); }
@media (hover:hover) and (pointer:fine){
  .tile:hover::before, .see-card:hover::before, .qf-card:hover::before, .tl-card:hover::before,
  .m-card:hover .m-card-body::before{ border-color:var(--gold); }
}
.m-card{ border-color:var(--frame-soft); }
.m-card-body::before{ inset:7px 7px 7px; }

/* знак на карточке музея: рамка-«паспарту» вокруг логотипа */
.detail-seal{ box-shadow:var(--lift), 0 0 0 6px var(--paper), 0 0 0 7px var(--frame); }
.detail-seal::before{ inset:10px; border-color:rgba(255,255,255,.22); z-index:2; }

/* кнопки: латунь с глубиной; светлая — с золочёной двойной линией */
.btn:not(.ghost){ background:linear-gradient(180deg, var(--btn-top), var(--btn-bot)); border-color:var(--btn-bd);
  color:var(--btn-fg);
  box-shadow:inset 0 1px 0 rgba(255,240,210,.38), inset 0 -1px 0 rgba(0,0,0,.18), 0 8px 14px -12px rgba(74,50,20,.7); }
.btn:not(.ghost):hover{ background:linear-gradient(180deg, var(--btn-top-h), var(--btn-bot-h)); border-color:var(--btn-bd);
  color:var(--btn-fg); }
.btn.ghost{ background:color-mix(in srgb,var(--card) 70%, transparent); border-color:var(--frame);
  box-shadow:inset 0 0 0 3px var(--paper), inset 0 0 0 4px var(--frame-soft); }
.btn.ghost:hover{ background:var(--card); border-color:var(--gold); color:var(--brass-strong); }

/* плашка про экскурсию и обзорные карточки с градиентом */
.excursion-note{ border-color:var(--frame-soft); border-left-color:var(--gold-lo); }

/* буквица в описании музея */
.detail-desc::first-letter{ float:left; font-family:"Alegreya",Georgia,serif; font-weight:700;
  font-size:3.5em; line-height:.8; padding:.08em .12em 0 0; color:var(--dropcap); }

/* галерея: снимки в золочёных рамках с паспарту */
.gallery-item{ padding:7px; border-color:var(--frame); background:var(--card);
  box-shadow:var(--lift), inset 0 0 0 1px var(--frame-soft); }
.gallery-item img{ border-radius:12px; }
.gallery-zoom{ right:18px; top:18px; }

/* тёмные «ореховые» полосы: «О городе» и подвал; цвета подменяются переменными */
footer.site, .home-teaser{
  --paper:#241A12; --paper-2:#2B2017; --card:#35281C; --ink:#F3E7D0; --ink-soft:#D9C8AB; --ink-faint:#B7A387;
  --line:rgba(230,203,150,.26); --frame:rgba(230,203,150,.42); --frame-soft:rgba(230,203,150,.24);
  --brass:#D5B57F; --brass-strong:#EBD1A0; --gold:#C9A56E;
  --btn-top:#EDD6A6; --btn-bot:#C6A26F; --btn-fg:#2A1F16; --btn-bd:#A9864F; --btn-top-h:#F4E2BB; --btn-bot-h:#D2AF7C;
  color:var(--ink);
  background:radial-gradient(700px 260px at 12% 0%, rgba(201,165,110,.16), transparent 70%),
    linear-gradient(180deg,#30241A,#1F1610); }
footer.site{ position:relative; border-top:none; }
footer.site::before{ content:""; position:absolute; left:0; right:0; top:0; height:2px; pointer-events:none;
  background:linear-gradient(90deg, transparent, #C9A56E 20%, #EBD3A2 50%, #C9A56E 80%, transparent); }
.home-teaser{ border-block:1px solid #5B4527; position:relative; }
.home-teaser .teaser-text{ color:var(--ink); }
.home-teaser .eyebrow{ color:var(--brass-strong); }
footer.site .foot-title{ color:var(--brass-strong); }
footer.site a{ color:var(--ink-soft); }
footer.site a:hover{ color:var(--gold-hi); }
footer.site .foot-bottom{ color:var(--ink-faint); }
footer.site .foot-org a{ border-color:rgba(230,203,150,.3); }

@media (max-width:560px){
  .tile::before, .see-card::before, .qf-card::before, .ev-card::before, .out-card::before,
  .tic-inner::before, .org-card::before, .faq-item::before, .contact-card::before,
  .contact-line::before, .place-card::before, .tl-card::before, .map-panel::before,
  .m-card-body::before{ inset:5px; border-radius:11px; }
  .detail-seal{ box-shadow:var(--lift), 0 0 0 5px var(--paper), 0 0 0 6px var(--frame); }
}

.home-faq{ padding-top:40px; }

/* ==========================================================================
   ФОТОГРАФИИ (04.10.2026)
   Мозаика «Старица в кадре» и широкие снимки под заголовками страниц:
   золочёная рамка с паспарту, подпись на тёплой подложке, мягкое приближение.
   ========================================================================== */
.home-photos{ padding-block:8px 58px; }
.ph-mosaic{ display:grid; gap:14px; grid-template-columns:repeat(12,minmax(0,1fr));
  grid-template-rows:210px 210px 250px; }
.ph-fig{ margin:0; min-width:0; padding:6px; border:1px solid var(--frame); border-radius:20px;
  background:var(--card); box-shadow:var(--lift), inset 0 0 0 1px var(--frame-soft); }
.ph-1{ grid-column:1 / 9; grid-row:1 / 3; }
.ph-2{ grid-column:9 / 13; grid-row:1 / 3; }
.ph-3{ grid-column:1 / 5; grid-row:3; }
.ph-4{ grid-column:5 / 9; grid-row:3; }
.ph-5{ grid-column:9 / 13; grid-row:3; }
.ph-link{ position:relative; display:block; height:100%; border-radius:14px; overflow:hidden;
  color:#FFF8EA; text-decoration:none; background:var(--paper-2); isolation:isolate; }
.ph-link picture{ display:block; height:100%; }
.ph-img{ display:block; width:100%; height:100%; object-fit:cover; }
/* тёплая подложка под подписью, чтобы текст читался на любом снимке */
.ph-link::after{ content:""; position:absolute; inset:auto 0 0 0; height:46%; pointer-events:none; z-index:1;
  background:linear-gradient(180deg, transparent, rgba(34,22,10,.72)); }
.ph-link figcaption{ position:absolute; left:0; right:0; bottom:0; z-index:2; padding:0 16px 13px;
  display:flex; align-items:center; gap:.6em; font-family:"Alegreya",Georgia,serif; font-weight:700;
  font-size:1.12rem; line-height:1.25; text-shadow:0 1px 8px rgba(20,12,4,.55); }
.ph-link figcaption::before{ content:""; flex:none; width:7px; height:7px; transform:rotate(45deg);
  background:var(--gold-hi); box-shadow:0 0 0 3px rgba(230,203,150,.28); }
.ph-1 figcaption{ font-size:1.3rem; }
.ph-link:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; }
/* тонкая внутренняя рамка поверх снимка */
.ph-link::before{ content:""; position:absolute; inset:7px; z-index:3; pointer-events:none; border-radius:9px;
  border:1px solid rgba(255,240,205,.5); opacity:.0; transition:opacity .3s var(--ease-out); }
@media (hover:hover) and (pointer:fine){
  .ph-link:hover::before{ opacity:1; }
}
@media (prefers-reduced-motion:no-preference){
  .ph-img{ transition:transform .7s var(--ease-out); }
  @media (hover:hover) and (pointer:fine){ .ph-link:hover .ph-img{ transform:scale(1.045); } }
}
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference){
    .ph-fig{ animation:card-in linear backwards; animation-timeline:view(); animation-range:entry 0% entry 34%; }
  }
}

@media (max-width:900px){
  .ph-mosaic{ grid-template-columns:repeat(2,minmax(0,1fr)); grid-template-rows:auto; grid-auto-rows:auto; }
  .ph-1{ grid-column:1 / 3; grid-row:auto; height:clamp(200px,52vw,380px); }
  .ph-2,.ph-3,.ph-4,.ph-5{ grid-column:auto; grid-row:auto; height:clamp(170px,40vw,280px); }
}
@media (max-width:560px){
  .ph-mosaic{ gap:10px; }
  .ph-fig{ padding:5px; border-radius:16px; }
  .ph-link{ border-radius:11px; }
  .ph-link figcaption{ padding:0 11px 10px; font-size:.98rem; }
  .ph-1 figcaption{ font-size:1.12rem; }
}

/* широкий снимок под заголовком страницы */
.ph-banner{ margin:6px 0 30px; padding:7px; border:1px solid var(--frame); border-radius:24px;
  background:var(--card); box-shadow:var(--lift), inset 0 0 0 1px var(--frame-soft); }
.ph-banner-in{ position:relative; border-radius:17px; overflow:hidden; background:var(--paper-2);
  aspect-ratio:21 / 8; }
.ph-banner-in picture{ display:block; height:100%; }
.ph-banner-in .ph-img{ height:100%; }
.ph-banner-in::before{ content:""; position:absolute; inset:9px; z-index:2; pointer-events:none; border-radius:11px;
  border:1px solid rgba(255,240,205,.42); }
@media (max-width:700px){
  .ph-banner{ padding:5px; border-radius:18px; margin-bottom:22px; }
  .ph-banner-in{ aspect-ratio:16 / 8; border-radius:13px; }
  .ph-banner-in::before{ inset:7px; border-radius:8px; }
}
@media print{ .ph-fig{ animation:none !important; } }

/* карточка места с тремя и четырьмя снимками: сетка 2 × N, первый снимок во всю ширину при трёх */
.place-photos.count-3, .place-photos.count-4{ grid-template-columns:1fr 1fr; }
.place-photos.count-3 picture:first-of-type{ grid-column:1 / -1; }
.place-photos.count-3 picture:first-of-type img{ height:200px; }
.place-photos.count-4 img{ height:130px; }

/* ночные панорамы смотровой площадки: в карточке места — друг под другом во всю ширину */
.place-photos.pano{ grid-template-columns:1fr; }
.place-photos.pano img{ height:auto; aspect-ratio:1672 / 470; }
.place-photos.pano.count-2 picture:first-of-type img{ aspect-ratio:1672 / 466; }

/* широкая полоса мозаики на главной: «ночная» фотография под основными */
.ph-mosaic{ grid-template-rows:210px 210px 250px 250px; }
.ph-6{ grid-column:1 / 13; grid-row:4; }
.ph-6 .ph-img{ object-position:50% 52%; }
@media (max-width:900px){
  .ph-mosaic{ grid-template-rows:auto; }
  .ph-6{ grid-column:1 / 3; grid-row:auto; height:clamp(150px,44vw,260px); }
}

/* ==========================================================================
   АНОНС: «Музей Фото» и музейно-выставочный комплекс (04.10.2026)
   ========================================================================== */
.soon{ padding-block:8px 56px; }
.soon-grid{ display:grid; gap:18px; grid-template-columns:minmax(0,7fr) minmax(0,5fr); align-items:stretch; }
.soon-card{ position:relative; display:grid; gap:16px; align-content:start; min-width:0; padding:22px 24px;
  background:var(--card); border:1px solid var(--frame-soft); border-radius:22px; box-shadow:var(--lift); }
.soon-card::before{ content:""; position:absolute; inset:6px; border:1px solid var(--frame-soft); border-radius:17px;
  pointer-events:none; }
.soon-card--photo{ padding:22px 24px 24px; }
.soon-photos{ position:relative; display:grid; gap:10px; grid-template-columns:minmax(0,3fr) minmax(0,2fr); z-index:1; }
.soon-photo{ margin:0; padding:5px; border:1px solid var(--frame); border-radius:16px; background:var(--card);
  box-shadow:inset 0 0 0 1px var(--frame-soft); }
.soon-photo picture{ display:block; height:100%; }
.soon-img{ display:block; width:100%; height:240px; object-fit:cover; border-radius:11px; }
.soon-photo-2 .soon-img{ object-position:40% 50%; }
.soon-body{ position:relative; z-index:1; display:grid; gap:12px; align-content:start; }
.soon-body h3{ margin:0; font-size:1.45rem; }
.soon-body p{ margin:0; font-size:.98rem; line-height:1.65; color:var(--ink-soft); }
.soon-badge{ display:inline-flex; align-items:center; gap:.6em; width:max-content; max-width:100%;
  padding:5px 13px 5px 11px; border-radius:999px; font-size:.74rem; font-weight:800; letter-spacing:.09em;
  text-transform:uppercase; color:var(--brass-strong);
  background:color-mix(in srgb,var(--gold) 15%, var(--paper)); border:1px solid var(--frame); }
.soon-badge::before{ content:""; flex:none; width:6px; height:6px; transform:rotate(45deg); background:var(--gold);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 24%, transparent); }
.soon-tags{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:8px; }
.soon-tags li{ padding:7px 14px; border-radius:999px; background:var(--paper); border:1px solid var(--line);
  font-size:.88rem; font-weight:700; color:var(--ink-soft); }
.soon-body .detail-link{ width:max-content; max-width:100%; }
@media (max-width:900px){
  .soon-grid{ grid-template-columns:minmax(0,1fr); }
}
@media (max-width:560px){
  .soon{ padding-bottom:44px; }
  .soon-card, .soon-card--photo{ padding:18px 16px 20px; border-radius:18px; }
  .soon-card::before{ inset:5px; border-radius:13px; }
  .soon-photos{ grid-template-columns:minmax(0,1fr); }
  .soon-img{ height:190px; }
  .soon-body h3{ font-size:1.3rem; }
}
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference){
    .soon-card{ animation:card-in linear backwards; animation-timeline:view(); animation-range:entry 0% entry 34%; }
  }
}
@media print{ .soon-card{ animation:none !important; } }

/* анонс с одним снимком: фото слева, текст справа; на узких экранах — друг под другом */
.soon-card--photo{ grid-template-columns:minmax(0,23fr) minmax(0,20fr); align-items:center; gap:22px; }
.soon-photos{ grid-template-columns:minmax(0,1fr); }
.soon-img{ height:300px; object-position:50% 50%; }
@media (max-width:700px){
  .soon-card--photo{ grid-template-columns:minmax(0,1fr); gap:16px; }
  .soon-img{ height:260px; }
}
@media (max-width:560px){ .soon-img{ height:230px; } }

/* ==========================================================================
   ЗАПИСЬ НА ЭКСКУРСИЮ, КНОПКА «НАЗАД», НОВЫЕ БЛОКИ ГЛАВНОЙ (05.10.2026)
   Принципы: поле — минимум 46 px высотой и 16 px шрифтом (на телефоне экран
   не «прыгает»); вход окна — ease-out, 200 мс, только opacity и transform;
   выход быстрее входа; hover — только там, где есть мышь; всё тихо
   отключается при prefers-reduced-motion.
   ========================================================================== */
:root{
  --zerr:#A5402F;
  --zerr-bg:color-mix(in srgb,#A5402F 9%, var(--card));
}
:root[data-theme="dark"]{ --zerr:#E8A08F; --zerr-bg:color-mix(in srgb,#E8A08F 10%, var(--card)); }

/* ---------- кнопка «Назад» ---------- */
.back-row{ padding-block:14px 0; }
.back-row + .crumbs{ padding-top:10px; }
.back-btn{ display:inline-flex; align-items:center; gap:8px; min-height:38px; padding:7px 16px 7px 12px;
  border-radius:999px; border:1px solid var(--line); background:var(--card); color:var(--ink-soft);
  font:700 .86rem/1 "PT Sans", system-ui, sans-serif; text-decoration:none; cursor:pointer;
  box-shadow:var(--lift);
  transition:transform .16s var(--ease-out), border-color .15s ease, color .15s ease, background-color .15s ease; }
.back-btn span{ display:inline-block; font-size:1.05rem; line-height:1; transition:transform .2s var(--ease-out); }
.back-btn:active{ transform:scale(.97); }
@media (hover:hover) and (pointer:fine){
  .back-btn:hover{ border-color:var(--brass); color:var(--brass-strong); }
  .back-btn:hover span{ transform:translateX(-3px); }
}

/* ---------- главная: название и три абзаца — растянуты в ширину ---------- */
.hero{ gap:18px; padding-block:40px 34px; }
.hero h1{ font-size:clamp(1.85rem, 3.55vw, 3.05rem); line-height:1.12; max-width:none; text-wrap:balance; }
.hero-lede{ display:grid; gap:12px; max-width:68ch; font-size:1.04rem; line-height:1.6; color:var(--ink-soft); margin:0; }
.hero-lede p{ margin:0; }
@media (min-width:660px) and (max-width:1039px){
  .hero-lede{ display:block; max-width:none; column-count:2; column-gap:36px; }
  .hero-lede p{ margin:0 0 12px; }
}
@media (min-width:1040px){
  .hero-lede{ max-width:none; grid-template-columns:minmax(0,.8fr) minmax(0,1.3fr) minmax(0,1.1fr); gap:0; font-size:1rem; }
  .hero-lede p{ padding-inline:30px; border-left:1px solid var(--line); }
  .hero-lede p:first-child{ padding-left:0; border-left:0; }
  .hero-lede p:last-child{ padding-right:0; }
}
@media (max-width:520px){ .hero-lede{ font-size:1rem; } }
.hero-row .btn{ justify-content:center; }

/* ---------- блок инфоцентра: главное — питание ---------- */
.tic-text p.tic-lead{ font-family:"Alegreya", Georgia, serif; font-size:1.2rem; line-height:1.5; color:var(--ink); }
.tic-list li.is-key{ background:var(--brass-strong); border-color:var(--brass-strong); color:var(--card);
  box-shadow:0 8px 16px -12px rgba(126,93,53,.75); }
:root[data-theme="dark"] .tic-list li.is-key{ color:#2A1F16; }
.tic-actions .btn{ justify-content:center; }

/* ---------- страницы: плашка со второй ссылкой, контакты, согласие ---------- */
.info-cell .info-sub{ font-size:.88rem; font-weight:700; color:var(--brass-strong); text-decoration:none; }
.info-cell .info-sub:hover{ text-decoration:underline; }
.org-actions{ display:flex; flex-wrap:wrap; gap:10px; margin-top:10px; }
.contacts-note{ margin:18px 0 0; color:var(--ink-soft); font-size:.95rem; }
.foot-zapis{ font-weight:700; }
.legal{ grid-template-columns:minmax(0,1fr); }
.legal .longread-body{ max-width:70ch; }

/* ---------- окно записи ---------- */
html.zlock{ overflow:hidden; padding-right:var(--sbw,0px); }
.zdlg{ padding:0; border:0; background:transparent; color:var(--ink); overflow:visible;
  width:min(660px, calc(100vw - 32px)); max-width:none; max-height:none; margin:auto; }
.zdlg:not([open]){ display:none; }
.zdlg::backdrop{ background:rgba(30,25,19,.58); }
.zdlg-card{ position:relative; display:block; max-height:calc(100dvh - 32px); overflow-y:auto; overscroll-behavior:contain;
  background:var(--card); border:1px solid var(--line); border-radius:24px;
  box-shadow:0 2px 0 rgba(255,255,255,.35) inset, 0 40px 80px -28px rgba(20,14,8,.65); }
.zdlg-head{ position:sticky; top:0; z-index:2; display:flex; padding:16px 22px 10px;
  background:linear-gradient(var(--card) 72%, color-mix(in srgb,var(--card) 0%, transparent)); }
.zdlg-body{ display:grid; gap:12px; padding:2px 28px 28px; }
.zdlg-body h2{ font-size:clamp(1.6rem, 4vw, 2rem); line-height:1.15; margin:0; }
.zdlg-body .eyebrow{ justify-self:start; }
.zdlg-lead{ margin:0 0 4px; color:var(--ink-soft); line-height:1.6; }

@media (prefers-reduced-motion:no-preference){
  .zdlg{ opacity:0; transform:translateY(12px) scale(.98);
    transition:opacity .14s var(--ease-out), transform .14s var(--ease-out); }
  .zdlg[open]{ opacity:1; transform:none; transition-duration:.22s; }
  .zdlg::backdrop{ opacity:0; transition:opacity .16s ease; }
  .zdlg[open]::backdrop{ opacity:1; transition-duration:.22s; }
  @starting-style{
    .zdlg[open]{ opacity:0; transform:translateY(12px) scale(.98); }
    .zdlg[open]::backdrop{ opacity:0; }
  }
}
@supports (transition-behavior:allow-discrete){
  @media (prefers-reduced-motion:no-preference){
    .zdlg{ transition-property:opacity, transform, display, overlay; transition-behavior:allow-discrete;
      transition-duration:.14s; transition-timing-function:var(--ease-out); }
    .zdlg[open]{ transition-duration:.22s; }
    .zdlg::backdrop{ transition-property:opacity, display, overlay; transition-behavior:allow-discrete; }
  }
}

/* на телефоне окно — «шторка» снизу, почти на всю высоту */
@media (max-width:560px){
  .zdlg{ width:100%; max-width:100%; margin:auto 0 0; }
  .zdlg-card{ max-height:min(94dvh, 100dvh - 12px); border-radius:24px 24px 0 0; border-bottom:0;
    padding-bottom:env(safe-area-inset-bottom,0px); }
  .zdlg-head{ padding:14px 14px 8px; }
  .zdlg-body{ padding:2px 18px 22px; }
  @media (prefers-reduced-motion:no-preference){
    .zdlg{ transform:translateY(36px); }
    @starting-style{ .zdlg[open]{ transform:translateY(36px); } }
  }
}

/* ---------- форма ---------- */
.zf{ display:grid; gap:16px; min-width:0; }
.zf[hidden]{ display:none; }
.zf-grid{ display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:14px 14px; }
.zf-field{ display:grid; gap:6px; align-content:start; min-width:0; }
.zf-grid > .zf-field{ grid-column:span 3; }
.zf-grid > .zf-field--full{ grid-column:1 / -1; }
.zf-grid > .zf-field--third{ grid-column:span 2; }
.zf-label{ display:flex; justify-content:space-between; align-items:baseline; gap:8px;
  font-weight:700; font-size:.9rem; color:var(--ink); }
.zf-opt{ font-weight:400; font-size:.78rem; color:var(--ink-faint); }
.zf input[type="text"], .zf input[type="tel"], .zf input[type="date"], .zf input[type="number"],
.zf select, .zf textarea{
  width:100%; min-height:46px; padding:10px 14px; border-radius:12px; border:1px solid var(--line);
  background-color:var(--paper); color:var(--ink); font:inherit; font-size:16px; line-height:1.35;
  transition:border-color .15s ease, box-shadow .15s ease, background-color .15s ease; }
.zf textarea{ min-height:92px; resize:vertical; }
.zf input::placeholder, .zf textarea::placeholder{ color:var(--ink-faint); opacity:1; }
.zf select{ appearance:none; -webkit-appearance:none; padding-right:40px; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9' fill='none' stroke='%237E5D35' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1.5 1.5 7 7l5.5-5.5'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 15px center; }
:root[data-theme="dark"] .zf select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9' fill='none' stroke='%23E3C08E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1.5 1.5 7 7l5.5-5.5'/%3E%3C/svg%3E"); }
.zf select:invalid{ color:var(--ink-faint); }
.zf select option{ background-color:var(--card); color:var(--ink); }
.zf input[type="date"]{ appearance:none; -webkit-appearance:none; text-align:left; display:block; }
.zf input[type="date"]::-webkit-date-and-time-value{ text-align:left; }
.zf input:focus-visible, .zf select:focus-visible, .zf textarea:focus-visible{
  outline:2px solid transparent; border-color:var(--brass-strong);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--brass) 38%, transparent); }
@media (hover:hover) and (pointer:fine){
  .zf input:not(:focus):hover, .zf select:not(:focus):hover, .zf textarea:not(:focus):hover{ border-color:var(--brass); }
}
.zf-hint{ margin:0; font-size:.8rem; line-height:1.4; color:var(--ink-faint); }

/* число человек */
.zf-stepper{ display:grid; grid-template-columns:46px minmax(0,1fr) 46px; gap:6px; }
.zf-stepper input{ text-align:center; padding-inline:6px; -moz-appearance:textfield; appearance:textfield; }
.zf-stepper input::-webkit-outer-spin-button, .zf-stepper input::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.zf-step{ min-height:46px; border-radius:12px; border:1px solid var(--line); background:var(--paper); color:var(--ink);
  font-size:1.45rem; line-height:1; cursor:pointer; padding:0;
  transition:transform .12s var(--ease-out), border-color .15s ease, color .15s ease; }
.zf-step:active{ transform:scale(.94); }
@media (hover:hover) and (pointer:fine){ .zf-step:hover{ border-color:var(--brass); color:var(--brass-strong); } }

/* ошибки */
.zf-err{ margin:0; font-size:.84rem; line-height:1.4; color:var(--zerr); font-weight:700; }
[data-invalid] > input, [data-invalid] > select, [data-invalid] > textarea, [data-invalid] .zf-stepper input{
  border-color:var(--zerr); background-color:var(--zerr-bg); }
[data-invalid] > input:focus-visible, [data-invalid] > select:focus-visible, [data-invalid] > textarea:focus-visible{
  border-color:var(--zerr); box-shadow:0 0 0 3px color-mix(in srgb,var(--zerr) 28%, transparent); }
.zf-summary{ margin:0; padding:12px 14px; border-radius:12px; font-size:.92rem; line-height:1.5; color:var(--ink);
  background:var(--zerr-bg); border:1px solid color-mix(in srgb,var(--zerr) 45%, var(--line)); }

/* согласие */
.zf-field--consent{ display:grid; gap:6px; }
.zf-consent{ display:flex; gap:12px; align-items:flex-start; padding-block:4px; cursor:pointer;
  font-size:.92rem; line-height:1.5; color:var(--ink-soft); }
.zf-consent input{ flex:none; width:22px; height:22px; margin:1px 0 0; accent-color:var(--brass-strong); cursor:pointer; }
.zf-consent a{ color:var(--brass-strong); font-weight:700; text-underline-offset:3px; }
[data-invalid] .zf-consent{ color:var(--zerr); }

/* ловушка для роботов: человек её не видит */
.zf-hp{ position:absolute !important; left:-10000px; top:auto; width:1px; height:1px; overflow:hidden; }

.zf-actions{ display:flex; flex-wrap:wrap; align-items:center; gap:12px 20px; margin-top:2px; }
.zf-submit{ justify-content:center; min-height:50px; padding:13px 30px; font-size:1.02rem; position:relative; }
.zf-submit.is-busy{ cursor:progress; opacity:.85; }
.zf-submit.is-busy::before{ content:""; width:16px; height:16px; border-radius:50%;
  border:2px solid color-mix(in srgb,var(--card) 35%, transparent); border-top-color:var(--card); }
@media (prefers-reduced-motion:no-preference){
  .zf-submit.is-busy::before{ animation:zf-spin .7s linear infinite; }
}
@keyframes zf-spin{ to{ transform:rotate(360deg); } }
.zf-alt{ margin:0; font-size:.92rem; color:var(--ink-soft); }
.zf-alt a{ color:var(--brass-strong); font-weight:700; text-decoration:none; }
.zf-note{ margin:0; font-size:.82rem; line-height:1.5; color:var(--ink-faint); }

/* «Заявка отправлена» */
.zf-done{ display:grid; gap:10px; justify-items:center; text-align:center; padding:10px 0 4px; outline:none; }
.zf-done[hidden]{ display:none; }
.zf-done h3{ font-size:1.6rem; margin:0; }
.zf-done p{ margin:0; max-width:44ch; color:var(--ink-soft); line-height:1.6; }
.zf-done .zf-done-sum{ color:var(--ink); font-weight:700; }
.zf-done-mark{ display:grid; place-items:center; width:64px; height:64px; border-radius:50%;
  background:color-mix(in srgb,var(--bottle) 24%, var(--card)); border:1px solid var(--bottle); }
.zf-done-mark svg{ width:32px; height:32px; fill:none; stroke:var(--brass-strong); stroke-width:2.4;
  stroke-linecap:round; stroke-linejoin:round; }
:root[data-theme="dark"] .zf-done-mark svg{ stroke:var(--bottle); }
@media (prefers-reduced-motion:no-preference){
  .zf-done:not([hidden]){ animation:zf-pop .32s var(--ease-out) both; }
  .zf-done:not([hidden]) .zf-done-mark svg path{ stroke-dasharray:26; stroke-dashoffset:26;
    animation:zf-check .42s .12s var(--ease-out) forwards; }
}
@keyframes zf-pop{ from{ opacity:0; transform:translateY(8px) scale(.98); } to{ opacity:1; transform:none; } }
@keyframes zf-check{ to{ stroke-dashoffset:0; } }
.zf-done-actions{ display:flex; flex-wrap:wrap; justify-content:center; gap:10px; margin-top:8px; }

/* отдельная страница записи */
.zpage{ padding-block:8px 56px; }
.zpage-card{ max-width:760px; padding:30px 30px 28px; border-radius:24px; background:var(--card);
  border:1px solid var(--line); box-shadow:var(--lift); }

/* узкие экраны: дата и время — рядом, остальное — в столбик */
@media (max-width:560px){
  .zf-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px 10px; }
  .zf-grid > .zf-field{ grid-column:1 / -1; }
  .zf-grid > .zf-field--third{ grid-column:span 1; }
  .zf-grid > .zf-field--third:has(.zf-stepper){ grid-column:1 / -1; }
  .zf-actions .btn{ flex:1 1 100%; }
  .zpage-card{ padding:22px 18px; border-radius:20px; }
}
@media (max-width:360px){
  .zf-grid > .zf-field--third{ grid-column:1 / -1; }
}

/* длинное название сайта в шапке: на телефоне — в две строки, без подзаголовка */
@media (max-width:760px){
  .brand-name{ font-size:.98rem; line-height:1.15; letter-spacing:.03em; }
  .brand-sub{ display:none; }
}
@media (min-width:761px){ .brand-name{ font-size:1.08rem; } }
.org-card{ margin-block:22px 40px; }
.info-cell .info-sub{ display:flex; margin-top:2px; }
.map-note:empty{ display:none; }
footer.site a.foot-zapis{ color:var(--gold-hi); font-weight:700; text-decoration:underline;
  text-underline-offset:4px; text-decoration-thickness:1px; margin-top:4px; width:max-content; }
footer.site a.foot-zapis:hover{ color:var(--card); }


/* ---------- запись на экскурсию под каждым музеем ---------- */
.more-book{ margin-top:10px; }
.more-book .btn{ justify-content:center; }
@media (max-width:520px){ .more-book .btn{ width:100%; } }
.m-card-actions .m-card-zapis{ flex:1 1 100%; justify-content:center; }
