/*
Theme Name: FLJG Spreewald
Theme URI: https://friedrich-ludwig-jahn-grundschule-luebben.de/
Author: Friedrich-Ludwig-Jahn-Grundschule Lübben
Author URI: https://friedrich-ludwig-jahn-grundschule-luebben.de/
Description: Modernes, responsives Theme für die sportbetonte Friedrich-Ludwig-Jahn-Grundschule Lübben im Spreewald. Klassisches Theme mit Karten-Layout, mobilem Menü und den Schulfarben Grün/Rot aus dem Logo. Kompatibel mit Beiträgen, Kategorien, Seiten, Menüs, Widgets und The Events Calendar.
Version: 1.3.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: fljg-spreewald
Tags: education, custom-menu, custom-logo, featured-images, two-columns, right-sidebar, translation-ready, sticky-post
*/

/* =========================================================
   0. Lokale Schriften – DSGVO-konform, keine externen Aufrufe
   ========================================================= */
@font-face{ font-family:"Archivo"; font-style:normal; font-weight:500; font-display:swap; src:url("assets/fonts/archivo-latin-500-normal.woff2") format("woff2"); }
@font-face{ font-family:"Archivo"; font-style:normal; font-weight:600; font-display:swap; src:url("assets/fonts/archivo-latin-600-normal.woff2") format("woff2"); }
@font-face{ font-family:"Archivo"; font-style:normal; font-weight:700; font-display:swap; src:url("assets/fonts/archivo-latin-700-normal.woff2") format("woff2"); }
@font-face{ font-family:"Archivo"; font-style:normal; font-weight:800; font-display:swap; src:url("assets/fonts/archivo-latin-800-normal.woff2") format("woff2"); }
@font-face{ font-family:"Source Sans 3"; font-style:normal; font-weight:400; font-display:swap; src:url("assets/fonts/source-sans-3-latin-400-normal.woff2") format("woff2"); }
@font-face{ font-family:"Source Sans 3"; font-style:italic; font-weight:400; font-display:swap; src:url("assets/fonts/source-sans-3-latin-400-italic.woff2") format("woff2"); }
@font-face{ font-family:"Source Sans 3"; font-style:normal; font-weight:600; font-display:swap; src:url("assets/fonts/source-sans-3-latin-600-normal.woff2") format("woff2"); }
@font-face{ font-family:"Source Sans 3"; font-style:normal; font-weight:700; font-display:swap; src:url("assets/fonts/source-sans-3-latin-700-normal.woff2") format("woff2"); }

/* =========================================================
   1. Design-Tokens
   ========================================================= */
:root{
  /* Markenfarben aus dem Logo */
  --jahn-gruen:   #2E7138;   /* Primärgrün (Logo) */
  --gruen-hell:   #4E9A56;
  --gruen-dunkel: #21562A;
  --gruen-tief:   #15391C;   /* Fuß / tiefste Flächen */
  --ball-rot:     #C53A2F;   /* Akzent (rote Bälle im Logo) */
  --rot-dunkel:   #9E2A22;

  /* Neutrale */
  --papier:   #FBFCF9;       /* Seitenhintergrund */
  --sand:     #EDF3E9;       /* getönte Abschnitte */
  --karte:    #FFFFFF;
  --tinte:    #1B271E;       /* Text */
  --tinte-leise:#5A6A5D;     /* Sekundärtext */
  --linie:    #E2E8DD;       /* Rahmen / Trenner */
  --linie-stark:#CBD6C5;

  /* Typografie */
  --display: "Archivo", system-ui, "Segoe UI", sans-serif;
  --text:    "Source Sans 3", system-ui, "Segoe UI", sans-serif;

  /* Maße */
  --bund: 1200px;            /* maximale Inhaltsbreite */
  --radius: 14px;
  --radius-s: 9px;
  --schatten: 0 1px 2px rgba(21,57,28,.06), 0 8px 24px rgba(21,57,28,.07);
  --schatten-stark: 0 6px 18px rgba(21,57,28,.10), 0 18px 48px rgba(21,57,28,.12);
  --tempo: .22s cubic-bezier(.4,0,.2,1);
}

/* =========================================================
   2. Reset & Grundlagen
   ========================================================= */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } *{ animation-duration:.001ms !important; transition-duration:.001ms !important; } }

body{
  margin:0;
  font-family:var(--text);
  font-size:1.075rem;
  line-height:1.7;
  color:var(--tinte);
  background:var(--papier);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img{ max-width:100%; height:auto; display:block; }
a{ color:var(--gruen-dunkel); text-decoration:none; }
a:hover{ color:var(--ball-rot); }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, [tabindex]:focus-visible{
  outline:3px solid var(--ball-rot); outline-offset:2px; border-radius:3px;
}

h1,h2,h3,h4{ font-family:var(--display); line-height:1.12; color:var(--tinte); margin:0 0 .5em; letter-spacing:-.015em; }
h1{ font-size:clamp(1.9rem,4.4vw,3rem); font-weight:800; }
h2{ font-size:clamp(1.5rem,3vw,2.1rem); font-weight:700; }
h3{ font-size:clamp(1.2rem,2.2vw,1.5rem); font-weight:700; }
p{ margin:0 0 1.1em; }
ul,ol{ padding-left:1.25em; }

.bund{ width:min(100% - 2.5rem, var(--bund)); margin-inline:auto; }

.eyebrow{
  font-family:var(--display); font-weight:700; text-transform:uppercase;
  letter-spacing:.14em; font-size:.78rem; color:var(--jahn-gruen);
  display:inline-flex; align-items:center; gap:.55em; margin:0 0 .7rem;
}
.eyebrow::before{ content:""; width:.62em; height:.62em; border-radius:50%; background:var(--ball-rot); flex:none; }

.skip-link{
  position:absolute; left:-9999px; top:0; z-index:1000;
  background:var(--ball-rot); color:#fff; padding:.7rem 1.1rem; border-radius:0 0 8px 0; font-weight:700;
}
.skip-link:focus{ left:0; color:#fff; }

/* =========================================================
   3. Kopfbereich + Navigation
   ========================================================= */
.site-header{ position:sticky; top:0; z-index:200; background:rgba(251,252,249,.92); backdrop-filter:saturate(140%) blur(10px); border-bottom:1px solid var(--linie); }
.header-inner{ display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.7rem 0; }

.brand{ display:flex; align-items:center; gap:.85rem; min-width:0; }
.brand img, .brand .brand-logo{ width:54px; height:auto; flex:none; }
.brand-text{ min-width:0; }
.brand-title{ font-family:var(--display); font-weight:800; font-size:clamp(1.02rem,2.1vw,1.32rem); line-height:1.05; color:var(--gruen-dunkel); letter-spacing:-.02em; }
.brand-title a{ color:inherit; }
.brand-sub{ font-size:.82rem; color:var(--tinte-leise); font-weight:600; display:flex; align-items:center; gap:.4em; margin-top:.15rem; }
.brand-sub::before{ content:""; width:.5em; height:.5em; border-radius:50%; background:var(--ball-rot); flex:none; }

/* Primärnavigation */
.primary-nav ul{ list-style:none; margin:0; padding:0; display:flex; gap:.15rem; }
.primary-nav li{ position:relative; }
.primary-nav a{
  display:block; padding:.6rem .85rem; font-family:var(--display); font-weight:600; font-size:.98rem;
  color:var(--tinte); border-radius:9px; transition:background var(--tempo), color var(--tempo); white-space:nowrap;
}
.primary-nav > ul > li > a::after{ /* aktiver Ball-Indikator */
  content:""; display:block; height:3px; width:0; margin:.28rem auto 0; border-radius:3px; background:var(--ball-rot); transition:width var(--tempo);
}
.primary-nav > ul > li:hover > a,
.primary-nav > ul > li:focus-within > a,
.primary-nav .current-menu-item > a,
.primary-nav .current_page_item > a{ color:var(--gruen-dunkel); background:var(--sand); }
.primary-nav > ul > li:hover > a::after,
.primary-nav > ul > li:focus-within > a::after,
.primary-nav .current-menu-item > a::after,
.primary-nav .current_page_item > a::after{ width:60%; }

/* Untermenüs (Desktop) */
.primary-nav ul ul{
  position:absolute; top:calc(100% + 6px); left:0; min-width:240px; flex-direction:column; gap:0;
  background:var(--karte); border:1px solid var(--linie); border-radius:var(--radius-s);
  box-shadow:var(--schatten-stark); padding:.4rem; opacity:0; visibility:hidden; transform:translateY(6px);
  transition:opacity var(--tempo), transform var(--tempo), visibility var(--tempo); z-index:10;
}
.primary-nav li:hover > ul, .primary-nav li:focus-within > ul{ opacity:1; visibility:visible; transform:translateY(0); }
.primary-nav ul ul a{ padding:.55rem .7rem; font-weight:600; font-size:.93rem; border-radius:7px; }
.primary-nav ul ul a:hover{ background:var(--sand); color:var(--gruen-dunkel); }
.primary-nav .menu-item-has-children > a > .caret{ display:inline-block; margin-left:.3em; font-size:.7em; opacity:.7; }

/* Burger */
.nav-toggle{
  display:none; align-items:center; gap:.5rem; background:var(--jahn-gruen); color:#fff; border:0;
  font-family:var(--display); font-weight:700; font-size:.95rem; padding:.6rem .9rem; border-radius:10px; cursor:pointer;
}
.nav-toggle .bars{ width:20px; height:14px; position:relative; }
.nav-toggle .bars span{ position:absolute; left:0; width:100%; height:2.4px; background:#fff; border-radius:2px; transition:transform var(--tempo), opacity var(--tempo); }
.nav-toggle .bars span:nth-child(1){ top:0; }
.nav-toggle .bars span:nth-child(2){ top:6px; }
.nav-toggle .bars span:nth-child(3){ top:12px; }
body.nav-open .nav-toggle .bars span:nth-child(1){ transform:translateY(6px) rotate(45deg); }
body.nav-open .nav-toggle .bars span:nth-child(2){ opacity:0; }
body.nav-open .nav-toggle .bars span:nth-child(3){ transform:translateY(-6px) rotate(-45deg); }

/* =========================================================
   4. Hero / Intro-Band
   ========================================================= */
.hero{ position:relative; overflow:hidden; background:linear-gradient(150deg,var(--jahn-gruen),var(--gruen-dunkel) 70%); color:#fff; }
.hero::after{ /* dynamische Kurve im Geist der Logo-Figuren */
  content:""; position:absolute; right:-8%; top:-30%; width:46%; height:160%;
  background:radial-gradient(closest-side, rgba(255,255,255,.10), transparent 70%);
  transform:rotate(18deg); pointer-events:none;
}
.hero-ball{ position:absolute; border-radius:50%; background:var(--ball-rot); opacity:.9; pointer-events:none; }
.hero-ball.b1{ width:18px; height:18px; top:24%; right:14%; }
.hero-ball.b2{ width:10px; height:10px; bottom:30%; right:30%; opacity:.7; }
.hero-ball.b3{ width:26px; height:26px; bottom:18%; right:8%; opacity:.55; }
.hero-inner{ position:relative; z-index:2; padding:clamp(2.4rem,6vw,4.2rem) 0; max-width:760px; }
.hero .eyebrow{ color:#bfe6c5; }
.hero .eyebrow::before{ background:var(--ball-rot); }
.hero h1{ color:#fff; margin-bottom:.5rem; }
.hero p{ font-size:1.18rem; color:#e7f3e6; max-width:60ch; margin-bottom:1.6rem; }
.hero-actions{ display:flex; flex-wrap:wrap; gap:.7rem; }

.btn{
  display:inline-flex; align-items:center; gap:.5em; font-family:var(--display); font-weight:700;
  padding:.72rem 1.25rem; border-radius:11px; border:2px solid transparent; cursor:pointer; transition:all var(--tempo); font-size:1rem;
}
.btn-primary{ background:var(--ball-rot); color:#fff; }
.btn-primary:hover{ background:var(--rot-dunkel); color:#fff; transform:translateY(-1px); }
.btn-ghost{ background:transparent; color:#fff; border-color:rgba(255,255,255,.5); }
.btn-ghost:hover{ background:#fff; color:var(--gruen-dunkel); border-color:#fff; }

/* =========================================================
   5. Layout: Inhalt + Sidebar
   ========================================================= */
.layout{ display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:2.6rem; padding:clamp(2rem,5vw,3.4rem) 0; align-items:start; }
.content{ min-width:0; }
.section-head{ display:flex; align-items:baseline; justify-content:space-between; gap:1rem; margin-bottom:1.4rem; flex-wrap:wrap; }
.section-head h2{ margin:0; }

/* News-Karten */
.news-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:1.4rem; }
.card{
  background:var(--karte); border:1px solid var(--linie); border-radius:var(--radius); overflow:hidden;
  display:flex; flex-direction:column; transition:transform var(--tempo), box-shadow var(--tempo), border-color var(--tempo);
}
.card:hover{ transform:translateY(-4px); box-shadow:var(--schatten-stark); border-color:var(--linie-stark); }
.card-media{ aspect-ratio:3/2; background:var(--sand); overflow:hidden; position:relative; }
.card-media img{ width:100%; height:100%; object-fit:cover; transition:transform .4s ease; }
.card:hover .card-media img{ transform:scale(1.04); }
.card-media.placeholder{ display:grid; place-items:center; background:linear-gradient(140deg,var(--sand),#dfeada); }
.card-media.placeholder svg{ width:64px; height:64px; opacity:.5; }
.card-body{ padding:1.15rem 1.25rem 1.35rem; display:flex; flex-direction:column; flex:1; }
.date-chip{
  display:inline-flex; align-items:center; gap:.45em; font-family:var(--display); font-weight:700;
  font-size:.74rem; letter-spacing:.04em; text-transform:uppercase; color:var(--ball-rot); margin-bottom:.55rem;
}
.date-chip::before{ content:""; width:.5em; height:.5em; border-radius:50%; background:var(--ball-rot); flex:none; }
.card h3{ margin:0 0 .5rem; font-size:1.22rem; }
.card h3 a{ color:var(--tinte); }
.card h3 a:hover{ color:var(--ball-rot); }
.card-excerpt{ color:var(--tinte-leise); font-size:.99rem; margin:0 0 1rem; }
.card-more{ margin-top:auto; font-family:var(--display); font-weight:700; font-size:.94rem; color:var(--gruen-dunkel); display:inline-flex; align-items:center; gap:.35em; }
.card-more::after{ content:"→"; transition:transform var(--tempo); }
.card:hover .card-more::after{ transform:translateX(4px); }

/* Einzelbeitrag / Seite */
.entry{ background:var(--karte); border:1px solid var(--linie); border-radius:var(--radius); padding:clamp(1.4rem,4vw,2.6rem); box-shadow:var(--schatten); }
.entry-header{ margin-bottom:1.4rem; padding-bottom:1.2rem; border-bottom:1px solid var(--linie); }
.entry-header h1{ margin:.3rem 0 0; }
.entry-content{ font-size:1.08rem; }
.entry-content h2, .entry-content h3{ margin-top:1.6em; }
.entry-content a{ text-decoration:underline; text-underline-offset:2px; text-decoration-thickness:1.5px; }
.entry-content img{ border-radius:var(--radius-s); margin:.4rem 0; }
.entry-content blockquote{ margin:1.4em 0; padding:.4em 1.2em; border-left:4px solid var(--jahn-gruen); background:var(--sand); border-radius:0 8px 8px 0; color:var(--tinte); font-style:italic; }

/* Bildergalerie in Beiträgen (mehrere verlinkte Thumbs) */
.entry-content p > a > img{ display:inline-block; margin:.25rem; border-radius:8px; box-shadow:var(--schatten); transition:transform var(--tempo); }
.entry-content p > a:hover > img{ transform:scale(1.03); }

/* =========================================================
   6. Sidebar / Widgets
   ========================================================= */
.sidebar{ position:sticky; top:84px; display:flex; flex-direction:column; gap:1.3rem; }
.widget{ background:var(--karte); border:1px solid var(--linie); border-radius:var(--radius); padding:1.2rem 1.25rem; box-shadow:var(--schatten); }
.widget-title, .widget h2, .widget h3{
  font-family:var(--display); font-weight:700; font-size:1.02rem; margin:0 0 .9rem; padding-bottom:.6rem;
  border-bottom:2px solid var(--sand); color:var(--gruen-dunkel); display:flex; align-items:center; gap:.5em;
}
.widget-title::before, .widget h3::before{ content:""; width:.55em; height:.55em; border-radius:50%; background:var(--ball-rot); flex:none; }
.widget ul{ list-style:none; margin:0; padding:0; }
.widget ul li{ padding:.4rem 0; border-bottom:1px solid var(--linie); }
.widget ul li:last-child{ border-bottom:0; }
.widget ul li a{ font-weight:600; color:var(--tinte); }
.widget ul li a:hover{ color:var(--ball-rot); }
.widget select{ width:100%; padding:.55rem .6rem; border:1px solid var(--linie-stark); border-radius:8px; font-family:var(--text); }
.widget img{ border-radius:8px; }

/* Eingebettete Widgets (z. B. Gooding-Spenden-iframe) sauber einpassen */
.widget iframe{ max-width:100%; display:block; margin:.2rem auto 0; border:0; border-radius:10px; }

/* Gooding: das fixe 160-px-Widget lesbar vergrößern */
.gooding-widget{ text-align:center; }
.gooding-frame{ height:460px; overflow:hidden; display:block; }
.gooding-frame iframe{
  width:160px; height:270px; border:0; display:block; margin:0 auto; background:#fff;
  transform:scale(1.7); transform-origin:top center;
}
.gooding-widget .card-more{ justify-content:center; margin-top:1rem; }

/* =========================================================
   7. Beitragsnavigation / Paginierung
   ========================================================= */
.pagination{ display:flex; flex-wrap:wrap; gap:.5rem; margin-top:2.2rem; justify-content:center; }
.pagination .page-numbers{
  font-family:var(--display); font-weight:700; padding:.5rem .85rem; border-radius:9px; border:1px solid var(--linie);
  background:var(--karte); color:var(--tinte); min-width:42px; text-align:center;
}
.pagination .page-numbers.current{ background:var(--jahn-gruen); color:#fff; border-color:var(--jahn-gruen); }
.pagination .page-numbers:hover:not(.current){ border-color:var(--ball-rot); color:var(--ball-rot); }

.post-nav{ display:flex; justify-content:space-between; gap:1rem; margin-top:1.8rem; flex-wrap:wrap; }
.post-nav a{ font-family:var(--display); font-weight:700; padding:.7rem 1rem; border:1px solid var(--linie); border-radius:10px; background:var(--karte); }
.post-nav a:hover{ border-color:var(--ball-rot); }

.back-link{ display:inline-flex; align-items:center; gap:.4em; font-family:var(--display); font-weight:700; margin-bottom:1.2rem; }
.back-link::before{ content:"←"; }

/* =========================================================
   8. Fuß
   ========================================================= */
.site-footer{ background:var(--gruen-tief); color:#d8e7d6; margin-top:1rem; }
.footer-top{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:2rem; padding:clamp(2.2rem,5vw,3.4rem) 0; }
.footer-brand .brand-title{ color:#fff; font-size:1.2rem; }
.footer-brand p{ color:#bcd2ba; max-width:34ch; margin-top:.6rem; }
.footer-col h3{ color:#fff; font-size:1rem; margin-bottom:.9rem; }
.footer-col ul{ list-style:none; margin:0; padding:0; }
.footer-col li{ padding:.32rem 0; }
.footer-col a{ color:#cfe2cd; font-weight:600; }
.footer-col a:hover{ color:#fff; }
.footer-bottom{ border-top:1px solid rgba(255,255,255,.12); padding:1.1rem 0; display:flex; flex-wrap:wrap; gap:.6rem 1.4rem; align-items:center; justify-content:space-between; font-size:.9rem; color:#a9c2a7; }
.footer-bottom a{ color:#cfe2cd; }
.footer-bottom .legal{ display:flex; gap:1.2rem; flex-wrap:wrap; }

/* =========================================================
   9. Hilfsklassen / WP-Standards
   ========================================================= */
.screen-reader-text{ position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); border:0; }
.aligncenter{ margin-inline:auto; }
.alignleft{ float:left; margin:.3rem 1.2rem 1rem 0; }
.alignright{ float:right; margin:.3rem 0 1rem 1.2rem; }
.wp-caption{ max-width:100%; }
.wp-caption-text{ font-size:.85rem; color:var(--tinte-leise); }
.sticky-badge{ display:inline-block; background:var(--ball-rot); color:#fff; font-family:var(--display); font-weight:700; font-size:.72rem; padding:.18rem .6rem; border-radius:6px; letter-spacing:.04em; }

/* The Events Calendar – sanfte Einpassung */
.tribe-events .tribe-events-c-top-bar__datepicker-button,
.tribe-common .tribe-common-c-btn{ font-family:var(--display) !important; }
.tribe-common--breakpoint-medium .tribe-events-calendar-list__event-row{ border-radius:var(--radius); }

/* =========================================================
   10. Responsive
   ========================================================= */
@media (max-width: 1080px){
  .layout{ grid-template-columns:1fr; }
  .sidebar{ position:static; flex-direction:row; flex-wrap:wrap; }
  .sidebar .widget{ flex:1 1 260px; }
  .footer-top{ grid-template-columns:1fr 1fr; }
}

@media (max-width: 860px){
  /* Mobiles Menü */
  .nav-toggle{ display:inline-flex; }
  .primary-nav{
    position:fixed; inset:0 0 0 auto; width:min(86vw,360px); background:var(--karte);
    transform:translateX(100%); transition:transform var(--tempo); z-index:300; overflow-y:auto;
    box-shadow:-12px 0 40px rgba(21,57,28,.18); padding:5rem 1rem 2rem;
  }
  body.nav-open .primary-nav{ transform:translateX(0); }
  .primary-nav ul{ flex-direction:column; gap:.1rem; }
  .primary-nav > ul > li > a::after{ display:none; }
  .primary-nav a{ font-size:1.05rem; padding:.8rem .9rem; }
  .primary-nav ul ul{
    position:static; opacity:1; visibility:visible; transform:none; box-shadow:none; border:0;
    background:var(--sand); margin:.2rem 0 .4rem .6rem; padding:.3rem;
  }
  .nav-backdrop{ position:fixed; inset:0; background:rgba(21,57,28,.45); opacity:0; visibility:hidden; transition:opacity var(--tempo); z-index:250; }
  body.nav-open .nav-backdrop{ opacity:1; visibility:visible; }
  body.nav-open{ overflow:hidden; }
}

@media (max-width: 560px){
  body{ font-size:1.02rem; }
  .brand img, .brand .brand-logo{ width:46px; }
  .brand-sub{ font-size:.74rem; }
  .footer-top{ grid-template-columns:1fr; }
  .sidebar{ flex-direction:column; }
  .news-grid{ grid-template-columns:1fr; }
}

/* Bugfixes für das mobile Menü */
@media (max-width: 860px) {
  .site-header {
    /* Verhindert, dass der Header das fixed-Menü einsperrt */
    backdrop-filter: none;
  }
  
  .nav-backdrop {
    /* Setzt den Hintergrund unter den Header (z-index 200) */
    z-index: 190;
  }
}

/* Nur YouTube- und Vimeo-Videos anpassen, Banner und andere Iframes ignorieren */
.entry-content iframe[src*="youtube.com"],
.entry-content iframe[src*="youtube-nocookie.com"],
.entry-content iframe[src*="youtu.be"],
.entry-content iframe[src*="vimeo.com"],
.wp-block-embed-youtube iframe {
	width: 100% !important;
	max-width: 100%;
	aspect-ratio: 16 / 9;
	height: auto !important;
	border-radius: var(--radius-s);
	box-shadow: var(--schatten);
}