/* caveat-latin-ext-600-normal */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(/fonts/caveat/caveat-latin-ext-600-normal.woff2) format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
/* caveat-latin-600-normal */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(/fonts/caveat/caveat-latin-600-normal.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* MORZ palette: live Graphene custom CSS, see analyse/p09-design.md. */
:root {
  --red:#dd0b2f;
  --link:#783d98;
  --hover:#8913c4;
  --ink:#000;
  --muted:#555;
  --paper:#fff;
  --surface:#f9f9f9;
  --line:#b5b5b5;
  --accent:#a7aeb4
}
* {
  box-sizing:border-box
}
body {
  margin:0;
  color:var(--ink);
  background:var(--paper);
  font:1.0625rem/1.65 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif
}
a {
  color:var(--link);
  text-underline-offset:.22em
}
a:hover {
  color:var(--hover)
}
a:focus-visible,button:focus-visible,summary:focus-visible {
  outline:3px solid var(--ink);
  outline-offset:4px
}
h1,h2,h3 {
  line-height:1.18;
  letter-spacing:-.035em;
  text-wrap:balance
}
h1 {
  font-size:clamp(2rem,4.1vw,3.5rem);
  margin:.4em 0
}
h2 {
  font-size:clamp(1.6rem,2.8vw,2.25rem);
  margin:.25em 0 .7em
}
h3 {
  font-size:1.3rem;
  margin:.5em 0
}
p {
  margin:0 0 1.1em
}
img,video {
  max-width:100%;
  height:auto
}
button,summary {
  font:inherit;
  cursor:pointer
}
[hidden] {
  display:none!important
}
.wrap {
  width:min(100% - 3rem,72rem);
  margin-inline:auto
}
.skip-link {
  position:absolute;
  left:1rem;
  top:-8rem;
  z-index:10;
  background:white;
  padding:1rem
}
.skip-link:focus {
  top:1rem
}
.preview {
  font-size:.8rem;
  background:var(--surface);
  text-align:center;
  padding:.4rem 1rem;
  color:var(--muted)
}
.preview a {
  color:inherit
}
.site-header {
  --header-right-column:10.25rem;
  border-bottom:1px solid var(--line)
}
.brand {
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding-block:.8rem
}
.brand-logo {
  display:block;
  width:clamp(235px,40vw,420px);
  aspect-ratio:500/264;
  overflow:hidden;
  flex-shrink:0
}
.brand-logo img {
  display:block;
  max-width:none;
  width:288%;
  height:auto
}
.school-motto {
  list-style:none;
  padding:0;
  margin:0;
  text-transform:uppercase;
  letter-spacing:.04em;
  line-height:1.6
}
.school-motto li {
  display:flex;
  align-items:center;
  gap:.45em
}
.school-motto li::before {
  content:"";
  width:.7em;
  height:.7em;
  background:var(--red);
  flex-shrink:0
}
.header-motto {
  flex:0 0 calc(var(--header-right-column) - 2rem);
  margin-right:2rem;
  font-size:1.1rem
}
.hero-motto {
  display:flex;
  flex-wrap:wrap;
  gap:.35rem 1.2rem;
  font-size:1.2rem;
  margin-block:1.2rem
}
.main-menu {
  border-top:4px solid var(--red);
  background:white;
  position:relative;
  z-index:3
}
.menu-list {
  display:flex;
  align-items:start;
  gap:.4rem 1.6rem;
  list-style:none;
  padding:0;
  margin:0
}
.menu-list>li {
  z-index:2;
  position:relative
}
.menu-list>li>a,.menu-list summary {
  display:block;
  padding:1rem .25rem;
  color:var(--ink);
  text-decoration:none;
  font-weight:650;
  font-size:.95rem
}
.menu-list summary {
  list-style:revert
}
.menu-list details>ul {
  position:absolute;
  top:100%;
  left:0;
  min-width:17rem;
  max-width:22rem;
  background:white;
  box-shadow:0 8px 20px #0002;
  border:1px solid var(--line);
  border-top:3px solid var(--red);
  list-style:none;
  margin:0;
  padding:.5rem
}
.menu-list li:last-of-type details>ul {
  left:auto;
  right:0
}
.menu-list details a {
  display:block;
  padding:.5rem .7rem;
  line-height:1.35;
  text-decoration:none;
  color:var(--ink)
}
.menu-list details a:hover {
  background:var(--surface);
  text-decoration:underline
}
.menu-list .level-4 a {
  padding-left:1.5rem;
  font-size:.9rem
}
.menu-toggle {
  border:1px solid var(--line);
  border-radius:.3rem;
  background:white;
  padding:.5rem .8rem;
  white-space:nowrap
}
.menu-toggle span {
  margin-left:.5rem
}
.welcome {
  display:grid;
  grid-template-columns:1.4fr 1fr;
  gap:5rem;
  align-items:center;
  padding-block:3.5rem 4rem
}
.eyebrow {
  font-size:.77rem;
  text-transform:uppercase;
  letter-spacing:.13em;
  font-weight:700;
  color:var(--muted)
}
.intro {
  max-width:37rem;
  color:var(--muted);
  font-size:1.12rem
}
.text-link {
  font-weight:650
}
.quick-links {
  border-top:4px solid var(--red);
  background:var(--surface);
  padding:1.4rem 1.8rem
}
.quick-links h2 {
  font-size:1.25rem;
  letter-spacing:-.02em
}
.quick-links>a {
  display:flex;
  gap:1rem;
  justify-content:space-between;
  padding:.75rem 0;
  border-top:1px solid var(--line);
  color:var(--ink);
  text-decoration:none;
  font-weight:600;
  font-size:.95rem
}
.quick-links>a:hover {
  text-decoration:underline
}
.quick-links>a span:last-child {
  color:var(--red)
}
.welcome-sidebar {
  display:grid;
  gap:1.5rem
}
.siegel-list {
  display:flex;
  flex-wrap:wrap;
  gap:1rem;
  list-style:none;
  margin:0;
  padding:0
}
.siegel-list a,.siegel-list img {
  display:block
}
.main-menu>.wrap {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem
}
.siegel-nav {
  position:relative;
  z-index:1;
  flex:0 0 var(--header-right-column)
}
.siegel-nav .siegel-list {
  flex-wrap:nowrap;
  align-items:center;
  height:56px;
  gap:.5rem
}
.siegel-nav img {
  width:auto;
  height:56px
}
.siegel-nav a {
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:2px;
  width:max-content;
  color:var(--ink);
  font-size:.75rem;
  font-weight:650;
  line-height:1.2;
  text-decoration:none;
  transform:rotate(10deg);
  transform-origin:center
}
.siegel-nav span {
  font-family:'Caveat',cursive;
  font-weight:600;
  font-size:1rem;
  line-height:1.1
}
.siegel-footer {
  width:min(100% - 3rem,72rem);
  margin:1.5rem auto 0
}
.siegel-footer img {
  width:110px
}
.news-section {
  background:var(--surface);
  padding-block:3rem 4rem;
  border-top:1px solid #eee
}
.section-heading {
  display:flex;
  justify-content:space-between;
  gap:1rem;
  align-items:center;
  margin-bottom:1.5rem
}
.section-heading h2 {
  margin-bottom:0
}
.section-heading>a {
  white-space:nowrap;
  font-size:.95rem
}
.news-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:2rem
}
.news-card {
  background:white;
  border-bottom:3px solid var(--accent);
  min-width:0
}
.card-image {
  display:block;
  aspect-ratio:3/2;
  overflow:hidden;
  background:#eee
}
.card-image img {
  width:100%;
  height:100%;
  object-fit:cover
}
.image-fallback {
  height:100%;
  display:flex;
  justify-content:center;
  align-items:center;
  flex-direction:column;
  font-weight:800;
  font-size:2.5rem;
  letter-spacing:.1em;
  border-left:8px solid var(--red)
}
.image-fallback span {
  font-weight:400;
  font-size:.8rem;
  letter-spacing:0
}
.card-body {
  padding:1.25rem 1.4rem
}
.card-body time,.meta {
  color:var(--muted);
  font-size:.85rem
}
.card-body h3 a {
  color:var(--ink);
  text-decoration:none
}
.card-body h3 a:hover {
  text-decoration:underline;
  text-decoration-color:var(--red)
}
.card-body p {
  font-size:.95rem;
  color:var(--muted);
  margin-bottom:.25rem
}
.calendar {
  padding-block:3rem;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:2rem
}
.calendar>div:last-child {
  border-left:4px solid var(--red);
  padding-left:1.5rem
}
.site-footer {
  background:var(--surface);
  border-top:1px solid var(--line);
  padding-block:2.5rem;
  font-size:.9rem
}
.footer-grid {
  display:grid;
  grid-template-columns:1.3fr 1fr auto;
  gap:2rem
}
.site-footer strong {
  font-weight:700
}
.site-footer p {
  margin-top:.5rem;
  color:var(--muted)
}
.site-footer nav a {
  display:block;
  margin-bottom:.7rem
}
.article,.archive {
  padding-block:3rem 4rem;
  max-width:54rem
}
.article-header {
  border-bottom:1px solid var(--line);
  padding-bottom:1rem;
  margin-bottom:2rem
}
/* Legal pages share a quiet reading column and section rhythm. */
.datenschutz,.impressum { max-width:70ch; margin-inline:auto }
.datenschutz h2,.impressum h2 { margin-top:2.25rem }
.datenschutz address,.impressum address { font-style:normal; margin-block:1.25rem }
.datenschutz-blick {
  clear:both;
  margin-block:2rem;
  padding:clamp(1rem,3vw,1.75rem);
  border:1px solid var(--line);
  border-top:4px solid var(--red);
  border-radius:.5rem;
  background:var(--surface)
}
.datenschutz-blick h2 { margin-top:0 }
.datenschutz-blick ul { list-style:none; padding:0; margin-bottom:0 }
.datenschutz-blick li { display:flex; align-items:baseline; gap:.75rem; margin-block:1rem }
.datenschutz-icon { flex:none; color:var(--link); font-weight:700 }
/* Reusable content blocks for HTML pages in the CMS. */
.reading-column { max-width:70ch; margin-inline:auto }
.reading-column > h2 { margin-top:2.5rem }
.reading-column > h2:first-child { margin-top:0; font-size:1.5rem }
.reading-column img { display:block; border-radius:.5rem }
.content-cards {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1rem;
  list-style:none;
  padding:0;
  margin-block:1.25rem 2rem
}
.content-cards > * {
  margin:0;
  padding:1.25rem;
  border:1px solid var(--line);
  border-radius:.5rem;
  background:var(--surface)
}
.content-keyline,.content-note {
  margin-block:2rem;
  padding:clamp(1rem,3vw,1.75rem);
  border:1px solid var(--line);
  border-radius:.5rem;
  background:var(--surface)
}
.content-keyline { border-left:4px solid var(--red) }
.content-note { border-top:4px solid var(--link) }
.content-note-important { border-top-color:var(--red) }
.content-note > :first-child { margin-top:0 }
.content-note > :last-child { margin-bottom:0 }
.content-note a[href^="tel:"] {
  display:block;
  width:fit-content;
  margin-block:.5rem;
  padding-block:.25rem;
  font-size:1.5rem;
  font-weight:700
}
@media (max-width:700px) {
  .content-cards { grid-template-columns:1fr }
}
.title-band {
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:3 / 1;
  margin-bottom:2rem
}
.prose-with-image {
  display:flow-root;
  max-width:70ch;
  margin-inline:auto
}
.prose-title-image {
  float:right;
  width:38%;
  height:auto;
  aspect-ratio:auto;
  object-fit:contain;
  margin:0 0 1.5rem 1.75rem;
  border-radius:.5rem
}
@media (max-width:700px) {
  .prose-title-image {
    float:none;
    display:block;
    width:100%;
    margin:0 0 1.5rem
  }
}
.article-image {
  display:block;
  width:100%;
  height:auto;
  margin-bottom:2rem
}
.article h1 {
  font-size:clamp(2rem,4vw,3rem);
  overflow-wrap:anywhere
}
.prose {
  overflow-wrap:anywhere;
  white-space:normal
}
/* Contact icons are empty decorative masks; link text remains the accessible name. */
a[href^="tel:"] { white-space:nowrap }
a[href^="mailto:"] { overflow-wrap:anywhere }
a[href^="tel:"]::before,a[href^="mailto:"]::before,address::before {
  content:"";
  display:inline-block;
  width:1em;
  height:1em;
  margin-inline-end:.35em;
  vertical-align:-.12em;
  background-color:currentColor;
  mask:var(--contact-icon) center / contain no-repeat
}
a[href^="tel:"] {
  --contact-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.91.69 2.81a2 2 0 0 1-.45 2.11L8.08 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.9.33 1.85.56 2.81.69A2 2 0 0 1 22 16.92z' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")
}
a[href^="mailto:"] {
  --contact-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='4' width='20' height='16' rx='2' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='m2 6 10 7L22 6' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E")
}
address {
  position:relative;
  padding-inline-start:1.5em;
  margin-bottom:1.1em;
  font-style:normal;
  overflow-wrap:anywhere;
  --contact-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 10c0 6-8 12-8 12S4 16 4 10a8 8 0 1 1 16 0z' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='12' cy='10' r='3' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E")
}
address::before { position:absolute; inset-inline-start:0; top:.3em; color:var(--link) }
/* Holiday calendar: three type sizes, 8 px spacing, MORZ calendar sheets. */
.ferienplan { --ferien-detail:.875rem; font-size:var(--ferien-detail); margin-bottom:2rem }
.ferienplan-kopf h2 { font-size:2rem; margin:0 0 1rem }
.ferienplan-geltung { color:var(--muted); margin:0; max-width:52rem }
.ferienplan-abgelaufen { margin:1rem 0 0; color:var(--muted) }
.ferienplan-jahresleiste { margin:2rem 0 }
.ferienplan-jahre { position:relative; margin-bottom:.5rem; font-weight:650; color:var(--muted) }
.ferienplan-jahre span + span { position:absolute; top:0 }
.ferienplan-monate { position:relative; display:flex; padding-bottom:1.5rem; border-bottom:1px solid var(--line) }
.ferienplan-monat { border-left:1px solid var(--line); padding-left:.5rem; font-size:var(--ferien-detail); color:var(--muted) }
.ferienplan-spur {
  position:absolute;
  bottom:.5rem;
  left:0;
  right:0;
  height:.5rem;
  background:var(--surface)
}
.ferienplan-balken { position:absolute; height:100%; min-width:2px; background:var(--red) }
.ferienplan-karten {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:1rem;
  grid-auto-rows:1fr;
  list-style:none;
  padding:0;
  margin:2rem 0
}
.ferienplan-karte {
  display:grid;
  grid-template-columns:3.5rem minmax(0,1fr);
  grid-template-rows:5rem 1.5rem 2rem;
  align-items:start;
  gap:.5rem 1rem;
  padding:1rem;
  border:1px solid var(--line);
  background:var(--paper);
  min-width:0
}
.ferienplan-blatt { flex:0 0 3.5rem; text-align:center; background:var(--paper); border:1px solid var(--line); line-height:1 }
.ferienplan-blatt span {
  display:block;
  padding:.5rem 0;
  background:var(--red);
  color:var(--paper);
  font-weight:700;
  letter-spacing:.04em
}
.ferienplan-blatt strong { display:block; font-size:2rem; padding:.5rem 0; font-weight:650; letter-spacing:-.035em }
.ferienplan-inhalt { min-width:0; align-self:center }
.ferienplan-inhalt h3 {
  font-size:1rem;
  line-height:1.4;
  letter-spacing:0;
  margin:0 0 .5rem;
  text-wrap:initial;
  overflow-wrap:normal
}
.ferienplan-zeit { grid-column:1/-1; margin:0; line-height:1.5rem; white-space:nowrap }
.ferienplan-zeit time { white-space:nowrap }
.ferienplan-dauer { color:var(--muted); margin:0 }
.ferienplan-sommer { grid-column:span 2; background:#fff5f6; box-shadow:inset 0 3px var(--red) }
.ferienplan-status {
  grid-column:1/-1;
  justify-self:start;
  display:inline-block;
  margin:0;
  padding:.5rem;
  background:#fff0f2;
  color:#a00823;
  font-weight:700;
  line-height:1;
  white-space:nowrap
}
.ferienplan-karte.ist-jetzt,.ferienplan-karte.ist-naechste { border-color:var(--red); box-shadow:inset 0 3px var(--red) }
.ferienplan-karte.ist-vergangen { color:var(--muted); background:var(--surface) }
.ist-vergangen .ferienplan-blatt span { background:var(--muted) }
.ferienplan-hinweis { border-left:3px solid var(--red); padding:0 0 0 1rem; margin:2rem 0; max-width:48rem; color:var(--muted) }
.ferienplan-hinweis strong { display:block; color:var(--ink); margin-bottom:.5rem }
.ferienplan-hinweis p { margin:0 }
.ferienplan a.ferienplan-pdf {
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  padding:.5rem 1rem;
  min-height:3rem;
  background:var(--red);
  color:var(--paper);
  font-weight:650;
  text-decoration:none
}
.ferienplan a.ferienplan-pdf:hover { background:#a00823 }
@media(max-width:70rem) {
  .ferienplan-karten { grid-template-columns:repeat(2,minmax(0,1fr)) }
  .ferienplan-sommer { grid-column:auto }
}
@media(max-width:40rem) {
  .ferienplan-karten { grid-template-columns:minmax(0,1fr) }
  .ferienplan-monat { padding-left:.125rem }
}
@media(max-width:30rem) {
  .ferienplan-jahresleiste { display:none }
}
@media print {
  body:has(.ferienplan) :is(.preview,.site-header,.site-footer,.article-header) { display:none }
  body:has(.ferienplan) .article { width:100%; max-width:none; padding:0 }
  .ferienplan-jahresleiste,.ferienplan-blatt,.ferienplan-status,.ferienplan-pdf { display:none!important }
  .ferienplan-karten { display:block; margin:1rem 0 }
  .ferienplan .ferienplan-karte {
    display:block;
    break-inside:avoid;
    border:0;
    border-bottom:1px solid #b5b5b5;
    background:white;
    box-shadow:none;
    padding:.5rem 0;
    color:black
  }
  .ferienplan-inhalt { display:inline }
  .ferienplan-inhalt h3,.ferienplan-zeit,.ferienplan-dauer { display:inline; margin-right:1rem }
}
.prose>p,.prose>ul,.prose>ol {
  max-width:47rem
}
.prose a {
  overflow-wrap:anywhere
}
.prose img {
  height:auto!important;
  max-width:100%!important
}
.prose figure {
  margin:1.5rem 0;
  max-width:100%!important
}
.prose .gallery {
  display:flex;
  flex-wrap:wrap;
  gap:1rem
}
.prose .gallery-item {
  flex:1 1 180px;
  min-width:0;
  max-width:100%;
  float:none!important;
  margin:0
}
.prose .gallery-icon img {
  width:100%
}
.prose .gallery-caption {
  font-size:.85rem;
  color:var(--muted)
}
.prose iframe {
  max-width:100%;
  border:0
}
.prose .h5p-player {
  width:100%;
  min-width:0
}
.prose table {
  display:block;
  max-width:100%;
  overflow:auto;
  border-collapse:collapse
}
.prose td,.prose th {
  padding:.6rem;
  border:1px solid var(--line)
}
.prose blockquote {
  margin:1.5rem 0;
  padding-left:1.2rem;
  border-left:4px solid var(--red)
}
.placeholder {
  padding:1rem;
  border:1px solid var(--line);
  border-left:4px solid var(--red);
  background:var(--surface)
}
.tags {
  border-top:1px solid var(--line);
  padding-top:1rem;
  margin-top:2rem;
  font-size:.9rem
}
.archive-list {
  list-style:none;
  padding:0
}
.archive-list li {
  display:flex;
  align-items:center;
  gap:1rem;
  padding:1rem 0;
  border-bottom:1px solid var(--line)
}
.archive-thumb {
  display:block;
  flex:0 0 100px;
  width:100px;
  height:75px;
  object-fit:cover
}
.archive-placeholder {
  background:#eee
}
.archive-entry {
  min-width:0;
  overflow-wrap:anywhere
}
.archive-entry>a,.archive-entry time {
  display:block
}
.archive-list time {
  font-size:.85rem;
  color:var(--muted);
  white-space:nowrap
}
@media(max-width:64rem) {
  .welcome {
    gap:2rem
  }
  .news-grid {
    gap:1.2rem
  }
  .menu-list {
    gap:.3rem 1rem
  }
}
@media(max-width:48rem) {
  .main-menu>.wrap {
    display:block
  }
  .siegel-nav {
    display:none
  }
  .wrap {
    width:calc(100% - 2rem)
  }
  .preview {
    font-size:.72rem
  }
  .brand {
    flex-wrap:wrap;
    gap:1rem .5rem;
    padding-block:.5rem 1rem
  }
  .brand-logo {
    width:235px;
    max-width:calc(100% - 92px)
  }
  .header-motto {
    display:none
  }
  .hero-motto {
    flex-wrap:nowrap;
    font-size:clamp(.62rem,3.1vw,1.2rem);
    gap:clamp(.3rem,1.5vw,1.2rem);
    white-space:nowrap
  }
  .menu-list {
    display:block;
    padding-block:.5rem
  }
  .menu-list>li>a,.menu-list summary {
    padding:.7rem
  }
  .menu-list details>ul {
    position:static;
    min-width:0;
    max-width:none;
    box-shadow:none;
    border:0;
    border-left:2px solid var(--red);
    margin-left:.8rem
  }
  .welcome {
    grid-template-columns:1fr;
    gap:2rem;
    padding-block:2rem 2.5rem
  }
  .welcome h1 {
    max-width:19rem
  }
  .intro {
    font-size:1rem
  }
  .quick-links {
    padding:1.2rem 1.4rem
  }
  .news-section {
    padding-block:2rem
  }
  .section-heading {
    align-items:start;
    flex-direction:column
  }
  .news-grid {
    grid-template-columns:1fr;
    gap:1.5rem
  }
  .card-body {
    padding:1.2rem
  }
  .calendar,.footer-grid {
    grid-template-columns:1fr;
    gap:1.5rem
  }
  .calendar {
    padding-block:2rem
  }
  .calendar h2 {
    margin-bottom:0
  }
  .site-footer {
    padding-block:2rem
  }
  .site-footer nav {
    display:flex;
    gap:1.5rem
  }
  .article,.archive {
    padding-block:2rem
  }
  .article h1 {
    font-size:2rem
  }
  .archive-list li {
    gap:.75rem
  }
  .archive-thumb {
    flex-basis:72px;
    width:72px;
    height:54px
  }
  .prose .gallery-item {
    flex-basis:130px
  }
}
@media(prefers-reduced-motion:no-preference) {
  a {
    transition:color .15s ease
  }
}
/* Without JavaScript every menu group stays a readable, expanded list. */
.main-menu:not(.enhanced)>.wrap {
  align-items:flex-start
}
.main-menu:not(.enhanced) .menu-list {
  display:block;
  flex:1;
  min-width:0;
  margin-block:1rem;
  overflow-wrap:anywhere
}
.main-menu:not(.enhanced) .menu-list>li {
  border-bottom:1px solid var(--line)
}
.main-menu:not(.enhanced) details>ul {
  position:static;
  box-shadow:none;
  min-width:0;
  max-width:none;
  border:0;
  border-left:2px solid var(--red);
  background:var(--surface);
  margin:0 0 .75rem 1rem;
  padding:.25rem .5rem
}
.menu-list summary::after {
  content:"⌄";
  margin-left:.5em;
  color:var(--red)
}

/* P13: compact, fully clickable attachment rows. */
.downloads { margin:1.5rem 0; }
.downloads h2 { display:flex; align-items:center; gap:.625rem; margin:0 0 .75rem; font-size:1.3rem; line-height:1.4; }
.downloads h2::before { content:""; flex:0 0 .625rem; width:.625rem; height:.625rem; background:var(--red); }
.download-list { font-size:1rem; list-style:none; margin:0; padding:0; border-top:1px solid var(--line); }
.download-list li { position:relative; display:grid; grid-template-columns:3rem minmax(0,1fr) 1.25rem; align-items:center; gap:1rem; padding:1rem .5rem; border-bottom:1px solid var(--line); }
.download-list li:hover, .download-list li:focus-within { background:#f5f2f7; }
.download-type { display:grid; place-items:center; min-height:3rem; padding:.25rem; background:var(--red); color:white; font-size:1rem; font-weight:750; overflow-wrap:anywhere; }
.download-link { font-weight:650; text-decoration:none; overflow-wrap:anywhere; }
.download-link::after { content:""; position:absolute; inset:0; }
.download-link:focus-visible { outline:none; }
.download-link:focus-visible::after { outline:2px solid var(--link); outline-offset:2px; }
.download-purpose { margin:.35rem 0 0; font-size:1rem; line-height:1.5; overflow-wrap:anywhere; }
.download-meta { margin-top:.25rem; color:var(--muted); font-size:1rem; line-height:1.5; overflow-wrap:anywhere; }
.download-source a { position:relative; z-index:1; }
.download-arrow { width:1.25rem; height:1.25rem; color:var(--link); }
.downloads-overview h1 { font-size:2rem; margin:0; }
.downloads-overview .article-header { margin-bottom:1rem; }
.downloads-overview .prose { font-size:1rem; }
.download-categories { display:flex; flex-wrap:wrap; gap:.5rem; margin:1.25rem 0 2rem; }
.download-categories a { display:inline-flex; align-items:center; gap:.5rem; padding:.5rem .75rem; border:1px solid var(--line); border-radius:2rem; font-size:1rem; line-height:1.5; text-decoration:none; }
.download-categories a:hover, .download-categories a:focus-visible { background:#f5f2f7; border-color:var(--link); }
.download-count { display:inline-grid; place-items:center; min-width:1.5rem; height:1.5rem; padding:0 .25rem; border-radius:50%; background:#f0e9f4; color:var(--link); }
.downloads-overview .downloads { margin:0 0 2rem; scroll-margin-top:1rem; }
@media (max-width:600px) {
  .download-list li { gap:.75rem; padding:1rem .25rem; }
}

/* P15b · a quiet editorial invitation, with one shared dialog/page form. */
.report-entry { margin-block:2rem 2.5rem; border-top:1px solid #dedade; padding-top:1.25rem }
.report-entry a { display:inline-flex; align-items:center; gap:.65rem; min-height:44px; color:var(--muted); font-size:.9rem; text-decoration:none }
.report-entry svg { color:var(--link); flex-shrink:0 }
.report-entry a:hover { color:var(--link); text-decoration:underline }
.report-entry-arrow { color:var(--link); margin-left:.35rem }
#report-dialog { width:min(100% - 3rem,39rem); max-height:calc(100dvh - 3rem); padding:2.5rem; border:1px solid #dedade; border-top:4px solid var(--red); border-radius:12px; color:var(--ink); box-shadow:0 24px 90px #0003; overflow:auto }
#report-dialog::backdrop { background:#24192c99; backdrop-filter:blur(3px) }
body:has(#report-dialog[open]) { overflow:hidden }
.report-page { max-width:44rem; margin-block:3rem; padding:2rem; border-top:4px solid var(--red) }
.report-close { position:absolute; right:1rem; top:.65rem; width:44px; height:44px; background:transparent; border:0; color:var(--muted); border-radius:50% }
.report-close:hover { background:#f2edf5; color:var(--link) }
.report-kicker { display:block; color:var(--link); font-size:.75rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; margin-bottom:.65rem; padding-right:1rem }
.report-heading :is(h1,h2) { font-size:clamp(1.65rem,4vw,2rem); margin:0 0 .75rem; outline-offset:4px }
.report-heading p { font-size:.94rem; color:var(--muted); line-height:1.5; margin-bottom:1rem }
.report-source { font-size:.8rem; padding:.6rem .8rem; background:#f4f0f6; color:#594963; border-left:2px solid var(--link); margin-bottom:1.4rem; overflow-wrap:anywhere }
.report-source strong { font-weight:600 }
.report-fields { padding:0; margin:0; border:0; min-width:0 }
.report-form label { display:block; font-size:.88rem; font-weight:650; line-height:1.5 }
.report-form label span { font-weight:400; color:var(--muted) }
.report-form input:not([type=checkbox]),.report-form select,.report-form textarea { width:100%; font:inherit; font-size:.94rem; color:var(--ink); background:#fff; border:1px solid #9c929f; border-radius:6px; padding:.65rem .8rem; margin:.4rem 0 1.1rem; min-height:44px }
.report-form textarea { resize:vertical; display:block; line-height:1.5 }
.report-form textarea:focus-visible,.report-form input:focus-visible,.report-form select:focus-visible { outline:3px solid var(--link); outline-offset:2px }
.report-label { display:flex; align-items:baseline; justify-content:space-between; gap:.5rem }
#report-count { font-size:.75rem; color:var(--muted); white-space:nowrap; font-variant-numeric:tabular-nums }
.report-form #report-description { margin-bottom:.4rem }
.report-hint,.report-privacy { font-size:.75rem; line-height:1.5; color:var(--muted) }
.report-hint { margin-bottom:1.3rem }
.report-reply { border-top:1px solid #e4dfe6; padding-top:1rem; margin-bottom:1rem }
.report-form #report-email { margin-bottom:.6rem }
.report-form .report-check { display:flex; gap:.6rem; align-items:center; font-weight:400; min-height:32px; font-size:.85rem }
.report-check input { accent-color:var(--link); width:18px; height:18px; margin:0; flex-shrink:0 }
.report-quote { border-left:2px solid var(--link); padding-left:.85rem; margin-bottom:1rem }
.report-quote textarea { margin-bottom:.25rem }
.report-remove { border:0; padding:.4rem 0; background:none; color:var(--link); font-size:.8rem; text-decoration:underline; text-underline-offset:.2em }
.report-honeypot,.visually-hidden { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap }
.report-verification { margin-bottom:1rem; --altcha-color-primary:var(--link); --altcha-border-radius:6px }
.report-submit,.report-done { display:flex; align-items:center; justify-content:space-between; gap:1.5rem; min-height:48px; padding:.7rem 1rem; width:100%; background:var(--red); border:1px solid var(--red); border-radius:6px; color:white; font-weight:650; font-size:.94rem }
.report-submit:hover,.report-done:hover { background:color-mix(in srgb,var(--red) 85%,black); border-color:color-mix(in srgb,var(--red) 85%,black) }
.report-submit:focus-visible,.report-done:focus-visible { outline:3px solid var(--red); outline-offset:2px }
.report-submit:disabled { opacity:.65; cursor:wait }
.report-status:empty { display:none }
.report-status,.report-notice { font-size:.9rem; padding:1rem; border-left:3px solid var(--link); background:#f4f0f6; margin:1rem 0 0; line-height:1.5 }
.report-success { padding:1.5rem 0 .5rem; text-align:center; font-size:.94rem }
.report-success h3 { font-size:1.7rem; margin:1rem 0 }
.report-success-mark { display:inline-grid; place-items:center; width:56px; height:56px; background:#f4f0f6; border-radius:50%; color:var(--link); font-size:1.8rem }
.report-success p { color:var(--muted) }
.report-done { justify-content:center; margin-top:1.5rem }
@media(max-width:600px) {
  #report-dialog { width:100%; max-width:100%; height:100dvh; max-height:100dvh; margin:0; border-radius:0; border-inline:0; padding:3.25rem 1.5rem 1.5rem }
  .report-page { padding:1rem 0; margin-block:2rem }
  .report-entry { margin-block:1.5rem 2rem }
  .report-form input:not([type=checkbox]),.report-form select,.report-form textarea { font-size:1rem }
}
@media print { .report-entry,#report-dialog { display:none!important } }

/* P15c · contact form, matching the editorial dialog. */
.kontakt { max-width:46rem; margin:3rem auto 1.5rem; padding:2.5rem; border:1px solid #dedade; border-top:4px solid var(--red); border-radius:12px; background:#fff; box-shadow:0 12px 40px #24192c08 }
.kontakt-band { display:block; width:100%; height:clamp(90px,12vw,150px); object-fit:cover; border-radius:6px; margin-bottom:1.5rem }
.kontakt-kicker { display:block; color:var(--link); font-size:.75rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; margin-bottom:.65rem; padding-right:1rem }
.kontakt-heading :is(h1,h2) { font-size:clamp(1.65rem,4vw,2rem); margin:0 0 .75rem; outline-offset:4px }
.kontakt-heading p { font-size:.94rem; color:var(--muted); line-height:1.5; margin-bottom:1rem }
.kontakt fieldset { padding:0; margin:0; border:0; min-width:0 }
.kontakt-form label { display:block; font-size:.88rem; font-weight:650; line-height:1.5 }
.kontakt-form input:not([type=checkbox]),.kontakt-form select,.kontakt-form textarea { width:100%; font:inherit; font-size:.94rem; color:var(--ink); background:#fff; border:1px solid #9c929f; border-radius:6px; padding:.65rem .8rem; margin:.4rem 0 1.1rem; min-height:44px }
.kontakt-form textarea { resize:vertical; display:block; line-height:1.5 }
.kontakt-form textarea:focus-visible,.kontakt-form input:focus-visible,.kontakt-form select:focus-visible { outline:3px solid var(--link); outline-offset:2px }
.kontakt-label { display:flex; align-items:baseline; justify-content:space-between; gap:.5rem }
#kontakt-count { font-size:.75rem; color:var(--muted); white-space:nowrap; font-variant-numeric:tabular-nums }
.kontakt-form #kontakt-email { margin-bottom:.6rem }
.kontakt-privacy { font-size:.75rem; line-height:1.5; color:var(--muted) }
.kontakt-honeypot,.kontakt-sr { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap }
.kontakt-verification { margin-bottom:1rem; --altcha-color-primary:var(--link); --altcha-border-radius:6px }
.kontakt-submit { display:flex; align-items:center; justify-content:space-between; gap:1.5rem; min-height:48px; padding:.7rem 1rem; width:100%; background:var(--red); border:1px solid var(--red); border-radius:6px; color:white; font-weight:650; font-size:.94rem }
.kontakt-submit:hover { background:color-mix(in srgb,var(--red) 85%,black); border-color:color-mix(in srgb,var(--red) 85%,black) }
.kontakt-submit:disabled { opacity:.65; cursor:wait }
.kontakt-status:empty { display:none }
.kontakt-status,.kontakt-notice { overflow-wrap:anywhere; font-size:.9rem; padding:1rem; border-left:3px solid var(--link); background:#f4f0f6; margin:1rem 0 0; line-height:1.5 }
.kontakt-success { padding:1.5rem 0 .5rem; text-align:center; font-size:.94rem }
.kontakt-success h3 { font-size:1.7rem; margin:1rem 0 }
.kontakt-success-mark { display:inline-grid; place-items:center; width:56px; height:56px; background:#f4f0f6; border-radius:50%; color:var(--link); font-size:1.8rem }
.kontakt-success p { color:var(--muted) }

.kontakt-pair { display:grid; grid-template-columns:1fr 1fr; gap:1rem }
.kontakt-pair>div { min-width:0 }
.kontakt-recipient { font-size:.88rem; background:#f4f0f6; border-left:2px solid var(--link); padding:.75rem 1rem; margin:0 0 1.5rem }
.kontakt :is(input,select,textarea,button):focus-visible { outline:3px solid var(--link); outline-offset:2px }
@media(max-width:600px) {
 .kontakt { padding:1.5rem 1rem; margin-block:2rem 1rem }
 .kontakt-pair { grid-template-columns:1fr; gap:0 }
 .kontakt-form input:not([type=checkbox]),.kontakt-form select,.kontakt-form textarea { font-size:1rem }
}

.kontakt .kontakt-submit:focus-visible { outline-color:var(--red) }

/* P32: search remains reachable beside the menu at every viewport width. */
.header-actions { display:flex; flex-direction:column; align-items:stretch; gap:.5rem }
.search-link { display:flex; align-items:center; justify-content:center; gap:.4rem; padding:.5rem .8rem; border:1px solid var(--line); border-radius:.3rem; background:white; text-decoration:none; white-space:nowrap }
.search-link:focus-visible, #search :focus-visible { outline:3px solid var(--red); outline-offset:3px }
#search { --pagefind-ui-primary:var(--red); --pagefind-ui-text:var(--ink); --pagefind-ui-background:white; --pagefind-ui-border:var(--line); --pagefind-ui-font:inherit; --pagefind-ui-border-radius:.3rem; margin-block:2rem }
#search .pagefind-ui__result-image { object-fit:contain }
#search mark { background:#ffe2a3; color:#241b0b }
.search-page { min-height:50vh }

/* Reusable meal introduction, facts, steps and resource links · P33. */
.meal-intro {
  display:flex;
  align-items:center;
  gap:clamp(1rem,4vw,4rem);
  padding:clamp(1.5rem,4vw,3rem);
  border-radius:1rem;
  background:#f4f0f6;
  border-top:4px solid var(--link)
}
.meal-intro > div { flex:1; min-width:0 }
.content-eyebrow { color:var(--link); font-size:.8rem; font-weight:750; letter-spacing:.08em; text-transform:uppercase }
.prose .meal-intro blockquote { margin:0 0 1.2rem; padding:0; border:0 }
.meal-intro blockquote p { font-size:clamp(1.8rem,3.5vw,2.8rem); font-weight:750; line-height:1.18; letter-spacing:-.035em; text-wrap:balance; margin:0; max-width:24ch }
.meal-intro > div > :last-child { margin-bottom:0; max-width:52ch }
.meal-symbol { flex:none; width:clamp(110px,16vw,180px); color:var(--link) }
.content-cards.fact-grid { grid-template-columns:repeat(3,minmax(0,1fr)); margin-block:1.25rem }
.fact-grid > li { border:0; border-bottom:3px solid var(--red); padding:1.25rem; background:var(--surface) }
.fact-grid strong,.fact-grid span { display:block }
.fact-grid strong { font-size:1.2rem; line-height:1.3; margin-bottom:.4rem }
.fact-grid span { color:var(--muted); font-size:.9rem }
.meal-supplier { max-width:75ch; margin-block:1.5rem 3rem }
.meal-details { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(0,1fr); gap:clamp(2rem,5vw,4.5rem); align-items:start }
.meal-details h2 { font-size:1.7rem }
.content-steps { padding-left:2rem; margin-block:1.75rem 2rem }
.content-steps > li { padding-left:.75rem; margin-bottom:1.5rem }
.content-steps > li::marker { color:var(--link); font-size:1.3rem; font-weight:750 }
.content-steps h3 { font-size:1.2rem; margin-block:0 .5rem }
.content-steps p { margin-bottom:0; max-width:48ch }
.action-link { display:inline-flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.25rem 1rem; padding:1rem 1.4rem; border-radius:.5rem; background:var(--red); color:white; font-weight:750; text-decoration:none; min-height:48px }
.action-link-detail { flex-basis:100%; font-weight:400; font-size:.8rem }
.action-link:hover { background:#b00927; color:white }
.portal-preview { text-align:center }
.prose .portal-preview { margin:0 }
.portal-preview img { display:block; width:min(100%,240px); margin-inline:auto; border:1px solid var(--line); border-radius:.5rem }
.portal-preview figcaption { margin-top:.65rem; font-size:.8rem; color:var(--muted) }
@media (max-width:700px) {
  .meal-intro { align-items:flex-start; gap:1rem }
  .meal-symbol { width:48px; margin-top:.15rem }
  .content-cards.fact-grid { grid-template-columns:1fr; gap:.65rem }
  .fact-grid > li { padding:1rem 1.25rem }
  .fact-grid strong { margin-bottom:.2rem }
  .meal-details { grid-template-columns:1fr }
  .meal-details h2 { font-size:1.5rem }
  .meal-supplier { margin-bottom:2rem }
}

/* Reusable day timeline; consecutive slots share a panel. */
.day-timeline {
  list-style:none;
  padding:0 0 0 1.5rem;
  margin:1.5rem 0 2rem;
  border-left:2px solid var(--line)
}
.day-timeline > li { position:relative; margin:0 0 .75rem }
.day-timeline > li::before {
  content:"";
  position:absolute;
  top:1.5rem;
  left:calc(-1.5rem - 7px);
  width:12px;
  height:12px;
  border:2px solid var(--link);
  border-radius:50%;
  background:var(--paper)
}
.timeline-slot,.timeline-break {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:.5rem 1rem;
  padding:1rem 1.25rem;
  border:1px solid var(--line);
  border-radius:.6rem;
  background:var(--surface)
}
.timeline-slot h2,.timeline-break h2 { margin:0; font-size:1.1rem; letter-spacing:0 }
.timeline-slot p,.timeline-break p { margin:0; font-variant-numeric:tabular-nums; white-space:nowrap }
.timeline-pair { list-style:none; margin:0; padding:0; border:1px solid var(--link); border-radius:.6rem; overflow:hidden }
.timeline-pair > .timeline-slot { margin:0; border:0; border-radius:0 }
.timeline-pair > .timeline-slot + .timeline-slot { border-top:1px dashed var(--line) }
.timeline-break { border:0; background:#f4f0f6; color:#512669 }
.timeline-break h2 span { display:block; margin-top:.3rem; font-size:.85rem; font-weight:400 }
.timeline-break-long { background:#fff0df; color:#713909 }
.day-timeline > .timeline-break::before { background:var(--link) }
.day-timeline > .timeline-break-long::before { background:#713909; border-color:#713909 }
@media (max-width:700px) {
  .day-timeline { padding-left:1rem }
  .day-timeline > li::before { left:calc(-1rem - 7px) }
  .timeline-slot,.timeline-break { grid-template-columns:1fr; gap:.35rem; padding:.9rem 1rem }
  .timeline-slot p,.timeline-break p { font-size:1rem }
  .timeline-break h2 { display:flex; flex-wrap:wrap; align-items:baseline; gap:.25rem .75rem }
  .timeline-break h2 span { margin:0 }
}

/* P43: Konzept A, als redaktionell pflegbarer Zeitstrahl. */
.history-timeline { border-left:3px solid #dd0b2f; padding-left:1.5rem; margin-block:2rem; }
.history-stop { border-bottom:1px solid #ccc; }
.history-stop summary { display:flex; gap:1.4rem; align-items:center; padding:1.4rem .5rem; font-weight:650; list-style:none; cursor:pointer; }
.history-stop summary::-webkit-details-marker { display:none; }
.history-stop summary:focus-visible { outline:3px solid #783d98; outline-offset:3px; }
.history-year { flex:0 0 12rem; color:#783d98; font-size:1.35rem; }
.history-open { margin-left:auto; font-size:1.5rem; }
.history-stop[open] .history-open { transform:rotate(45deg); }
.history-detail { padding:.5rem .5rem 1.5rem; max-width:46rem; overflow-wrap:anywhere; }
.history-detail figure { margin:1rem 0; }
.history-detail img { width:400px; max-width:100%; height:auto; }
.history-detail figcaption, .history-source { color:#555; font-size:.95rem; }
@media (max-width:600px) {
 .history-timeline { padding-left:.7rem; }
 .history-stop summary { flex-wrap:wrap; gap:.3rem .7rem; }
 .history-year { flex-basis:calc(100% - 2.5rem); }
 .history-stop summary > span:nth-child(2) { order:1; flex-basis:100%; }
}

/* School statistics: the compact block also works outside the article prose. */
.schulzahlen { margin:2rem 0; min-width:0 }
.schulzahlen dl { display:flex; flex-wrap:wrap; gap:.4rem 1.2rem; margin:0 }
.schulzahlen dt { color:var(--muted) }
.schulzahlen dd { margin:0; font-weight:700; font-variant-numeric:tabular-nums }
.schulzahlen th { overflow-wrap:normal }
.schulzahlen-kompakt { padding:1.2rem 0; border-block:1px solid var(--line) }
.schulzahlen-kompakt p { margin:.7rem 0; color:var(--muted); font-size:.9rem }
.schulzahlen-kompakt h2 { margin-top:0 }
@media(max-width:600px) {
  .schulzahlen dl { display:grid; grid-template-columns:minmax(0,1fr) auto }
}

/* CMS: time windows and contact methods. */
.card-hours { display:flex; align-items:center; gap:.65rem; margin:.75rem 0 0; color:var(--link); font-size:1.2rem; font-weight:650 }
.card-hours svg,.contact-methods svg { width:1em; height:1em; flex-shrink:0 }
.contact-methods { margin-block:2rem }
.contact-methods ul { list-style:none; padding:0 }
.contact-methods li { display:grid; grid-template-columns:11rem minmax(0,1fr); gap:.5rem 1rem; padding:.85rem 0; border-bottom:1px solid var(--line) }
.contact-method-label { font-weight:650 }
.contact-methods svg { display:inline-block; vertical-align:-.12em; margin-inline-end:.35em }
.contact-methods address { margin:0 }
@media (max-width:700px) {
  .contact-methods li { grid-template-columns:1fr; gap:.25rem }
}
