/* ============================================================
   HLAVNÍ NAVIGACE — catalogue/views/parts/nav.php, logika js/nav.js
   Rozhodnutí: devnotes/decisions.md 2026-10-09 "Megamenu".

   Vlevo katalog (co vydáváme), vpravo SaaS (co prodáváme) + jediné CTA.
   Karta: bílá na neutral-50, zvýrazněný sloupec neutral-100 (Ramp).
   Jen neutrální paleta — menu je produkt, ne "ruka redakce" (bez teplého/jantaru).
   Pohyb: karta se vysune 8 px pod lištou, výška se plynule mění mezi panely,
   obsah se prolíná se směrovým posunem; reduced motion = jen průhlednost.
   ============================================================ */

:root {
  --nv-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --nv-ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
  --nv-ink: #171717;
  --nv-text: #525252;
  --nv-muted: #737373;
  --nv-hover: #f5f5f5;
  --nv-hair: rgba(10, 10, 10, 0.08);
}

/* ── Lišta při scrollu (dřív v catalog.css / projekt.js) ───── */
#nav { transition: background-color 0.3s ease, backdrop-filter 0.3s ease, box-shadow 0.3s ease; }
#nav.nav-scrolled {
  background-color: rgba(255, 255, 255, 0.82);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  box-shadow: 0 1px 0 0 rgba(10, 10, 10, 0.10);
}
/* Otevřené menu: lišta plná, ať karta pod ní nemá průsvitný přechod */
#nav.is-menu-open { background-color: #fafafa; -webkit-backdrop-filter: none; backdrop-filter: none; }
#nav.is-menu-open.nav-scrolled { background-color: #fff; }

.nav-hamburger.open span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.nav-hamburger.open span:nth-child(2) { opacity: 0; }
.nav-hamburger.open span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }


/* ── LIŠTA NAD MENU ───────────────────────────────────────── */
/* Hlas Urbanlistu: teplý písek (decisions.md 2026-10-12), tmavý štítek dává kontrast,
   odkaz v jantarovém inkoustu. Víc zpráv leží v jedné buňce gridu → lišta má výšku
   nejdelší z nich a při střídání neskáče. Tempo dává průběh na aktivní tečce:
   CSS animace (pauza při hoveru/fokusu/skrytém tabu), její konec posune zprávu (js/nav.js). */
.nv-bar {
  --nv-bar-interval: 7s;
  position: relative;
  overflow: hidden;
  background: var(--ul-warm, #f4f0e9);
  color: #262626;
}
.nv-bar-inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  column-gap: 0.5rem;
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 0.5rem 0 1.5rem;
}
.nv-bar-track { display: grid; overflow: hidden; }
.nv-bar-msg {
  grid-area: 1 / 1;
  align-self: center;
  margin: 0;
  padding: 0.625rem 0;
  font-size: 0.8125rem;
  line-height: 1.5;
  text-wrap: pretty;
  opacity: 0;
  visibility: hidden;
  transform: translateY(65%);
}
.nv-bar-msg.is-active {
  opacity: 1;
  visibility: visible;
  transform: none;
  transition: transform 420ms var(--nv-ease-out), opacity 320ms ease-out;
}
.nv-bar-msg.is-leaving {
  opacity: 0;
  visibility: visible;
  transform: translateY(-65%);
  transition: transform 420ms var(--nv-ease-out), opacity 220ms ease-in;
}
.nv-bar-label {
  display: inline-block;
  margin-right: 0.25rem;            /* + mezera z HTML */
  padding: 0.3125rem 0.4375rem;
  border-radius: 5px;
  background: var(--ul-amber, #fbbf24);   /* jantar = drobná značka hlasu Urbanlistu (decisions.md 2026-10-12) */
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.01em;
  color: #1c1917;                         /* 11 : 1 na amber-400 */
  vertical-align: 1px;
}
.nv-bar-link {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-weight: 600;                 /* odstup dělá mezera z HTML: na začátku zalomeného řádku zmizí */
  color: var(--ul-amber-ink, #92400e);
  white-space: nowrap;
  text-decoration: underline;
  text-decoration-color: rgba(146, 64, 14, 0.35);
  text-decoration-thickness: 1px;
  text-underline-offset: 0.25em;
  transition: color 150ms ease, text-decoration-color 150ms ease;
  -webkit-tap-highlight-color: transparent;
}
.nv-bar-arrow { width: 0.875rem; height: 0.875rem; transition: transform 200ms var(--nv-ease-out); }

.nv-bar-controls { display: flex; align-items: center; }
.nv-bar-dots { display: flex; align-items: center; }
.nv-bar-dot {
  display: grid;
  place-items: center;
  width: 1rem;
  height: 1.5rem;
  -webkit-tap-highlight-color: transparent;
}
.nv-bar-dot-fill {
  position: relative;
  overflow: hidden;
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: rgba(38, 38, 38, 0.22);
  transition: width 300ms var(--nv-ease-out), background-color 200ms ease;
}
.nv-bar-dot[aria-current="true"] .nv-bar-dot-fill { width: 18px; background: rgba(38, 38, 38, 0.16); }
.nv-bar-dot[aria-current="true"] .nv-bar-dot-fill::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: #262626;
  transform-origin: left;
  animation: nv-bar-progress var(--nv-bar-interval) linear forwards;
}
.nv-bar:hover .nv-bar-dot-fill::after,
.nv-bar:has(:focus-visible) .nv-bar-dot-fill::after,
.nv-bar.is-paused .nv-bar-dot-fill::after { animation-play-state: paused; }
@keyframes nv-bar-progress { from { transform: scaleX(0); } to { transform: scaleX(1); } }

.nv-bar-close {
  position: relative;
  display: grid;
  place-items: center;
  width: 2rem;
  height: 2rem;
  border-radius: 999px;
  color: #57534e;
  transition: background-color 150ms ease, color 150ms ease;
  -webkit-tap-highlight-color: transparent;
}
.nv-bar-close::after { content: ''; position: absolute; inset: -0.375rem; } /* dotyk 44 px */
.nv-bar-x { width: 1rem; height: 1rem; }
.nv-bar-close:focus-visible,
.nv-bar-dot:focus-visible,
.nv-bar-link:focus-visible { outline: 2px solid #0a0a0a; outline-offset: 2px; border-radius: 4px; }

.nv-bar[hidden] { display: none; }
.nv-bar-x--up { transform: rotate(180deg); }   /* šipka nahoru = sbalit (ne zavřít) */

/* ── ŠTÍTEK NOVINEK vedle loga + karta ───────────────────── */
/* Stejný jantarový štítek jako v liště → návštěvník ho pozná jako novinky. Ukáže se, když je
   lišta sbalená (klik) nebo odscrollovaná pryč; nahoře stránky ho zase nahradí lišta. */
.nv-news-chip {
  position: relative;
  z-index: 10;
  display: inline-flex;
  flex-shrink: 0;
  align-items: center;
  height: 1.375rem;
  margin-left: 0.75rem;
  padding: 0 0.4375rem;
  border-radius: 5px;
  background: var(--ul-amber, #fbbf24);
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.01em;
  color: #1c1917;
  white-space: nowrap;
  cursor: pointer;
  transition: box-shadow 150ms ease, transform 150ms ease;
  -webkit-tap-highlight-color: transparent;
}
.nv-news-chip::after { content: ''; position: absolute; inset: -0.6875rem -0.375rem; } /* dotyk 44 px */
.nv-news-chip[hidden] { display: none; }
.nv-news-chip[aria-expanded="true"] { box-shadow: inset 0 0 0 1.5px rgba(28, 25, 23, 0.55); }
/* Dvojitý kroužek: vidět na světlé liště i přes tmavý hero /pro-developery */
.nv-news-chip:focus-visible { outline: none; box-shadow: 0 0 0 2px #fff, 0 0 0 4px #0a0a0a; }
.nv-news-chip:active { transform: scale(0.95); }
@media (hover: hover) and (pointer: fine) {
  .nv-news-chip:hover { box-shadow: inset 0 0 0 1.5px rgba(28, 25, 23, 0.35); }
}

/* Karta: v liště menu (sticky), pod štítkem; desktop zarovnaná s logem, mobil na šířku */
.nv-news {
  position: absolute;
  inset: 100% 0 auto 0;
  z-index: 1;
  padding-top: 0.5rem;
  pointer-events: none;
}
.nv-news[hidden] { display: none; }
.nv-news-wrap { display: flex; }
.nv-news-card {
  width: 100%;
  padding: 1.125rem 1.25rem 1.25rem;
  border-radius: 14px;
  background: var(--ul-warm, #f4f0e9);
  box-shadow:
    0 0 0 1px rgba(120, 53, 15, 0.08),
    0 8px 16px -8px rgba(10, 10, 10, 0.10),
    0 28px 56px -20px rgba(10, 10, 10, 0.22);
  color: #262626;
  pointer-events: auto;
  transform-origin: 1.5rem 0;
  animation: nv-news-in 220ms var(--nv-ease-out);
}
.nv-news.is-closing .nv-news-card { animation: nv-news-out 140ms ease-in forwards; }
@keyframes nv-news-in  { from { opacity: 0; transform: translateY(-4px) scale(0.98); } }
@keyframes nv-news-out { to   { opacity: 0; transform: translateY(-4px) scale(0.98); } }
@media (min-width: 640px) { .nv-news-card { width: 26rem; } }

/* Štítek nad textem, text a odkaz pod ním: text každé zprávy začíná na stejné hraně,
   ať je štítek jakkoli dlouhý (Jan: „text tančí“) */
.nv-news-list { display: grid; gap: 1.125rem; margin: 0; padding: 0; list-style: none; }
.nv-news-item { display: flex; flex-direction: column; align-items: flex-start; }
.nv-news-label { margin: 0 0 0.5rem; vertical-align: 0; }
.nv-news-text { margin: 0; font-size: 0.875rem; line-height: 1.5; color: #262626; text-wrap: pretty; }
.nv-news-item .nv-news-link { margin: 0.25rem 0 0; font-size: 0.875rem; }   /* bez odsazení z lišty: odkaz na stejné hraně jako text */

/* Desktop: zpráva na střed stránky, ovládání vpravo (levý sloupec drží symetrii) */
@media (min-width: 768px) {
  .nv-bar-inner {
    grid-template-columns: minmax(6.5rem, 1fr) minmax(0, auto) minmax(6.5rem, 1fr);
    padding-inline: 1.5rem 0.75rem;
  }
  .nv-bar-track { grid-column: 2; text-align: center; }
  .nv-bar-link { margin-left: 0.25rem; }
  .nv-bar-dot { width: 1.375rem; }
  .nv-bar-controls { grid-column: 3; justify-self: end; }
  .nv-bar-msg { font-size: 0.875rem; }
}
@media (hover: hover) and (pointer: fine) {
  .nv-bar-link:hover { color: var(--ul-amber-ink-hover, #78350f); text-decoration-color: currentColor; }
  .nv-bar-link:hover .nv-bar-arrow { transform: translateX(2px); }
  .nv-bar-close:hover { background: rgba(120, 53, 15, 0.08); color: #1c1917; }
  .nv-bar-dot:hover .nv-bar-dot-fill { background: rgba(38, 38, 38, 0.4); }
}


/* ── LIŠTA MENU (desktop) ─────────────────────────────────── */
.nv-group { display: none; }
@media (min-width: 1024px) {
  .nv-group { display: flex; align-items: center; gap: 0.25rem; margin: 0; padding: 0; list-style: none; }
  #nav-items { margin-left: 2.25rem; }
  .nv-group--saas { margin-left: auto; gap: 1.25rem; }
  .nv-group--saas > .nv-group { gap: 0; }
}

.nv-item { position: relative; display: flex; align-items: center; height: 4rem; }
.nv-top {
  padding: 0.5rem 0.125rem 0.5rem 0.625rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--nv-text);
  transition: color 150ms ease;
  -webkit-tap-highlight-color: transparent;
}
.nv-top.is-current,
.nv-item.is-open .nv-top { color: var(--nv-ink); }
.nv-chev {
  display: grid;
  place-items: center;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 6px;
  color: #a3a3a3;
  transition: color 150ms ease;
  -webkit-tap-highlight-color: transparent;
}
.nv-chev-icon { width: 0.875rem; height: 0.875rem; transition: transform 240ms var(--nv-ease-out); }
.nv-chev[aria-expanded="true"] { color: var(--nv-ink); }
.nv-chev[aria-expanded="true"] .nv-chev-icon { transform: rotate(180deg); }
.nv-login {
  padding: 0.5rem 0.25rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--nv-text);
  transition: color 150ms ease;
}
.nv-top:focus-visible,
.nv-chev:focus-visible,
.nv-login:focus-visible { outline: 2px solid #0a0a0a; outline-offset: 2px; border-radius: 6px; }
@media (hover: hover) and (pointer: fine) {
  .nv-top:hover, .nv-login:hover { color: var(--nv-ink); }
  .nv-item:hover .nv-chev { color: var(--nv-text); }
}


/* ── KARTA ────────────────────────────────────────────────── */
.nv-drop {
  position: absolute;
  inset: 100% 0 auto 0;
  padding-top: 0.5rem;              /* most pro kurzor mezi lištou a kartou */
  visibility: hidden;
  pointer-events: none;
  transition: visibility 0s linear 200ms;
}
.nv-drop.is-open { visibility: visible; pointer-events: auto; transition-delay: 0s; }
@media (max-width: 1023px) { .nv-drop { display: none; } }

.nv-card {
  display: grid;
  overflow: hidden;
  border-radius: 16px;
  background: #fff;
  box-shadow:
    0 0 0 1px rgba(10, 10, 10, 0.06),
    0 8px 16px -8px rgba(10, 10, 10, 0.08),
    0 28px 56px -20px rgba(10, 10, 10, 0.20);
  opacity: 0;
  transform: translateY(-6px) scale(0.99);
  transform-origin: 50% 0;
  transition:
    opacity 160ms ease-in,
    transform 200ms ease-in,
    height 300ms var(--nv-ease-drawer);
}
.nv-drop.is-open .nv-card {
  opacity: 1;
  transform: none;
  transition:
    opacity 200ms ease-out,
    transform 320ms var(--nv-ease-out),
    height 300ms var(--nv-ease-drawer);
}
.nv-card.no-height-anim { transition-property: opacity, transform !important; }

/* Panely leží na sobě (grid 1/1); aktivní určuje výšku karty (js/nav.js) */
.nv-panel {
  grid-area: 1 / 1;
  align-self: start;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 19.5rem;
  opacity: 0;
  visibility: hidden;
  transition: opacity 120ms ease, visibility 0s linear 120ms;
}
.nv-panel.is-active {
  opacity: 1;
  visibility: visible;
  transition: opacity 220ms ease-out 60ms, visibility 0s;
}
/* Zavřená karta: aktivní panel dobledne s kartou, pak zmizí i z pořadí Tab */
.nv-drop:not(.is-open) .nv-panel.is-active { visibility: hidden; transition: visibility 0s linear 200ms; }
.nv-panel-main {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2rem;
  align-content: start;
  padding: 1.75rem 1.75rem 2rem;
}
@media (min-width: 1280px) { .nv-panel-main { gap: 3rem; padding-inline: 2rem; } }

.nv-label {
  margin: 0 0 0.375rem;
  padding-inline: 0.75rem;
  font-size: 0.8125rem;
  font-weight: 500;
  line-height: 1.4;
  color: var(--nv-muted);
}
.nv-list { display: grid; gap: 0.125rem; margin: 0; padding: 0; list-style: none; }

/* Řádek: dlaždice s ikonou + titulek nad krátkým řádkem */
.nv-row {
  display: flex;
  align-items: center;
  gap: 0.875rem;
  padding: 0.625rem 0.75rem;
  border-radius: 12px;
  transition: background-color 150ms ease, transform 120ms ease;
  -webkit-tap-highlight-color: transparent;
}
.nv-tile {
  display: grid;
  flex-shrink: 0;
  place-items: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 10px;
  background: var(--nv-hover);
  color: #404040;
  transition: background-color 150ms ease, color 150ms ease;
}
.nv-icon { width: 1.125rem; height: 1.125rem; }
.nv-row-text { display: flex; min-width: 0; flex-direction: column; }
.nv-row-title { font-size: 0.875rem; font-weight: 500; line-height: 1.35; color: var(--nv-ink); }
.nv-row-desc { font-size: 0.8125rem; line-height: 1.4; color: var(--nv-muted); }
.nv-row:focus-visible { outline: 2px solid #0a0a0a; outline-offset: -2px; }
.nv-row:active { transform: scale(0.985); }
@media (hover: hover) and (pointer: fine) {
  .nv-row:hover { background: var(--nv-hover); }
  .nv-row:hover .nv-tile { background: #0a0a0a; color: #fff; }
}
.nv-row:focus-visible .nv-tile { background: #0a0a0a; color: #fff; }

/* Témata článků: holé odkazy ve dvou sloupcích */
.nv-topics {
  display: grid;
  grid-template-columns: repeat(2, max-content);
  column-gap: 1.5rem;
  row-gap: 0.125rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.nv-topic {
  display: block;
  padding: 0.5rem 0.75rem;
  border-radius: 8px;
  font-size: 0.875rem;
  line-height: 1.4;
  color: #404040;
  transition: background-color 150ms ease, color 150ms ease;
}
.nv-topic:focus-visible { outline: 2px solid #0a0a0a; outline-offset: -2px; }
@media (hover: hover) and (pointer: fine) {
  .nv-topic:hover { background: var(--nv-hover); color: var(--nv-ink); }
}

/* Zvýrazněný sloupec */
.nv-feature {
  display: flex;
  flex-direction: column;
  align-self: stretch;
  padding: 1.75rem 1.75rem 2rem;
  background: #f5f5f5;
}
.nv-feature .nv-label { padding-inline: 0; margin-bottom: 0.75rem; }
.nv-feature-link { display: flex; flex-direction: column; -webkit-tap-highlight-color: transparent; }
.nv-feature-link:focus-visible { outline: 2px solid #0a0a0a; outline-offset: 4px; border-radius: 10px; }
.nv-feature-media {
  display: block;
  overflow: hidden;
  border-radius: 10px;
  background: #e5e5e5;
  aspect-ratio: 3 / 2;
}
.nv-feature-media--wide { aspect-ratio: 16 / 9; }
.nv-feature-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 700ms var(--nv-ease-out);
}
.nv-feature-title {
  display: block;
  margin-top: 0.875rem;
  font-size: 1.0625rem;
  /* vlastní podtržení: .ed-link má v projekt-editorial.css jiný (trvalý) význam */
  text-decoration-line: underline;
  text-decoration-color: transparent;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
  transition: text-decoration-color 150ms ease;
}
.nv-feature-meta { margin-top: 0.25rem; font-size: 0.8125rem; line-height: 1.4; color: var(--nv-muted); }
@media (hover: hover) and (pointer: fine) {
  .nv-feature-link:hover .nv-feature-media img { transform: scale(1.03); }
  .nv-feature-link:hover .nv-feature-title { text-decoration-color: #a3a3a3; }
}

/* Pomoc s výběrem (vzor "Need assist?"): obrázek, otázka, jeden tichý odkaz */
.nv-feature--assist .nv-feature-media { margin-bottom: 1rem; background: #ebebeb; }
.nv-assist-title { font-size: 0.9375rem; font-weight: 600; line-height: 1.35; color: var(--nv-ink); }
.nv-assist-text { margin-top: 0.25rem; font-size: 0.8125rem; line-height: 1.5; color: var(--nv-text); text-wrap: pretty; }
.nv-assist-link {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  align-self: flex-start;
  margin-top: 0.75rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--nv-ink);
  text-decoration: underline;
  text-decoration-color: #a3a3a3;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.3em;
}
.nv-assist-arrow { width: 0.875rem; height: 0.875rem; transition: transform 200ms var(--nv-ease-out); }
.nv-assist-link:focus-visible { outline: 2px solid #0a0a0a; outline-offset: 3px; border-radius: 4px; }
@media (hover: hover) and (pointer: fine) {
  .nv-assist-link:hover { text-decoration-color: currentColor; }
  .nv-assist-link:hover .nv-assist-arrow { transform: translateX(2px); }
}

/* Ztlumení stránky pod kartou */
.nv-scrim {
  position: fixed;
  inset: 0;
  z-index: 40;
  background: rgba(10, 10, 10, 0.08);
  opacity: 0;
  pointer-events: none;
  transition: opacity 200ms ease;
}
.nv-scrim.is-visible { opacity: 1; pointer-events: auto; }
@media (max-width: 1023px) { .nv-scrim { display: none; } }


/* ── MOBIL: celoobrazovkové menu ─────────────────────────── */
.nv-sheet {
  position: fixed;
  inset: var(--nv-sheet-top, 4rem) 0 0 0;
  z-index: 45;
  display: flex;
  flex-direction: column;
  background: #fafafa;
  opacity: 0;
  transition: opacity 240ms ease;
}
.nv-sheet[hidden] { display: none; }
.nv-sheet.is-open { opacity: 1; }
@media (min-width: 1024px) { .nv-sheet { display: none !important; } }

.nv-sheet-scroll {
  flex: 1;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 1.5rem 1.5rem 2rem;
}
.nv-sheet-block { transform: translateY(8px); opacity: 0; transition: transform 420ms var(--nv-ease-out), opacity 300ms ease; }
.nv-sheet.is-open .nv-sheet-block { transform: none; opacity: 1; }
.nv-sheet.is-open .nv-sheet-block + .nv-sheet-block { transition-delay: 60ms; }
.nv-sheet-block + .nv-sheet-block { margin-top: 2rem; }
.nv-sheet-block > .nv-label { padding-inline: 0; }

.nv-sheet-links { margin: 0; padding: 0; list-style: none; }
.nv-big {
  display: block;
  padding: 0.375rem 0;
  font-size: 1.625rem;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: var(--nv-ink);
  -webkit-tap-highlight-color: transparent;
}
.nv-big:active { color: var(--nv-muted); }
.nv-sheet-minor { display: flex; flex-wrap: wrap; column-gap: 1.25rem; margin-top: 0.5rem; }
.nv-sheet-minor a {
  display: inline-flex;
  align-items: center;
  min-height: 2.75rem;
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--nv-text);
}
.nv-sheet-new {
  display: flex;
  align-items: center;
  gap: 0.875rem;
  margin-top: 0.75rem;
  -webkit-tap-highlight-color: transparent;
}
.nv-sheet-new .nv-row-title { font-size: 0.9375rem; }
.nv-sheet-thumb {
  display: block;
  flex-shrink: 0;
  overflow: hidden;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 10px;
  background: #e5e5e5;
}
.nv-sheet-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }

/* SaaS jako tónovaná karta: odlišený svět, stejné řádky jako na desktopu */
.nv-sheet-card { padding: 1rem 0.5rem 0.5rem; border-radius: 16px; background: #f0f0f0; }
.nv-sheet-card .nv-tile { background: #fff; }
.nv-sheet-card .nv-row:active { background: #e5e5e5; }
.nv-sheet-card-head {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  min-height: 2.75rem;
  padding: 0 0.75rem;
  font-size: 1.125rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--nv-ink);
}
.nv-sheet-card .nv-row-title { font-size: 0.9375rem; }
.nv-sheet-assist { padding: 0.75rem 0.75rem 0.5rem; font-size: 0.875rem; line-height: 1.5; color: var(--nv-text); }
.nv-sheet-assist a { font-weight: 500; color: var(--nv-ink); text-decoration: underline; text-decoration-color: #a3a3a3; text-underline-offset: 0.25em; }

.nv-sheet-cta {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr);
  gap: 0.625rem;
  padding: 0.75rem 1.5rem calc(0.75rem + env(safe-area-inset-bottom));
  border-top: 1px solid var(--nv-hair);
  background: rgba(250, 250, 250, 0.94);
}
.nv-sheet-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 3rem;
  border: 1px solid #e5e5e5;
  border-radius: 0.5rem;
  background: #fff;
  font-size: 0.9375rem;
  font-weight: 600;
  color: #404040;
  -webkit-tap-highlight-color: transparent;
}
.nv-sheet-btn--solid { border-color: #0a0a0a; background: #0a0a0a; color: #fff; }
.nv-sheet-btn:active { transform: scale(0.98); }


/* ── DIALOG: Chci projekt v katalogu ─────────────────────── */
.nv-dialog {
  width: min(28rem, calc(100vw - 2rem));
  max-width: none;
  max-height: calc(100dvh - 2rem);
  margin: auto;
  padding: 0;
  border: 0;
  background: transparent;
  overflow: visible;
}
.nv-dialog::backdrop {
  background: rgba(10, 10, 10, 0.4);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
.nv-dialog[open] { animation: nv-fade-in 200ms ease-out; }
.nv-dialog[open]::backdrop { animation: nv-fade-in 200ms ease-out; }
.nv-dialog[open] .nv-dialog-panel { animation: nv-dialog-in 300ms var(--nv-ease-out); }
.nv-dialog.is-closing,
.nv-dialog.is-closing::backdrop { animation: nv-fade-out 160ms ease-in forwards; }
.nv-dialog.is-closing .nv-dialog-panel { animation: nv-dialog-out 160ms ease-in forwards; }
@keyframes nv-fade-in  { from { opacity: 0; } }
@keyframes nv-fade-out { to   { opacity: 0; } }
@keyframes nv-dialog-in  { from { opacity: 0; transform: translateY(10px) scale(0.98); } }
@keyframes nv-dialog-out { to   { opacity: 0; transform: translateY(6px) scale(0.985); } }

.nv-dialog-panel {
  position: relative;
  max-height: calc(100dvh - 2rem);
  overflow-y: auto;
  padding: 2rem 1.5rem 1.5rem;
  border-radius: 16px;
  background: #f5f5f5;
  box-shadow: 0 24px 48px -12px rgba(10, 10, 10, 0.25);
  color: var(--nv-ink);
}
@media (min-width: 640px) { .nv-dialog-panel { padding: 2rem; } }
.nv-dialog-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  display: grid;
  place-items: center;
  width: 2rem;
  height: 2rem;
  border-radius: 999px;
  color: #a3a3a3;
  transition: background-color 150ms ease, color 150ms ease;
}
.nv-dialog-close::after { content: ''; position: absolute; inset: -0.375rem; }
.nv-dialog-x { width: 1rem; height: 1rem; }
.nv-dialog-close:focus-visible { outline: 2px solid #0a0a0a; outline-offset: 2px; }
@media (hover: hover) and (pointer: fine) {
  .nv-dialog-close:hover { background: #e5e5e5; color: var(--nv-ink); }
}
.nv-dialog-title { padding-right: 2rem; font-size: 1.25rem; font-weight: 600; line-height: 1.3; letter-spacing: -0.015em; }
.nv-dialog-lead { margin-top: 0.375rem; font-size: 0.9375rem; line-height: 1.5; color: var(--nv-muted); text-wrap: pretty; }

.nv-form { margin-top: 1.5rem; }
.nv-field + .nv-field { margin-top: 1rem; }
.nv-field label { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.375rem; font-size: 0.875rem; font-weight: 500; color: #404040; }
.nv-field-opt { font-size: 0.75rem; font-weight: 400; color: #a3a3a3; }
.nv-field input {
  width: 100%;
  padding: 0.625rem 0.875rem;
  border: 1px solid #e5e5e5;
  border-radius: 0.5rem;
  background: #fafafa;
  font-size: 1rem;                /* 16 px: iOS při fokusu nezoomuje */
  color: var(--nv-ink);
  transition: border-color 150ms ease;
}
@media (min-width: 640px) { .nv-field input { font-size: 0.875rem; } }
.nv-field input::placeholder { color: #a3a3a3; }
.nv-field input:hover { border-color: #d4d4d4; }
.nv-field input:focus { outline: none; border-color: #737373; }
.nv-field input[aria-invalid="true"] { border-color: #f87171; }
.nv-form-error { margin-top: 0.75rem; font-size: 0.8125rem; line-height: 1.45; color: #dc2626; }
.nv-form-legal { margin-top: 1rem; font-size: 0.75rem; color: #a3a3a3; }
.nv-form-legal a { text-decoration: underline; }
.nv-form-submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 2.75rem;
  margin-top: 1rem;
  border-radius: 0.5rem;
  background: #0a0a0a;
  font-size: 0.875rem;
  font-weight: 600;
  color: #fff;
  transition: background-color 150ms ease, opacity 150ms ease;
}
.nv-form-submit:disabled { opacity: 0.6; cursor: progress; }
.nv-form-submit.nav-btn-ghost { border: 1px solid #e5e5e5; background: #fff; color: #404040; }
.nv-form-submit:focus-visible { outline: 2px solid #0a0a0a; outline-offset: 2px; }
@media (hover: hover) and (pointer: fine) {
  .nv-form-submit:not(.nav-btn-ghost):hover { background: #262626; }
  .nv-form-submit.nav-btn-ghost:hover { background: #f5f5f5; }
}
.nv-done-mark {
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  margin-bottom: 1rem;
  border-radius: 999px;
  background: #fff;
  color: var(--nv-ink);
}
.nv-done-icon { width: 1.375rem; height: 1.375rem; }


/* ── REDUCED MOTION: jen průhlednost ─────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .nv-card,
  .nv-drop.is-open .nv-card { transform: none; transition: opacity 160ms ease; }
  .nv-sheet-block { transform: none; transition: opacity 200ms ease; }
  .nv-chev-icon, .nv-bar-arrow, .nv-assist-arrow, .nv-feature-media img, .nv-row { transition: none; }
  .nv-bar-msg, .nv-bar-msg.is-active, .nv-bar-msg.is-leaving { transform: none; transition: opacity 200ms ease; }
  .nv-news-card { animation: nv-fade-in 160ms ease-out; }
  .nv-news.is-closing .nv-news-card { animation: nv-fade-out 120ms ease-in forwards; }
  .nv-news-chip:active { transform: none; }
  .nv-bar-dot[aria-current="true"] .nv-bar-dot-fill::after { animation: none; transform: none; } /* bez automatického střídání */
  .nv-row:active, .nv-sheet-btn:active { transform: none; }
  .nv-dialog[open] .nv-dialog-panel { animation: nv-fade-in 160ms ease-out; }
  .nv-dialog.is-closing .nv-dialog-panel { animation: nv-fade-out 120ms ease-in forwards; }
}
