/*
Theme Name: MALO CLINIC Prague
Theme URI: https://maloclinics.cz
Description: Дочерняя тема Twenty Twenty-Five для сайта MALO CLINIC Prague. Всё оформление задаётся в theme.json — бренд-палитра, типографская шкала и шкала отступов из брендбука MALO CLINIC (январь 2026). Страницы собираются только ядровыми блоками Gutenberg.
Author: ifkees
Template: twentytwentyfive
Version: 0.1.37
Requires at least: 6.7
Tested up to: 7.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: malo-clinic-prague
Tags: block-theme, full-site-editing
*/

/* Non-legal pages keep a 1280px frame for sections and component grids. */
body.malo-wide-sections .wp-block-post-content > :where(:not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright)):not(:where(h1, h2, h3, h4, h5, h6, p, ul, ol, blockquote)) {
  max-width: var(--wp--style--global--wide-size) !important;
}

/* Gutenberg's constrained layout otherwise centers its 800px children inside
   wide sections, including CTA rows. Keep their leading edge at the frame. */
body.malo-wide-sections main .wp-block-group.is-layout-constrained:not(.alignfull) > :where(:not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright)):not(:where(h1, h2, h3, h4, h5, h6, p, ul, ol, blockquote)) {
  max-width: var(--wp--style--global--wide-size) !important;
  margin-left: 0 !important;
  margin-right: auto !important;
}
body.malo-wide-sections .wp-block-post-content .wp-block-group.alignfull.is-layout-constrained > :where(:not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright)):not(:where(h1, h2, h3, h4, h5, h6, p, ul, ol, blockquote)) {
  max-width: var(--wp--style--global--wide-size) !important;
}
/* Service prose is itself a constrained block in the service template. */
body.malo-wide-sections.single-sluzby main > .wp-block-post-content {
  max-width: var(--wp--style--global--wide-size) !important;
}
body.malo-wide-sections.single-sluzby main > .wp-block-post-content.is-layout-constrained > :where(:not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright)):not(:where(h1, h2, h3, h4, h5, h6, p, ul, ol, blockquote)) {
  max-width: var(--wp--style--global--wide-size) !important;
  margin-left: 0 !important;
  margin-right: auto !important;
}
body.malo-wide-sections .wp-block-post-content :is(h1, h2, h3, h4, h5, h6, p, ul, ol, blockquote) {
  text-align: left !important;
}
/* Readable text measures inside the wide frame. Component grids, form
   controls and table cells retain their own layout. Full-width parents use
   the same leading edge as their wide children; narrower columns use zero. */
body.malo-wide-sections .wp-site-blocks main :is(h1, h2, h3, h4, h5, h6):not(:where(.malo-karty *, .malo-radky *, .malo-rada-pred-po *, .wp-block-post-template *, .wp-block-table *, form *)) {
  max-width: 55rem !important;
  margin-left: max(0px, calc((100% - var(--wp--style--global--wide-size, 1280px)) / 2)) !important;
  margin-right: auto !important;
}
body.malo-wide-sections .wp-site-blocks main :is(p, ul, ol, blockquote):not(:where(.malo-karty *, .malo-radky *, .malo-rada-pred-po *, .wp-block-post-template, .wp-block-post-template *, .wp-block-table *, form *)) {
  box-sizing: border-box;
  max-width: 47.5rem !important;
  margin-left: max(0px, calc((100% - var(--wp--style--global--wide-size, 1280px)) / 2)) !important;
  margin-right: auto !important;
}

/* Text-only hero: keep the background full-width, align its content to the
   left edge of the same wide frame used by the page sections. */
.wp-block-post-content > .wp-block-group.alignfull > .malo-text-hero-content {
  box-sizing: border-box;
  width: min(100%, var(--wp--style--global--wide-size)) !important;
  max-width: var(--wp--style--global--wide-size) !important;
  margin-left: auto !important;
  margin-right: auto !important;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.malo-text-hero-content > :is(h1, p, .wp-block-buttons) {
  width: min(100%, 36.5rem);
  margin-left: 0 !important;
  margin-right: 0 !important;
  text-align: left !important;
}
.malo-text-hero-content > .wp-block-buttons {
  justify-content: flex-start !important;
}

/* The full navigation fits on one row only above this width. WordPress
   switches to its desktop menu at 600px unless the theme overrides it. */
@media (max-width: 1359px) {
  header .wp-block-navigation__responsive-container-open:not(.always-shown) {
    display: flex;
  }
  header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
    display: none;
  }
  header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
  header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
    align-items: flex-start;
    text-align: left;
  }
}

/* Mouse and touch do not need a focus ring; keyboard navigation does. */
:where(a, button, summary, input[type="button"], input[type="submit"], input[type="reset"], input[type="range"], [role="button"], [role="link"], [tabindex]):focus:not(:focus-visible) {
  outline: none !important;
  box-shadow: none !important;
}
:where(a, button, summary, label, input, select, textarea, [role="button"], [role="link"], [tabindex]) {
  -webkit-tap-highlight-color: transparent;
}
:where(a, button, summary, input[type="button"], input[type="submit"], input[type="reset"], input[type="range"], [role="button"], [role="link"], [tabindex]):focus-visible {
  outline: 2px solid var(--wp--preset--color--accent-1);
  outline-offset: 3px;
  border-radius: 3px;
}

/* Fotografie na hlavní stránce: vyplnění rámu a čitelné zaoblení. */
.malo-veda-obrazek {
  overflow: hidden;
  border-radius: 32px 16px;
  margin: 0;
}
.malo-veda-obrazek img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.malo-pro-arch-kolaz figure {
  overflow: hidden;
  border-radius: 18px !important;
}
.malo-pro-arch-kolaz img {
  display: block;
  width: 100% !important;
  aspect-ratio: 4 / 3;
  object-fit: cover !important;
}

@media (min-width: 1360px) {
  .malo-mobile-menu-item,
  .malo-mobile-menu-jazyky { display: none !important; }
}

@media (max-width: 781px) {
  header.wp-block-group > .wp-block-group:first-child { display: none; }
  header.wp-block-group > .wp-block-group:nth-child(2) > .wp-block-group.alignwide {
    flex-direction: row;
    flex-wrap: nowrap;
    justify-content: space-between;
  }
  header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
  header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
    align-items: flex-start;
    text-align: left;
  }
  header .malo-mobile-menu-jazyky {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    list-style: none;
    margin: 1rem 0 0;
    padding: 0;
  }
  header .malo-mobile-menu-jazyky li { margin: 0; }

  .malo-domu-hero .wp-block-group.has-custom-css {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  .malo-karta-lekare { overflow: hidden; }
  .malo-karta-lekare > .wp-block-column:first-child > .wp-block-image,
  .malo-karta-lekare > .wp-block-column:first-child > .wp-block-image img {
    border-radius: 32px 32px 0 0 !important;
  }
  .malo-partnerstvi-hlavicka .wp-block-buttons {
    justify-content: flex-start !important;
  }
  .malo-sekce-formular.wp-block-cover { padding-top: 0 !important; }
  .malo-sekce-formular .wp-block-cover__inner-container { margin-top: 30px; }
}

@media (max-width: 1359px) {
  header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
    width: 100%;
    align-items: flex-start !important;
  }
  header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item,
  header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .malo-mobile-menu-jazyky {
    align-self: flex-start;
    align-items: flex-start !important;
    text-align: left;
  }
}

.malo-straumann-fotografie .wp-block-image img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 18px;
}

@media (max-width: 781px) {
  .malo-objednani-hero.wp-block-cover { padding-top: 0 !important; }
  .malo-objednani-hero .wp-block-cover__inner-container { margin-top: 30px; }
}

/* Photo heroes follow the home page on phones: image against the header,
   then breathing room before the heading and call to action. */
@media (max-width: 781px) {
  body:not(.home) main .wp-block-cover:has(> img.wp-block-cover__image-background):has(h1) {
    padding-top: 0 !important;
  }
  body:not(.home) main .wp-block-cover:has(> img.wp-block-cover__image-background):has(h1) > .wp-block-cover__inner-container {
    margin-top: 30px !important;
  }
}

/* Hlavička se při posunu dolů schová a při posunu nahoru vrátí. */
body > .wp-site-blocks > .malo-scroll-header {
  position: sticky;
  top: calc(var(--malo-admin-offset, 0px) - var(--malo-topbar-height, 0px));
  z-index: 1000;
  transition: transform 180ms ease;
}
.malo-scroll-header.is-scroll-hidden {
  transform: translateY(calc(-100% - var(--malo-admin-offset, 0px)));
  pointer-events: none;
}
.malo-scroll-header:has(:focus-visible),
.malo-scroll-header:has(.is-menu-open) {
  transform: none;
  pointer-events: auto;
}
@media (prefers-reduced-motion: reduce) {
  body > .wp-site-blocks > .malo-scroll-header { transition: none; }
}
@media print {
  body > .wp-site-blocks > .malo-scroll-header { position: static; transform: none; }
}

@media (max-width: 781px) {
  header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container > .wp-block-navigation-item {
    align-items: flex-start !important;
    text-align: left;
  }
  * { -webkit-tap-highlight-color: transparent; }
}

/* Rychlé kontakty a jazyky na začátku mobilního menu. */
@media (max-width: 1359px) {
  header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .malo-mobile-menu-item {
    width: min(100%, 28rem);
    align-self: flex-start;
  }
  header .wp-block-navigation__responsive-container.is-menu-open .malo-mobile-menu-item > a {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    min-height: 48px;
    padding: 12px 16px;
    border-radius: 12px;
    text-decoration: none;
    font-weight: 700;
    line-height: 1.3;
  }
  header .malo-mobile-menu-phone > a {
    background: var(--wp--preset--color--contrast);
    color: var(--wp--preset--color--base) !important;
  }
  header .malo-mobile-menu-email > a {
    border: 1px solid var(--wp--preset--color--accent-9);
    background: var(--wp--preset--color--accent-10);
    color: var(--wp--preset--color--contrast) !important;
  }
  header .malo-mobile-menu-item > a::before {
    content: "";
    display: block;
    flex: 0 0 20px;
    width: 20px;
    height: 20px;
    background: currentColor;
    -webkit-mask: url("assets/icons/phone.svg") center / contain no-repeat;
    mask: url("assets/icons/phone.svg") center / contain no-repeat;
  }
  header .malo-mobile-menu-email > a::before {
    -webkit-mask-image: url("assets/icons/mail.svg");
    mask-image: url("assets/icons/mail.svg");
  }
  header .malo-mobile-menu-jazyky {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    width: 100%;
    max-width: 28rem;
    margin: 0 0 10px !important;
    padding: 0 0 20px !important;
    border-bottom: 1px solid var(--wp--preset--color--accent-9);
  }
  header .malo-mobile-menu-jazyky a {
    display: inline-flex;
    padding: 8px 12px;
    border-radius: 8px;
    color: var(--wp--preset--color--contrast);
    text-decoration: none;
  }
  header .malo-mobile-menu-jazyky .current-lang a {
    background: var(--wp--preset--color--accent-10);
    font-weight: 700;
  }
}

@media (max-width: 1359px) {
  header .wp-block-navigation__responsive-container.is-menu-open .malo-mobile-menu-jazyky {
    box-sizing: border-box;
    align-self: stretch !important;
    width: 100% !important;
  }
}

@media (max-width: 1359px) {
  header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > nav:has(.malo-mobile-menu-jazyky) {
    align-self: stretch;
    width: 100%;
  }
}

/* Sjednocené kontaktní karty: dvě informace a samostatná adresa s akcemi. */
.malo-kontakt-karty > .wp-block-columns > .wp-block-column > .malo-kontakt-karta {
  box-sizing: border-box;
  height: 100%;
}
.malo-kontakt-karta a {
  overflow-wrap: anywhere;
}
.malo-kontakt-adresa .wp-block-buttons {
  justify-content: flex-end;
}
@media (max-width: 781px) {
  .malo-kontakt-adresa .wp-block-buttons {
    justify-content: flex-start;
  }
}

/* FAQ: narrow content, left-aligned text, native exclusive accordion. */
.wp-block-group.malo-faq {
  box-sizing: border-box;
  max-width: var(--wp--style--global--content-size, 800px) !important;
  margin-inline: auto !important;
  text-align: left;
}
.malo-faq > .wp-block-heading {
  margin-bottom: 24px;
  text-align: left;
}
.malo-faq > .wp-block-details {
  margin-block: 0;
  border-bottom: 1px solid var(--wp--preset--color--accent-3);
}
.malo-faq > .wp-block-details:first-of-type {
  border-top: 1px solid var(--wp--preset--color--accent-3);
}
.malo-faq > .wp-block-details > summary {
  position: relative;
  display: block;
  padding: 24px 48px 24px 0;
  color: var(--wp--preset--color--contrast);
  font-weight: 700;
  line-height: 1.4;
  text-align: left;
  list-style: none;
  cursor: pointer;
}
.malo-faq > .wp-block-details > summary::-webkit-details-marker {
  display: none;
}
.malo-faq > .wp-block-details > summary::before,
.malo-faq > .wp-block-details > summary::after {
  content: "";
  position: absolute;
  right: 8px;
  top: 50%;
  width: 16px;
  height: 2px;
  background: currentColor;
  transform: translateY(-50%);
}
.malo-faq > .wp-block-details > summary::after {
  transform: translateY(-50%) rotate(90deg);
}
.malo-faq > .wp-block-details[open] > summary::after {
  display: none;
}
.malo-faq > .wp-block-details > summary:hover {
  color: var(--wp--preset--color--accent-1);
}
.malo-faq > .wp-block-details > summary:focus-visible {
  outline: 2px solid var(--wp--preset--color--accent-1);
  outline-offset: 4px;
}
.malo-faq > .wp-block-details > :not(summary) {
  margin-block: 0 24px;
  padding-right: 40px;
  text-align: left;
}
@media (max-width: 600px) {
  .malo-faq > .wp-block-details > summary {
    padding-block: 20px;
  }
  .malo-faq > .wp-block-details > :not(summary) {
    padding-right: 0;
  }
}

/* У Be Vietnam Pro нет кириллицы: русская и украинская версии целиком на Manrope (15.10.2026). */
html:lang(ru),
html:lang(uk) {
  --wp--preset--font-family--be-vietnam-pro: var(--wp--preset--font-family--manrope);
}

/* Dlouhá slova v nadpisech nesmí vytlačit stránku do šířky (22.10.2026: „Behandlungsschwerpunkte“ na iPhone o 6 px).
   Němčina se dělí podle slabik, ostatní jazyky zalomí slovo jen tehdy, když se nevejde. */
h1, h2, h3, h4, h5, h6 {
  overflow-wrap: break-word;
}
html:lang(de) :is(h1, h2, h3, h4, h5, h6) {
  -webkit-hyphens: auto;
  hyphens: auto;
}
