: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);
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --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);
    }
  }
  :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; }

  /* ------------------------------------------- шапка: компактная на телефоне */
  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; } }

  /* собственный слой: элементы Leaflet не всплывают над шапкой */
  .map-holder{ position:relative; z-index:0; isolation:isolate; }
  #map{ height:clamp(440px, 66vh, 760px); border-radius:22px; border:1px solid var(--line);
    background:var(--paper-2); }
  @media (max-width:640px){ #map{ height:clamp(340px, 62vh, 540px); border-radius:18px; } }
  .leaflet-container{ font-family:"PT Sans", sans-serif; background:var(--paper-2); }
  .leaflet-container a{ color:var(--brass-strong); }
  .leaflet-control-zoom a{ border-radius:8px !important; color:var(--ink) !important; }
  .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; }

  .map-veil{ position:absolute; inset:0; z-index:500; 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-pin-wrap{ background:none; border:none; }
  .map-pin{ position:relative; display:block; width:40px; height:48px; }
  .map-pin-body{ position:absolute; left:2px; top:0; width:36px; height:36px;
    border-radius:50% 50% 50% 0; transform:rotate(-45deg); display:grid; place-items:center;
    background:var(--brand, var(--paper)); border:2px solid rgba(255,255,255,.92);
    box-shadow:0 8px 16px -6px rgba(0,0,0,.55); }
  .map-pin-letter{ transform:rotate(45deg); font-family:"Alegreya", serif; font-weight:700;
    font-size:1.02rem; line-height:1; color:var(--brand-ink, var(--ink)); }
  .map-pin--active .map-pin-body{
    box-shadow:0 0 0 5px rgba(126,93,53,.32), 0 8px 16px -6px rgba(0,0,0,.55); }
  .map-pin-order{ position:absolute; right:-3px; top:-5px; min-width:21px; height:21px;
    border-radius:999px; background:var(--brass-strong); color:#fff; font-size:.72rem;
    font-weight:700; display:grid; place-items:center; padding:0 5px;
    border:2px solid #fff; font-family:"PT Sans",sans-serif; line-height:1; }
  @media (prefers-reduced-motion:no-preference){
    .map-pin-body{ transition:transform .2s cubic-bezier(.34,1.56,.64,1), box-shadow .2s ease; }
    .map-pin-wrap:hover .map-pin-body{ transform:rotate(-45deg) scale(1.12); }
  }

  /* кнопка «где я» на карте */
  .map-locate{ width:38px; height:38px; border-radius:11px; border:1px solid var(--line);
    background:var(--card); color:var(--brass-strong); font-size:1.1rem; cursor:pointer;
    display:grid; place-items:center; box-shadow:0 4px 12px -6px rgba(0,0,0,.5); }
  .map-locate:hover{ border-color:var(--brass); background:var(--paper-2); }
  .leaflet-control-zoom{ border:none !important; box-shadow:0 4px 12px -6px rgba(0,0,0,.5); }
  .leaflet-control-zoom a{ background:var(--card) !important; border-color:var(--line) !important; }
  .leaflet-control-attribution{ background:rgba(255,255,255,.78) !important; font-size:.68rem;
    border-radius:8px 0 0 0; padding:2px 8px; }
  :root[data-theme="dark"] .leaflet-control-attribution{ background:rgba(20,17,12,.7) !important; color:#CDBBA2; }
  .map-me{ display:grid; place-items:center; }
  .map-me span{ width:16px; height:16px; border-radius:50%; background:#2F6DB5;
    border:3px solid #fff; box-shadow:0 0 0 4px rgba(47,109,181,.28); }

  .map-pop-head{ display:flex; align-items:center; gap:10px; margin-bottom:8px; }
  .map-pop-logo{ width:46px; height:46px; flex:none; border-radius:11px; object-fit:cover;
    border:1px solid var(--line); }
  .map-pop h3{ font-size:1.02rem; line-height:1.25; margin:0; }
  .map-pop-line{ margin:0 0 3px; font-size:.88rem; color:var(--ink-soft); }
  .map-pop-actions{ display:flex; gap:8px; flex-wrap:wrap; margin:11px 0 8px; }
  .map-pop-actions .btn{ padding:9px 15px; font-size:.83rem; }
  .map-pop-ya{ font-size:.82rem; }
  .leaflet-popup-content{ margin:15px 17px; min-width:210px; }
  .leaflet-popup-content-wrapper{ border-radius:16px; background:var(--card); color:var(--ink); }
  .leaflet-popup-tip{ background:var(--card); }

  /* ------------------------------------------------- панель маршрутов */
  .map-side{ display:grid; gap:20px; }
  .route-form, .ready-routes{ background:var(--card); border:1px solid var(--line);
    border-radius:22px; padding:24px; }
  .route-form h2, .ready-routes h2{ font-size:1.2rem; margin:0 0 6px; }
  .route-form .panel-hint{ font-size:.86rem; color:var(--ink-faint); margin:0 0 16px; line-height:1.5; }

  .rf-chips{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px; }
  .rf-chip{ display:inline-flex; align-items:center; gap:8px; border:1px solid var(--line);
    background:var(--paper-2); border-radius:999px; padding:7px 14px 7px 8px; min-height:40px;
    cursor:pointer; font:inherit; font-size:.86rem; color:var(--ink); }
  .rf-chip img{ width:26px; height:26px; border-radius:50%; object-fit:cover; flex:none; }
  .rf-chip:hover{ border-color:var(--brass); }
  .rf-chip[aria-pressed="true"]{ background:var(--brass-strong); color:var(--card); border-color:var(--brass-strong); }

  .rf-stops{ list-style:none; margin:0 0 16px; padding:0; display:grid; gap:8px; }
  .rf-stop{ display:grid; grid-template-columns:26px 1fr auto; align-items:center; gap:10px;
    background:var(--paper-2); border:1px solid var(--line); border-radius:14px; padding:9px 10px 9px 12px; }
  .rf-stop.dragging{ opacity:.45; }
  .rf-stop.drag-over{ border-color:var(--brass); box-shadow:0 0 0 2px var(--brass) inset; }
  .rf-stop-num{ width:24px; height:24px; border-radius:50%; background:var(--brass-strong);
    color:var(--card); display:grid; place-items:center; font-size:.76rem; font-weight:700; }
  .rf-stop-name{ font-size:.9rem; }
  .rf-stop-btns{ display:flex; gap:3px; }
  .rf-stop-btns button{ width:32px; height:32px; border-radius:9px; border:1px solid var(--line);
    background:var(--paper); color:var(--ink-soft); cursor:pointer; font-size:.9rem; line-height:1; }
  .rf-stop-btns button:hover{ border-color:var(--brass); color:var(--brass-strong); }
  .rf-empty{ font-size:.88rem; color:var(--ink-faint); font-style:italic; margin:0 0 16px; }

  .rf-start{ display:flex; align-items:center; gap:10px; margin:0 0 16px;
    font-size:.9rem; color:var(--ink-soft); cursor:pointer; min-height:40px; }
  .rf-start input{ width:20px; height:20px; accent-color:var(--brass-strong); flex:none; }

  .rf-modes{ display:flex; gap:6px; background:var(--paper-2); border:1px solid var(--line);
    border-radius:999px; padding:4px; margin-bottom:14px; }
  .rf-mode{ flex:1; border:none; background:none; border-radius:999px; padding:10px;
    min-height:42px; font-family:"PT Sans",sans-serif; font-weight:700; font-size:.87rem;
    color:var(--ink-soft); cursor:pointer; }
  .rf-mode.active{ background:var(--brass-strong); color:var(--card); }
  .rf-actions{ display:flex; gap:10px; flex-wrap:wrap; }
  .rf-actions .btn{ padding:11px 18px; font-size:.87rem; }
  .rf-status{ margin:14px 0 0; font-size:.88rem; line-height:1.55; color:var(--ink-soft); min-height:1.2em; }
  .rf-status.is-err{ color:var(--brick); }
  .rf-status.is-ok{ color:var(--brass-strong); font-weight:700; }
  .rf-variants{ display:grid; gap:10px; margin-top:14px; }
  .rf-variant-list{ display:grid; gap:8px; }
  .rf-variant{ display:flex; justify-content:space-between; align-items:center; gap:10px;
    width:100%; text-align:left; background:var(--paper-2); border:1px solid var(--line);
    border-radius:13px; padding:12px 15px; min-height:46px; cursor:pointer; color:inherit;
    font:inherit; font-size:.88rem; }
  .rf-variant b{ font-family:"Alegreya", serif; font-size:.97rem; }
  .rf-variant.active{ border-color:var(--brass); background:var(--paper-3); }
  .rf-variant:hover{ border-color:var(--brass); }
  .rf-external{ font-size:.86rem; color:var(--brass-strong); display:inline-flex;
    align-items:center; min-height:38px; }

  .r-card{ border-top:1px solid var(--line); padding-top:18px; margin-top:18px; }
  .r-card:first-of-type{ border-top:none; padding-top:0; margin-top:0; }
  .r-card h3{ font-size:1.05rem; margin:0 0 7px; }
  .r-card p{ font-size:.88rem; line-height:1.62; color:var(--ink-soft); margin:0 0 11px; }
  .r-stops{ list-style:none; margin:0 0 11px; padding:0; display:flex; flex-wrap:wrap; gap:6px; }
  .r-stops li{ font-size:.78rem; background:var(--paper-2); border:1px solid var(--line);
    border-radius:999px; padding:5px 11px; color:var(--ink-soft); }
  .r-meta{ font-size:.82rem; color:var(--ink-faint); margin:0 0 13px; }
  .r-card .btn{ padding:11px 18px; font-size:.87rem; }

  .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; }

  @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; }
  }
