/*
 * Komponenty veřejného webu platformy (PB3 3.1). Čisté CSS bez @apply — načítá se jen
 * v layout/public.html.twig vedle app.css (Tailwind utility třídy jsou v app.css).
 * Bez externích fontů, bez JS (hamburger = <details>), tmavý režim se nedělá (X3-18).
 */
:root {
    --web-brand: #1e40af;
    --web-brand-dark: #1e3a8a;
    --web-brand-soft: #eff6ff;
    --web-ink: #0f172a;
    --web-muted: #475569;
    --web-line: #e2e8f0;
    --web-bg-alt: #f8fafc;
}

.web-container { margin-inline: auto; max-width: 72rem; padding-inline: 1rem; }

/* --- Hlavička a navigace --- */
.web-header { position: sticky; top: 0; z-index: 30; background: #fff; border-bottom: 1px solid var(--web-line); }
.web-header-inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 4rem; }
.web-logo { display: inline-flex; align-items: center; gap: .5rem; color: var(--web-ink); font-weight: 600; text-decoration: none; white-space: nowrap; }
.web-logo:hover { text-decoration: none; }
.web-logo-mark { display: inline-flex; height: 2rem; width: 2rem; align-items: center; justify-content: center; border-radius: .375rem; background: var(--web-brand); color: #fff; }
.web-nav { display: none; align-items: center; gap: 1.25rem; font-size: .9rem; }
.web-nav a { color: var(--web-ink); text-decoration: none; padding-block: .5rem; }
.web-nav a:hover { color: var(--web-brand); text-decoration: underline; }
.web-nav a[aria-current="page"] { color: var(--web-brand); font-weight: 600; box-shadow: inset 0 -2px 0 var(--web-brand); }
.web-nav-actions { display: none; align-items: center; gap: .75rem; }

.web-menu { position: relative; }
.web-menu > summary { list-style: none; display: inline-flex; align-items: center; gap: .5rem; min-height: 2.75rem; min-width: 2.75rem; padding: .5rem .75rem; border-radius: .375rem; border: 1px solid var(--web-line); cursor: pointer; font-size: .9rem; color: var(--web-ink); }
.web-menu > summary::-webkit-details-marker { display: none; }
.web-menu > summary .web-menu-close { display: none; }
.web-menu[open] > summary .web-menu-open { display: none; }
.web-menu[open] > summary .web-menu-close { display: inline; }
.web-menu-panel { position: absolute; right: 0; top: calc(100% + .5rem); width: min(20rem, calc(100vw - 2rem)); background: #fff; border: 1px solid var(--web-line); border-radius: .5rem; box-shadow: 0 10px 30px rgba(15, 23, 42, .15); padding: .5rem; }
.web-menu-panel ul { list-style: none; margin: 0; padding: 0; }
.web-menu-panel li a { display: flex; align-items: center; min-height: 2.75rem; padding: .5rem .75rem; border-radius: .375rem; color: var(--web-ink); text-decoration: none; }
.web-menu-panel li a:hover { background: var(--web-bg-alt); }
.web-menu-panel li a[aria-current="page"] { background: var(--web-brand-soft); color: var(--web-brand); font-weight: 600; }
.web-menu-group { margin: .5rem .75rem .25rem; font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--web-muted); }
.web-menu-cta { display: grid; gap: .5rem; padding: .5rem .25rem .25rem; border-top: 1px solid var(--web-line); margin-top: .5rem; }

@media (min-width: 1024px) {
    .web-nav, .web-nav-actions { display: flex; }
    .web-menu { display: none; }
}

/* --- Hero a sekce --- */
.web-hero { background: linear-gradient(180deg, var(--web-brand-soft) 0%, #fff 100%); }
.web-hero-inner { padding-block: 3rem; }
.web-hero h1 { font-size: 2rem; line-height: 1.15; letter-spacing: -.02em; font-weight: 700; color: var(--web-ink); max-width: 46rem; }
.web-hero .web-lead { margin-top: 1.25rem; font-size: 1.125rem; color: var(--web-muted); max-width: 42rem; }
.web-eyebrow { display: inline-block; margin-bottom: .75rem; font-size: .8rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--web-brand); }
@media (min-width: 768px) {
    .web-hero-inner { padding-block: 5rem; }
    .web-hero h1 { font-size: 2.75rem; }
}
.web-section { padding-block: 3rem; }
.web-section-alt { background: var(--web-bg-alt); border-block: 1px solid var(--web-line); }
.web-section > .web-container > h2, .web-section-title { font-size: 1.5rem; font-weight: 700; letter-spacing: -.01em; }
.web-section-intro { margin-top: .5rem; color: var(--web-muted); max-width: 44rem; }

.web-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }
.web-btn-lg { min-height: 2.75rem; padding: .625rem 1.125rem; font-size: 1rem; }

/* --- Karty --- */
.web-grid { display: grid; gap: 1.25rem; margin-top: 2rem; }
@media (min-width: 768px) { .web-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .web-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .web-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.web-card { background: #fff; border: 1px solid var(--web-line); border-radius: .75rem; padding: 1.25rem; }
.web-card h3 { font-size: 1.05rem; font-weight: 600; }
.web-card p { margin-top: .5rem; font-size: .925rem; color: var(--web-muted); }
.web-card-link { display: block; color: inherit; text-decoration: none; transition: border-color .15s, box-shadow .15s; }
.web-card-link:hover { border-color: var(--web-brand); box-shadow: 0 4px 16px rgba(30, 64, 175, .12); text-decoration: none; }
.web-card-link .web-more { display: inline-block; margin-top: .75rem; font-size: .9rem; font-weight: 600; color: var(--web-brand); }
.web-check { list-style: none; padding: 0; margin-top: 1rem; display: grid; gap: .5rem; }
.web-check li { position: relative; padding-left: 1.75rem; font-size: .95rem; }
.web-check li::before { content: "✓"; position: absolute; left: 0; top: 0; display: inline-flex; width: 1.25rem; height: 1.25rem; align-items: center; justify-content: center; border-radius: 9999px; background: var(--web-brand-soft); color: var(--web-brand); font-size: .75rem; font-weight: 700; }

/* --- Kroky „jak to funguje“ --- */
.web-steps { counter-reset: step; list-style: none; padding: 0; display: grid; gap: 1.25rem; margin-top: 2rem; }
@media (min-width: 768px) { .web-steps { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.web-steps li { counter-increment: step; position: relative; padding-top: 2.75rem; }
.web-steps li::before { content: counter(step); position: absolute; left: 0; top: 0; width: 2.25rem; height: 2.25rem; border-radius: 9999px; background: var(--web-brand); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; }
.web-steps h3 { font-size: 1rem; font-weight: 600; }
.web-steps p { margin-top: .375rem; font-size: .925rem; color: var(--web-muted); }

/* --- Snímky obrazovky --- */
.web-shot { margin: 0; }
.web-shot img { display: block; width: 100%; height: auto; border-radius: .5rem; border: 1px solid var(--web-line); box-shadow: 0 12px 32px rgba(15, 23, 42, .12); background: #fff; }
.web-shot figcaption { margin-top: .625rem; font-size: .85rem; color: var(--web-muted); }
.web-split { display: grid; gap: 2rem; align-items: center; }
@media (min-width: 1024px) { .web-split { grid-template-columns: 5fr 7fr; } .web-split-reverse > :first-child { order: 2; } }

/* --- Srovnávací tabulka (desktop) / karty (mobil) --- */
.web-compare { margin-top: 2rem; }
.web-compare table { width: 100%; border-collapse: collapse; font-size: .925rem; }
.web-compare caption { text-align: left; font-weight: 600; padding-bottom: .5rem; }
.web-compare th, .web-compare td { border-bottom: 1px solid var(--web-line); padding: .75rem; text-align: left; vertical-align: top; background: none; }
.web-compare thead th { font-size: 1rem; color: var(--web-ink); }
.web-compare tbody th { font-weight: 500; color: var(--web-muted); }
.web-compare .web-price { font-size: 1.375rem; font-weight: 700; color: var(--web-ink); }
.web-compare-cards { display: grid; gap: 1rem; }
.web-compare-table { display: none; }
@media (min-width: 900px) { .web-compare-table { display: block; } .web-compare-cards { display: none; } }
.web-plan-card dl { margin-top: 1rem; display: grid; gap: .25rem; font-size: .925rem; }
.web-plan-card dl > div { display: flex; justify-content: space-between; gap: 1rem; border-bottom: 1px dashed var(--web-line); padding-block: .375rem; }
.web-plan-card dt { color: var(--web-muted); }
.web-plan-card dd { margin: 0; font-weight: 600; text-align: right; }

/* --- FAQ --- */
.web-faq { margin-top: 1.5rem; display: grid; gap: .75rem; max-width: 52rem; }
.web-faq details { background: #fff; border: 1px solid var(--web-line); border-radius: .5rem; }
.web-faq summary { cursor: pointer; padding: 1rem 1.25rem; font-weight: 600; list-style-position: outside; min-height: 2.75rem; }
.web-faq summary:hover { color: var(--web-brand); }
.web-faq details > p { padding: 0 1.25rem 1rem; color: var(--web-muted); }

/* --- CTA pruh --- */
.web-cta { background: var(--web-brand); color: #fff; }
.web-cta .web-container { padding-block: 2.5rem; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.25rem; }
.web-cta h2 { color: #fff; font-size: 1.375rem; font-weight: 700; }
.web-cta p { color: #dbeafe; margin-top: .25rem; }
.web-cta .btn-secondary { background: #fff; }
.web-cta .web-cta-link { color: #fff; text-decoration: underline; }

/* --- Štítky a poznámky --- */
.web-draft { display: flex; gap: .75rem; align-items: flex-start; border: 1px solid #f59e0b; background: #fffbeb; color: #78350f; border-radius: .5rem; padding: .75rem 1rem; font-size: .9rem; }
.web-placeholder { display: inline-block; border-radius: .25rem; background: #fef3c7; color: #78350f; padding: 0 .375rem; font-size: .85em; }
.web-prose h2 { margin-top: 2rem; font-size: 1.25rem; }
.web-prose h3 { margin-top: 1.25rem; }
.web-prose p, .web-prose ul, .web-prose ol { margin-top: .75rem; }
.web-prose ul { list-style: disc; padding-left: 1.5rem; }
.web-prose ol { list-style: decimal; padding-left: 1.5rem; }
.web-prose li + li { margin-top: .25rem; }

/* --- Patička --- */
.web-footer { margin-top: 4rem; border-top: 1px solid var(--web-line); background: var(--web-bg-alt); font-size: .875rem; color: var(--web-muted); }
.web-footer-grid { display: grid; gap: 2rem; padding-block: 2.5rem; }
@media (min-width: 768px) { .web-footer-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.web-footer h2 { font-size: .8rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--web-ink); }
.web-footer ul { list-style: none; padding: 0; margin-top: .75rem; display: grid; gap: .375rem; }
.web-footer a { color: var(--web-muted); }
.web-footer a:hover { color: var(--web-brand); }
.web-footer address { font-style: normal; margin-top: .75rem; line-height: 1.6; }
.web-footer-bottom { border-top: 1px solid var(--web-line); padding-block: 1rem; font-size: .8rem; }

@media (prefers-reduced-motion: reduce) {
    .web-card-link { transition: none; }
}
@media print {
    .web-header, .web-cta, .web-footer-grid { display: none; }
}
