/* =============================================================================
   article.v1.css — body typography for pages under /informace/
   =============================================================================
   Loaded IN ADDITION TO /styles.v2.css, never instead of it. styles.v2.css
   carries the shared chrome (.top-bar, .status-note, .section-contact,
   .footer-bar) and this file adds only what an article body needs.

   ⚠️ DO NOT copy shared rules in here. A second copy of the chrome is exactly
   the 0.8.0 bug class: two stylesheets drift, and the drift shows up as a
   layout defect that gets misdiagnosed as caching.

   ⚠️ Both sheets are served `no-cache` (see the html/css glob in sws.toml), so
   an article's FIRST load from search is not lighter than the homepage —
   it is styles.v2.css (~94 kB) plus this. Repeat visits are 304s. Someone
   will eventually claim articles are lightweight; they are not.

   The `.v1` suffix exists so a future cache-poisoning fix has an escape hatch
   without renaming the shared sheet. If you ever bump it, bump the <link> in
   EVERY page under /informace/.
   ============================================================================= */

/* ⚠️⚠️ NEVER WRITE THE TWO CHARACTERS  *  /  ADJACENT INSIDE A COMMENT HERE.
   This header originally quoted sws.toml's glob literally as `**''/*.{html,css}`.
   That contains the comment-terminator sequence, so the comment ENDED mid-word,
   the remaining prose was parsed as CSS garbage, and the parser discarded the
   entire NEXT rule while recovering — .crumbs vanished, breadcrumbs rendered
   full-bleed at x=0 against an article body starting at x=340, and every other
   rule in the file still worked so it read like a layout bug rather than a
   parse error. Refer to globs in words, never verbatim.
   ========================================================================== */

/* --- breadcrumb -----------------------------------------------------------
   ⚠️ max-width MUST match .article (760px). It was 900px, so the trail started
   70px to the left of the heading it belongs to — and because the rule above
   was being eaten by a broken comment it actually rendered full-bleed at x=0
   against a body starting at x=340. Keep the two in step. */
.crumbs {
    /* ⚠️ border-box REQUIRED: width:100% + padding under the default
       content-box overflows the viewport by exactly the horizontal padding.
       This stylesheet has no global reset (CLAUDE.md) — set it per rule. */
    box-sizing: border-box;
    /* ⚠️ width:100% is load-bearing. body is `display:flex; flex-direction:column`
       (the short-page footer rule at the end of this file), and in a flex
       container `margin: 0 auto` makes an item SHRINK-TO-FIT and centre on its
       own content width instead of stretching to max-width. Without this the
       trail centred on ~450px of text and sat 174px right of the article body.
       Same reason .related carries it. */
    width: 100%;
    max-width: 760px;
    margin: 0 auto;
    padding: 20px 20px 0;
    font-family: 'Nunito', sans-serif;
    font-size: 14px;
    line-height: 1.4;
}

.crumbs ol {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 2px 6px;
}

.crumbs li {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0;
}

/* Separator drawn by CSS, so it is never selected, copied or announced. */
.crumbs li + li::before {
    content: "›";
    color: #9aa5b0;
    font-size: 15px;
    line-height: 1;
}

.crumbs a {
    color: #5a6570;
    text-decoration: none;
    border-bottom: 1px solid transparent;
}

.crumbs a:hover,
.crumbs a:focus-visible {
    color: #11457E;
    border-bottom-color: #11457E;
}

.crumbs span[aria-current] {
    color: #16202a;
    font-weight: 700;
}

/* --- article shell -------------------------------------------------------- */
.article {
    /* ⚠️ border-box REQUIRED: width:100% + padding under the default
       content-box overflows the viewport by exactly the horizontal padding.
       This stylesheet has no global reset (CLAUDE.md) — set it per rule. */
    box-sizing: border-box;
    width: 100%;   /* see the note on .crumbs — flex item + auto margins */
    max-width: 760px;
    margin: 0 auto;
    padding: 8px 20px 48px;
    font-family: 'Nunito', sans-serif;
    color: #16202a;
}

.article h1 {
    font-size: 38px;
    line-height: 1.2;
    font-weight: 900;
    color: #11457E;
    margin: 20px 0 8px;
}

/* The dated line under the H1. Deliberately plain text, NOT a "last updated"
   badge — on a page whose sibling is an emergency contact page, a prominent
   date competes with the thing that matters. */
.article .meta {
    font-size: 15px;
    color: #5a6570;
    margin: 0 0 26px;
}

/* The self-contained passage in the first 30%. Its invariant: every clause
   traces to a fact asserted on the homepage or to a sourced external fact.
   Kept visually distinct so nobody edits it casually. */
.article .lede {
    font-size: 20px;
    line-height: 1.5;
    font-weight: 600;
    background: #f4f6f8;
    border-left: 4px solid #11457E;
    border-radius: 0 10px 10px 0;
    padding: 18px 20px;
    margin: 0 0 30px;
}

.article h2 {
    font-size: 26px;
    line-height: 1.25;
    font-weight: 800;
    color: #11457E;
    margin: 34px 0 12px;
}

.article h3 {
    font-size: 20px;
    font-weight: 800;
    color: #16202a;
    margin: 24px 0 8px;
}

.article p {
    font-size: 18px;
    line-height: 1.6;
    margin: 0 0 16px;
}

.article ul {
    margin: 0 0 18px;
    padding-left: 22px;
}

.article li {
    font-size: 18px;
    line-height: 1.6;
    margin-bottom: 8px;
}

.article strong {
    font-weight: 800;
}

.article a {
    color: #11457E;
}

/* --- the "what this is not" aside ----------------------------------------- */
.article .aside {
    background: #fff8e6;
    border: 1px solid #f0dfae;
    border-radius: 12px;
    padding: 16px 18px;
    margin: 24px 0;
}

.article .aside p:last-child {
    margin-bottom: 0;
}

/* --- related links --------------------------------------------------------
   Was a bare bulleted list of underlined links, which read as an afterthought
   under a fully-styled article. Now the same card shape as .hub-list so the
   section looks like one design rather than two. */
.related {
    /* ⚠️ border-box REQUIRED: width:100% + padding under the default
       content-box overflows the viewport by exactly the horizontal padding.
       This stylesheet has no global reset (CLAUDE.md) — set it per rule. */
    box-sizing: border-box;
    width: 100%;   /* see the note on .crumbs — flex item + auto margins */
    max-width: 760px;
    margin: 0 auto;
    padding: 0 20px 44px;
    font-family: 'Nunito', sans-serif;
}

.related h2 {
    font-size: 20px;
    font-weight: 800;
    color: #11457E;
    margin: 0 0 12px;
}

.related-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 10px;
}

.related-list li {
    margin: 0;
}

.related-list a {
    display: block;
    border: 1px solid #e2e6ea;
    border-left: 4px solid #11457E;
    border-radius: 10px;
    padding: 14px 16px;
    text-decoration: none;
    color: #16202a;
    background: #fff;
}

.related-list a:hover,
.related-list a:focus-visible {
    background: #f4f6f8;
}

.related-list strong {
    display: block;
    font-size: 18px;
    font-weight: 800;
    color: #11457E;
    margin-bottom: 2px;
}

.related-list span {
    display: block;
    font-size: 15px;
    line-height: 1.45;
    color: #5a6570;
}

/* --- hub index ------------------------------------------------------------ */
.hub-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.hub-list li {
    border: 1px solid #e2e6ea;
    border-radius: 12px;
    padding: 16px 18px;
    margin-bottom: 12px;
}

.hub-list a {
    font-size: 20px;
    font-weight: 800;
    text-decoration: none;
}

.hub-list p {
    font-size: 16px;
    color: #3c4650;
    margin: 6px 0 0;
}

/* --- mobile --------------------------------------------------------------- */
@media (max-width: 768px) {
    .crumbs {
        font-size: 13px;
        /* horizontal padding must equal .article's mobile padding (16px) or the
           trail sits 4px off the heading it belongs to */
        padding: 14px 16px 0;
    }

    .article {
        padding: 6px 16px 36px;
    }

    .article h1 {
        font-size: 26px;
    }

    .article .lede {
        font-size: 16px;
        padding: 14px 16px;
    }

    .article h2 {
        font-size: 21px;
        margin-top: 26px;
    }

    .article h3 {
        font-size: 17px;
    }

    .article p,
    .article li {
        font-size: 16px;
    }

    .related {
        padding: 0 16px 30px;
    }

    .hub-list a {
        font-size: 17px;
    }
}

/* --- touch targets --------------------------------------------------------
   The 12-viewport sweep found four STANDALONE sub-44px targets: both crumb
   links, the in-body WhatsApp CTA, and the related-links list.

   ⚠️ Deliberately NOT fixed: links inline inside running prose (the phone
   number in a sentence). WCAG 2.5.8 exempts them explicitly, and forcing them
   to 44px would wreck the paragraph they sit in. `pointer: coarse` alone is
   the right gate — do not pair it with a max-width, which is how the 12.9"
   iPad and the 1368px Surface kept 40px buttons on the homepage.

   ⚠️ The emergency tel: links in the list ARE fixed, even though they sit in
   list items and are arguably exempt too. A 29x22px tap target for "call the
   ambulance" is wrong on this site whatever the spec permits. -------------- */
@media (pointer: coarse) {

    /* Hit area extended by a pseudo-element rather than padding: the crumbs sit
       on one horizontal line, so growing them vertically would push the whole
       strip down for no visual gain. inset is 0 horizontally, so adjacent crumb
       links cannot steal each other's taps. */
    .crumbs a {
        position: relative;
    }

    .crumbs a::after {
        content: "";
        position: absolute;
        inset: -13px 0;
    }

    /* .hub-list a is a CARD TITLE, not prose: it sits in an <li> alongside a
       descriptive <p>, which fooled the first classifier into calling it an
       inline link. It is the primary tap target of the card. */
    .hub-list a,
    .article .inline-cta,
    .related a {
        display: inline-block;
        min-height: 44px;
        padding: 11px 0;
        box-sizing: border-box;
    }

    /* ⚠️ SCOPED to ul.tel-lines, deliberately. Written unscoped as
       `.article ul li a[href^="tel:"]`, it silently captured the "Zavolat"
       button in .channels — a tel: link that also lives in an .article ul li —
       and overrode its display:flex with inline-block, so it rendered
       shrink-wrapped at 149px beside three full-width 321px siblings. Every
       assertion passed (heights matched, no collision, no overflow); only the
       screenshot showed it. Keep list-specific rules bound to their list. */
    .article ul.tel-lines li a[href^="tel:"] {
        display: inline-block;
        min-height: 44px;
        padding: 11px 10px;
        margin: 0 -10px;
        box-sizing: border-box;
    }
}

/* --- short-page footer ----------------------------------------------------
   The hub is ~767px tall, so on a desktop viewport the footer sat mid-screen
   with dead white space beneath it. Pushes the footer to the bottom when the
   content is shorter than the viewport; no effect once content exceeds it.

   ⚠️ Safe to put a `body` rule here ONLY because article.v1.css is loaded
   exclusively by pages under /informace/. index.html does not load this sheet,
   so the homepage's hero geometry — three documented CTA regressions — is
   untouched. If this sheet is ever linked from the homepage, delete this rule
   first. ------------------------------------------------------------------ */
body {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

body > .footer-bar {
    margin-top: auto;
}

/* --- contact channel buttons ---------------------------------------------
   2026-08-02 (0.29.0). One number, four ways to use it.
   ⚠️ Order is deliberate and load-bearing: the plain tel: link is FIRST and
   visually primary because it is the only option that works on every device
   with no app installed and no data connection. viber:// and tg:// need their
   app; on a desktop browser without it they do nothing at all.
   ⚠️ Each row is a full-width block ≥56px, so the 44px touch-target rule is
   satisfied structurally rather than by a coarse-pointer override. -------- */
.channels {
    list-style: none;
    margin: 0 0 18px;
    padding: 0;
}

.channels li {
    margin-bottom: 10px;
}

.channels .ch {
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 60px;
    padding: 10px 16px;
    border: 2px solid #e2e6ea;
    border-radius: 12px;
    background: #fff;
    text-decoration: none;
    color: #16202a;
    box-sizing: border-box;
}

.channels .ch-call {
    border-color: #11457E;
    background: #11457E;
    color: #fff;
}

.channels .ch-ico {
    /* was font-size, for an emoji. Now an <img>: give it an explicit box so it
       cannot reflow while the SVG loads, and flex-shrink:0 so a long label can
       never squeeze it. The phone row uses the existing white PNG because its
       row is dark blue; the other three use brand-coloured SVGs because their
       rows are white and a white glyph would be invisible. */
    width: 26px;
    height: 26px;
    flex-shrink: 0;
    object-fit: contain;
}

.channels .ch-txt {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
}

.channels .ch-txt strong {
    font-size: 19px;
    font-weight: 800;
}

.channels .ch-txt span {
    font-size: 15px;
    color: #5a6570;
}

.channels .ch-call .ch-txt span {
    color: #cfe0f5;
}

@media (max-width: 768px) {
    .channels .ch {
        min-height: 56px;
        padding: 8px 14px;
        gap: 12px;
    }

    .channels .ch-txt strong {
        font-size: 17px;
    }

    .channels .ch-txt span {
        font-size: 13px;
    }
}
