/* ==========================================================================
   Jaroslav Seifert 125 – veřejná část
   Typografický „literární tisk“: papír, inkoust, vínová a zlatá.
   ========================================================================== */

:root {
    --paper:        #f7f4ee;
    --paper-card:   #fffdfa;
    --paper-deep:   #efe9df;
    --ink:          #15120f;
    --ink-soft:     #5d554b;
    --ink-faint:    #938a7e;
    --line:         rgba(21, 18, 15, .14);
    --line-soft:    rgba(21, 18, 15, .07);
    --accent:       #8d2b2b;
    --accent-dark:  #6f2121;
    --gold:         #a8863c;
    --green:        #3f6b46;

    --serif: "Fraunces", "Iowan Old Style", Georgia, "Times New Roman", serif;
    --sans:  "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

    --radius:    14px;
    --radius-sm: 9px;
    --shadow:    0 1px 2px rgba(21, 18, 15, .04), 0 12px 32px -18px rgba(21, 18, 15, .22);
    --shadow-lg: 0 2px 4px rgba(21, 18, 15, .05), 0 28px 60px -28px rgba(21, 18, 15, .3);

    --wrap: 1120px;
    color-scheme: light;
}

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
    margin: 0;
    background: var(--paper);
    color: var(--ink);
    font-family: var(--sans);
    font-size: 17px;
    line-height: 1.6;
    font-weight: 350;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

/* jemná papírová textura – čistě CSS, bez obrázků */
body::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    opacity: .5;
    background:
        radial-gradient(900px 500px at 85% -10%, rgba(168, 134, 60, .10), transparent 70%),
        radial-gradient(700px 420px at 5% 8%, rgba(141, 43, 43, .06), transparent 70%);
}

img { max-width: 100%; height: auto; }

a { color: var(--accent); text-decoration: none; text-underline-offset: 3px; }
a:hover { text-decoration: underline; }

h1, h2, h3, h4 {
    font-family: var(--serif);
    font-weight: 400;
    line-height: 1.08;
    letter-spacing: -.015em;
    margin: 0;
    font-variation-settings: "SOFT" 0, "WONK" 0;
}

.wrap {
    width: 100%;
    max-width: var(--wrap);
    margin-inline: auto;
    padding-inline: 24px;
    position: relative;
    z-index: 1;
}

.sr-only {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* ------------------------------------------------------------------ hlavička */

.topbar {
    position: sticky;
    top: 0;
    z-index: 50;
    background: color-mix(in srgb, var(--paper) 82%, transparent);
    backdrop-filter: saturate(160%) blur(12px);
    border-bottom: 1px solid var(--line-soft);
}

.topbar__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    min-height: 62px;
}

.brand {
    display: inline-flex;
    align-items: baseline;
    gap: 9px;
    font-family: var(--serif);
    font-size: 19px;
    letter-spacing: -.01em;
    color: var(--ink);
}
.brand:hover { text-decoration: none; }
.brand b { font-weight: 500; }
.brand i {
    font-style: normal;
    font-size: 13px;
    font-family: var(--sans);
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--gold);
}

.topbar__meta {
    font-size: 13.5px;
    letter-spacing: .02em;
    color: var(--ink-soft);
}
.topbar__meta span { color: var(--line); margin-inline: 10px; }

/* ---------------------------------------------------------------------- hero */

.hero {
    position: relative;
    padding: clamp(56px, 11vw, 130px) 0 clamp(40px, 6vw, 64px);
    overflow: hidden;
}

.hero__ghost {
    position: absolute;
    right: 0;
    top: clamp(10px, 4vw, 40px);
    font-family: var(--serif);
    font-size: clamp(180px, 26vw, 380px);
    line-height: .76;
    font-weight: 500;
    letter-spacing: -.04em;
    color: transparent;
    -webkit-text-stroke: 1.5px rgba(141, 43, 43, .16);
    user-select: none;
    pointer-events: none;
    z-index: 0;
}

.hero__inner { position: relative; z-index: 1; max-width: 780px; }

.eyebrow {
    display: flex;
    align-items: center;
    gap: 14px;
    font-size: 12.5px;
    font-weight: 500;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--gold);
    margin-bottom: 26px;
}
.eyebrow::after {
    content: "";
    flex: 1;
    height: 1px;
    background: linear-gradient(90deg, var(--line) 0%, transparent 100%);
}

.hero h1 {
    font-size: clamp(44px, 8.2vw, 96px);
    letter-spacing: -.03em;
    margin-bottom: 22px;
}
.hero h1 em {
    font-style: italic;
    color: var(--accent);
    font-variation-settings: "SOFT" 40, "WONK" 1;
}

.hero__lede {
    font-family: var(--serif);
    font-size: clamp(20px, 2.6vw, 27px);
    line-height: 1.42;
    color: var(--ink-soft);
    font-weight: 300;
    max-width: 34ch;
    margin: 0 0 34px;
}

.hero__facts {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 34px;
    padding-top: 26px;
    border-top: 1px solid var(--line);
    font-size: 14.5px;
    color: var(--ink-soft);
}
.hero__facts b { color: var(--ink); font-weight: 500; }

.hero__actions { margin-top: 34px; display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }

/* -------------------------------------------------------------------- tlačítka */

.btn {
    --btn-bg: var(--ink);
    --btn-fg: var(--paper-card);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 15px 28px;
    border: 1px solid transparent;
    border-radius: 999px;
    background: var(--btn-bg);
    color: var(--btn-fg);
    font: inherit;
    font-size: 15.5px;
    font-weight: 500;
    letter-spacing: .005em;
    cursor: pointer;
    transition: transform .18s ease, box-shadow .18s ease, background .18s ease, color .18s ease;
    text-align: center;
}
.btn:hover { text-decoration: none; transform: translateY(-1px); box-shadow: var(--shadow); }
.btn:active { transform: translateY(0); }
.btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

.btn--accent { --btn-bg: var(--accent); }
.btn--accent:hover { --btn-bg: var(--accent-dark); }
.btn--ghost {
    --btn-bg: transparent;
    --btn-fg: var(--ink);
    border-color: var(--line);
}
.btn--ghost:hover { --btn-bg: var(--paper-deep); }
.btn--lg { padding: 18px 40px; font-size: 17px; }
.btn--block { width: 100%; }
.btn[disabled] { opacity: .45; cursor: not-allowed; transform: none; box-shadow: none; }

/* -------------------------------------------------------------------- sekce */

.section { padding: clamp(48px, 7vw, 88px) 0; }
.section--alt { background: linear-gradient(180deg, transparent, var(--paper-deep) 18%, var(--paper-deep) 82%, transparent); }

.section__head { max-width: 620px; margin-bottom: clamp(32px, 5vw, 52px); }
.section__head h2 {
    font-size: clamp(30px, 4.4vw, 46px);
    margin-bottom: 14px;
}
.section__head p { color: var(--ink-soft); margin: 0; font-size: 17px; }

/* Na širokých obrazovkách text nezůstává v úzkém sloupci vlevo:
   nadpis a odstavec se rozdělí vedle sebe přes celou šířku. */
@media (min-width: 1001px) {
    .section__head {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: clamp(30px, 5vw, 72px);
        align-items: end;
        max-width: none;
    }
    .section__head h2 { margin-bottom: 0; }
    .section__head p { padding-bottom: 6px; }
}

/* --------------------------------------------------------------------- karty */

.events {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(20px, 2.6vw, 30px);
}

.event {
    position: relative;
    display: flex;
    flex-direction: column;
    background: var(--paper-card);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: clamp(26px, 3.4vw, 40px);
    box-shadow: var(--shadow);
    transition: box-shadow .25s ease, border-color .25s ease, transform .25s ease;
}
.event:has(input:checked) {
    border-color: color-mix(in srgb, var(--accent) 42%, var(--line));
    box-shadow: var(--shadow-lg);
}
.event--closed { background: var(--paper-deep); box-shadow: none; }

.event__index {
    font-family: var(--serif);
    font-size: 13px;
    font-weight: 500;
    letter-spacing: .22em;
    color: var(--gold);
    text-transform: uppercase;
    margin-bottom: 18px;
    display: flex;
    align-items: center;
    gap: 12px;
}
.event__index::after { content: ""; flex: 1; height: 1px; background: var(--line-soft); }

.event__kicker {
    font-size: 12.5px;
    font-weight: 500;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--accent);
    margin-bottom: 10px;
}

.event h3 {
    font-size: clamp(24px, 3vw, 31px);
    letter-spacing: -.02em;
    margin-bottom: 16px;
}

.event__when {
    display: flex;
    align-items: baseline;
    gap: 12px;
    font-family: var(--serif);
    margin-bottom: 18px;
}
.event__time {
    font-size: 34px;
    font-weight: 500;
    letter-spacing: -.02em;
    line-height: 1;
}
.event__date { font-size: 16px; color: var(--ink-soft); }

.event__desc { color: var(--ink-soft); font-size: 15.5px; margin: 0 0 20px; }

.event__place {
    display: grid;
    gap: 4px;
    padding: 16px 18px;
    background: var(--paper);
    border: 1px solid var(--line-soft);
    border-radius: var(--radius-sm);
    font-size: 14.5px;
    margin-bottom: 24px;
}
.event--closed .event__place { background: var(--paper-card); }
.event__place b { font-weight: 500; }
.event__place span { color: var(--ink-faint); font-size: 13.5px; }

/* obsazenost */

.capacity { margin-top: auto; padding-top: 4px; }
.capacity__row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    font-size: 13.5px;
    color: var(--ink-soft);
    margin-bottom: 9px;
}
.capacity__row b { color: var(--ink); font-weight: 500; }
.capacity__bar {
    height: 5px;
    border-radius: 999px;
    background: var(--line-soft);
    overflow: hidden;
}
.capacity__fill {
    height: 100%;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--gold), var(--accent));
    transition: width .4s ease;
}

.badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    border-radius: 999px;
    font-size: 12.5px;
    font-weight: 500;
    letter-spacing: .02em;
    border: 1px solid transparent;
}
.badge--full  { background: rgba(141, 43, 43, .09); color: var(--accent); border-color: rgba(141, 43, 43, .2); }
.badge--open  { background: rgba(63, 107, 70, .1);  color: var(--green);  border-color: rgba(63, 107, 70, .22); }
.badge--muted { background: var(--paper-deep); color: var(--ink-soft); border-color: var(--line); }

/* ------------------------------------------------------------------- výběr účasti */

.choice-group { margin-top: 26px; padding-top: 24px; border-top: 1px dashed var(--line); }

.choice-group__label {
    display: block;
    font-size: 13px;
    font-weight: 500;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--ink-soft);
    margin-bottom: 14px;
}

.choices { display: flex; flex-wrap: wrap; gap: 8px; }

.choice { position: relative; display: flex; flex: 1 1 auto; min-width: 0; cursor: pointer; }
.choice input {
    position: absolute;
    opacity: 0;
    width: 1px; height: 1px;
}
.choice__box {
    flex: 1;
    display: flex;
    align-items: baseline;
    gap: 7px;
    padding: 12px 14px;
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    background: var(--paper);
    transition: all .16s ease;
    white-space: nowrap;
}
.choice__box strong { font-weight: 500; font-size: 15px; }
.choice__box span { font-size: 12.5px; color: var(--ink-faint); }

.choice:hover .choice__box { border-color: var(--ink-faint); }
.choice input:focus-visible + .choice__box { outline: 2px solid var(--accent); outline-offset: 2px; }
.choice input:checked + .choice__box {
    background: var(--ink);
    border-color: var(--ink);
    color: var(--paper-card);
}
.choice input:checked + .choice__box span { color: rgba(255, 253, 250, .7); }
.choice input:disabled + .choice__box { opacity: .4; cursor: not-allowed; }

.choice--no { flex: 0 0 auto; }
.choice--no input:checked + .choice__box {
    background: var(--paper-deep);
    border-color: var(--line);
    color: var(--ink-soft);
}

/* ------------------------------------------------------------------- formulář */

.form-card {
    background: var(--paper-card);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: clamp(26px, 3.6vw, 44px);
    box-shadow: var(--shadow);
}

.grid-2 {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px 20px;
}

.field { display: grid; gap: 7px; }
.field--full { grid-column: 1 / -1; }

.field label {
    font-size: 13.5px;
    font-weight: 500;
    letter-spacing: .01em;
    color: var(--ink-soft);
}
.field label .req { color: var(--accent); }

.field input[type="text"],
.field input[type="email"],
.field input[type="tel"],
.field input[type="password"],
.field textarea,
.field select {
    width: 100%;
    padding: 13px 15px;
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    background: var(--paper);
    color: var(--ink);
    font: inherit;
    font-size: 16px;
    transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}
.field textarea { resize: vertical; min-height: 96px; line-height: 1.55; }
.field input:focus,
.field textarea:focus,
.field select:focus {
    outline: none;
    background: var(--paper-card);
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(141, 43, 43, .12);
}
.field input::placeholder, .field textarea::placeholder { color: var(--ink-faint); }
.field .hint { font-size: 12.5px; color: var(--ink-faint); }
.field--error input, .field--error textarea { border-color: var(--accent); background: rgba(141, 43, 43, .03); }
.field .error { font-size: 13px; color: var(--accent); }

.check {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 13px;
    align-items: start;
    font-size: 14.5px;
    color: var(--ink-soft);
    cursor: pointer;
}
.check input[type="checkbox"] {
    appearance: none;
    width: 21px; height: 21px;
    margin: 1px 0 0;
    border: 1px solid var(--line);
    border-radius: 6px;
    background: var(--paper);
    cursor: pointer;
    display: grid;
    place-content: center;
    transition: all .15s ease;
    flex: none;
}
.check input[type="checkbox"]::after {
    content: "";
    width: 10px; height: 6px;
    border-left: 2px solid var(--paper-card);
    border-bottom: 2px solid var(--paper-card);
    transform: rotate(-45deg) translateY(-1px);
    opacity: 0;
    transition: opacity .12s ease;
}
.check input[type="checkbox"]:checked { background: var(--ink); border-color: var(--ink); }
.check input[type="checkbox"]:checked::after { opacity: 1; }
.check input[type="checkbox"]:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* souhrn nad odesláním */

.summary {
    margin: 28px 0 0;
    padding: 20px 22px;
    border: 1px solid var(--line);
    border-left: 3px solid var(--gold);
    border-radius: var(--radius-sm);
    background: var(--paper);
    font-size: 14.5px;
}
.summary__title {
    font-size: 12.5px;
    font-weight: 500;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--ink-faint);
    margin-bottom: 10px;
}
.summary ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 7px; }
.summary li { display: flex; justify-content: space-between; gap: 16px; }
.summary li b { font-weight: 500; }
.summary--empty { border-left-color: var(--line); color: var(--ink-faint); }

.form-foot {
    margin-top: 28px;
    padding-top: 26px;
    border-top: 1px solid var(--line);
    display: flex;
    flex-direction: column;
    gap: 20px;
}

/* --------------------------------------------------------------------- hlášky */

.alert {
    display: grid;
    gap: 4px;
    padding: 16px 20px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--line);
    background: var(--paper-card);
    margin-bottom: 24px;
    font-size: 15px;
}
.alert b { font-weight: 500; }
.alert--error {
    border-color: transparent;
    background: var(--accent-dark);
    color: #fbeeec;
    box-shadow: 0 6px 20px rgba(111, 33, 33, .22);
}
.alert--error b { color: #fff; font-size: 16px; }
.alert--error ul { color: #f6ddd9; }
.alert--success { border-color: rgba(63, 107, 70, .32);  background: rgba(63, 107, 70, .06); color: var(--green); }
.alert ul { margin: 6px 0 0; padding-left: 18px; }

/* ------------------------------------------------------------------ potvrzení */

.confirm { text-align: center; max-width: 680px; margin-inline: auto; }
.confirm__mark {
    width: 62px; height: 62px;
    margin: 0 auto 28px;
    border-radius: 50%;
    border: 1px solid rgba(63, 107, 70, .4);
    background: rgba(63, 107, 70, .08);
    display: grid;
    place-content: center;
}
.confirm__mark::after {
    content: "";
    width: 19px; height: 11px;
    border-left: 2px solid var(--green);
    border-bottom: 2px solid var(--green);
    transform: rotate(-45deg) translate(1px, -2px);
}
.confirm h1 { font-size: clamp(32px, 5.4vw, 52px); margin-bottom: 16px; }
.confirm__lede { color: var(--ink-soft); font-size: 18px; margin: 0 auto 36px; max-width: 52ch; }

.ticket {
    text-align: left;
    background: var(--paper-card);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    overflow: hidden;
}
.ticket__head {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    justify-content: space-between;
    align-items: center;
    padding: 22px 26px;
    border-bottom: 1px dashed var(--line);
    background: var(--paper);
}
.ticket__code {
    font-family: var(--serif);
    font-size: 27px;
    font-weight: 500;
    letter-spacing: .12em;
}
.ticket__body { padding: 10px 26px 26px; }
.ticket__item { padding: 20px 0; border-bottom: 1px solid var(--line-soft); }
.ticket__item:last-child { border-bottom: 0; }
.ticket__item h3 { font-size: 21px; margin-bottom: 8px; }
.ticket__item p { margin: 0; color: var(--ink-soft); font-size: 14.5px; }
.ticket__persons {
    display: inline-block;
    margin-top: 10px;
    font-size: 13px;
    font-weight: 500;
    padding: 4px 11px;
    border-radius: 999px;
    background: var(--paper-deep);
}

/* ------------------------------------------------------------------- patička */

.footer {
    margin-top: clamp(60px, 8vw, 100px);
    border-top: 1px solid var(--line);
    padding: 44px 0 56px;
    font-size: 14px;
    color: var(--ink-soft);
}
.footer__inner { display: flex; flex-wrap: wrap; gap: 22px; justify-content: space-between; align-items: flex-start; }
.footer a { color: var(--ink-soft); text-decoration: underline; text-decoration-color: var(--line); }
.footer a:hover { color: var(--accent); }
.footer__name { font-family: var(--serif); font-size: 17px; color: var(--ink); }

/* ------------------------------------------------------------------ responzivní */

@media (min-width: 1001px) {
    .event h3 { min-height: 2.16em; }
}

@media (max-width: 1000px) {
    .events { grid-template-columns: 1fr; }
    .hero__ghost { font-size: clamp(170px, 46vw, 280px); opacity: .75; }
}

@media (max-width: 600px) {
    body { font-size: 16px; }
    .wrap { padding-inline: 18px; }
    .grid-2 { grid-template-columns: 1fr; }
    .topbar__meta { display: none; }
    .choices { flex-direction: column; }
    .btn--lg { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
    * { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

@media print {
    .topbar, .footer, .btn { display: none; }
    body::before { display: none; }
    body { background: #fff; }
}
