/*
 * Politik im Gespräch · K.P. Beteiligungs- & Investment GmbH
 * Storefront theme. Every rule is scoped to .kp-politik-page (set on <body>
 * by layouts/smact.blade.php) so nothing leaks into the backoffice.
 * Fonts are the local project files (identical to the handover set).
 */

@font-face {
    font-family: 'KP Editorial';
    font-style: normal;
    font-weight: 300 700;
    font-display: swap;
    src: url('/web/fonts/cormorant-garamond-latin-normal.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: 'KP Editorial';
    font-style: normal;
    font-weight: 300 700;
    font-display: swap;
    src: url('/web/fonts/cormorant-garamond-latin-ext-normal.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, 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: 'KP Editorial';
    font-style: italic;
    font-weight: 300 700;
    font-display: swap;
    src: url('/web/fonts/cormorant-garamond-latin-italic.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: 'KP Editorial';
    font-style: italic;
    font-weight: 300 700;
    font-display: swap;
    src: url('/web/fonts/cormorant-garamond-latin-ext-italic.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, 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: 'KP Sans';
    font-style: normal;
    font-weight: 200 800;
    font-display: swap;
    src: url('/web/fonts/manrope-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: 'KP Sans';
    font-style: normal;
    font-weight: 200 800;
    font-display: swap;
    src: url('/web/fonts/manrope-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, 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;
}

/* ── Tokens ─────────────────────────────────────────────── */
.kp-politik-page {
    --kp-ink: #171831;
    --kp-cream: #f3f0e9;
    --kp-paper: #e9e5de;
    --kp-panel: #ebe7df;
    --kp-wine: #791b49;
    --kp-wine-dark: #63203f;
    --kp-line: #d5d0c7;
    --kp-muted: #696873;
    /* accent italics: #b4829c on navy (handover); slightly deeper on paper for >= 3:1 contrast */
    --kp-accent-dark-bg: #b4829c;
    --kp-accent-light-bg: #a46f8b;
    --kp-focus: #b56a8e;
    --kp-serif: 'KP Editorial', 'Cormorant Garamond', Georgia, serif;
    --kp-sans: 'KP Sans', 'Manrope', Arial, sans-serif;
    --kp-pad-x: 7%;
    --kp-section-x: 9%;
}

html.kp-politik-root {
    scroll-behavior: smooth;
    scroll-padding-top: 24px;
    background: #f3f0e9;
}

body.kp-politik-page {
    margin: 0;
    background: var(--kp-cream);
    color: var(--kp-ink);
    font-family: var(--kp-sans) !important;
    font-size: 15px !important;
    font-weight: 400;
    line-height: 1.8;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

.kp-politik-page *,
.kp-politik-page *::before,
.kp-politik-page *::after { box-sizing: border-box; }

.kp-politik-page a { color: inherit; text-decoration: none; }
.kp-politik-page button,
.kp-politik-page input,
.kp-politik-page select,
.kp-politik-page textarea { font-family: inherit; }

.kp-politik-page h1,
.kp-politik-page h2,
.kp-politik-page h3,
.kp-politik-page h4,
.kp-politik-page p { margin-top: 0; }

.kp-politik-page h1,
.kp-politik-page h2,
.kp-politik-page h3,
.kp-politik-page h4,
.kp-politik-page h5,
.kp-politik-page h6 { color: inherit; }

.kp-politik-page em { font-weight: 400; color: var(--kp-accent-light-bg); }

.kp-politik-page a:focus-visible,
.kp-politik-page button:focus-visible,
.kp-politik-page summary:focus-visible,
.kp-politik-page .btn.smact:focus-visible {
    outline: 3px solid var(--kp-focus) !important;
    outline-offset: 6px;
}
.kp-politik-page input:focus-visible,
.kp-politik-page select:focus-visible,
.kp-politik-page textarea:focus-visible {
    outline: 3px solid var(--kp-focus) !important;
    outline-offset: 2px;
    box-shadow: none;
}

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

/* ── Skip link ─────────────────────────────────────────── */
.kp-politik-page .kp-skip {
    position: absolute;
    left: 12px;
    top: -80px;
    z-index: 1100;
    background: #fff;
    color: var(--kp-ink);
    padding: 10px 14px;
    font-size: 13px;
    font-weight: 600;
}
.kp-politik-page .kp-skip:focus { top: 10px; }

/* ── Shared type helpers ───────────────────────────────── */
.kp-politik-page .kp-eyebrow {
    display: block;
    font-family: var(--kp-sans);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 2.8px;
    line-height: 1.6;
    text-transform: uppercase;
    margin: 0 0 25px;
}

.kp-politik-page .kp-display,
.kp-politik-page .kp-landing h1,
.kp-politik-page .kp-landing h2,
.kp-politik-page .kp-person-copy h3,
.kp-politik-page .kp-topics h3,
.kp-politik-page .kp-time h3 {
    font-family: var(--kp-serif) !important;
    font-weight: 500;
    line-height: .97;
    letter-spacing: -2px;
}

.kp-politik-page .kp-landing h2 {
    font-size: clamp(55px, 5.2vw, 88px) !important;
    margin-bottom: 35px;
}

/* ── Buttons & links ───────────────────────────────────── */
.kp-politik-page .kp-button {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 30px;
    width: max-content;
    max-width: 100%;
    background: var(--kp-wine);
    color: #fff;
    padding: 16px 24px;
    font-family: var(--kp-sans);
    font-size: 12px;
    font-weight: 600;
    line-height: 1.5;
    letter-spacing: .2px;
    border: 0;
    border-radius: 0;
    cursor: pointer;
    text-align: left;
    transition: background-color .2s, transform .2s;
}
.kp-politik-page .kp-button:hover { background: var(--kp-wine-dark); color: #fff; transform: translateY(-2px); }
.kp-politik-page .kp-button--cream { background: var(--kp-cream); color: var(--kp-ink); }
.kp-politik-page .kp-button--cream:hover { background: #ded7cb; color: var(--kp-ink); }
.kp-politik-page .kp-button--block { width: 100%; }
.kp-politik-page .kp-button:disabled,
.kp-politik-page .kp-button[aria-disabled="true"] {
    background: #d6cbd0;
    color: #67505d;
    cursor: default;
    transform: none;
}

.kp-politik-page .kp-text-link {
    display: inline-flex;
    gap: 35px;
    font-size: 11px;
    font-weight: 500;
    line-height: 1.5;
    border-bottom: 1px solid var(--kp-wine);
    padding: 8px 0;
}
.kp-politik-page .kp-text-link span { color: var(--kp-wine); }
.kp-politik-page .kp-text-link:hover { color: var(--kp-wine); }

/* ── Header ────────────────────────────────────────────── */
.kp-politik-page .kp-header {
    position: relative;
    z-index: 5;
    height: 110px;
    padding: 23px 5.5%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    background: #fff;
}
.kp-politik-page .kp-brand {
    display: block;
    flex-shrink: 0;
    width: 165px;
    height: 64px;
    overflow: hidden;
}
.kp-politik-page .kp-brand img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}
.kp-politik-page .kp-nav {
    display: flex;
    gap: 38px;
    align-items: center;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.5;
}
.kp-politik-page .kp-nav a:not(.kp-nav-ticket):hover { color: var(--kp-wine); }
.kp-politik-page .kp-nav-ticket {
    border-bottom: 1px solid var(--kp-wine);
    padding: 10px 0;
    white-space: nowrap;
}
.kp-politik-page .kp-nav-ticket span { margin-left: 35px; color: var(--kp-wine); }
.kp-politik-page .kp-nav-cart {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    white-space: nowrap;
}
.kp-politik-page .kp-nav-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    height: 22px;
    padding: 0 6px;
    background: var(--kp-wine);
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
}

/* ── Status messages ───────────────────────────────────── */
.kp-politik-page .kp-flash-info {
    background: var(--kp-panel);
    border-bottom: 1px solid var(--kp-line);
    color: var(--kp-ink);
    padding: 14px var(--kp-pad-x);
    font-size: 13px;
    font-weight: 600;
    text-align: center;
}
.kp-politik-page #flash {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    margin: 0;
    padding: 14px 20px;
    z-index: 1040;
    background: var(--kp-ink) !important;
    color: var(--kp-cream);
    font-size: 13px;
    font-weight: 600;
    line-height: 1.5;
    text-align: center;
    pointer-events: none;
    border-bottom: 2px solid var(--kp-wine);
}

/* ── Main ──────────────────────────────────────────────── */
.kp-politik-page .kp-main { display: block; }
.kp-politik-page #inhalt:focus { outline: none; }
.kp-politik-page .kp-main--landing { padding: 0; margin: 0; max-width: none; width: 100%; }
.kp-politik-page .kp-main--flow {
    padding-top: 56px;
    padding-bottom: 96px;
    min-height: 50vh;
}

/* ── Hero ──────────────────────────────────────────────── */
.kp-politik-page .kp-hero {
    position: relative;
    background: var(--kp-ink);
    color: var(--kp-cream);
    min-height: 760px;
    padding: 83px var(--kp-pad-x) 115px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4%;
}
.kp-politik-page .kp-hero .kp-eyebrow { color: #c5b5bd; }
.kp-politik-page .kp-hero h1 {
    font-size: clamp(82px, 8.5vw, 145px) !important;
    margin-bottom: 30px;
    color: var(--kp-cream);
}
.kp-politik-page .kp-hero em,
.kp-politik-page .kp-tickets em { color: var(--kp-accent-dark-bg); }
.kp-politik-page .kp-hero-lead { font-size: 15px; color: #d1cdd5; line-height: 1.8; margin-bottom: 0; }
.kp-politik-page .kp-hero-names { font-size: 12px; letter-spacing: .2px; margin: 26px 0 31px; }
.kp-politik-page .kp-hero-names span { color: var(--kp-accent-dark-bg); margin: 0 12px; }
.kp-politik-page .kp-hero-location { font-size: 11px; color: #aaa7b8; margin: 17px 0 0; }
.kp-politik-page .kp-hero-art { position: relative; min-height: 520px; margin-top: 12px; }
.kp-politik-page .kp-portrait { position: absolute; overflow: hidden; background: #272635; margin: 0; }
.kp-politik-page .kp-portrait img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(100%);
}
.kp-politik-page .kp-portrait::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(transparent 55%, #111223b3);
}
.kp-politik-page .kp-portrait span {
    position: absolute;
    bottom: 22px;
    left: 23px;
    z-index: 1;
    font-size: 11px;
    line-height: 1.4;
    letter-spacing: .4px;
    color: var(--kp-cream);
}
.kp-politik-page .kp-portrait--bosbach { width: 62%; height: 400px; left: 0; top: 0; }
.kp-politik-page .kp-portrait--bosbach img { object-position: 45% 20%; }
.kp-politik-page .kp-portrait--pietzak { width: 53%; height: 370px; right: 0; top: 145px; border: 8px solid var(--kp-ink); }
.kp-politik-page .kp-portrait--pietzak img { object-position: 65% 25%; }
.kp-politik-page .kp-art-caption {
    position: absolute;
    top: 435px;
    left: 0;
    font-family: var(--kp-serif);
    font-size: 25px;
    line-height: 1.2;
    color: #c6bac4;
    margin: 0;
}
.kp-politik-page .kp-art-caption i { color: #a67e95; }
.kp-politik-page .kp-art-number {
    position: absolute;
    right: 8px;
    top: 30px;
    writing-mode: vertical-rl;
    font-size: 10px;
    letter-spacing: 4px;
    color: #a29aaa;
}
.kp-politik-page .kp-scroll {
    position: absolute;
    bottom: 30px;
    left: var(--kp-pad-x);
    font-size: 11px;
    color: #a6a1b2;
}
.kp-politik-page .kp-scroll span { margin-left: 55px; }
.kp-politik-page .kp-scroll:hover { color: var(--kp-cream); }

/* ── Facts strip ───────────────────────────────────────── */
.kp-politik-page .kp-facts {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 30px;
    padding: 33px var(--kp-pad-x);
    margin: 0;
    border-bottom: 1px solid var(--kp-line);
}
.kp-politik-page .kp-facts dt,
.kp-politik-page .kp-facts small {
    display: block;
    font-size: 10px;
    font-weight: 500;
    color: var(--kp-muted);
}
.kp-politik-page .kp-facts dt { text-transform: uppercase; letter-spacing: 1.8px; margin-bottom: 6px; }
.kp-politik-page .kp-facts small { font-size: 11px; }
.kp-politik-page .kp-facts dd { margin: 0; }
.kp-politik-page .kp-facts strong { font-size: 13px; font-weight: 600; }

/* ── Sections ──────────────────────────────────────────── */
.kp-politik-page .kp-section { padding: 100px var(--kp-section-x); scroll-margin-top: 20px; }

.kp-politik-page .kp-intro-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10%; }
.kp-politik-page .kp-intro-grid p { max-width: 520px; color: var(--kp-muted); font-size: 13px; margin-bottom: 1rem; }
.kp-politik-page .kp-intro-grid .kp-large { font-size: 19px; color: var(--kp-ink); line-height: 1.65; }
.kp-politik-page .kp-intro-grid .kp-text-link { margin-top: 10px; }

.kp-politik-page .kp-topics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 45px; margin-top: 70px; }
.kp-politik-page .kp-topics article { border-top: 1px solid var(--kp-line); padding-top: 18px; }
.kp-politik-page .kp-topics article > span { font-size: 10px; color: var(--kp-wine); }
.kp-politik-page .kp-topics h3 { font-size: 43px !important; margin: 24px 0 18px; letter-spacing: -1px; }
.kp-politik-page .kp-topics p { font-size: 12px; color: var(--kp-muted); max-width: 280px; margin-bottom: 0; }

.kp-politik-page .kp-people { background: var(--kp-paper); }
.kp-politik-page .kp-section-heading { margin-bottom: 65px; }
.kp-politik-page .kp-section-heading h2 { margin-bottom: 0; }
.kp-politik-page .kp-person-row { display: grid; grid-template-columns: 1fr 1fr; gap: 11%; align-items: center; margin-top: 70px; }
.kp-politik-page .kp-person-photo { height: 470px; overflow: hidden; background: var(--kp-ink); margin: 0; }
.kp-politik-page .kp-person-photo img { display: block; width: 100%; height: 100%; object-fit: cover; filter: grayscale(100%); }
.kp-politik-page .kp-person-row--reverse .kp-person-photo { order: 2; }
.kp-politik-page .kp-person-row--reverse .kp-person-copy { order: 1; }
.kp-politik-page .kp-person-row--reverse .kp-person-photo img { object-position: 65% 25%; }
.kp-politik-page .kp-person-copy h3 { font-size: 67px !important; margin-bottom: 20px; }
.kp-politik-page .kp-person-copy .kp-role { color: var(--kp-wine); font-size: 12px; margin-bottom: 25px; }
.kp-politik-page .kp-person-copy .kp-bio { font-size: 13px; color: var(--kp-muted); max-width: 400px; margin-bottom: 0; }
.kp-politik-page .kp-person-detail {
    border-top: 1px solid #ccc6bd;
    padding-top: 20px;
    margin-top: 30px;
    font-size: 11px;
    color: var(--kp-muted);
}
.kp-politik-page .kp-person-detail span { display: block; font-size: 16px; color: var(--kp-ink); margin-bottom: 3px; }

.kp-politik-page .kp-evening { background: var(--kp-wine); color: var(--kp-cream); }
.kp-politik-page .kp-evening em { color: #d4b7c5; }
.kp-politik-page .kp-evening-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 40px; margin-top: 60px; }
.kp-politik-page .kp-time { border-top: 1px solid #ffffff40; padding-top: 20px; }
.kp-politik-page .kp-time > span { font-size: 11px; color: #d6b9c7; }
.kp-politik-page .kp-time h3 { font-size: 35px !important; letter-spacing: -.6px; margin: 28px 0 20px; }
.kp-politik-page .kp-time p { font-size: 12px; color: #e1ced8; margin-bottom: 0; }

.kp-politik-page .kp-venue { display: grid; grid-template-columns: 1fr 1fr; gap: 12%; align-items: center; }
.kp-politik-page .kp-venue-monogram {
    position: relative;
    font-family: var(--kp-serif);
    font-size: 330px;
    line-height: 1;
    text-align: center;
    color: #ded9ce;
    border: 1px solid var(--kp-line);
    padding: 10px 0 60px;
}
.kp-politik-page .kp-venue-monogram span {
    display: block;
    color: var(--kp-ink);
    font-size: 37px;
    font-style: italic;
    letter-spacing: 4px;
    margin-top: -30px;
}
.kp-politik-page .kp-venue-copy h3 {
    font-family: var(--kp-sans) !important;
    font-size: 15px !important;
    font-weight: 500;
    line-height: 1.8;
    letter-spacing: 0;
    margin-bottom: 1rem;
}
.kp-politik-page .kp-venue-copy > p:not(.kp-eyebrow) { font-size: 12px; color: var(--kp-muted); }

/* ── Tickets ───────────────────────────────────────────── */
.kp-politik-page .kp-tickets {
    background: var(--kp-ink);
    color: var(--kp-cream);
    display: grid;
    grid-template-columns: 1.2fr .8fr;
    gap: 15%;
    align-items: center;
}
.kp-politik-page .kp-tickets:has(.kp-ticket ~ .kp-ticket) { align-items: start; }
.kp-politik-page .kp-tickets:has(.kp-ticket ~ .kp-ticket) .kp-tickets-intro { position: sticky; top: 40px; }
.kp-politik-page .kp-tickets-intro > p:not(.kp-eyebrow) { font-size: 12px; color: #c6c0cf; margin-bottom: 0; }
.kp-politik-page .kp-ticket-stack { display: grid; gap: 24px; }
.kp-politik-page .kp-ticket-group-label { color: #c5b5bd; margin: 12px 0 -8px; }
.kp-politik-page .kp-ticket {
    background: var(--kp-cream);
    color: var(--kp-ink);
    padding: 30px 35px;
    position: relative;
}
.kp-politik-page .kp-ticket-top {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 16px;
    border-bottom: 1px solid var(--kp-line);
    padding-bottom: 20px;
}
.kp-politik-page .kp-ticket-top h3,
.kp-politik-page .kp-ticket-top span {
    font-family: var(--kp-sans) !important;
    font-size: 10px !important;
    font-weight: 500;
    line-height: 1.5;
    letter-spacing: 1px;
    text-transform: uppercase;
    margin: 0;
}
.kp-politik-page .kp-ticket-top span { flex-shrink: 0; }
.kp-politik-page .kp-availability {
    display: inline-block;
    margin-top: 16px;
    padding: 4px 10px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .3px;
    border: 1px solid var(--kp-wine);
    color: var(--kp-wine);
}
.kp-politik-page .kp-availability.is-sold { background: var(--kp-wine); color: #fff; }
.kp-politik-page .kp-price {
    font-family: var(--kp-serif);
    font-size: 100px;
    font-weight: 400;
    line-height: 1;
    color: var(--kp-ink);
    margin: 20px 0 0;
    letter-spacing: -1px;
    white-space: nowrap;
}
.kp-politik-page .kp-price span { font-size: 44px; }
.kp-politik-page .kp-per-person { font-size: 11px; color: var(--kp-muted); margin: 14px 0 0; line-height: 1.5; }
.kp-politik-page .kp-ticket-included {
    font-size: 11px;
    border-bottom: 1px solid var(--kp-line);
    padding: 15px 0 25px;
    margin-bottom: 25px;
}
.kp-politik-page .kp-ticket-description { font-size: 12px; color: var(--kp-muted); margin: -10px 0 20px; }
.kp-politik-page .kp-ticket-description p { margin-bottom: .4rem; }
.kp-politik-page .kp-ticket-form { margin: 0; }
.kp-politik-page .kp-qty-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
}
.kp-politik-page .kp-qty-label {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 1.8px;
    text-transform: uppercase;
    color: var(--kp-muted);
    margin: 0;
}
.kp-politik-page .kp-booking-note { font-size: 11px; color: var(--kp-muted); margin: 12px 0 0; line-height: 1.6; }
.kp-politik-page .kp-ticket-details {
    display: inline-block;
    background: none;
    border: 0;
    padding: 0;
    margin: 16px 0 0;
    font-size: 11px;
    font-weight: 600;
    color: var(--kp-ink);
    border-bottom: 1px solid var(--kp-line);
    cursor: pointer;
}
.kp-politik-page .kp-ticket-details:hover { border-bottom-color: var(--kp-wine); color: var(--kp-wine); }
.kp-politik-page .kp-calendar { font-size: 11px; display: block; width: max-content; max-width: 100%; margin-top: 20px; color: var(--kp-wine); }
.kp-politik-page .kp-calendar:hover { text-decoration: underline; text-underline-offset: 3px; }
.kp-politik-page .kp-ticket-empty { font-family: var(--kp-serif); font-size: 28px; line-height: 1.2; margin: 24px 0 8px; }

/* Quantity stepper (jQuery numberstyle plugin output) */
.kp-politik-page .numberstyle-qty {
    display: inline-flex;
    align-items: stretch;
    min-width: 0;
    overflow: visible;
    border: 1px solid var(--kp-line);
    background: #fff;
}
.kp-politik-page .numberstyle-qty input,
.kp-politik-page .numberstyle-qty .qty-btn {
    float: none;
    height: 44px;
    line-height: 44px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    text-align: center;
    background: transparent;
    box-shadow: none;
}
.kp-politik-page .numberstyle-qty .qty-btn {
    width: 44px;
    font-size: 18px;
    font-weight: 500;
    color: var(--kp-ink);
    cursor: pointer;
}
.kp-politik-page .numberstyle-qty .qty-btn:hover { background: var(--kp-cream); color: var(--kp-wine); }
.kp-politik-page .numberstyle-qty .qty-btn.disabled { color: #b9b4bd; cursor: default; background: transparent; }
.kp-politik-page .numberstyle-qty input {
    width: 52px !important;
    font-size: 16px;
    font-weight: 600;
    color: var(--kp-ink);
    border-left: 1px solid var(--kp-line);
    border-right: 1px solid var(--kp-line);
}
.kp-politik-page .numberstyle-qty input:focus-visible { outline-offset: -3px; }

/* Detail drawer */
.kp-politik-page .drawer.kp-drawer {
    background: var(--kp-cream);
    color: var(--kp-ink);
    visibility: hidden;
    transition: right .3s ease-in-out, visibility 0s linear .3s;
}
.kp-politik-page .drawer.kp-drawer.open { visibility: visible; transition: right .3s ease-in-out, visibility 0s; box-shadow: -12px 0 40px rgba(23, 24, 49, .18); }
.kp-politik-page .drawer.kp-drawer .drawer-content { padding: 28px 32px 48px; }
.kp-politik-page .drawer.kp-drawer .drawer-close {
    display: flex;
    margin-left: auto;
    width: 44px;
    height: 44px;
    align-items: center;
    justify-content: center;
    background: var(--kp-cream);
    color: var(--kp-ink);
    font-size: 28px;
    font-weight: 400;
    line-height: 1;
    padding: 0;
}
.kp-politik-page .drawer.kp-drawer h3 {
    font-family: var(--kp-serif) !important;
    font-size: 40px !important;
    font-weight: 500;
    line-height: 1;
    letter-spacing: -1px;
    margin: 0 0 24px;
}
.kp-politik-page .drawer.kp-drawer .drawer-body { font-size: 14px; line-height: 1.7; }
.kp-politik-page .drawer.kp-drawer img { max-width: 100%; height: auto; }

/* Seat-plan modal (only for seat-managed events) */
.kp-politik-page .kp-modal .modal-content { background: var(--kp-cream); color: var(--kp-ink); border-radius: 0; }
.kp-politik-page .kp-modal .modal-title { font-family: var(--kp-serif) !important; font-size: 32px !important; }

/* ── Footer ────────────────────────────────────────────── */
.kp-politik-page .kp-footer {
    padding: 35px var(--kp-pad-x);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 25px;
    font-size: 11px;
    background: var(--kp-cream);
    color: var(--kp-ink);
    border-top: 1px solid var(--kp-line);
}
.kp-politik-page .kp-footer strong {
    display: block;
    font-family: var(--kp-serif);
    font-size: 24px;
    font-weight: 500;
    line-height: 1.3;
}
.kp-politik-page .kp-footer-brand span { color: var(--kp-muted); font-size: 11px; }
.kp-politik-page .kp-footer > a,
.kp-politik-page .kp-footer-legal a { border-bottom: 1px solid var(--kp-line); padding-bottom: 4px; }
.kp-politik-page .kp-footer > a:hover,
.kp-politik-page .kp-footer-legal a:hover { border-bottom-color: var(--kp-wine); color: var(--kp-wine); }
.kp-politik-page .kp-footer-legal { flex-basis: 100%; display: flex; flex-wrap: wrap; gap: 8px 24px; padding-top: 18px; border-top: 1px solid var(--kp-line); }

.kp-politik-page #backToTop {
    position: fixed;
    right: 16px;
    bottom: 16px;
    z-index: 1030;
    width: 44px;
    height: 44px;
    margin: 0 !important;
    padding: 0;
    border: 1px solid #ffffff33;
    border-radius: 0;
    background: var(--kp-ink);
    color: var(--kp-cream);
    font-size: 18px;
    line-height: 1;
    box-shadow: none;
}
.kp-politik-page #backToTop:hover { background: var(--kp-wine); }

/* ── Purchase flow (cart, donation, summary, result, legal, errors) ── */
.kp-politik-page .kp-page-head {
    border-bottom: 1px solid var(--kp-line);
    padding-bottom: 28px;
    margin-bottom: 40px;
}
.kp-politik-page .kp-page-head h1 {
    font-family: var(--kp-serif) !important;
    font-size: clamp(44px, 6vw, 72px) !important;
    font-weight: 500;
    line-height: 1;
    letter-spacing: -1.5px;
    margin: 0;
}
.kp-politik-page .kp-page-head .kp-eyebrow { margin-bottom: 18px; color: var(--kp-wine); }
.kp-politik-page .kp-page-head p { margin: 16px 0 0; color: var(--kp-muted); font-size: 14px; max-width: 640px; }

.kp-politik-page .kp-flow-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px 24px;
    font-size: 12px;
    font-weight: 600;
    margin-bottom: 28px;
}
.kp-politik-page .kp-flow-bar a { border-bottom: 1px solid var(--kp-line); padding-bottom: 3px; }
.kp-politik-page .kp-flow-bar a:hover { color: var(--kp-wine); border-bottom-color: var(--kp-wine); }
.kp-politik-page .kp-flow-bar .kp-flow-count { color: var(--kp-wine); }

.kp-politik-page .kp-flow h2,
.kp-politik-page .kp-flow h3,
.kp-politik-page .kp-flow h5,
.kp-politik-page .kp-flow h6 { font-family: var(--kp-sans) !important; }
.kp-politik-page .kp-flow-title,
.kp-politik-page .kp-flow .kp-flow-title {
    font-family: var(--kp-serif) !important;
    font-size: 34px !important;
    font-weight: 500;
    line-height: 1.1;
    letter-spacing: -.5px;
    margin: 0 0 10px;
}
.kp-politik-page .kp-flow-sub { font-family: var(--kp-sans) !important; font-size: 13px !important; font-weight: 400; color: var(--kp-muted); line-height: 1.6; margin: 0; }

.kp-politik-page .kp-cart { font-size: 14px; line-height: 1.6; }
.kp-politik-page .kp-cart-head {
    font-size: 10px;
    font-weight: 700 !important;
    letter-spacing: 1.8px;
    text-transform: uppercase;
    color: var(--kp-muted);
    border-bottom: 1px solid var(--kp-line);
    padding-bottom: 12px;
    margin-bottom: 0 !important;
}
.kp-politik-page .kp-cart-row {
    align-items: center;
    padding: 20px 0;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    border-bottom: 1px solid var(--kp-line);
}
.kp-politik-page .kp-cart-row .fw-bolder { font-weight: 600 !important; }
.kp-politik-page .kp-cart-name { font-family: var(--kp-serif); font-size: 22px; font-weight: 500 !important; line-height: 1.2; }
.kp-politik-page .kp-cart-totals {
    border-top: 0 !important;
    font-weight: 500 !important;
    row-gap: 6px;
    padding-top: 20px !important;
}
.kp-politik-page .kp-cart-totals > div { color: var(--kp-muted); }
.kp-politik-page .kp-cart-totals .kp-total-label { color: var(--kp-ink); font-weight: 600; align-self: end; }
.kp-politik-page .kp-total-value {
    font-family: var(--kp-serif);
    font-size: 30px;
    font-weight: 500;
    line-height: 1.1;
    color: var(--kp-ink) !important;
    border-bottom: 3px double var(--kp-wine);
    white-space: nowrap;
}
.kp-politik-page .kp-cart-limit { font-size: 12px; color: var(--kp-muted); }
.kp-politik-page .kp-cart .product-qty { display: flex; }
.kp-politik-page .kp-cart .hidden-sub { padding: 12px 14px !important; }

.kp-politik-page .kp-notice {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    background: var(--kp-panel);
    border-left: 2px solid var(--kp-wine);
    padding: 16px 20px;
    margin-top: 32px;
    font-size: 13px;
    line-height: 1.6;
    color: var(--kp-ink);
}
.kp-politik-page .kp-notice svg { color: var(--kp-wine); margin-top: 3px; }
.kp-politik-page .kp-notice p:last-child { margin-bottom: 0; }

.kp-politik-page .kp-panel {
    background: var(--kp-panel);
    padding: 36px 40px;
    border-top: 1px solid var(--kp-line);
}

.kp-politik-page .kp-voucher {
    display: flex;
    width: 100%;
    max-width: 520px;
    margin: 0;
}
.kp-politik-page .kp-voucher input {
    flex: 1;
    min-width: 0;
    height: 50px;
    border: 1px solid var(--kp-line);
    border-right: 0;
    background: #fff;
    padding: 0 16px;
    font-size: 14px;
    text-indent: 0;
    box-shadow: none;
    border-radius: 0;
}
.kp-politik-page .kp-voucher .btn.smact { border-radius: 0 !important; box-shadow: none !important; flex-shrink: 0; }
.kp-politik-page .kp-voucher-status { font-family: var(--kp-sans) !important; font-size: 13px !important; color: var(--kp-wine); margin: 0 0 14px; }

.kp-politik-page .kp-flow .form-control,
.kp-politik-page .kp-flow input[type="text"],
.kp-politik-page .kp-flow input[type="email"],
.kp-politik-page .kp-flow input[type="number"]:not(.numberstyle) {
    height: 50px;
    border: 1px solid var(--kp-line);
    border-radius: 0;
    background: #fff;
    color: var(--kp-ink);
    font-size: 14px;
    padding: 0 16px;
    box-shadow: none;
}
.kp-politik-page .kp-flow .numberstyle-qty input.form-control { height: 44px; padding: 0; border-top: 0; border-bottom: 0; }
.kp-politik-page .kp-flow .form-control::placeholder { color: #8a8893; }
.kp-politik-page .kp-flow .form-control:focus { border-color: var(--kp-ink); }

.kp-politik-page .btn.smact {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    background: var(--kp-wine);
    color: #fff;
    border: 0;
    border-radius: 0 !important;
    padding: 16px 28px;
    font-family: var(--kp-sans);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .2px;
    line-height: 1.5;
    box-shadow: none;
    transition: background-color .2s;
}
.kp-politik-page .btn.smact:hover { background: var(--kp-wine-dark); color: #fff; }
.kp-politik-page .btn.smact:disabled { background: #d6cbd0; color: #67505d; }
.kp-politik-page .btn.smact.kp-button--ghost { background: transparent; color: var(--kp-ink); border: 1px solid var(--kp-ink); }
.kp-politik-page .btn.smact.kp-button--ghost:hover { background: var(--kp-ink); color: var(--kp-cream); }

.kp-politik-page .kp-address { font-size: 13px; line-height: 1.7; font-style: normal; }
.kp-politik-page .kp-address br { display: none; }
.kp-politik-page .kp-address strong { display: block; font-size: 10px; letter-spacing: 1.8px; text-transform: uppercase; color: var(--kp-muted); font-weight: 700; margin-top: 12px; }
.kp-politik-page .kp-address-title,
.kp-politik-page .kp-flow .kp-address-title { font-family: var(--kp-serif) !important; font-size: 26px !important; font-weight: 500; color: var(--kp-ink); margin-bottom: 4px; }

.kp-politik-page .kp-result {
    background: var(--kp-panel);
    border-left: 2px solid var(--kp-wine);
    padding: 40px 44px;
    max-width: 820px;
}
.kp-politik-page .kp-result h2 {
    font-family: var(--kp-serif) !important;
    font-size: 40px !important;
    font-weight: 500;
    line-height: 1.1;
    margin: 0 0 18px;
}
.kp-politik-page .kp-result p { font-size: 15px; line-height: 1.75; color: var(--kp-ink); }
.kp-politik-page .kp-result p:last-child { margin-bottom: 0; }
.kp-politik-page .kp-result a,
.kp-politik-page .kp-legal-content a { color: var(--kp-wine); text-decoration: underline; text-underline-offset: 3px; }

/* donation choice (only shown when the backoffice enables donations) */
.kp-politik-page .kp-donation .donation-options { display: flex; flex-wrap: wrap; gap: 16px; border: 0; padding: 0; }
.kp-politik-page .kp-donation .donation-option {
    position: relative;
    display: flex;
    gap: 12px;
    align-items: flex-start;
    flex: 1 1 240px;
    max-width: 340px;
    padding: 20px 22px;
    cursor: pointer;
    transition: border-color .2s, box-shadow .2s;
}
.kp-politik-page .kp-donation .donation-option:has(input[type="radio"]:checked) { border-color: var(--kp-wine); box-shadow: inset 0 0 0 1px var(--kp-wine); }
.kp-politik-page .kp-donation .donation-radio { accent-color: var(--kp-wine); margin-top: 5px; flex-shrink: 0; }
.kp-politik-page .kp-donation .form__label-name { font-weight: 600; }
.kp-politik-page .kp-donation .form__label-text { font-family: var(--kp-serif); font-size: 24px; }
.kp-politik-page .kp-donation .form__label-text,
.kp-politik-page .kp-donation .donation-box { line-height: 1.4; }
.kp-politik-page .kp-donation h2 { font-size: 14px !important; font-weight: 400; color: var(--kp-muted); line-height: 1.6; }

.kp-politik-page .kp-legal-content { font-size: 14px; line-height: 1.75; max-width: 860px; }
.kp-politik-page .kp-legal-content h1,
.kp-politik-page .kp-legal-content h2,
.kp-politik-page .kp-legal-content h3,
.kp-politik-page .kp-legal-content h4 {
    font-family: var(--kp-serif) !important;
    font-weight: 500;
    line-height: 1.15;
    margin: 32px 0 12px;
}
.kp-politik-page .kp-legal-content h1 { font-size: 40px !important; }
.kp-politik-page .kp-legal-content h2 { font-size: 32px !important; }
.kp-politik-page .kp-legal-content h3 { font-size: 26px !important; }
.kp-politik-page .kp-legal-content h4 { font-size: 21px !important; }

/* align flow rows/panels with the page-head rule (Bootstrap rows carry negative gutters) */
.kp-politik-page .kp-flow > div > .row { margin-left: 0; margin-right: 0; }
.kp-politik-page .kp-flow > div > .row > [class*="col"] { padding-left: 0; padding-right: 0; }
.kp-politik-page .kp-cart > .row { margin-left: 0; margin-right: 0; }
.kp-politik-page #cart form { background-color: transparent; border-radius: 0; }

/* donation: shared CSS hides the radios (keyboard-inaccessible) and paints them red */
.kp-politik-page .kp-donation .donation-options { justify-content: flex-start; }
.kp-politik-page .kp-donation .donation-option,
.kp-politik-page .kp-donation .donation-option:hover { color: var(--kp-ink); text-align: left; border: 1px solid var(--kp-line); background: #fff; }
.kp-politik-page .kp-donation .donation-option .donation-radio { display: block; width: 18px; height: 18px; }
.kp-politik-page .kp-donation .donation-option:hover .donation-box,
.kp-politik-page .kp-donation .donation-option input:checked + .donation-box { background: transparent; color: inherit; border-color: transparent; }
.kp-politik-page .kp-donation .donation-option .donation-box { align-items: flex-start; justify-content: flex-start; padding: 0; font-size: 15px; font-weight: 600; }
.kp-politik-page .kp-donation .donation-option .donation-box input[name="self_filled_donation"] { color: var(--kp-ink); font-size: 16px; text-align: left; height: 44px; }
.kp-politik-page .kp-donation .donation-option:has(.donation-radio:focus-visible) { outline: 3px solid var(--kp-focus); outline-offset: 3px; }
.kp-politik-page .kp-donation .form__tab > h2 { margin-top: 0 !important; }

/* error pages share the shell */
.kp-politik-page .challenge h2 { font-family: var(--kp-serif) !important; font-size: 48px !important; font-weight: 500; }
.kp-politik-page .challenge a { color: var(--kp-wine); border-bottom: 1px solid var(--kp-wine); }

/* ── Wide screens ──────────────────────────────────────── */
@media (min-width: 1700px) {
    .kp-politik-page .kp-hero {
        padding-left: max(7%, calc((100vw - 1460px) / 2));
        padding-right: max(7%, calc((100vw - 1460px) / 2));
        min-height: 850px;
    }
    .kp-politik-page .kp-section {
        padding-left: max(9%, calc((100vw - 1320px) / 2));
        padding-right: max(9%, calc((100vw - 1320px) / 2));
    }
    .kp-politik-page .kp-hero-art { max-width: 650px; }
    .kp-politik-page .kp-scroll { left: max(7%, calc((100vw - 1460px) / 2)); }
    .kp-politik-page .kp-facts {
        padding-left: max(7%, calc((100vw - 1460px) / 2));
        padding-right: max(7%, calc((100vw - 1460px) / 2));
    }
}

/* ── Tablet ────────────────────────────────────────────── */
@media (max-width: 850px) {
    .kp-politik-page .kp-header { height: 85px; }
    .kp-politik-page .kp-brand { width: 130px; height: 52px; }
    .kp-politik-page .kp-nav { gap: 20px; }
    .kp-politik-page .kp-nav > a:not(.kp-nav-ticket):not(.kp-nav-cart) { display: none; }
    .kp-politik-page .kp-hero { padding: 60px var(--kp-pad-x) 80px; gap: 40px; grid-template-columns: 1fr; min-height: 0; }
    .kp-politik-page .kp-hero-art { min-height: 490px; max-width: 540px; width: 100%; margin: 10px auto 0; }
    .kp-politik-page .kp-hero h1 { font-size: 95px !important; }
    .kp-politik-page .kp-hero-copy { max-width: 540px; }
    .kp-politik-page .kp-scroll { bottom: 22px; }
    .kp-politik-page .kp-facts { grid-template-columns: 1fr 1fr; }
    .kp-politik-page .kp-facts > div:last-child { grid-column: 1 / -1; }
    .kp-politik-page .kp-section { padding: 65px var(--kp-pad-x); }
    .kp-politik-page .kp-intro-grid { grid-template-columns: 1fr; gap: 15px; }
    .kp-politik-page .kp-topics { gap: 25px; margin-top: 40px; }
    .kp-politik-page .kp-topics h3 { font-size: 34px !important; }
    .kp-politik-page .kp-person-row { gap: 7%; }
    .kp-politik-page .kp-person-photo { height: 360px; }
    .kp-politik-page .kp-person-copy h3 { font-size: 52px !important; }
    .kp-politik-page .kp-person-copy .kp-eyebrow { font-size: 9px; letter-spacing: 1.5px; }
    .kp-politik-page .kp-evening-grid { gap: 25px; }
    .kp-politik-page .kp-venue { gap: 7%; }
    .kp-politik-page .kp-venue-monogram { font-size: 230px; }
    .kp-politik-page .kp-tickets { gap: 7%; grid-template-columns: 1fr 1fr; }
    .kp-politik-page .kp-ticket { padding: 25px; }
    .kp-politik-page .kp-price { font-size: 84px; }
    .kp-politik-page .kp-panel { padding: 28px 24px; }
}

/* ── Phone ─────────────────────────────────────────────── */
@media (max-width: 540px) {
    .kp-politik-page .kp-header { padding: 16px 5.5%; gap: 12px; }
    .kp-politik-page .kp-brand { width: 92px; }
    .kp-politik-page .kp-nav { gap: 16px; }
    .kp-politik-page .kp-nav-ticket span { margin-left: 18px; }
    .kp-politik-page .kp-hero h1 { font-size: clamp(64px, 21vw, 85px) !important; letter-spacing: -2px; }
    .kp-politik-page .kp-hero-lead { font-size: 13px; }
    .kp-politik-page .kp-hero-names { font-size: 11px; }
    .kp-politik-page .kp-hero-names span { margin: 0 6px; }
    /* caption sits below both portraits so it never runs into the second photo */
    .kp-politik-page .kp-hero-art { min-height: 478px; }
    .kp-politik-page .kp-portrait--bosbach { height: 310px; width: 65%; }
    .kp-politik-page .kp-portrait--pietzak { height: 290px; top: 110px; width: 54%; border-width: 6px; }
    .kp-politik-page .kp-art-caption { top: 418px; font-size: 21px; }
    .kp-politik-page .kp-portrait span { font-size: 10px; left: 15px; bottom: 15px; }
    .kp-politik-page .kp-art-number { top: 0; }
    .kp-politik-page .kp-facts { gap: 20px; padding-top: 25px; padding-bottom: 25px; }
    .kp-politik-page .kp-facts strong { font-size: 11px; }
    .kp-politik-page .kp-facts dt { font-size: 9px; }
    .kp-politik-page .kp-topics { grid-template-columns: 1fr; gap: 14px; }
    .kp-politik-page .kp-topics article { display: grid; grid-template-columns: 25px 1fr; gap: 8px 13px; }
    .kp-politik-page .kp-topics h3 { margin: 0; }
    .kp-politik-page .kp-topics p { grid-column: 2; max-width: none; margin-bottom: 15px; }
    .kp-politik-page .kp-topics article > span { padding-top: 9px; }
    .kp-politik-page .kp-person-row,
    .kp-politik-page .kp-person-row--reverse { grid-template-columns: 1fr; gap: 28px; margin-top: 50px; }
    .kp-politik-page .kp-person-row--reverse .kp-person-photo,
    .kp-politik-page .kp-person-row--reverse .kp-person-copy { order: initial; }
    .kp-politik-page .kp-person-photo { height: 390px; }
    .kp-politik-page .kp-person-copy h3 { font-size: 60px !important; }
    .kp-politik-page .kp-person-copy .kp-eyebrow { font-size: 9px; }
    .kp-politik-page .kp-evening-grid { grid-template-columns: 1fr; gap: 25px; }
    .kp-politik-page .kp-time h3 { margin: 16px 0; font-size: 34px !important; }
    .kp-politik-page .kp-venue { grid-template-columns: 1fr; gap: 35px; }
    .kp-politik-page .kp-venue-monogram { font-size: 220px; padding: 0 0 35px; }
    .kp-politik-page .kp-venue-monogram span { font-size: 30px; }
    .kp-politik-page .kp-tickets { grid-template-columns: 1fr; gap: 30px; }
    .kp-politik-page .kp-tickets:has(.kp-ticket ~ .kp-ticket) .kp-tickets-intro { position: static; }
    .kp-politik-page .kp-ticket-stack { max-width: 420px; width: 100%; }
    .kp-politik-page .kp-landing h2 { font-size: 57px !important; }
    .kp-politik-page .kp-intro-grid .kp-large { font-size: 17px; }
    .kp-politik-page .kp-footer { align-items: flex-start; }
    .kp-politik-page .kp-footer > div { width: 100%; }
    .kp-politik-page .kp-main--flow { padding-top: 36px; }
    .kp-politik-page .kp-voucher .btn.smact { padding-left: 18px; padding-right: 18px; }
    .kp-politik-page .kp-result { padding: 28px 24px; }
    .kp-politik-page .kp-donation .donation-option { max-width: 100%; flex-basis: 100%; }
}

@media (prefers-reduced-motion: reduce) {
    html.kp-politik-root { scroll-behavior: auto; }
    .kp-politik-page *,
    .kp-politik-page *::before,
    .kp-politik-page *::after { transition: none !important; animation-duration: .01ms !important; }
    .kp-politik-page .kp-button:hover { transform: none; }
}
