/*
Theme Name: Buchzauberer
Theme URI: https://buchzauberer.de/
Author: Benji Wiebe
Description: Ruhiges, literarisches WordPress-Theme für den Buchzauberer. One-Pager mit Programmen, Aktuelles und Kontakt.
Version: 1.0.2
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 8.0
Text Domain: buchzauberer
*/

:root {
  --bz-paper: #f5f0e7;
  --bz-paper-deep: #ece3d5;
  --bz-ink: #24201d;
  --bz-muted: #6d645c;
  --bz-wine: #7b1f2c;
  --bz-wine-dark: #5e1722;
  --bz-blue: #203652;
  --bz-line: rgba(55, 42, 33, .16);
  --bz-max: 1180px;
  --bz-serif: Georgia, 'Times New Roman', Times, serif;
  --bz-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--bz-paper);
  color: var(--bz-ink);
  font-family: var(--bz-sans);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--bz-wine); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--bz-blue); }
img { max-width: 100%; height: auto; }

.bz-site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(245,240,231,.94);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--bz-line);
}
.bz-header-inner {
  max-width: var(--bz-max);
  margin: 0 auto;
  padding: .7rem 1.25rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.bz-brand { display: inline-flex; align-items: center; gap: .8rem; text-decoration: none; color: var(--bz-ink); }
.bz-brand img { width: 64px; height: 64px; object-fit: contain; }
.bz-brand-text { font-family: var(--bz-serif); font-size: 1.15rem; line-height: 1.1; }
.bz-nav { display: flex; gap: 1.5rem; flex-wrap: wrap; justify-content: flex-end; }
.bz-nav a { color: var(--bz-blue); text-decoration: none; font-size: .95rem; }
.bz-nav a:hover { color: var(--bz-wine); }

.bz-main { overflow: hidden; }
.bz-section { padding: clamp(4rem, 7vw, 7rem) 1.25rem; }
.bz-section-inner { max-width: var(--bz-max); margin: 0 auto; }
.bz-section h2,
.bz-section h3,
.bz-hero h1,
.entry-title { font-family: var(--bz-serif); font-weight: 500; color: var(--bz-blue); line-height: 1.12; }
.bz-section h2 { font-size: clamp(2rem, 5vw, 3.8rem); margin: 0 0 1.25rem; }
.bz-section h3 { font-size: clamp(1.35rem, 2.3vw, 1.8rem); margin: 0 0 .7rem; }
.bz-kicker { letter-spacing: .13em; text-transform: uppercase; font-size: .8rem; color: var(--bz-wine); font-weight: 700; }
.bz-lead { font-family: var(--bz-serif); font-size: clamp(1.25rem, 2.4vw, 1.7rem); line-height: 1.55; max-width: 760px; }

/* Hero */
.bz-hero {
  min-height: min(760px, 86vh);
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  background: #171413;
  color: #fff;
}
.bz-hero-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(3rem, 7vw, 7rem) clamp(1.5rem, 6vw, 6rem);
}
.bz-hero h1 { color: #fff; font-size: clamp(3rem, 7vw, 6.6rem); margin: 0 0 1rem; letter-spacing: -.025em; }
.bz-hero-subtitle { font-family: var(--bz-serif); font-size: clamp(1.35rem, 2.5vw, 2rem); color: #e7d9d4; margin: 0 0 1.3rem; }
.bz-hero-copy p { max-width: 640px; font-size: 1.08rem; color: #f0e9e3; }
.bz-hero-image { min-height: 560px; position: relative; }
.bz-hero-image img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 28%; }
.bz-buttons { display: flex; gap: .8rem; flex-wrap: wrap; margin-top: 1rem; }
.bz-button,
.wp-block-button__link,
.bz-contact-form button {
  display: inline-block;
  border: 1px solid var(--bz-wine);
  background: var(--bz-wine);
  color: white !important;
  padding: .8rem 1.2rem;
  border-radius: 2px;
  text-decoration: none;
  font-weight: 650;
  cursor: pointer;
}
.bz-button.is-outline { background: transparent; border-color: rgba(255,255,255,.58); color: #fff !important; }
.bz-button:hover, .bz-contact-form button:hover { background: var(--bz-wine-dark); }

/* Quote */
.bz-quote-section {
  padding: clamp(3.5rem, 6vw, 5.8rem) 1.25rem;
  background: var(--bz-paper-deep);
  border-top: 1px solid var(--bz-line);
  border-bottom: 1px solid var(--bz-line);
}
.bz-quote { max-width: 860px; margin: 0 auto; text-align: center; }
.bz-quote blockquote { margin: 0; font-family: var(--bz-serif); font-size: clamp(2rem, 4.4vw, 4rem); line-height: 1.22; color: var(--bz-wine-dark); }
.bz-quote cite { display: block; margin-top: 1.1rem; font-style: normal; color: var(--bz-muted); }

/* Programme */
.bz-programmes { background: #fbf8f2; }
.bz-programme-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 0; margin-top: 2.5rem; border-top: 1px solid var(--bz-line); border-bottom: 1px solid var(--bz-line); }
.bz-programme { padding: 2rem 2.2rem 2.2rem 0; }
.bz-programme + .bz-programme { border-left: 1px solid var(--bz-line); padding-left: 2.2rem; }
.bz-programme .bz-time { color: var(--bz-wine); font-weight: 700; margin: .25rem 0 1rem; }
.bz-programme-note { margin-top: 1.8rem; color: var(--bz-muted); font-size: .95rem; }

/* Story */
.bz-story-grid { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(2rem, 6vw, 6rem); align-items: center; }
.bz-story-image img { width: 100%; display: block; border-radius: 2px; }
.bz-story-copy p { max-width: 720px; }

/* Anlass list, text-only */
.bz-occasions { padding-top: 0; }
.bz-occasion-list { display: flex; flex-wrap: wrap; gap: .75rem 1rem; margin-top: 1.5rem; }
.bz-occasion-list span { padding: .35rem 0; border-bottom: 1px solid var(--bz-line); color: var(--bz-blue); }

/* Posts */
.bz-news { background: #fbf8f2; }
.bz-news-heading { display:flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: 2rem; }
.bz-news .wp-block-post-template { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 2rem; }
.bz-news .wp-block-post { border-top: 2px solid var(--bz-wine); padding-top: 1.2rem; }
.bz-news .wp-block-post-title { font-family: var(--bz-serif); font-size: 1.5rem; line-height: 1.25; margin: .35rem 0 .65rem; }
.bz-news .wp-block-post-title a { color: var(--bz-blue); text-decoration: none; }
.bz-news .wp-block-post-date { font-size: .84rem; color: var(--bz-wine); text-transform: uppercase; letter-spacing: .06em; }
.bz-news .wp-block-post-excerpt { color: var(--bz-muted); }

/* Contact */
.bz-contact-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(320px,.8fr); gap: clamp(2rem, 6vw, 6rem); align-items: start; }
.bz-contact-image img { width:100%; display:block; border-radius: 2px; }
.bz-contact-form { margin-top: 2rem; }
.bz-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem; }
.bz-contact-form label { display: block; font-size: .88rem; font-weight: 700; color: var(--bz-blue); margin-bottom: .35rem; }
.bz-contact-form input,
.bz-contact-form textarea {
  width:100%;
  padding: .8rem .9rem;
  border: 1px solid #c9bfb2;
  background: #fffdf8;
  border-radius: 2px;
  font: inherit;
  color: var(--bz-ink);
}
.bz-contact-form textarea { min-height: 145px; resize: vertical; }
.bz-form-wide { grid-column: 1 / -1; }
.bz-form-notice { padding: .85rem 1rem; margin: 0 0 1rem; border-left: 3px solid var(--bz-wine); background: #fff7ec; }
.bz-form-notice.is-success { border-color: #47734d; background: #f2f8f1; }
.bz-hp { position:absolute !important; left:-10000px !important; width:1px !important; height:1px !important; overflow:hidden !important; }

/* Blog / content */
.bz-content-wrap { max-width: 900px; margin: 0 auto; padding: 5rem 1.25rem; }
.entry-title { font-size: clamp(2.3rem, 5vw, 4.5rem); margin: 0 0 1.5rem; }
.entry-content { font-size: 1.05rem; }
.entry-content > * { max-width: 760px; margin-left: auto; margin-right: auto; }
.entry-content > .alignwide { max-width: var(--bz-max); }
.bz-post-list article { padding: 2rem 0; border-bottom: 1px solid var(--bz-line); }
.bz-post-meta { color: var(--bz-wine); font-size: .9rem; }

.bz-site-footer { background: var(--bz-blue); color: #e9eef4; }
.bz-footer-inner { max-width: var(--bz-max); margin:0 auto; padding: 2rem 1.25rem; display:flex; justify-content:space-between; gap:1rem 2rem; flex-wrap:wrap; align-items:center; }
.bz-site-footer a { color:#fff; }
.bz-footer-links { display:flex; gap:1.1rem; flex-wrap:wrap; }

@media (max-width: 900px) {
  .bz-header-inner { align-items: flex-start; }
  .bz-nav { gap: .8rem 1rem; }
  .bz-hero { grid-template-columns: 1fr; }
  .bz-hero-image { min-height: 56vh; order: -1; }
  .bz-hero-copy { padding-top: 3rem; padding-bottom: 3.5rem; }
  .bz-programme-grid { grid-template-columns: 1fr; }
  .bz-programme { padding: 1.7rem 0; }
  .bz-programme + .bz-programme { border-left: 0; border-top: 1px solid var(--bz-line); padding-left: 0; }
  .bz-story-grid, .bz-contact-grid { grid-template-columns: 1fr; }
  .bz-news .wp-block-post-template { grid-template-columns: 1fr; }
  .bz-contact-image { max-width: 640px; }
}

@media (max-width: 620px) {
  .bz-site-header { position: static; }
  .bz-header-inner { padding: .65rem 1rem; }
  .bz-brand img { width: 52px; height: 52px; }
  .bz-brand-text { display:none; }
  .bz-nav { font-size: .88rem; }
  .bz-nav a:nth-child(2) { display:none; }
  .bz-section { padding: 3.5rem 1rem; }
  .bz-hero-image { min-height: 52vh; }
  .bz-hero-image img { object-position: center 22%; }
  .bz-hero-copy { padding: 2.7rem 1rem 3rem; }
  .bz-hero h1 { font-size: clamp(3rem, 15vw, 5rem); }
  .bz-buttons { flex-direction: column; align-items: stretch; }
  .bz-button { text-align:center; }
  .bz-form-grid { grid-template-columns: 1fr; }
  .bz-form-wide { grid-column: auto; }
  .bz-footer-inner { align-items:flex-start; flex-direction:column; }
}
