/*
Theme Name: Berlin Journal
Theme URI: https://berlinjournal.biz
Author: Berlin Journal Redaktion
Description: Editoriales WordPress-Theme für Berlin Journal — „Ein Heft, kein Interface". Warmes Papier-Layout, ein Messing-Akzent, zwei Schriften (Bricolage Grotesque + Libre Caslon Text). Enthält Startseite mit fest hinterlegtem Titelbild, Magazin-Übersicht mit Ressort-Filter, Artikel-Longread mit Lesefortschritt und Inhaltsverzeichnis, Über-uns- und Impressum-Seite.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: berlin-journal
*/

html,body{ background:#f6f2ea; }
body{ font-family:'Libre Caslon Text',Georgia,serif; color:#2e2820; -webkit-font-smoothing:antialiased; }
.wm{ font-family:'Bricolage Grotesque',ui-sans-serif,sans-serif; letter-spacing:-0.03em; }
.disp{ font-family:'Libre Caslon Text',Georgia,serif; letter-spacing:-0.005em; }
.serif{ font-family:'Libre Caslon Text',Georgia,serif; }
.sdisp{ font-family:'Libre Caslon Text',Georgia,serif; }
h1,h2,h3{ text-wrap:balance; }
p{ text-wrap:pretty; }
html{ scroll-behavior:smooth; }
.kick{ font-family:'Libre Caslon Text',Georgia,serif; font-weight:700; font-size:.74rem; letter-spacing:.18em; text-transform:uppercase; }
.ul{ background:linear-gradient(currentColor,currentColor) 0 100%/0% 1.5px no-repeat; transition:background-size .35s cubic-bezier(.16,.84,.44,1); }
.ul:hover{ background-size:100% 1.5px; }
.ed{ filter:saturate(1.02) contrast(1.02); }
.grain-soft{ position:relative; }
.grain-soft::after{ content:''; position:absolute; inset:0; z-index:1; pointer-events:none; opacity:.05; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
.grain-soft > *{ position:relative; z-index:2; }
.num{ font-variant-numeric:lining-nums tabular-nums; }

/* ═══════════ BERLIN JOURNAL · EDITORIAL ═══════════ */
.rubrik{ font-family:'Libre Caslon Text',Georgia,serif; font-style:italic; font-size:1rem; letter-spacing:.01em; color:#6d5324; }
.meta{ font-family:'Libre Caslon Text',Georgia,serif; font-variant-numeric:lining-nums tabular-nums; font-size:.78rem; letter-spacing:.02em; color:#6a5f4c; }
.pullquote{ font-family:'Libre Caslon Text',Georgia,serif; font-style:italic; font-weight:700; line-height:1.02; letter-spacing:-.015em; text-wrap:balance; }
.logo-img{ width:auto; transition:filter .5s ease; }
#nav.text-cream .logo-img{ filter:brightness(0) invert(1); }
.js .rv{ opacity:0; transform:translateY(22px); transition:opacity .9s cubic-bezier(.16,.84,.44,1), transform .9s cubic-bezier(.16,.84,.44,1); }
.js .rv.in{ opacity:1; transform:none; }
::selection{ background:#2e2820; color:#f6f2ea; }

.filt{ font-family:'Libre Caslon Text',Georgia,serif; font-style:italic; font-size:1.05rem; color:#6a5f4c; transition:color .25s ease; }
.filt:hover{ color:#6d5324; }
.filt[data-active="1"]{ color:#2e2820; }
.filt[data-active="1"]::after{ content:''; display:block; height:1px; margin-top:2px; background:#8a6d34; }

/* Longread-Prose (Artikel) */
.prose{ font-family:'Libre Caslon Text',Georgia,serif; font-size:1.24rem; line-height:1.72; color:#3a3327; }
.prose>p{ margin-top:1.5em; }
.prose>p:first-of-type::first-letter{ font-family:'Libre Caslon Text',serif; float:left; font-weight:700; font-size:4.4em; line-height:.72; padding:.05em .12em 0 0; color:#8a6d34; }
.prose h2{ font-family:'Libre Caslon Text',Georgia,serif; font-weight:700; letter-spacing:-0.02em; font-size:clamp(1.7rem,3vw,2.3rem); line-height:1.1; margin-top:2.4em; scroll-margin-top:90px; color:#2e2820; }
.prose h2 .anchor{ opacity:0; margin-left:.35em; color:#8a6d34; font-style:italic; font-weight:400; cursor:pointer; text-decoration:none; }
.prose h2:hover .anchor{ opacity:1; }
.prose a.inline, .prose a{ color:#2e2820; text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1.5px; text-decoration-color:#8a6d34; }
.prose img{ border-radius:1rem; }
.prose .pull{ font-family:'Libre Caslon Text',serif; font-size:clamp(1.9rem,3.6vw,2.9rem); line-height:1.1; font-style:italic; font-weight:700; margin:1.4em 0; color:#2e2820; max-width:none; letter-spacing:-.015em; }
.prose .pull .q{ color:#8a6d34; }
.prose blockquote{ font-family:'Libre Caslon Text',serif; font-size:clamp(1.9rem,3.6vw,2.9rem); line-height:1.1; font-style:italic; font-weight:700; margin:1.4em 0; color:#2e2820; }
#tocList a{ transition:color .25s ease; } #tocList a.active{ color:#2e2820; }
#bar{ transform-origin:0 50%; }
#top{ opacity:0; pointer-events:none; transition:opacity .3s ease; } #top.show{ opacity:1; pointer-events:auto; }

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  *{animation:none!important;transition:none!important}
  .js .rv{opacity:1!important;transform:none!important}
}

/* Screenreader-only helper (WP core also provides this, kept for safety) */
.sr-only{ position:absolute!important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
