:root{
  --paper:#f2e8d3;
  --paper-dark:#e9dcbf;
  --ink:#2c261c;
  --pine:#2f4a3c;
  --pine-dark:#213329;
  --rust:#b5502e;
  --gold:#a8842f;
  --line: rgba(44,38,28,0.28);
  --max: 760px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family: "Source Serif Pro", Georgia, "Times New Roman", serif;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}

h1,h2,h3,.brand{
  font-family: "Fraunces", "Iowan Old Style", Georgia, serif;
  font-weight:600;
  letter-spacing:0.01em;
}

a{color:var(--rust);}

/* ---------- Header ---------- */
header.site{
  background: var(--pine);
  color: var(--paper);
  padding: 2.2rem 1.5rem 1.6rem;
  text-align:center;
  border-bottom: 6px solid var(--rust);
}
header.site .brand{
  font-size: clamp(2.2rem, 6vw, 3.2rem);
  margin:0;
  color:#fff;
  text-decoration:none;
  display:inline-block;
}
header.site .tagline{
  margin:.35rem 0 1.2rem;
  font-family: "Source Serif Pro", Georgia, serif;
  font-style:italic;
  color: var(--paper-dark);
  font-size:1.05rem;
}
nav.top{
  display:flex;
  justify-content:center;
  flex-wrap:wrap;
  gap: 1.4rem;
  font-family: "Source Sans Pro", Arial, sans-serif;
  font-size:0.92rem;
}
nav.top a{
  color: var(--paper);
  text-decoration:none;
  border-bottom:1px solid transparent;
  padding-bottom:2px;
}
nav.top a:hover{ border-bottom-color: var(--paper); }

/* ---------- Layout ---------- */
main{
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 1.4rem;
}

section{ padding: 2.6rem 0; }
section + section{ border-top: 1px solid var(--line); }

section > h2{
  font-size: 1.7rem;
  color: var(--pine);
  margin: 0 0 .3rem;
}
section > .lede{
  font-family:"Source Sans Pro", Arial, sans-serif;
  color:#5b5240;
  margin: 0 0 1.6rem;
  max-width: 58ch;
}

/* Intro */
#intro p{ font-size:1.08rem; max-width:56ch; }
.hours-card{
  background: var(--paper-dark);
  border: 1px solid var(--line);
  border-radius: 2px;
  padding: 1.1rem 1.3rem;
  margin-top:1.4rem;
  font-family:"Source Sans Pro", Arial, sans-serif;
  max-width: 360px;
}
.hours-card h3{
  margin:0 0 .6rem;
  font-size:1rem;
  color: var(--pine);
  font-family:"Source Sans Pro", Arial, sans-serif;
  font-weight:700;
}
.hours-card table{ width:100%; border-collapse:collapse; font-size:0.94rem;}
.hours-card td{ padding: .18rem 0; }
.hours-card td:last-child{ text-align:right; }
.hours-card tr.closed td:last-child{ color:var(--rust); }

/* Menu groups */
.menu-group{ margin-bottom: 2.2rem; }
.menu-group:last-child{ margin-bottom:0; }
.menu-group h3{
  color: var(--rust);
  font-size:1.28rem;
  margin: 0 0 .2rem;
  border-bottom: 2px solid var(--rust);
  display:inline-block;
  padding-bottom:2px;
}
.menu-group .group-note{
  font-family:"Source Sans Pro", Arial, sans-serif;
  color:#5b5240;
  font-size:0.86rem;
  margin: .3rem 0 1rem;
}

.item{ margin: 0 0 .95rem; }
.item .row{ display:flex; align-items:baseline; gap:.4em; }
.item .name{ font-weight:600; white-space:nowrap; }
.item .num{ color: var(--gold); font-weight:600; margin-right:.15em; }
.item .dots{
  flex:1 1 auto;
  border-bottom: 2px dotted var(--line);
  transform: translateY(-4px);
  min-width: 12px;
}
.item .price{
  font-family:"Source Sans Pro", Arial, sans-serif;
  font-weight:700;
  white-space:nowrap;
  color: var(--pine);
}
.item .desc{
  margin:.15rem 0 0;
  font-family:"Source Sans Pro", Arial, sans-serif;
  color:#6b6252;
  font-size:0.88rem;
  max-width: 56ch;
}
.item .allerg{
  font-size:0.72rem;
  vertical-align: super;
  color: var(--gold);
  font-family:"Source Sans Pro", Arial, sans-serif;
}

.note-box{
  background: var(--paper-dark);
  border-left: 4px solid var(--rust);
  padding: .9rem 1.1rem;
  margin: 1.4rem 0;
  font-family:"Source Sans Pro", Arial, sans-serif;
  font-size:0.92rem;
}

.legend{
  font-family:"Source Sans Pro", Arial, sans-serif;
  font-size: 0.78rem;
  color:#6b6252;
  line-height:1.7;
  border-top: 1px solid var(--line);
  padding-top: 1.2rem;
  margin-top: 2.4rem;
}
.legend strong{ color: var(--ink); }

/* Contact */
#kontakt .grid{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  font-family:"Source Sans Pro", Arial, sans-serif;
}
@media (max-width:560px){ #kontakt .grid{ grid-template-columns: 1fr; } }
#kontakt h3{ font-size:1rem; color:var(--pine); margin:0 0 .5rem; font-family:"Source Sans Pro", Arial, sans-serif;}
#kontakt address{ font-style:normal; }
#kontakt table{ border-collapse:collapse; width:100%; font-size:0.94rem; }
#kontakt td{ padding:.15rem 0; }
#kontakt td:last-child{ text-align:right; }
#kontakt .map-link{ display:inline-block; margin-top:.7rem; font-size:0.9rem; }

/* Footer / Impressum */
footer{
  background: var(--pine-dark);
  color: var(--paper-dark);
  font-family:"Source Sans Pro", Arial, sans-serif;
  font-size:0.86rem;
  padding: 2.2rem 1.4rem 2.6rem;
}
footer .wrap{ max-width: var(--max); margin:0 auto; }
footer h2{ color:#fff; font-size:1.15rem; margin:0 0 .8rem; font-family:"Fraunces", Georgia, serif; }
footer p{ margin:0 0 .8rem; max-width: 60ch; }
footer a{ color: #e7c9b1; }

/* ---------- Admin ---------- */
.admin-bar{
  background: var(--pine-dark);
  color: var(--paper);
  font-family:"Source Sans Pro", Arial, sans-serif;
  font-size:0.85rem;
  padding:.6rem 1.4rem;
  display:flex;
  justify-content:space-between;
  align-items:center;
}
.admin-bar a{ color:#e7c9b1; }

.admin-wrap{
  max-width: 900px;
  margin: 0 auto;
  padding: 1.6rem 1.4rem 4rem;
  font-family:"Source Sans Pro", Arial, sans-serif;
}
.admin-wrap h1{ color:var(--pine); font-size:1.7rem; }
.admin-wrap h2{ color:var(--rust); font-size:1.2rem; margin-top:2rem; border-bottom:2px solid var(--rust); display:inline-block; padding-bottom:2px;}

.login-box{
  max-width: 360px;
  margin: 4rem auto;
  background: var(--paper-dark);
  border:1px solid var(--line);
  padding: 1.8rem;
  border-radius:2px;
  font-family:"Source Sans Pro", Arial, sans-serif;
}
.login-box h1{ font-size:1.4rem; margin-top:0; color:var(--pine); }
.login-box label{ display:block; font-size:0.85rem; margin: .8rem 0 .25rem; }
.login-box input[type=text],
.login-box input[type=password]{
  width:100%; padding:.5rem .6rem; border:1px solid var(--line); border-radius:2px; font-size:1rem;
}
.login-box button{ margin-top:1.2rem; }

.flash{
  padding:.7rem 1rem; border-radius:2px; margin-bottom:1.2rem; font-size:0.9rem;
}
.flash.ok{ background:#dfe9df; color:var(--pine-dark); border:1px solid var(--pine); }
.flash.err{ background:#f3dcd3; color:var(--rust); border:1px solid var(--rust); }

table.editor{ width:100%; border-collapse:collapse; margin-bottom:1rem; }
table.editor th{ text-align:left; font-size:0.78rem; color:#6b6252; font-weight:600; padding:.3rem .4rem; border-bottom:1px solid var(--line); }
table.editor td{ padding:.3rem .4rem; vertical-align:top; border-bottom:1px solid var(--line); }
table.editor input[type=text]{
  width:100%; padding:.35rem .45rem; border:1px solid var(--line); border-radius:2px; font-size:0.9rem; font-family:inherit;
}
table.editor input.num{ width:3.2rem; }
table.editor input.price{ width:5rem; }
table.editor input.allerg{ width:6rem; }

.btn{
  display:inline-block; background:var(--pine); color:#fff; border:none; padding:.6rem 1.2rem;
  border-radius:2px; font-size:0.9rem; cursor:pointer; text-decoration:none; font-family:inherit;
}
.btn:hover{ background:var(--pine-dark); }
.btn.danger{ background:var(--rust); }
.btn.small{ padding:.3rem .6rem; font-size:0.8rem; }
.btn.ghost{ background:transparent; border:1px solid var(--line); color:var(--ink); }

.add-row{ background: rgba(255,255,255,0.4); }

.hours-editor{ display:grid; grid-template-columns: 140px 1fr; gap:.5rem .8rem; max-width:420px; align-items:center; margin-bottom:1.6rem;}
.hours-editor input[type=text]{ padding:.35rem .5rem; border:1px solid var(--line); border-radius:2px; font-family:inherit; }

.save-bar{ position:sticky; bottom:0; background:var(--paper); border-top:1px solid var(--line); padding:1rem 0; margin-top:2rem; }

::selection{ background: var(--rust); color:#fff; }
