@charset "UTF-8";
:root {
  --ink:#234b3d;
  --muted:#657366;
  --paper:#f8f4ea;
  --gold:#dfbb62;
  --line:#dce3dd;
  --white:#fff;
  --red:#8c3e40;
  --serif:Georgia,'Times New Roman',serif;
  --sans:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}
* {
  box-sizing:border-box;
}
body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.6;
}
a {
  color:var(--ink);
  text-underline-offset:4px;
}
button,input,select,textarea {
  font:inherit;
}
button,a,input,select,textarea {
  touch-action:manipulation;
}
button {
  cursor:pointer;
}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible {
  outline:3px solid #b1760a;
  outline-offset:4px;
}
.skip-link {
  position:absolute;
  top:-100px;
  left:16px;
  z-index:10;
  background:#fff;
  padding:12px;
}
.skip-link:focus {
  top:8px;
}
.site-header {
  max-width:1280px;
  margin:auto;
  padding:27px 48px;
  display:flex;
  align-items:center;
  gap:36px;
  border-bottom:1px solid var(--line);
}
.brand {
  font-size:28px;
  font-weight:750;
  text-decoration:none;
  letter-spacing:-1px;
  display:flex;
  align-items:center;
  gap:9px;
}
.brand-dot {
  color:#a87613;
  margin-left:-9px;
}
.brand-icon {
  display:block;
  width:44px;
  height:44px;
  border-radius:9px;
  object-fit:contain;
}
.header-note {
  font-size:13px;
  color:var(--muted);
}
nav {
  display:flex;
  margin-left:auto;
  gap:20px;
  align-items:center;
  font-size:14px;
}
nav form {
  margin:0;
}
.container {
  max-width:1240px;
  padding:48px;
  margin:0 auto;
  min-height:70vh;
}
.site-footer {
  max-width:1280px;
  margin:40px auto 0;
  padding:24px 48px;
  display:flex;
  justify-content:space-between;
  border-top:1px solid var(--line);
  color:var(--muted);
  font-size:12px;
  gap:20px;
  flex-wrap:wrap;
}
.footer-legal {
  display:flex;
  flex-wrap:wrap;
  gap:8px 20px;
  margin:0;
  font-size:inherit;
}
.legal-shell {
  max-width:1000px;
}
.legal-document {
  overflow-wrap:anywhere;
}
.legal-document h1 {
  font-size:clamp(30px,5vw,48px);
  line-height:1.2;
}
.legal-document h2 {
  font-family:var(--sans);
  font-size:21px;
  line-height:1.4;
  margin:0 0 14px;
}
.legal-document p {
  font-size:15px;
  line-height:1.8;
  margin:0 0 16px;
}
.legal-document section {
  margin-top:32px;
  scroll-margin-top:24px;
}
.legal-document .legal-lead {
  color:var(--muted);
  font-size:17px;
}
.legal-address {
  font-style:normal;
  margin:0 0 16px;
}
.legal-toc {
  display:flex;
  flex-wrap:wrap;
  gap:10px 20px;
  margin:24px 0;
  padding:16px 0;
  border-block:1px solid var(--line);
  font-size:14px;
}
.legal-table-scroll {
  overflow-x:auto;
  margin-bottom:16px;
}
.legal-table-scroll:focus-visible {
  outline:3px solid #b1760a;
  outline-offset:4px;
}
.legal-table {
  width:100%;
  min-width:560px;
  border-collapse:collapse;
  font-size:13px;
  text-align:left;
  overflow-wrap:normal;
}
.legal-table th,.legal-table td {
  padding:12px;
  border:1px solid var(--line);
  vertical-align:top;
}
.legal-table thead {
  background:#f1f5f3;
}
.legal-document .legal-updated {
  color:var(--muted);
  font-size:12px;
  margin:32px 0 0;
  padding-top:16px;
  border-top:1px solid var(--line);
}
.eyebrow {
  text-transform:uppercase;
  letter-spacing:2.1px;
  font-size:11px;
  font-weight:750;
  color:#637568;
  margin:0 0 16px;
}
h1,h2 {
  font-family:var(--serif);
  font-weight:400;
  line-height:1.1;
  letter-spacing:-1px;
}
h1 {
  font-size:clamp(34px,4vw,52px);
  margin:12px 0 20px;
}
h2 {
  font-size:32px;
  margin:12px 0 20px;
}
h3 {
  font-size:17px;
  margin:4px 0;
}
p {
  margin:12px 0 20px;
}
.muted {
  color:var(--muted);
}
.fineprint {
  font-size:12px;
  color:var(--muted);
  line-height:1.6;
}
.stack {
  display:grid;
  gap:18px;
}
.stack>div {
  display:grid;
  gap:7px;
}
.stack label {
  font-size:13px;
  font-weight:650;
}
.stack input:not([type=checkbox]),.stack select,.stack textarea {
  width:100%;
  min-width:0;
  border:1px solid #c8d3cc;
  border-radius:9px;
  background:#fcfdfb;
  padding:12px 13px;
  color:var(--ink);
}
.stack input[type=checkbox] {
  width:18px;
  height:18px;
  margin-right:8px;
  vertical-align:middle;
}
.stack select {
  min-height:50px;
}
.stack .helptext {
  font-size:12px;
  color:var(--muted);
}
.errorlist {
  color:#90272d;
  background:#fff0ee;
  padding:12px 16px 12px 32px;
  font-size:13px;
  border-radius:8px;
  margin:0;
}
.button {
  display:inline-flex;
  justify-content:center;
  align-items:center;
  gap:18px;
  background:var(--ink);
  color:#fff;
  border:1px solid var(--ink);
  padding:13px 20px;
  border-radius:9px;
  text-decoration:none;
  font-size:14px;
  font-weight:650;
  line-height:1.5;
  transition:background .15s,transform .15s;
}
.button:hover {
  background:#26525a;
  transform:translateY(-1px);
}
.button.secondary {
  background:transparent;
  color:var(--ink);
  border-color:#b9c9c1;
}
.button.secondary:hover {
  background:#edf2ed;
}
.button.full {
  width:100%;
}
.button.danger {
  background:var(--red);
  border-color:var(--red);
}
.text-button {
  border:0;
  background:transparent;
  color:var(--ink);
  padding:0;
  font-size:13px;
  text-decoration:underline;
  text-underline-offset:3px;
}
.danger-text {
  color:var(--red);
}
.card {
  padding:30px;
  background:var(--white);
  border:1px solid #e0e5dd;
  border-radius:16px;
  margin-bottom:24px;
}
.card.narrow {
  max-width:610px;
  margin:0 auto;
}
.narrow-form {
  max-width:520px;
}
.back-link {
  display:inline-block;
  font-size:13px;
  margin-bottom:24px;
  text-decoration:none;
}
.page-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  margin-bottom:30px;
}
.page-heading h1 {
  margin-bottom:10px;
}
.page-heading p {
  margin-bottom:0;
}
.event-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:24px;
}
.event-card {
  display:block;
  text-decoration:none;
  min-height:240px;
  transition:box-shadow .15s;
}
.event-card:hover {
  box-shadow:0 10px 30px #173e4510;
}
.event-card h2 {
  font-size:30px;
  margin-top:24px;
}
.event-card p {
  font-size:13px;
  color:var(--muted);
}
.card-link {
  font-size:13px;
  font-weight:650;
}
.badge,.card-tag {
  display:inline-block;
  padding:5px 10px;
  border-radius:5px;
  font-size:11px;
  font-weight:650;
  background:#f9edcc;
  color:#80620b;
}
.badge.sealed {
  background:#e5f1e9;
  color:#2b6147;
}
.stats {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  border:1px solid var(--line);
  border-radius:14px;
  margin-bottom:28px;
  overflow:hidden;
  background:#fff;
}
.stats>div {
  padding:24px 28px;
  border-right:1px solid var(--line);
}
.stats>div:last-child {
  border:0;
}
.stats strong {
  display:block;
  font-size:34px;
  font-family:var(--serif);
  font-weight:400;
}
.stats span {
  font-size:12px;
  color:var(--muted);
}
.admin-grid {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);
  gap:24px;
  align-items:start;
}
.section-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.section-heading h2 {
  font-size:27px;
}
.section-heading a,.section-heading>span {
  font-size:12px;
}
.range-list {
  list-style:none;
  padding:0;
  margin:0 0 22px;
}
.range-list li {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:15px;
  padding:16px 0;
  border-bottom:1px solid var(--line);
}
.range-list li>div {
  display:flex;
  gap:9px;
  align-items:center;
}
.prize-card {
  min-width:0;
  padding:22px;
}
.prize-scroll {
  height:26rem;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  border:1px solid var(--line);
  border-radius:9px;
  margin-bottom:20px;
  background:#fff;
}
.prize-scroll:focus-visible {
  outline:3px solid #b1760a;
  outline-offset:3px;
}
.prize-list {
  list-style:none;
  padding:0;
  margin:0;
}
.prize-list>li {
  display:flex;
  align-items:center;
  gap:12px;
  padding:8px 10px;
  border-bottom:1px solid var(--line);
  line-height:1.4;
}
.prize-list>li:last-child {
  border-bottom:0;
}
.prize-list>li:nth-child(even) {
  background:#f7f9f6;
}
.prize-summary {
  flex:1;
  min-width:0;
  overflow-wrap:anywhere;
}
.prize-title {
  font-size:13px;
}
.prize-code {
  font-size:10px;
  font-family:monospace;
  color:var(--muted);
  margin-right:7px;
}
.prize-components {
  font-size:11px;
  color:var(--muted);
  margin-top:2px;
}
.prize-components>span {
  display:block;
}
.prize-value {
  flex:0 0 110px;
  font-size:11px;
  text-align:right;
  overflow-wrap:anywhere;
  color:var(--muted);
}
.prize-list form {
  margin:0;
  flex-shrink:0;
}
.prize-list .text-button {
  font-size:11px;
  min-height:28px;
}
.prize-empty {
  font-size:13px;
}
.color-dot {
  width:14px;
  height:14px;
  border:1px solid #0002;
  border-radius:50%;
  display:inline-block;
}
.gelb {
  background:#f2d252;
}
.blau {
  background:#5489ce;
}
.rot {
  background:#ce6262;
}
.gruen {
  background:#6da47a;
}
.rosa {
  background:#eab4c4;
}
.weiss {
  background:#fff;
}
.orange {
  background:#e89a4a;
}
.lila {
  background:#a382c5;
}
details {
  border-top:1px solid var(--line);
  padding-top:16px;
}
summary {
  font-size:14px;
  font-weight:650;
  cursor:pointer;
  margin-bottom:18px;
}
.draw-action {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:30px;
  background:#eaf0e9;
}
.draw-action h2 {
  font-size:30px;
}
.draw-action p {
  margin-bottom:0;
}
.actions {
  display:flex;
  gap:12px;
  flex-wrap:wrap;
}
.hash {
  overflow-wrap:anywhere;
  font-family:monospace;
}
.sealed-panel {
  border-color:#bed5c6;
}
.notice {
  padding:16px 20px;
  border-radius:10px;
  background:#eef4f0;
  border:1px solid #bcd3c5;
  margin-bottom:22px;
  font-size:14px;
}
.notice.error {
  background:#fff0ed;
  border-color:#ebbbb2;
  color:#8c3136;
}
.notice.warning {
  background:#fcf2d9;
  border-color:#ead291;
  color:#6f571e;
}
.public-shell {
  max-width:1180px;
  min-height:75vh;
  margin:0 auto;
  padding:64px 48px 30px;
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:90px;
  align-items:center;
}
.public-intro h1 {
  font-size:clamp(44px,4.8vw,68px);
  line-height:1.07;
  letter-spacing:-2.3px;
  margin-top:24px;
}
.public-intro em {
  font-weight:400;
  color:#8a6c29;
}
.public-intro>p:not(.eyebrow) {
  font-size:14px;
  color:var(--muted);
  line-height:1.9;
}
.lookup-card {
  background:#fff;
  border:1px solid #e0e5dd;
  padding:38px;
  border-radius:18px;
  position:relative;
  overflow:hidden;
  box-shadow:0 12px 40px #173e4506;
}
.lookup-card h2 {
  font-size:43px;
  margin-top:23px;
}
.lookup-card>.muted {
  font-size:13px;
  margin-bottom:26px;
}
.lookup-card>.fineprint {
  text-align:center;
  margin:18px 0 0;
}
.lookup-card form {
  margin-top:20px;
}
.ticket-art {
  height:190px;
  position:relative;
  margin-top:30px;
  width:290px;
}
.art-ticket {
  position:absolute;
  width:235px;
  height:118px;
  border-radius:12px;
  padding:20px 25px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  box-shadow:0 8px 16px #183e4510;
  mask:radial-gradient(7px at 0 50%,#0000 96%,#000) 0 0,radial-gradient(7px at 100% 50%,#0000 96%,#000) 100% 0;
  mask-size:51% 100%;
  mask-repeat:no-repeat;
}
.ticket-front {
  top:18px;
  left:23px;
  transform:rotate(-9deg);
  background:var(--gold);
  border:1px solid #b38f2e;
  color:#624a15;
}
.ticket-front:after {
  content:'';
  position:absolute;
  right:48px;
  top:10px;
  height:97px;
  border-left:1px dashed #876a2970;
}
.ticket-front span {
  font-size:9px;
  letter-spacing:2px;
  font-weight:750;
}
.ticket-front strong {
  font-family:var(--serif);
  font-weight:400;
  font-size:34px;
  line-height:1.4;
}
.ticket-front small {
  font-size:9px;
}
.ticket-back {
  left:57px;
  top:40px;
  transform:rotate(10deg);
  background:#cddbcf;
  font-family:var(--serif);
  color:#3e6552;
  justify-content:flex-end;
  align-items:flex-end;
  font-style:italic;
  font-size:14px;
}
.spark {
  position:absolute;
  color:#a17d28;
  font-size:27px;
}
.spark-one {
  left:0;
  top:4px;
}
.spark-two {
  right:-24px;
  top:80px;
  font-size:35px;
}
.result-symbol {
  font-size:45px;
  color:#b48a25;
}
.prize-highlight {
  font-family:var(--serif);
  font-size:28px;
  line-height:1.3;
  background:#f7f1de;
  padding:22px;
  border-radius:10px;
  margin:24px 0;
  overflow-wrap:anywhere;
}
.fireworks {
  position:absolute;
  inset:0;
  pointer-events:none;
  overflow:hidden;
}
.fireworks i {
  position:absolute;
  width:7px;
  height:7px;
  background:#d5aa35;
  border-radius:2px;
  left:15%;
  top:-12px;
  animation:confetti 2.8s ease-out 2;
}
.fireworks i:nth-child(2) {
  left:29%;
  background:#689b8b;
  animation-delay:.3s;
}
.fireworks i:nth-child(3) {
  left:47%;
  animation-delay:.6s;
}
.fireworks i:nth-child(4) {
  left:65%;
  background:#e39a83;
  animation-delay:.2s;
}
.fireworks i:nth-child(5) {
  left:80%;
  background:#689b8b;
  animation-delay:.8s;
}
.fireworks i:nth-child(6) {
  left:92%;
  animation-delay:.4s;
}
@keyframes confetti {
  from {
    transform:translateY(-12px) rotate(0);
    opacity:1;
  }
  to {
    transform:translateY(560px) rotate(550deg);
    opacity:0;
  }
}
@media(prefers-reduced-motion:reduce) {
  *,*:before,*:after {
    animation:none!important;
    transition:none!important;
  }
  .fireworks {
    display:none;
  }
}
@media(max-width:900px) {
  .site-header {
    padding:20px 24px;
    gap:20px;
  }
  .header-note {
    display:none;
  }
  .container {
    padding:32px 24px;
  }
  .public-shell {
    padding:38px 24px;
    gap:35px;
  }
  .public-intro h1 {
    font-size:48px;
  }
  .lookup-card {
    padding:28px;
  }
  .admin-grid {
    grid-template-columns:1fr;
  }
  .site-footer {
    padding:24px;
  }
  .draw-action {
    align-items:flex-start;
    flex-direction:column;
  }
}
@media(max-width:640px) {
  .public-shell {
    grid-template-columns:1fr;
    padding:32px 22px;
    gap:20px;
    max-width:500px;
  }
  .public-intro h1 {
    font-size:45px;
  }
  .public-intro>p:not(.eyebrow) {
    font-size:13px;
  }
  .ticket-art {
    display:none;
  }
  .public-intro .eyebrow {
    margin-bottom:10px;
  }
  .public-intro h1 {
    margin-top:12px;
  }
  .lookup-card h2 {
    font-size:37px;
  }
  .site-header {
    padding:17px 22px;
  }
  .brand {
    font-size:25px;
  }
  nav {
    gap:12px;
    font-size:12px;
  }
  .site-footer {
    flex-direction:column;
    gap:4px;
    margin-top:20px;
  }
  .page-heading {
    align-items:flex-start;
    flex-direction:column;
  }
  .card {
    padding:23px;
  }
  .stats>div {
    padding:17px 12px;
  }
  .stats strong {
    font-size:27px;
  }
  .stats span {
    font-size:11px;
  }
  .section-heading {
    align-items:flex-start;
    flex-direction:column;
    gap:0;
  }
  .range-list li {
    align-items:flex-start;
  }
  .prize-scroll {
    height:22rem;
  }
  .prize-list>li {
    flex-wrap:wrap;
    gap:5px 10px;
  }
  .prize-summary {
    flex-basis:100%;
  }
  .prize-value {
    flex:1;
    text-align:left;
  }
  .prize-list form {
    margin-left:auto;
  }
  .actions {
    flex-direction:column;
  }
  .actions .button {
    width:100%;
  }
  .draw-action h2 {
    font-size:27px;
  }
}
.fireworks:before,.fireworks:after {
  content:"";
  position:absolute;
  top:23%;
  left:30%;
  width:5px;
  height:5px;
  border-radius:50%;
  background:transparent;
  box-shadow:0 -65px #ce9b28,46px -46px #79a68d,65px 0 #ce9b28,46px 46px #d98979,0 65px #ce9b28,-46px 46px #79a68d,-65px 0 #ce9b28,-46px -46px #d98979;
  animation:burst 1.6s ease-out 3 both;
}
.fireworks:after {
  left:75%;
  top:42%;
  animation-delay:.65s;
}
@keyframes burst {
  0% {
    transform:scale(.05);
    opacity:0;
  }
  15% {
    opacity:1;
  }
  100% {
    transform:scale(1.3);
    opacity:0;
  }
}

/* Adventstombola des Elternbeirats der Grundschule Ipsheim. Alle Schmuckelemente bleiben lokal. */
body { background-image: radial-gradient(ellipse at 0 0, #dfbb621c, transparent 50%), radial-gradient(ellipse at 100% 100%, #234b3d0b, transparent 45%); }
.public-intro h1 em { color: #8c3e40; }
.public-intro > .eyebrow { color: #8c3e40; letter-spacing: 1.7px; }
.ticket-back { background: #c5d3be; }
.ticket-front { background: #e4c97e; }
.ticket-mode { color: var(--muted); font-size: 13px; margin-bottom: 22px; }
.partner-note { display: inline-block; font-size: 12px; text-decoration: none; border-bottom: 1px solid #bfa567; padding-bottom: 4px; }
.partner-note strong { color: var(--ink); }
.sponsor-banner { max-width: 1144px; margin: 26px auto 0; padding: 25px 30px; display: flex; align-items: center; gap: 22px; border: 1px solid #d8cba9; border-radius: 14px; background: #fffcf4; }
.sponsor-logo-link { flex: 0 0 220px; }
.sponsor-logo { display: block; width: 220px; max-width: 100%; height: auto; }
.sponsor-copy { flex: 1; min-width: 0; }
.sponsor-copy .provider-intro { font-size: 13px; color: var(--muted); margin: 0 0 14px; }
.sponsor-copy strong { color: var(--ink); }
.sponsor-copy .provider-headline { font-family: var(--sans); font-size: 21px; line-height: 1.4; letter-spacing: normal; margin: 0 0 8px; }
.sponsor-copy p { font-size: 14px; color: var(--muted); margin: 0; }
.sponsor-copy .button { margin-top: 18px; }
.draw-selector { margin-bottom: 18px; }
.stack > div:has(input[type=checkbox]) { display: grid; grid-template-columns: 22px 1fr; align-items: start; }
.stack > div:has(input[type=checkbox]) label { grid-column: 2; grid-row: 1; }
.stack > div:has(input[type=checkbox]) input { grid-column: 1; grid-row: 1; margin-top: 3px; }
.stack > div:has(input[type=checkbox]) .helptext { grid-column: 1 / -1; }
@media (max-width: 1200px) { .sponsor-banner { margin-left: 24px; margin-right: 24px; } }
@media (max-width: 700px) { .sponsor-banner { flex-direction: column; align-items: flex-start; gap: 20px; padding: 20px; margin-left: 22px; margin-right: 22px; } .sponsor-logo-link { flex-basis: auto; } .sponsor-copy .button { width: 100%; } }

.login-link {
  padding:9px 16px;
}
.event-context {
  margin:0 0 22px;
  padding-bottom:18px;
  border-bottom:1px solid var(--line);
  font-size:13px;
  overflow-wrap:anywhere;
}
.public-link-panel h2 {
  font-size:27px;
}
.public-share-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:28px;
}
.public-share-link {
  min-width:0;
}
.public-share-link .local-share-note {
  font-size:12px;
  margin:16px 0 0;
}
.event-qr {
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:10px;
  margin:0;
  max-width:100%;
}
.event-qr img {
  display:block;
  width:224px;
  max-width:100%;
  height:auto;
  background:white;
  image-rendering:pixelated;
}
.event-qr figcaption {
  font-size:13px;
  font-weight:650;
}
.event-qr .button {
  text-align:center;
  white-space:normal;
}
@media(max-width:800px) {
  .public-share-layout {
    grid-template-columns:minmax(0,1fr);
  }
}
.public-link-panel p {
  color:var(--muted);
  font-size:14px;
}
.public-link-panel label {
  display:block;
  font-weight:650;
  font-size:13px;
  margin-bottom:8px;
}
.public-link-panel input {
  display:block;
  width:100%;
  border:1px solid #c8d3cc;
  border-radius:9px;
  padding:12px;
  background:#fcfdfb;
  color:var(--ink);
  font:inherit;
  font-size:13px;
  margin-bottom:16px;
}
