/* WeddingHub App-Stylesheet (P4). Konsumiert tokens.css. */

* { box-sizing: border-box; }

body {
    margin: 0;
    min-height: 100vh;
    font-family: var(--font-sans);
    font-synthesis: none;
    font-size: 1rem;
    line-height: 1.55;
    background: var(--bg);
    color: var(--ink);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

a { color: var(--ink); text-decoration-thickness: 1px; text-underline-offset: .18em; text-decoration-color: rgba(176, 141, 87, .55); transition: color var(--t-fast) var(--ease), text-decoration-color var(--t-fast) var(--ease); }
a:hover { color: var(--gold-dark); text-decoration-color: currentColor; }
h1 { font-family: var(--font-serif); font-weight: 500; font-size: var(--fs-3); line-height: 1.15; letter-spacing: -.01em; margin: .4rem 0 1.5rem; text-wrap: balance; }
h2.section-title { font-family: var(--font-serif); font-weight: 500; font-size: var(--fs-1); letter-spacing: -.005em; margin: 0 0 1rem; text-wrap: balance; }

/* ── Shell-Varianten ───────────────────────────────────────── */
body.shell-card { display: flex; align-items: center; justify-content: center; padding: var(--s5); }
body.shell-app { display: block; }

/* ── App-Shell: Sidebar + Topbar (PRO-002) ─────────────────── */
.shell { display: grid; grid-template-columns: var(--sidebar-w) 1fr; min-height: 100vh; }
.main-col { min-width: 0; display: flex; flex-direction: column; }

.side {
    position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column;
    background: var(--card); border-right: 1px solid var(--line); z-index: 40;
    view-transition-name: side;
}
.brand {
    display: flex; align-items: center; gap: .65rem;
    padding: var(--s5) var(--s5) var(--s4); border-bottom: 1px solid var(--surface);
    text-decoration: none; color: var(--ink);
}
.brand-mark { flex: none; display: block; width: 28px; height: 28px; }
.brand-text { min-width: 0; }
.brand-names { display: block; font-family: var(--font-serif); font-weight: 500; font-size: 1.25rem; line-height: 1.15; }
.brand-app { display: block; margin-top: .2rem; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.side-nav { flex: 1; padding: var(--s3); overflow-y: auto; }
.side-nav a {
    display: flex; align-items: center; gap: .65rem; padding: .5rem .75rem; margin-bottom: 1px;
    color: var(--muted); text-decoration: none; font-size: .9rem;
    border-radius: var(--r-sm); border-left: 2px solid transparent;
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.side-nav a:hover { background: var(--bg); color: var(--ink); }
.side-nav a[aria-current="page"] {
    background: var(--gold-bg); color: var(--ink); font-weight: 600; border-left-color: var(--gold);
}
.side-nav a[aria-current="page"] .nav-ic { color: var(--gold-dark); }
.nav-ic { width: 1.05rem; height: 1.05rem; flex: none; color: var(--muted); }
.side-nav .nav-badge { margin-left: auto; }
.nav-grp { display: block; margin: var(--s4) .75rem var(--s1); font-size: .6rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--muted); opacity: .75; }
.side-nav .nav-grp:first-child { margin-top: var(--s1); }
.side-foot { padding: var(--s4) var(--s5); border-top: 1px solid var(--surface); font-size: .78rem; color: var(--muted); }
.side-foot b { display: block; color: var(--ink); font-weight: 600; margin-bottom: .35rem; }
.side-logout { margin: 0; }
.btn-plain {
    width: auto; margin: 0; padding: .3rem 0; background: none; border: 0; box-shadow: none;
    color: var(--muted); font-size: .82rem; cursor: pointer;
    text-decoration: underline; text-decoration-color: var(--line); text-underline-offset: .18em;
}
.btn-plain:hover { color: var(--ink); background: none; filter: none; box-shadow: none; }

.topbar {
    position: sticky; top: 0; z-index: 30; min-height: var(--topbar-h);
    display: flex; align-items: center; gap: var(--s4); padding: 0 var(--s5);
    background: rgba(250, 248, 245, .92); backdrop-filter: blur(8px);
    border-bottom: 1px solid var(--line);
    view-transition-name: topbar;
}
.page-title { font-size: .95rem; font-weight: 600; }
.chip-days {
    display: inline-flex; align-items: baseline; gap: .35rem; margin-left: auto;
    padding: .3rem .75rem; border: 1px solid var(--line); border-radius: 999px;
    background: var(--card); white-space: nowrap;
}
.chip-days b { font-size: .95rem; font-weight: 700; color: var(--gold-dark); }
.chip-days span { font-size: .7rem; color: var(--muted); letter-spacing: .06em; text-transform: uppercase; }
.icon-btn {
    display: grid; place-items: center; width: 2.2rem; height: 2.2rem; margin: 0; padding: 0; flex: none;
    background: transparent; border: 1px solid var(--line); border-radius: var(--r-sm);
    color: var(--ink); cursor: pointer; box-shadow: none;
}
.icon-btn:hover { filter: none; background: var(--card); border-color: var(--muted); }
.icon-btn.burger { display: none; }
.nav-burger, .nav-burger::before, .nav-burger::after {
    display: block; width: 1.15rem; height: 2px; background: currentColor; border-radius: 2px;
    transition: transform var(--t-med) var(--ease), opacity var(--t-fast) var(--ease);
}
.nav-burger { position: relative; }
.nav-burger::before, .nav-burger::after { content: ""; position: absolute; left: 0; }
.nav-burger::before { top: -.38rem; }
.nav-burger::after { top: .38rem; }
.burger[aria-expanded="true"] .nav-burger { background: transparent; }
.burger[aria-expanded="true"] .nav-burger::before { top: 0; transform: rotate(45deg); }
.burger[aria-expanded="true"] .nav-burger::after { top: 0; transform: rotate(-45deg); }

.backdrop {
    position: fixed; inset: 0; z-index: 35; background: rgba(31, 28, 25, .3);
    opacity: 0; pointer-events: none; transition: opacity var(--t-med) var(--ease);
}
.backdrop.on { opacity: 1; pointer-events: auto; }

@media (max-width: 64rem) {
    .shell { grid-template-columns: 1fr; }
    .side {
        position: fixed; inset: 0 auto 0 0; width: min(17rem, 84vw); height: 100dvh;
        transform: translateX(-100%); transition: transform var(--t-med) var(--ease);
        box-shadow: var(--shadow);
    }
    .side.open { transform: none; }
    .icon-btn.burger { display: grid; }
    .topbar { padding: 0 var(--s4); }
    body.nav-lock { overflow: hidden; }
}

/* ── Cross-Document View Transitions (AW-006/PRO-002) ──────── */
@view-transition { navigation: auto; }
::view-transition-old(root) { animation-duration: var(--t-fast); animation-timing-function: ease-in; }
::view-transition-new(root) { animation-duration: var(--t-med); animation-timing-function: ease-out; }
@media (prefers-reduced-motion: reduce) {
    @view-transition { navigation: none; }
}

.container { max-width: 60rem; margin: 0 auto; padding: var(--s6) var(--s5); }
.shell-app .card { margin: 0 auto var(--s5); }

/* ── Card ──────────────────────────────────────────────────── */
.card {
    background: var(--card); width: 100%; max-width: 27rem; padding: 2.5rem 2rem;
    border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow);
}
.eyebrow { letter-spacing: .3em; text-transform: uppercase; font-size: .7rem; color: var(--gold); margin: 0; }
.lead { color: var(--muted); line-height: 1.6; }
.alt { text-align: center; font-size: .85rem; color: var(--muted); margin: 1.5rem 0 0; }
.sep { border: 0; border-top: 1px solid var(--line); margin: var(--s5) 0; }

/* ── Formulare ─────────────────────────────────────────────── */
label { display: block; font-size: .85rem; color: var(--muted); margin-bottom: var(--s4); }
input, textarea, select {
    width: 100%; margin-top: .35rem; padding: .65rem .75rem; font-size: 1rem; color: var(--ink);
    border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--input-bg); font-family: inherit;
}
textarea { resize: vertical; }
input:focus, textarea:focus, select:focus { outline: 2px solid var(--ink); outline-offset: 1px; border-color: var(--gold-dark); }
input[type="file"] { padding: .4rem; font-size: .85rem; }
input[type="checkbox"], input[type="radio"] { width: auto; margin-top: 0; accent-color: var(--gold-dark); }
/* ── PRO-008: reward early, punish late ── */
:is(input, textarea, select):user-invalid { border-color: var(--err); }
:is(input, textarea, select):user-valid:required { border-color: var(--ok); }
.field-hint, .field-context { display: block; font-size: .8rem; margin-top: .35rem; color: var(--muted); }
.field-hint { color: var(--err); }
@supports (field-sizing: content) { textarea { field-sizing: content; min-height: 4.5rem; max-height: 16rem; } }
button {
    width: 100%; padding: .75rem; font-size: 1rem; font-weight: 500; color: var(--text-inverse); background: var(--ink);
    border: 0; border-radius: var(--r-sm); cursor: pointer; margin-top: .5rem;
    box-shadow: 0 1px 2px rgba(43, 43, 43, .08);
    transition: filter var(--t-fast) var(--ease), transform var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
button:hover { filter: none; background: var(--ink-soft); box-shadow: var(--shadow-sm); }
button:active { transform: translateY(1px); box-shadow: none; }
/* ── Zustände: disabled / busy / Fokus (PL-002) ────────────── */
button:disabled, .btn-link[aria-disabled="true"] {
    opacity: .6; cursor: not-allowed; background: var(--surface); color: var(--muted);
    box-shadow: none; transform: none; filter: none;
}
button[aria-busy="true"] { position: relative; color: transparent; pointer-events: none; }
button[aria-busy="true"]::after {
    content: ""; position: absolute; inset: 0; margin: auto; width: 1.05rem; height: 1.05rem;
    border-radius: 50%; border: 2px solid var(--text-inverse); border-top-color: transparent;
    animation: spin .6s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* Fokus nur für Tastatur-Nutzer sichtbar; Text-Inputs behalten den Gold-Border */
:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
:focus:not(:focus-visible) { outline: none; }
.fc .fc-button:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

/* Skip-Link + Screenreader-Utility */
.skip-link {
    position: absolute; left: -9999px; top: var(--s3); z-index: 100;
    background: var(--card); color: var(--ink); padding: .6rem 1rem;
    border: 1px solid var(--gold); border-radius: var(--r-sm); text-decoration: none;
}
.skip-link:focus-visible { left: var(--s3); }
.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;
}

/* ── Toast-Quittungen (PL-003) ─────────────────────────────── */
.toast-region {
    position: fixed; right: var(--s4); bottom: var(--s4); z-index: 1200;
    display: flex; flex-direction: column; gap: var(--s2);
    width: max-content; max-width: min(22rem, calc(100vw - 2rem));
}
.toast {
    display: flex; align-items: center; gap: .6rem;
    background: var(--card); border: 1px solid var(--line); border-left: 3px solid var(--gold);
    border-radius: var(--r-md); box-shadow: var(--shadow);
    padding: .7rem .9rem; font-size: .9rem; color: var(--ink);
    opacity: 0; transform: translateY(8px);
    transition: opacity var(--t-med) var(--ease), transform var(--t-med) var(--ease);
}
.toast.in { opacity: 1; transform: none; }
.toast-ic { flex: none; }
.toast-text { min-width: 0; }
.toast-ok { border-left-color: var(--ok); }
.toast-ok .toast-ic { color: var(--ok); }
.toast-warn { border-left-color: var(--warn); }
.toast-warn .toast-ic { color: var(--warn); }
.toast-err { border-left-color: var(--err); }
.toast-err .toast-ic { color: var(--err); }
.toast-close {
    width: auto; margin: 0 0 0 auto; padding: 0 .2rem; background: none; border: 0; box-shadow: none;
    color: var(--muted); font-size: 1.05rem; line-height: 1; cursor: pointer; flex: none;
}
.toast-close:hover { color: var(--ink); filter: none; box-shadow: none; }
.toast-undo-form { flex: none; margin: 0; display: flex; }
.toast-undo {
    width: auto; margin: 0; padding: 0 .1rem; background: none; border: 0; box-shadow: none;
    color: var(--ink); font-size: .82rem; font-weight: 600; cursor: pointer; flex: none;
    white-space: nowrap; text-decoration: underline;
    text-decoration-color: rgba(176, 141, 87, .55); text-underline-offset: .18em;
}
.toast-undo:hover { color: var(--gold-dark); filter: none; box-shadow: none; text-decoration-color: currentColor; }
.form-inline-danger { margin-top: var(--s3); }

@media (max-width: 30rem) {
    .toast-region { left: var(--s3); right: var(--s3); bottom: var(--s3); max-width: none; width: auto; }
}

@media (prefers-reduced-motion: reduce) {
    .toast { opacity: 1; transform: none; }
}

.field-error, .form-error { color: var(--err); font-size: .8rem; margin: -.6rem 0 1rem; }
.form-error { margin: 0 0 1.25rem; padding: .65rem .75rem; background: var(--err-bg); border-radius: var(--r-sm); }
.form-success { color: var(--ok); font-size: .85rem; margin: 0 0 1.25rem; padding: .65rem .75rem; background: var(--ok-bg); border-radius: var(--r-sm); }
.form-warn { color: var(--warn); font-size: .85rem; margin: 0 0 1.25rem; padding: .65rem .75rem; background: var(--warn-bg); border-radius: var(--r-sm); }
.form-warn ul { margin: .4rem 0 0; padding-left: 1.1rem; }
.head-actions { display: flex; gap: .5rem; flex-wrap: wrap; align-items: flex-start; }
.bulk-bar { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin: 0 0 .75rem; }
.bulk-bar select { width: auto; margin: 0; }
.bulk-bar button { width: auto; margin: 0; padding: .55rem 1rem; font-size: .9rem; }
.bulk-hint { font-size: .85rem; color: var(--muted); }
.thread-link { text-decoration: none; color: inherit; transition: background var(--t-fast) var(--ease); border-radius: var(--r-sm); }
.thread-link:hover { background: var(--surface-2); }
.msg-thread { display: flex; flex-direction: column; gap: .6rem; margin: 1rem 0; }
.msg-bubble { max-width: 80%; padding: .55rem .8rem; border-radius: var(--r-md); background: var(--surface); }
.msg-mine { align-self: flex-end; background: var(--ok-bg); }
.msg-theirs { align-self: flex-start; }
.msg-text { font-size: .92rem; line-height: 1.5; white-space: normal; }
.msg-time { display: block; font-size: .7rem; color: var(--muted); margin-top: .25rem; }
.msg-proposal { border: 1px solid var(--line); border-radius: var(--r-md); padding: .8rem .9rem; max-width: 90%; background: var(--card); box-shadow: var(--shadow-sm); }
.msg-proposal-head { display: flex; justify-content: space-between; align-items: center; gap: .5rem; }
.msg-proposal-actions { display: flex; gap: .75rem; align-items: center; margin-top: .6rem; padding-top: .5rem; border-top: 1px solid var(--line); }
.proposal-form summary { cursor: pointer; font-size: .9rem; color: var(--ink); text-decoration: underline; text-decoration-color: rgba(176, 141, 87, .55); text-underline-offset: .18em; }
.task-check-form { margin: 0 .6rem 0 0; flex: none; align-self: center; }
.task-check { display: inline-flex; background: none; border: 0; cursor: pointer; padding: 0; width: auto; margin: 0; color: var(--muted); transition: color var(--t-fast) var(--ease); }
.task-check:hover { color: var(--ink); filter: none; }
.task-check.is-done { color: var(--ok); }
.task-done { opacity: .6; }
.task-done .guest-main strong { text-decoration: line-through; }
.nav-badge { display: inline-block; min-width: 1.1rem; padding: 0 .35rem; margin-left: .35rem; border-radius: 999px; background: var(--err); color: var(--text-inverse); font-size: .7rem; font-weight: 600; line-height: 1.25rem; text-align: center; vertical-align: middle; }
.nav-badge[hidden] { display: none; }
.diet-notes { margin: .5rem 0 0; padding-left: 1.1rem; font-size: .9rem; color: var(--muted); }
.diet-notes li { margin-bottom: .3rem; }
.icon { display: inline-block; width: 1em; height: 1em; vertical-align: -0.125em; flex: none; }
.icon-meta { width: .95em; height: .95em; vertical-align: -0.15em; margin-right: .3em; color: var(--muted); }
.icon-check { width: 1.4rem; height: 1.4rem; vertical-align: middle; }
.meta-overdue { color: var(--err); font-weight: 600; }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; }
.checks { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; margin: .5rem 0 1rem; }
.check { font-size: .9rem; color: var(--ink); margin: 0; display: flex; align-items: center; gap: .4rem; }
.check input { width: auto; margin: 0; }

/* ── Gegliedertes Formular (Hochzeit anlegen) ──────────────── */
.form-disclosure { max-width: 40rem; margin: 2rem auto 0; }
.disclosure-summary {
    display: flex; align-items: center; gap: var(--s3); list-style: none; cursor: pointer;
    padding: var(--s4) var(--s5); background: var(--card); border: 1px solid var(--line);
    border-radius: var(--r-md); font-family: var(--font-serif); font-size: 1.1rem; color: var(--ink);
    box-shadow: var(--shadow-sm); transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
.disclosure-summary::-webkit-details-marker { display: none; }
.disclosure-summary:hover { border-color: var(--gold); box-shadow: var(--shadow); }
.disclosure-plus {
    display: inline-flex; align-items: center; justify-content: center; width: 1.6rem; height: 1.6rem;
    flex: none; border-radius: 50%; background: var(--gold); color: var(--text-inverse); font-size: 1.2rem; line-height: 1;
    transition: transform var(--t-med) var(--ease);
}
.form-disclosure[open] .disclosure-plus { transform: rotate(45deg); }
.form-disclosure[open] .disclosure-summary {
    border-radius: var(--r-md) var(--r-md) 0 0; border-bottom-color: transparent; box-shadow: none;
}
.form-wide { max-width: none; border-radius: 0 0 var(--r-md) var(--r-md); border-top: 0; }

.form-section { border: 1px solid var(--line); border-radius: var(--r-md); padding: var(--s4) var(--s5) var(--s5); margin: 0 0 var(--s5); }
.form-section > legend { font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); padding: 0 var(--s2); font-weight: 600; }
.form-section label:first-of-type { margin-top: 0; }

.seg-toggle { display: flex; flex-wrap: wrap; gap: var(--s4); margin: .2rem 0 var(--s4); }
.seg-toggle .radio { margin: 0; }
.addr-block[hidden] { display: none; }
.addr-block .form-label:first-child { margin-top: 0; }

/* ── Status-Pills (P4-010) ─────────────────────────────────── */
.pill { display: inline-block; font-size: .7rem; letter-spacing: .03em; padding: .15rem .5rem; border-radius: 999px; font-weight: 600; }
.pill-ic { width: .85em; height: .85em; vertical-align: -.1em; margin-right: .25em; }
.pill-ok { background: var(--ok-bg); color: var(--ok); }
.pill-warn { background: var(--warn-bg); color: var(--warn); }
.pill-err { background: var(--err-bg); color: var(--err); }
.pill-muted { background: var(--surface); color: var(--muted); }

/* ── Dashboard-Widgets (P4-005..014) ───────────────────────── */
.dash-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s4); flex-wrap: wrap; margin-bottom: var(--s5); }
.dash-head h1 { margin: 0; }

/* Countdown-Hero — Signatur: feines Briefpapier + Goldstaub-Schimmer */
.hero {
    position: relative; overflow: hidden; text-align: center; isolation: isolate;
    background: radial-gradient(125% 85% at 50% -12%, var(--hero-0) 0%, var(--hero-1) 55%, var(--hero-2) 100%);
    border: 1px solid var(--line); border-radius: var(--r-lg);
    padding: clamp(1.6rem, 4vw, 2.6rem) var(--s5); margin-bottom: var(--s5); box-shadow: var(--shadow-sm);
}
/* Passepartout-Doppellinie wie auf einer Einladungskarte */
.hero::after {
    content: ""; position: absolute; inset: .8rem; pointer-events: none;
    border: 1px solid rgba(176, 141, 87, .26); border-radius: calc(var(--r-lg) - .4rem);
}

.empty { color: var(--muted); font-size: .9rem; font-style: italic; }

/* ── Empty-States (PL-005) ─────────────────────────────────── */
.empty-state {
    display: flex; flex-direction: column; align-items: center; gap: var(--s2);
    text-align: center; padding: var(--s6) var(--s4);
}
.empty-ic { width: 2.5rem; height: 2.5rem; color: var(--muted-light); stroke-width: 1.2; }
.empty-title { font-family: var(--font-serif); font-size: var(--fs-1); color: var(--ink); margin: 0; text-wrap: balance; }
.empty-text { color: var(--ink-soft); font-size: .9rem; margin: 0 0 var(--s2); max-width: 26rem; }
.empty-state .btn-link { margin-top: .2rem; }
code { font-family: var(--font-mono); background: var(--surface); padding: .15rem .4rem; border-radius: .3rem; font-size: .95em; }

/* ── Skeleton-Loading (P4-012) ─────────────────────────────── */
@keyframes sk { from { background-position: 200% 0; } to { background-position: -200% 0; } }

/* ── Locations / Event ─────────────────────────────────────── */
.loc { display: flex; justify-content: space-between; gap: 1rem; padding: .75rem .5rem; margin: 0 -.5rem; border-bottom: 1px solid var(--line); border-radius: var(--r-sm); transition: background var(--t-fast) var(--ease); }
.loc:hover { background: var(--surface-2); }
.loc-type { display: inline-block; font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; color: var(--gold); }
.loc-main strong { display: block; }
.loc-meta { display: block; font-size: .8rem; color: var(--muted); }
.loc-actions { display: flex; flex-direction: column; align-items: flex-end; gap: .25rem; font-size: .8rem; }
.loc-actions form { margin: 0; }
.link-danger { background: none; border: 0; color: var(--err); cursor: pointer; padding: 0; width: auto; font-size: .8rem; }
.avatar { width: 96px; height: 96px; border-radius: 50%; object-fit: cover; display: block; margin: 0 0 .5rem; border: 1px solid var(--line); }
.avatar-empty { background: repeating-linear-gradient(45deg, var(--surface-light), var(--surface-light) 6px, var(--bg) 6px, var(--bg) 12px); }

/* ── Veranstalter-Portfolio ────────────────────────────────── */
.wlist { display: grid; gap: .75rem; }
.wcard {
    display: flex; align-items: center; justify-content: space-between; gap: 1rem;
    padding: 1rem 1.25rem; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md);
    transition: box-shadow var(--t-med) var(--ease), border-color var(--t-med) var(--ease), transform var(--t-med) var(--ease);
}
.wcard:hover { box-shadow: var(--shadow-sm); transform: translateY(-1px); }
.wcard.active { border-color: var(--gold); box-shadow: 0 0 0 1px var(--gold); }
.wcard strong { display: block; }
.wcard form { margin: 0; }
.wcard button { width: auto; padding: .4rem .9rem; font-size: .85rem; margin: 0; }

/* ── Onboarding ────────────────────────────────────────────── */
.steps { list-style: none; padding: 0; margin: 1rem 0; }
.step { padding: .6rem 0; border-bottom: 1px solid var(--line); }
.step.done { color: var(--muted); }
.step-mark { display: inline-block; width: 1.4rem; color: var(--gold-dark); font-weight: 500; }
.step.done .step-mark { color: var(--ok); }

/* ── Gäste (P5) ────────────────────────────────────────────── */
.pill-row { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .5rem; }
.btn-link {
    display: inline-block; padding: .55rem 1rem; background: var(--gold); color: var(--text-inverse);
    text-decoration: none; border-radius: var(--r-sm); font-size: .9rem; white-space: nowrap;
    box-shadow: 0 1px 2px rgba(43, 43, 43, .08);
    transition: filter var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
}
.btn-link:hover { filter: brightness(.97); box-shadow: var(--shadow-sm); transform: translateY(-1px); color: var(--text-inverse); }
.btn-link:active { transform: translateY(0); box-shadow: none; }
/* Ruhige Sekundaer-Aktionen (AW-004): 1 Gold-Button pro Viewport, der Rest schweigt */
.btn-quiet { background: var(--card); color: var(--ink); border: 1px solid var(--line); box-shadow: none; }
.btn-quiet:hover { filter: none; border-color: var(--gold); color: var(--gold-dark); box-shadow: none; transform: none; }
.filterbar {
    display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-bottom: var(--s4);
}
.filterbar input[type="search"] { flex: 1 1 12rem; margin: 0; }
.filterbar select { width: auto; margin: 0; }
.filterbar button { width: auto; margin: 0; padding: .65rem 1rem; }
.filter-reset { font-size: .85rem; color: var(--muted); text-decoration: none; }
.filter-reset:hover { color: var(--ink); }
.guests-card { max-width: none; padding: .5rem 1.25rem; }
.guest-row {
    display: flex; align-items: center; justify-content: space-between; gap: 1rem;
    padding: .8rem .5rem; margin: 0 -.5rem; border-bottom: 1px solid var(--line);
    border-radius: var(--r-sm); transition: background var(--t-fast) var(--ease);
}
.guest-row:hover { background: var(--surface-2); }
.guest-row:last-child { border-bottom: 0; }
.guest-main { flex: 1; min-width: 0; }
.guest-main strong { display: block; }
.guest-meta { display: block; font-size: .82rem; color: var(--muted); }
.guest-tags { display: inline-flex; flex-wrap: wrap; gap: .3rem; margin-top: .3rem; }
.tag { font-size: .7rem; padding: .15rem .5rem; border-radius: 999px; background: var(--surface); color: var(--muted); }
.guest-side { display: flex; align-items: center; gap: .9rem; flex-shrink: 0; }
.guest-actions { display: flex; align-items: center; gap: .6rem; font-size: .82rem; }
.guest-actions form { margin: 0; }
.guest-actions a { text-decoration: none; }
.pager {
    display: flex; align-items: center; justify-content: space-between; gap: 1rem;
    margin-top: var(--s4); font-size: .88rem;
}
.pager a { text-decoration: none; }
.pager .muted, .pager-info { color: var(--muted); }
.form-label { font-size: .85rem; color: var(--muted); margin: .5rem 0 .2rem; }
.tag-invite { background: var(--gold); color: var(--text-inverse); }
.link-action { background: none; border: 0; color: var(--ink); cursor: pointer; padding: 0; width: auto; font-size: .82rem; text-decoration: underline; text-decoration-color: rgba(176, 141, 87, .55); text-underline-offset: .18em; }
.link-action:hover { filter: none; color: var(--gold-dark); text-decoration-color: currentColor; }
.invite-banner {
    background: var(--ok-bg); color: var(--ok); border-radius: var(--r-sm);
    padding: .75rem 1rem; margin-bottom: var(--s4); font-size: .9rem; word-break: break-all;
}
.invite-banner p { margin: 0 0 .35rem; }
.invite-banner code { display: block; margin-top: .35rem; background: var(--card); color: var(--ink); }
.share-actions { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .6rem; }
.share-chip {
    display: inline-block; padding: .4rem .8rem; font-size: .82rem; border-radius: 999px;
    background: var(--card); color: var(--gold); border: 1px solid var(--gold); cursor: pointer;
    text-decoration: none; width: auto; margin: 0;
}
.share-chip:hover { background: var(--gold); color: var(--text-inverse); filter: none; }

/* ── Gäste-Datentabelle (PRO-007) ──────────────────────────── */
.gtable { width: 100%; border-collapse: collapse; font-size: .9rem; }
.gtable th {
    position: sticky; top: var(--topbar-h); z-index: 2; background: var(--card);
    padding: .5rem .6rem; text-align: left; font-size: .72rem; font-weight: 600;
    letter-spacing: .08em; text-transform: uppercase; color: var(--muted);
    border-bottom: 1px solid var(--border-soft); white-space: nowrap;
}
.gtable th a { display: inline-flex; align-items: center; gap: .25rem; color: inherit; text-decoration: none; }
.gtable th a:hover, .gtable th[aria-sort] a { color: var(--ink); }
.sort-ic { width: .8rem; height: .8rem; flex: none; }
.gtable td { padding: .55rem .6rem; border-bottom: 1px solid var(--line); vertical-align: middle; }
.gtable tbody tr:nth-child(even) { background: var(--surface-2); }
.gtable tbody tr:hover { background: var(--surface); }
.gtable tbody tr:last-child td { border-bottom: 0; }
.gt-name strong { display: block; }
.gt-check { width: 2rem; }
.gt-actions { text-align: right; }
.gt-actions .guest-actions { justify-content: flex-end; }
@media (max-width: 48rem) {
    .gtable, .gtable tbody, .gtable td { display: block; }
    .gtable thead { display: none; }
    .gtable tr { display: block; position: relative; padding: .6rem 0 .6rem 2rem; border-bottom: 1px solid var(--line); }
    .gtable td, .gtable tbody tr:nth-child(even), .gtable tbody tr:hover { padding: .15rem 0; border: 0; background: none; }
    .gt-check { position: absolute; left: 0; top: .7rem; width: auto; }
    .gtable td[data-th]::before { content: attr(data-th) ": "; font-size: .78rem; color: var(--muted); }
    .gt-actions, .gt-actions .guest-actions { text-align: left; justify-content: flex-start; }
}

/* ── Projekt-Kalender (KA) — FullCalendar-Theming ──────────── */
.cal-mount {
    --fc-border-color: var(--line);
    --fc-page-bg-color: var(--card);
    --fc-neutral-bg-color: var(--bg);
    --fc-today-bg-color: transparent;
    --fc-now-indicator-color: var(--gold);
    --fc-non-business-color: var(--bg);
    background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: var(--s3);
    min-width: 0; flex: 1;
}
.fc { font-family: var(--font-sans); }
.fc .fc-col-header-cell-cushion { color: var(--muted); text-decoration: none; font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; }
.fc .fc-daygrid-day-number { color: var(--ink); text-decoration: none; font-variant-numeric: tabular-nums; font-size: .82rem; }
.fc .fc-day-other .fc-daygrid-day-number { color: var(--muted-light); }
.fc .fc-day-sat, .fc .fc-day-sun { background: var(--surface-2); }
.fc .fc-day-today .fc-daygrid-day-number {
    display: inline-grid; place-items: center; min-width: 1.5rem; height: 1.5rem; margin: .15rem;
    background: var(--gold); color: var(--text-inverse); border-radius: 50%; font-weight: 700;
}
.fc-event { cursor: pointer; border: none; }

/* Kalender-Werkzeugflaeche (CAL-003) */
.cal2 { display: flex; flex-direction: column; gap: var(--s4); min-height: calc(100dvh - var(--topbar-h) - var(--s6)); }
.cal2-bar { display: flex; align-items: center; gap: var(--s4); flex-wrap: wrap; }
.cal2-nav { display: flex; align-items: center; gap: var(--s2); }
.cal2-nav .icon-btn { color: var(--muted); }
.cal2-nav .icon-btn:hover { color: var(--ink); }
.cal2-today { padding: .4rem .85rem; font-size: .85rem; }
.cal2-period { font-size: 1.05rem; font-weight: 650; min-width: 11rem; }
.cal2-seg { display: inline-flex; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 2px; gap: 2px; }
.cal2-seg a {
    padding: .32rem .8rem; font-size: .85rem; color: var(--muted); text-decoration: none;
    border-radius: calc(var(--r-sm) - 2px); transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.cal2-seg a:hover { color: var(--ink); }
.cal2-seg a[aria-current="page"] { background: var(--card); color: var(--ink); font-weight: 600; box-shadow: var(--shadow-sm); }
.cal2-tools { margin-left: auto; display: flex; align-items: center; gap: var(--s3); }
.cal2-northstar {
    width: auto; margin: 0; padding: .35rem .75rem; background: none; border: 0; box-shadow: none;
    color: var(--gold-dark); font-size: .82rem; font-weight: 600; cursor: pointer;
    text-decoration: underline; text-decoration-color: rgba(176, 141, 87, .45); text-underline-offset: .18em;
}
.cal2-northstar:hover { background: none; filter: none; text-decoration-color: currentColor; }
.cal2-new { padding: .45rem 1rem; font-size: .88rem; }
.cal2-fs .ic-compress { display: none; }
.cal2.is-fullscreen .cal2-fs .ic-expand { display: none; }
.cal2.is-fullscreen .cal2-fs .ic-compress { display: inline-block; }
.cal2-body { display: flex; gap: var(--s4); align-items: stretch; flex: 1; min-height: 0; }
.cal2-rail { flex: 0 0 14rem; display: flex; flex-direction: column; gap: var(--s4); min-width: 0; }
#cal-rail-default { display: flex; flex-direction: column; gap: var(--s4); min-width: 0; flex: 1; }
.cal2-rail-title { font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); margin: 0 0 .5rem; }
.cal2-layers, .cal2-typelegend { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: var(--s4); }
.cal2-layer { display: flex; align-items: center; gap: .5rem; font-size: .85rem; color: var(--ink); margin: 0 0 .35rem; cursor: pointer; }
.cal2-layer input { width: auto; margin: 0; }
.layer-swatch { width: .65rem; height: .65rem; flex: none; border-radius: 2px; }
.layer-swatch.ls-termine { background: var(--ink); }
.layer-swatch.ls-buchungen { background: var(--gold); transform: rotate(45deg); border-radius: 1px; }
.layer-swatch.ls-aufgaben { background: var(--ok); border-radius: 50%; }
.cal2-typelegend ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .3rem; }
.cal2-typelegend li { display: flex; align-items: center; gap: .5rem; font-size: .8rem; color: var(--ink-soft); }
.cal2-typelegend i { width: .6rem; height: .6rem; border-radius: 50%; flex: none; }
.cal2-compare { font-size: .82rem; }

/* Mini-Monats-Navigator */
.cal-mini { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: .75rem; }
.mini-head { display: flex; align-items: center; gap: .25rem; margin-bottom: .5rem; }
.mini-label { flex: 1; font-size: .85rem; font-weight: 650; }
.mini-arrow { width: 1.6rem; height: 1.6rem; padding: 0; margin: 0; background: none; border: 0; color: var(--muted); cursor: pointer; font-size: 1rem; }
.mini-arrow:hover { color: var(--ink); filter: none; }
.mini-grid { display: grid; grid-template-columns: repeat(7, 1fr); }
.mini-wd { text-align: center; font-size: .62rem; color: var(--muted); padding: .2rem 0; }
.mini-day { width: auto; margin: 0; padding: .3rem 0; font-size: .72rem; background: none; border: 0; color: var(--ink); cursor: pointer; border-radius: .3rem; }
.mini-day:hover { background: var(--surface); filter: none; }
.mini-day.other { color: var(--muted-light); }
.mini-day.in-range { background: var(--surface); }
.mini-day.today { background: var(--gold); color: var(--text-inverse); }

/* ── Buchungs-Anhänge ──────────────────────────────────────── */
.booking-item { border-bottom: 1px solid var(--line); margin: 0 -.5rem; padding: 0 .5rem .4rem; }
.booking-item:last-child { border-bottom: 0; }
.booking-item .loc { border-bottom: 0; margin: 0; }
.attach { padding: 0 0 .3rem; }
.attach-list { list-style: none; margin: 0 0 .4rem; padding: 0; display: flex; flex-direction: column; gap: .3rem; }
.attach-item { display: flex; align-items: center; gap: .5rem; font-size: .85rem; }
.attach-ic { color: var(--ink-soft); flex: none; }
.attach-link { color: var(--ink); text-decoration: none; word-break: break-word; }
.attach-link:hover { color: var(--gold-dark); text-decoration: underline; }
.attach-meta { color: var(--muted); font-size: .78rem; white-space: nowrap; }
.attach-del { margin: 0 0 0 auto; }
.attach-del button { width: auto; margin: 0; padding: 0 .35rem; font-size: 1.05rem; line-height: 1; }
.attach-form { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; margin: .2rem 0 0; }
.attach-form .attach-ic { opacity: .7; }
.attach-form input[type="file"] { width: auto; margin: 0; flex: 1 1 13rem; font-size: .82rem; }
.attach-form input[type="text"] { width: auto; margin: 0; flex: 1 1 9rem; }
.attach-form button { width: auto; margin: 0; }

/* Grosse Tag-Kacheln im Monatsraster */
.fc .fc-daygrid-day-frame { min-height: 8.5rem; }
.fc .fc-daygrid-day-number { font-size: .95rem; padding: .3rem .45rem; }

/* Vollbild-Modus */
.cal2.is-fullscreen {
    position: fixed; inset: 0; z-index: 1000; margin: 0; max-width: none;
    background: var(--bg); padding: var(--s4); overflow: auto;
}
body.cal-fs-lock { overflow: hidden; }

/* Kopf/Aktionsleiste, geteilt vom Termin-Panel (CAL-011) und Event-Popover */
.cal-modal-title { font-size: 1rem; font-weight: 650; margin: 0 0 .5rem; }
.cal-modal-actions { display: flex; align-items: center; gap: .75rem; margin-top: .5rem; }
.cal-modal-actions button { width: auto; }

@media (min-width: 64.01rem) {
    /* Panel-Breite nur am Desktop erzwingen — am Stapel-Breakpoint (<=64rem)
       uebernimmt .cal2-rail bereits width:100%, kein konkurrierender Wert. */
    .cal2-rail.is-creating { flex-basis: 22rem; }
}
@media (max-width: 64rem) {
    .cal2-body { flex-direction: column; }
    .cal2-rail { flex: none; width: 100%; }
    #cal-rail-default { flex-direction: row; flex-wrap: wrap; align-items: flex-start; }
    .cal-mini { flex: 0 0 15rem; }
    .cal2-period { min-width: 0; order: 5; width: 100%; }
}
@media (max-width: 48rem) {
    .cal-mount { padding: var(--s2); }
    .cal-mini { display: none; }
    .cal2-fs { display: none; }
    .fc .fc-daygrid-day-frame { min-height: 5rem; }
}

/* ── Kalender-Vergleich (zwei Hochzeiten nebeneinander) ────── */
.cmp-container { max-width: none; }
.cmp-picker { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: var(--s4); }
.cmp-chip {
    display: inline-flex; align-items: center; gap: .4rem; padding: .4rem .8rem; margin: 0;
    border: 1px solid var(--line); border-radius: 999px; background: var(--card); font-size: .85rem; cursor: pointer;
}
.cmp-chip input { width: auto; margin: 0; }
.cmp-bar { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; margin-bottom: var(--s4); }
.cmp-btn {
    width: auto; margin: 0; padding: .4rem .8rem; font-size: .85rem;
    background: var(--card); color: var(--ink); border: 1px solid var(--line);
}
.cmp-btn:hover { border-color: var(--gold); color: var(--gold-dark); filter: none; }
.cmp-title { font-family: var(--font-serif); font-size: 1.1rem; margin: 0 .5rem; }
.cmp-view { width: auto; margin: 0; }
.cmp-panels { display: flex; gap: var(--s4); align-items: flex-start; overflow-x: auto; padding-bottom: var(--s3); }
.cmp-panel {
    flex: 1 1 0; min-width: 22rem; background: var(--card);
    border: 1px solid var(--line); border-radius: var(--r-md); padding: var(--s3);
}
.cmp-panel-head {
    display: flex; align-items: center; justify-content: space-between; gap: .5rem;
    margin-bottom: .5rem; padding-bottom: .5rem; border-bottom: 1px solid var(--line);
}
.cmp-close { width: auto; margin: 0; background: none; border: 0; color: var(--muted); font-size: 1.1rem; cursor: pointer; padding: 0 .3rem; }
.cmp-close:hover { color: var(--err); filter: none; }

@media (max-width: 48rem) {
    .cmp-panels { flex-direction: column; }
    .cmp-panel { min-width: 0; width: 100%; }
}

/* ── RSVP-Gästeportal (P5-013…020) ─────────────────────────── */
.rsvp-card { max-width: 40rem; padding-top: 0; overflow: hidden; }
.rsvp-hero {
    text-align: center; margin: 0 -2rem 1.5rem; padding: var(--s8) var(--s5) var(--s6);
    background: linear-gradient(160deg, var(--rsvp-hero-0) 0%, var(--rsvp-hero-1) 100%); border-bottom: 1px solid var(--line);
}
.rsvp-hero .eyebrow { color: var(--gold-dark); }
.rsvp-names {
    font-family: var(--font-serif); font-weight: 500; color: var(--ink);
    font-size: var(--fs-4); line-height: 1.15; letter-spacing: -.01em;
    margin: var(--s3) 0 var(--s4); display: flex; flex-direction: column; align-items: center; gap: .1rem;
}
.rsvp-amp { color: var(--gold); font-style: italic; font-size: .75em; line-height: 1; }
.rsvp-count { color: var(--ink-soft); font-size: .95rem; margin: .4rem 0 0; }
.rsvp-count strong { color: var(--gold-dark); font-family: var(--font-serif); font-size: 1.15rem; }
.rsvp-map { display: inline-block; font-size: .82rem; color: var(--ink); margin-top: .15rem; }
.rsvp-map:hover { text-decoration: underline; }
.rsvp-date { font-family: var(--font-serif); color: var(--gold); font-size: 1.1rem; margin: 0; }
.rsvp-hero .rsvp-date { margin: 0 0 .2rem; }
.rsvp-motto { font-family: var(--font-serif); font-style: italic; font-size: 1.1rem; color: var(--ink-soft); margin: var(--s4) 0 0; }
.rsvp-meta { font-size: .9rem; color: var(--muted); }
.rsvp-loc { padding: .6rem 0; border-bottom: 1px solid var(--line); }
.rsvp-loc:last-of-type { border-bottom: 0; }
.rsvp-loc .loc-type { display: block; }
.rsvp-loc .guest-meta { display: block; font-size: .82rem; color: var(--muted); }
.radios { display: flex; flex-direction: column; gap: .4rem; margin: .5rem 0 1rem; }
.radio { font-size: .95rem; color: var(--ink); margin: 0; display: flex; align-items: center; gap: .5rem; }
.radio input { width: auto; margin: 0; }
.consent { display: grid; grid-template-columns: auto 1fr; gap: .5rem; align-items: start; line-height: 1.5; margin: .5rem 0 1rem; }

@media (max-width: 30rem) {
    .grid2, .checks { grid-template-columns: 1fr; }
    .nav { padding: var(--s3) var(--s4); }
    .container { padding: var(--s5) var(--s4); }
    .filterbar select, .filterbar button { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
    button[aria-busy="true"]::after { animation: none; }
    * { transition: none !important; }
    /* Reveal als vollständiger Gleichwert: sofort sichtbar, keine Bewegung */
}

/* ════════════════════════════════════════════════════════════════
   Übersicht = Kommando-Zentrale (PRO-003)
   ════════════════════════════════════════════════════════════════ */
.container-wide { max-width: 82rem; }

/* Eröffnungs-Choreografie ohne JS: @starting-style + Stagger */
.rise { transition: opacity .3s var(--ease), translate .3s var(--ease); }
.rise.r2 { transition-delay: .06s; }
.rise.r3 { transition-delay: .12s; }
.rise.r4 { transition-delay: .18s; }
.rise.r5 { transition-delay: .24s; }
@starting-style {
    .rise { opacity: 0; translate: 0 10px; }
}

/* Signature: Planungs-Zeitachse */
.plan-strip { padding: var(--s4) 0; background: var(--card); border-bottom: 1px solid var(--line); }
.ps-inner { max-width: 82rem; width: 100%; margin-inline: auto; padding-inline: var(--s5); }
.ps-head { display: flex; justify-content: space-between; align-items: baseline; margin: 0 .5rem; }
.ps-titel { font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--muted); }
.ps-head a { font-size: .78rem; font-weight: 500; color: var(--muted); }
.ps-head a:hover { color: var(--gold-dark); }
.ps-scroll { overflow-x: auto; }
.ps-rail { position: relative; height: 3px; background: var(--line); margin: 2.1rem 6.5rem 2.2rem 6.5rem; min-width: 42rem; }
.ps-fill { position: absolute; inset: 0 auto 0 0; width: var(--w); background: var(--ink); opacity: .85; }
.ps-ticks { list-style: none; margin: 0; padding: 0; }
.ps-tick { position: absolute; top: 50%; left: var(--x); transform: translate(-50%, -50%); }
.ps-tick i { display: block; width: .7rem; height: .7rem; border-radius: 50%; background: var(--ink); border: 2px solid var(--ink); }
.ps-tick.open i { background: var(--card); border-color: var(--muted); }
.ps-lbl { position: absolute; top: 1rem; left: 50%; transform: translateX(-50%); font-size: .73rem; color: var(--ink); white-space: nowrap; }
.ps-date { position: absolute; bottom: 1rem; left: 50%; transform: translateX(-50%); font-size: .66rem; color: var(--muted); white-space: nowrap; }
.ps-tick.ps-alt .ps-lbl { top: auto; bottom: 1rem; }
.ps-tick.ps-alt .ps-date { bottom: auto; top: 1rem; }
.ps-today { position: absolute; top: 50%; left: var(--x); transform: translate(-50%, -50%); }
.ps-today i { display: block; width: 2px; height: 1.6rem; background: var(--gold); margin: 0 auto; }
.ps-today .ps-lbl {
    top: -1.65rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; font-size: .64rem;
    color: var(--gold-dark); background: var(--gold-bg); padding: .1rem .5rem; border-radius: 999px;
}
.ps-end { position: absolute; top: 50%; right: 0; transform: translate(50%, -50%); }
.ps-end i { display: block; width: .9rem; height: .9rem; border-radius: 50%; background: var(--card); border: 2.5px solid var(--gold); }
.ps-end .ps-lbl {
    top: 1.1rem; left: auto; right: 0; transform: none; font-weight: 600; color: var(--gold-dark);
    white-space: normal; max-width: 6.5rem; text-align: right; line-height: 1.25;
}

@media (max-width: 50rem) {
    .ps-scroll {
        mask-image: linear-gradient(to right, #000 calc(100% - 2rem), transparent);
        -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 2rem), transparent);
    }
}

/* KPI-Band: Zellen mit Hairlines, keine Karten */
.kpis { display: grid; grid-template-columns: repeat(5, 1fr); background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; }
.kpi { padding: var(--s4) var(--s5); border-right: 1px solid var(--surface); min-width: 0; }
.kpi:last-child { border-right: 0; }
.kpi-lbl { font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); margin: 0 0 .3rem; }
.kpi-val { font-size: 1.45rem; font-weight: 700; line-height: 1.15; letter-spacing: -.01em; }
.kpi-val-sm { font-size: 1.15rem; }
.kpi-val small { font-size: .85rem; font-weight: 400; color: var(--muted); }
.kpi-sub { font-size: .78rem; color: var(--muted); margin: .15rem 0 0; }
.bad { color: var(--err); font-weight: 600; }

/* Zonen + Werkzeug-Karten */
.zones { display: grid; grid-template-columns: 2fr 1fr; gap: var(--s5); margin-top: var(--s5); align-items: start; }
.zone-main { display: grid; gap: var(--s5); min-width: 0; }
.rail { display: grid; gap: var(--s5); min-width: 0; }
.row2 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s5); align-items: start; }
.tool-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); }
.tool-head { display: flex; align-items: baseline; gap: .6rem; flex-wrap: wrap; padding: var(--s4) var(--s5); border-bottom: 1px solid var(--surface); }
.tool-title { font-size: .95rem; font-weight: 600; margin: 0; font-family: var(--font-sans); letter-spacing: 0; }
.tool-hint { font-size: .78rem; color: var(--muted); }
.pad { padding: var(--s4) var(--s5); margin: 0; }

/* Jetzt-wichtig-Queue */
.queue { list-style: none; margin: 0; padding: 0; }
.q-row { display: grid; grid-template-columns: auto 1fr auto; gap: var(--s4); align-items: center; padding: var(--s3) var(--s5); border-bottom: 1px solid var(--surface); transition: background var(--t-fast) var(--ease); }
.q-row:last-child { border-bottom: 0; }
.q-row:hover { background: var(--bg); }
.q-rank { font-size: .72rem; font-weight: 700; color: var(--muted); width: 1.1rem; text-align: right; }
.q-main { min-width: 0; }
.q-title { font-weight: 600; font-size: .9rem; }
.q-meta { display: flex; flex-wrap: wrap; gap: .3rem .6rem; align-items: center; font-size: .78rem; color: var(--muted); margin-top: .15rem; }
.q-row .btn-link { padding: .4rem .85rem; font-size: .82rem; }

/* Budget-Balken (Ziel = Kartenbreite) */
.budget-bar { position: relative; height: .9rem; background: var(--surface); border-radius: 999px; overflow: hidden; margin: 0 0 var(--s3); }
.bb-actual { position: absolute; inset: 0 auto 0 0; width: var(--w); background: var(--gold); opacity: .35; }
.bb-paid { position: absolute; inset: 0 auto 0 0; width: var(--w); background: var(--ink); opacity: .85; }
.budget-legend { display: flex; flex-wrap: wrap; gap: .3rem 1rem; font-size: .75rem; color: var(--muted); }
.budget-legend i { display: inline-block; width: .6rem; height: .6rem; border-radius: 2px; margin-right: .3rem; vertical-align: -1px; }
.budget-legend .lg-paid { background: var(--ink); }
.budget-legend .lg-actual { background: var(--gold); opacity: .45; }
.budget-legend .lg-target { background: var(--surface); border: 1px solid var(--line); }
.budget-over { margin: var(--s3) 0 0; padding: 0; list-style: none; }
.budget-over li { display: flex; justify-content: space-between; gap: var(--s3); padding: .45rem 0 0; border-top: 1px solid var(--surface); margin-top: .45rem; font-size: .82rem; }
.budget-over .delta { color: var(--err); font-weight: 600; }

/* Agenda + Aktivität */
.agenda { list-style: none; margin: 0; padding: 0; }
.agenda li { display: grid; grid-template-columns: 2.6rem 1fr; gap: var(--s3); padding: .55rem var(--s5); border-bottom: 1px solid var(--surface); align-items: center; }
.agenda li:last-child { border-bottom: 0; }
.agenda .d { text-align: center; line-height: 1.1; }
.agenda .d b { display: block; font-size: 1.05rem; font-weight: 700; }
.agenda .d span { font-size: .62rem; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.agenda .what { min-width: 0; font-size: .85rem; }
.agenda .what small { display: block; color: var(--muted); font-size: .76rem; }
.act-list { list-style: none; margin: 0; padding: 0; }
.act-list li { padding: .5rem var(--s5); border-bottom: 1px solid var(--surface); font-size: .82rem; }
.act-list li:last-child { border-bottom: 0; }

/* Zusagen-Funnel */
.funnel { padding: var(--s2) var(--s5) var(--s4); }
.f-step { margin-top: var(--s3); }
.f-lbl { display: flex; justify-content: space-between; font-size: .8rem; color: var(--muted); margin-bottom: .25rem; }
.f-lbl b { color: var(--ink); font-weight: 600; }
.f-bar { height: 1.3rem; background: var(--surface); border-radius: 4px; overflow: hidden; }
.f-bar i { display: block; height: 100%; width: var(--w); border-radius: 4px; }
.f-bar .fb-all { background: var(--line); }
.f-bar .fb-resp { background: var(--info); opacity: .55; }
.f-bar .fb-yes { background: var(--ok); opacity: .8; }
.f-note { font-size: .76rem; color: var(--muted); margin: var(--s3) 0 0; }

/* Aufgaben nach Phase */
.phases { padding: var(--s2) var(--s5) var(--s4); }
.ph { margin-top: var(--s3); }
.ph-lbl { display: flex; justify-content: space-between; gap: var(--s3); font-size: .8rem; margin-bottom: .25rem; }
.ph-lbl b { font-weight: 600; }
.ph-lbl .num { color: var(--muted); }
.ph-bar { display: flex; gap: 2px; height: .5rem; }
.ph-bar i { flex: 1; background: var(--surface); border-radius: 2px; }
.ph-bar i.on { background: var(--ok); opacity: .75; }
.ph-bar i.over { background: var(--err); }

@media (max-width: 64rem) {
    .kpis { grid-template-columns: repeat(2, 1fr); }
    .kpi { border-bottom: 1px solid var(--surface); }
    .zones, .row2 { grid-template-columns: 1fr; }
}
@media (max-width: 40rem) {
    .q-row { grid-template-columns: 1fr; gap: .4rem; }
    .q-rank { display: none; }
}
@media (prefers-reduced-motion: reduce) {
    .rise { transition: none; }
}

/* App-Seiten: Titel im Werkzeug-Ton (Serif bleibt Auth/RSVP/Brand) (PRO-004) */
.main-col main h1 { font-family: var(--font-sans); font-size: 1.25rem; font-weight: 650; letter-spacing: 0; margin: .2rem 0 1rem; }
.main-col .dash-head { margin-bottom: var(--s4); }

/* Ctrl+K-Sprungpalette (PRO-005) */
.pal-trigger {
    display: none; align-items: center; gap: .5rem; width: auto; margin: 0 0 0 auto;
    padding: .4rem .7rem; min-width: 15rem; background: var(--card); border: 1px solid var(--line);
    border-radius: var(--r-sm); box-shadow: none; color: var(--muted); font-size: .85rem; cursor: pointer;
}
.pal-trigger:hover { filter: none; background: var(--card); border-color: var(--muted); color: var(--ink); }
.pal-trigger kbd, .cmdk-hint kbd {
    font-family: inherit; font-size: .68rem; color: var(--muted); background: var(--bg);
    border: 1px solid var(--line); border-bottom-width: 2px; border-radius: 4px; padding: .05rem .35rem;
}
.pal-trigger kbd { margin-left: auto; }
.pal-trigger .icon { width: .9rem; height: .9rem; }
@media (min-width: 64rem) {
    .pal-trigger { display: inline-flex; }
    .pal-trigger ~ .chip-days { margin-left: 0; }
}
dialog.cmdk { border: 1px solid var(--line); border-radius: var(--r-md); padding: 0; width: min(34rem, 92vw); box-shadow: var(--shadow); background: var(--card); color: var(--ink); }
dialog.cmdk::backdrop { background: rgba(31, 28, 25, .28); }
.cmdk input[type="search"] { width: 100%; margin: 0; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; padding: .85rem 1rem; font-size: .95rem; background: var(--card); }
.cmdk input[type="search"]:focus { outline: none; border-color: var(--line); border-bottom-color: var(--gold); }
.cmdk ul { list-style: none; margin: 0; padding: .4rem; max-height: 17rem; overflow: auto; }
.cmdk li a, .cmdk li button {
    display: flex; gap: .6rem; align-items: center; width: 100%; margin: 0; padding: .5rem .7rem;
    background: none; border: 0; border-radius: var(--r-sm); box-shadow: none;
    color: var(--ink); text-decoration: none; font-size: .88rem; text-align: left; cursor: pointer;
}
.cmdk li form { margin: 0; }
.cmdk li a:hover, .cmdk li button:hover, .cmdk li a:focus-visible, .cmdk li button:focus-visible { background: var(--bg); filter: none; }
.cmdk li .icon { color: var(--muted); flex: none; }
.cmdk li small { margin-left: auto; color: var(--muted); font-size: .72rem; }
.cmdk-empty { margin: 0; padding: .8rem 1rem; font-size: .85rem; color: var(--muted); }
.cmdk-hint { padding: .45rem 1rem .6rem; font-size: .72rem; color: var(--muted); border-top: 1px solid var(--surface); }

/* ── Auswahl-Vorschlaege im Draht (KM-003) ─────────────────── */
.msg-choice {
    border: 1px solid var(--line); border-radius: var(--r-md); padding: .9rem 1rem;
    max-width: 92%; background: var(--card); box-shadow: var(--shadow-sm);
}
.opt-list { list-style: none; margin: .6rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .45rem; }
.opt-row {
    display: flex; align-items: center; justify-content: space-between; gap: var(--s3);
    padding: .55rem .7rem; border: 1px solid var(--line); border-radius: var(--r-sm);
    background: var(--input-bg); transition: border-color var(--t-fast) var(--ease);
}
.opt-row:hover { border-color: var(--muted-light); }
.opt-main { min-width: 0; display: flex; flex-direction: column; gap: .1rem; }
.opt-title { font-weight: 600; font-size: .9rem; display: flex; align-items: center; gap: .35rem; }
.opt-check { color: var(--ok); flex: none; }
.opt-desc { font-size: .8rem; color: var(--muted); }
.opt-cost { font-size: .8rem; color: var(--ink-soft); }
.opt-row form { margin: 0; flex: none; }
.opt-pick { padding: .35rem .8rem; font-size: .8rem; white-space: nowrap; }
.opt-chosen { border-color: var(--ok); background: var(--ok-bg); }
.opt-chosen .opt-title { color: var(--ok); }
.opt-passed { opacity: .55; }
.opt-unsure { margin: .55rem 0 0; }
.opt-unsure button { font-size: .8rem; }
.opt-unsure-note { margin: .55rem 0 0; font-size: .8rem; color: var(--warn); }
.opt-fieldset { border: 1px solid var(--line); border-radius: var(--r-sm); padding: .6rem .8rem .3rem; margin: 0 0 .8rem; }
.opt-fieldset legend { font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); padding: 0 .35rem; }
.msg-img { display: block; margin: 0 0 .55rem; }
.msg-img img { display: block; width: 100%; max-height: 14rem; object-fit: cover; border-radius: var(--r-sm); }
.opt-img { display: block; }
.opt-img img { display: block; width: 100%; height: 7.5rem; object-fit: cover; border-radius: var(--r-sm); }
.opt-grid { display: grid; grid-template-columns: 1fr 1fr; }
.opt-grid .opt-row { flex-direction: column; align-items: stretch; justify-content: flex-start; }
.opt-grid .opt-pick { width: 100%; text-align: center; }

@media (max-width: 30rem) {
    .msg-choice { max-width: 100%; }
    .opt-row { flex-direction: column; align-items: stretch; }
    .opt-pick { width: 100%; text-align: center; }
    .opt-grid { grid-template-columns: 1fr; }
}

/* ── Kalender-Skin (CAL-004): Chips mit Gewerk-Spine, Zustandsformen ── */
.fc .fc-daygrid-event, .fc .fc-timegrid-event {
    border: 0; border-radius: 4px; box-shadow: none;
}
.fc .fc-daygrid-dot-event, .fc .fc-daygrid-block-event, .fc .fc-timegrid-event .fc-event-main {
    color: var(--ink);
}
.fc .fc-daygrid-event {
    display: flex; align-items: baseline; gap: .3rem;
    margin: 1px 2px; padding: .1rem .35rem .1rem .5rem;
    background: var(--surface-2); border-left: 3px solid var(--muted);
    font-size: .74rem; line-height: 1.35;
}
.fc .fc-daygrid-event .fc-event-time { font-variant-numeric: tabular-nums; color: var(--muted); font-size: .68rem; flex: none; }
.fc .fc-daygrid-event .fc-event-title { color: var(--ink); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fc .fc-daygrid-dot-event .fc-daygrid-event-dot { display: none; }
.fc .fc-timegrid-event {
    background: var(--surface-2); border-left: 3px solid var(--muted); padding: .15rem .4rem;
}
.fc .fc-timegrid-event .fc-event-time { font-size: .68rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.fc .fc-timegrid-event .fc-event-title { font-size: .78rem; font-weight: 500; color: var(--ink); }
/* Zeit+Titel vertikal im Block zentriert statt oben klebend (CAL-011) —
   gilt fuer echte Termine und den Ghost gleichermassen, kein Bruch beim
   Speichern. */
.fc .fc-timegrid-event .fc-event-main { height: 100%; }
.fc .fc-timegrid-event .fc-event-main-frame { height: 100%; display: flex; flex-direction: column; justify-content: center; }
.fc .cal2-ghost { outline: 1px dashed var(--ink-soft); outline-offset: -1px; pointer-events: none; }

/* Gewerk-Tinten: Spine + Flaeche */
.fc .ev-t-milestone { background: var(--evt-milestone-bg); border-left-color: var(--evt-milestone); }
.fc .ev-t-core { background: var(--evt-core-bg); border-left-color: var(--evt-core); }
.fc .ev-t-image { background: var(--evt-image-bg); border-left-color: var(--evt-image); }
.fc .ev-t-floral { background: var(--evt-floral-bg); border-left-color: var(--evt-floral); }
.fc .ev-t-sound { background: var(--evt-sound-bg); border-left-color: var(--evt-sound); }
.fc .ev-t-venue { background: var(--evt-venue-bg); border-left-color: var(--evt-venue); }

/* Layer-Formen: Buchung = Raute, Aufgabe = Punktkreis (Form, nicht nur Farbe) */
.fc .ev-booking .fc-event-title::before {
    content: ""; display: inline-block; width: .45rem; height: .45rem; margin-right: .3rem;
    background: currentColor; opacity: .55; transform: rotate(45deg) translateY(-1px);
}
.fc .ev-task { border-left-style: dotted; }
.fc .ev-task .fc-event-title::before {
    content: ""; display: inline-block; width: .5rem; height: .5rem; margin-right: .3rem;
    border: 1.5px solid currentColor; border-radius: 50%; opacity: .6; vertical-align: -1px;
}
.fc .ev-task.ev-done .fc-event-title::before { background: var(--ok); border-color: var(--ok); opacity: 1; }

/* Zustandsformen */
.fc .ev-done { opacity: .55; }
.fc .ev-done .fc-event-title { text-decoration: line-through; text-decoration-thickness: 1px; }
.fc .ev-cancelled { opacity: .5; }
.fc .ev-cancelled .fc-event-title { text-decoration: line-through; }
.fc .ev-conflict { outline: 2px solid var(--err); outline-offset: -1px; }

/* Hochzeitstag-Zelle: Brass-Oberkante + Mikro-Tag */
.fc .cal2-wedding { position: relative; box-shadow: inset 0 3px 0 var(--gold); }
.fc .cal2-wedding .fc-daygrid-day-top::after {
    content: "Hochzeit"; font-size: .56rem; letter-spacing: .12em; text-transform: uppercase;
    color: var(--gold-dark); background: var(--gold-bg); border-radius: 3px;
    padding: .05rem .3rem; margin: .2rem .2rem 0 auto;
}

/* TimeGrid: Gutter, Jetzt-Linie, Business-Toenung */
.fc .fc-timegrid-slot-label-cushion { font-variant-numeric: tabular-nums; font-size: .7rem; color: var(--muted); }
.fc .fc-non-business { background: var(--bg); }
.fc .fc-timegrid-now-indicator-line { border-color: var(--gold); border-width: 1.5px; }
.fc .fc-timegrid-now-indicator-arrow { border-color: var(--gold); }

/* Agenda (listMonth) im Werkzeug-Ton */
.fc .fc-list { border: 0; }
.fc .fc-list-day-cushion { background: var(--bg); }
.fc .fc-list-day-text, .fc .fc-list-day-side-text {
    font-size: .78rem; font-weight: 650; color: var(--ink); text-decoration: none;
}
.fc .fc-list-event td { font-size: .85rem; }
.fc .fc-list-event-time { font-variant-numeric: tabular-nums; color: var(--muted); font-size: .78rem; }
.fc .fc-list-event-dot { border-color: var(--muted); }
.fc .ev-t-milestone .fc-list-event-dot { border-color: var(--evt-milestone); }
.fc .ev-t-core .fc-list-event-dot { border-color: var(--evt-core); }
.fc .ev-t-image .fc-list-event-dot { border-color: var(--evt-image); }
.fc .ev-t-floral .fc-list-event-dot { border-color: var(--evt-floral); }
.fc .ev-t-sound .fc-list-event-dot { border-color: var(--evt-sound); }
.fc .ev-t-venue .fc-list-event-dot { border-color: var(--evt-venue); }
.fc .fc-list-event:hover td { background: var(--bg); }

/* +N-mehr-Link */
.fc .fc-daygrid-more-link { font-size: .7rem; color: var(--gold-dark); font-weight: 600; }
.fc .fc-popover { border: 1px solid var(--line); border-radius: var(--r-md); box-shadow: var(--shadow); }
.fc .fc-popover-header { background: var(--bg); font-size: .8rem; }

/* Kalender: Termin-Panel, Fehlstreifen, Konflikt-Karte, Mobile-FAB (CAL-006..011) */
#cal-rail-default[hidden] { display: none; }
.cal2-panel[hidden] { display: none; }
.cal2-panel {
    background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md);
    padding: var(--s4); display: flex; flex-direction: column; min-width: 0;
}
.cal2-panel-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--s2); }
.cal2-panel-head .cal-modal-title { margin: 0; }
.cal2-error {
    display: flex; align-items: center; justify-content: space-between; gap: var(--s3);
    margin: 0 0 var(--s3); padding: .5rem .75rem; font-size: .85rem;
    background: var(--err-bg); color: var(--err); border-radius: var(--r-sm);
}
.cal2-conflicts { background: var(--err-bg); border: 1px solid var(--err); border-radius: var(--r-md); padding: var(--s4); }
.cal2-conflicts .cal2-rail-title { color: var(--err); display: flex; align-items: center; gap: .35rem; }
.cal2-conflicts .cf-ic { color: var(--err); }
.cal2-conflicts ul { list-style: none; margin: 0; padding: 0; }
.cal2-conflicts li { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; padding: .3rem 0; font-size: .8rem; }
.cf-what { min-width: 0; }
.cf-what strong { display: block; }
.cf-what .num { color: var(--muted); font-size: .74rem; }

/* Konflikt-Puls: exakt 2 Iterationen nach dem Sprung, reduced-motion: statisch */
.pulse-conflicts .ev-conflict { animation: cfpulse .6s var(--ease) 2; }
@keyframes cfpulse {
    50% { outline-color: transparent; }
}

@media (max-width: 48rem) {
    .cal2-new {
        position: fixed; right: var(--s4); bottom: var(--s4); z-index: 50;
        border-radius: 999px; padding: .8rem 1.15rem; box-shadow: var(--shadow);
    }
    .cal2-tools .cal2-northstar { display: none; }
}
@media (prefers-reduced-motion: reduce) {
    .pulse-conflicts .ev-conflict { animation: none; }
}

/* Event-Popover (CAL-010) */
.cal2-pop {
    position: fixed; z-index: 1100; width: min(20rem, calc(100vw - 1rem));
    background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md);
    box-shadow: var(--shadow); padding: var(--s4); outline: none;
    opacity: 0; translate: 0 4px;
    transition: opacity var(--t-fast) var(--ease), translate var(--t-fast) var(--ease);
}
.cal2-pop.in { opacity: 1; translate: 0; }
.pop-head { display: flex; align-items: center; gap: .5rem; }
.pop-dot { width: .6rem; height: .6rem; border-radius: 50%; flex: none; background: var(--pd, var(--muted)); }
.pop-title { flex: 1; margin: 0; font-size: .95rem; font-weight: 650; min-width: 0; overflow-wrap: anywhere; }
.pop-when { margin: .45rem 0 0; font-size: .82rem; color: var(--ink-soft); }
.pop-meta { display: flex; align-items: center; flex-wrap: wrap; gap: .3rem .6rem; margin: .35rem 0 0; font-size: .78rem; color: var(--muted); }
@media (max-width: 48rem) {
    .cal2-pop { inset: auto 0 0 0; width: auto; max-height: 60dvh; overflow: auto; border-radius: var(--r-md) var(--r-md) 0 0; }
}

/* ── Feed-Stream (Facebook-Anatomie) ───────────────────────── */
.stream { max-width: 40rem; }
.composer, .post {
    background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md);
    box-shadow: var(--shadow-sm); margin-bottom: var(--s4);
}
.composer { padding: .65rem .8rem; }
.composer summary {
    display: flex; align-items: center; gap: .6rem; cursor: pointer; list-style: none;
    color: var(--muted); font-size: .9rem;
}
.composer summary::-webkit-details-marker { display: none; }
.composer-hint {
    flex: 1; background: var(--input-bg); border: 1px solid var(--line);
    border-radius: 999px; padding: .5rem .9rem;
}
.composer[open] { padding-bottom: 1rem; }
.composer form { margin-top: .8rem; }
.avatar {
    flex: none; display: inline-grid; place-items: center; width: 2.25rem; height: 2.25rem;
    border-radius: 50%; background: var(--gold-bg); color: var(--gold-dark);
    font-size: .8rem; font-weight: 650; letter-spacing: .02em;
}
.post { overflow: hidden; }
.post-head { display: flex; align-items: center; gap: .6rem; padding: .75rem .9rem .35rem; }
.post-who { min-width: 0; flex: 1; display: flex; flex-direction: column; }
.post-who strong { font-size: .9rem; line-height: 1.3; }
.post-sub { font-size: .74rem; color: var(--muted); }
.post-text { margin: .25rem 0 .6rem; padding: 0 .9rem; font-size: .92rem; line-height: 1.5; }
.post-media { background: var(--surface-2); }
.post-media img, .post-media video { display: block; width: 100%; max-height: 30rem; object-fit: cover; }
.post-note { margin: 0 .9rem .6rem; padding: .45rem .65rem; font-size: .8rem; background: var(--err-bg); color: var(--err); border-radius: var(--r-sm); }
.post-votes { display: flex; flex-wrap: wrap; gap: .4rem 1rem; padding: 0 .9rem .6rem; }
.feed-vote { display: inline-flex; align-items: center; gap: .3rem; font-size: .8rem; color: var(--muted); }
.feed-vote.ok { color: var(--ok); }
.feed-vote .icon { width: .85rem; height: .85rem; }
.post-actions {
    display: flex; flex-wrap: wrap; align-items: center; gap: .25rem;
    border-top: 1px solid var(--surface); padding: .3rem .5rem;
}
.post-actions form { margin: 0; display: inline-flex; align-items: center; gap: .4rem; }
.post-act {
    display: inline-flex; align-items: center; gap: .4rem; border: 0; background: none;
    padding: .45rem .7rem; border-radius: var(--r-sm); font-size: .82rem; font-weight: 600;
    color: var(--ink-soft); cursor: pointer; transition: background var(--t-fast) var(--ease);
}
.post-act:hover { background: var(--surface); }
.post-act .icon { width: .9rem; height: .9rem; }
.post-act-danger { color: var(--err); }
.post-reject input { width: 11rem; margin: 0; padding: .35rem .6rem; font-size: .78rem; }

/* RSVP-Neuigkeiten (Gaeste-Portal, Einladungs-Ton) */
.rsvp-news { padding: .6rem 0; border-bottom: 1px solid var(--line); }
.rsvp-news:last-of-type { border-bottom: 0; }
.rsvp-news-date { font-size: .74rem; color: var(--muted); margin: 0; }
.rsvp-news-title { font-family: var(--font-serif); font-size: 1.05rem; margin: .1rem 0 .2rem; }
.rsvp-news-body { font-size: .9rem; color: var(--ink-soft); margin: 0; }

/* Gaeste-Portal: Galerie + Upload im Einladungs-Ton */
.rsvp-mem-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr)); gap: var(--s3); margin-bottom: var(--s4); }
.rsvp-mem { margin: 0; }
.rsvp-mem img, .rsvp-mem video { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: var(--r-sm); display: block; }
.rsvp-mem figcaption { font-size: .74rem; color: var(--muted); margin-top: .25rem; }
.rsvp-mem-ok { background: var(--ok-bg); color: var(--ok); border-radius: var(--r-sm); padding: .55rem .75rem; font-size: .85rem; }
.rsvp-mem-err { background: var(--err-bg); color: var(--err); border-radius: var(--r-sm); padding: .55rem .75rem; font-size: .85rem; }
.rsvp-mem-form { margin-top: var(--s3); }

/* ── Betreiber-Panel + Warteseite (OPS) ────────────────────── */
.ops-top {
    display: flex; align-items: center; justify-content: space-between;
    max-width: 72rem; margin: 0 auto; padding: 1rem var(--s5);
    border-bottom: 1px solid var(--line);
}
.ops-top .lp-brand { display: inline-flex; align-items: center; }
.ops-top .lp-brand-mark { display: block; height: 24px; width: auto; }
.ops-tag {
    font-family: var(--font-sans); font-size: .68rem; font-weight: 650;
    letter-spacing: .12em; text-transform: uppercase; color: var(--muted);
    border: 1px solid var(--line); border-radius: 999px; padding: .15rem .6rem;
    margin-left: .4rem;
}
.ops-top form { margin: 0; }
.ops h1 { margin-top: var(--s5); }
.ops-kpis { margin-bottom: var(--s5); }
.ops-kpis .kpi { display: flex; flex-direction: column; gap: .2rem; }
.ops-kpis .kpi-value { font-size: 1.6rem; font-weight: 650; }
.ops .tool-card { margin-bottom: var(--s5); }
.ops-table { width: 100%; border-collapse: collapse; font-size: .88rem; }
.ops-table th {
    text-align: left; font-size: .7rem; letter-spacing: .1em; text-transform: uppercase;
    color: var(--muted); font-weight: 650; padding: .4rem .6rem; border-bottom: 1px solid var(--line);
}
.ops-table td { padding: .6rem; border-bottom: 1px solid var(--surface); vertical-align: top; }
.ops-table tr:last-child td { border-bottom: 0; }
.ops-act { text-align: right; white-space: nowrap; }
.ops-act form { display: inline-block; margin: 0 0 0 .6rem; }
.ops-act .btn-link { padding: .35rem .8rem; font-size: .8rem; }
.ops-devices { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .3rem; }
.ops-devices li { display: flex; align-items: baseline; gap: .6rem; }
.ops-devices form { margin: 0; }
.ops-device-label { font-size: .8rem; }

.warten-steps { list-style: none; margin: var(--s5) 0; padding: 0; text-align: left; }
.warten-steps li { display: flex; gap: .8rem; padding: .9rem 0; border-bottom: 1px solid var(--surface); }
.warten-steps li:last-child { border-bottom: 0; }
.warten-steps .icon { flex: none; margin-top: .15rem; color: var(--muted); }
.warten-steps li.done .icon { color: var(--ok); }
.warten-steps strong { font-size: .95rem; }
.warten-steps p { margin: .15rem 0 0; font-size: .85rem; color: var(--muted); }

/* Umfragen (POLL): Hairline-Balken mit Brass-Fuellung — einziger Gold-Einsatz */
.poll-lbl { display: flex; justify-content: space-between; gap: var(--s3); font-size: .9rem; margin: 0 0 .2rem; }
.poll-lbl b { color: var(--muted); font-weight: 600; }
.poll-bar { height: 3px; background: var(--surface); border-radius: 999px; overflow: hidden; margin: 0 0 var(--s3); }
.poll-bar i { display: block; height: 100%; width: var(--w); background: var(--gold); }
.poll-total { font-size: .78rem; color: var(--muted); margin: var(--s2) 0 0; }

/* Tarifwahl vor der Registrierung (GEST-Abo): Karten im Wertdokument-Stil */
.card-abo { max-width: 56rem; }
.abo-toggle { display: flex; justify-content: center; gap: .4rem; margin: var(--s5) 0; }
.abo-toggle a {
    padding: .45rem 1.1rem; border: 1px solid var(--line); border-radius: 999px;
    text-decoration: none; color: var(--muted); font-size: .88rem; font-weight: 600;
}
.abo-toggle a small { font-weight: 500; color: var(--gold-dark); }
.abo-toggle a.is-on { border-color: var(--gold-dark); color: var(--ink); background: var(--gold-bg); }
.abo-karten { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s4); text-align: left; }
.abo-karte {
    display: flex; flex-direction: column; padding: 1.4rem 1.3rem 1.3rem;
    border: 1px solid var(--line); border-radius: var(--r-md); background: var(--card);
}
.abo-karte.is-default { border-color: var(--gold); box-shadow: var(--shadow); }
.abo-karte h2 { margin: 0; font-size: .8rem; letter-spacing: .14em; text-transform: uppercase; color: var(--gold-dark); }
.abo-preis { margin: .7rem 0 .9rem; }
.abo-preis span { font-size: .8rem; color: var(--muted); vertical-align: .9em; }
.abo-preis b { font-family: var(--font-serif); font-size: 2.4rem; font-weight: 500; line-height: 1; }
.abo-preis small { color: var(--muted); }
.abo-preis-anfrage b { font-size: 1.4rem; }
.abo-karte ul { list-style: none; margin: 0 0 1.2rem; padding: 0; font-size: .85rem; color: var(--ink-soft); }
.abo-karte li { padding: .35rem 0 .35rem 1.2rem; position: relative; border-bottom: 1px solid var(--surface); }
.abo-karte li:last-child { border-bottom: 0; }
.abo-karte li::before { content: ""; position: absolute; left: 0; top: .78rem; width: .6rem; height: 2px; background: var(--gold); }
.abo-cta {
    margin-top: auto; text-align: center; padding: .6rem 1rem; border-radius: var(--r-sm);
    background: var(--gold-hover); color: var(--text-inverse); text-decoration: none; font-weight: 650;
}
.abo-cta:hover { background: var(--gold-dark); }
.abo-cta-quiet { background: none; border: 1px solid var(--line); color: var(--ink-soft); }
.abo-cta-quiet:hover { background: var(--surface); color: var(--ink); }
.abo-gewaehlt {
    margin: var(--s4) 0 var(--s5); padding: .7rem 1rem; border: 1px solid var(--gold);
    border-radius: var(--r-sm); background: var(--gold-bg); font-size: .9rem;
}
.abo-gewaehlt a { margin-left: .5rem; font-size: .82rem; }
@media (max-width: 46rem) {
    .abo-karten { grid-template-columns: 1fr; }
}
