/* Papadakis-Theme auf Shadleaf . Wird nach den Shadleaf-Assets geladen und ueberschreibt die shadcn-Variablen.
   Kein Dark Mode. Schrift: Source Sans 3 (OFL, selbst gehostet, siehe fonts/OFL-SourceSans3.txt). */
@font-face {
  font-family: "Source Sans 3";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("../fonts/SourceSans3-latin-wght.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --background: oklch(0.985 0.008 90);
  --foreground: oklch(0.25 0.02 100);
  --card: oklch(0.997 0.004 90);
  --card-foreground: oklch(0.25 0.02 100);
  --popover: oklch(0.997 0.004 90);
  --popover-foreground: oklch(0.25 0.02 100);
  --primary: oklch(0.48 0.09 120);
  --primary-foreground: oklch(0.98 0.01 95);
  --secondary: oklch(0.94 0.025 115);
  --secondary-foreground: oklch(0.3 0.04 115);
  --muted: oklch(0.955 0.015 100);
  --muted-foreground: oklch(0.46 0.03 100);
  --accent: oklch(0.93 0.035 118);
  --accent-foreground: oklch(0.28 0.04 115);
  --destructive: oklch(0.5 0.19 27);
  --border: oklch(0.88 0.02 100);
  --input: oklch(0.6 0.03 100);
  --ring: oklch(0.55 0.1 120);
}

body { font-family: "Source Sans 3", system-ui, sans-serif; }

/* Touch-Ziele mindestens 44 px */
.button:not([data-size="xs"]), .input, .site-header .button { min-height: 44px; }
.button[data-size="icon"] { min-width: 44px; }

/* ---- Gemeinsam ---- */
.nowrap { white-space: nowrap; }
.err { color: var(--destructive); }
form.inline { display: inline; }
details { margin: .5rem 0; }
summary { display: flex; align-items: center; min-height: 44px; cursor: pointer; }
.copyrow { display: flex; flex-wrap: wrap; gap: .5rem; }
.copyrow .input { flex: 1 1 14rem; min-width: 0; }
.toolbar { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin: 1rem 0; }
.toolbar > details { margin: 0; }
.actions { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1rem 0; }
fieldset.plain { border: 0; margin: 0; padding: 0; min-width: 0; }
.meldung .msg { padding: .6rem .8rem; margin: .5rem 0; border: 1px solid var(--border); border-radius: var(--radius); background: var(--muted); }
.meldung .msg.error { border-color: var(--destructive); color: var(--destructive); background: var(--card); }

/* ---- Oeffentlicher Bereich (body.pub) ---- */
.pub { margin: 0; }
.pub main { max-width: 40rem; margin: 0 auto; padding: 1rem 1rem 6rem; }
.pub main h2, .pub main h3 { font-weight: 600; }
.pub .privacy { font-size: .9rem; color: var(--muted-foreground); }
.pub .muted, .pub small { color: var(--muted-foreground); }
.pub .err { color: var(--destructive); }
.pub .alert, .pub .card { margin: 1rem 0; }
.pub .card.ok { border-left: .4rem solid var(--primary); }
.pub .lines { width: 100%; }
.pub .pay .qr { max-width: 220px; margin: .5rem auto; background: #fff; }
.pub .pay .qr svg { display: block; width: 100%; height: auto; }
.pub .pay .copyrow .input { flex: 1 1 8rem; }
.pub .pay .actions .button { width: 100%; }
.site-head { background: var(--card); border-bottom: 1px solid var(--border); }
.site-head .wrap { max-width: 40rem; margin: 0 auto; padding: 1rem 1rem .75rem; }
.site-head h1 { margin: 0; font-size: 1.75rem; font-weight: 600; line-height: 1.2; color: var(--primary); }
.site-head .sub { margin: .25rem 0 0; color: var(--muted-foreground); }
/* Maeander-Band: kleine SVG-Kachel als Data-URI, keine Bild-Anfrage */
.site-head::after {
  content: ""; display: block; height: 10px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='10' viewBox='0 0 16 10'%3E%3Cg fill='none' stroke='%236b7d3a' stroke-width='1.5'%3E%3Cpath d='M0 9H3V1H13V9H16'/%3E%3Cpath d='M6 9V5H10V9'/%3E%3C/g%3E%3C/svg%3E") repeat-x left center;
}

/* ---- Bestellformular ---- */
.orderform .group h2 { margin: 1.5rem 0 .5rem; padding-bottom: .15rem; font-size: 1.2rem; color: var(--primary); border-bottom: 2px solid var(--primary); }
.orderform .item { display: grid; grid-template-columns: 1fr auto; gap: .25rem .75rem; align-items: center; padding: .6rem 0; border-bottom: 1px solid var(--border); }
.orderform .item .info { min-width: 0; overflow-wrap: anywhere; }
.orderform .item .pname { font-weight: 600; }
.orderform .item .pkg, .orderform .item .price { margin-inline-start: .25rem; color: var(--muted-foreground); }
.orderform .item .linesum { grid-column: 2; justify-self: end; font-variant-numeric: tabular-nums; }
.orderform .item.soldout { opacity: .75; }
.orderform .qty { display: inline-flex; align-items: center; gap: .25rem; }
.orderform .qty .input { width: 3.5rem; padding-inline: .2rem; text-align: center; }
.orderform .person { margin-top: 1.5rem; }
.orderform .hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.orderform .totalbar { position: sticky; bottom: 0; display: flex; justify-content: space-between; align-items: center; gap: .75rem; margin: 1rem -1rem 0; padding: .6rem 1rem;
  background: var(--card); border-top: 2px solid var(--primary); box-shadow: 0 -2px 8px rgb(0 0 0 / .08); }
.orderform .totalbar strong { font-size: 1.25rem; font-variant-numeric: tabular-nums; }
@media (max-width: 24rem) {
  .orderform .item { grid-template-columns: 1fr; }
  .orderform .item .linesum { grid-column: 1; justify-self: start; }
}

/* ---- Admin-Bereich (body.admin) ---- */
.page { max-width: 48rem; margin: 0 auto; padding: 1rem 1rem 2rem; }
.page.wide { max-width: 72rem; }
.page.narrow { max-width: 30rem; }
.page > h1 { margin: 0 0 .75rem; font-size: 1.75rem; font-weight: 600; line-height: 1.2; }
.page h2 { font-weight: 600; }
.page .button[data-variant="link"] { padding-inline: 0; }
.admin .summary { margin: .5rem 0; }
.admin .actions-inner { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.admin .rowform { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.admin .rowform .input { flex: 1 1 9rem; width: auto; min-width: 0; }
.admin .rowform .err { flex-basis: 100%; }
.admin .check { display: inline-flex; gap: .4rem; align-items: center; min-height: 44px; }
.admin .qty-input { width: 5rem; }
.admin .cards tr.unavailable td { color: var(--muted-foreground); text-decoration: line-through; }
.admin .cards tr.unavailable td.actions { text-decoration: none; }
.admin .cards th[colspan] { background: var(--muted); color: var(--primary); }
.admin .cards td ul { margin: 0; padding-inline-start: 1.25rem; }

/* Abrechnung (mobile first) */
.settle .kopf { margin: 1rem 0; padding: .25rem 1rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--card); }
.settle .kopf p { margin: .4rem 0; }
.chips { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1rem 0; }
.settle .card { margin: .75rem 0; }
.settle .card.hint { background: var(--muted); }
.settle .card-head { display: flex; justify-content: space-between; gap: .5rem; flex-wrap: wrap; }
.settle .states { list-style: none; padding: 0; margin: .5rem 0; }
.settle .states li { margin: .25rem 0; }
.settle .btns, .settle .pay-btns { display: flex; flex-wrap: wrap; gap: .5rem; }
.settle .btns form, .settle .pay-btns form { margin: 0; }
.settle .pay-row { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.settle .history ul { margin: 0; padding-inline-start: 1.25rem; }

/* Tabellen: mobil als Karten, ab 48rem echte Tabellen */
@media (max-width: 48rem) {
  .cards thead { display: none; }
  .cards, .cards tbody, .cards tfoot { display: block; }
  .cards tr { display: block; margin: 0 0 .75rem; padding: .5rem .75rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--card); }
  .cards td, .cards th { display: block; padding: .25rem 0; border: 0; text-align: start; }
  .cards td[data-label]::before { content: attr(data-label) ": "; color: var(--muted-foreground); }
  .cards td.who { font-size: 1.1rem; }
  .cards tr.editing { padding: .5rem; }
}

/* Auf-/zuklappbare Aktionen (summary.action) sehen aus wie Outline-Buttons, destruktive wie Löschen */
summary.action { display: inline-flex; padding: 0 1rem; border: 1px solid var(--border); box-shadow: 0 1px 2px rgb(0 0 0 / .05); border-radius: var(--radius); background: var(--background);
  font-size: .875rem; line-height: 1.25rem; align-items: center; font-weight: 500; list-style: none; }
summary.action::-webkit-details-marker { display: none; }
summary.action.danger { border-color: var(--destructive); color: var(--destructive); }
details[open] > summary.action { margin-bottom: .5rem; }
.pub .lines td { vertical-align: top; }
.admin .table-container { margin-top: 1rem; }
.admin .page > p, .page > p { margin-block: .75rem; }

/* Erfolgs-Toast: olivgrüner Rand links, grünes Häkchen */
.toast[data-variant="success"] { border-left: 4px solid var(--primary); }
.toast[data-variant="success"] > svg { color: var(--primary); }
