/* =====================================================================
   modern.css  -  tasteful modern polish for ntckosice.sk
   Additive override, loaded LAST. Refines interaction, depth and
   typography only; does NOT change layout dimensions, so it is safe
   and fully reversible (remove this file + its <link> to revert).
   Accent: antuka clay-court orange #BC4A22 (hover #9C3609) + tennis-ball yellow #fff200.
   ===================================================================== */

/* ---- Liquid glass on the semi-transparent white panels (.white-bg-tr) that
   sit over the hero: frosted blur so the courts show through. Desktop only
   (on mobile these are over a solid bg, so there is nothing to blur and it
   saves the backdrop-filter cost). Opacity kept high enough that the small
   antuka text on them (hero eyebrow, see-all buttons) still passes AA. ---- */
@media (min-width: 992px) {
  .white-bg-tr {
    background: rgba(255, 255, 255, .82);
    -webkit-backdrop-filter: blur(18px) saturate(1.4);
    backdrop-filter: blur(18px) saturate(1.4);
    border-radius: 12px;
  }
  /* Same glass on the opaque .white-bg content panels (listing/detail/CMS
     pages). EXCLUDES the hero login inputs (.form-control) so they stay
     solid + legible. Their top overlaps the hero, so the frost shows there. */
  .white-bg:not(.form-control) {
    background: rgba(255, 255, 255, .85) !important;
    -webkit-backdrop-filter: blur(18px) saturate(1.4);
    backdrop-filter: blur(18px) saturate(1.4);
    border-radius: 12px;
  }
}
/* NOTE: the hero-box glass override lives at the END of this file so it wins
   over the opaque #zoom .white-bg-tr {#fff} rule declared further down. */

/* ---- Crisper text rendering ---- */
body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* ---- Smooth, consistent micro-interactions ---- */
a,
.btn,
.hoverable,
.rounded-corners,
.navbar-white,
.navbar-nav > li > a,
.social-links a,
.thumbnails > li,
img.img-responsive {
  transition: color .2s ease, background-color .25s ease,
              box-shadow .28s ease, transform .28s ease, opacity .2s ease;
}

/* ---- Buttons: modern radius, spacing and a soft hover lift ---- */
.btn {
  border-radius: 6px;
  letter-spacing: .3px;
}
.btn:hover,
.btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(188, 74, 34, .22);
}
.btn:active { transform: translateY(0); box-shadow: none; }

/* ---- Accessible, modern keyboard focus rings ---- */
a:focus-visible,
.btn:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 2px solid #BC4A22;
  outline-offset: 2px;
}

/* ---- Content cards (column-based .hoverable): gentle elevation ---- */
[class*="col-"].hoverable {
  border-radius: 8px;
}
[class*="col-"].hoverable:hover {
  box-shadow: 0 12px 32px rgba(0, 0, 0, .13);
  transform: translateY(-4px);
}

/* ---- Softer, more modern rounded panels ---- */
.rounded-corners {
  box-shadow: 0 6px 24px rgba(0, 0, 0, .09);
}

/* ---- Sticky nav gains subtle depth once it condenses on scroll ---- */
.navbar-white.scrolling {
  box-shadow: 0 2px 14px rgba(0, 0, 0, .09);
}

/* ---- Slightly tighter, more modern heading rhythm ---- */
h1, h2, h3, .title {
  letter-spacing: .2px;
}
.title {
  position: relative;
}

/* ---- Forms: modern rounded inputs with a brand focus tint ---- */
.form-control {
  border-radius: 6px;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.form-control:focus {
  border-color: #BC4A22;
  box-shadow: 0 0 0 3px rgba(188, 74, 34, .12);
}

/* ---- Images inside rounded cards inherit the rounding cleanly ---- */
[class*="col-"].hoverable img.img-responsive {
  border-radius: 6px;
}

/* ---- Contrast fixes (WCAG AA) ---- */
.btn-grey {
  background: rgba(255, 255, 255, .92) !important;
  color: #333 !important;
  border-color: #b9b9b9;
}
.btn-grey:hover,
.btn-primary.btn-grey:hover {
  color: #000 !important;
}
/* cookie-consent (orestbida v3) secondary/link button readability */
#cc-main .c-bn.c_link,
#cc-main .cm__btn--secondary,
button.c-bn.c_link {
  color: #1a1a1a !important;
}

/* cookie-consent primary accept button: on-brand, high-contrast */
#cc-main #c-p-bn,
#cc-main .c-bn#c-p-bn {
  background: #BC4A22 !important;
  border-color: #BC4A22 !important;
  color: #fff !important;
}
/* footer headings kept compact after h5->h3 semantic fix */
#contact .footer-h {
  font-size: 16px;
  font-weight: 700;
  margin: 0 0 8px;
  line-height: 1.3;
}

/* cookie primary accept button (osano-style build): brand red, WCAG AA (white on #999 failed) */
#c-p-bn,
button#c-p-bn,
button#c-p-bn.c-bn {
  background: #BC4A22 !important;
  background-color: #BC4A22 !important;
  border-color: #BC4A22 !important;
  color: #ffffff !important;
}

/* ---- CLS: reserve image space so nothing shifts as images load ---- */
/* News/content cards: uniform 3:2 crop (nailthumb JS is disabled, so containers had no height) */
.nailthumb-container:not(.wide-thumb) {
  aspect-ratio: 3 / 2;
  height: auto;
  overflow: hidden;
}
.nailthumb-container img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  display: block;
}
/* Gallery wide-thumb already has a fixed height: just make the image fill it cleanly */
.nailthumb-container.wide-thumb img {
  object-fit: cover;
}
/* Adroller banners: reserve square space, contain (no crop) so banner text stays intact */
.adroller .carousel-inner .item img {
  aspect-ratio: 1 / 1;
  height: auto;
  object-fit: contain;
}

/* ---- YouTube facade (click-to-load; no iframe/cookies/JS until played) ---- */
.yt-facade {
  position: relative;
  cursor: pointer;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  background: #000;
  border-radius: 6px;
}
.yt-facade img { width: 100%; height: 100%; object-fit: cover; display: block; }
.yt-facade .yt-play {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 68px; height: 48px; border-radius: 12px;
  background: #BC4A22; opacity: .92; transition: opacity .2s ease, transform .2s ease;
}
.yt-facade .yt-play::after {
  content: ""; position: absolute; top: 50%; left: 53%; transform: translate(-50%, -50%);
  border-style: solid; border-width: 11px 0 11px 19px;
  border-color: transparent transparent transparent #fff;
}
.yt-facade:hover .yt-play,
.yt-facade:focus .yt-play { opacity: 1; transform: translate(-50%, -50%) scale(1.06); }
.yt-facade:focus { outline: 2px solid #BC4A22; outline-offset: 2px; }

/* ---- Base text contrast: darken body text (#7c7e7d was 4.08:1, now 5.06:1 on white) ---- */
body { color: #6d6f6e; }

/* btn-primary base text contrast (styles.css used grey ~3.5:1 on white) */
.btn-primary { color: #333 !important; }
.btn-primary:hover, .btn-primary:focus { color: #000 !important; }

/* Plain link contrast: styles.css used #8d8e8e (~3:1 on white); darken to pass WCAG AA */
a { color: #5a5a5a; }

/* =====================================================================
   Modern card grid: AKTUALITY (#projekt) + PODUJATIA (#amenities)
   Styles the existing <a> as a real card (layout-safe, reversible).
   ===================================================================== */
/* the column just provides the gutter + spacing; strip its own hover styling */
#amenities .col-md-3.hoverable,
#projekt .col-md-3.hoverable {
  padding-top: 6px !important;
  padding-bottom: 6px !important;
  margin-bottom: 18px !important;
  border-radius: 0;
  box-shadow: none;
}
/* neutralize the generic column hover-lift; the inner card owns the elevation
   (this also frees the wrapper's own transform for the scroll-reveal below) */
#amenities .col-md-3.hoverable:hover,
#projekt .col-md-3.hoverable:hover {
  transform: none;
  box-shadow: none;
}
/* the card itself = the anchor */
#amenities .col-md-3.hoverable > a,
#projekt .col-md-3.hoverable > a {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, .06);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 3px 14px rgba(0, 0, 0, .06);
  transition: transform .3s ease, box-shadow .3s ease;
}
#amenities .col-md-3.hoverable:hover > a,
#projekt .col-md-3.hoverable:hover > a {
  transform: translateY(-6px);
  box-shadow: 0 18px 40px rgba(0, 0, 0, .15);
}
/* consistent 3:2 image crop across BOTH grids, flush to the card top */
#amenities .nailthumb-container,
#amenities .nailthumb-container.wide-thumb,
#projekt .nailthumb-container {
  aspect-ratio: 3 / 2 !important;
  height: auto !important;
  border-radius: 0 !important;
  margin: 0 !important;
  overflow: hidden;
  flex: 0 0 auto;
}
#amenities .nailthumb-container img,
#projekt .nailthumb-container img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  border-radius: 0 !important;
  transition: transform .55s ease;
}
#amenities .col-md-3.hoverable:hover img,
#projekt .col-md-3.hoverable:hover img {
  transform: scale(1.06);
}
/* captions: left aligned, padded, modern type; fill remaining height */
#amenities .caption,
#projekt .caption {
  padding: 14px 16px 16px !important;
  text-align: left !important;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
}
/* AKTUALITY title: show up to 3 lines before ellipsis (was clamped to ~1) */
#projekt .caption {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
  font-weight: 600;
  font-size: 15px;
  line-height: 1.4;
  color: #232323;
}
/* keep the card title dark on hover (was turning orange via .hoverable:hover a) */
#amenities .col-md-3.hoverable:hover > a,
#projekt .col-md-3.hoverable:hover > a { color: #232323 !important; }
/* PODUJATIA: title + brand-red date */
#amenities .caption > div:first-child {
  font-weight: 600;
  font-size: 14.5px;
  line-height: 1.35;
  color: #232323;
}
#amenities .caption > div:last-child {
  color: #BC4A22 !important;
  font-weight: 700;
  font-size: 12.5px;
  letter-spacing: .4px;
  margin-top: auto;
  padding-top: 8px;
}

/* ---- News card grid (AKTUALITY): equal height + tight 16px gutters (was 30px),
   desktop 4-up. Flex with column-gap; cards fill 1/4 with L/R padding zeroed so
   the gap is exactly 16px; the row is padded to 30px so the outer cards stay
   aligned with the section heading. PODUJATIA keeps plain equal-height flex
   (its card count varies). ---- */
@media (min-width: 992px) {
  #projekt .col-md-12:has(> .col-md-3.hoverable) {
    display: flex !important;
    flex-wrap: wrap;
    column-gap: 16px;
    row-gap: 0;
    align-items: stretch;
    padding-left: 30px !important;
    padding-right: 30px !important;
  }
  #projekt .col-md-12:has(> .col-md-3.hoverable) > .col-md-3.hoverable {
    width: calc((100% - 48px) / 4) !important;
    max-width: none !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin-bottom: 16px !important;
    float: none !important;
  }
  #amenities .col-md-12:has(> .col-md-3.hoverable) {
    display: flex !important;
    flex-wrap: wrap;
    align-items: stretch;
  }
  /* drop stray <br>/whitespace so it does not become a flex item */
  #projekt .col-md-12:has(> .col-md-3.hoverable) > br,
  #amenities .col-md-12:has(> .col-md-3.hoverable) > br { display: none; }
}

/* =====================================================================
   FOTOGALÉRIE + VIDEÁ (homepage .galhead): same modern card feel as
   AKTUALITY/PODUJATIA. The selector is unique to the home gallery block,
   so it never touches gallery/news detail pages. Layout-safe, reversible.
   ===================================================================== */
/* each item is a tidy flex cell so a row of cards can equalise height */
.galhead .thumbnails > li.hoverable {
  display: flex;
  flex-direction: column;
  padding-top: 6px;
  padding-bottom: 6px;
  box-shadow: none;
}
/* neutralize the generic column hover-lift; the card/facade owns elevation */
.galhead .thumbnails > li.hoverable:hover {
  transform: none;
  box-shadow: none;
}
/* FOTOGALÉRIE card = the inner <a> (wraps image + caption) */
.galhead .thumbnails > li.hoverable > a {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, .06);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 3px 14px rgba(0, 0, 0, .06);
  transition: transform .3s ease, box-shadow .3s ease;
}
.galhead .thumbnails > li.hoverable:hover > a {
  transform: translateY(-6px);
  box-shadow: 0 18px 40px rgba(0, 0, 0, .15);
}
/* keep the card label dark (base .hoverable:hover a turns links orange) */
.galhead .thumbnails > li.hoverable:hover > a,
.galhead .thumbnails .caption a { color: #232323 !important; }
/* uniform 3:2 crop, flush to the card top, gentle zoom on hover */
.galhead .thumbnails .nailthumb-container.wide-thumb {
  aspect-ratio: 3 / 2 !important;
  height: auto !important;
  border-radius: 0 !important;
  margin: 0 !important;
  overflow: hidden;
  flex: 0 0 auto;
}
.galhead .thumbnails .nailthumb-container.wide-thumb img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  border-radius: 0 !important;
  transition: transform .55s ease;
}
.galhead .thumbnails > li.hoverable:hover .nailthumb-container.wide-thumb img {
  transform: scale(1.06);
}
/* VIDEÁ: keep the rounded facade, give it a matching frame + hover lift */
.galhead .thumbnails > li.hoverable > .yt-facade {
  flex: 0 0 auto;
  border-radius: 12px;
  border: 1px solid rgba(0, 0, 0, .06);
  box-shadow: 0 3px 14px rgba(0, 0, 0, .06);
  transition: transform .3s ease, box-shadow .3s ease;
}
.galhead .thumbnails > li.hoverable:hover > .yt-facade {
  transform: translateY(-6px);
  box-shadow: 0 18px 40px rgba(0, 0, 0, .15);
}
/* captions: fill the remaining height, tidy centered label */
.galhead .thumbnails .caption {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 12px 14px 14px !important;
  margin: 0 !important;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.35;
  color: #232323;
}
/* equal-height rows on desktop (4-up galleries / video row) */
@media (min-width: 992px) {
  .galhead .thumbnails {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
  }
}

/* =====================================================================
   Scroll reveal (AOS-style): homepage cards + headings fade/rise in.
   Self-hosted (js/reveal.js), reduced-motion safe, no layout shift.
   Runs only when html.js-reveal is set (added inline, before paint), so
   no-JS users and reduced-motion users always get the full content.
   ===================================================================== */
html.js-reveal #projekt .title,
html.js-reveal #amenities .title,
html.js-reveal .galhead .title,
html.js-reveal #projekt .hoverable,
html.js-reveal #amenities .hoverable,
html.js-reveal .galhead .thumbnails > li.hoverable {
  transition: opacity .6s ease, transform .6s cubic-bezier(.22, .61, .36, 1);
}
/* hidden until scrolled into view */
html.js-reveal #projekt .title:not(.is-visible),
html.js-reveal #amenities .title:not(.is-visible),
html.js-reveal .galhead .title:not(.is-visible),
html.js-reveal #projekt .hoverable:not(.is-visible),
html.js-reveal #amenities .hoverable:not(.is-visible),
html.js-reveal .galhead .thumbnails > li.hoverable:not(.is-visible) {
  opacity: 0;
  transform: translateY(24px);
}
/* gentle stagger so a row cascades in rather than snapping together */
html.js-reveal #projekt .hoverable:nth-child(2),
html.js-reveal #amenities .hoverable:nth-child(2),
html.js-reveal .galhead .thumbnails > li.hoverable:nth-child(2) { transition-delay: .08s; }
html.js-reveal #projekt .hoverable:nth-child(3),
html.js-reveal #amenities .hoverable:nth-child(3),
html.js-reveal .galhead .thumbnails > li.hoverable:nth-child(3) { transition-delay: .16s; }
html.js-reveal #projekt .hoverable:nth-child(4),
html.js-reveal #amenities .hoverable:nth-child(4),
html.js-reveal .galhead .thumbnails > li.hoverable:nth-child(4) { transition-delay: .24s; }
/* failsafe: if reveal.js never runs, the inline timer reveals everything */
html.reveal-fallback #projekt .title,
html.reveal-fallback #amenities .title,
html.reveal-fallback .galhead .title,
html.reveal-fallback #projekt .hoverable,
html.reveal-fallback #amenities .hoverable,
html.reveal-fallback .galhead .thumbnails > li.hoverable {
  opacity: 1 !important;
  transform: none !important;
}
/* respect users who prefer reduced motion: show everything, no animation */
@media (prefers-reduced-motion: reduce) {
  html.js-reveal #projekt .title,
  html.js-reveal #amenities .title,
  html.js-reveal .galhead .title,
  html.js-reveal #projekt .hoverable,
  html.js-reveal #amenities .hoverable,
  html.js-reveal .galhead .thumbnails > li.hoverable {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* =====================================================================
   MODERNIZATION Tier 1 (verified-safe subset of the design audit).
   Additive, loaded last, reversible. Bumped modern.css to ?v=7.
   Held for a visual pass (over the rotating hero): global 16px body
   rhythm, section vertical-padding scale, 16px form inputs, navbar
   underline/frosted, and the optional Inter body font.
   ===================================================================== */

/* ---- Font delivery: end FOIT. These re-declare the site faces (modern.css
   loads after styles.css, so they win) WITH font-display. The wide Eurostile
   BODY face uses `optional` so it never swap-reflows the largest text block
   (zero CLS); short display strings use `swap`. Azo now ships subsetted woff2
   (latin + latin-ext, full Slovak incl. l/r/l-acute + all carons) before the
   .otf, cutting ~135KB. No font preload (would contend with the preloaded
   hero image on mobile). Names/filenames copied verbatim from styles.css. ---- */
@font-face { font-family: EurostileLTPro; src: url(../fonts/2E29D5_1_0.woff2) format("woff2"), url(../fonts/2E29D5_1_0.woff) format("woff"); font-weight: 400; font-style: normal; font-display: optional; }
@font-face { font-family: EurostileLTPro-Bold; src: url(../fonts/2E29D5_0_0.woff2) format("woff2"), url(../fonts/2E29D5_0_0.woff) format("woff"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: AzoRegular; src: url(../fonts/azo-regular.woff2) format("woff2"), url(../fonts/azo-regular.otf) format("opentype"); font-display: swap; }
@font-face { font-family: AzoLight; src: url(../fonts/azo-light.woff2) format("woff2"), url(../fonts/azo-light.otf) format("opentype"); font-display: swap; }
@font-face { font-family: AzoBlack; src: url(../fonts/azo-black.woff2) format("woff2"), url(../fonts/azo-black.otf) format("opentype"); font-display: swap; }

/* ---- Section titles: firmer bold caps + a brand red-to-yellow accent bar
   (injects the brand palette + real hierarchy; .title was Eurostile 22px/400) ---- */
.title {
  font-family: "Saira SC", "Saira", "Arial Narrow", sans-serif;
  font-weight: 700;
  font-size: clamp(22px, 4.6vw, 32px);
  line-height: 1.15;
  letter-spacing: .5px;
}
/* Title accent bar hidden per request. */
.title::after { display: none; }

/* ---- Grey bands: cooler cleaner neutral + hairline seams so sections read
   as distinct (body #6d6f6e on #f4f6f8 = 4.66:1, better than on #f2f2f2) ---- */
.grey-bg {
  background: #f4f6f8;
  border-top: 1px solid #e4e8ec;
  border-bottom: 1px solid #e4e8ec;
}
/* Partneri (#finance) white band: hairline top/bottom so the stack separates */
.main > section#finance {
  border-top: 1px solid rgba(0, 0, 0, .07);
  border-bottom: 1px solid rgba(0, 0, 0, .07);
}

/* ---- Buttons: firm the shared primary/grey pill (8px radius, even padding,
   weight 600). modern.css hover-lift + focus ring still apply on top. ---- */
.btn-primary,
.btn-grey {
  border-radius: 8px;
  padding: 11px 20px;
  font-weight: 600;
  letter-spacing: .3px;
  border: 1px solid #d0d0d0;
  line-height: 1.2;
}
.btn-primary.btn-block { padding-left: 14px; padding-right: 14px; }

/* ---- Links + hover: unify to brand deep red #BC4A22 (5.89:1 on white AA),
   kills the off-brand orange. Nav is left untouched (held for a visual pass). ---- */
.hoverable:hover a { color: #BC4A22 !important; }
.main a:not(.btn):hover { color: #BC4A22; }
.btn-grey:hover,
.btn-primary.btn-grey:hover { color: #BC4A22 !important; border-color: #BC4A22; }

/* ---- Footer: warmer near-black slab + brand-red social icon hover ---- */
footer#contact { background: #0e0f12; }
.social-links a:hover { background: #BC4A22; border-color: #BC4A22; }
.social-links a:hover i { color: #fff; }

/* ---- Inner-page heading scale: one fluid ramp on bare h1-h4. Homepage
   .title (an h2.title) is more specific so it keeps its own styling above. ---- */
h1 { font-size: clamp(28px, 5vw, 40px); line-height: 1.15; font-weight: 700; }
h2 { font-size: clamp(24px, 4vw, 32px); line-height: 1.2; font-weight: 700; }
h3 { font-size: clamp(20px, 3vw, 24px); line-height: 1.25; font-weight: 700; }
h4 { font-size: clamp(18px, 2.5vw, 20px); line-height: 1.3; font-weight: 700; }

/* ---- Hero reservation box: card it (near-opaque white, so legible over any
   slide), ONLINE becomes a red eyebrow, PRIHLASIT becomes a solid red CTA.
   Scoped to #zoom so the section .white-bg-tr wrappers are untouched. ---- */
#zoom .white-bg-tr {
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 18px 44px rgba(0, 0, 0, .28);
  padding: 22px 24px;
}
#zoom .white-bg-tr h2 { font-size: 22px; font-weight: 700; line-height: 1.2; letter-spacing: .3px; }
#zoom .white-bg-tr h2 small {
  display: block;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #BC4A22;
  margin-bottom: 2px;
}
#zoom .carousel-caption .box_margin { margin-bottom: 16px; }
#zoom .form-signin .btn {
  background: #BC4A22 !important;
  border-color: #BC4A22 !important;
  color: #fff !important;
  font-weight: 700;
  letter-spacing: .5px;
}
#zoom .form-signin .btn:hover,
#zoom .form-signin .btn:focus {
  background: #9C3609 !important;
  border-color: #9C3609 !important;
  color: #fff !important;
  box-shadow: 0 8px 20px rgba(188, 74, 34, .32);
}

/* ---- Section see-all CTAs (Vsetky aktuality / fotogalerie / videa): a
   distinct brand-red outline that fills on hover. Scoped to the .text-right
   heading buttons, so the hero submit and the card links are excluded. ---- */
.respad p.text-right a.btn {
  background: transparent !important;
  border: 2px solid #BC4A22 !important;
  color: #BC4A22 !important;
  border-radius: 8px !important;
  font-weight: 600;
  letter-spacing: .6px;
  text-transform: uppercase;
  padding: 9px 18px !important;
}
.respad p.text-right a.btn:hover,
.respad p.text-right a.btn:focus {
  background: #BC4A22 !important;
  border-color: #BC4A22 !important;
  color: #fff !important;
  box-shadow: 0 8px 20px rgba(188, 74, 34, .26);
}

/* =====================================================================
   Brand typeface: SAIRA (a dynamic, technical, sporty grotesque that
   suits a fast sport). Self-hosted, no CDN. Saira SemiCondensed drives
   the display titles (punchy, fast, condensed); Saira (normal width) is
   the body/UI face. latin + latin-ext = full Slovak on every weight.
   Body uses font-display:optional (zero CLS: never swap-reflows the
   largest text block); short display titles use swap so the brand voice
   shows on first paint. Eurostile/Azo are now unused (do not download).
   ===================================================================== */
@font-face { font-family: "Saira SC"; font-style: normal; font-weight: 700; font-display: swap; src: url(../fonts/saira-sc-700-latext.woff2) format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Saira SC"; font-style: normal; font-weight: 700; font-display: swap; src: url(../fonts/saira-sc-700-lat.woff2) format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Saira"; font-style: normal; font-weight: 400; font-display: optional; src: url(../fonts/saira-400-latext.woff2) format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Saira"; font-style: normal; font-weight: 400; font-display: optional; src: url(../fonts/saira-400-lat.woff2) format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Saira"; font-style: normal; font-weight: 600; font-display: optional; src: url(../fonts/saira-600-latext.woff2) format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Saira"; font-style: normal; font-weight: 600; font-display: optional; src: url(../fonts/saira-600-lat.woff2) format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Saira"; font-style: normal; font-weight: 700; font-display: optional; src: url(../fonts/saira-700-latext.woff2) format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Saira"; font-style: normal; font-weight: 700; font-display: optional; src: url(../fonts/saira-700-lat.woff2) format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* Body / UI face */
body { font-family: "Saira", -apple-system, "Segoe UI", Roboto, Arial, sans-serif; }
/* leftover explicit Azo utilities move onto Saira too */
.service,
.strong { font-family: "Saira", -apple-system, "Segoe UI", Roboto, Arial, sans-serif; }
/* Display face: hero H2 + footer headings (section .title is set above) */
#zoom .white-bg-tr h2,
footer h3,
#contact .footer-h {
  font-family: "Saira SC", "Saira", "Arial Narrow", sans-serif;
}

/* =====================================================================
   Desktop menu: clean brand-yellow label on hover/open (no underline; it
   clashed with the dropdown panels, and almost every item has a submenu),
   plus rounded shadowed dropdown panels. Scoped to >=992px so the mobile
   menu is untouched; selectors are specific enough to beat styles.css.
   ===================================================================== */
@media (min-width: 992px) {
  .navbar .navbar-nav > li > a {
    letter-spacing: .5px;
    transition: color .2s ease;
  }
  /* hover AND open (dropdown parent) get the brand-yellow label, no block fill */
  .navbar .navbar-nav > li > a:hover,
  .navbar .navbar-nav > li > a:focus,
  .navbar .navbar-nav > li:hover > a,
  .navbar .navbar-nav > li.open > a,
  .navbar .navbar-nav > li.open > a:hover,
  .navbar .navbar-nav > li.open > a:focus,
  .navbar .nav > li > a:hover,
  .navbar .nav > li > a:focus {
    background: transparent !important;
    color: #fff200 !important;
  }
  /* dropdown submenus: rounded, shadowed panel with tidy items.
     Trim the top padding and pull the panel up closer to the nav so there
     is less empty space above the first item. */
  .navbar .dropdown-menu {
    border: 0;
    border-radius: 10px;
    padding: 3px 6px 6px;
    box-shadow: 0 14px 36px rgba(0, 0, 0, .18);
    overflow: hidden;
  }
  /* Bootstrap's .navbar-nav>li>.dropdown-menu forces margin-top:0 + square top
     corners at higher specificity, so the pull-up needs a more specific selector. */
  .navbar .navbar-nav > li > .dropdown-menu {
    margin-top: -16px;
    border-top-left-radius: 10px;
    border-top-right-radius: 10px;
  }
  .navbar .dropdown-menu > li > a {
    border-radius: 6px;
    padding: 9px 14px;
    transition: background-color .18s ease, color .18s ease;
  }
  .navbar .dropdown-menu > li > a:hover,
  .navbar .dropdown-menu > li > a:focus {
    background: #f4f6f8;
    color: #BC4A22;
  }
}

/* =====================================================================
   Layout tidy + de-inlined styles (moved out of the templates).
   ===================================================================== */
/* Hero reservation box higher + pull the main content up to meet it, closing
   the empty band the higher box left behind. Scoped to pages that actually
   have the reservation form (homepage + the headertable pages share the same
   hero); the gallery-detail hero and mobile are left as they were. */
@media (min-width: 992px) {
  body:has(.form-signin) #zoom.carousel-caption { bottom: 40%; }
  body:has(.form-signin) .main { margin-top: -376px; }
}
/* Partners row (was an inline flex style on the container) */
#partners { min-height: 150px; }
.partners-row {
  display: flex;
  height: 150px;
  align-items: center;
  gap: 30px;
  flex-wrap: wrap;
  justify-content: center;
}
@media (max-width: 768px) {
  .partners-row { flex-direction: column; height: auto; gap: 30px; }
}
/* Partner logos (were per-image inline max-heights) */
.partner-logo { width: auto; margin-bottom: 10px; }
.plh-77 { max-height: 77px; }
.plh-60 { max-height: 60px; }
.plh-40 { max-height: 40px; }
/* Adroller banner images (was inline min-width) */
.adroller .carousel-inner .item img { min-width: 100%; }
/* Contact textarea min height (was inline) */
#note { min-height: 50px; }

/* Section heading rows: align the "Vsetky ..." button to the BOTTOM of the
   title, instead of the top (desktop). Each heading wrapper holds a .title
   (h2) plus a p.text-right button; flex the wrapper and bottom-align. */
@media (min-width: 992px) {
  #projekt .col-md-12:has(> .title):has(> p.text-right),
  #amenities .col-md-12:has(> .title):has(> p.text-right),
  .galhead .col-md-12:has(> .title):has(> p.text-right) {
    display: flex;
    align-items: flex-end;
    margin-bottom: 0;
    padding-bottom: 12px;
  }
  #projekt .col-md-12:has(> p.text-right) > .title,
  #amenities .col-md-12:has(> p.text-right) > .title,
  .galhead .col-md-12:has(> p.text-right) > .title,
  #projekt .col-md-12:has(> .title) > p.text-right,
  #amenities .col-md-12:has(> .title) > p.text-right,
  .galhead .col-md-12:has(> .title) > p.text-right {
    margin-bottom: 0;
  }
}

/* Hero reservation box: liquid glass on desktop (placed last so it wins over the
   opaque #zoom .white-bg-tr rule above). Opacity .85 keeps the small antuka
   eyebrow + form text AA-legible over the blurred, rotating hero. Mobile keeps
   the opaque box (no blur target there). */
@media (min-width: 992px) {
  #zoom .white-bg-tr {
    background: rgba(255, 255, 255, .85);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    backdrop-filter: blur(20px) saturate(1.4);
  }
}

/* =====================================================================
   News cards, SHARED by the homepage AKTUALITY and the aktuality.html
   listing. Matched by the card's own /aktualita/ link, so both pages get
   the identical card + tight 16px grid + 16px row spacing (this is what
   the homepage #projekt rules already do; here it extends to the listing,
   which has many rows). Values match, so the redundancy on the homepage
   is harmless.
   ===================================================================== */
@media (min-width: 992px) {
  .col-md-12:has(> .col-md-3.hoverable > a[href*="/aktualita/"]) {
    display: flex !important;
    flex-wrap: wrap;
    column-gap: 16px;
    row-gap: 0;
    align-items: stretch;
    padding-left: 30px !important;
    padding-right: 30px !important;
  }
  .col-md-12:has(> .col-md-3.hoverable > a[href*="/aktualita/"]) > .col-md-3.hoverable {
    width: calc((100% - 48px) / 4) !important;
    max-width: none !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin-bottom: 16px !important;
    float: none !important;
  }
}
.col-md-3.hoverable:has(> a[href*="/aktualita/"]) {
  padding-top: 6px !important;
  padding-bottom: 6px !important;
  box-shadow: none;
}
.col-md-3.hoverable:has(> a[href*="/aktualita/"]) > a {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, .06);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 3px 14px rgba(0, 0, 0, .06);
  transition: transform .3s ease, box-shadow .3s ease;
}
.col-md-3.hoverable:has(> a[href*="/aktualita/"]):hover > a {
  transform: translateY(-6px);
  box-shadow: 0 18px 40px rgba(0, 0, 0, .15);
  color: #232323 !important;
}
.col-md-3.hoverable:has(> a[href*="/aktualita/"]) .nailthumb-container {
  aspect-ratio: 3 / 2 !important;
  height: auto !important;
  border-radius: 0 !important;
  margin: 0 !important;
  overflow: hidden;
  flex: 0 0 auto;
}
.col-md-3.hoverable:has(> a[href*="/aktualita/"]) .nailthumb-container img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  border-radius: 0 !important;
  transition: transform .55s ease;
}
.col-md-3.hoverable:has(> a[href*="/aktualita/"]):hover .nailthumb-container img {
  transform: scale(1.06);
}
.col-md-3.hoverable:has(> a[href*="/aktualita/"]) .caption {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
  flex: 1 1 auto;
  padding: 14px 16px 16px !important;
  text-align: left !important;
  font-weight: 600;
  font-size: 15px;
  line-height: 1.4;
  color: #232323;
}

/* ---- Logo (and all links): no focus ring on MOUSE click; the clean antuka
   ring still shows for keyboard focus via :focus-visible above. Removes the
   browser/Bootstrap blue auto focus-ring that appeared around the logo. ---- */
a:focus:not(:focus-visible) { outline: none; }

/* ---- Homepage galleries + videos: same tight 16px gutters as the news cards
   (were ~30px). 4-up galleries (col-md-3) and the video row (col-md-4); 15px
   row padding keeps the outer cards aligned with the section heading. ---- */
@media (min-width: 992px) {
  .galhead .thumbnails {
    column-gap: 16px;
    padding-left: 15px;
    padding-right: 15px;
  }
  .galhead .thumbnails > li.hoverable {
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin-bottom: 16px !important;
    float: none !important;
  }
  .galhead .thumbnails:has(> li.col-md-3.hoverable) > li.col-md-3.hoverable {
    width: calc((100% - 48px) / 4) !important;
    max-width: none !important;
  }
  .galhead .thumbnails:has(> li.col-md-4.hoverable) > li.col-md-4.hoverable {
    width: calc((100% - 32px) / 3) !important;
    max-width: none !important;
  }
}

/* ---- AKTUALITY (#projekt): one seamless glass panel. The template splits the
   heading and the cards into TWO separate .white-bg-tr rows, so each blurred a
   different slice of the hero and a seam showed between them. Move the frosted
   glass onto the single #projekt container and make the two rows transparent,
   so it is one continuous panel (matching #amenities, which already wraps both
   rows in one panel). Only when the rows carry .white-bg-tr (the no-events
   case, where the seam appears). Desktop only. ---- */
@media (min-width: 992px) {
  #projekt > .container:has(.white-bg-tr) {
    background: rgba(255, 255, 255, .82) !important;
    -webkit-backdrop-filter: blur(18px) saturate(1.4);
    backdrop-filter: blur(18px) saturate(1.4);
    border-radius: 12px 12px 0 0;
  }
  /* Homepage section panels: round the TOP only; the bottom flows into the
     next section, so a rounded bottom would leave a gap at the corners. */
  #amenities .white-bg-tr { border-radius: 12px 12px 0 0; }
  #projekt .col-md-12.white-bg-tr {
    background: transparent !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }
}

/* ---- "Back to home" (« Úvod) button on CMS pages: antuka outline that fills
   on hover, matching the section see-all CTAs. ---- */
.btn-home {
  display: inline-block;
  border: 2px solid #BC4A22;
  color: #BC4A22 !important;
  background: transparent;
  border-radius: 8px;
  font-weight: 600;
  letter-spacing: .5px;
  text-transform: uppercase;
  padding: 8px 18px;
  font-size: 13px;
  text-decoration: none;
  transition: background-color .2s ease, color .2s ease, box-shadow .2s ease;
}
.btn-home:hover,
.btn-home:focus {
  background: #BC4A22;
  color: #fff !important;
  box-shadow: 0 8px 20px rgba(188, 74, 34, .26);
}

/* ---- Gallery listing page (/gallery): same white card + tight 16px grid as
   the homepage FOTOGALÉRIE (was plain images with wide gutters). ---- */
@media (min-width: 992px) {
  .col-lg-12.grey-bg .thumbnails {
    display: flex !important;
    flex-wrap: wrap;
    column-gap: 16px;
    padding-left: 15px !important;
    padding-right: 15px !important;
    align-items: stretch;
  }
  .col-lg-12.grey-bg .thumbnails > li.col-sm-3.hoverable {
    width: calc((100% - 48px) / 4) !important;
    max-width: none !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin-bottom: 16px !important;
    float: none !important;
    display: flex;
    flex-direction: column;
  }
}
.col-lg-12.grey-bg .thumbnails > li.col-sm-3.hoverable > a {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, .06);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 3px 14px rgba(0, 0, 0, .06);
  transition: transform .3s ease, box-shadow .3s ease;
}
.col-lg-12.grey-bg .thumbnails > li.col-sm-3.hoverable:hover > a {
  transform: translateY(-6px);
  box-shadow: 0 18px 40px rgba(0, 0, 0, .15);
  color: #232323 !important;
}
.col-lg-12.grey-bg .thumbnails .nailthumb-container.wide-thumb {
  aspect-ratio: 3 / 2 !important;
  height: auto !important;
  border-radius: 0 !important;
  margin: 0 !important;
  overflow: hidden;
  flex: 0 0 auto;
}
.col-lg-12.grey-bg .thumbnails .nailthumb-container.wide-thumb img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  transition: transform .55s ease;
}
.col-lg-12.grey-bg .thumbnails > li.col-sm-3.hoverable:hover img {
  transform: scale(1.06);
}
.col-lg-12.grey-bg .thumbnails .caption {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 12px 14px 14px !important;
  margin: 0 !important;
  font-size: 12px;
  font-weight: 600;
  color: #232323;
}

/* ---- In-content document/PDF buttons (.btn1x, e.g. CENNÍK .PDF, PRAVIDLÁ
   VSTUPU DO HALY): antuka outline that fills on hover, matching the back
   buttons. ---- */
.btn1x {
  border: 2px solid #BC4A22 !important;
  color: #BC4A22 !important;
  background: transparent !important;
  background-color: transparent !important;
  border-radius: 8px !important;
  font-weight: 600 !important;
  letter-spacing: .5px;
  text-transform: uppercase;
  padding: 8px 18px !important;
  font-size: 13px;
  box-shadow: none !important;
  transition: background-color .2s ease, color .2s ease, box-shadow .2s ease;
}
.btn1x:hover,
.btn1x:focus {
  background: #BC4A22 !important;
  background-color: #BC4A22 !important;
  color: #fff !important;
  box-shadow: 0 8px 20px rgba(188, 74, 34, .26) !important;
}

/* ---- Mobile: keep the "see all" header buttons (Vsetky aktuality/podujatia/
   fotogalerie/videa) on ONE line. In col-xs-6 the button is narrow, so the »
   or a longer label (Fotogalerie) wrapped. Same selector as the antuka-outline
   rule above (.respad p.text-right a.btn) so this wins on source order: trim the
   side padding, drop letter-spacing, nowrap, and shrink the label so it never
   wraps, even on 360px phones and before Saira loads (system font is ~10%
   wider). Does NOT touch the hero PRIHLASIT button. ---- */
@media (max-width: 767px) {
  .respad p.text-right a.btn {
    white-space: nowrap !important;
    font-size: 11px !important;
    letter-spacing: 0 !important;
    padding-left: 4px !important;
    padding-right: 4px !important;
  }
  /* Back buttons («  Uvod / «  Spat) sit in a very narrow col-xs-3, so the
     label broke onto two lines. Keep them on one line + trim the side padding
     so they fit. Right-aligned, so any tiny overflow hangs left into the
     gutter, never off-screen. */
  .btn-home {
    white-space: nowrap;
    padding-left: 10px;
    padding-right: 10px;
  }
  /* iOS Safari auto-zooms into any input whose font-size is < 16px. Theme
     inputs are 12.8px, so tapping Login / heslo (and the contact-form fields)
     zoomed the page. 16px on the text inputs stops the zoom without touching
     the viewport meta (keeps pinch-zoom / a11y intact). Buttons don't zoom. */
  .form-control,
  input[type="text"],
  input[type="password"],
  input[type="email"],
  input[type="tel"],
  input[type="number"],
  input[type="search"],
  textarea,
  select.form-control {
    font-size: 16px !important;
  }
}

/* Self-hosted video lightbox (vertical VISIT Kosice reel among 16:9 videos) */
.video-facade { cursor: pointer; }
.video-lightbox { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 99999; background: rgba(0,0,0,0.92); display: flex; align-items: center; justify-content: center; padding: 24px; }
.video-lightbox video { max-height: 90vh; max-width: 94vw; width: auto; height: auto; background: #000; box-shadow: 0 12px 48px rgba(0,0,0,0.6); border-radius: 4px; }
.video-lightbox-close { position: absolute; top: 14px; right: 20px; width: 44px; height: 44px; background: none; border: 0; color: #fff; font-size: 38px; line-height: 1; cursor: pointer; opacity: 0.85; }
.video-lightbox-close:hover { opacity: 1; }
