/*
 * Téma republica: celý vzhled republicasoutez.cz podle Figmy „Republica soutez"
 * (aaQ5TY40n5Uu5kAVBTLlxx, frame 7:42, 1920 px). Načítá se AŽ ZA base.css z core,
 * který zůstává kvůli resetu, formulářům, age gate a toastům.
 *
 * Písma v designu: Albert Headline Black (nadpisy), Albert Text Bold/Regular
 * Condensed (kroky, pruh, patička), Albert Sans (formulář, text), Montserrat Bold
 * (navigace), Futura PT Bold (tlačítka). Albert Headline a Albert Text nemáme
 * (proprietární rodina), záskok: Albert Sans 900 pro nadpisy, Barlow Condensed pro
 * kondenzované texty. Futura PT jde z Adobe Fonts kitu (viz @layout.latte), záskok
 * Albert Sans 700. Až přijdou soubory od designéra, stačí doplnit @font-face a
 * změnit proměnné --font-*.
 */

@font-face { font-family: 'Albert Sans'; font-style: normal; font-weight: 400 900; font-display: swap; src: url('fonts/AlbertSans-latin-ext.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: 'Albert Sans'; font-style: normal; font-weight: 400 900; font-display: swap; src: url('fonts/AlbertSans-latin.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: 'Montserrat'; font-style: normal; font-weight: 700; font-display: swap; src: url('fonts/Montserrat-latin-ext.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: 'Montserrat'; font-style: normal; font-weight: 700; font-display: swap; src: url('fonts/Montserrat-latin.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: 'Barlow Condensed'; font-style: normal; font-weight: 400; font-display: swap; src: url('fonts/BarlowCondensed-400-latin-ext.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: 'Barlow Condensed'; font-style: normal; font-weight: 400; font-display: swap; src: url('fonts/BarlowCondensed-400-latin.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: 'Barlow Condensed'; font-style: normal; font-weight: 700; font-display: swap; src: url('fonts/BarlowCondensed-700-latin-ext.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: 'Barlow Condensed'; font-style: normal; font-weight: 700; font-display: swap; src: url('fonts/BarlowCondensed-700-latin.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; }

:root {
    /* Tokeny designu. Zlato je přechod, ne jedna barva: text i tlačítka. */
    --rp-gold-a: #ab6f00;
    --rp-gold-b: #fccc69;       /* @contrast #fccc69 #000000 13 */ /* @contrast #000000 #edbb56 11 */
    --rp-gold-c: #edbb56;
    --rp-gold: linear-gradient(269deg, var(--rp-gold-a) 5%, var(--rp-gold-b) 30.4%, var(--rp-gold-c) 64%, var(--rp-gold-a) 94.6%);
    --rp-cream: #eae1bd;        /* nadpisy na tmavém, pozadí formuláře */ /* @contrast #eae1bd #000000 15 */ /* @contrast #eae1bd #3a3a3c 8 */
    --rp-black: #000000;
    --rp-ink: #1a1a1a;
    --rp-panel: #3a3a3c;        /* šedý pruh pod mechanikou, sekce Pravidla */ /* @contrast #ffffff #3a3a3c 10 */
    --rp-divider: #767571;
    --rp-label: #454545;        /* @contrast #454545 #eae1bd 7 */ /* @contrast #454545 #f7f6f2 7 */
    --rp-placeholder: #606060;  /* @contrast #606060 #ffffff 5.7 */
    --rp-paper: #fffef9;        /* sekce Výherci */
    --rp-chip: #f7f6f2;
    --rp-texture: url('img/bg-texture.jpg');

    --font-headline: 'Albert Headline', 'Albert Sans', system-ui, sans-serif;
    --font-condensed: 'Albert Text', 'Barlow Condensed', 'Albert Sans', sans-serif;
    --font-body: 'Albert Sans', system-ui, sans-serif;
    --font-nav: 'Montserrat', 'Albert Sans', sans-serif;
    --font-button: 'futura-pt', 'Futura PT', 'Albert Sans', sans-serif;

    /* Přepis tokenů base.css, které dědí zbytek core (age gate, chybová stránka,
       zásady, výherní formulář). */
    --brand: #ab6f00;
    --brand-dark: #1a1a1a;
    --brand-contrast: #ffffff;
    --bg: #1a1a1a;
    --surface: #ffffff;
    --text: #1d2327;
    --font-display: var(--font-headline);
    --footer-bg: #000000;
    --max-width: 90rem;
}

/* ------------------------------------------------------------------ základ -- */
/* Plynulé rolování na kotvy navigace (#jak-hrat, #vyhry, #registrace,
   #pravidla) i na tlačítka v bannerech. `prefers-reduced-motion` to vypíná —
   pro citlivé uživatele je skok korektnější než animace. */
@media (prefers-reduced-motion: no-preference) {
    html:has(> body.t-republica) { scroll-behavior: smooth; }
}
/* Odstup cíle od horního okraje, ať sekce nezačíná nalepená na kraji okna. */
.t-republica [id] { scroll-margin-top: 1.5rem; }
.t-republica { margin: 0; background: var(--rp-black); color: #ffffff; font-family: var(--font-body); }
.t-republica .rp-main { background: var(--rp-black); }
.t-republica .rp-inner { width: min(100% - 2.5rem, 108rem); margin: 0 auto; }
.t-republica .rp-title {
    margin: 0;
    font-family: var(--font-headline);
    font-weight: 900;
    font-size: clamp(2rem, 1.2rem + 2.2vw, 4rem);
    line-height: 1.07;
    letter-spacing: 0.0634em;
    text-align: center;
}
.t-republica .rp-title--cream { color: var(--rp-cream); }
.t-republica .rp-title--dark { color: var(--rp-black); }
.t-republica .rp-cta-row { margin: 2.5rem 0 0; text-align: center; }

/* Tlačítko (_Button core): zlatý přechod, černý text Futura PT Bold, verzálky,
   303×83 px v designu. Varianta --dark: černé pozadí, zlatý text (Odeslat). */
.t-republica .rp-btn,
.t-republica .rp-registration-form input[type="submit"],
.t-republica .rp-registration-form button[type="submit"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 13.75rem;
    min-height: 4.5rem;
    padding: 0 2.75rem;
    border: 0;
    border-radius: 10px;
    background: var(--rp-gold);
    color: var(--rp-black);
    font-family: var(--font-button);
    font-weight: 700;
    font-size: 1.375rem;
    line-height: 1;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
    transition: transform .15s ease, filter .15s ease;
}
.t-republica .rp-btn:hover { filter: brightness(1.06); transform: translateY(-1px); color: var(--rp-black); }
.t-republica .rp-btn:focus-visible { outline: 3px solid var(--rp-cream); outline-offset: 3px; }
.t-republica .rp-btn--dark,
.t-republica .rp-registration-form input[type="submit"],
.t-republica .rp-registration-form button[type="submit"] {
    background: var(--rp-black);
    color: var(--rp-gold-b);
}
.t-republica .rp-btn--dark:hover,
.t-republica .rp-registration-form input[type="submit"]:hover,
.t-republica .rp-registration-form button[type="submit"]:hover { color: var(--rp-gold-b); filter: brightness(1.15); transform: translateY(-1px); }
.t-republica .rp-registration-form input[type="submit"]:focus-visible,
.t-republica .rp-btn--dark:focus-visible { outline: 3px solid var(--rp-black); outline-offset: 3px; }

/* Zlatý text: přechod ořezaný textem. Obě vrstvy (barva i clip) na jednom prvku,
   Firefox honoruje clip per prvek, ne per vrstva pozadí. */
.t-republica .rp-step-text {
    background: var(--rp-gold);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

/* ---------------------------------------------------------------- hlavička -- */
.t-republica .rp-header {
    position: relative;
    background: #2a2a2a var(--rp-texture) center / cover;
}
.t-republica .rp-header::before { content: ""; position: absolute; inset: 0; background: rgb(42 42 42 / 80%); }
.t-republica .rp-header-inner {
    position: relative;
    width: min(100% - 2.5rem, 115rem);
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    padding: 0.9375rem 0;
    min-height: 8.625rem;
}
.t-republica .rp-brand { display: block; line-height: 0; }
.t-republica .rp-brand-logo { display: block; width: clamp(9rem, 12vw, 16.625rem); height: auto; }
.t-republica .rp-nav { display: flex; gap: clamp(1.25rem, 3vw, 3.75rem); padding: 0 2.5rem; }
.t-republica .rp-nav a {
    color: var(--rp-cream);
    font-family: var(--font-nav);
    font-weight: 700;
    font-size: clamp(1rem, 0.7rem + 0.6vw, 1.5rem);
    letter-spacing: 0.0583em;
    text-transform: uppercase;
    text-decoration: none;
    white-space: nowrap;
}
.t-republica .rp-nav a:hover { color: var(--rp-gold-b); }
.t-republica .rp-nav a:focus-visible { outline: 3px solid var(--rp-cream); outline-offset: 4px; }
.t-republica .rp-nav-toggle {
    display: none; align-items: center; justify-content: center;
    width: 3rem; height: 3rem; padding: 0; border: 0; border-radius: 8px;
    background: transparent; color: var(--rp-cream); cursor: pointer;
}
.t-republica .rp-nav-toggle-icon { width: 1.75rem; height: 1.75rem; }
.t-republica .rp-nav-toggle[aria-expanded="false"] .rp-nav-toggle-icon--close,
.t-republica .rp-nav-toggle[aria-expanded="true"] .rp-nav-toggle-icon--open { display: none; }
@media (max-width: 56rem) {
    .t-republica .rp-header-inner { flex-wrap: wrap; min-height: 0; }
    .t-republica .rp-nav-toggle:not([hidden]) { display: inline-flex; }
    .t-republica .rp-nav { width: 100%; flex-direction: column; gap: 0.75rem; padding: 0.5rem 0 1rem; }
    /* nav.js označí navigaci data-collapsible; bez data-open je na mobilu sbalená. */
    .t-republica .rp-nav[data-collapsible]:not([data-open]) { display: none; }
}

/* --------------------------------------------------- grafické sekce (bannery) -- */
/* Hero, Výhry a Soutěžní produkty jsou každá JEDEN plochý obrázek přes celou
   šířku (rozhodnutí 2026-09-20) — žádné pozadí, odsazení ani nadpis pod nimi,
   celou sekci nese grafika. Hero a Výhry mají tlačítko natištěné v obrázku,
   takže je za běžící registrace odkazem celá plocha.

   `aspect-ratio: auto W / H` drží místo do načtení obrázku (banner je široký,
   bez něj stránka poskočí), ale klíčové slovo `auto` dá přednost skutečnému
   poměru souboru — jinak by grafika o jiném rozměru, než slibuje popisek pole
   v administraci, byla roztažená. Čísla odpovídají exportům z Figmy
   (viz config/theme-republica.neon). */
.t-republica .rp-cover,
.t-republica .rp-banner { display: block; }
.t-republica .rp-cover-image,
.t-republica .rp-banner-image { display: block; width: 100%; height: auto; }
.t-republica a.rp-cover:focus-visible,
.t-republica a.rp-banner:focus-visible { outline: 4px solid var(--rp-gold-b); outline-offset: -4px; }
.t-republica .rp-cover-image { aspect-ratio: auto 2880 / 1239; }
.t-republica .rp-banner--prizes .rp-banner-image { aspect-ratio: auto 2784 / 1350; }
.t-republica .rp-banner--products .rp-banner-image { aspect-ratio: auto 2496 / 1498; }

/* ---------------------------------------------------------------- Jak hrát -- */
.t-republica .rp-steps { background: var(--rp-black); padding: clamp(2.5rem, 4vw, 3.5rem) 0 2.5rem; }
.t-republica .rp-step-row {
    list-style: none;
    margin: clamp(2rem, 4vw, 4rem) 0 0;
    padding: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: clamp(1.25rem, 4vw, 5.6rem);
}
/* Sloupce mají v designu (7:122/138/155) různou šířku — 224, 251 a 172 px na
   plátně 1920 — a právě ta drží zalomení vět. Jedna společná šířka ho neudrží:
   na 14rem se druhý krok láme na čtyři řádky místo tří. Třetí krok má větší
   písmo, takže mu design dovoluje z rámu přetéct; 12,5rem mu drží dva řádky. */
.t-republica .rp-step { position: relative; text-align: center; }
.t-republica .rp-step:nth-child(1) { max-width: 14rem; }
.t-republica .rp-step:nth-child(2) { max-width: 15.7rem; }
.t-republica .rp-step:nth-child(3) { max-width: 12.5rem; }
.t-republica .rp-step + .rp-step::before {
    content: "";
    position: absolute;
    left: calc(-1 * clamp(1.25rem, 4vw, 5.6rem) / 2);
    top: 50%;
    width: 2.08rem;
    height: 4.5rem;
    transform: translate(-50%, -50%);
    background: url('img/arrow.svg') center / contain no-repeat;
}
.t-republica .rp-step-text {
    display: inline-block;
    font-family: var(--font-condensed);
    font-weight: 700;
    font-size: clamp(1.25rem, 0.9rem + 0.8vw, 1.75rem);
    line-height: 1.16;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}
.t-republica .rp-step:last-child .rp-step-text { font-size: clamp(1.5rem, 1rem + 1.3vw, 2.58rem); line-height: 1.07; }
.t-republica .rp-mechanics-note {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 2.5rem;
    width: fit-content;
    max-width: 100%;
    margin: clamp(2rem, 4vw, 4rem) auto 0;
    padding: 0.75rem 2.5rem;
    min-height: 5.625rem;
    box-sizing: border-box;
    background: var(--rp-panel);
    border-radius: 12px;
}
.t-republica .rp-mechanics-text {
    font-family: var(--font-condensed);
    font-weight: 400;
    font-size: clamp(1.0625rem, 0.9rem + 0.5vw, 1.5rem);
    line-height: 1.35;
    letter-spacing: 0.0583em;
    color: var(--rp-cream);
    text-align: center;
    text-wrap: balance;
}
.t-republica .rp-mechanics-logo { flex: 0 0 auto; width: 6rem; height: 3rem; padding-left: 2.5rem; border-left: 1px solid var(--rp-divider); box-sizing: content-box; }
@media (max-width: 56rem) {
    .t-republica .rp-step-row { flex-direction: column; gap: 2.5rem; }
    .t-republica .rp-step + .rp-step::before { left: 50%; top: -1.25rem; transform: translate(-50%, -50%) rotate(90deg); width: 1.5rem; height: 3rem; }
    .t-republica .rp-mechanics-note { flex-direction: column; gap: 1rem; padding: 1.25rem 1.5rem; }
    .t-republica .rp-mechanics-logo { padding: 1rem 0 0; border-left: 0; border-top: 1px solid var(--rp-divider); }
}

/* -------------------------------------------------------------- registrace -- */
.t-republica .rp-registration { background: var(--rp-cream); color: var(--rp-label); padding: clamp(3rem, 5vw, 5rem) 0; }
.t-republica .rp-registration-inner { max-width: 35.875rem; }
.t-republica .rp-registration .rp-title { font-size: clamp(1.75rem, 1rem + 1.6vw, 3rem); }
.t-republica .rp-registration-form { margin-top: 2.3rem; max-width: 31.5rem; }
.t-republica .rp-registration-notice { margin-top: 2rem; text-align: center; font-size: 1.125rem; line-height: 1.55; }
.t-republica .rp-registration-notice-lead { font-size: 1.375rem; font-weight: 700; margin: 0 0 0.75rem; }
.t-republica .rp-registration-actions { margin-top: 1.75rem; }

/* Formulář z core (PublicFormStyling: div.form-row s label + input). Design:
   popisek Albert Sans Bold 18/28 #454545, 6 px nad polem; pole bílé 56 px,
   rádius 3, text 18 Medium, 26 px zleva; řádky 28 px; jméno + příjmení vedle
   sebe; zaškrtávátko bílé 26 px, rádius 6; tlačítko černé 219×72. */
.t-republica .rp-registration-form form { display: flex; flex-wrap: wrap; column-gap: 1.25rem; }
.t-republica .rp-registration-form form > * { width: 100%; }
/* Stejný prefix `:is(...)` jako u polí níž: jinak by `.form-row + .form-row`
   (odsazení 1.75rem) mělo vyšší specificitu a Příjmení by kleslo pod Jméno. */
.t-republica :is(.rp-registration-form, .rp-main > .page-card) form > .form-row:has(input[name="first_name"]),
.t-republica :is(.rp-registration-form, .rp-main > .page-card) form > .form-row:has(input[name="last_name"]) { width: calc(50% - 0.625rem); }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) form > .form-row:has(input[name="last_name"]) { margin-top: 0; }
/* Stejná pole i na stránkách core na `.page-card` (dotazník, výherní formulář),
   proto `:is(.rp-registration-form, .rp-main > .page-card)`; tlačítko odeslání
   tam zůstává zlaté (viz blok níž). */
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .form-row { margin: 0; }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .form-row + .form-row { margin-top: 1.75rem; }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .form-row:has(input[type="checkbox"]) + .form-row:has(input[type="checkbox"]) { margin-top: 1.0625rem; }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) label {
    color: var(--rp-label);
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 1.125rem;
    line-height: 1.5556;
    margin-bottom: 0.375rem;
}
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .form-row.required > label::after { content: none; }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) input[type="text"],
.t-republica :is(.rp-registration-form, .rp-main > .page-card) input[type="email"],
.t-republica :is(.rp-registration-form, .rp-main > .page-card) input[type="tel"],
.t-republica :is(.rp-registration-form, .rp-main > .page-card) input[type="number"],
.t-republica :is(.rp-registration-form, .rp-main > .page-card) input[type="date"],
.t-republica :is(.rp-registration-form, .rp-main > .page-card) input[type="file"],
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .c-date-btn {
    width: 100%;
    height: 3.5rem;
    background-color: #ffffff;
    border: 0;
    border-radius: 3px;
    padding: 0 1rem 0 1.625rem;
    font-family: var(--font-body);
    font-weight: 500;
    font-size: 1.125rem;
    color: var(--rp-label);
    box-sizing: border-box;
}
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .c-date-btn { text-align: left; background-position: right 1.25rem center; padding-right: 3rem; }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) input[type="date"] { -webkit-appearance: none; appearance: none; display: block; }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) input::placeholder,
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .c-date-btn.is-empty > span { color: var(--rp-placeholder); opacity: 1; }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) input:focus-visible,
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .c-date-btn:focus-visible { outline: 3px solid var(--rp-black); outline-offset: 2px; }

/* Datum narození: tři pole Den / Měsíc / Rok vedle sebe (design 16:367,
   3× 160,33 px s mezerou 10 px). Skládá je form.js; nativní `<input type=date>`
   zůstává v DOM jako nosič hodnoty a chybové hlášky, jen se nekreslí. */
.t-republica .rp-bd { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.625rem; }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .rp-bd-field { width: 100%; }

/* Upload účtenky (57:1471): bílé pole s popiskem vlevo a ikonou dokumentu
   vpravo. Nativní input leží PŘES ně s nulovou průhledností — klik i fokus
   z klávesnice pořád patří jemu, takže se nic neztrácí na přístupnosti.
   Obal kreslí form.js; bez JS zůstane nativní pole tak, jak ho dá prohlížeč. */
.t-republica .rp-file { position: relative; display: block; }
.t-republica .rp-file-box {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    height: 3.5rem;
    padding: 0 1.25rem 0 1.625rem;
    background: #ffffff;
    border-radius: 3px;
    box-sizing: border-box;
}
.t-republica .rp-file-text {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--rp-placeholder);
    font-family: var(--font-body);
    font-weight: 500;
    font-size: 1.125rem;
}
.t-republica .rp-file.is-filled .rp-file-text { color: var(--rp-label); }
.t-republica .rp-file-icon { flex: none; width: 1.25rem; height: 1.25rem; color: var(--rp-label); }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .rp-file input[type="file"] {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 3.5rem;
    padding: 0;
    opacity: 0;
    cursor: pointer;
}
.t-republica .rp-file:has(input:focus-visible) .rp-file-box { outline: 3px solid var(--rp-black); outline-offset: 2px; }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .rp-file input[type="file"]:focus-visible { outline: none; }
/* Chybová hláška u obou skládaných polí je blokový sourozenec pod nimi. */
.t-republica .rp-file > .form-error,
.t-republica .rp-bd + .form-error { display: block; margin-top: 0.4rem; }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) input[type="checkbox"] {
    width: 1.625rem;
    height: 1.625rem;
    border: 0;
    border-radius: 6px;
    background: #ffffff center / 0.75rem no-repeat;
    top: 0;
}
.t-republica :is(.rp-registration-form, .rp-main > .page-card) input[type="checkbox"]:checked {
    background-color: #ffffff;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 9 8.3'%3E%3Cpath d='M1 4.2 3.4 6.8 8 1.4' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .form-row:has(input[type="checkbox"]) label { color: var(--rp-label); font-weight: 700; font-size: 1.125rem; line-height: 1.5556; padding-left: 2.375rem; }
.t-republica .rp-registration-form .form-row:has(input[type="submit"]),
.t-republica .rp-registration-form .form-row:has(button[type="submit"]) { margin-top: 1.75rem; }
.t-republica .rp-registration-form input[type="submit"],
.t-republica .rp-registration-form button[type="submit"] { min-width: 13.7rem; min-height: 4.5rem; font-size: 1.65rem; }
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .form-error,
.t-republica :is(.rp-registration-form, .rp-main > .page-card) .form-errors { color: #8f1d12; font-weight: 700; }
.t-republica .rp-registration-info {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 1.75rem 0 0;
    color: var(--rp-label);
    font-size: 1.125rem;
    line-height: 1.5556;
}
.t-republica .rp-registration-info-icon { flex: 0 0 2.5rem; width: 2.5rem; height: 2.5rem; color: var(--rp-placeholder); }
@media (max-width: 40rem) {
    .t-republica .rp-registration-form form > .form-row:has(input[name="first_name"]),
    .t-republica .rp-registration-form form > .form-row:has(input[name="last_name"]) { width: 100%; }
    .t-republica .rp-registration-form form > .form-row:has(input[name="last_name"]) { margin-top: 1.75rem; }
}

/* ----------------------------------------------------------------- výherci -- */
.t-republica .rp-winners { background: var(--rp-paper); color: var(--rp-black); padding: clamp(3rem, 5vw, 5rem) 0; }
.t-republica .rp-winners .rp-title { font-size: clamp(1.75rem, 1rem + 1.6vw, 3rem); }
.t-republica .rp-winner-group {
    max-width: 65rem;
    margin: 0 auto;
    padding: 3.5rem 0 0;
    text-align: center;
}
.t-republica .rp-winner-group:first-of-type { margin-top: 3rem; }
.t-republica .rp-winner-group::before { content: ""; display: block; height: 1px; margin-bottom: 3.5rem; background: var(--rp-gold); border-radius: 10px; }
.t-republica .rp-winner-group-title {
    margin: 0 0 1.75rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.25rem;
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 1.5rem;
    line-height: 1;
    letter-spacing: 0.0583em;
    color: var(--rp-black);
}
/* Fotka výhry vlevo od názvu (design 26:693/707/746: 84×65, 65×96, 93×92 px —
   poměry stran se liší, proto se drží jen VÝŠKA a šířka dopočítá obrázek). */
.t-republica .rp-winner-group-image { flex: none; width: auto; height: 6rem; object-fit: contain; }
@media (max-width: 40rem) {
    .t-republica .rp-winner-group-title { flex-direction: column; gap: 0.75rem; }
    .t-republica .rp-winner-group-image { height: 4.5rem; }
}
.t-republica .rp-winner-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.625rem; }
.t-republica .rp-winner-chip {
    flex: 0 0 12.5rem;
    max-width: 100%;
    padding: 1rem 0.5rem;
    background: var(--rp-chip);
    border-radius: 10px;
    color: var(--rp-label);
    font-weight: 700;
    font-size: 1.25rem;
    line-height: 1.2;
    letter-spacing: 0.07em;
}

/* ---------------------------------------------------------------- pravidla -- */
.t-republica .rp-rules { background: var(--rp-panel); padding: clamp(2.5rem, 4vw, 3.8rem) 0 clamp(2.5rem, 4vw, 3rem); text-align: center; }
.t-republica .rp-rules .rp-title { font-size: clamp(1.75rem, 1rem + 1.6vw, 3rem); }
.t-republica .rp-rules-text {
    max-width: 72.8rem;
    margin: clamp(1.5rem, 3vw, 3.75rem) auto 0;
    color: #ffffff;
    font-size: 1rem;
    line-height: 1.5;
    letter-spacing: 0.0875em;
}
.t-republica .rp-rules .rp-cta-row { margin-top: clamp(1.5rem, 3vw, 3.75rem); }

/* ----------------------------------------------------------------- patička -- */
.t-republica .rp-footer { background: var(--rp-black); color: #ffffff; }
.t-republica .rp-footer-contact { display: flex; flex-direction: column; align-items: center; gap: 0.86rem; padding: 3.75rem 1.25rem; }
.t-republica .rp-footer-contact .rp-title { font-size: clamp(1.75rem, 1rem + 1.6vw, 3rem); margin-bottom: 0.4rem; }
.t-republica .rp-footer-link { color: #ffffff; font-size: 1rem; line-height: 1.5; letter-spacing: 0.0875em; text-decoration: none; }
.t-republica .rp-footer-link:hover { color: var(--rp-gold-b); }
.t-republica .rp-footer-bar {
    width: min(100% - 2.5rem, 108rem);
    margin: 0 auto;
    padding: 1.9rem 0 1.875rem;
    border-top: 1px solid var(--rp-cream);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    font-size: 0.8125rem;
    line-height: 1.5;
    letter-spacing: 0.1em;
}
.t-republica .rp-footer-bar-left { color: #ffffff; font-family: var(--font-condensed); font-size: 1.0625rem; text-transform: uppercase; text-decoration: none; letter-spacing: 0.08em; }
.t-republica .rp-footer-bar-left:hover { color: var(--rp-gold-b); }
.t-republica .rp-footer-bar-center { margin: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem 1.5rem; text-align: center; }
.t-republica .rp-footer-legal { color: #ffffff; text-decoration: underline; text-underline-offset: 0.2em; }
.t-republica .rp-footer-legal:hover { color: var(--rp-gold-b); }
.t-republica .rp-footer-bar-right { text-align: right; }
@media (max-width: 56rem) {
    .t-republica .rp-footer-bar { flex-direction: column; text-align: center; }
    .t-republica .rp-footer-bar-right { text-align: center; }
}

/* ------------------------------------------------ zděděné stránky core -- */
/* Chybová stránka, zásady, výherní formulář a age gate používají třídy base.css
   nad tokeny přepsanými v :root. Age gate: tmavý overlay, krémová karta. */
.t-republica .age-gate { background: rgb(0 0 0 / 88%); }
.t-republica .age-gate-card { background: var(--rp-cream); color: var(--rp-black); border-radius: 12px; }
.t-republica .age-gate-heading { font-family: var(--font-headline); font-weight: 900; letter-spacing: 0.04em; color: var(--rp-black); }
.t-republica .age-gate-info { color: var(--rp-label); }
.t-republica .age-gate-btn { background: var(--rp-black); color: var(--rp-gold-b); font-family: var(--font-button); font-weight: 700; text-transform: uppercase; border-radius: 10px; }
.t-republica .age-gate-btn--ghost { background: transparent; color: var(--rp-black); border: 2px solid var(--rp-black); }
.t-republica .flashes { width: min(100% - 2.5rem, 60rem); margin: 1rem auto 0; }

/* --------------------------------------- chybová stránka a zásady (sekce) -- */
/* Obě stránky jsou plnohodnotné sekce tématu, ne obecná karta z base.css:
   tmavá textura na pozadí, krémová karta, nadpis v display písmu. Stejná
   stavba jako u tématu budvar. Výherní formulář a ostatní zděděné stránky
   core zůstávají na `.page-card` z base.css. */
.t-republica .rp-main {
    display: flow-root;
    background: #2a2a2a var(--rp-texture) center / cover;
}
.t-republica .rp-error,
.t-republica .rp-legal { padding: clamp(2.5rem, 6vw, 5rem) 1.25rem clamp(3rem, 8vw, 6rem); }
.t-republica .rp-error-card,
.t-republica .rp-legal-card {
    width: min(100%, 46rem);
    margin-inline: auto;
    padding: clamp(1.75rem, 4vw, 3.5rem);
    background: var(--rp-paper);
    color: var(--rp-label);
    border-radius: 12px;
    box-shadow: 0 24px 60px -40px rgb(0 0 0 / 80%);
}
.t-republica .rp-error-card { max-width: 40rem; text-align: center; }

/* Kód chyby jako vizuální kotva — zlatý přechod ořezaný textem, stejně jako
   kroky mechaniky (Firefox honoruje clip per prvek, proto obě vrstvy tady). */
.t-republica .rp-error-code {
    margin: 0 0 0.5rem;
    font-family: var(--font-headline);
    font-weight: 900;
    font-size: clamp(5rem, 3rem + 11vw, 10rem);
    line-height: 0.85;
    letter-spacing: -0.02em;
    background: var(--rp-gold);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}
.t-republica .rp-error .rp-title { font-size: clamp(1.5rem, 1rem + 1.4vw, 2.5rem); }
.t-republica .rp-error-text {
    max-width: 30rem;
    margin: 1.25rem auto 2.25rem;
    font-size: 1.0625rem;
    line-height: 1.65;
}
.t-republica .rp-error-actions { margin: 0; }

/* Zásady: čitelná délka řádku, nadpisy sekcí, prostý text. */
.t-republica .rp-legal .rp-title { font-size: clamp(1.75rem, 1rem + 1.8vw, 3rem); margin-bottom: 1.25rem; }
.t-republica .rp-legal-lead { margin: 0 0 2rem; font-size: 1.1875rem; line-height: 1.6; text-align: center; }
.t-republica .rp-legal h2 {
    margin: 2.5rem 0 0.75rem;
    font-family: var(--font-headline);
    font-weight: 900;
    font-size: clamp(1.25rem, 1rem + 0.6vw, 1.625rem);
    line-height: 1.2;
    letter-spacing: 0.03em;
    color: var(--rp-black);
}
.t-republica .rp-legal h3 {
    margin: 1.5rem 0 0.4rem;
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 1.125rem;
    color: var(--rp-black);
}
.t-republica .rp-legal p,
.t-republica .rp-legal li { font-size: 1.0625rem; line-height: 1.65; }
.t-republica .rp-legal p { margin: 0 0 0.9rem; }
.t-republica .rp-legal ul { margin: 0 0 1rem; padding-left: 1.25rem; }
.t-republica .rp-legal li + li { margin-top: 0.4rem; }
.t-republica .rp-error-text a,
.t-republica .rp-legal p a:not(.rp-btn),
.t-republica .rp-legal li a { color: var(--rp-gold-a); font-weight: 700; text-underline-offset: 0.18em; }
.t-republica .rp-error-text a:hover,
.t-republica .rp-legal p a:not(.rp-btn):hover { color: var(--rp-black); }
.t-republica .rp-legal-actions { margin: 2.5rem 0 0; text-align: center; }

/* Zděděné stránky core, které téma nepřebíjí (výherní formulář, hlášky). */
.t-republica .rp-main > .page-card,
.t-republica .rp-main > .notice,
.t-republica .rp-main > .winner-form {
    width: min(100% - 2.5rem, 46rem);
    margin: clamp(2.5rem, 5vw, 5rem) auto;
    padding: clamp(1.75rem, 4vw, 3.5rem);
    background: var(--rp-paper);
    color: var(--rp-label);
    border-radius: 12px;
    box-shadow: 0 24px 60px -40px rgb(0 0 0 / 80%);
}
.t-republica .rp-main > .back-link-row { display: none; }

/* ------------------------------------------------------- cookie lišta -- */
/* Markup lišty vkládá GTM (Custom HTML tag, docs/gtm/cookie-bar.html), CSS je
   TADY, protože CSP style-src 'self' inline <style> ani style="" z GTM nepustí:
   třídy .rp-consent* jsou kontrakt mezi tagem a tématem, kdo mění jedno, mění
   i druhé. Fixed dole uprostřed, NEPŘEKRÝVÁ obsah (žádný
   cookie wall) a leží POD overlayem ověření věku (.age-gate z-index 100) a nad
   toasty (80). Tmavý panel v barvách webu, krémový nadpis, dvě stejně velká a
   stejně barevná tlačítka Přijmout/Odmítnout (ÚOOÚ: odmítnutí stejně snadné). */
.t-republica .rp-consent {
    position: fixed;
    left: 50%;
    bottom: 1rem;
    z-index: 90;
    width: min(100% - 2rem, 46rem);
    transform: translateX(-50%);
    background: var(--rp-ink);
    color: #ffffff;                 /* @contrast #ffffff #1a1a1a 17 */
    border: 1px solid var(--rp-divider);
    border-radius: 12px;
    box-shadow: 0 24px 60px -30px rgb(0 0 0 / 90%);
    font-family: var(--font-body);
}
.t-republica .rp-consent:focus { outline: none; }
.t-republica .rp-consent:focus-visible { outline: 3px solid var(--rp-cream); outline-offset: 3px; }
.t-republica .rp-consent-inner { padding: 1.5rem 1.75rem 1.5rem; }
.t-republica .rp-consent-title {
    margin: 0 0 0.6rem;
    font-family: var(--font-headline);
    font-weight: 900;
    font-size: 1.25rem;
    line-height: 1.2;
    letter-spacing: 0.04em;
    color: var(--rp-cream);         /* @contrast #eae1bd #1a1a1a 13 */
}
.t-republica .rp-consent-text { margin: 0; font-size: 0.9375rem; line-height: 1.55; }
.t-republica .rp-consent-link,
.t-republica .rp-consent-toggle { color: var(--rp-gold-b); text-decoration: underline; text-underline-offset: 0.2em; }  /* @contrast #fccc69 #1a1a1a 11 */
.t-republica .rp-consent-link:hover,
.t-republica .rp-consent-toggle:hover { color: #ffffff; }
.t-republica .rp-consent-toggle {
    background: none;
    border: 0;
    padding: 0.5rem 0.25rem;
    font: inherit;
    font-size: 0.9375rem;
    cursor: pointer;
}
.t-republica .rp-consent-toggle:focus-visible,
.t-republica .rp-consent-option input:focus-visible + .rp-consent-switch { outline: 3px solid var(--rp-cream); outline-offset: 3px; }

.t-republica .rp-consent-details { margin: 1.1rem 0 0; padding-top: 1rem; border-top: 1px solid var(--rp-divider); }
.t-republica .rp-consent-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.75rem; }
.t-republica .rp-consent-option { display: grid; grid-template-columns: auto 1fr; gap: 0.85rem; align-items: start; cursor: pointer; }
.t-republica .rp-consent-option input { position: absolute; width: 1px; height: 1px; margin: -1px; opacity: 0; overflow: hidden; }
.t-republica .rp-consent-option-text { font-size: 0.9375rem; line-height: 1.45; }
.t-republica .rp-consent-option-text small { display: block; margin-top: 0.15rem; font-size: 0.8125rem; color: #c9c4b4; }  /* @contrast #c9c4b4 #1a1a1a 9.5 */
/* Přepínač: šedý = vypnuto, zlatý = zapnuto; nezbytné je disabled a vždy zlaté, jen bledší. */
.t-republica .rp-consent-switch {
    position: relative;
    display: inline-block;
    width: 2.5rem;
    height: 1.45rem;
    margin-top: 0.1rem;
    border-radius: 1rem;
    background: var(--rp-divider);
    transition: background .15s ease;
}
.t-republica .rp-consent-switch::before {
    content: '';
    position: absolute;
    top: 0.16rem;
    left: 0.16rem;
    width: 1.13rem;
    height: 1.13rem;
    border-radius: 50%;
    background: #ffffff;
    transition: transform .15s ease, background .15s ease;
}
.t-republica .rp-consent-option input:checked + .rp-consent-switch { background: var(--rp-gold-c); }
.t-republica .rp-consent-option input:checked + .rp-consent-switch::before { background: var(--rp-black); transform: translateX(1.05rem); }
.t-republica .rp-consent-option input:disabled + .rp-consent-switch { opacity: 0.55; cursor: default; }
.t-republica .rp-consent-option:has(input:disabled) { cursor: default; }

.t-republica .rp-consent-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; margin-top: 1.25rem; }
.t-republica .rp-consent-btn.rp-btn { min-width: 0; min-height: 3rem; padding: 0 1.5rem; font-size: 1rem; border-radius: 8px; }
.t-republica .rp-consent-actions .rp-consent-toggle { margin-left: auto; }
@media (max-width: 40rem) {
    .t-republica .rp-consent { bottom: 0; width: 100%; border-radius: 12px 12px 0 0; border-bottom: 0; }
    .t-republica .rp-consent-inner { padding: 1.25rem 1.25rem 1.1rem; }
    .t-republica .rp-consent-actions { flex-direction: column; align-items: stretch; }
    .t-republica .rp-consent-actions .rp-consent-toggle { margin-left: 0; }
}
@media (prefers-reduced-motion: reduce) {
    .t-republica .rp-consent-switch,
    .t-republica .rp-consent-switch::before { transition: none; }
}

/* Tlačítko „Nastavení cookies" v patičce: vypadá jako odkaz Ochrana osobních údajů. */
.t-republica .rp-footer-legal--button { background: none; border: 0; padding: 0; margin: 0; font: inherit; letter-spacing: inherit; cursor: pointer; }
.t-republica .rp-footer-legal--button:focus-visible { outline: 3px solid var(--rp-cream); outline-offset: 3px; }

/* Tabulka cookies v zásadách (Privacy/default.latte, jen s GTM). */
.t-republica .rp-legal-table-wrap { overflow-x: auto; margin: 0 0 1rem; }
.t-republica .rp-legal-table { width: 100%; border-collapse: collapse; font-size: 0.9375rem; line-height: 1.45; }
.t-republica .rp-legal-table th,
.t-republica .rp-legal-table td { padding: 0.55rem 0.6rem; border-bottom: 1px solid #d9d4c4; text-align: left; vertical-align: top; }
.t-republica .rp-legal-table th { color: var(--rp-black); font-weight: 700; }
.t-republica .rp-legal-table code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.875em; white-space: nowrap; }

/* --------------------------------------------- dotazník a výherní formulář --
   Stránky core na `.page-card` (dotazník /dotaznik/<token>, výherní formulář):
   karta má stejné krémové pozadí jako registrace, pole dědí z registrace přes
   `:is(...)` výš (bílá, bez rámečku, 3px). Tady jen to, co registrace nemá:
   textarea, radio, volby dotazníku a zlaté tlačítko odeslání. */
.t-republica .rp-main > .page-card { background: var(--rp-cream); color: var(--rp-label); }
.t-republica .rp-main > .page-card h1 { font-family: var(--font-display, inherit); font-size: clamp(1.75rem, 4vw, 2.5rem); line-height: 1.1; color: var(--rp-black); }
.t-republica .rp-main > .page-card .form-row + .form-row { margin-top: 1.75rem; }
.t-republica .rp-main > .page-card textarea {
    width: 100%;
    min-height: 8rem;
    background-color: #ffffff;
    border: 0;
    border-radius: 3px;
    padding: 0.9rem 1rem 0.9rem 1.625rem;
    font-family: var(--font-body);
    font-weight: 500;
    font-size: 1.125rem;
    line-height: 1.5;
    color: var(--rp-label);
    box-sizing: border-box;
    resize: vertical;
}
.t-republica .rp-main > .page-card textarea:focus-visible { outline: 3px solid var(--rp-black); outline-offset: 2px; }
.t-republica .rp-main > .page-card .form-choices { gap: 0.75rem; }
/* Popisek otázky s volbami: pravidlo registrace pro řádek s checkboxem ho odsazuje, tady je nad volbami. */
.t-republica .rp-main > .page-card .form-row:has(.form-choices) > label:not(.form-choice) { padding-left: 0; font-weight: 700; }
.t-republica .rp-main > .page-card .form-row:has(.form-choices) label.form-choice {
    font-weight: 500;
    padding-left: 0;
    margin-bottom: 0;
    align-items: center;
}
.t-republica .rp-main > .page-card input[type="checkbox"],
.t-republica .rp-main > .page-card input[type="radio"] { flex: 0 0 auto; margin-top: 0; }
.t-republica .rp-main > .page-card input[type="radio"] {
    width: 1.625rem;
    height: 1.625rem;
    border: 0;
    border-radius: 50%;
    background: #ffffff center / 0.75rem no-repeat;
}
.t-republica .rp-main > .page-card input[type="radio"]:checked {
    background-color: #ffffff;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='4' fill='%23000'/%3E%3C/svg%3E");
}
.t-republica .rp-main > .page-card input[type="submit"],
.t-republica .rp-main > .page-card button[type="submit"] {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 13.75rem; min-height: 4.5rem; padding: 0 2.75rem;
    border: 0; border-radius: 10px;
    background: var(--rp-gold); color: var(--rp-black);
    font-family: var(--font-button); font-weight: 700; font-size: 1.375rem; line-height: 1; letter-spacing: 0.02em; text-transform: uppercase;
    cursor: pointer; transition: transform .15s ease, filter .15s ease;
}
.t-republica .rp-main > .page-card input[type="submit"]:hover,
.t-republica .rp-main > .page-card button[type="submit"]:hover { filter: brightness(1.06); transform: translateY(-1px); }
.t-republica .rp-main > .page-card input[type="submit"]:focus-visible { outline: 3px solid var(--rp-black); outline-offset: 3px; }
