/* Veřejný styl webu; archivní verze byly odstraněny. */
:root {
    --ink: #24524d;
    --ink-deep: #163d39;
    --water: #4f9188;
    --water-light: #e5f0eb;
    --cream: #f5ecdd;
    --paper: #fffefa;
    --sand: #ddc49a;
    --wood: #8b6745;
    --wine: #a64f3d;
    --text: #30413f;
    --muted: #697673;
    --line: rgba(36, 82, 77, .15);
    --shadow: 0 18px 48px rgba(22, 61, 57, .11);
    --radius: 14px;
    --wrap: min(1180px, calc(100% - 40px));
    --hero-panel-alpha: .85;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--text); background: var(--paper); font: 400 1rem/1.65 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
body::before { content: ""; position: fixed; inset: 0; z-index: -1; opacity: .08; pointer-events: none; background-image: radial-gradient(rgba(96, 69, 43, .18) .55px, transparent .65px); background-size: 6px 6px; }
img { display: block; max-width: 100%; }
a { color: inherit; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
h1, h2, h3 { margin: 0 0 .45em; color: var(--ink-deep); font-family: Georgia, "Times New Roman", serif; font-weight: 600; line-height: 1.15; text-wrap: balance; }
h1 { font-size: clamp(2.5rem, 6vw, 5rem); }
h2 { font-size: clamp(1.8rem, 3.6vw, 3.1rem); }
h3 { font-size: clamp(1.3rem, 2vw, 1.75rem); }
p { margin: 0 0 1em; }
.wrap { width: var(--wrap); margin-inline: auto; }
.section { padding-block: clamp(64px, 7vw, 96px); }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
.skip-link { position: fixed; top: 10px; left: 10px; z-index: 100; padding: 10px 16px; color: #fff; background: var(--wine); transform: translateY(-160%); }
.skip-link:focus { transform: none; }
.kicker { margin: 0 0 13px; color: var(--wine); font-size: .8125rem; font-weight: 800; letter-spacing: .12em; line-height: 1.35; text-transform: uppercase; }
.kicker.light { color: #f3d9c1; }
.button { display: inline-flex; min-height: 48px; align-items: center; justify-content: center; padding: 11px 23px; border: 1px solid transparent; border-radius: 999px; font-weight: 750; text-decoration: none; transition: background-color .2s, color .2s, border-color .2s, transform .2s; }
.button:hover { transform: translateY(-2px); }
.button:focus-visible, a:focus-visible, button:focus-visible, summary:focus-visible { outline: 3px solid #f0b94c; outline-offset: 3px; }
.button-dark { color: #fff; background: var(--ink); }
.button-dark:hover { background: var(--wine); }
.button-cream { color: var(--ink-deep); background: var(--cream); border-color: rgba(255, 255, 255, .5); }
.button-cream:hover { color: #fff; background: var(--wine); }
.text-link { display: inline-flex; padding-block: 8px; font-weight: 750; text-underline-offset: 5px; }
.text-link.light { color: #fff; }

.announcement { color: #fff; background: var(--wine); }
.announcement .wrap { display: flex; min-height: 46px; align-items: center; gap: 14px; padding-block: 8px; }
.announcement strong { font-family: Georgia, serif; }
.announcement button, .announcement-panel > button { margin-left: auto; padding: 0 8px; border: 0; color: inherit; background: transparent; font-size: 1.5rem; cursor: pointer; }
.announcement-panel { position: relative; display: flex; align-items: flex-start; gap: 24px; margin-block: 24px; padding: clamp(24px, 4vw, 42px); background: var(--cream); border: 1px solid var(--sand); border-left: 5px solid var(--wine); border-radius: var(--radius); box-shadow: 0 8px 28px rgba(8, 37, 35, .07); }
.announcement-panel > div { max-width: 850px; }
.announcement-panel h2 { font-size: clamp(1.7rem, 3vw, 2.45rem); }
.announcement-panel p:last-child { margin-bottom: 0; }
.announcement-modal.is-modal { position: fixed; z-index: 1000; inset: 0; width: 100%; max-width: none; min-height: 100%; overflow-y: auto; display: grid; place-items: center; margin: 0; padding: 24px; color: var(--text); background: rgba(5, 32, 30, .82); border: 0; border-radius: 0; }
.announcement-modal.is-modal > div { width: min(100%, 680px); padding: clamp(30px, 6vw, 58px); background: var(--paper); border-top: 6px solid var(--wine); border-radius: var(--radius); box-shadow: var(--shadow); }
.announcement-modal.is-modal .button { margin-top: 16px; }
body.has-announcement-modal { overflow: hidden; }
.site-header { --header-hero-image: none; --header-hero-position: center top; position: relative; z-index: 20; isolation: isolate; overflow: visible; color: #fff; background: #173b37; }
.header-contact { position: relative; display: flex; justify-content: flex-end; gap: 24px; padding-block: 7px; color: rgba(244, 248, 247, .94); font-size: .875rem; }
.header-contact a { text-decoration: none; }
.header-main { position: relative; display: flex; min-height: 84px; align-items: center; justify-content: space-between; gap: 28px; }
.brand { display: inline-flex; align-items: center; gap: 11px; color: #fff; text-decoration: none; }
.brand-logo { width: 58px; height: 49px; object-fit: contain; }
.brand b, .brand small { display: block; }
.brand b { font-family: Georgia, serif; font-size: 1.34rem; line-height: 1; }
.brand small { margin-top: 4px; color: rgba(236, 241, 240, .9); font-size: .75rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.main-menu { display: flex; align-items: center; gap: clamp(15px, 2vw, 28px); }
.main-menu > a { display: inline-flex; min-height: 44px; align-items: center; padding-block: 10px; color: #fff; font-size: 1rem; font-weight: 750; text-decoration: none; cursor: pointer; text-shadow: 0 1px 10px rgba(0,0,0,.28); }
.main-menu > a:hover, .main-menu > a[aria-current="page"] { color: #f5d6a4; }
.menu-icon { display: grid; width: 21px; gap: 4px; }
.menu-icon i { display: block; height: 2px; background: #fff; }

.hero { position: relative; min-height: min(740px, calc(100svh - 119px)); overflow: hidden; display: grid; align-items: end; color: var(--text); background: var(--water-light); }
.hero-slides, .hero-slide, .hero-shade { position: absolute; inset: 0; }
.hero-slide { margin: 0; opacity: 0; background-color: var(--ink); transition: opacity .9s ease; will-change: opacity; }
.hero-slide-tone-1 { background: radial-gradient(circle at 78% 22%, rgba(255, 255, 255, .15), transparent 27%), linear-gradient(135deg, #336f68, #173f3b 72%); }
.hero-slide-tone-2 { background: radial-gradient(circle at 18% 78%, rgba(219, 238, 230, .16), transparent 30%), linear-gradient(120deg, #215b58, #102f35 76%); }
.hero-slide-tone-3 { background: radial-gradient(circle at 72% 68%, rgba(255, 247, 225, .16), transparent 31%), linear-gradient(135deg, #876f50, #3c5447 78%); }
.hero-slide-tone-4 { background: radial-gradient(circle at 25% 22%, rgba(255, 232, 220, .13), transparent 29%), linear-gradient(125deg, #7d403b, #263f3d 74%); }
.hero-slide.is-active { opacity: 1; }
.hero-photo { width: 100%; height: 100%; object-fit: cover; }
.hero-shade { background: linear-gradient(0deg, rgba(12, 48, 44, .18), transparent 45%); }
.hero-content { position: relative; z-index: 2; padding-block: 75px 105px; }
.hero-card { width: min(100%, 620px); padding: clamp(30px, 4vw, 46px); background: rgba(255, 254, 250, var(--hero-panel-alpha)); border: 1px solid rgba(255, 255, 255, .8); border-radius: var(--radius); box-shadow: 0 22px 60px rgba(13, 48, 45, .18); backdrop-filter: blur(8px); }
.hero h1 { max-width: 760px; margin-bottom: .22em; color: var(--ink-deep); font-size: clamp(3.6rem, 7vw, 6.1rem); letter-spacing: -.035em; }
.hero-lead { max-width: 560px; color: var(--text); font-family: Georgia, serif; font-size: clamp(1.13rem, 1.8vw, 1.45rem); line-height: 1.46; }
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 24px; margin-top: 27px; }
.hero-actions .text-link { color: var(--ink-deep); }
.slider-controls { position: absolute; z-index: 3; right: 0; bottom: 38px; left: 0; display: flex; align-items: center; justify-content: flex-end; gap: 11px; }
html:not(.js) .slider-controls { display: none; }
.slider-controls > button { width: 40px; height: 40px; padding: 0; border: 1px solid rgba(22, 61, 57, .18); border-radius: 50%; color: var(--ink-deep); background: rgba(255, 254, 250, .94); box-shadow: 0 5px 18px rgba(13, 48, 45, .13); font-size: 1.65rem; line-height: 1; cursor: pointer; }
.slider-controls > button:hover { color: #fff; background: var(--wine); }
.slider-playback-button:not([hidden]) { display: inline-grid; place-items: center; flex: none; }
.slider-playback-button:not([data-paused]) [data-slider-play-icon],
.slider-playback-button[data-paused] [data-slider-pause-icon] { display: none; }
.slider-dots { display: flex; gap: 9px; padding: 9px 12px; background: rgba(255, 254, 250, .94); border-radius: 999px; box-shadow: 0 5px 18px rgba(13, 48, 45, .13); }
.slider-dots button { width: 9px; height: 9px; padding: 0; border: 1px solid var(--ink); border-radius: 50%; background: transparent; cursor: pointer; }
.slider-dots button[aria-current="true"] { background: var(--wine); border-color: var(--wine); transform: scale(1.25); }

.welcome { display: grid; grid-template-columns: 1.05fr .75fr; align-items: center; gap: clamp(45px, 9vw, 130px); padding-top: clamp(85px, 10vw, 135px); }
.welcome h2 { max-width: 700px; }
.welcome-copy { padding: 10px 0 10px 31px; border-left: 3px solid var(--sand); font-size: 1.08rem; }
.welcome-copy p:last-of-type { margin-bottom: .45em; }
.welcome-copy .text-link { color: var(--wine); }
.homepage-custom-section { background: var(--paper); border-block: 1px solid var(--line); }
.homepage-custom-section-inner { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: clamp(35px, 8vw, 110px); }
.homepage-custom-section h2 { max-width: 680px; }
.homepage-custom-section-copy { max-width: 640px; padding-left: 28px; border-left: 3px solid var(--sand); }
.homepage-custom-section-copy p { color: var(--muted); font-size: 1.08rem; }
.homepage-custom-section-copy .button { margin-top: 10px; }
.homepage-layout-section { background: var(--paper); border-block: 1px solid var(--line); }
.homepage-layout-section-inner { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); align-items: center; gap: clamp(30px, 7vw, 100px); }
.homepage-layout-section-heading { grid-column: 1 / -1; }
.homepage-layout-section-heading h2 { max-width: 700px; }
.homepage-layout-section-copy { color: var(--muted); font-size: 1.08rem; }
.homepage-layout-section-copy .button { margin-top: 10px; }
.homepage-layout-section-media figure { min-height: 320px; margin: 0; overflow: hidden; border-radius: var(--radius); background: var(--water-light); box-shadow: var(--shadow); }
.homepage-layout-section-media img { width: 100%; height: 100%; min-height: 320px; object-fit: cover; }
.homepage-layout-section-media { grid-column: 1; width: 100%; }
.homepage-layout-section-copy { grid-column: 2; }
.homepage-layout-section-image_right .homepage-layout-section-media { grid-column: 2; }
.homepage-layout-section-image_right .homepage-layout-section-copy { grid-column: 1; }
.homepage-layout-section-no-media .homepage-layout-section-copy { grid-column: 1 / -1; grid-row: auto; max-width: 760px; }
.homepage-layout-section-gallery { grid-column: 1 / -1; width: 100%; }
.homepage-layout-section-gallery + .homepage-layout-section-copy { grid-column: 1 / -1; max-width: 760px; }
.homepage-layout-section-gallery.detail-gallery-grid { margin-top: 0; }
.homepage-layout-section-gallery.detail-gallery-slider { margin-top: 0; }

.homepage-layout-section.homepage-layout-section-media-only { padding-block: 0; }
.homepage-layout-section-media-only .homepage-layout-section-inner { grid-template-columns: 1fr; gap: 0; }
.homepage-layout-section-media-only .homepage-layout-section-media,
.homepage-layout-section-media-only .homepage-layout-section-gallery { grid-column: 1 / -1; }
.section-heading { display: grid; grid-template-columns: 1fr minmax(260px, .43fr); align-items: end; gap: 50px; margin-bottom: 42px; }
.section-heading p:last-child { margin-bottom: .35em; color: var(--muted); }
.service-carousel-controls { display: none; }
.service-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 22px; }
.service-card { position: relative; grid-column: span 4; overflow: hidden; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 8px 28px rgba(8, 37, 35, .07); text-decoration: none; transition: transform .25s, box-shadow .25s; }
.service-card-1 { grid-column: span 7; }
.service-card-2 { grid-column: span 5; }
.service-card-4, .service-card-5 { grid-column: span 4; }
.service-card:hover { transform: translateY(-5px); box-shadow: var(--shadow); }
.service-photo { width: 100%; height: 250px; object-fit: cover; background: var(--water-light); transition: transform .55s ease; }
.service-tone { background: linear-gradient(145deg, var(--water-light), #b8d0c7); }
.service-card:nth-child(2) .service-tone { background: linear-gradient(145deg, #eadfc9, #c8aa78); }
.service-card:nth-child(3) .service-tone { background: linear-gradient(145deg, #dcebe7, #79a59d); }
.service-card:nth-child(4) .service-tone { background: linear-gradient(145deg, #eadbd3, #b77c6c); }
.service-card:nth-child(5) .service-tone { background: linear-gradient(145deg, #dce5d8, #819779); }
.service-card-1 .service-photo { height: 385px; }
.service-card-2 .service-photo { height: 385px; }
.service-card:hover .service-photo { transform: scale(1.025); }
.service-card > div { position: relative; padding: 24px 26px 27px; }
.service-card h3 { padding-right: 12px; }
.service-card p { color: var(--muted); }
.service-card .service-link { color: var(--wine); font-weight: 800; text-decoration: underline; text-decoration-color: rgba(141, 38, 56, .35); text-underline-offset: 5px; }

.feature { display: block; min-height: 0; color: var(--text); background: #edf5f1; }
.feature-inner { display: grid; gap: 42px; }
.feature-copy { display: grid; grid-template-columns: 1.12fr .65fr; align-items: end; gap: clamp(40px, 8vw, 105px); }
.feature-copy h2 { max-width: 750px; color: var(--ink-deep); }
.feature-copy p:not(.kicker) { max-width: 470px; color: var(--muted); font-size: 1.08rem; }
.feature-copy .button { margin-top: 15px; }
.feature-images { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(190px, .8fr); gap: 20px; height: clamp(390px, 40vw, 520px); }
.feature-images > div { overflow: hidden; background: var(--water-light); border-radius: var(--radius); box-shadow: 0 14px 34px rgba(22, 61, 57, .1); }
.feature-main-photo, .feature-small-photo { width: 100%; height: 100%; object-fit: cover; }
.feature-tone { min-height: 100%; }
.feature-tone-main { background: radial-gradient(circle at 70% 28%, rgba(255, 255, 255, .22), transparent 24%), linear-gradient(145deg, #32766e, #153f3c); }
.feature-tone-side { background: radial-gradient(circle at 35% 72%, rgba(246, 226, 186, .23), transparent 30%), linear-gradient(155deg, #b29362, #385a4f); }

.family-feature { display: grid; grid-template-columns: 1.12fr .88fr; align-items: center; gap: clamp(42px, 8vw, 105px); }
.family-photo { position: relative; padding: 0 24px 24px 0; }
.family-photo::after { content: ""; position: absolute; z-index: -1; right: 0; bottom: 0; width: 72%; height: 72%; background: var(--water-light); border-radius: var(--radius); }
.family-photo img, .family-tone { width: 100%; min-height: 480px; max-height: 580px; object-fit: cover; background: var(--water-light); border-radius: var(--radius); }
.family-tone { background: radial-gradient(circle at 72% 24%, rgba(255, 255, 255, .3), transparent 24%), linear-gradient(145deg, #d8e8df, #7da194); }
.family-photo > span { position: absolute; right: 0; bottom: 50px; padding: 12px 17px; color: var(--ink-deep); background: var(--cream); border: 1px solid var(--sand); font-family: Georgia, serif; font-weight: 700; box-shadow: 0 8px 24px rgba(8, 37, 35, .15); }
.family-copy > p:not(.kicker) { color: var(--muted); font-size: 1.08rem; }
.family-links { margin-top: 30px; border-top: 1px solid var(--line); }
.family-links a { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding-block: 14px; border-bottom: 1px solid var(--line); color: var(--ink-deep); font-weight: 750; text-decoration: none; }
.family-links a:hover { color: var(--wine); }

.visit-section { color: var(--text); background: var(--cream); }
.visit { display: grid; grid-template-columns: 1fr .72fr .72fr; align-items: center; gap: clamp(35px, 6vw, 85px); }
.visit h2 { max-width: 580px; color: var(--ink-deep); }
.visit > div:first-child > p:last-child { max-width: 520px; margin-bottom: 0; color: var(--muted); }
.visit address, .site-footer address { margin-bottom: 17px; font-style: normal; }
.contact-line { display: block; width: fit-content; margin-block: 7px; color: var(--ink-deep); font-size: 1.05rem; font-weight: 750; text-underline-offset: 4px; }
.route-link { min-height: 170px; display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; padding: 26px; color: var(--ink-deep); background: #fff; border: 1px solid rgba(36, 82, 77, .12); border-radius: var(--radius); box-shadow: 0 12px 30px rgba(22, 61, 57, .08); font-family: Georgia, serif; font-size: 1.25rem; font-weight: 700; line-height: 1.2; text-decoration: none; transition: background-color .2s, transform .2s; }
.route-link:hover { background: var(--water-light); transform: translateY(-3px); }
.route-link b { color: var(--wine); font-family: system-ui, sans-serif; font-size: 1.35rem; }

.detail-hero { position: relative; min-height: 570px; display: grid; align-items: end; overflow: hidden; color: #fff; background: var(--ink-deep); }
.detail-photo, .detail-overlay { position: absolute; inset: 0; width: 100%; height: 100%; }
.detail-photo { object-fit: cover; }
.detail-overlay { background: linear-gradient(0deg, rgba(5, 32, 30, .92), rgba(5, 32, 30, .08) 78%); }
.detail-heading { position: relative; padding-block: 150px 68px; }
.detail-heading .kicker.light, .detail-heading h1, .detail-heading > p:last-child { text-shadow: 0 0 2px rgba(3, 24, 23, .98), 0 0 7px rgba(3, 24, 23, .82), 0 3px 18px rgba(0, 0, 0, .52); }
.detail-heading h1 { max-width: 850px; color: #fff; font-size: clamp(2.6rem, 6vw, 5rem); }
.detail-heading > p:last-child { max-width: 750px; margin-bottom: 0; font-family: Georgia, serif; font-size: clamp(1.15rem, 2.1vw, 1.55rem); line-height: 1.5; }
.detail-content { display: grid; gap: 34px; max-width: 1080px; }
.detail-section { padding: clamp(30px, 5vw, 55px); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 10px 34px rgba(8, 37, 35, .07); }
.detail-section-image_left.has-image, .detail-section-image_right.has-image { display: grid; grid-template-columns: .95fr 1.05fr; align-items: stretch; gap: clamp(30px, 5vw, 60px); padding: 0; overflow: hidden; }
.detail-section-image_left.has-image .detail-section-copy { align-self: center; padding: 45px 45px 45px 0; }
.detail-section-image_right.has-image { grid-template-columns: 1.05fr .95fr; }
.detail-section-image_right.has-image .detail-section-photo { order: 2; }
.detail-section-image_right.has-image .detail-section-copy { align-self: center; padding: 45px 0 45px 45px; }
.detail-section-photo { position: relative; margin: 0; }
.detail-section-photo, .detail-section-photo img { height: 100%; min-height: 380px; }
.detail-section-photo img { width: 100%; object-fit: cover; }
.detail-section-photo figcaption, .detail-gallery-grid figcaption, .detail-gallery-slider figcaption { position: absolute; right: 12px; bottom: 12px; left: 12px; padding: 8px 11px; color: #fff; background: rgba(8, 37, 35, .82); border-radius: 4px; font-size: .82rem; line-height: 1.35; }
.detail-section p:not(.kicker) { max-width: 720px; color: var(--muted); font-size: 1.06rem; }
.detail-section .button { margin-top: 14px; }
.detail-gallery-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 32px; }
.detail-gallery-grid figure { position: relative; min-width: 0; min-height: 250px; margin: 0; overflow: hidden; border-radius: calc(var(--radius) - 5px); background: var(--water-light); }
.detail-gallery-grid img { width: 100%; height: 100%; min-height: 250px; object-fit: cover; }
.detail-gallery-slider { min-width: 0; margin-top: 32px; }
.detail-gallery-track { display: flex; gap: 14px; overflow-x: auto; padding: 2px 2px 12px; scroll-snap-type: x mandatory; scrollbar-width: thin; overscroll-behavior-inline: contain; }
.detail-gallery-track figure { position: relative; flex: 0 0 calc((100% - 42px) / 4); min-width: 0; min-height: 230px; margin: 0; overflow: hidden; background: var(--water-light); border-radius: calc(var(--radius) - 5px); scroll-snap-align: start; }
.detail-gallery-track img { width: 100%; height: 100%; min-height: 230px; object-fit: cover; }
.detail-gallery-controls { display: flex; justify-content: flex-end; gap: 10px; margin-bottom: 12px; }
.detail-gallery-controls button { width: 46px; height: 46px; padding: 0; color: var(--ink-deep); background: #fff; border: 1px solid var(--line); border-radius: 50%; box-shadow: 0 8px 24px rgba(22, 61, 57, .09); font-size: 1.2rem; cursor: pointer; transition: color .2s, background-color .2s, opacity .2s; }
.detail-gallery-controls button:hover:not(:disabled) { color: #fff; background: var(--wine); }
.detail-gallery-controls button:disabled { opacity: .32; cursor: default; }
html:not(.js) .detail-gallery-controls { display: none; }
.detail-table-scroll { max-width: 100%; overflow-x: auto; }
.safe-html { max-width: 100%; overflow-x: auto; }
.detail-section table { width: 100%; margin-top: 22px; border-collapse: collapse; }
.detail-section th, .detail-section td { padding: 12px 14px; border: 1px solid var(--line); text-align: left; vertical-align: top; }
.detail-section th { color: var(--ink-deep); background: var(--water-light); }
.safe-html > :first-child { margin-top: 0; }
.safe-html > :last-child { margin-bottom: 0; }
.safe-html a { color: var(--wine); font-weight: 750; text-underline-offset: 3px; }
.detail-contact { padding-block: 58px; color: #fff; background: var(--ink); }
.detail-contact .wrap { display: flex; align-items: center; justify-content: space-between; gap: 30px; }
.detail-contact h2 { margin: 0; color: #fff; }
.detail-contact-description { max-width: 650px; margin: 12px 0 0; color: #dce8e4; line-height: 1.6; }
.error-page { min-height: 62vh; padding-block: 120px; }
.error-page p:not(.kicker) { max-width: 570px; color: var(--muted); font-size: 1.1rem; }
.error-page .button { margin-top: 15px; }

.site-footer { padding-top: 65px; color: #d9e4e1; background: var(--ink-deep); }
.footer-main { display: grid; grid-template-columns: 1.4fr .7fr .8fr; gap: clamp(35px, 7vw, 90px); padding-bottom: 55px; }
.site-footer .brand { color: #fff; }
.site-footer .brand small { color: #b8c9c5; }
.footer-about p { max-width: 440px; margin-top: 20px; }
.site-footer h2 { color: #fff; font-family: system-ui, sans-serif; font-size: .875rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.site-footer .footer-nav > a,
.site-footer .footer-contact > a,
.site-footer .footer-hours > a,
.site-footer .footer-bottom > a { display: flex; min-height: 44px; align-items: center; width: fit-content; margin-block: 2px; color: #d9e4e1; font-size: .9375rem; text-decoration-color: rgba(217, 228, 225, .55); text-underline-offset: 4px; }
.footer-bottom { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-block: 20px; border-top: 1px solid rgba(255, 255, 255, .14); font-size: .875rem; }

.media-areal { object-position: 50% 58%; }
.media-room { object-position: 50% 54%; }
.media-fishmonger { object-position: 50% 42%; }
.media-hall { object-position: 50% 55%; }

/* Barevné období mění pouze paletu, nikoli obsah nebo dostupnost provozů. */
body.season-spring { --ink: #3d6954; --ink-deep: #234d3b; --water: #78a990; --water-light: #e7f2e8; --cream: #f8eee7; --sand: #dfbea8; --wine: #a54e68; }
body.season-summer { --ink: #176b68; --ink-deep: #07504e; --water: #45a7a0; --water-light: #dff4ed; --cream: #fff1d5; --sand: #e8bd62; --wine: #c45c35; }
body.season-autumn { --ink: #5d5a36; --ink-deep: #39452f; --water: #89906b; --water-light: #edf0df; --cream: #f6ead7; --sand: #d19b5b; --wine: #a9462d; --wood: #795033; }
body.season-winter { --ink: #315c68; --ink-deep: #1c414c; --water: #6f9eaa; --water-light: #e5f0f3; --cream: #f1f3f1; --sand: #becfd2; --wine: #8e4556; }
body.season-christmas { --ink: #285440; --ink-deep: #123d2d; --water: #517964; --water-light: #e8efe8; --cream: #f6ecdf; --sand: #d1b374; --wine: #a22f38; }

/* Magazín: asymetrická kompozice a střídmější, hranatější karty. */
body.homepage-layout-editorial { --radius: 2px; --shadow: 0 20px 55px rgba(22, 61, 57, .09); }
.homepage-layout-editorial .hero { min-height: 680px; align-items: center; }
.homepage-layout-editorial .hero-shade { background: linear-gradient(90deg, transparent 25%, rgba(13, 42, 40, .2)); }
.homepage-layout-editorial .hero-content { padding-block: 72px; }
.homepage-layout-editorial .hero-card { width: min(48%, 540px); margin-left: auto; padding: clamp(36px, 5vw, 60px); background: rgba(255, 254, 250, var(--hero-panel-alpha)); border: 0; border-left: 6px solid var(--wine); box-shadow: 0 22px 70px rgba(8, 37, 35, .2); backdrop-filter: none; }
.homepage-layout-editorial .hero h1 { font-size: clamp(3.4rem, 6vw, 5.65rem); }
.homepage-layout-editorial .slider-controls { justify-content: flex-start; }
.homepage-layout-editorial .welcome { align-items: start; padding-top: clamp(72px, 8vw, 110px); border-bottom: 1px solid var(--line); }
.homepage-layout-editorial .welcome-copy { border-left-width: 1px; }
.homepage-layout-editorial .service-grid { gap: 18px; }
.homepage-layout-editorial .service-card, .homepage-layout-editorial .service-card-1, .homepage-layout-editorial .service-card-2, .homepage-layout-editorial .service-card-4, .homepage-layout-editorial .service-card-5 { grid-column: span 6; display: grid; grid-template-columns: .9fr 1.1fr; min-height: 310px; box-shadow: none; }
.homepage-layout-editorial .service-card-5 { grid-column: 1 / -1; grid-template-columns: 1fr 1fr; }
.homepage-layout-editorial .service-photo, .homepage-layout-editorial .service-card-1 .service-photo, .homepage-layout-editorial .service-card-2 .service-photo { width: 100%; height: 100%; min-height: 310px; }
.homepage-layout-editorial .service-card > div { align-self: center; }
.homepage-layout-editorial .feature-images > div, .homepage-layout-editorial .family-photo img, .homepage-layout-editorial .family-tone { border-radius: 0; }
.homepage-layout-editorial .family-photo { order: 2; padding: 0 0 24px 24px; }
.homepage-layout-editorial .family-photo::after { right: auto; left: 0; border-radius: 0; }
.homepage-layout-editorial .family-copy { order: 1; }

/* Rodinný den: přátelštější tvary, barvy a výrazné rozcestníky. */
body.homepage-layout-family { --radius: 26px; --wine: #bb553f; --sand: #e7bd72; --water-light: #e5f3e9; }
.homepage-layout-family .hero { min-height: 760px; }
.homepage-layout-family .hero-shade { background: linear-gradient(90deg, rgba(6, 34, 31, .78) 0%, rgba(6, 34, 31, .5) 38%, rgba(6, 34, 31, .12) 68%, transparent 82%), linear-gradient(0deg, rgba(6, 34, 31, .32), transparent 58%); }
.homepage-layout-family .hero-card { width: min(100%, 680px); padding: 0; color: #fff; background: transparent; border: 0; border-radius: 0; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
.homepage-layout-family .hero-card .kicker { color: #f5c8b9; text-shadow: 0 0 2px rgba(4, 27, 25, .98), 0 0 7px rgba(4, 27, 25, .82), 0 3px 15px rgba(0, 0, 0, .48); }
.homepage-layout-family .hero-card h1, .homepage-layout-family .hero-card .hero-lead, .homepage-layout-family .hero-card .text-link { color: #fff; text-shadow: 0 0 2px rgba(4, 27, 25, .98), 0 0 7px rgba(4, 27, 25, .82), 0 3px 18px rgba(0, 0, 0, .52); }
.homepage-layout-family .hero-card .button-dark { color: var(--ink-deep); background: #fffefa; box-shadow: 0 8px 24px rgba(5, 28, 26, .22); }
.homepage-layout-family .hero-card .button-dark:hover { color: #fff; background: var(--wine); }
.homepage-layout-family .welcome { text-align: center; grid-template-columns: 1fr; gap: 22px; }
.homepage-layout-family .welcome h2, .homepage-layout-family .welcome-copy { max-width: 780px; margin-inline: auto; }
.homepage-layout-family .welcome-copy { padding: 0; border: 0; }
.homepage-layout-family .section-heading { text-align: center; grid-template-columns: 1fr; gap: 10px; }
.homepage-layout-family .section-heading > * { max-width: 760px; margin-inline: auto; }
.homepage-layout-family .service-carousel-controls { display: flex; justify-content: flex-end; gap: 10px; margin: -12px 0 18px; }
.homepage-layout-family .service-carousel-controls button { width: 48px; height: 48px; padding: 0; border: 1px solid var(--line); border-radius: 50%; color: var(--ink-deep); background: #fff; box-shadow: 0 8px 24px rgba(22, 61, 57, .09); font-size: 1.35rem; cursor: pointer; transition: color .2s, background-color .2s, transform .2s, opacity .2s; }
.homepage-layout-family .service-carousel-controls button:hover:not(:disabled) { color: #fff; background: var(--wine); transform: translateY(-2px); }
.homepage-layout-family .service-carousel-controls button:disabled { opacity: .32; cursor: default; }
html:not(.js) .homepage-layout-family .service-carousel-controls { display: none; }
.homepage-layout-family .service-grid { display: flex; gap: 20px; overflow-x: auto; margin-inline: -4px; padding: 6px 4px 28px; scroll-behavior: smooth; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-inline: contain; }
.homepage-layout-family .service-grid::-webkit-scrollbar { display: none; }
.homepage-layout-family .service-card, .homepage-layout-family .service-card-1, .homepage-layout-family .service-card-2, .homepage-layout-family .service-card-3, .homepage-layout-family .service-card-4, .homepage-layout-family .service-card-5 { flex: 0 0 calc((100% - 40px) / 3); display: flex; flex-direction: column; grid-column: auto; margin: 0; border-radius: 26px; scroll-snap-align: start; }
.homepage-layout-family .service-photo, .homepage-layout-family .service-card-1 .service-photo, .homepage-layout-family .service-card-2 .service-photo { height: 270px; }
.homepage-layout-family .service-card > div { flex: 1; display: flex; flex-direction: column; }
.homepage-layout-family .service-card .service-link { margin-top: auto; }
.homepage-layout-family .feature { margin-inline: max(0px, calc((100% - 1280px) / 2)); border-radius: 38px; }
.homepage-layout-family .feature-images > div { border-radius: 24px; }
.homepage-layout-family .family-photo img, .homepage-layout-family .family-tone { border-radius: 32px; }
.homepage-layout-family .family-photo > span { border-radius: 999px; }

/* Přírodní: zemitá paleta, tmavý úvod a přehledné vodorovné příběhy. */
body.homepage-layout-nature { --ink: #365746; --ink-deep: #1f3d30; --water: #6f8a70; --water-light: #e8ede1; --cream: #f2e7d4; --sand: #c9a56f; --wine: #9b4935; --radius: 5px; }
.homepage-layout-nature .hero-shade { background: linear-gradient(90deg, rgba(15, 40, 29, .65), rgba(15, 40, 29, .06) 70%); }
.homepage-layout-nature .hero-card { color: #eef4ed; background: rgba(25, 59, 45, var(--hero-panel-alpha)); border: 1px solid rgba(255, 255, 255, .22); border-radius: 5px; box-shadow: 0 24px 70px rgba(8, 30, 21, .3); backdrop-filter: blur(5px); }
.homepage-layout-nature .hero-card h1, .homepage-layout-nature .hero-card .hero-lead, .homepage-layout-nature .hero-card .text-link { color: #fff; }
.homepage-layout-nature .hero-card .kicker { color: #efd29f; }
.homepage-layout-nature .hero-card .button-dark { color: var(--ink-deep); background: var(--cream); }
.homepage-layout-nature .welcome { grid-template-columns: .8fr 1.2fr; }
.homepage-layout-nature .welcome-copy { border-color: var(--wood); }
.homepage-layout-nature .service-grid { grid-template-columns: 1fr; gap: 16px; }
.homepage-layout-nature .service-card, .homepage-layout-nature .service-card-1, .homepage-layout-nature .service-card-2, .homepage-layout-nature .service-card-4, .homepage-layout-nature .service-card-5 { grid-column: auto; display: grid; grid-template-columns: minmax(250px, .72fr) 1.28fr; min-height: 250px; box-shadow: none; }
.homepage-layout-nature .service-card:nth-child(even) { grid-template-columns: 1.28fr minmax(250px, .72fr); }
.homepage-layout-nature .service-card:nth-child(even) .service-photo { order: 2; }
.homepage-layout-nature .service-photo, .homepage-layout-nature .service-card-1 .service-photo, .homepage-layout-nature .service-card-2 .service-photo { width: 100%; height: 100%; min-height: 250px; }
.homepage-layout-nature .service-card > div { align-self: center; padding-inline: clamp(28px, 5vw, 64px); }
.homepage-layout-nature .feature { background: var(--cream); }
.homepage-layout-nature .feature-images { grid-template-columns: 1fr 1fr; }
.homepage-layout-nature .family-photo::after { background: var(--cream); }
.homepage-layout-nature .visit-section { border-top: 1px solid var(--sand); }

@media (max-width: 1020px) {
    .detail-gallery-track figure { flex-basis: calc((100% - 28px) / 3); }
    .service-card, .service-card-1, .service-card-2, .service-card-4, .service-card-5 { grid-column: span 6; }
    .service-card-1 .service-photo, .service-card-2 .service-photo { height: 310px; }
    .service-card-5 { grid-column: 4 / span 6; }
    .homepage-layout-family .service-card, .homepage-layout-family .service-card-1, .homepage-layout-family .service-card-2, .homepage-layout-family .service-card-3, .homepage-layout-family .service-card-4, .homepage-layout-family .service-card-5 { flex-basis: calc((100% - 20px) / 2); }
    .feature-copy { grid-template-columns: 1fr .72fr; gap: 45px; }
    .visit { grid-template-columns: 1fr 1fr; }
    .route-link { grid-column: 1 / -1; min-height: 120px; }
}

@media (max-width: 760px) {
    .detail-gallery-track figure { flex-basis: calc((100% - 14px) / 2); }
    :root { --wrap: min(100% - 28px, 1180px); }
    .section { padding-block: 64px; }
    .header-contact { justify-content: space-between; gap: 10px; font-size: .875rem; }
    .announcement .wrap { align-items: flex-start; flex-wrap: wrap; gap: 5px 10px; }
    .announcement .wrap span { width: calc(100% - 42px); }
    .announcement-panel { margin-block: 14px; }
    .header-main { min-height: 76px; }
    .brand-logo { width: 48px; height: 41px; }
    .brand b { font-size: 1.14rem; }
    .hero { min-height: 700px; }
    .hero-content { padding-block: 55px 125px; }
    .hero-lead { max-width: 510px; }
    .slider-controls { bottom: 47px; }
    .welcome, .family-feature, .visit { grid-template-columns: 1fr; }
    .homepage-custom-section-inner { grid-template-columns: 1fr; gap: 20px; }
    .homepage-custom-section-copy { padding-left: 18px; }
    .homepage-layout-section-inner { grid-template-columns: 1fr; gap: 22px; }
    .homepage-layout-section-media, .homepage-layout-section-copy { grid-column: auto !important; grid-row: auto !important; }
    .homepage-layout-section-media figure, .homepage-layout-section-media img { min-height: 280px; }
    .homepage-layout-section-gallery { grid-column: auto; }
    .homepage-layout-section-gallery + .homepage-layout-section-copy { grid-column: auto; }
    .welcome { gap: 20px; }
    .welcome-copy { padding-left: 18px; }
    .section-heading { grid-template-columns: 1fr; gap: 10px; }
    .service-grid { display: block; }
    .service-card { display: block; margin-bottom: 18px; }
    .service-card-1 .service-photo, .service-card-2 .service-photo, .service-photo { height: 270px; }
    .feature-copy { grid-template-columns: 1fr; gap: 12px; }
    .feature-images { grid-template-columns: minmax(0, 1.8fr) minmax(120px, .72fr); height: 390px; gap: 14px; }
    .family-feature { gap: 44px; }
    .family-photo img, .family-tone { min-height: 380px; }
    .visit { gap: 32px; }
    .route-link { grid-column: auto; }
    .detail-hero { min-height: 520px; }
    .detail-section-image_left.has-image, .detail-section-image_right.has-image { grid-template-columns: 1fr; }
    .detail-section-image_left.has-image .detail-section-copy, .detail-section-image_right.has-image .detail-section-copy { order: 2; padding: 5px 28px 32px; }
    .detail-section-image_right.has-image .detail-section-photo { order: 1; }
    .detail-section-photo, .detail-section-photo img { min-height: 280px; max-height: 380px; }
    .detail-gallery-grid { grid-template-columns: 1fr; }
    .detail-contact .wrap { align-items: center; flex-direction: column; text-align: center; }
    .footer-main { grid-template-columns: 1fr 1fr; }
    .footer-about { grid-column: 1 / -1; }
}

@media (max-width: 470px) {
    .detail-gallery-track figure { flex-basis: 86%; }
    .header-contact span { display: none; }
    .header-contact { justify-content: flex-end; }
    h1 { font-size: 3.05rem; }
    h2 { font-size: 2rem; }
    .hero { min-height: 710px; }
    .hero-card { padding: 25px; }
    .hero h1 { font-size: 3.35rem; }
    .hero-actions { align-items: flex-start; flex-direction: column; gap: 10px; }
    .service-photo, .service-card-1 .service-photo, .service-card-2 .service-photo { height: 220px; }
    .homepage-layout-family .service-photo, .homepage-layout-family .service-card-1 .service-photo, .homepage-layout-family .service-card-2 .service-photo { height: 220px; }
    .feature-images { grid-template-columns: minmax(0, 1.55fr) minmax(105px, .7fr); height: 300px; gap: 10px; }
    .family-photo { padding: 0 12px 12px 0; }
    .family-photo img, .family-tone { min-height: 300px; }
    .family-photo > span { right: 0; bottom: 27px; }
    .footer-main { grid-template-columns: 1fr; }
    .footer-about { grid-column: auto; }
    .footer-bottom { align-items: flex-start; flex-direction: column; gap: 9px; }
}

@media (max-width: 760px) {
    .homepage-layout-editorial .hero { min-height: 710px; align-items: end; }
    .homepage-layout-editorial .hero-card { width: 100%; margin: 0; padding: 28px; }
    .homepage-layout-editorial .slider-controls { justify-content: flex-end; }
    .homepage-layout-editorial .service-card, .homepage-layout-editorial .service-card-1, .homepage-layout-editorial .service-card-2, .homepage-layout-editorial .service-card-5,
    .homepage-layout-nature .service-card, .homepage-layout-nature .service-card-1, .homepage-layout-nature .service-card-2, .homepage-layout-nature .service-card-4, .homepage-layout-nature .service-card-5 { display: block; min-height: 0; }
    .homepage-layout-editorial .service-photo, .homepage-layout-editorial .service-card-1 .service-photo, .homepage-layout-editorial .service-card-2 .service-photo,
    .homepage-layout-nature .service-photo, .homepage-layout-nature .service-card-1 .service-photo, .homepage-layout-nature .service-card-2 .service-photo { height: 250px; min-height: 0; }
    .homepage-layout-editorial .family-photo, .homepage-layout-editorial .family-copy { order: initial; }
    .homepage-layout-family .hero-card { text-align: left; }
    .homepage-layout-family .hero-actions { justify-content: flex-start; }
    .homepage-layout-family .hero-shade { background: linear-gradient(0deg, rgba(6, 34, 31, .82) 0%, rgba(6, 34, 31, .48) 56%, rgba(6, 34, 31, .04) 88%); }
    .homepage-layout-family .service-carousel-controls { margin-top: -4px; }
    .homepage-layout-family .service-grid { display: flex; }
    .homepage-layout-family .service-card, .homepage-layout-family .service-card-1, .homepage-layout-family .service-card-2, .homepage-layout-family .service-card-3, .homepage-layout-family .service-card-4, .homepage-layout-family .service-card-5 { flex-basis: 86%; display: flex; margin: 0; }
    .homepage-layout-family .feature { margin-inline: 0; border-radius: 0; }
    .homepage-layout-nature .welcome { grid-template-columns: 1fr; }
}

/* Hlavní fotografie zůstává po celé ploše světlá; čitelnost zajišťuje karta nebo stín samotného textu. */
.hero .hero-shade { background: transparent; }

body.effects-off *, body.effects-off *::before, body.effects-off *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
body.effects-dynamic.reveal-ready [data-reveal] { opacity: 0; transform: translateY(28px); transition: opacity .7s ease, transform .7s ease; }
body.effects-dynamic.reveal-ready [data-reveal].is-visible { opacity: 1; transform: none; }
body.effects-dynamic .service-card:hover { transform: translateY(-8px) rotate(.15deg); }

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

/* Všechny odkazy v desktopovém menu jsou rovnocenné. */
@media (min-width: 1401px) {
  .main-menu { gap: clamp(8px, 1.05vw, 15px); }
  .main-menu > a { font-size: 1rem; white-space: nowrap; }
}

/* v5: rychlejší a bezpečnější práce s fotografiemi bez zbytečného ořezu. */
.hero-photo,
.detail-photo,
.service-photo,
.feature-main-photo,
.feature-small-photo,
.family-photo img,
.homepage-layout-photo,
.detail-section-photo img,
.detail-gallery-grid img,
.detail-gallery-track img {
    background-color: var(--water-light);
}

/* v6: sekce se vykreslují standardně; u tohoto webu je plynulost při navigaci a scrollu důležitější než agresivní odložený render. */

@media (max-width: 760px) {
    :root {
        --hero-mobile-media-height: clamp(250px, 76vw, 340px);
        --detail-mobile-media-height: clamp(250px, 74vw, 330px);
    }

    body.menu-open { overflow: hidden; }

    /* Homepage: fotografie má na telefonu vlastní rozumný poměr, karta jen lehce překrývá její spodní hranu. */
    .hero,
    .homepage-layout-editorial .hero,
    .homepage-layout-family .hero,
    .homepage-layout-nature .hero {
        display: block;
        min-height: 0;
        overflow: hidden;
        background: var(--water-light);
    }
    .hero-slides,
    .hero-shade {
        top: 0;
        right: 0;
        bottom: auto;
        left: 0;
        height: var(--hero-mobile-media-height);
    }
    .hero-photo {
        object-fit: cover;
    }
    .hero-content,
    .homepage-layout-editorial .hero-content {
        padding-block: calc(var(--hero-mobile-media-height) - 24px) 82px;
    }
    .hero-card,
    .homepage-layout-editorial .hero-card {
        width: 100%;
        margin: 0;
    }
    .slider-controls,
    .homepage-layout-editorial .slider-controls {
        top: calc(var(--hero-mobile-media-height) - 54px);
        bottom: auto;
        justify-content: flex-end;
        gap: 8px;
    }
    .slider-dots { gap: 6px; padding-inline: 10px; }
    .slider-controls > button { flex: 0 0 40px; }

    /* Rodinná varianta měla na desktopu text přímo přes fotku. Na telefonu dostane čitelnou kartu. */
    .homepage-layout-family .hero-card {
        width: 100%;
        padding: 25px;
        color: var(--text);
        background: rgba(255, 254, 250, .97);
        border: 1px solid rgba(255, 255, 255, .82);
        border-radius: var(--radius);
        box-shadow: 0 18px 44px rgba(13, 48, 45, .16);
    }
    .homepage-layout-family .hero-card .kicker { color: var(--wine); text-shadow: none; }
    .homepage-layout-family .hero-card h1,
    .homepage-layout-family .hero-card .hero-lead,
    .homepage-layout-family .hero-card .text-link { color: var(--ink-deep); text-shadow: none; }
    .homepage-layout-family .hero-card .button-dark { color: #fff; background: var(--ink); }

    /* Detail stránky: obraz a text se na telefonu neroztahují do jednoho vysokého ořezaného banneru. */
    .detail-hero {
        display: block;
        min-height: 0;
        padding-top: var(--detail-mobile-media-height);
        background: var(--ink-deep);
    }
    .detail-photo,
    .detail-overlay {
        top: 0;
        right: 0;
        bottom: auto;
        left: 0;
        height: var(--detail-mobile-media-height);
    }
    .detail-photo { object-fit: cover; }
    .detail-photo.media-portrait {
        object-fit: contain;
        background: #284b47;
        background: color-mix(in srgb, var(--ink-deep) 88%, #fff 12%);
    }
    .detail-overlay {
        background: linear-gradient(0deg, rgba(5, 32, 30, .28), rgba(5, 32, 30, 0) 70%);
    }
    .detail-heading {
        padding-block: 32px 42px;
    }
    .detail-heading .kicker.light,
    .detail-heading h1,
    .detail-heading > p:last-child {
        text-shadow: none;
    }
    .detail-heading h1 { font-size: clamp(2.65rem, 13vw, 4.2rem); }

}

@media (min-width: 761px) {
    /* Hero zůstává výrazný, ale na běžném desktopu už nezabírá zbytečně většinu obrazovky. */
    .hero { min-height: min(660px, calc(100svh - 119px)); }
    .homepage-layout-editorial .hero { min-height: min(640px, calc(100svh - 119px)); }
    .homepage-layout-family .hero { min-height: min(680px, calc(100svh - 119px)); }
}

/* v8: detail hero se během načítání fotografie nikdy nepropadne do zeleného
   fallbacku. Výška zůstává rezervovaná a foto + text se ukážou společně až
   po načtení a dekódování kritického obrázku. */
.detail-hero[data-critical-media] {
    background: linear-gradient(135deg, #f7f3eb, #ebe6dc);
}
.detail-hero[data-critical-media] .detail-photo,
.detail-hero[data-critical-media] .detail-overlay,
.detail-hero[data-critical-media] .detail-heading {
    opacity: 0;
    visibility: hidden;
}
.detail-hero[data-critical-media].is-media-ready .detail-photo,
.detail-hero[data-critical-media].is-media-ready .detail-overlay,
.detail-hero[data-critical-media].is-media-ready .detail-heading {
    opacity: 1;
    visibility: visible;
}
.detail-hero[data-critical-media].is-media-ready .detail-photo {
    transition: opacity .16s ease-out;
}
.detail-hero[data-critical-media].is-media-ready .detail-overlay,
.detail-hero[data-critical-media].is-media-ready .detail-heading {
    transition: opacity .12s ease-out;
}
.detail-hero[data-critical-media].is-media-error {
    background: var(--ink-deep);
}
.detail-hero[data-critical-media].is-media-error .detail-heading {
    opacity: 1;
    visibility: visible;
}
@media (prefers-reduced-motion: reduce) {
    .detail-hero[data-critical-media].is-media-ready .detail-photo,
    .detail-hero[data-critical-media].is-media-ready .detail-overlay,
    .detail-hero[data-critical-media].is-media-ready .detail-heading {
        transition: none;
    }
}


/* v8.4: vlastní sekce s odkazy na interní stránky */
.home-page-links { overflow: clip; }
/* v9.4: rozcestnik ma vzdy siroky uvod nad kartami. Nadpis i text
   vyuzivaji sirku sekce, aby admin a verejny vysledek pusobily jako jeden blok. */
.home-page-links-intro { width: 100%; max-width: none; margin-bottom: clamp(28px, 4vw, 48px); }
.home-page-links-intro h2 { max-width: none; margin-bottom: 14px; }
.home-page-links-intro > p:not(.kicker) { max-width: none; color: var(--muted); font-size: 1.05rem; line-height: 1.7; text-wrap: pretty; }
.home-page-links-intro > p:not(.kicker) + p:not(.kicker) { margin-top: 14px; }
.home-page-links-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(14px, 2vw, 24px); }
.home-page-link-card { position: relative; min-width: 0; color: var(--ink-deep); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 12px 34px rgba(8, 37, 35, .08); overflow: hidden; text-decoration: none; transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease; }
.home-page-link-card:hover { transform: translateY(-4px); box-shadow: 0 18px 42px rgba(8, 37, 35, .13); border-color: rgba(141, 38, 56, .28); }
.home-page-link-card:focus-visible { outline: 3px solid var(--wine); outline-offset: 3px; }
.home-page-link-media { display: block; overflow: hidden; background: var(--water-light); }
.home-page-link-photo { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease; }
.home-page-link-card:hover .home-page-link-photo { transform: scale(1.025); }
.home-page-link-fallback { display: grid; place-items: center; width: 100%; height: 100%; min-height: 120px; color: var(--ink-deep); font-size: 2rem; font-weight: 800; }
.home-page-link-copy { display: flex; flex-direction: column; min-width: 0; gap: 9px; padding: 20px 22px 22px; overflow-wrap: anywhere; }
.home-page-link-copy > strong { font-family: Georgia, serif; font-size: clamp(1.2rem, 2vw, 1.55rem); line-height: 1.15; }
.home-page-link-description { color: var(--muted); line-height: 1.55; }
.home-page-link-action { margin-top: auto; color: var(--wine); font-weight: 800; }
.home-page-links-footer { margin-top: 30px; }

.home-page-links-page_tiles .home-page-link-card { grid-column: span 3; min-height: 280px; color: #fff; background: var(--ink-deep); }
.home-page-links-page_tiles .home-page-link-media { position: absolute; inset: 0; }
.home-page-links-page_tiles .home-page-link-media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(5,32,30,.92), rgba(5,32,30,.08) 72%); }
.home-page-links-page_tiles .home-page-link-copy { position: relative; z-index: 1; justify-content: flex-end; min-height: 280px; padding: 24px; }
.home-page-links-page_tiles .home-page-link-copy > strong { color: #fff; font-size: clamp(1.35rem, 2.2vw, 1.8rem); }
.home-page-links-page_tiles .home-page-link-action { color: #fff; }

.home-page-links-page_cards .home-page-link-card { grid-column: span 4; display: flex; flex-direction: column; }
.home-page-links-page_cards .home-page-link-media { aspect-ratio: 16 / 10; }
.home-page-links-page_cards .home-page-link-copy { flex: 1; }

.home-page-links-page_compact .home-page-links-grid { gap: 12px; }
.home-page-links-page_compact .home-page-link-card { grid-column: span 4; display: grid; grid-template-columns: 84px minmax(0, 1fr); align-items: center; gap: 14px; min-height: 108px; padding: 12px; border-radius: 18px; }
.home-page-links-page_compact .home-page-link-media { width: 84px; height: 84px; min-height: 84px; border-radius: 14px; }
.home-page-links-page_compact .home-page-link-copy { padding: 2px 8px 2px 0; gap: 6px; }
.home-page-links-page_compact .home-page-link-copy > strong { font-size: 1.15rem; }
.home-page-links-page_compact .home-page-link-action { font-size: .9rem; }

.home-page-links-page_featured .home-page-link-card { grid-column: span 4; min-height: 360px; }
.home-page-links-page_featured .home-page-link-card:first-child { grid-column: span 8; display: grid; grid-template-columns: 1.15fr .85fr; }
.home-page-links-page_featured .home-page-link-media { min-height: 230px; }
.home-page-links-page_featured .home-page-link-card:first-child .home-page-link-media { min-height: 360px; }
.home-page-links-page_featured .home-page-link-copy { min-height: 130px; }
.home-page-links-page_featured .home-page-link-card:first-child .home-page-link-copy { justify-content: center; padding: clamp(26px, 4vw, 46px); }

@media (max-width: 1050px) {
  .home-page-links-page_tiles .home-page-link-card { grid-column: span 6; }
  .home-page-links-page_cards .home-page-link-card { grid-column: span 6; }
  .home-page-links-page_compact .home-page-link-card { grid-column: span 6; }
  .home-page-links-page_featured .home-page-link-card, .home-page-links-page_featured .home-page-link-card:first-child { grid-column: span 6; display: flex; flex-direction: column; }
  .home-page-links-page_featured .home-page-link-card:first-child .home-page-link-media { min-height: 230px; }
}
@media (max-width: 650px) {
  .home-page-links-grid { gap: 12px; }
  .home-page-links-page_tiles .home-page-link-card,
  .home-page-links-page_cards .home-page-link-card,
  .home-page-links-page_compact .home-page-link-card,
  .home-page-links-page_featured .home-page-link-card,
  .home-page-links-page_featured .home-page-link-card:first-child { grid-column: 1 / -1; }
  .home-page-links-page_tiles .home-page-link-card, .home-page-links-page_tiles .home-page-link-copy { min-height: 230px; }
  .home-page-links-page_cards .home-page-link-media, .home-page-links-page_featured .home-page-link-media, .home-page-links-page_featured .home-page-link-card:first-child .home-page-link-media { min-height: 0; aspect-ratio: 16 / 10; }
  .home-page-links-page_compact .home-page-link-card { grid-template-columns: 72px minmax(0, 1fr); min-height: 96px; padding: 10px; }
  .home-page-links-page_compact .home-page-link-media { width: 72px; height: 72px; min-height: 72px; border-radius: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .home-page-link-card, .home-page-link-photo { transition: none; }
}

/* Shared section composer: used by regular pages and custom homepage sections. */
.composed-section-inner { display: grid; grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr); align-items: stretch; gap: clamp(30px, 5vw, 60px); }
.composed-section-copy { min-width: 0; align-self: center; }
.composed-section-copy > :first-child { margin-top: 0; }
.composed-section-copy > :last-child { margin-bottom: 0; }
.composed-section-copy > p:not(.kicker) { max-width: 720px; color: var(--muted); font-size: 1.06rem; }
.composed-section-copy .button { margin-top: 14px; }
.composed-primary-media { position: relative; min-width: 0; min-height: 380px; margin: 0; overflow: hidden; background: var(--water-light); }
.detail-page-jobs .composed-primary-media { background: transparent; }
.composed-primary-media img { width: 100%; height: 100%; min-height: 380px; object-fit: cover; }
.composed-primary-media figcaption, .composed-gallery figcaption { position: absolute; right: 12px; bottom: 12px; left: 12px; padding: 8px 11px; color: #fff; background: rgba(8, 37, 35, .82); border-radius: 4px; font-size: .82rem; line-height: 1.35; }
.composed-layout-image_left .composed-primary-media { grid-column: 1; grid-row: 1; }
.composed-layout-image_left .composed-section-copy { grid-column: 2; grid-row: 1; }
.composed-layout-image_right .composed-primary-media { grid-column: 2; grid-row: 1; }
.composed-layout-image_right .composed-section-copy { grid-column: 1; grid-row: 1; }
.composed-layout-image_top .composed-primary-media { grid-column: 1 / -1; min-height: clamp(300px, 38vw, 520px); }
.composed-layout-image_top .composed-primary-media img { min-height: clamp(300px, 38vw, 520px); }
.composed-layout-image_top .composed-section-copy { grid-column: 1 / -1; max-width: 820px; }
.composed-layout-text .composed-section-copy, .composed-section.no-primary .composed-section-copy { grid-column: 1 / -1; max-width: 820px; }
.composed-gallery { min-width: 0; margin-top: 28px; }
.composed-gallery-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.composed-gallery-grid figure { position: relative; min-height: 165px; margin: 0; overflow: hidden; border-radius: calc(var(--radius) - 5px); background: var(--water-light); }
.composed-gallery-grid img { width: 100%; height: 100%; min-height: 165px; object-fit: cover; }
.composed-gallery-slider .detail-gallery-track figure { flex-basis: calc((100% - 28px) / 3); min-height: 150px; }
.composed-gallery-slider .detail-gallery-track img { min-height: 150px; }
.composed-gallery-full { grid-column: 1 / -1; min-width: 0; }
.gallery-position-below_section .composed-gallery-full .composed-gallery { margin-top: 0; }
.detail-section.composed-section.composed-layout-image_left.has-primary,
.detail-section.composed-section.composed-layout-image_right.has-primary { padding: 0; overflow: hidden; }
.detail-section.composed-section.composed-layout-image_left.has-primary .composed-section-inner,
.detail-section.composed-section.composed-layout-image_right.has-primary .composed-section-inner { gap: 0; }
.detail-section.composed-section.composed-layout-image_left.has-primary .composed-section-copy { padding: 45px 45px 45px 0; margin-left: clamp(30px, 5vw, 60px); }
.detail-section.composed-section.composed-layout-image_right.has-primary .composed-section-copy { padding: 45px 0 45px 45px; margin-right: clamp(30px, 5vw, 60px); }
.detail-section.composed-section.composed-layout-image_left.has-primary .composed-primary-media,
.detail-section.composed-section.composed-layout-image_right.has-primary .composed-primary-media { border-radius: 0; }
.homepage-composed-section { background: var(--paper); border-block: 1px solid var(--line); }
.homepage-composed-section .composed-primary-media { border-radius: var(--radius); box-shadow: var(--shadow); }
.homepage-composed-section .composed-section-copy { padding-block: clamp(8px, 2vw, 24px); }
.homepage-composed-section .composed-gallery-grid figure { box-shadow: 0 8px 26px rgba(8, 37, 35, .08); }

@media (max-width: 760px) {
  .composed-section-inner,
  .composed-section-inner.composed-layout-image_left.media-size-compact,
  .composed-section-inner.composed-layout-image_left.media-size-balanced,
  .composed-section-inner.composed-layout-image_left.media-size-large,
  .composed-section-inner.composed-layout-image_right.media-size-compact,
  .composed-section-inner.composed-layout-image_right.media-size-balanced,
  .composed-section-inner.composed-layout-image_right.media-size-large { grid-template-columns: 1fr; gap: 22px; }
  .composed-layout-image_left .composed-primary-media,
  .composed-layout-image_right .composed-primary-media,
  .composed-layout-image_top .composed-primary-media,
  .composed-layout-image_left .composed-section-copy,
  .composed-layout-image_right .composed-section-copy,
  .composed-layout-image_top .composed-section-copy,
  .composed-layout-text .composed-section-copy,
  .composed-section.no-primary .composed-section-copy { grid-column: 1; grid-row: auto; }
  .composed-layout-image_right .composed-primary-media { order: 1; }
  .composed-layout-image_right .composed-section-copy { order: 2; }
  /* A full-width gallery/slideshow must stay below the section on mobile.
     Without an explicit order it jumped above image_right because that layout
     gives the photo/copy positive order values. */
  .composed-section-inner > .composed-gallery-full { order: 3; }
  .composed-primary-media, .composed-primary-media img { min-height: 260px; max-height: 380px; }
  .detail-section.composed-section.composed-layout-image_left.has-primary .composed-section-copy,
  .detail-section.composed-section.composed-layout-image_right.has-primary .composed-section-copy { margin: 0; padding: 8px 28px 32px; }
  .composed-gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .composed-gallery-slider .detail-gallery-track figure { flex-basis: min(78%, 260px); }
}

/* Shared image-top layout also works for the built-in homepage sections. */
.homepage-layout-section-image_top .homepage-layout-section-inner {
    grid-template-columns: 1fr;
}
.homepage-layout-section-image_top .homepage-layout-section-heading,
.homepage-layout-section-image_top .homepage-layout-section-media,
.homepage-layout-section-image_top .homepage-layout-section-copy {
    grid-column: 1 / -1;
}
.homepage-layout-section-image_top .homepage-layout-section-media {
    grid-row: auto;
}
.homepage-layout-section-image_top .homepage-layout-section-media figure {
    min-height: clamp(280px, 38vw, 500px);
}
.homepage-layout-section-image_top .homepage-layout-section-media img {
    width: 100%;
    height: 100%;
    min-height: clamp(280px, 38vw, 500px);
    object-fit: cover;
}

/* Mini slideshow inside the shared composer: compact controls over the thumbnails. */
.composed-gallery-slider { position: relative; }
.composed-gallery-slider .detail-gallery-controls {
    position: absolute;
    z-index: 3;
    top: 50%;
    right: 8px;
    left: 8px;
    display: flex;
    justify-content: space-between;
    margin: 0;
    transform: translateY(-50%);
    pointer-events: none;
}
.composed-gallery-slider .detail-gallery-controls button {
    width: 38px;
    height: 38px;
    border-radius: 4px;
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 5px 18px rgba(8, 37, 35, .18);
    pointer-events: auto;
}

/* Media scale for full-width grids and page-link cards. Side-by-side photos and
   mini sliders are refined below so the public output matches the composer. */
.composed-section.media-size-compact .composed-gallery-grid figure,
.composed-section.media-size-compact .composed-gallery-grid img { min-height: 125px; }
.composed-section.media-size-large .composed-gallery-grid figure,
.composed-section.media-size-large .composed-gallery-grid img { min-height: 210px; }

.home-page-links.media-size-compact.home-page-links-page_tiles .home-page-link-card,
.home-page-links.media-size-compact.home-page-links-page_tiles .home-page-link-copy { min-height: 220px; }
.home-page-links.media-size-large.home-page-links-page_tiles .home-page-link-card,
.home-page-links.media-size-large.home-page-links-page_tiles .home-page-link-copy { min-height: 340px; }
.home-page-links.media-size-compact.home-page-links-page_cards .home-page-link-media { aspect-ratio: 16 / 9; }
.home-page-links.media-size-large.home-page-links-page_cards .home-page-link-media { aspect-ratio: 4 / 3; }
.home-page-links.media-size-compact.home-page-links-page_compact .home-page-link-card { grid-template-columns: 68px minmax(0, 1fr); min-height: 90px; padding: 9px; }
.home-page-links.media-size-compact.home-page-links-page_compact .home-page-link-media { width: 68px; height: 68px; min-height: 68px; }
.home-page-links.media-size-large.home-page-links-page_compact .home-page-link-card { grid-template-columns: 104px minmax(0, 1fr); min-height: 128px; padding: 12px; }
.home-page-links.media-size-large.home-page-links-page_compact .home-page-link-media { width: 104px; height: 104px; min-height: 104px; }
.home-page-links.media-size-compact.home-page-links-page_featured .home-page-link-card { min-height: 300px; }
.home-page-links.media-size-compact.home-page-links-page_featured .home-page-link-media { min-height: 190px; }
.home-page-links.media-size-compact.home-page-links-page_featured .home-page-link-card:first-child .home-page-link-media { min-height: 300px; }
.home-page-links.media-size-large.home-page-links-page_featured .home-page-link-card { min-height: 430px; }
.home-page-links.media-size-large.home-page-links-page_featured .home-page-link-media { min-height: 285px; }
.home-page-links.media-size-large.home-page-links-page_featured .home-page-link-card:first-child .home-page-link-media { min-height: 430px; }

@media (max-width: 650px) {
  .home-page-links.media-size-compact.home-page-links-page_tiles .home-page-link-card,
  .home-page-links.media-size-compact.home-page-links-page_tiles .home-page-link-copy { min-height: 190px; }
  .home-page-links.media-size-large.home-page-links-page_tiles .home-page-link-card,
  .home-page-links.media-size-large.home-page-links-page_tiles .home-page-link-copy { min-height: 270px; }
  .home-page-links.media-size-compact.home-page-links-page_compact .home-page-link-card { grid-template-columns: 60px minmax(0, 1fr); min-height: 82px; }
  .home-page-links.media-size-compact.home-page-links-page_compact .home-page-link-media { width: 60px; height: 60px; min-height: 60px; }
  .home-page-links.media-size-large.home-page-links-page_compact .home-page-link-card { grid-template-columns: 84px minmax(0, 1fr); min-height: 108px; }
  .home-page-links.media-size-large.home-page-links-page_compact .home-page-link-media { width: 84px; height: 84px; min-height: 84px; }
  .home-page-links.media-size-compact.home-page-links-page_cards .home-page-link-media,
  .home-page-links.media-size-compact.home-page-links-page_featured .home-page-link-media,
  .home-page-links.media-size-compact.home-page-links-page_featured .home-page-link-card:first-child .home-page-link-media { aspect-ratio: 16 / 9; min-height: 0; }
  .home-page-links.media-size-large.home-page-links-page_cards .home-page-link-media,
  .home-page-links.media-size-large.home-page-links-page_featured .home-page-link-media,
  .home-page-links.media-size-large.home-page-links-page_featured .home-page-link-card:first-child .home-page-link-media { aspect-ratio: 4 / 3; min-height: 0; }
}

/* v9.2: the public result now follows the visual composer more literally.
   Side-by-side media starts at the same top edge as the copy. When a mini
   slideshow sits under the copy, Balanced/Large media can use the full visual
   height of the right column instead of floating in its vertical centre. */
.composed-section.media-size-compact .composed-primary-media,
.composed-section.media-size-balanced .composed-primary-media,
.composed-section.media-size-large .composed-primary-media { align-self: start; min-height: 0; }
.composed-section.media-size-compact .composed-primary-media img,
.composed-section.media-size-balanced .composed-primary-media img,
.composed-section.media-size-large .composed-primary-media img { min-height: 0; }

/* Without an under-copy gallery the size choices stay compact and predictable. */
.composed-section.media-size-compact:not(.composed-layout-image_top):not(.has-gallery) .composed-primary-media { aspect-ratio: 16 / 10; }
.composed-section.media-size-balanced:not(.composed-layout-image_top):not(.has-gallery) .composed-primary-media { aspect-ratio: 4 / 3; }
.composed-section.media-size-large:not(.composed-layout-image_top):not(.has-gallery) .composed-primary-media { aspect-ratio: 1 / 1; }

/* With the mini gallery under the text the main picture should visually balance
   the complete copy+gallery column. Compact stays restrained; Balanced and
   Large become taller instead of leaving a large empty hole below the photo. */
.composed-section-inner.has-gallery.gallery-position-under_copy.composed-layout-image_left.media-size-compact .composed-primary-media,
.composed-section-inner.has-gallery.gallery-position-under_copy.composed-layout-image_right.media-size-compact .composed-primary-media { aspect-ratio: 1 / 1; }
.composed-section-inner.has-gallery.gallery-position-under_copy.composed-layout-image_left.media-size-balanced .composed-primary-media,
.composed-section-inner.has-gallery.gallery-position-under_copy.composed-layout-image_right.media-size-balanced .composed-primary-media { aspect-ratio: 4 / 5; }
.composed-section-inner.has-gallery.gallery-position-under_copy.composed-layout-image_left.media-size-large .composed-primary-media,
.composed-section-inner.has-gallery.gallery-position-under_copy.composed-layout-image_right.media-size-large .composed-primary-media { aspect-ratio: 3 / 4; }

.composed-section.media-size-compact.composed-layout-image_top .composed-primary-media { aspect-ratio: 16 / 5; min-height: 0; }
.composed-section.media-size-balanced.composed-layout-image_top .composed-primary-media { aspect-ratio: 16 / 7; min-height: 0; }
.composed-section.media-size-large.composed-layout-image_top .composed-primary-media { aspect-ratio: 16 / 9; min-height: 0; }
.composed-section.media-size-compact.composed-layout-image_top .composed-primary-media img,
.composed-section.media-size-balanced.composed-layout-image_top .composed-primary-media img,
.composed-section.media-size-large.composed-layout-image_top .composed-primary-media img { min-height: 0; }

/* A mini slideshow must actually behave/look like a slider. Roughly 2.3 cards
   are visible, so 3+ photos overflow and the arrow controls remain useful. */
.composed-gallery-slider .detail-gallery-track { gap: 10px; padding: 2px; scrollbar-width: none; }
.composed-gallery-slider .detail-gallery-track::-webkit-scrollbar { display: none; }
.composed-gallery-slider .detail-gallery-track figure { flex: 0 0 42%; min-height: 0; aspect-ratio: 4 / 3; }
.composed-gallery-slider .detail-gallery-track img { width: 100%; height: 100%; min-height: 0; object-fit: cover; }
.composed-section.media-size-compact .composed-gallery-slider .detail-gallery-track figure { flex-basis: 36%; aspect-ratio: 16 / 10; }
.composed-section.media-size-large .composed-gallery-slider .detail-gallery-track figure { flex-basis: 48%; aspect-ratio: 4 / 3; }

/* Match the selected size in horizontal layouts by adjusting the column share,
   not only the crop height. */
.composed-section-inner.composed-layout-image_left.media-size-compact { grid-template-columns: minmax(0, .78fr) minmax(0, 1.22fr); }
.composed-section-inner.composed-layout-image_left.media-size-balanced { grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr); }
.composed-section-inner.composed-layout-image_left.media-size-large { grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr); }
.composed-section-inner.composed-layout-image_right.media-size-compact { grid-template-columns: minmax(0, 1.22fr) minmax(0, .78fr); }
.composed-section-inner.composed-layout-image_right.media-size-balanced { grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); }
.composed-section-inner.composed-layout-image_right.media-size-large { grid-template-columns: minmax(0, .88fr) minmax(0, 1.12fr); }

@media (max-width: 760px) {
  .composed-section-inner.composed-layout-image_left.media-size-compact,
  .composed-section-inner.composed-layout-image_left.media-size-balanced,
  .composed-section-inner.composed-layout-image_left.media-size-large,
  .composed-section-inner.composed-layout-image_right.media-size-compact,
  .composed-section-inner.composed-layout-image_right.media-size-balanced,
  .composed-section-inner.composed-layout-image_right.media-size-large { grid-template-columns: 1fr; }
  .composed-section-inner.has-gallery.gallery-position-under_copy.composed-layout-image_left.media-size-compact .composed-primary-media,
  .composed-section-inner.has-gallery.gallery-position-under_copy.composed-layout-image_right.media-size-compact .composed-primary-media { aspect-ratio: 16 / 10; }
  .composed-section-inner.has-gallery.gallery-position-under_copy.composed-layout-image_left.media-size-balanced .composed-primary-media,
  .composed-section-inner.has-gallery.gallery-position-under_copy.composed-layout-image_right.media-size-balanced .composed-primary-media { aspect-ratio: 4 / 3; }
  .composed-section-inner.has-gallery.gallery-position-under_copy.composed-layout-image_left.media-size-large .composed-primary-media,
  .composed-section-inner.has-gallery.gallery-position-under_copy.composed-layout-image_right.media-size-large .composed-primary-media { aspect-ratio: 1 / 1; }
  .composed-gallery-slider .detail-gallery-track figure { flex-basis: min(62%, 250px); }
  .composed-section.media-size-compact .composed-gallery-slider .detail-gallery-track figure { flex-basis: min(52%, 210px); }
  .composed-section.media-size-large .composed-gallery-slider .detail-gallery-track figure { flex-basis: min(72%, 290px); }
}

.home-page-links.media-size-balanced.home-page-links-page_tiles .home-page-link-card,
.home-page-links.media-size-balanced.home-page-links-page_tiles .home-page-link-copy { min-height: 260px; }
.home-page-links.media-size-balanced.home-page-links-page_compact .home-page-link-card { grid-template-columns: 78px minmax(0, 1fr); min-height: 102px; }
.home-page-links.media-size-balanced.home-page-links-page_compact .home-page-link-media { width: 78px; height: 78px; min-height: 78px; }
.home-page-links.media-size-balanced.home-page-links-page_featured .home-page-link-card { min-height: 330px; }
.home-page-links.media-size-balanced.home-page-links-page_featured .home-page-link-media { min-height: 210px; }
.home-page-links.media-size-balanced.home-page-links-page_featured .home-page-link-card:first-child .home-page-link-media { min-height: 330px; }
@media (max-width: 650px) {
  .home-page-links.media-size-balanced.home-page-links-page_tiles .home-page-link-card,
  .home-page-links.media-size-balanced.home-page-links-page_tiles .home-page-link-copy { min-height: 215px; }
  .home-page-links.media-size-balanced.home-page-links-page_compact .home-page-link-card { grid-template-columns: 68px minmax(0, 1fr); min-height: 92px; }
  .home-page-links.media-size-balanced.home-page-links-page_compact .home-page-link-media { width: 68px; height: 68px; min-height: 68px; }
}

/* v9.3: doplňková galerie/slideshow může patřit i pod hlavní fotografii.
   Tím se kompozice skládá z vizuálního sloupce (foto + galerie) a textu. */
.composed-media-stack {
  min-width: 0;
  display: grid;
  align-content: start;
  gap: 14px;
  align-self: start;
}
.composed-media-stack > .composed-primary-media { width: 100%; }
.composed-media-stack > .composed-gallery { margin-top: 0; }
.composed-media-stack .composed-gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.composed-layout-image_left .composed-media-stack { grid-column: 1; grid-row: 1; }
.composed-layout-image_right .composed-media-stack { grid-column: 2; grid-row: 1; }
.composed-layout-image_top .composed-media-stack { grid-column: 1 / -1; }

/* Když galerie není pod textem, hlavní fotografie drží normální, předvídatelný
   poměr stran. Výšku už nemusí natahovat délka textu v sousedním sloupci. */
.composed-section-inner.gallery-position-under_primary.composed-layout-image_left.media-size-compact .composed-primary-media,
.composed-section-inner.gallery-position-under_primary.composed-layout-image_right.media-size-compact .composed-primary-media,
.composed-section-inner.gallery-position-below_section.composed-layout-image_left.media-size-compact .composed-primary-media,
.composed-section-inner.gallery-position-below_section.composed-layout-image_right.media-size-compact .composed-primary-media { aspect-ratio: 16 / 10; }
.composed-section-inner.gallery-position-under_primary.composed-layout-image_left.media-size-balanced .composed-primary-media,
.composed-section-inner.gallery-position-under_primary.composed-layout-image_right.media-size-balanced .composed-primary-media,
.composed-section-inner.gallery-position-below_section.composed-layout-image_left.media-size-balanced .composed-primary-media,
.composed-section-inner.gallery-position-below_section.composed-layout-image_right.media-size-balanced .composed-primary-media { aspect-ratio: 4 / 3; }
.composed-section-inner.gallery-position-under_primary.composed-layout-image_left.media-size-large .composed-primary-media,
.composed-section-inner.gallery-position-under_primary.composed-layout-image_right.media-size-large .composed-primary-media,
.composed-section-inner.gallery-position-below_section.composed-layout-image_left.media-size-large .composed-primary-media,
.composed-section-inner.gallery-position-below_section.composed-layout-image_right.media-size-large .composed-primary-media { aspect-ratio: 1 / 1; }

/* Ve vizuálním sloupci je mini slideshow o něco subtilnější než pod textem,
   aby nepřebila hlavní fotku, ale stále bylo vidět, že lze posouvat. */
.composed-media-stack .composed-gallery-slider .detail-gallery-track figure { flex-basis: 46%; aspect-ratio: 4 / 3; }
.composed-section.media-size-compact .composed-media-stack .composed-gallery-slider .detail-gallery-track figure { flex-basis: 40%; aspect-ratio: 16 / 10; }
.composed-section.media-size-large .composed-media-stack .composed-gallery-slider .detail-gallery-track figure { flex-basis: 52%; aspect-ratio: 4 / 3; }

@media (max-width: 760px) {
  .composed-layout-image_left .composed-media-stack,
  .composed-layout-image_right .composed-media-stack,
  .composed-layout-image_top .composed-media-stack { grid-column: 1; grid-row: auto; }
  .composed-layout-image_right .composed-media-stack { order: 1; }
  .composed-layout-image_right .composed-section-copy { order: 2; }
  .composed-section-inner.gallery-position-under_primary.composed-layout-image_left.media-size-compact .composed-primary-media,
  .composed-section-inner.gallery-position-under_primary.composed-layout-image_right.media-size-compact .composed-primary-media { aspect-ratio: 16 / 10; }
  .composed-section-inner.gallery-position-under_primary.composed-layout-image_left.media-size-balanced .composed-primary-media,
  .composed-section-inner.gallery-position-under_primary.composed-layout-image_right.media-size-balanced .composed-primary-media { aspect-ratio: 4 / 3; }
  .composed-section-inner.gallery-position-under_primary.composed-layout-image_left.media-size-large .composed-primary-media,
  .composed-section-inner.gallery-position-under_primary.composed-layout-image_right.media-size-large .composed-primary-media { aspect-ratio: 1 / 1; }
  .composed-media-stack .composed-gallery-slider .detail-gallery-track figure { flex-basis: min(62%, 250px); }
}

/* Rich section copy: only a small, intentionally predictable set of elements. */
.safe-html p { margin-top: 0; }
.safe-html ul, .safe-html ol { margin: .8em 0 1em; padding-left: 1.45em; }
.safe-html li + li { margin-top: .3em; }
.safe-html strong { color: inherit; font-weight: 750; }
.safe-html em { font-style: italic; }
.homepage-rich-text + .homepage-rich-text { margin-top: 1em; }
.section-heading > .homepage-rich-text { max-width: 620px; color: var(--muted); }
.feature-copy .homepage-rich-text { max-width: 470px; color: var(--muted); font-size: 1.08rem; }
.family-copy > .homepage-rich-text { color: var(--muted); font-size: 1.08rem; }
.visit > div:first-child > .homepage-rich-text { max-width: 520px; color: var(--muted); }
.composed-section-copy .safe-html { max-width: 720px; color: var(--muted); font-size: 1.06rem; }
.composed-section-copy .safe-html p { margin-bottom: 1em; }
.home-page-links-intro > .safe-html { max-width: none; color: var(--muted); font-size: 1.05rem; line-height: 1.7; text-wrap: pretty; }
.home-page-links-intro > .safe-html p { max-width: none; }

/* v9.6: structured tables can live on detail pages and in custom homepage sections. */
.composed-section.content-kind-table .composed-section-copy { max-width: none; width: 100%; }
.composed-section.content-kind-table .composed-section-inner { grid-template-columns: 1fr; }
.composed-section .detail-table-scroll { width: 100%; margin-top: 18px; border: 1px solid var(--line); border-radius: calc(var(--radius) - 8px); background: #fff; }
.composed-section table { width: 100%; border-collapse: collapse; font-size: .96rem; }
.composed-section th, .composed-section td { padding: 12px 14px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.composed-section th { color: var(--ink-deep); background: var(--water-light); font-weight: 800; }
.composed-section tbody tr:last-child td { border-bottom: 0; }
.composed-section tbody tr:nth-child(even) td { background: rgba(242, 238, 225, .36); }
@media (max-width: 640px) {
  .composed-section table { min-width: 480px; font-size: .9rem; }
  .composed-section th, .composed-section td { padding: 10px 12px; }
}

/* v9.8: text-only and image-top sections use the full available section width.
   Side-by-side layouts remain naturally constrained by their text column. */
.composed-layout-text .composed-section-copy,
.composed-layout-image_top .composed-section-copy,
.composed-section.no-primary .composed-section-copy {
  width: 100%;
  max-width: none;
}
.composed-section-copy > p:not(.kicker),
.composed-section-copy .safe-html {
  max-width: none;
  font-size: clamp(1rem, .96rem + .18vw, 1.08rem);
  line-height: 1.7;
}
.composed-section-copy .safe-html p,
.composed-section-copy .safe-html li { line-height: inherit; }
.composed-section-inner.has-gallery.gallery-position-below_section { row-gap: clamp(24px, 3.5vw, 38px); }

@media (max-width: 760px) {
  .composed-section-copy > p:not(.kicker),
  .composed-section-copy .safe-html { font-size: 1rem; line-height: 1.66; }
  .composed-section-copy h2 { font-size: clamp(2rem, 10vw, 2.75rem); line-height: 1.08; }
  .composed-section-inner.has-gallery.gallery-position-below_section { row-gap: 20px; }
  .homepage-composed-section .composed-section-copy { padding-block: 4px; }
}

@media (max-width: 420px) {
  .composed-section-copy > p:not(.kicker),
  .composed-section-copy .safe-html { font-size: 1rem; line-height: 1.66; }
  .composed-gallery-grid { grid-template-columns: 1fr; }
  .composed-gallery-grid figure { min-height: 190px; }
}

/* v9.8: on homepage horizontal photo layouts behave like an editorial wrap.
   Text starts next to the main photo, but long copy continues across the full
   section width once it passes the photo instead of leaving an empty column. */
@media (min-width: 761px) {
  .homepage-composed-section .composed-section-inner.composed-layout-image_left,
  .homepage-composed-section .composed-section-inner.composed-layout-image_right {
    display: block;
  }
  .homepage-composed-section .composed-section-inner.composed-layout-image_left::after,
  .homepage-composed-section .composed-section-inner.composed-layout-image_right::after {
    content: "";
    display: block;
    clear: both;
  }
  .homepage-composed-section .composed-layout-image_left > .composed-primary-media,
  .homepage-composed-section .composed-layout-image_left > .composed-media-stack {
    float: left;
    margin: 0 clamp(28px, 4vw, 52px) 20px 0;
  }
  .homepage-composed-section .composed-layout-image_right > .composed-primary-media,
  .homepage-composed-section .composed-layout-image_right > .composed-media-stack {
    float: right;
    margin: 0 0 20px clamp(28px, 4vw, 52px);
  }
  .homepage-composed-section .composed-section-inner.media-size-compact.composed-layout-image_left > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.media-size-compact.composed-layout-image_left > .composed-media-stack,
  .homepage-composed-section .composed-section-inner.media-size-compact.composed-layout-image_right > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.media-size-compact.composed-layout-image_right > .composed-media-stack { width: 34%; }
  .homepage-composed-section .composed-section-inner.media-size-balanced.composed-layout-image_left > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.media-size-balanced.composed-layout-image_left > .composed-media-stack,
  .homepage-composed-section .composed-section-inner.media-size-balanced.composed-layout-image_right > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.media-size-balanced.composed-layout-image_right > .composed-media-stack { width: 42%; }
  .homepage-composed-section .composed-section-inner.media-size-large.composed-layout-image_left > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.media-size-large.composed-layout-image_left > .composed-media-stack,
  .homepage-composed-section .composed-section-inner.media-size-large.composed-layout-image_right > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.media-size-large.composed-layout-image_right > .composed-media-stack { width: 48%; }

  .homepage-composed-section .composed-layout-image_left .composed-section-copy,
  .homepage-composed-section .composed-layout-image_right .composed-section-copy {
    display: block;
    width: auto;
    max-width: none;
  }
  .homepage-composed-section .gallery-position-under_copy.composed-layout-image_left .composed-section-copy > .composed-gallery,
  .homepage-composed-section .gallery-position-under_copy.composed-layout-image_right .composed-section-copy > .composed-gallery,
  .homepage-composed-section .gallery-position-below_section.composed-layout-image_left .composed-gallery-full,
  .homepage-composed-section .gallery-position-below_section.composed-layout-image_right .composed-gallery-full {
    clear: both;
  }
  .homepage-composed-section .gallery-position-under_copy.composed-layout-image_left .composed-section-copy > .composed-gallery,
  .homepage-composed-section .gallery-position-under_copy.composed-layout-image_right .composed-section-copy > .composed-gallery {
    padding-top: 8px;
  }

  /* The old grid version made under-text photos artificially tall to match a
     neighbouring column. With flowing text a normal, predictable crop is better. */
  .homepage-composed-section .composed-section-inner.composed-layout-image_left.media-size-compact > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.composed-layout-image_right.media-size-compact > .composed-primary-media { aspect-ratio: 16 / 10; }
  .homepage-composed-section .composed-section-inner.composed-layout-image_left.media-size-balanced > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.composed-layout-image_right.media-size-balanced > .composed-primary-media { aspect-ratio: 4 / 3; }
  .homepage-composed-section .composed-section-inner.composed-layout-image_left.media-size-large > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.composed-layout-image_right.media-size-large > .composed-primary-media { aspect-ratio: 1 / 1; }
}


/* v9.9: side-by-side sections are true two-column compositions again.
   The main image stretches to the actual copy height on desktop instead of
   being locked to a 4:3/1:1 crop, while mobile keeps a predictable crop. */
@media (min-width: 761px) {
  .composed-section-inner.composed-layout-image_left,
  .composed-section-inner.composed-layout-image_right,
  .homepage-composed-section .composed-section-inner.composed-layout-image_left,
  .homepage-composed-section .composed-section-inner.composed-layout-image_right {
    display: grid;
    align-items: stretch;
  }

  .homepage-composed-section .composed-section-inner.composed-layout-image_left::after,
  .homepage-composed-section .composed-section-inner.composed-layout-image_right::after {
    content: none;
    display: none;
  }

  .homepage-composed-section .composed-layout-image_left > .composed-primary-media,
  .homepage-composed-section .composed-layout-image_left > .composed-media-stack,
  .homepage-composed-section .composed-layout-image_right > .composed-primary-media,
  .homepage-composed-section .composed-layout-image_right > .composed-media-stack {
    float: none;
    width: auto;
    margin: 0;
  }

  .composed-section-inner.composed-layout-image_left > .composed-primary-media,
  .composed-section-inner.composed-layout-image_right > .composed-primary-media {
    align-self: stretch;
    height: 100%;
    min-height: clamp(300px, 30vw, 520px);
    aspect-ratio: auto !important;
  }

  .composed-section-inner.composed-layout-image_left > .composed-primary-media img,
  .composed-section-inner.composed-layout-image_right > .composed-primary-media img {
    width: 100%;
    height: 100%;
    min-height: 100%;
    object-fit: cover;
  }

  /* If the slideshow/gallery belongs under the main photo, the whole visual
     column stretches with the copy and the main photo absorbs spare height. */
  .composed-section-inner.composed-layout-image_left > .composed-media-stack,
  .composed-section-inner.composed-layout-image_right > .composed-media-stack {
    align-self: stretch;
    grid-template-rows: minmax(0, 1fr) auto;
  }
  .composed-section-inner.composed-layout-image_left > .composed-media-stack > .composed-primary-media,
  .composed-section-inner.composed-layout-image_right > .composed-media-stack > .composed-primary-media {
    align-self: stretch;
    height: 100%;
    min-height: 260px;
    aspect-ratio: auto !important;
  }
  .composed-section-inner.composed-layout-image_left > .composed-media-stack > .composed-primary-media img,
  .composed-section-inner.composed-layout-image_right > .composed-media-stack > .composed-primary-media img {
    height: 100%;
    min-height: 100%;
    object-fit: cover;
  }

  /* The size switch controls column emphasis, not an artificial crop height. */
  .homepage-composed-section .composed-section-inner.media-size-compact.composed-layout-image_left > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.media-size-balanced.composed-layout-image_left > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.media-size-large.composed-layout-image_left > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.media-size-compact.composed-layout-image_right > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.media-size-balanced.composed-layout-image_right > .composed-primary-media,
  .homepage-composed-section .composed-section-inner.media-size-large.composed-layout-image_right > .composed-primary-media {
    width: auto;
    aspect-ratio: auto !important;
  }
}

/* The slider scale no longer follows media-size-* (which belongs to the main
   image). This lets a large hero/side photo coexist with smaller thumbnails. */
.composed-section.gallery-size-compact .composed-gallery-slider .detail-gallery-track figure {
  flex-basis: calc((100% - 30px) / 4);
  aspect-ratio: 4 / 3;
}
.composed-section.gallery-size-balanced .composed-gallery-slider .detail-gallery-track figure {
  flex-basis: calc((100% - 20px) / 3);
  aspect-ratio: 4 / 3;
}
.composed-section.gallery-size-large .composed-gallery-slider .detail-gallery-track figure {
  flex-basis: 46%;
  aspect-ratio: 4 / 3;
}

/* When the slider sits below the main photo, its column is narrower, so use a
   slightly different scale while keeping the same "more / balanced / larger"
   meaning. */
.composed-section.gallery-size-compact .composed-media-stack .composed-gallery-slider .detail-gallery-track figure {
  flex-basis: 29%;
}
.composed-section.gallery-size-balanced .composed-media-stack .composed-gallery-slider .detail-gallery-track figure {
  flex-basis: 43%;
}
.composed-section.gallery-size-large .composed-media-stack .composed-gallery-slider .detail-gallery-track figure {
  flex-basis: 58%;
}

@media (max-width: 760px) {
  .composed-section.gallery-size-compact .composed-gallery-slider .detail-gallery-track figure,
  .composed-section.gallery-size-compact .composed-media-stack .composed-gallery-slider .detail-gallery-track figure {
    flex-basis: min(44%, 180px);
  }
  .composed-section.gallery-size-balanced .composed-gallery-slider .detail-gallery-track figure,
  .composed-section.gallery-size-balanced .composed-media-stack .composed-gallery-slider .detail-gallery-track figure {
    flex-basis: min(62%, 250px);
  }
  .composed-section.gallery-size-large .composed-gallery-slider .detail-gallery-track figure,
  .composed-section.gallery-size-large .composed-media-stack .composed-gallery-slider .detail-gallery-track figure {
    flex-basis: min(78%, 300px);
  }
}



/* v10.1: desktop side photos follow the real text height.
   The image itself is removed from normal flow so its intrinsic aspect ratio
   cannot make the grid row taller than the copy. The grid row is therefore
   sized by the text, and the photo simply fills that height with object-fit.
   Mobile keeps the existing predictable aspect-ratio crops. */
@media (min-width: 761px) {
  .composed-section-inner.composed-layout-image_left > .composed-primary-media,
  .composed-section-inner.composed-layout-image_right > .composed-primary-media {
    position: relative;
    align-self: stretch;
    height: auto;
    min-height: 0;
    aspect-ratio: auto !important;
  }

  .composed-section-inner.composed-layout-image_left > .composed-primary-media > img,
  .composed-section-inner.composed-layout-image_right > .composed-primary-media > img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: cover;
  }

  /* Same behaviour when the mini slideshow is attached below the main photo.
     The stack follows the copy height; the gallery keeps its own natural height
     and the primary photo uses only the remaining space. */
  .composed-section-inner.composed-layout-image_left > .composed-media-stack,
  .composed-section-inner.composed-layout-image_right > .composed-media-stack {
    min-height: 0;
    height: 100%;
    grid-template-rows: minmax(0, 1fr) auto;
  }

  .composed-section-inner.composed-layout-image_left > .composed-media-stack > .composed-primary-media,
  .composed-section-inner.composed-layout-image_right > .composed-media-stack > .composed-primary-media {
    position: relative;
    min-height: 0;
    height: auto;
    aspect-ratio: auto !important;
  }

  .composed-section-inner.composed-layout-image_left > .composed-media-stack > .composed-primary-media > img,
  .composed-section-inner.composed-layout-image_right > .composed-media-stack > .composed-primary-media > img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: cover;
  }
}

/* v10.3: mobilní kontakt, volitelná čitelnost hero textu a klikací nadpisy. */
.header-contact .header-email { display: none; }

.heading-link {
    color: inherit;
    text-decoration: none;
    text-decoration-thickness: .07em;
    text-underline-offset: .14em;
}
.heading-link:hover,
.heading-link:focus-visible {
    color: var(--wine);
    text-decoration: underline;
}

/* Výslovná volba „bez bubliny“ přebije vzhled šablony, ale zachová čitelnost. */
.hero.hero-panel-plain .hero-card,
.homepage-layout-editorial .hero.hero-panel-plain .hero-card,
.homepage-layout-family .hero.hero-panel-plain .hero-card,
.homepage-layout-nature .hero.hero-panel-plain .hero-card {
    width: min(100%, 760px);
    padding: 0;
    color: #fff;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}
.hero.hero-panel-plain .hero-shade {
    background: linear-gradient(90deg, rgba(6, 31, 29, .58) 0%, rgba(6, 31, 29, .25) 42%, rgba(6, 31, 29, 0) 76%);
}
.hero.hero-panel-plain .hero-card .kicker { color: #f2d3c7; }
.hero.hero-panel-plain .hero-card h1,
.hero.hero-panel-plain .hero-card .hero-lead,
.hero.hero-panel-plain .hero-card .text-link { color: #fff; }

/* Výslovná bublina je už ve většině šablon výchozí; rodinnou variantu umíme přepnout také. */
.homepage-layout-family .hero.hero-panel-bubble .hero-card {
    width: min(100%, 680px);
    padding: clamp(30px, 4vw, 46px);
    color: var(--text);
    background: rgba(255, 254, 250, var(--hero-panel-alpha));
    border: 1px solid rgba(255, 255, 255, .82);
    border-radius: var(--radius);
    box-shadow: 0 22px 60px rgba(13, 48, 45, .18);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
}
.homepage-layout-family .hero.hero-panel-bubble .hero-card .kicker { color: var(--wine); }
.homepage-layout-family .hero.hero-panel-bubble .hero-card h1,
.homepage-layout-family .hero.hero-panel-bubble .hero-card .hero-lead,
.homepage-layout-family .hero.hero-panel-bubble .hero-card .text-link { color: var(--ink-deep); }

/* Stín se používá jen tehdy, když je text přímo přes fotografii.
   V bublině/panelu je záměrně vypnutý, protože snižuje čitelnost textu na světlém podkladu. */
.hero.hero-shadow-none .hero-card .kicker,
.hero.hero-shadow-none .hero-card h1,
.hero.hero-shadow-none .hero-card .hero-lead,
.hero.hero-shadow-none .hero-card .text-link { text-shadow: none; }
.hero.hero-shadow-soft .hero-card .kicker,
.hero.hero-shadow-soft .hero-card h1,
.hero.hero-shadow-soft .hero-card .hero-lead,
.hero.hero-shadow-soft .hero-card .text-link {
    text-shadow: 0 1px 3px rgba(0, 0, 0, .48), 0 3px 12px rgba(0, 0, 0, .24);
}
.hero.hero-shadow-strong .hero-card .kicker,
.hero.hero-shadow-strong .hero-card h1,
.hero.hero-shadow-strong .hero-card .hero-lead,
.hero.hero-shadow-strong .hero-card .text-link {
    text-shadow:
        0 0 3px rgba(3, 24, 23, .98),
        0 0 10px rgba(3, 24, 23, .9),
        0 4px 24px rgba(0, 0, 0, .68),
        0 8px 38px rgba(0, 0, 0, .42);
}

/* Výslovná bublina nikdy nepoužívá stín. V režimu „Podle vzhledu“ mají
   Panorama, Magazín a Přírodní panel; Rodinný den má na desktopu text bez panelu. */
.hero.hero-panel-bubble .hero-card .kicker,
.hero.hero-panel-bubble .hero-card h1,
.hero.hero-panel-bubble .hero-card .hero-lead,
.hero.hero-panel-bubble .hero-card .text-link,
body:not(.homepage-layout-family) .hero.hero-panel-auto .hero-card .kicker,
body:not(.homepage-layout-family) .hero.hero-panel-auto .hero-card h1,
body:not(.homepage-layout-family) .hero.hero-panel-auto .hero-card .hero-lead,
body:not(.homepage-layout-family) .hero.hero-panel-auto .hero-card .text-link {
    text-shadow: none;
}

@media (max-width: 760px) {
    .header-contact { justify-content: space-between; gap: 12px; }
    .header-contact > span { display: none; }
    .header-contact .header-email { display: inline; }
    .header-contact .header-phone,
    .header-contact .header-email { white-space: nowrap; }

    /* Bez bubliny se na telefonu text přesune pod fotografii: čitelnější než dlouhý text přes obraz. */
    .hero.hero-panel-plain .hero-content,
    .homepage-layout-editorial .hero.hero-panel-plain .hero-content {
        padding-block: calc(var(--hero-mobile-media-height) + 28px) 72px;
    }
    .hero.hero-panel-plain .hero-card,
    .homepage-layout-editorial .hero.hero-panel-plain .hero-card,
    .homepage-layout-family .hero.hero-panel-plain .hero-card,
    .homepage-layout-nature .hero.hero-panel-plain .hero-card {
        width: 100%;
        padding: 0;
        color: var(--text);
    }
    .hero.hero-panel-plain .hero-card .kicker { color: var(--wine); }
    .hero.hero-panel-plain .hero-card h1,
    .hero.hero-panel-plain .hero-card .hero-lead,
    .hero.hero-panel-plain .hero-card .text-link { color: var(--ink-deep); text-shadow: none; }
    .hero.hero-panel-plain .hero-shade { background: transparent; }
}

@media (max-width: 470px) {
    .header-contact { justify-content: space-between; }
    .header-contact .header-phone,
    .header-contact .header-email { font-size: .875rem; }
}

@media (max-width: 360px) {
    .header-contact { justify-content: center; flex-wrap: wrap; column-gap: 16px; row-gap: 0; }
}


/* v10.4: nastavitelné krytí hero bubliny a střídání pozadí sekcí homepage bez dělicích čar. */
.hero-panel-opacity-100 { --hero-panel-alpha: 1; }
.hero-panel-opacity-95 { --hero-panel-alpha: .95; }
.hero-panel-opacity-90 { --hero-panel-alpha: .90; }
.hero-panel-opacity-85 { --hero-panel-alpha: .85; }
.hero-panel-opacity-80 { --hero-panel-alpha: .80; }

/* Každá viditelná sekce homepage dostane vlastní plnošířkový pás.
   Tónovaný pás používá barvu aktuálního období, takže střídání funguje i u sezónních palet. */
.homepage-section-band {
    background: var(--paper);
}
.homepage-section-band-alt {
    /* Výraznější střídání: tónovaná sekce používá téměř plnou sezónní barvu.
       Lehký diagonální závoj ji jen změkčí, aniž by se znovu slila s bílou. */
    background:
        linear-gradient(135deg, rgba(255, 254, 250, .14), rgba(255, 254, 250, 0) 62%),
        var(--water-light);
}
.homepage-section-band > .section {
    background: transparent;
    border-top: 0;
    border-bottom: 0;
    border-block: 0;
}
.homepage-section-band > .homepage-custom-section,
.homepage-section-band > .homepage-layout-section,
.homepage-section-band > .homepage-composed-section {
    background: transparent;
    border: 0;
}
.homepage-section-band > .feature,
.homepage-layout-nature .homepage-section-band > .feature,
.homepage-section-band > .visit-section {
    background: transparent;
}
.homepage-layout-editorial .homepage-section-band > .welcome,
.homepage-layout-nature .homepage-section-band > .visit-section {
    border-top: 0;
    border-bottom: 0;
}

/* v10.5: mobilní bublina má prioritu čitelnosti. Na malém displeji je panel
   o něco méně průhledný než na desktopu a uvnitř panelu se nikdy nepoužije
   stín písma – ani v režimu „Podle vzhledu“ u rodinné varianty. */
@media (max-width: 760px) {
    .hero.hero-panel-opacity-100 { --hero-panel-alpha: 1; }
    .hero.hero-panel-opacity-95 { --hero-panel-alpha: .98; }
    .hero.hero-panel-opacity-90 { --hero-panel-alpha: .96; }
    .hero.hero-panel-opacity-85 { --hero-panel-alpha: .94; }
    .hero.hero-panel-opacity-80 { --hero-panel-alpha: .92; }

    .hero:not(.hero-panel-plain) .hero-card {
        -webkit-backdrop-filter: blur(12px);
        backdrop-filter: blur(12px);
    }
    .hero:not(.hero-panel-plain) .hero-card .kicker,
    .hero:not(.hero-panel-plain) .hero-card h1,
    .hero:not(.hero-panel-plain) .hero-card .hero-lead,
    .hero:not(.hero-panel-plain) .hero-card .text-link {
        text-shadow: none;
    }
}


/* v10.7: detail stránky na mobilu — text je pod fotografií na světlém podkladu,
   takže používá tmavé barvy místo desktopového bílého textu přes obraz. */
@media (max-width: 760px) {
    .detail-hero {
        color: var(--text);
        background: var(--paper);
    }
    .detail-heading {
        padding-block: 30px 42px;
    }
    .detail-heading .kicker.light {
        color: var(--wine);
        text-shadow: none;
    }
    .detail-heading h1 {
        color: var(--ink-deep);
        font-size: clamp(2.45rem, 11vw, 3.45rem);
        line-height: 1.04;
        text-shadow: none;
    }
    .detail-heading > p:last-child {
        color: var(--text);
        font-size: clamp(1.05rem, 4.5vw, 1.24rem);
        line-height: 1.55;
        text-shadow: none;
    }
}


/* v10.8: výraznější kontrast střídajících se homepage sekcí; oddělení zůstává bez čar. */


/* v10.9: sekce homepage může zůstat na desktopu, ale být vypnutá na mobilu. */
@media (max-width: 760px) {
    .homepage-section-band.homepage-section-mobile-hidden { display: none !important; }
}

/* v11.1: volitelný kompaktní promo blok pro vlastní sekce homepage.
   Používá stejné obsahové pole jako běžná sekce, ale má menší výšku,
   zřetelnější CTA a stabilní poměr fotografie/textu. */
.homepage-section-band > .homepage-composed-section.homepage-promo-section {
    background:
        linear-gradient(135deg, rgba(255, 254, 250, .10), rgba(255, 254, 250, 0) 66%),
        var(--water-light);
}
.homepage-promo-section.section {
    padding-block: clamp(46px, 5vw, 68px);
}
.homepage-promo-section .composed-section-inner {
    width: min(1120px, 100%);
    align-items: center;
    gap: clamp(34px, 5vw, 68px);
}
.homepage-promo-section .composed-section-copy {
    align-self: center;
    padding-block: 0;
}
.homepage-promo-section .composed-section-copy .kicker {
    margin-bottom: 11px;
    color: var(--wine);
    font-size: .72rem;
    letter-spacing: .17em;
}
.homepage-promo-section .composed-section-copy h2 {
    max-width: 720px;
    margin-bottom: .42em;
    font-size: clamp(2.25rem, 4vw, 3.45rem);
    line-height: 1.02;
}
.homepage-promo-section .composed-section-copy .safe-html,
.homepage-promo-section .composed-section-copy > p:not(.kicker) {
    max-width: 680px;
    color: var(--text);
    font-size: clamp(1rem, .97rem + .12vw, 1.06rem);
    line-height: 1.66;
}
.homepage-promo-section .composed-section-copy .safe-html p:last-child {
    margin-bottom: 0;
}
.homepage-promo-section .composed-section-copy .button {
    min-height: 50px;
    margin-top: 20px;
    padding-inline: 25px;
    color: #fff;
    background: var(--wine);
    box-shadow: 0 10px 24px rgba(92, 43, 34, .18);
}
.homepage-promo-section .composed-section-copy .button:hover {
    background: var(--ink-deep);
}
.homepage-promo-section .composed-primary-media {
    align-self: center !important;
    height: clamp(250px, 27vw, 310px) !important;
    min-height: 0 !important;
    aspect-ratio: auto !important;
    border-radius: clamp(18px, 2vw, 26px);
    box-shadow: 0 18px 44px rgba(22, 61, 57, .13);
}
.homepage-promo-section .composed-primary-media > img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: cover;
}
@media (min-width: 761px) {
    .homepage-promo-section .composed-section-inner.composed-layout-image_left.media-size-compact {
        grid-template-columns: minmax(0, .36fr) minmax(0, .64fr);
    }
    .homepage-promo-section .composed-section-inner.composed-layout-image_left.media-size-balanced {
        grid-template-columns: minmax(0, .42fr) minmax(0, .58fr);
    }
    .homepage-promo-section .composed-section-inner.composed-layout-image_left.media-size-large {
        grid-template-columns: minmax(0, .50fr) minmax(0, .50fr);
    }
    .homepage-promo-section .composed-section-inner.composed-layout-image_right.media-size-compact {
        grid-template-columns: minmax(0, .64fr) minmax(0, .36fr);
    }
    .homepage-promo-section .composed-section-inner.composed-layout-image_right.media-size-balanced {
        grid-template-columns: minmax(0, .58fr) minmax(0, .42fr);
    }
    .homepage-promo-section .composed-section-inner.composed-layout-image_right.media-size-large {
        grid-template-columns: minmax(0, .50fr) minmax(0, .50fr);
    }
    .homepage-promo-section.media-size-compact .composed-primary-media { height: clamp(230px, 24vw, 280px) !important; }
    .homepage-promo-section.media-size-large .composed-primary-media { height: clamp(285px, 31vw, 350px) !important; }
}
@media (max-width: 760px) {
    .homepage-promo-section.section {
        padding-block: 38px 44px;
    }
    .homepage-promo-section .composed-section-inner {
        grid-template-columns: 1fr;
        gap: 25px;
    }
    .homepage-promo-section .composed-primary-media,
    .homepage-promo-section .composed-media-stack {
        grid-column: 1 !important;
        grid-row: auto !important;
        order: 1 !important;
        width: 100%;
        margin: 0;
    }
    .homepage-promo-section .composed-section-copy {
        grid-column: 1 !important;
        grid-row: auto !important;
        order: 2 !important;
    }
    .homepage-promo-section .composed-primary-media {
        height: clamp(210px, 64vw, 280px) !important;
        border-radius: 20px;
    }
    .homepage-promo-section .composed-section-copy h2 {
        font-size: clamp(2.15rem, 10vw, 2.8rem);
        line-height: 1.04;
    }
    .homepage-promo-section .composed-section-copy .safe-html,
    .homepage-promo-section .composed-section-copy > p:not(.kicker) {
        font-size: 1rem;
        line-height: 1.62;
    }
    .homepage-promo-section .composed-section-copy .button {
        width: 100%;
        margin-top: 16px;
    }
    .homepage-promo-section .composed-gallery-full {
        order: 3 !important;
    }
}

/* v11.2 — centrální otevírací doba na stránkách a v patičce */
.footer-main.has-hours { grid-template-columns: 1.25fr .62fr 1fr .92fr; gap: clamp(28px, 4.5vw, 64px); }
.footer-hours-notice { display: grid; gap: 3px; margin-top: 12px; margin-bottom: 8px; padding: 13px 14px; border: 1px solid rgba(255,255,255,.16); border-radius: 12px; background: rgba(255,255,255,.07); }
.footer-hours-notice > span { color: #b8c9c5; font-size: .8125rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.footer-hours-notice > strong { color: #fff; font-size: .96rem; line-height: 1.35; }
.footer-hours-notice > b { color: #fff; font-size: .93rem; }
.footer-hours-notice > small { margin-top: 2px; color: #d9e4e1; font-size: .875rem; line-height: 1.4; }
.footer-hours-notice.is-closed { border-color: rgba(255,255,255,.24); background: rgba(255,255,255,.11); }
.footer-hours-notice.is-closed > strong { font-size: 1rem; }
.footer-hours-list { display: grid; gap: 2px; margin-top: 10px; }
.site-footer .footer-hours-list > a { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: 12px; width: 100%; margin: 0; padding: 7px 0; border-bottom: 1px solid rgba(255,255,255,.11); color: #d9e4e1; text-decoration: none; }
.site-footer .footer-hours-list > a:hover span { color: #fff; }
.footer-hours-list span { min-width: 0; }
.footer-hours-list strong { color: #fff; font-size: .9rem; white-space: nowrap; }
.footer-hours-list strong.is-closed { color: #c4d0cd; font-weight: 650; }
.site-footer .footer-hours-all { margin-top: 12px !important; color: #fff !important; font-weight: 750; }
.site-footer .footer-map-link { margin-top: 13px !important; color: #fff !important; font-weight: 750; }
.footer-contact address { margin-bottom: 12px; }

.opening-hours-section { background: var(--water-light); }
.opening-hours-layout { display: grid; grid-template-columns: minmax(0, .82fr) minmax(420px, 1.18fr); align-items: start; gap: clamp(38px, 7vw, 90px); }
.opening-hours-intro h2, .opening-overview-head h2 { color: var(--ink-deep); }
.opening-hours-intro > .kicker, .opening-overview-head > .kicker { color: var(--wine); }
.opening-hours-today { display: grid; width: min(100%, 430px); margin-top: 26px; padding: 18px 20px; background: #fff; border: 1px solid rgba(36, 82, 77, .13); border-radius: calc(var(--radius) - 6px); box-shadow: 0 10px 28px rgba(22, 61, 57, .07); }
.opening-hours-today span { color: var(--muted); font-size: .84rem; font-weight: 750; text-transform: uppercase; letter-spacing: .055em; }
.opening-hours-today strong { margin-top: 3px; color: var(--ink-deep); font-family: Georgia, serif; font-size: clamp(1.35rem, 2.4vw, 1.75rem); }
.opening-hours-today small { margin-top: 5px; color: var(--wine); font-weight: 750; }
.opening-hours-today.is-closed strong { color: var(--muted); }
.opening-hours-note { max-width: 520px; margin: 20px 0 0; color: var(--muted); }
.opening-hours-card { overflow: hidden; background: #fff; border: 1px solid rgba(36, 82, 77, .13); border-radius: var(--radius); box-shadow: 0 14px 40px rgba(22, 61, 57, .08); }
.opening-hours-week { padding: 12px 22px; }
.opening-hours-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: 20px; padding: 12px 2px; border-bottom: 1px solid var(--line); }
.opening-hours-row:last-child { border-bottom: 0; }
.opening-hours-row span { color: var(--muted); }
.opening-hours-row strong { color: var(--ink-deep); white-space: nowrap; }
.opening-hours-row.is-today { margin-inline: -10px; padding-inline: 12px; background: color-mix(in srgb, var(--water-light) 78%, #fff); border-radius: 6px; border-bottom-color: transparent; }
.opening-hours-row.is-today span { color: var(--ink-deep); font-weight: 800; }
.opening-hours-row.is-closed strong { color: var(--muted); font-weight: 650; }
.opening-hours-custom { margin: 0; padding: 30px; color: var(--ink-deep); font-family: Georgia, serif; font-size: clamp(1.35rem, 2.4vw, 1.75rem); line-height: 1.35; }
.opening-hours-exceptions { padding: 18px 22px 20px; background: #faf7ef; border-top: 1px solid var(--line); }
.opening-hours-exceptions h3 { margin: 0 0 8px; color: var(--ink-deep); font-size: 1rem; }
.opening-hours-exceptions > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 18px; padding: 7px 0; color: var(--muted); font-size: .93rem; }
.opening-hours-exceptions strong { color: var(--ink-deep); white-space: nowrap; }
.opening-exception-week { margin-top: 12px; }
.opening-exception-week .opening-exception-period { margin: 0 0 8px; color: var(--ink-deep); font-size: .92rem; font-weight: 750; line-height: 1.4; }
.opening-exception-week-table { width: 100%; border-collapse: collapse; table-layout: fixed; text-align: left; font-size: .9rem; }
.opening-exception-week-table th, .opening-exception-week-table td { padding: 6px 8px; border-bottom: 1px solid var(--line); overflow-wrap: anywhere; line-height: 1.4; }
.opening-exception-week-table th:first-child { width: 42%; }
.opening-exception-week-table thead th { background: color-mix(in srgb, var(--water-light) 68%, #fff); color: var(--ink-deep); font-size: .76rem; }
.opening-exception-week-table thead th:last-child, .opening-exception-week-table td { text-align: right; }
.opening-exception-week-table .is-regular { color: var(--muted); }
.opening-exception-week-table .is-regular th { font-weight: 550; }
.opening-exception-week-table .is-special > * { background: color-mix(in srgb, var(--water-light) 85%, #fff); color: var(--ink-deep); font-weight: 800; }

.opening-overview-section { background: var(--water-light); }
.opening-overview-head { max-width: 760px; margin-bottom: 34px; }
.opening-overview-head > p:last-child { color: var(--muted); }
.opening-overview-notice { display: flex; align-items: center; margin: -10px 0 28px; padding: 18px 20px; background: color-mix(in srgb, var(--sand) 84%, #fff); border: 1px solid color-mix(in srgb, var(--wine) 24%, transparent); border-radius: calc(var(--radius) - 5px); box-shadow: 0 10px 28px rgba(22, 61, 57, .06); }
.opening-overview-notice > div { display: grid; gap: 3px; }
.opening-overview-notice span { color: var(--wine); font-size: .78rem; font-weight: 850; letter-spacing: .075em; text-transform: uppercase; }
.opening-overview-notice strong { color: var(--ink-deep); font-family: Georgia, serif; font-size: clamp(1.18rem, 2vw, 1.48rem); line-height: 1.28; }
.opening-overview-notice b { margin-top: 2px; color: var(--ink-deep); font-size: 1rem; }
.opening-overview-notice small { margin-top: 3px; color: var(--muted); font-size: .92rem; line-height: 1.45; }
.opening-overview-notice.is-closed { background: color-mix(in srgb, var(--wine) 9%, #fff); border-color: color-mix(in srgb, var(--wine) 30%, transparent); }
.opening-overview-notice.is-closed strong { color: var(--wine); }
.opening-overview-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.opening-overview-card { padding: 24px; background: #fff; border: 1px solid rgba(36, 82, 77, .13); border-radius: var(--radius); box-shadow: 0 10px 32px rgba(22,61,57,.07); }
.opening-overview-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding-bottom: 15px; border-bottom: 1px solid var(--line); }
.opening-overview-card-head h3 { margin: 0; color: var(--ink-deep); font-size: 1.42rem; }
.opening-overview-card-head span { display: block; margin-top: 4px; color: var(--muted); font-size: .78rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.opening-overview-card-head > strong { color: var(--ink-deep); white-space: nowrap; }
.opening-overview-card-head > strong.is-closed { color: var(--muted); }
.opening-overview-week { margin-top: 12px; }
.opening-overview-week > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 18px; padding: 6px 0; color: var(--muted); font-size: .94rem; }
.opening-overview-week b { color: var(--ink-deep); font-weight: 700; white-space: nowrap; }
.opening-overview-note { margin: 15px 0 0; color: var(--muted); font-size: .92rem; }
.opening-overview-card > a { display: inline-block; margin-top: 18px; color: var(--wine); font-weight: 800; text-underline-offset: 4px; }

@media (max-width: 980px) {
  .footer-main.has-hours { grid-template-columns: 1.2fr .8fr; }
  .opening-hours-layout { grid-template-columns: 1fr; gap: 28px; }
  .opening-hours-intro { display: grid; grid-template-columns: minmax(0, 1fr) minmax(250px, .7fr); column-gap: 30px; align-items: end; }
  .opening-hours-intro > .kicker, .opening-hours-intro > h2, .opening-hours-note { grid-column: 1; }
  .opening-hours-today { grid-column: 2; grid-row: 1 / span 3; margin-top: 0; }
}
@media (max-width: 760px) {
  .opening-hours-section, .opening-overview-section { padding-block: 52px; }
  .opening-hours-intro { display: block; }
  .opening-hours-today { width: 100%; margin-top: 20px; }
  .opening-hours-card { border-radius: calc(var(--radius) - 4px); }
  .opening-overview-notice { margin: -4px 0 22px; padding: 16px; }
  .opening-overview-notice strong { font-size: 1.16rem; }
  .opening-overview-grid { grid-template-columns: 1fr; }
  .opening-overview-card { padding: 20px; }
}
@media (max-width: 520px) {
  .footer-main.has-hours { grid-template-columns: 1fr; }
  .footer-hours-notice { padding: 14px; }
  .footer-hours-notice > strong { font-size: .98rem; }
  .footer-hours-list strong { font-size: .86rem; }
  .opening-hours-week { padding-inline: 16px; }
  .opening-hours-row { gap: 12px; padding-block: 11px; }
  .opening-hours-row.is-today { margin-inline: -6px; padding-inline: 8px; }
  .opening-hours-exceptions { padding-inline: 16px; }
  .opening-hours-exceptions > div { grid-template-columns: 1fr; gap: 2px; }
  .opening-overview-card-head { align-items: flex-start; flex-direction: column; gap: 8px; }
  .opening-overview-week > div { gap: 10px; }
}

/* v11.7 — doplňkové provozní časy + vzdušnější patička */
.site-footer .footer-hours-list > a { display: block; padding: 9px 0; }
.footer-hours-main { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; column-gap: clamp(20px, 3vw, 34px); width: 100%; }
.site-footer .footer-hours-list > a:hover .footer-hours-main > span { color: #fff; }
.footer-hours-extra { display: grid; gap: 3px; margin-top: 5px; padding-top: 5px; border-top: 1px solid rgba(255,255,255,.055); }
.footer-hours-extra > span { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; column-gap: clamp(20px, 3vw, 34px); color: #b8c9c5; font-size: .875rem; }
.footer-hours-extra em { font-style: normal; }
.footer-hours-extra b { color: #e8efed; font-weight: 700; white-space: nowrap; }

.opening-hours-today-extra { display: grid; gap: 5px; margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--line); }
.opening-hours-today-extra > span { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: 18px; color: var(--muted); font-size: .92rem; font-weight: 400; letter-spacing: 0; text-transform: none; }
.opening-hours-today-extra b { color: var(--ink-deep); font-weight: 750; }
.opening-hours-today-extra em { color: var(--ink-deep); font-style: normal; font-weight: 800; white-space: nowrap; }
.opening-hours-extra-groups { border-top: 1px solid var(--line); }
.opening-hours-extra-group { padding: 18px 22px 20px; }
.opening-hours-extra-group + .opening-hours-extra-group { border-top: 1px solid var(--line); }
.opening-hours-extra-group h3 { margin: 0 0 9px; color: var(--ink-deep); font-size: 1rem; }
.opening-hours-extra-week > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: 20px; padding: 7px 2px; color: var(--muted); font-size: .93rem; }
.opening-hours-extra-week strong { color: var(--ink-deep); white-space: nowrap; }
.opening-hours-extra-week .is-today { margin-inline: -8px; padding-inline: 10px; background: color-mix(in srgb, var(--water-light) 72%, #fff); border-radius: 6px; }
.opening-hours-extra-week .is-today span { color: var(--ink-deep); font-weight: 750; }

.opening-overview-extra-today { display: grid; gap: 4px; margin: 12px 0 2px; padding: 10px 12px; background: color-mix(in srgb, var(--water-light) 68%, #fff); border-radius: 7px; }
.opening-overview-extra-today > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: 18px; color: var(--muted); font-size: .9rem; }
.opening-overview-extra-today strong { color: var(--ink-deep); white-space: nowrap; }
.opening-overview-extra-groups { display: grid; gap: 7px; margin-top: 13px; padding-top: 12px; border-top: 1px solid var(--line); }
.opening-overview-extra-groups details { padding: 7px 0; }
.opening-overview-extra-groups summary { color: var(--ink-deep); font-weight: 800; cursor: pointer; }
.opening-overview-extra-week { margin-top: 7px; padding-left: 2px; }
.opening-overview-extra-week > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; padding: 4px 0; color: var(--muted); font-size: .88rem; }
.opening-overview-extra-week b { color: var(--ink-deep); white-space: nowrap; }

@media (max-width: 520px) {
  .footer-hours-main, .footer-hours-extra > span { column-gap: 22px; }
  .site-footer .footer-hours-list > a { padding-block: 10px; }
  .opening-hours-today-extra > span, .opening-hours-extra-week > div, .opening-overview-extra-today > div, .opening-overview-extra-week > div { gap: 12px; }
  .opening-hours-extra-group { padding-inline: 16px; }
}

/* v11.8 — otevírací doba v jedné přehledné tabulce */
.opening-hours-table-wrap,
.opening-overview-table-wrap {
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.opening-hours-table,
.opening-overview-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  color: var(--muted);
}
.opening-hours-table { min-width: 520px; }
.opening-hours-table th,
.opening-hours-table td {
  padding: 12px 14px;
  text-align: right;
  vertical-align: middle;
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
}
.opening-hours-table thead th {
  padding-top: 13px;
  padding-bottom: 11px;
  background: color-mix(in srgb, var(--sand) 62%, #fff);
  color: var(--muted);
  font-size: .75rem;
  font-weight: 850;
  letter-spacing: .055em;
  text-transform: uppercase;
}
.opening-hours-table thead th:first-child,
.opening-hours-table tbody th { text-align: left; }
.opening-hours-table tbody th {
  color: var(--muted);
  font-weight: 500;
}
.opening-hours-table tbody td { color: var(--ink-deep); font-weight: 720; }
.opening-hours-table tbody td strong { color: inherit; font-weight: 800; }
.opening-hours-table tbody tr:last-child > * { border-bottom: 0; }
.opening-hours-table tbody tr.is-today > * {
  background: color-mix(in srgb, var(--water-light) 78%, #fff);
  color: var(--ink-deep);
  font-weight: 800;
}
.opening-hours-table tbody tr.is-today > *:first-child { border-radius: 7px 0 0 7px; }
.opening-hours-table tbody tr.is-today > *:last-child { border-radius: 0 7px 7px 0; }
.opening-hours-table tbody tr.is-closed td { color: var(--muted); font-weight: 650; }
.opening-hours-legend,
.opening-overview-legend {
  margin: 0;
  color: var(--muted);
  font-size: .78rem;
  line-height: 1.5;
}
.opening-hours-legend {
  padding: 10px 22px 13px;
  border-top: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
  background: color-mix(in srgb, var(--water-light) 24%, #fff);
}
.opening-hours-legend strong,
.opening-overview-legend strong { color: var(--ink-deep); }

.opening-overview-table-wrap { margin-top: 12px; }
.opening-overview-table { min-width: 390px; font-size: .84rem; }
.opening-overview-table th,
.opening-overview-table td {
  padding: 6px 8px;
  border-bottom: 1px solid color-mix(in srgb, var(--line) 78%, transparent);
  text-align: right;
  white-space: nowrap;
}
.opening-overview-table thead th {
  color: var(--muted);
  font-size: .68rem;
  font-weight: 850;
  letter-spacing: .035em;
  text-transform: uppercase;
}
.opening-overview-table th:first-child { text-align: left; }
.opening-overview-table tbody th { color: var(--muted); font-weight: 500; }
.opening-overview-table tbody td { color: var(--ink-deep); font-weight: 700; }
.opening-overview-table tbody tr:last-child > * { border-bottom: 0; }
.opening-overview-legend { margin-top: 16px; }

@media (max-width: 520px) {
  .opening-hours-table { min-width: 455px; font-size: .88rem; }
  .opening-hours-table th,
  .opening-hours-table td { padding: 10px 9px; }
  .opening-hours-table thead th { font-size: .68rem; letter-spacing: .035em; }
  .opening-hours-legend { padding: 10px 16px 12px; font-size: .74rem; }
  .opening-overview-table { min-width: 380px; font-size: .8rem; }
  .opening-overview-table th,
  .opening-overview-table td { padding-inline: 6px; }
  .opening-overview-legend { font-size: .74rem; }
}


/* v11.9 — dnešní den je zvýrazněný i v přehledu všech provozů */
.opening-overview-table tbody tr.is-today > * {
  background: color-mix(in srgb, var(--water-light) 78%, #fff);
  color: var(--ink-deep);
  font-weight: 800;
}
.opening-overview-table tbody tr.is-today > *:first-child { border-radius: 7px 0 0 7px; }
.opening-overview-table tbody tr.is-today > *:last-child { border-radius: 0 7px 7px 0; }
.opening-overview-table tbody tr.is-closed td { color: var(--muted); font-weight: 650; }

/* v12.0 — sezónní otevírací doba */
.opening-hours-condition { display: block; margin-top: 7px !important; color: var(--wine) !important; font-weight: 800; line-height: 1.4; }
.opening-overview-condition { margin: 9px 0 0; color: var(--wine); font-size: .86rem; font-weight: 800; line-height: 1.4; }
.footer-hours-condition { display: block; margin-top: 4px; color: #b8c9c5; font-size: .8125rem; line-height: 1.4; }
.opening-hours-seasonal-table { min-width: 500px; }
.opening-overview-seasonal-table { min-width: 430px; }
.opening-hours-seasonal-table tbody th strong,
.opening-overview-seasonal-table tbody th strong { display: block; color: var(--ink-deep); font-weight: 800; }
.opening-hours-seasonal-table tbody th small,
.opening-overview-seasonal-table tbody th small { display: block; margin-top: 2px; color: var(--muted); font-size: .78em; font-weight: 500; }
.opening-hours-seasonal-table th:nth-child(2),
.opening-hours-seasonal-table td:nth-child(2),
.opening-overview-seasonal-table th:nth-child(2),
.opening-overview-seasonal-table td:nth-child(2) { text-align: left; }
.opening-hours-seasonal-table tbody tr.is-today > *,
.opening-overview-seasonal-table tbody tr.is-today > * { background: color-mix(in srgb, var(--water-light) 78%, #fff); color: var(--ink-deep); }
@media (max-width: 520px) {
  .opening-hours-seasonal-table { min-width: 455px; }
  .opening-overview-seasonal-table { min-width: 410px; }
  .footer-hours-condition { font-size: .875rem; }
}


/* v12.1 — klidnější hlavička otevírací doby bez legendy */
.opening-hours-table thead th {
  background: color-mix(in srgb, var(--ink) 90%, #fff);
  color: #fff;
  border-bottom-color: transparent;
}
.opening-hours-table thead th:first-child { border-radius: 10px 0 0 0; }
.opening-hours-table thead th:last-child { border-radius: 0 10px 0 0; }

/* v12.2 — obsahovou sekci běžné stránky lze v administraci skrýt jen na mobilu. */
@media (max-width: 760px) {
  .detail-section-mobile-hidden { display: none !important; }
}

/* v12.4: klidnější kompozice boční fotografie na vnitřních stránkách.
   Homepage zůstává beze změny. Na detailu je fotografie menší, drží přirozený
   výřez a už se nenatahuje na výšku dlouhého nadpisu nebo textu. */
@media (min-width: 761px) {
  .detail-section.composed-section.composed-layout-image_left.has-primary,
  .detail-section.composed-section.composed-layout-image_right.has-primary {
    padding: clamp(28px, 3.6vw, 42px);
    overflow: hidden;
  }

  .detail-section.composed-section.composed-layout-image_left.has-primary .composed-section-inner,
  .detail-section.composed-section.composed-layout-image_right.has-primary .composed-section-inner {
    align-items: start;
    gap: clamp(28px, 4vw, 48px);
  }

  .detail-section.composed-section .composed-section-inner.composed-layout-image_left.media-size-compact {
    grid-template-columns: minmax(0, 34%) minmax(0, 1fr);
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left.media-size-balanced {
    grid-template-columns: minmax(0, 40%) minmax(0, 1fr);
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left.media-size-large {
    grid-template-columns: minmax(0, 46%) minmax(0, 1fr);
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right.media-size-compact {
    grid-template-columns: minmax(0, 1fr) minmax(0, 34%);
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right.media-size-balanced {
    grid-template-columns: minmax(0, 1fr) minmax(0, 40%);
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right.media-size-large {
    grid-template-columns: minmax(0, 1fr) minmax(0, 46%);
  }

  .detail-section.composed-section.composed-layout-image_left.has-primary .composed-section-copy,
  .detail-section.composed-section.composed-layout-image_right.has-primary .composed-section-copy {
    align-self: start;
    margin: 0;
    padding: 4px 0 0;
  }

  .detail-section.composed-section.composed-layout-image_left.has-primary .composed-section-copy h2,
  .detail-section.composed-section.composed-layout-image_right.has-primary .composed-section-copy h2 {
    max-width: 19ch;
    font-size: clamp(2rem, 3.2vw, 3.15rem);
    line-height: 1.07;
  }

  /* Přímá hlavní fotografie: kompaktní výřez místo výšky odvozené od textu. */
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left > .composed-primary-media,
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right > .composed-primary-media {
    position: relative;
    align-self: start;
    width: 100%;
    height: auto;
    min-height: 0;
    overflow: hidden;
    border-radius: calc(var(--radius) - 2px);
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left.media-size-compact > .composed-primary-media,
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right.media-size-compact > .composed-primary-media {
    aspect-ratio: 16 / 10 !important;
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left.media-size-balanced > .composed-primary-media,
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right.media-size-balanced > .composed-primary-media {
    aspect-ratio: 4 / 3 !important;
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left.media-size-large > .composed-primary-media,
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right.media-size-large > .composed-primary-media {
    aspect-ratio: 5 / 4 !important;
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left > .composed-primary-media > img,
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right > .composed-primary-media > img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: cover;
  }

  /* Stejná logika, pokud je galerie nastavená přímo pod hlavní fotografii. */
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left > .composed-media-stack,
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right > .composed-media-stack {
    align-self: start;
    height: auto;
    min-height: 0;
    grid-template-rows: auto auto;
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left > .composed-media-stack > .composed-primary-media,
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right > .composed-media-stack > .composed-primary-media {
    position: relative;
    width: 100%;
    height: auto;
    min-height: 0;
    overflow: hidden;
    border-radius: calc(var(--radius) - 2px);
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left.media-size-compact > .composed-media-stack > .composed-primary-media,
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right.media-size-compact > .composed-media-stack > .composed-primary-media {
    aspect-ratio: 16 / 10 !important;
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left.media-size-balanced > .composed-media-stack > .composed-primary-media,
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right.media-size-balanced > .composed-media-stack > .composed-primary-media {
    aspect-ratio: 4 / 3 !important;
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left.media-size-large > .composed-media-stack > .composed-primary-media,
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right.media-size-large > .composed-media-stack > .composed-primary-media {
    aspect-ratio: 5 / 4 !important;
  }
  .detail-section.composed-section .composed-section-inner.composed-layout-image_left > .composed-media-stack > .composed-primary-media > img,
  .detail-section.composed-section .composed-section-inner.composed-layout-image_right > .composed-media-stack > .composed-primary-media > img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: cover;
  }

  /* Galerie zvolená „přes celou šířku dole“ je jasně oddělená od horní dvojice. */
  .detail-section.composed-section.composed-layout-image_left .composed-gallery-full,
  .detail-section.composed-section.composed-layout-image_right .composed-gallery-full {
    grid-column: 1 / -1;
    margin-top: 2px;
  }
}

@media (max-width: 760px) {
  /* Na telefonu zůstává přirozené pořadí fotografie → text → galerie a nadpis
     je výrazný, ale nepřebíjí zbytek obsahu. */
  .detail-section.composed-section.composed-layout-image_left.has-primary .composed-section-copy h2,
  .detail-section.composed-section.composed-layout-image_right.has-primary .composed-section-copy h2 {
    font-size: clamp(2rem, 10vw, 2.65rem);
  }
  .detail-section.composed-section.composed-layout-image_left .composed-gallery-full,
  .detail-section.composed-section.composed-layout-image_right .composed-gallery-full {
    padding: 0 20px 24px;
  }
}



/* v12.5: boční fotografie na vnitřních stránkách se na desktopu výškově
   přizpůsobí skutečné výšce textu. Pokud je slideshow/galerie přes celou
   šířku pod sekcí, zůstává mezi horní dvojicí a galerií klidná mezera. */
@media (min-width: 761px) {
  .detail-section.composed-section.composed-layout-image_left.has-primary .composed-section-inner.gallery-position-below_section,
  .detail-section.composed-section.composed-layout-image_right.has-primary .composed-section-inner.gallery-position-below_section {
    align-items: stretch;
    column-gap: clamp(28px, 4vw, 48px);
    row-gap: clamp(24px, 2.8vw, 34px);
  }

  /* U galerie přes celou šířku určuje výšku prvního řádku textový sloupec.
     Fotografie pouze vyplní stejnou výšku, takže pod ní nezůstává hluché místo. */
  .detail-section.composed-section .composed-section-inner.gallery-position-below_section.composed-layout-image_left > .composed-primary-media,
  .detail-section.composed-section .composed-section-inner.gallery-position-below_section.composed-layout-image_right > .composed-primary-media {
    align-self: stretch;
    width: 100%;
    height: 100%;
    min-height: clamp(270px, 23vw, 390px);
    aspect-ratio: auto !important;
  }

  .detail-section.composed-section .composed-section-inner.gallery-position-below_section.composed-layout-image_left > .composed-primary-media > img,
  .detail-section.composed-section .composed-section-inner.gallery-position-below_section.composed-layout-image_right > .composed-primary-media > img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: cover;
  }

  .detail-section.composed-section .composed-section-inner.gallery-position-below_section > .composed-gallery-full {
    margin-top: 0;
  }

  /* Bez galerie je stejné adaptivní chování přirozenější než pevný poměr stran. */
  .detail-section.composed-section .composed-section-inner.no-gallery.composed-layout-image_left > .composed-primary-media,
  .detail-section.composed-section .composed-section-inner.no-gallery.composed-layout-image_right > .composed-primary-media {
    align-self: stretch;
    width: 100%;
    height: 100%;
    min-height: clamp(270px, 23vw, 390px);
    aspect-ratio: auto !important;
  }

  /* Když slideshow patří přímo pod hlavní foto, celý vizuální sloupec sleduje
     výšku textu a fotka využije zbytek prostoru. Mezera mezi fotkou a sliderem
     zůstává zachovaná. */
  .detail-section.composed-section .composed-section-inner.gallery-position-under_primary.composed-layout-image_left > .composed-media-stack,
  .detail-section.composed-section .composed-section-inner.gallery-position-under_primary.composed-layout-image_right > .composed-media-stack {
    align-self: stretch;
    height: 100%;
    min-height: 0;
    grid-template-rows: minmax(220px, 1fr) auto;
    gap: clamp(14px, 1.7vw, 20px);
  }

  .detail-section.composed-section .composed-section-inner.gallery-position-under_primary.composed-layout-image_left > .composed-media-stack > .composed-primary-media,
  .detail-section.composed-section .composed-section-inner.gallery-position-under_primary.composed-layout-image_right > .composed-media-stack > .composed-primary-media {
    align-self: stretch;
    height: 100%;
    min-height: 220px;
    aspect-ratio: auto !important;
  }
}

/* v12.6: special content sections – embedded page/HTML and document/PDF. */
.composed-special-section .composed-special-inner { min-width: 0; }
.composed-special-heading { margin-bottom: clamp(18px, 2.5vw, 28px); }
.composed-special-heading > :first-child { margin-top: 0; }
.composed-special-heading > :last-child { margin-bottom: 0; }
.composed-special-heading h2 { max-width: 22ch; font-size: clamp(2rem, 4vw, 3.6rem); line-height: 1.08; }
.composed-special-heading .heading-link { color: inherit; text-decoration: none; }
.composed-special-heading .heading-link:hover { color: var(--wine); }
.pdf-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 22px; margin-bottom: 22px; }
.pdf-section-title { min-width: 0; }
.pdf-section-title > :first-child { margin-top: 0; }
.pdf-section-title > :last-child { margin-bottom: 0; }
.pdf-section-heading h2 { max-width: none; font-size: clamp(2rem, 3.6vw, 3.2rem); }
.composed-embed-frame,
.composed-document-frame { width: 100%; min-width: 0; overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: calc(var(--radius) - 4px); box-shadow: 0 10px 30px rgba(8, 37, 35, .08); }
.composed-embed-frame iframe { display: block; width: 100%; min-width: 0; border: 0; background: #fff; }
.pdf-document-frame { padding: 0; overflow: visible; background: transparent; border: 0; border-radius: 0; box-shadow: none; }
.pdf-page-controls { display: inline-flex; align-items: center; gap: 0; flex: 0 0 auto; margin: 0; padding: 3px; background: var(--water-light); border: 1px solid var(--line); border-radius: 999px; }
.pdf-page-controls[hidden] { display: none; }
.pdf-page-button { display: grid; place-items: center; width: 42px; height: 42px; flex: 0 0 42px; color: var(--ink-deep); font: inherit; font-size: 1.35rem; background: transparent; border: 0; border-radius: 50%; cursor: pointer; }
.pdf-page-button:hover:not(:disabled) { background: #fff; }
.pdf-page-button:focus-visible { outline: 3px solid var(--water); outline-offset: 2px; }
.pdf-page-button:disabled { opacity: .3; cursor: default; }
.pdf-page-counter { min-width: 110px; padding-inline: 8px; color: var(--ink-deep); font-size: .9rem; font-weight: 700; text-align: center; white-space: nowrap; }
.pdf-inline-status { position: absolute; z-index: 1; inset: 0; display: grid; place-items: center; margin: 0; padding: 28px 12px; color: var(--muted); background: rgba(255, 255, 255, .94); text-align: center; }
.pdf-inline-status[hidden] { display: none; }
.pdf-page-view { position: relative; width: 100%; min-width: 0; aspect-ratio: 210 / 297; min-height: 220px; margin: 0; overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: 8px; box-shadow: 0 3px 14px rgba(8, 37, 35, .07); }
.pdf-page-content { position: absolute; inset: 0; }
.pdf-page-content canvas { display: block; width: 100%; height: 100%; object-fit: contain; background: #fff; }
.composed-embed-html { min-width: 0; padding: clamp(18px, 3vw, 32px); overflow-x: auto; background: #fff; border: 1px solid var(--line); border-radius: calc(var(--radius) - 4px); }
.composed-embed-html > :first-child { margin-top: 0; }
.composed-embed-html > :last-child { margin-bottom: 0; }
.composed-embed-html iframe { display: block; width: 100%; min-height: 0; border: 0; }
.composed-embed-html a { color: var(--wine); font-weight: 750; text-underline-offset: 3px; }
.composed-document-actions { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 16px; padding: 14px 16px; background: var(--water-light); border: 1px solid var(--line); border-radius: 14px; }
.composed-document-actions span { min-width: 0; overflow-wrap: anywhere; color: var(--muted); font-weight: 700; }
.composed-document-actions .button { flex: 0 0 auto; margin-top: 0; }
.composed-document-actions.pdf-document-actions { justify-content: flex-end; gap: 12px; margin-top: 12px; padding: 0; background: transparent; border: 0; border-radius: 0; }
.pdf-document-actions span { margin-right: auto; font-size: .9rem; font-weight: 500; }
.pdf-open-link { color: var(--ink-deep); font-size: .92rem; font-weight: 700; text-decoration: underline; text-underline-offset: 4px; }
.pdf-open-link:hover { color: var(--wine); }
.pdf-open-link:focus-visible { outline: 3px solid var(--water); outline-offset: 3px; }

@media (max-width: 760px) {
  .composed-special-section { padding: 24px 18px; }
  .homepage-composed-section.composed-special-section .composed-special-inner { padding-inline: 0; }
  .composed-special-heading h2 { max-width: none; font-size: clamp(2rem, 10vw, 2.7rem); }
  .pdf-section-heading { align-items: flex-start; flex-direction: column; gap: 14px; margin-bottom: 16px; }
  .pdf-section-heading h2 { font-size: clamp(1.95rem, 8vw, 2.5rem); }
  .composed-embed-frame iframe { height: min(72vh, 720px); min-height: 460px; }
  .composed-embed-html { padding: 16px; }
  .composed-embed-html iframe { min-height: 460px; }
  .composed-document-actions { align-items: stretch; flex-direction: column; }
  .composed-document-actions .button { width: 100%; text-align: center; }
  .composed-document-actions.pdf-document-actions { align-items: flex-start; flex-direction: column; }
}


/* v12.7 — mobilní otevírací doba a patička jsou čitelnější a kompaktnější. */
@media (max-width: 560px) {
  .opening-hours-section { padding-block: 44px; }
  .opening-hours-layout { gap: 22px; }
  .opening-hours-intro > .kicker { margin-bottom: 8px; }
  .opening-hours-intro h2 { margin-bottom: 0; }
  .opening-hours-today {
    margin-top: 18px;
    padding: 18px 18px 20px;
    border-radius: 24px;
    box-shadow: 0 10px 26px rgba(22, 61, 57, .07);
  }
  .opening-hours-today strong { font-size: clamp(1.8rem, 8vw, 2.3rem); }
  .opening-hours-card {
    border-radius: 26px;
    box-shadow: 0 14px 34px rgba(22, 61, 57, .08);
  }
  .opening-hours-table-wrap {
    overflow: visible;
    padding: 12px 12px 14px;
  }
  .opening-hours-table,
  .opening-hours-table thead,
  .opening-hours-table tbody,
  .opening-hours-table tr,
  .opening-hours-table th,
  .opening-hours-table td {
    display: block;
    width: 100%;
    min-width: 0;
  }
  .opening-hours-table thead {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }
  .opening-hours-table tbody { display: grid; gap: 10px; }
  .opening-hours-table tbody tr {
    display: grid;
    gap: 8px;
    padding: 14px 14px 13px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 18px;
  }
  .opening-hours-table tbody tr.is-today {
    margin: 0;
    padding: 14px 14px 13px;
    background: color-mix(in srgb, var(--water-light) 85%, #fff);
    border-color: color-mix(in srgb, var(--ink) 14%, var(--line));
    box-shadow: inset 0 0 0 1px rgba(36, 82, 77, .03);
  }
  .opening-hours-table tbody tr.is-today > * {
    background: transparent;
    border-radius: 0;
  }
  .opening-hours-table tbody th {
    padding: 0 0 2px;
    border: 0;
    color: var(--ink-deep);
    font-size: 1.05rem;
    font-weight: 800;
    line-height: 1.25;
  }
  .opening-hours-seasonal-table tbody th small {
    margin-top: 3px;
    font-size: .78rem;
  }
  .opening-hours-table tbody td {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: baseline;
    gap: 14px;
    padding: 0;
    border: 0;
    text-align: right;
    white-space: normal;
    color: var(--ink-deep);
  }
  .opening-hours-table tbody td::before {
    content: attr(data-label);
    min-width: 0;
    color: var(--muted);
    font-size: .71rem;
    font-weight: 850;
    letter-spacing: .06em;
    text-transform: uppercase;
    text-align: left;
  }
  .opening-hours-table tbody td strong { white-space: nowrap; }
  .opening-hours-table tbody tr.is-closed td { color: var(--muted); }
  .opening-hours-legend {
    padding: 6px 18px 16px;
    border-top: 0;
    background: transparent;
    font-size: .73rem;
  }
  .opening-hours-exceptions {
    padding: 16px 18px 18px;
    background: color-mix(in srgb, var(--sand) 60%, #fff);
  }

  .site-footer {
    padding-top: 42px;
  }
  .footer-main,
  .footer-main.has-hours {
    display: grid;
    grid-template-columns: 1fr;
    gap: 18px;
    padding-bottom: 32px;
  }
  .footer-hours { order: 1; }
  .footer-contact { order: 2; }
  .footer-nav { order: 3; }
  .footer-about { order: 4; }
  .footer-hours,
  .footer-contact,
  .footer-nav,
  .footer-about {
    padding: 18px 18px 20px;
    background: rgba(255,255,255,.045);
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 22px;
  }
  .footer-about p { margin-top: 12px; font-size: .94rem; line-height: 1.6; }
  .site-footer h2 { margin-bottom: 12px; font-size: .875rem; letter-spacing: .1em; }
  .footer-hours-notice {
    margin-top: 0;
    margin-bottom: 12px;
    padding: 14px 14px 15px;
    border-radius: 16px;
  }
  .footer-hours-list {
    gap: 0;
    margin-top: 4px;
  }
  .site-footer .footer-hours-list > a {
    padding: 12px 0;
  }
  .footer-hours-main,
  .footer-hours-extra > span {
    column-gap: 14px;
  }
  .footer-hours-main > span,
  .footer-hours-extra em,
  .footer-contact address,
  .site-footer div > a:not(.brand) {
    font-size: 1rem;
  }
  .footer-hours-list strong,
  .footer-hours-extra b {
    font-size: .98rem;
  }
  .footer-hours-extra {
    margin-top: 7px;
    padding-top: 7px;
  }
  .footer-hours-condition { margin-top: 6px; font-size: .875rem; }
  .site-footer .footer-hours-all,
  .site-footer .footer-map-link {
    display: inline-flex;
    align-items: center;
    margin-top: 14px !important;
    padding: 10px 14px;
    border: 1px solid rgba(255,255,255,.14);
    border-radius: 999px;
    text-decoration: none;
  }
  .footer-contact address { margin-bottom: 14px; }
  .footer-contact a { margin-block: 9px; }
  .site-footer .footer-nav a,
  .footer-bottom a { text-underline-offset: 5px; }
  .footer-bottom {
    padding-top: 18px;
    padding-bottom: 26px;
    border-top-color: rgba(255,255,255,.1);
  }
}


/* v12.9 — otevírací doba vložená jako obsahová sekce drží stejnou šířku,
   rytmus a zaoblení jako ostatní sekce vnitřní stránky. */
.opening-hours-section-embedded,
.opening-overview-section-embedded {
  width: 100%;
  margin: 0;
  background: color-mix(in srgb, var(--water-light) 72%, #fff);
}
.opening-hours-section-embedded .opening-hours-layout {
  grid-template-columns: minmax(0, .82fr) minmax(430px, 1.18fr);
  gap: clamp(30px, 5vw, 56px);
}
.opening-overview-section-embedded .opening-overview-inner { min-width: 0; }
.opening-hours-section-embedded .opening-hours-intro h2,
.opening-overview-section-embedded .opening-overview-head h2 {
  font-size: clamp(2.25rem, 4.5vw, 3.55rem);
}
.opening-hours-section-embedded .opening-hours-today {
  width: 100%;
  max-width: 360px;
}
.opening-hours-section-embedded .opening-hours-card {
  box-shadow: 0 10px 28px rgba(22, 61, 57, .07);
}

@media (max-width: 980px) {
  .opening-hours-section-embedded .opening-hours-layout { grid-template-columns: 1fr; gap: 24px; }
  .opening-hours-section-embedded .opening-hours-intro {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(240px, .78fr);
    column-gap: 24px;
    align-items: end;
  }
  .opening-hours-section-embedded .opening-hours-intro > .kicker,
  .opening-hours-section-embedded .opening-hours-intro > h2,
  .opening-hours-section-embedded .opening-hours-note { grid-column: 1; }
  .opening-hours-section-embedded .opening-hours-today {
    grid-column: 2;
    grid-row: 1 / span 3;
    margin-top: 0;
    max-width: none;
  }
}

@media (max-width: 760px) {
  .opening-hours-section-embedded,
  .opening-overview-section-embedded {
    padding: 24px 18px;
    border-radius: var(--radius);
  }
  .opening-hours-section-embedded .opening-hours-intro { display: block; }
  .opening-hours-section-embedded .opening-hours-today { width: 100%; margin-top: 18px; }
  .opening-hours-section-embedded .opening-hours-intro h2,
  .opening-overview-section-embedded .opening-overview-head h2 {
    font-size: clamp(2rem, 10vw, 2.75rem);
  }
}

@media (max-width: 560px) {
  .opening-hours-section-embedded,
  .opening-overview-section-embedded {
    padding: 22px 14px 16px;
    border-radius: 22px;
  }
  .opening-hours-section-embedded .opening-hours-table-wrap { padding-inline: 0; }
  .opening-hours-section-embedded .opening-hours-card { background: transparent; border: 0; box-shadow: none; }
  .opening-hours-section-embedded .opening-hours-table tbody tr { box-shadow: 0 5px 16px rgba(22, 61, 57, .045); }
}


/* v12.11 — jednodušší vložená otevírací doba + volitelná poznámka pod tabulkou. */
.detail-table-note {
  margin-top: 20px;
  padding: 16px 18px;
  color: var(--muted);
  background: color-mix(in srgb, var(--sand) 28%, #fff);
  border-left: 3px solid var(--wine);
  border-radius: 10px;
}
.detail-table-note > :first-child { margin-top: 0; }
.detail-table-note > :last-child { margin-bottom: 0; }
.detail-table-note p { max-width: none !important; font-size: .98rem !important; line-height: 1.55; }

@media (min-width: 981px) {
  .opening-hours-section-embedded .opening-hours-intro h2 {
    font-size: clamp(2.25rem, 3.8vw, 3.05rem);
    line-height: 1.05;
  }
}
.opening-hours-section-embedded .opening-hours-card {
  border-radius: 16px;
  box-shadow: 0 7px 20px rgba(22, 61, 57, .055);
}
.opening-hours-section-embedded .opening-hours-table {
  margin-top: 0;
}
.opening-hours-section-embedded .opening-hours-table tbody th {
  background: #fff;
}
.opening-hours-section-embedded .opening-hours-table tbody tr.is-today > * {
  background: color-mix(in srgb, var(--water-light) 78%, #fff);
}
@media (max-width: 560px) {
  .detail-table-note { margin-top: 16px; padding: 14px 15px; }
}


/* v12.13 — iframe embed je tolerantnější a vložená otevírací doba bez zbytečného posuvníku. */
@media (min-width: 561px) {
  .opening-hours-section-embedded .opening-hours-table-wrap {
    overflow-x: visible;
  }
  .opening-hours-section-embedded .opening-hours-table {
    min-width: 0;
    width: 100%;
  }
}


/* v12.14 — stránka může používat karty, nebo volné rozložení bez vnějších panelů. */
.detail-page.detail-sections-plain .detail-content {
  gap: clamp(42px, 5.5vw, 70px);
}
.detail-page.detail-sections-plain .detail-content > .detail-section {
  padding: 0 !important;
  overflow: visible !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
.detail-page.detail-sections-plain .detail-content > .composed-special-section .composed-special-inner {
  padding: 0;
}
.detail-page.detail-sections-plain .detail-content > .composed-embed-section .composed-embed-frame {
  overflow: visible;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.detail-page.detail-sections-plain .detail-content > .opening-hours-section-embedded,
.detail-page.detail-sections-plain .detail-content > .opening-overview-section-embedded {
  padding: 0 !important;
  background: transparent !important;
}
.detail-page.detail-sections-plain .detail-content > .composed-section.content-kind-table .detail-table-scroll {
  margin-top: 14px;
}

@media (max-width: 760px) {
  .detail-page.detail-sections-plain .detail-content { gap: 38px; }
  .detail-page.detail-sections-plain .detail-content > .composed-special-section,
  .detail-page.detail-sections-plain .detail-content > .opening-hours-section-embedded,
  .detail-page.detail-sections-plain .detail-content > .opening-overview-section-embedded {
    padding-inline: 0 !important;
  }
}


/* v12.16 — vložené formuláře bez zbytečné vnější karty a automatická výška. */
.detail-page.detail-sections-plain .detail-content > .composed-embed-section .composed-embed-html {
  padding: 0;
  overflow: visible;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.composed-embed-auto iframe {
  display: block;
  width: 100%;
  max-width: 100%;
  border: 0;
}
.composed-embed-frame.composed-embed-auto > iframe[data-auto-embed-frame] {
  height: clamp(640px, 78vh, 900px);
  min-height: 560px;
}
/* U HTML embedu respektujeme výšku z oficiálního kódu poskytovatele.
   Externí loader (např. Previo) ji tak může za běhu měnit a naše CSS ji nepřepíše. */
.composed-embed-html.composed-embed-auto > iframe {
  min-height: 0;
}
@media (max-width: 760px) {
  .composed-embed-frame.composed-embed-auto > iframe[data-auto-embed-frame] {
    height: min(78vh, 760px);
    min-height: 520px;
  }
  .detail-page.detail-sections-plain .detail-content > .composed-embed-section .composed-embed-html {
    padding-inline: 0;
  }
}


/* v12.17 — embed má vždy jen jeden vizuální obal a URL iframe je spolehlivější na mobilu. */
/* V detailu je samotný iframe/HTML průhledný. Když stránka používá karty,
   jedinou kartou je vnější sekce; při volném rozložení není žádná. */
.detail-page .detail-content > .composed-embed-section .composed-embed-frame,
.detail-page .detail-content > .composed-embed-section .composed-embed-html {
  padding: 0;
  overflow: visible;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.detail-page .detail-content > .composed-embed-section .composed-special-inner {
  min-width: 0;
}
.detail-page .detail-content > .composed-embed-section iframe {
  display: block;
  width: 100%;
  max-width: 100%;
  border: 0;
}
/* URL iframe dostane bezpečný počáteční prostor; same-origin JS jej následně
   přepočítá na skutečnou výšku. */
.composed-embed-frame.composed-embed-auto > iframe[data-auto-embed-frame] {
  height: clamp(720px, 82vh, 1100px);
  min-height: 640px;
}
@media (max-width: 760px) {
  .detail-page .detail-content > .composed-embed-section {
    min-width: 0;
  }
  .detail-page .detail-content > .composed-embed-section .composed-special-inner,
  .detail-page .detail-content > .composed-embed-section .composed-embed-frame,
  .detail-page .detail-content > .composed-embed-section .composed-embed-html {
    width: 100%;
    min-width: 0;
  }
  .composed-embed-frame.composed-embed-auto > iframe[data-auto-embed-frame] {
    height: 760px;
    min-height: 640px;
  }
}


/* v12.18 — vložené stránky nepřidávají druhou kartu a interní iframe zůstává na stejném originu. */
/* Embed si často nese vlastní panel/kartu (rezervace, Previo apod.). I při zapnutém
   vzhledu „Karty s ohraničením“ proto nepřidáváme ještě jednu vnější kartu.
   Ostatní běžné obsahové sekce se nastavením stránky řídí dál. */
.detail-page.detail-sections-cards .detail-content > .composed-embed-section {
  padding: 0 !important;
  overflow: visible !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
.detail-page.detail-sections-cards .detail-content > .composed-embed-section .composed-special-inner {
  padding: 0;
}

@media (max-width: 760px) {
  .detail-page .detail-content > .composed-embed-section {
    width: 100%;
    max-width: 100%;
  }
  .detail-page .detail-content > .composed-embed-section iframe {
    width: 100% !important;
    max-width: 100% !important;
  }
}


/* v12.19 — běžné obsahové tabulky se na telefonu skládají do čitelných karet.
   Na desktopu zůstává klasická tabulka beze změny. */
@media (max-width: 640px) {
  .composed-section.content-kind-table .detail-table-scroll {
    overflow: visible;
    border: 0;
    border-radius: 0;
    background: transparent;
  }
  .composed-section.content-kind-table table,
  .composed-section.content-kind-table thead,
  .composed-section.content-kind-table tbody,
  .composed-section.content-kind-table tr,
  .composed-section.content-kind-table th,
  .composed-section.content-kind-table td {
    display: block;
    width: 100%;
    min-width: 0;
  }
  .composed-section.content-kind-table table {
    margin-top: 14px;
    font-size: 1rem;
  }
  .composed-section.content-kind-table thead {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }
  .composed-section.content-kind-table tbody {
    display: grid;
    gap: 10px;
  }
  .composed-section.content-kind-table tbody tr {
    padding: 14px 16px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 16px;
  }
  .composed-section.content-kind-table tbody tr:nth-child(even) td {
    background: transparent;
  }
  .composed-section.content-kind-table tbody td {
    padding: 0;
    border: 0;
    background: transparent;
    overflow-wrap: anywhere;
  }
  .composed-section.content-kind-table tbody td:first-child {
    color: var(--ink-deep);
    font-weight: 760;
    line-height: 1.38;
  }
  .composed-section.content-kind-table tbody td:first-child::before {
    display: none;
  }
  .composed-section.content-kind-table tbody td + td {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: baseline;
    gap: 16px;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid color-mix(in srgb, var(--line) 82%, transparent);
    color: var(--ink-deep);
    font-weight: 700;
    text-align: right;
  }
  .composed-section.content-kind-table tbody td + td::before {
    content: attr(data-label);
    color: var(--muted);
    font-size: .74rem;
    font-weight: 850;
    letter-spacing: .045em;
    text-transform: uppercase;
    text-align: left;
  }
  .composed-section.content-kind-table .detail-table-note {
    margin-top: 14px;
  }
}


/* v12.21 — oprava centrování širokých sekcí.
   V12.20 se široký blok zvětšoval uvnitř původního 1040px gridu, což mohlo
   na velkých monitorech posunout sekci doprava. Nyní je detail-content pouze
   celostránkový nosič a skutečnou šířku/centrování řídí každá sekce sama. */
@media (min-width: 821px) {
  .detail-page .detail-content {
    width: 100%;
    max-width: none;
    margin-inline: 0;
    padding-inline: 0;
  }

  /* V143: automatická šířka 1080 px; širší 1280 px je samostatná volba. */
  .detail-page .detail-content > .detail-section {
    width: min(1080px, calc(100% - 56px));
    max-width: 1080px;
    justify-self: center;
  }

  /* Šířku 1280 px lze vědomě vybrat u konkrétní sekce. */
  .detail-page .detail-content > .section-width-wide {
    width: min(1280px, calc(100% - 56px));
    max-width: 1280px;
    justify-self: center;
  }

  /* Explicitní full-width režim. Protože rodič je už 100% široký, není potřeba
     používat 100vw a nehrozí posun kvůli scrollbaru nebo úzkému gridu. */
  .detail-page .detail-content > .section-width-full {
    width: 100%;
    max-width: none;
    justify-self: stretch;
    border-left: 0 !important;
    border-right: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
  }

  .detail-page .detail-content > .section-width-full > .composed-section-inner,
  .detail-page .detail-content > .section-width-full > .composed-special-inner,
  .detail-page .detail-content > .section-width-full > .opening-hours-layout,
  .detail-page .detail-content > .section-width-full > .opening-overview-inner {
    width: min(1360px, calc(100% - 56px));
    max-width: 1360px;
    margin-inline: auto;
  }

  .detail-page .detail-content > .section-width-full.composed-layout-text .composed-section-copy {
    max-width: 980px;
    margin-inline: auto;
  }

  .detail-page .detail-content > .section-width-full.composed-layout-image_left .composed-section-copy,
  .detail-page .detail-content > .section-width-full.composed-layout-image_right .composed-section-copy,
  .detail-page .detail-content > .section-width-full.composed-layout-image_top .composed-section-copy {
    max-width: 760px;
  }

  .detail-page .detail-content > .section-width-standard {
    width: min(1080px, calc(100% - 56px));
    max-width: 1080px;
    justify-self: center;
  }

}

@media (max-width: 820px) {
  .detail-page .detail-content > .section-width-wide,
  .detail-page .detail-content > .section-width-full,
  .detail-page .detail-content > .section-width-auto {
    width: 100%;
    max-width: 100%;
    justify-self: stretch;
  }
}


/* v12.22 — vyváženější mobilní patička a kompaktnější běžné tabulky. */
/* Běžné obsahové tabulky nepotřebují na desktopu zabírat celou šířku sekce.
   Maximální šířka drží řádky čitelnější, ale na menších displejích zůstává 100 %. */
@media (min-width: 641px) {
  .composed-section.content-kind-table .detail-table-scroll {
    width: min(100%, 900px);
    margin-left: auto;
    margin-right: auto;
  }
  .composed-section.content-kind-table .detail-table-note {
    width: min(100%, 900px);
    margin-left: auto;
    margin-right: auto;
  }
}

@media (max-width: 560px) {
  /* Na telefonu je patička vizuálně klidnější: nadpisy, kontakty, navigace
     i značka jsou vystředěné. U provozních časů zůstává dvojice název/čas
     čitelná, ale celý seznam je vycentrovaný a nepůsobí nalepeně vlevo. */
  .site-footer .footer-hours,
  .site-footer .footer-contact,
  .site-footer .footer-nav,
  .site-footer .footer-about {
    text-align: center;
  }

  .site-footer h2 {
    text-align: center;
  }

  .site-footer .footer-brand {
    width: fit-content;
    margin-inline: auto;
    justify-content: center;
    text-align: left;
  }

  .site-footer .footer-about p {
    max-width: 330px;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
  }

  .site-footer .footer-contact address {
    text-align: center;
  }

  .site-footer .footer-contact > a,
  .site-footer .footer-nav > a,
  .site-footer .footer-hours-all,
  .site-footer .footer-map-link {
    margin-left: auto !important;
    margin-right: auto !important;
  }

  .site-footer .footer-hours-list {
    width: min(100%, 320px);
    margin-left: auto;
    margin-right: auto;
    gap: 8px;
    text-align: left;
  }

  .site-footer .footer-hours-main {
    grid-template-columns: minmax(0, 1fr) auto 12px;
    column-gap: 10px;
    align-items: baseline;
    text-align: left;
  }

  .site-footer .footer-hours-main::after {
    content: '›';
    color: #bfe6d9;
    font-size: 1.4rem;
    font-weight: 700;
    line-height: .75;
  }

  .site-footer .footer-hours-extra > span {
    grid-template-columns: minmax(0, 1fr) auto;
    column-gap: 10px;
    padding-right: 22px;
    align-items: baseline;
    text-align: left;
  }

  /* Silnější selektor přebije starší obecné pravidlo
   .site-footer .footer-hours > a { width: fit-content; } */
  .site-footer .footer-hours-list > a:not(.brand) {
    width: 100%;
    justify-self: stretch;
    margin: 0;
    padding: 12px;
    border: 1px solid rgba(255,255,255,.18);
    border-radius: 13px;
    background: rgba(255,255,255,.055);
    text-align: left;
    text-decoration: none;
    transition: background-color .16s ease, border-color .16s ease;
  }

  .site-footer .footer-hours-list > a:hover,
  .site-footer .footer-hours-list > a:active,
  .site-footer .footer-hours-list > a:focus-visible {
    border-color: rgba(191,230,217,.58);
    background: rgba(255,255,255,.115);
  }

  .site-footer .footer-hours-list > a:focus-visible {
    outline: 2px solid #bfe6d9;
    outline-offset: 3px;
  }

  .site-footer .footer-hours-list strong,
  .site-footer .footer-hours-extra b {
    text-align: right;
    white-space: nowrap;
  }

  .site-footer .footer-hours-extra {
    margin-top: 5px;
    padding-top: 5px;
  }

  .site-footer .footer-hours-notice,
  .site-footer .footer-hours-condition {
    text-align: center;
  }

  .site-footer .footer-hours-all,
  .site-footer .footer-map-link {
    justify-content: center;
  }

  .site-footer .footer-bottom {
    align-items: center;
    text-align: center;
  }

  .site-footer .footer-bottom > * {
    margin-left: auto;
    margin-right: auto;
  }
}


/* v12.23 — nadpis tabulkové sekce je vystředěný a sekce umí dvě adaptivní tabulky. */
.composed-section.content-kind-table .composed-section-copy > .kicker,
.composed-section.content-kind-table .composed-section-copy > h2 {
  width: min(100%, 900px);
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}
.composed-section.content-kind-table .detail-table-group {
  width: min(100%, 900px);
  margin: 18px auto 0;
}
.composed-section.content-kind-table .detail-table-group > .detail-table-scroll {
  width: 100%;
  max-width: none;
  margin: 0;
}
.composed-section.content-kind-table .detail-table-group.has-secondary-table {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(18px, 2.4vw, 30px);
  align-items: start;
}
.composed-section.content-kind-table .detail-table-group.has-tertiary-table {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(14px, 1.8vw, 26px);
}
.composed-section.content-kind-table .detail-table-block {
  min-width: 0;
}
.composed-section.content-kind-table .detail-table-block > .detail-table-scroll {
  width: 100%;
  max-width: none;
  margin: 0;
}
.composed-section.content-kind-table .detail-table-title {
  margin: 0 0 17px;
  color: var(--ink-deep);
  font-size: clamp(1.35rem, 2.2vw, 1.8rem);
  line-height: 1.2;
  text-align: center;
  text-wrap: balance;
}
.composed-section.content-kind-table .detail-table-empty {
  margin: 0;
  padding: 18px 19px;
  border: 1px solid var(--line);
  border-radius: 14px;
  color: var(--muted);
  background: #f7f9f7;
  line-height: 1.55;
}
.composed-section.content-kind-table .detail-table-group tr.is-unavailable td {
  color: var(--muted);
}
.composed-section.content-kind-table .detail-table-group tr.is-unavailable td:last-child {
  font-style: italic;
}
.composed-section.content-kind-table .detail-table-group.has-secondary-table + .detail-table-note,
.composed-section.content-kind-table .detail-table-note.is-wide-table-note {
  width: min(100%, 1120px);
}
.composed-section.content-kind-table .detail-table-group.has-secondary-table ~ .button {
  margin-left: auto;
  margin-right: auto;
}
@media (max-width: 960px) {
  .composed-section.content-kind-table .detail-table-group.has-secondary-table {
    width: 100%;
    grid-template-columns: 1fr;
    gap: 20px;
  }
  .composed-section.content-kind-table .detail-table-group.has-secondary-table + .detail-table-note,
  .composed-section.content-kind-table .detail-table-note.is-wide-table-note {
    width: min(100%, 900px);
  }
}
@media (max-width: 1120px) {
  .composed-section.content-kind-table .detail-table-group.has-tertiary-table {
    grid-template-columns: 1fr;
    gap: 20px;
  }
}
@media (max-width: 640px) {
  .composed-section.content-kind-table .composed-section-copy > .kicker,
  .composed-section.content-kind-table .composed-section-copy > h2 {
    width: 100%;
    text-align: left;
  }
  .composed-section.content-kind-table .detail-table-group,
  .composed-section.content-kind-table .detail-table-group.has-secondary-table {
    width: 100%;
    margin-top: 14px;
    gap: 16px;
  }
}
@media (max-width: 640px) {
  .composed-section.content-kind-table .detail-table-group table { margin-top: 0; }
  .composed-section.content-kind-table .detail-table-title { text-align: left; margin-bottom: 13px; }
}


/* v12.24 — nekonečné mini slideshow + plovoucí návrat nahoru. */
.back-to-top {
  position: fixed;
  right: max(18px, env(safe-area-inset-right));
  bottom: calc(max(18px, env(safe-area-inset-bottom)) + var(--back-to-top-vv-bottom, 0px));
  z-index: 80;
  display: grid;
  place-items: center;
  width: 50px;
  height: 50px;
  padding: 0;
  color: #fff;
  background: color-mix(in srgb, var(--ink-deep) 94%, transparent);
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 50%;
  box-shadow: 0 10px 28px rgba(8, 37, 35, .24);
  font: inherit;
  font-size: 1.45rem;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transition: opacity .18s ease, visibility .18s;
}
.back-to-top:hover { background: var(--wine); }
.back-to-top:focus-visible { outline: 3px solid color-mix(in srgb, var(--wine) 55%, #fff); outline-offset: 3px; }
.back-to-top.is-visible { opacity: 1; visibility: visible; }
.back-to-top span { transform: translateY(-1px); }

@media (max-width: 760px) {
  .back-to-top {
    right: max(14px, env(safe-area-inset-right));
    bottom: calc(max(16px, env(safe-area-inset-bottom)) + var(--back-to-top-vv-bottom, 0px));
    width: 46px;
    height: 46px;
    font-size: 1.3rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .back-to-top { transition: none; }
}


/* v12.25 — vložený obsah na konci stránky bez zbytečně velké spodní mezery.
   Detail-content používá obecnou třídu .section, která jinak přidává až 96 px
   spodního paddingu. U posledního vloženého obsahu nebo PDF stačí menší přechod k CTA/patičce. */
.detail-page .detail-content:has(> .composed-embed-section:last-child),
.detail-page .detail-content:has(> .composed-document-section:last-child) {
  padding-bottom: clamp(18px, 2.2vw, 32px);
}
.detail-page .detail-content > .composed-embed-section:last-child,
.detail-page .detail-content > .composed-document-section:last-child {
  margin-bottom: 0;
}
.detail-page .detail-content > .composed-embed-section:last-child .composed-special-inner,
.detail-page .detail-content > .composed-embed-section:last-child .composed-embed-frame,
.detail-page .detail-content > .composed-embed-section:last-child .composed-embed-html,
.detail-page .detail-content > .composed-document-section:last-child .composed-special-inner {
  margin-bottom: 0;
}
.detail-page .detail-content > .composed-embed-section:last-child iframe {
  margin-bottom: 0;
}
@media (max-width: 760px) {
  .detail-page .detail-content:has(> .composed-embed-section:last-child),
  .detail-page .detail-content:has(> .composed-document-section:last-child) {
    padding-bottom: 14px;
  }
}


/* v12.26 — Previo výšku řídí jeho oficiální loader; CSP jej nyní může spustit. */


/* v12.28 — stabilní poloha tlačítka návratu nahoru na mobilu.
   Bez vertikální animace; JS doplňuje korekci podle Visual Viewport při
   schovávání/zobrazování adresního a spodního panelu mobilního prohlížeče. */
.back-to-top {
  transform: none !important;
  will-change: opacity;
}


/* v12.29 — Obří akvária: propojené bloky otevírací doby a Suvenýrů.
   Úprava je omezená na tuto stránku s volným rozložením sekcí. */
.detail-page-aquaria.detail-sections-plain .opening-hours-section-embedded .opening-hours-layout {
  align-items: center;
  gap: clamp(26px, 4vw, 52px);
  padding: clamp(26px, 3.8vw, 46px);
  background: linear-gradient(135deg, #edf5f0 0%, #f8faf6 100%);
  border: 1px solid #dde9e0;
  border-radius: 28px;
  box-shadow: 0 14px 35px rgba(22, 61, 57, .055);
}

.detail-page-aquaria .opening-hours-section-embedded .opening-hours-intro h2 {
  max-width: 12ch;
  line-height: 1.08;
}

.detail-page-aquaria .opening-hours-section-embedded .opening-hours-today {
  max-width: 330px;
  margin-top: 22px;
  border-color: rgba(22, 61, 57, .12);
  box-shadow: 0 9px 24px rgba(22, 61, 57, .08);
}

.detail-page-aquaria .opening-hours-section-embedded .opening-hours-card {
  min-width: 0;
  background: #fff;
  border: 1px solid rgba(22, 61, 57, .1);
  border-radius: 18px;
  box-shadow: 0 10px 26px rgba(22, 61, 57, .065);
}

.detail-page-aquaria.detail-sections-plain .detail-content > .composed-section.composed-layout-image_right.has-primary.no-gallery > .composed-section-inner {
  align-items: center;
  gap: clamp(24px, 4vw, 54px);
  padding: clamp(26px, 3.8vw, 46px);
  background: linear-gradient(135deg, #f8f4ec 0%, #fbfaf6 100%);
  border: 1px solid #ebe4d8;
  border-radius: 28px;
  box-shadow: 0 14px 35px rgba(69, 49, 27, .05);
}

.detail-page-aquaria.detail-sections-plain .detail-content > .composed-section.composed-layout-image_right.has-primary.no-gallery .composed-section-copy {
  align-self: center;
  margin: 0;
  padding: 0;
}

.detail-page-aquaria.detail-sections-plain .detail-content > .composed-section.composed-layout-image_right.has-primary.no-gallery .composed-section-copy h2 {
  margin-bottom: 0;
}

.detail-page-aquaria.detail-sections-plain .detail-content > .composed-section.composed-layout-image_right.has-primary.no-gallery .composed-section-copy h2::after {
  content: '';
  display: block;
  width: 54px;
  height: 3px;
  margin: 18px 0 22px;
  border-radius: 99px;
  background: #b87952;
}

.detail-page-aquaria.detail-sections-plain .detail-content > .composed-section.composed-layout-image_right.has-primary.no-gallery .composed-section-copy > p:not(.kicker) {
  max-width: 48ch;
  line-height: 1.72;
}

.detail-page-aquaria.detail-sections-plain .detail-content > .composed-section.composed-layout-image_right.has-primary.no-gallery .composed-primary-media {
  border-radius: 20px;
  box-shadow: 0 12px 30px rgba(69, 49, 27, .13);
}

@media (min-width: 981px) {
  .detail-page-aquaria.detail-sections-plain .opening-hours-section-embedded .opening-hours-layout {
    grid-template-columns: minmax(0, .72fr) minmax(0, 1.28fr);
  }
}

@media (max-width: 760px) {
  .detail-page-aquaria.detail-sections-plain .opening-hours-section-embedded .opening-hours-layout,
  .detail-page-aquaria.detail-sections-plain .detail-content > .composed-section.composed-layout-image_right.has-primary.no-gallery > .composed-section-inner {
    padding: 22px 18px;
    border-radius: 22px;
    gap: 22px;
  }

  .detail-page-aquaria .opening-hours-section-embedded .opening-hours-today {
    max-width: none;
  }

  .detail-page-aquaria.detail-sections-plain .detail-content > .composed-section.composed-layout-image_right.has-primary.no-gallery .composed-primary-media {
    max-height: 360px;
    border-radius: 16px;
  }
}

@media (max-width: 560px) {
  .detail-page-aquaria .opening-hours-section-embedded .opening-hours-card {
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
  }
}


/* v12.30 — společné vizuální zpracování tabulkových sekcí na detailových
   stránkách s volným rozložením. Obsah/ceny se dál upravují v administraci. */
.detail-page.detail-sections-plain .detail-content > .composed-section.content-kind-table > .composed-section-inner {
  padding: clamp(26px, 3.8vw, 46px);
  background: linear-gradient(135deg, #f5f8f6 0%, #fbfaf6 100%);
  border: 1px solid #e1eae4;
  border-radius: 28px;
  box-shadow: 0 14px 35px rgba(22, 61, 57, .05);
}

.detail-page.detail-sections-plain .detail-content > .composed-section.content-kind-table .composed-section-copy {
  min-width: 0;
}

.detail-page.detail-sections-plain .detail-content > .composed-section.content-kind-table .composed-section-copy > h2 {
  margin-bottom: 0;
}

.detail-page.detail-sections-plain .detail-content > .composed-section.content-kind-table .composed-section-copy > h2::after {
  content: '';
  display: block;
  width: 56px;
  height: 3px;
  margin: 17px auto 24px;
  border-radius: 99px;
  background: #91ac9c;
}

.detail-page .composed-section.content-kind-table .detail-table-group > .detail-table-scroll,
.detail-page .composed-section.content-kind-table .detail-table-block > .detail-table-scroll {
  overflow-x: auto;
  overflow-y: hidden;
  border-color: #dce8e0;
  border-radius: 17px;
  box-shadow: 0 9px 24px rgba(22, 61, 57, .055);
}

.detail-page .composed-section.content-kind-table .detail-table-group th {
  background: #e4eee8;
}

.detail-page .composed-section.content-kind-table .detail-table-group td {
  background: #fff;
}

.detail-page .composed-section.content-kind-table .detail-table-group tbody tr:nth-child(even) td {
  background: #f7f9f7;
}

@media (max-width: 760px) {
  .detail-page.detail-sections-plain .detail-content > .composed-section.content-kind-table > .composed-section-inner {
    padding: 22px 18px;
    border-radius: 22px;
  }
}

@media (max-width: 640px) {
  .detail-page .composed-section.content-kind-table .detail-table-group > .detail-table-scroll,
  .detail-page .composed-section.content-kind-table .detail-table-block > .detail-table-scroll {
    overflow: visible;
    border: 0;
    border-radius: 0;
    box-shadow: none;
  }

  .detail-page .composed-section.content-kind-table .detail-table-group tbody tr {
    border-color: #dce8e0;
    box-shadow: 0 4px 14px rgba(22, 61, 57, .045);
  }

  .detail-page .composed-section.content-kind-table .detail-table-group tbody tr:nth-child(even) td {
    background: transparent;
  }

  .detail-page.detail-sections-plain .detail-content > .composed-section.content-kind-table .composed-section-copy > h2::after {
    margin-left: 0;
  }
}

/* v100 — firemní identifikace se zobrazuje v kontaktním bloku patičky. */
.site-footer .footer-contact .footer-company-id {
  margin: -3px 0 16px;
  color: #bfd0cb;
  font-size: .87rem;
  line-height: 1.55;
  overflow-wrap: anywhere;
}


/* v101 — společné mobilní zobrazení otevírací doby a vycentrovaná výzva k akci.
   Přehled na Kontaktu používá stejné responsivní karty jako stránky provozů. */
@media (max-width: 560px) {
  .opening-overview-section .opening-overview-grid,
  .opening-overview-section .opening-overview-card,
  .opening-overview-section .opening-overview-table-wrap { min-width: 0; max-width: 100%; }
  .opening-overview-section .opening-overview-table-wrap { overflow: visible; }
  .opening-overview-section .opening-overview-table.opening-hours-table { width: 100%; min-width: 0; }
  .opening-overview-section .opening-overview-table.opening-hours-table tbody tr {
    box-shadow: 0 5px 17px rgba(22, 61, 57, .05);
  }
  .opening-overview-section .opening-overview-table.opening-hours-table tbody td {
    text-align: right;
    white-space: normal;
  }
  .opening-overview-section .opening-overview-table.opening-hours-table tbody td b { overflow-wrap: anywhere; }
  .opening-overview-section .opening-overview-table.opening-hours-table tbody th {
    background: transparent;
    white-space: normal;
    overflow-wrap: anywhere;
  }
  .opening-overview-section .opening-overview-table.opening-hours-table tbody tr.is-today > * {
    background: transparent;
    border-radius: 0;
  }
  .opening-overview-section .opening-overview-seasonal-table.opening-hours-table tbody th small {
    display: block;
    margin-top: 4px;
    color: var(--muted);
    font-size: .78rem;
    font-weight: 500;
    white-space: normal;
  }
}

/* Na tabletu se pro dvě tabulkové karty nevměstnají dlouhé časy:
   přehled proto používá jeden plnohodnotný sloupec. */
@media (min-width: 561px) and (max-width: 1050px) {
  .opening-overview-section .opening-overview-grid { grid-template-columns: minmax(0, 1fr); }
  .opening-overview-section .opening-overview-card { min-width: 0; }
}

/* Výzva „Ozvěte se nám“ je jedna společná část všech detailních stránek. */
@media (max-width: 760px) {
  .detail-contact .wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 24px;
    text-align: center;
  }
  .detail-contact .wrap > div { width: 100%; min-width: 0; }
  .detail-contact .kicker { margin-inline: auto; }
  .detail-contact h2 { max-width: 100%; text-wrap: balance; }
  .detail-contact .button { display: inline-flex; align-items: center; justify-content: center; max-width: 100%; }
}
@media (max-width: 470px) {
  .detail-contact { padding-block: 52px; }
  .detail-contact .wrap { gap: 20px; }
}


/* Hlavička používá výřez aktuální hero fotografie; tmavá vrstva zajišťuje kontrast. */
.site-header { border-bottom: 0; box-shadow: none; }
.site-header .brand { color: #fff9ef; }
.site-header .brand small { color: #d7e3dc; }
.site-header .main-menu > a { color: #fffdf6; }
.site-header .main-menu > a:hover,
.site-header .main-menu > a[aria-current="page"] { color: #f5d6a4; }
.site-header .menu-icon i { background: #fff9ef; }
.site-header a:focus-visible,
.site-header button:focus-visible {
  outline: 2px solid #f7d7a5;
  outline-offset: 4px;
}
.site-header-backdrop {
    position: absolute;
    inset: 0;
    z-index: 0;
    display: block;
    overflow: hidden;
    pointer-events: none;
}
.site-header-backdrop::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image: var(--header-hero-image);
    background-size: var(--header-hero-size, cover);
    background-position: var(--header-hero-position, center top);
    background-repeat: no-repeat;
    filter: blur(7px) brightness(1.09) saturate(1.02);
}
.site-header-backdrop::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(7, 34, 31, .48), rgba(9, 41, 37, .36));
}
.site-header > .header-contact,
.site-header > .header-main {
    position: relative;
    z-index: 1;
}
.site-header .brand-logo {
    width: 76px;
    height: 65px;
}
.site-header .brand b {
    font-size: 1.43rem;
}
.site-header .brand small {
    font-size: .75rem;
}
.site-header .header-main {
    min-height: 88px;
}
.site-header .brand,
.site-header .main-menu > a {
    text-shadow: 0 1px 9px rgba(0, 0, 0, .3);
}
@media (max-width: 760px) {
    .site-header .brand-logo {
        width: 62px;
        height: 54px;
    }
    .site-header .brand b {
        font-size: 1.22rem;
    }
    .site-header .brand small {
        font-size: .7rem;
    }
    .site-header .header-main {
        min-height: 76px;
    }
}

@media (max-width: 760px) {
    .site-header-backdrop::after {
        background: linear-gradient(180deg, rgba(7, 34, 31, .56), rgba(9, 41, 37, .43));
    }
}

/* Responzivní menu funguje přes nativní <details> i bez JavaScriptu. */
.site-header .mobile-menu-details { display: none; }
@media (max-width: 1400px) {
  /* Nepoužíváme původní JS menu: nehrozí konflikt s jeho CSS. */
  .site-header .header-main > .main-menu { display: none; }
  .site-header .mobile-menu-details {
    display: block;
    flex: 0 0 auto;
    min-width: 0;
  }
  .site-header .mobile-menu-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    min-height: 46px;
    padding: 9px 13px;
    border: 1px solid rgba(255,255,255,.42);
    border-radius: 11px;
    background: rgba(255,255,255,.12);
    color: #fff;
    font-size: .875rem;
    font-weight: 800;
    line-height: 1;
    text-transform: uppercase;
    cursor: pointer;
    list-style: none;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
  }
  .site-header .mobile-menu-trigger::-webkit-details-marker { display: none; }
  .site-header .mobile-menu-trigger::marker { content: ""; }
  .site-header .mobile-menu-trigger .menu-icon { display: grid; }
  .site-header .mobile-menu-trigger .menu-icon i { background: #fff; }
  .site-header .mobile-menu-details[open] .mobile-menu-trigger {
    background: rgba(255,255,255,.23);
    border-color: rgba(255,255,255,.68);
  }
  .site-header .mobile-menu-trigger:focus-visible {
    outline: 3px solid #f4d6a4;
    outline-offset: 3px;
  }
  .site-header .mobile-menu-panel {
    position: absolute;
    top: calc(100% + 1px);
    right: 0;
    left: 0;
    z-index: 90;
    display: grid;
    gap: 0;
    max-height: calc(100svh - 135px);
    padding: 9px;
    overflow-y: auto;
    overscroll-behavior: contain;
    border: 1px solid rgba(36,82,77,.20);
    border-top: 0;
    border-radius: 0 0 14px 14px;
    background: #fffefa;
    box-shadow: 0 22px 38px rgba(5,24,22,.27);
  }
  .site-header .mobile-menu-details:not([open]) .mobile-menu-panel { display: none; }
  .site-header .mobile-menu-panel a {
    display: block;
    padding: 12px 14px;
    border-radius: 8px;
    color: #163d39;
    font-size: 1rem;
    font-weight: 750;
    line-height: 1.35;
    text-decoration: none;
    text-shadow: none;
  }
  .site-header .mobile-menu-panel a:hover,
  .site-header .mobile-menu-panel a[aria-current="page"] {
    color: #934834;
    background: #f3eee6;
  }
  .site-header .mobile-menu-panel a:focus-visible { outline-offset: -2px; }
}

/* Rozložení značky a navigace na menších displejích. */
.site-header .brand {
  min-width: 0;
  flex-shrink: 1;
  white-space: nowrap;
}
.site-header .brand span { min-width: 0; }
@media (max-width: 1400px) {
  .site-header .header-main {
    gap: 12px;
  }
  .site-header .mobile-menu-details {
    margin-left: auto;
    flex-shrink: 0;
  }
  .site-header .mobile-menu-panel {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
  }
  .site-header .mobile-menu-panel a {
    display: block;
    padding: 13px 16px;
    border-bottom: 1px solid rgba(36,82,77,.09);
  }
  .site-header .mobile-menu-panel a:last-child { border-bottom: 0; }
}
@media (max-width: 360px) {
  .site-header .brand-logo { width: 50px; height: 45px; }
  .site-header .brand b { font-size: 1.04rem; }
  .site-header .brand small { font-size: .6875rem; }
  .site-header .mobile-menu-trigger { gap: 7px; padding: 9px 10px; }
}

/* v110 — mobilní hlavička a hlavní fotografie jsou jeden souvislý výřez.
   Část fotografie nad hero vykreslí rozmazaná hlavička; už se nic nezrcadlí.
   JavaScript dosadí skutečnou výšku hlavičky (včetně kontaktního proužku). */
@media (max-width: 760px) {
    .hero-slide .hero-photo,
    .detail-hero .detail-photo {
        position: absolute;
        top: calc(-1 * var(--header-hero-overlap, 120px));
        left: 0;
        width: 100%;
        height: calc(100% + var(--header-hero-overlap, 120px));
        max-width: none;
        object-fit: cover;
    }
}

/* v111: mobilní navigace ladí s tmavě zelenou hlavičkou, odkazy mají
   kontrastní popisky a aktuální stránka má výrazný, ale klidný stav. */
@media (max-width: 1400px) {
    .site-header .mobile-menu-panel {
        top: calc(100% + 8px);
        left: 0;
        right: 0;
        width: auto;
        padding: 10px;
        border: 1px solid rgba(226, 238, 226, .28);
        border-radius: 18px;
        background: linear-gradient(155deg, rgba(25, 70, 62, .98), rgba(9, 42, 39, .98));
        box-shadow: 0 22px 46px rgba(4, 28, 25, .42);
        -webkit-backdrop-filter: blur(16px);
        backdrop-filter: blur(16px);
    }
    .site-header .mobile-menu-panel a {
        display: flex;
        min-height: 50px;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        padding: 12px 15px;
        border-bottom: 1px solid rgba(236, 245, 236, .13);
        border-radius: 9px;
        color: #fffaf0;
        font-size: 1rem;
        font-weight: 700;
        text-shadow: none;
        transition: background-color .16s ease, color .16s ease;
    }
    .site-header .mobile-menu-panel a::after {
        content: "›";
        color: #e9d2a7;
        font-size: 1.45rem;
        font-weight: 400;
        line-height: 1;
    }
    .site-header .mobile-menu-panel a:hover,
    .site-header .mobile-menu-panel a[aria-current="page"] {
        color: #fff;
        background: rgba(246, 218, 174, .17);
        box-shadow: inset 3px 0 0 #e9c996;
    }
    .site-header .mobile-menu-details[open] .mobile-menu-trigger {
        color: #163d39;
        background: #f7edda;
        border-color: #f7edda;
    }
    .site-header .mobile-menu-details[open] .mobile-menu-trigger .menu-icon i {
        background: #163d39;
    }
}

/* v111: na vnitřních stránkách mobilní nadpis a popis tvoří světlou kartu
   nad fotografií. Čitelnost už nezávisí na barvě konkrétního snímku. */
@media (max-width: 760px) {
    .detail-hero {
        padding-top: clamp(235px, 64vw, 330px);
        padding-bottom: 22px;
        background: #163d39;
    }
    .detail-hero .detail-overlay {
        height: 100%;
        background: linear-gradient(180deg, rgba(7, 35, 31, .04), rgba(7, 35, 31, .32));
    }
    .detail-hero .detail-heading {
        width: min(calc(100% - 32px), 680px);
        margin-inline: auto;
        padding: clamp(22px, 5vw, 30px);
        border: 1px solid rgba(255, 255, 255, .82);
        border-radius: 20px;
        color: #30413f;
        background: rgba(255, 254, 250, .95);
        box-shadow: 0 18px 48px rgba(4, 32, 29, .32);
        -webkit-backdrop-filter: blur(10px);
        backdrop-filter: blur(10px);
    }
    .detail-hero .detail-heading .kicker.light {
        color: #944332;
        font-size: .875rem;
        text-shadow: none;
    }
    .detail-hero .detail-heading h1 {
        color: #163d39;
        font-size: clamp(2.2rem, 10vw, 3.3rem);
        line-height: 1.06;
        letter-spacing: -.025em;
        text-shadow: none;
    }
    .detail-hero .detail-heading > p:last-child {
        color: #30413f;
        font-size: clamp(1.02rem, 4.2vw, 1.2rem);
        line-height: 1.5;
        text-shadow: none;
    }
}

/* v112: detailové mobilní galerie ukazují jednu velkou fotografii.
   Ovládání je pod snímkem, nepřekrývá ryby ani případné popisky. */
.detail-gallery-counter { display: none; }
@media (max-width: 760px) {
    .detail-page .composed-gallery-slider {
        display: flex;
        min-width: 0;
        flex-direction: column;
        gap: 12px;
    }
    .detail-page .composed-gallery-slider .detail-gallery-track {
        order: 1;
        width: 100%;
        gap: 12px;
        padding: 0 0 4px;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scroll-padding-inline: 0;
        scrollbar-width: none;
    }
    .detail-page .composed-gallery-slider .detail-gallery-track::-webkit-scrollbar {
        display: none;
    }
    .detail-page .composed-section.gallery-size-compact .composed-gallery-slider .detail-gallery-track figure,
    .detail-page .composed-section.gallery-size-balanced .composed-gallery-slider .detail-gallery-track figure,
    .detail-page .composed-section.gallery-size-large .composed-gallery-slider .detail-gallery-track figure {
        flex: 0 0 100%;
        min-height: 0;
        aspect-ratio: 4 / 3;
        border-radius: 16px;
        scroll-snap-align: start;
        scroll-snap-stop: always;
    }
    .detail-page .composed-gallery-slider .detail-gallery-track img {
        width: 100%;
        height: 100%;
        min-height: 0;
        object-fit: cover;
    }
    .detail-page .composed-gallery-slider .detail-gallery-controls {
        position: static;
        order: 2;
        display: flex;
        width: 100%;
        align-items: center;
        justify-content: center;
        gap: 18px;
        margin: 2px 0 0;
        padding: 0;
        transform: none;
        pointer-events: auto;
    }
    .detail-page .composed-gallery-slider .detail-gallery-controls[hidden] {
        display: none;
    }
    .detail-page .composed-gallery-slider .detail-gallery-controls button {
        width: 46px;
        height: 46px;
        flex: 0 0 46px;
        border: 1px solid rgba(22, 61, 57, .16);
        border-radius: 50%;
        color: #fff;
        background: #24524d;
        box-shadow: 0 6px 18px rgba(22, 61, 57, .14);
        font-size: 1.25rem;
    }
    .detail-page .composed-gallery-slider .detail-gallery-controls button:hover:not(:disabled) {
        background: #a64f3d;
    }
    .detail-page .composed-gallery-slider .detail-gallery-counter {
        display: inline-flex;
        min-width: 58px;
        justify-content: center;
        color: #425b55;
        font-size: .91rem;
        font-weight: 750;
        font-variant-numeric: tabular-nums;
        letter-spacing: .04em;
    }
}

/* v120: celá značka tvoří jedinou jemně tónovanou klikací plochu.
   Necháváme ji bez rámečku a bez samostatného obdélníku za titulkem. */
.site-header .brand {
    cursor: pointer;
    margin-left: -4px;
    padding: 4px 9px 4px 4px;
    border-radius: 13px;
    background: rgba(5, 28, 26, .14);
    transition: background-color .18s ease;
}
.site-header .brand:hover,
.site-header .brand:focus-visible {
    background: rgba(5, 28, 26, .24);
}
/* Na tabletu a notebooku je rozbalovací navigace přehledný pravý panel. */
@media (min-width: 761px) and (max-width: 1400px) {
    .site-header .mobile-menu-panel {
        left: auto;
        right: 0;
        width: min(420px, calc(100vw - 40px));
    }
}

/* Desktop: kompaktní hlavička, logo přes oba řádky a čitelné odkazy. */
@media (min-width: 1401px) {
    .site-header .header-contact,
    .site-header .header-main {
        width: min(1360px, calc(100% - 40px));
    }
    .site-header .header-contact {
        padding-block: 3px;
    }
    .site-header .header-main {
        position: static;
        justify-content: flex-end;
        min-height: clamp(76px, 5.6vw, 86px);
    }
    .site-header .main-menu {
        position: relative;
        z-index: 2;
        gap: clamp(13px, 1.6vw, 24px);
    }
    .site-header .main-menu > a {
        padding-block: 10px;
        font-size: 1.02rem;
        white-space: nowrap;
    }
    .site-header .brand {
        position: absolute;
        top: 50%;
        left: max(20px, calc((100% - 1360px) / 2));
        z-index: 2;
        transform: translateY(-50%);
        margin-left: 0;
        padding: 4px 8px 4px 4px;
        border-radius: 16px;
        background: rgba(5, 28, 26, .12);
    }
    .site-header .brand:hover,
    .site-header .brand:focus-visible {
        background: rgba(5, 28, 26, .22);
    }
    .site-header .brand-logo {
        width: clamp(86px, 6.8vw, 100px);
        height: clamp(82px, 6.5vw, 96px);
    }
}

/* v132: jeden společný lightbox pro veřejné slideshow a fotogalerie. */
.slider-controls > .slider-expand-button {
    margin-left: 4px;
    font-size: 1.4rem;
}
.image-lightbox-item {
    position: relative;
}
.image-lightbox-trigger {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: block;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: inherit;
    background: transparent;
    cursor: zoom-in;
}
.image-lightbox-trigger:focus-visible {
    outline: 3px solid #ecbb76;
    outline-offset: -4px;
}
html.image-lightbox-open {
    overflow: hidden;
}
dialog.image-lightbox {
    position: fixed;
    inset: 0;
    box-sizing: border-box;
    width: min(1320px, calc(100vw - 24px));
    max-width: none;
    height: calc(100vh - 24px);
    height: calc(100dvh - 24px);
    max-height: none;
    margin: auto;
    padding: 56px 72px 55px;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 18px;
    color: #fff;
    background: #0d1717;
    box-shadow: 0 24px 90px rgba(0, 0, 0, .45);
}
dialog.image-lightbox:not([open]) {
    display: none;
}
dialog.image-lightbox[open] {
    display: flex;
    flex-direction: column;
}
dialog.image-lightbox::backdrop {
    background: rgba(6, 17, 17, .89);
}
.image-lightbox-stage {
    display: grid;
    grid-template-rows: minmax(0, 1fr) auto;
    flex: 1 1 auto;
    min-height: 0;
    min-width: 0;
    width: 100%;
    margin: 0;
}
.image-lightbox-stage > img {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: contain;
}
.image-lightbox-stage > figcaption {
    padding-top: 12px;
    color: #e0e9e7;
    font-size: .94rem;
    line-height: 1.45;
    text-align: center;
}
.image-lightbox button {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, .26);
    border-radius: 50%;
    color: #fff;
    background: rgba(35, 65, 63, .8);
    cursor: pointer;
    font-family: inherit;
    font-size: 1.55rem;
    line-height: 1;
    transition: background-color .18s;
}
.image-lightbox button:hover {
    background: #a64f3d;
}
.image-lightbox button:focus-visible {
    outline: 3px solid #ecbb76;
    outline-offset: 3px;
}
.image-lightbox button[hidden],
.image-lightbox [hidden] {
    display: none;
}
.image-lightbox-close {
    position: absolute;
    top: 10px;
    right: 12px;
    z-index: 2;
}
.image-lightbox-arrow {
    position: absolute;
    top: 50%;
    z-index: 2;
    transform: translateY(-50%);
}
.image-lightbox-prev { left: 14px; }
.image-lightbox-next { right: 14px; }
.image-lightbox-counter {
    position: absolute;
    right: 70px;
    bottom: 17px;
    left: 70px;
    color: #d6e0de;
    font-size: .88rem;
    font-variant-numeric: tabular-nums;
    letter-spacing: .06em;
    text-align: center;
}
@media (max-width: 640px) {
    dialog.image-lightbox {
        width: 100vw;
        height: 100vh;
        height: 100dvh;
        padding: 56px 8px 52px;
        border: 0;
        border-radius: 0;
    }
    .image-lightbox .image-lightbox-arrow {
        width: 38px;
        height: 38px;
        background: rgba(23, 48, 46, .83);
    }
    .image-lightbox .image-lightbox-arrow:hover {
        background: #a64f3d;
    }
    .image-lightbox-prev { left: 8px; }
    .image-lightbox-next { right: 8px; }
    .image-lightbox-stage > figcaption {
        padding-inline: 20px;
        font-size: .86rem;
    }
}
@media (prefers-reduced-motion: reduce) {
    .image-lightbox button { transition: none; }
}

/* v140: independent photo-only sections and new responsive gallery styles.
   The original slider and classic grid keep their existing appearance. */
.composed-section .composed-section-inner.media-only {
    display: grid;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 0;
}
.composed-section .media-only .composed-gallery-full { grid-column: 1 / -1; width: 100%; }
.composed-section .media-only .composed-gallery { margin-top: 0; }
.composed-gallery-slider.gallery-arrows-hidden .detail-gallery-controls { display: none !important; }

.composed-gallery-grid.composed-gallery-mosaic {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-auto-rows: clamp(120px, 13vw, 205px);
    grid-auto-flow: dense;
}
.composed-gallery-mosaic figure { min-height: 0; aspect-ratio: auto; }
.composed-gallery-mosaic img { display: block; height: 100%; min-height: 0; object-fit: cover; }
.composed-gallery-mosaic.has-featured figure:first-child { grid-column: span 2; grid-row: span 2; }
.composed-gallery-mosaic:not(.has-featured) { grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }

.composed-gallery-grid.composed-gallery-masonry { display: block; columns: 3; column-gap: 12px; }
.composed-gallery-masonry figure {
    display: inline-block;
    width: 100%;
    min-height: 0;
    margin: 0 0 12px;
    break-inside: avoid;
    vertical-align: top;
    aspect-ratio: 4 / 3;
}
.composed-gallery-masonry figure:nth-child(3n + 1) { aspect-ratio: 3 / 4; }
.composed-gallery-masonry figure:nth-child(4n + 2) { aspect-ratio: 1 / 1; }
.composed-gallery-masonry img { display: block; width: 100%; height: 100%; min-height: 0; object-fit: cover; }

@media (max-width: 760px) {
    .composed-gallery-grid.composed-gallery-mosaic { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: clamp(105px, 25vw, 190px); }
    .composed-gallery-mosaic.has-featured figure:first-child { grid-column: 1 / -1; grid-row: span 2; }
    .composed-gallery-grid.composed-gallery-masonry { columns: 2; }
}
@media (max-width: 420px) {
    .composed-gallery-grid.composed-gallery-mosaic { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; grid-auto-rows: clamp(90px, 28vw, 140px); }
    .composed-gallery-grid.composed-gallery-masonry { columns: 1; }
}

/* v141: všechny detailové stránky mají stejnou výchozí šířku a na mobilu
   volný vzhled jako Sál, bez další vnější „bubliny“ kolem každé sekce. */
@media (max-width: 820px) {
    .detail-page .detail-content > .detail-section {
        width: 100%;
        max-width: 100%;
        justify-self: stretch;
    }
}
@media (max-width: 760px) {
    .detail-page .detail-content { gap: 38px; }
    .detail-page .detail-content > .detail-section {
        padding: 0 !important;
        overflow: visible !important;
        background: transparent !important;
        border: 0 !important;
        border-radius: 0 !important;
        box-shadow: none !important;
    }
    /* Původní odsazení obrazových sekcí počítalo s bílou kartou. */
    .detail-page .detail-content > .composed-section > .composed-section-inner {
        padding: 0 !important;
        background: transparent !important;
        border: 0 !important;
        border-radius: 0 !important;
        box-shadow: none !important;
    }
    .detail-page .detail-content > .composed-section .composed-section-copy {
        margin: 0 !important;
        padding: 0 !important;
    }
    .detail-page .detail-content > .composed-section .composed-gallery-full {
        padding: 0 !important;
    }
    .detail-page .detail-content > .composed-special-section .composed-special-inner {
        padding: 0;
    }
    /* Speciální dekorativní panel akvárií je na telefonu rovněž bez obalu. */
    .detail-page-aquaria .detail-content > .opening-hours-section-embedded .opening-hours-layout {
        padding: 0 !important;
        background: transparent !important;
        border: 0 !important;
        border-radius: 0 !important;
        box-shadow: none !important;
    }
}

/* v144: editorial typography for lengthy detail texts. Rich editor headings,
   lists and 3-value highlights use safe HTML, so existing content is untouched. */
.detail-page .detail-content > .composed-section.content-kind-html .safe-html > p,
.detail-page .detail-content > .composed-section.content-kind-html .safe-html > ol,
.detail-page .detail-content > .composed-section.content-kind-html .safe-html > ul:not(:has(> li > h4)) {
    max-width: 760px;
}
.detail-page .composed-section.content-kind-html .safe-html > h3 {
    margin: clamp(34px, 4vw, 52px) 0 12px;
    color: var(--ink-deep);
    font-family: Georgia, serif;
    font-size: clamp(1.45rem, 2.7vw, 1.85rem);
    font-weight: 700;
    line-height: 1.2;
    text-wrap: balance;
}
.detail-page .composed-section.content-kind-html .safe-html > h4 {
    margin: 26px 0 9px;
    color: var(--ink-deep);
    font-size: clamp(1.08rem, 2vw, 1.22rem);
    font-weight: 800;
    line-height: 1.32;
}
/* Previously bold-only paragraphs become clear internal headings automatically. */
.detail-page .composed-section.content-kind-html .safe-html > p:has(> strong:only-child),
.detail-page .composed-section.content-kind-html .safe-html > p:has(> b:only-child),
.detail-page .composed-section.content-kind-html .safe-html > p:has(> strong:first-child + br),
.detail-page .composed-section.content-kind-html .safe-html > p:has(> b:first-child + br) {
    margin-top: clamp(27px, 3.8vw, 43px);
}
.detail-page .composed-section.content-kind-html .safe-html > p > strong:only-child,
.detail-page .composed-section.content-kind-html .safe-html > p > b:only-child,
.detail-page .composed-section.content-kind-html .safe-html > p > strong:first-child:has(+ br),
.detail-page .composed-section.content-kind-html .safe-html > p > b:first-child:has(+ br) {
    display: block;
    margin-bottom: 9px;
    color: var(--ink-deep);
    font-size: clamp(1.08rem, 2vw, 1.22rem);
    font-weight: 800;
    line-height: 1.35;
}
.detail-page .composed-section.content-kind-html .safe-html > p > strong:first-child + br,
.detail-page .composed-section.content-kind-html .safe-html > p > b:first-child + br { display: none; }
.detail-page .composed-section.content-kind-html .safe-html > ul:has(> li:nth-child(4)):not(:has(> li > h4)) {
    columns: 2;
    column-gap: clamp(26px, 4vw, 54px);
}
.detail-page .composed-section.content-kind-html .safe-html > ul > li {
    padding-left: 3px;
    break-inside: avoid;
}
/* Three compact facts: simple semantic HTML produced by the editor's button. */
.detail-page .composed-section.content-kind-html .safe-html > ul:has(> li > h4) {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(15px, 2.4vw, 30px);
    width: 100%;
    max-width: 980px;
    margin: clamp(27px, 4vw, 43px) 0;
    padding: 0;
    list-style: none;
}
.detail-page .composed-section.content-kind-html .safe-html > ul:has(> li > h4) > li {
    min-width: 0;
    padding: 7px 10px 7px clamp(14px, 2vw, 20px);
    border-left: 3px solid var(--wine);
}
.detail-page .composed-section.content-kind-html .safe-html > ul:has(> li > h4) h4 {
    margin: 0 0 4px;
    color: var(--ink-deep);
    font: 700 clamp(1.42rem, 2.8vw, 2.1rem)/1.15 Georgia, serif;
}
.detail-page .composed-section.content-kind-html .safe-html > ul:has(> li > h4) p {
    margin: 0;
    color: var(--muted);
    font-size: .95rem;
    line-height: 1.4;
}
.detail-page .composed-section.content-kind-html .safe-html > :first-child { margin-top: 0; }
@media (max-width: 760px) {
    /* After the outer mobile cards were removed, the image and next heading
       could touch. Keep a deliberate breathing gap for every image layout. */
    .detail-page .detail-content > .composed-section.has-primary > .composed-section-inner {
        row-gap: clamp(22px, 5vw, 30px) !important;
    }
    .detail-page .composed-section.content-kind-html .safe-html > ul:has(> li:nth-child(4)):not(:has(> li > h4)) {
        columns: 1;
    }
    .detail-page .composed-section.content-kind-html .safe-html > ul:has(> li > h4) {
        grid-template-columns: 1fr;
        gap: 16px;
    }
    .site-footer .footer-bottom { padding-right: 70px; }
}

/* v145: several contact actions can be configured for each detail section. */
.composed-section-copy .composed-contact-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 17px;
}
.composed-section-copy .composed-contact-actions > .button {
    max-width: 100%;
    margin: 0;
    overflow-wrap: anywhere;
    text-align: center;
}
@media (max-width: 420px) {
    .composed-section-copy .composed-contact-actions > .button {
        width: 100%;
        justify-content: center;
    }
}

/* v162: optional reservation shortcuts use the existing editable green banner. */
.detail-contact-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; align-items: center; max-width: 740px; }
.detail-contact-actions .button { min-width: 0; text-align: center; white-space: normal; line-height: 1.35; }
@media (max-width: 760px) {
  .detail-contact-actions { justify-content: center; width: 100%; }
  .detail-contact-actions .button { flex: 1 1 220px; }
}


/* v163: zelený blok smí obsahovat pouze rezervační tlačítka bez textového sloupce. */
.detail-contact--actions-only .wrap { justify-content: center; }
.detail-contact--actions-only .detail-contact-actions {
  justify-content: center;
  max-width: 100%;
  width: 100%;
}
.detail-contact--actions-only .detail-contact-actions .button {
  flex: 0 1 auto;
}
@media (max-width: 620px) {
  .detail-contact--actions-only .detail-contact-actions .button { flex: 1 1 100%; }
}

/* v268: current hours above separate cards for the dated and regular schedules. */
.opening-hours-layout.has-updates {
  grid-template-columns: minmax(0, .96fr) minmax(0, 1.04fr);
  gap: clamp(18px, 2.8vw, 32px);
}
.opening-hours-layout.has-updates .opening-hours-intro {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: minmax(0, 1fr) minmax(230px, .7fr);
  column-gap: 28px;
  align-items: center;
}
.opening-hours-layout.has-updates .opening-hours-intro > :is(.kicker, h2, .opening-hours-note) { grid-column: 1; }
.opening-hours-layout.has-updates .opening-hours-today {
  grid-column: 2;
  grid-row: 1 / span 3;
  justify-self: end;
  width: 100%;
  max-width: 390px;
  margin-top: 0;
}
.opening-hours-card-heading { padding: 17px clamp(14px, 2vw, 22px) 13px; }
.opening-hours-card-heading h3 {
  margin: 0;
  color: var(--ink-deep);
  font-size: clamp(1.15rem, 2vw, 1.38rem);
  line-height: 1.25;
}
.opening-hours-card.opening-hours-updates { background: color-mix(in srgb, var(--cream) 36%, #fff); }
.opening-hours-updates .opening-hours-card-heading { border-bottom: 1px solid var(--line); }
.opening-hours-updates-body {
  display: grid;
  gap: 16px;
  padding: 12px clamp(14px, 2vw, 22px) 16px;
}
.opening-hours-updates-body > .opening-exception-week { margin: 0; }
.opening-hours-updates .opening-exception-week .opening-exception-period {
  margin-bottom: 4px;
  padding: 8px 9px;
  border-radius: 7px;
  background: color-mix(in srgb, var(--cream) 76%, #fff);
}
.opening-hours-updates .opening-exception-week-table thead th { background: transparent; }
.opening-hours-updates .opening-exception-week-table tbody tr:last-child > * { border-bottom: 0; }
.opening-exception-summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px 12px;
  padding: 10px 12px;
  border-inline-start: 3px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}
.opening-exception-summary.is-closed {
  border-inline-start-color: color-mix(in srgb, var(--wine) 62%, #fff);
  background: color-mix(in srgb, var(--wine) 7%, #fff);
}
.opening-exception-summary-detail {
  display: grid;
  gap: 2px;
  min-width: 0;
  overflow-wrap: anywhere;
}
.opening-exception-summary-detail strong { color: var(--ink-deep); font-size: .94rem; }
.opening-exception-summary-detail span { color: var(--muted); font-size: .85rem; line-height: 1.4; }
.opening-exception-value {
  justify-self: end;
  padding: 3px 9px;
  border-radius: 20px;
  background: var(--water-light);
  color: var(--ink-deep);
  font-size: .85rem;
  white-space: nowrap;
}
.opening-exception-summary.is-closed .opening-exception-value {
  background: color-mix(in srgb, var(--wine) 10%, #fff);
  color: var(--wine);
}
.opening-hours-table.opening-hours-table-compact { min-width: 0; }

@media (max-width: 760px) {
  .opening-hours-layout.has-updates { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .opening-hours-layout.has-updates .opening-hours-intro { display: block; }
  .opening-hours-layout.has-updates .opening-hours-today { max-width: none; margin-top: 18px; }
}

@media (max-width: 560px) {
  .opening-hours-card.opening-hours-regular { background: #fff; border: 1px solid var(--line); }
  .opening-hours-card.opening-hours-updates { border: 1px solid var(--line); }
  .opening-hours-table-wrap.is-compact { padding: 0 12px 8px; }
  .opening-hours-table-compact tbody { gap: 0; }
  .opening-hours-table.opening-hours-table-compact tbody tr {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: baseline;
    gap: 12px;
    padding: 9px 5px;
    background: transparent;
    border: 0;
    border-bottom: 1px solid var(--line);
    border-radius: 0;
    box-shadow: none;
  }
  .opening-hours-table.opening-hours-table-compact tbody tr.is-today {
    padding-inline: 8px;
    background: var(--water-light);
    border-color: transparent;
    border-radius: 8px;
  }
  .opening-hours-table.opening-hours-table-compact tbody tr:last-child { border-bottom: 0; }
  .opening-hours-table.opening-hours-table-compact tbody :is(th, td) { padding: 0; font-size: .94rem; line-height: 1.4; }
  .opening-hours-table.opening-hours-table-compact tbody td { display: block; }
  .opening-hours-table.opening-hours-table-compact tbody td::before { content: none; }
}
