/*
Theme Name: Bloom Starter Plus
Author: Morgan Labs
Description: Custom starter theme with responsive design.
Version: 5.10.3
Requires PHP: 8.1
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tested up to: 6.6
Text Domain: bloom-starter-plus
Tags: custom-header, full-width-template, three-columns, custom-menu
*/

@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Serif:wght@400;500;600;700&family=IBM+Plex+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

:root{
  --ink:#0f1419;
  --ink-2:#2a3441;
  --muted:#5a6573;
  --line:#dde3ea;
  --bg:#fbfcfd;
  --panel:#f3f5f8;
  --accent:#1d4ed8;
  --accent-2:#0e7490;
  --warn:#b45309;
  --ok:#047857;
  --shadow:0 1px 3px rgba(15,20,25,.06), 0 1px 2px rgba(15,20,25,.04);
}

html{scroll-behavior:smooth;}
html,body{overflow-x:hidden;}
*{box-sizing:border-box;}
body{
  margin:0;
  font-family:'IBM Plex Sans', system-ui, sans-serif;
  background:var(--bg);
  color:var(--ink);
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block;}
a{color:var(--accent);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .15s;}
a:hover{border-bottom-color:var(--accent);}

h1,h2,h3,h4{font-family:'IBM Plex Serif', Georgia, serif;color:var(--ink);font-weight:600;letter-spacing:-.01em;line-height:1.25;}
h1{font-size:2.4rem;margin:0 0 1rem;}
h2{font-size:1.6rem;margin:2.2rem 0 1rem;border-bottom:2px solid var(--line);padding-bottom:.4rem;}
h3{font-size:1.2rem;margin:1.8rem 0 .8rem;color:var(--ink-2);}
p{margin:0 0 1rem;}

code,kbd,.mono{font-family:'JetBrains Mono', monospace;font-size:.9em;}

.container{max-width:1180px;margin:0 auto;padding:0 1.5rem;}

/* Header */
.site-header{
  background:#0f1419;
  color:#fff;
  box-shadow:0 2px 12px rgba(0,0,0,.18);
  position:sticky;top:0;z-index:50;
}
.site-header .container{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  padding-top:.95rem;padding-bottom:.95rem;
}
.brand{
  font-family:'IBM Plex Serif',serif;
  font-weight:700;font-size:1.35rem;color:#fff;
  letter-spacing:.02em;border:none;
  display:flex;align-items:center;gap:.55rem;
}
.brand .dot{width:10px;height:10px;background:var(--accent);border-radius:2px;display:inline-block;}
.main-nav{display:flex;flex-wrap:wrap;gap:1.8rem;}
.main-nav a{
  color:#e3e8ef;border:none;
  font-size:.78rem;text-transform:uppercase;letter-spacing:.18em;font-weight:500;
}
.main-nav a:hover{color:#fff;}

/* Hero (front page) */
.hero{
  background:linear-gradient(135deg, #1d4ed8 0%, #0e7490 100%);
  color:#fff;padding:5rem 0 4rem;
}
.hero h1{color:#fff;font-size:3rem;max-width:780px;margin-bottom:1rem;}
.hero .tagline{font-size:1.15rem;opacity:.92;max-width:680px;margin:0;}
.hero .meta-row{
  display:flex;flex-wrap:wrap;gap:1.5rem;margin-top:2rem;
  font-family:'JetBrains Mono',monospace;font-size:.78rem;letter-spacing:.08em;
  text-transform:uppercase;color:#cfe2ff;
}
.hero .meta-row span::before{content:"//";margin-right:.4rem;color:#7ec8ff;}

/* Main layout */
main{padding:3rem 0;}
.article{max-width:820px;margin:0 auto;}
.article-meta{
  display:flex;flex-wrap:wrap;gap:1rem;align-items:center;
  padding:.9rem 1.1rem;background:var(--panel);border-left:3px solid var(--accent);
  font-family:'JetBrains Mono',monospace;font-size:.82rem;color:var(--muted);
  margin-bottom:2rem;
}
.article-meta strong{color:var(--ink);}

/* Info boxes */
.info-box{
  background:#fff;border:1px solid var(--line);border-left:4px solid var(--accent);
  padding:1.2rem 1.4rem;margin:1.6rem 0;border-radius:2px;
  box-shadow:var(--shadow);
}
.info-box.warn{border-left-color:var(--warn);}
.info-box.ok{border-left-color:var(--ok);}
.info-box .label{
  font-family:'JetBrains Mono',monospace;font-size:.72rem;
  text-transform:uppercase;letter-spacing:.15em;color:var(--accent);
  margin-bottom:.5rem;display:block;
}
.info-box.warn .label{color:var(--warn);}
.info-box.ok .label{color:var(--ok);}

/* Data card grid */
.data-grid{
  display:flex;flex-wrap:wrap;gap:1rem;margin:1.6rem 0;
}
.data-card{
  flex:1 1 200px;background:var(--panel);padding:1.2rem;border:1px solid var(--line);
  border-radius:2px;
}
.data-card .num{
  font-family:'IBM Plex Serif',serif;font-size:2.2rem;font-weight:700;color:var(--accent);
  display:block;line-height:1;margin-bottom:.4rem;
}
.data-card .lbl{font-size:.85rem;color:var(--muted);}

/* Day cards (weekly plan) */
.day-plan{
  display:flex;flex-wrap:wrap;gap:1rem;margin:1.6rem 0;
}
.day-card{
  flex:1 1 240px;background:#fff;border:1px solid var(--line);padding:1.3rem;
  border-top:3px solid var(--accent);box-shadow:var(--shadow);
}
.day-card h4{
  margin:0 0 .6rem;font-family:'JetBrains Mono',monospace;
  font-size:.78rem;text-transform:uppercase;letter-spacing:.15em;color:var(--accent);
}
.day-card .title{font-family:'IBM Plex Serif',serif;font-weight:600;font-size:1.1rem;margin-bottom:.5rem;}
.day-card ul{margin:.5rem 0 0;padding-left:1.1rem;font-size:.92rem;}

/* Numbered sections */
.numbered{counter-reset:sec;}
.numbered h2{position:relative;padding-left:2.4rem;}
.numbered h2::before{
  counter-increment:sec;content:"0" counter(sec);
  position:absolute;left:0;top:.2rem;
  font-family:'JetBrains Mono',monospace;font-size:1rem;color:var(--accent);
  font-weight:400;letter-spacing:0;
}

/* FAQ */
.faq{margin:2rem 0;}
.faq details{
  background:#fff;border:1px solid var(--line);padding:1rem 1.2rem;margin-bottom:.6rem;
  border-radius:2px;
}
.faq summary{
  cursor:pointer;font-weight:600;font-family:'IBM Plex Serif',serif;font-size:1.05rem;
  list-style:none;display:flex;justify-content:space-between;align-items:center;
}
.faq summary::after{content:"+";color:var(--accent);font-size:1.4rem;font-weight:300;}
.faq details[open] summary::after{content:"−";}
.faq details[open]{border-left:3px solid var(--accent);}
.faq p{margin-top:.8rem;color:var(--ink-2);}

/* Subscribe */
.subscribe{
  background:var(--ink);color:#fff;padding:2.5rem;margin:2.5rem 0;border-radius:2px;
}
.subscribe h3{color:#fff;margin-top:0;font-size:1.5rem;}
.subscribe p{color:#cbd5e0;margin-bottom:1.4rem;}
.subscribe form{display:flex;flex-wrap:wrap;gap:.7rem;}
.subscribe input{
  flex:1 1 180px;padding:.85rem 1rem;border:1px solid #2a3441;background:#1a2129;
  color:#fff;border-radius:2px;font-family:inherit;font-size:.95rem;
}
.subscribe input::placeholder{color:#7c8896;}
.subscribe button{
  padding:.85rem 1.8rem;background:var(--accent);color:#fff;border:none;
  font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:.85rem;
  cursor:pointer;border-radius:2px;
}
.subscribe button:hover{background:#1e40af;}

/* CTA */
.cta-block{
  background:var(--accent);color:#fff;padding:2rem;margin:2rem 0;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;
}
.cta-block .text{flex:1 1 280px;}
.cta-block h3{color:#fff;margin:0 0 .3rem;}
.cta-block p{margin:0;color:#dbeafe;}
.cta-btn{
  display:inline-block;background:#fff;color:var(--accent);padding:.95rem 1.8rem;
  font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:.9rem;
  border-radius:2px;border:none;cursor:pointer;
}
.cta-btn:hover{background:#f3f5f8;border:none;}

/* Read also grid */
.read-also{margin:2.5rem 0;}
.read-also h3{margin-bottom:1rem;}
.also-grid{display:flex;flex-wrap:wrap;gap:1.2rem;}
.also-card{
  flex:1 1 320px;background:#fff;border:1px solid var(--line);padding:1.4rem;
  border-top:3px solid var(--accent);
}
.also-card .cat{
  font-family:'JetBrains Mono',monospace;font-size:.7rem;
  text-transform:uppercase;letter-spacing:.15em;color:var(--accent);
}
.also-card h4{margin:.4rem 0 .6rem;font-size:1.1rem;}
.also-card p{font-size:.92rem;color:var(--muted);margin-bottom:.7rem;}

/* Latest posts list (front page) */
.latest-list{display:flex;flex-direction:column;gap:.8rem;margin:1.5rem 0;}
.latest-item{
  display:flex;flex-wrap:wrap;gap:1rem;padding:1.2rem;background:#fff;border:1px solid var(--line);
  border-left:3px solid var(--accent);
}
.latest-item .num{
  font-family:'JetBrains Mono',monospace;color:var(--accent);font-size:.85rem;min-width:40px;
}
.latest-item .body{flex:1 1 280px;}
.latest-item h4{margin:0 0 .3rem;font-size:1.1rem;}
.latest-item p{margin:0;font-size:.92rem;color:var(--muted);}

/* Section break */
.section-break{
  border:none;border-top:1px solid var(--line);margin:3.5rem 0 2.5rem;
  text-align:center;height:1px;position:relative;
}
.section-break::after{
  content:"§";position:absolute;top:-14px;left:50%;transform:translateX(-50%);
  background:var(--bg);color:var(--muted);padding:0 1rem;font-family:'IBM Plex Serif',serif;
}

/* Quote */
blockquote{
  margin:1.6rem 0;padding:1.2rem 1.6rem;background:var(--panel);
  border-left:4px solid var(--ink-2);font-style:italic;font-family:'IBM Plex Serif',serif;
  font-size:1.05rem;color:var(--ink-2);
}
blockquote cite{display:block;margin-top:.6rem;font-style:normal;font-size:.85rem;color:var(--muted);font-family:'JetBrains Mono',monospace;}

/* Disclaimer */
.disclaimer{
  background:#fff8eb;border:1px solid #fde68a;border-left:4px solid var(--warn);
  padding:1.1rem 1.3rem;margin:2rem 0;font-size:.88rem;color:#5a3a04;border-radius:2px;
}
.disclaimer strong{color:var(--warn);display:block;margin-bottom:.4rem;
  font-family:'JetBrains Mono',monospace;font-size:.72rem;text-transform:uppercase;letter-spacing:.15em;}

/* Author bio */
.author-bio{
  display:flex;flex-wrap:wrap;gap:1.2rem;padding:1.4rem;background:var(--panel);
  border:1px solid var(--line);margin:2rem 0;
}
.author-bio .avatar{
  width:64px;height:64px;border-radius:50%;background:var(--accent);
  display:flex;align-items:center;justify-content:center;color:#fff;font-family:'IBM Plex Serif',serif;
  font-size:1.4rem;font-weight:700;flex:0 0 64px;
}
.author-bio .info{flex:1 1 280px;}
.author-bio .info h4{margin:0 0 .3rem;}
.author-bio .info p{margin:0;font-size:.92rem;color:var(--muted);}

/* Share buttons (sticky left) */
.share-sticky{
  position:fixed;left:1.5rem;top:40%;display:flex;flex-direction:column;gap:.5rem;z-index:20;
}
.share-sticky a{
  display:flex;align-items:center;justify-content:center;
  width:38px;height:38px;background:#fff;border:1px solid var(--line);
  color:var(--ink);font-family:'JetBrains Mono',monospace;font-size:.75rem;
  font-weight:600;border-radius:2px;
}
.share-sticky a:hover{background:var(--accent);color:#fff;border-color:var(--accent);}

/* Breadcrumbs */
.breadcrumbs{
  font-family:'JetBrains Mono',monospace;font-size:.78rem;color:var(--muted);
  margin-bottom:1.5rem;text-transform:lowercase;
}
.breadcrumbs a{color:var(--muted);border:none;}
.breadcrumbs a:hover{color:var(--accent);}
.breadcrumbs span{margin:0 .5rem;}

/* Tags */
.tag-list{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0;}
.tag{
  display:inline-block;padding:.3rem .7rem;background:var(--panel);
  font-family:'JetBrains Mono',monospace;font-size:.75rem;color:var(--ink-2);
  border:1px solid var(--line);border-radius:2px;
}

/* Footer */
.site-footer{
  background:#0f1419;color:#cbd5e0;padding:3.5rem 0 0;margin-top:4rem;
}
.footer-cols{display:flex;flex-wrap:wrap;gap:2rem;padding-bottom:2.5rem;}
.footer-col{flex:1 1 200px;}
.footer-col h5{
  color:#fff;font-family:'JetBrains Mono',monospace;font-size:.78rem;
  text-transform:uppercase;letter-spacing:.15em;margin:0 0 1rem;font-weight:500;
}
.footer-col p,.footer-col li{font-size:.9rem;color:#9aa5b1;line-height:1.7;}
.footer-col ul{list-style:none;padding:0;margin:0;}
.footer-col a{color:#cbd5e0;border:none;}
.footer-col a:hover{color:var(--accent);}
.footer-bottom{
  border-top:1px solid #1f2937;padding:1.3rem 0;
  display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;
  font-family:'JetBrains Mono',monospace;font-size:.78rem;color:#7c8896;
}

/* Cookie consent */
.cookie-bar{
  position:fixed;left:0;right:0;bottom:0;background:#0f1419;color:#fff;
  padding:1.2rem 1.5rem;z-index:100;display:none;border-top:3px solid var(--accent);
}
.cookie-bar.show{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:space-between;}
.cookie-bar p{margin:0;flex:1 1 380px;font-size:.9rem;color:#cbd5e0;}
.cookie-bar .btns{display:flex;flex-wrap:wrap;gap:.6rem;}
.cookie-bar button{
  padding:.7rem 1.2rem;border:1px solid #2a3441;background:#1a2129;color:#fff;
  font-family:inherit;font-size:.82rem;cursor:pointer;border-radius:2px;
  text-transform:uppercase;letter-spacing:.08em;font-weight:500;
}
.cookie-bar button.primary{background:var(--accent);border-color:var(--accent);}
.cookie-modal{
  display:none;position:fixed;inset:0;background:rgba(15,20,25,.75);z-index:200;
  align-items:center;justify-content:center;padding:1rem;
}
.cookie-modal.show{display:flex;}
.cookie-modal .box{
  background:#fff;color:var(--ink);max-width:520px;width:100%;padding:2rem;border-radius:2px;
  max-height:85vh;overflow-y:auto;
}
.cookie-modal h3{margin-top:0;}
.cookie-cat{
  display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:space-between;
  padding:1rem 0;border-bottom:1px solid var(--line);
}
.cookie-cat:last-of-type{border-bottom:none;}
.cookie-cat .desc{flex:1 1 260px;}
.cookie-cat strong{display:block;margin-bottom:.2rem;}
.cookie-cat small{color:var(--muted);font-size:.85rem;}
.switch{position:relative;width:44px;height:24px;display:inline-block;}
.switch input{opacity:0;width:0;height:0;}
.slider{
  position:absolute;inset:0;background:#cbd5e0;border-radius:24px;cursor:pointer;
  transition:background .2s;
}
.slider::before{
  content:"";position:absolute;width:18px;height:18px;background:#fff;
  border-radius:50%;top:3px;left:3px;transition:transform .2s;
}
input:checked + .slider{background:var(--accent);}
input:checked + .slider::before{transform:translateX(20px);}
input:disabled + .slider{opacity:.6;cursor:not-allowed;}
.cookie-modal .save-pref{
  margin-top:1.4rem;padding:.85rem 1.6rem;background:var(--accent);color:#fff;border:none;
  font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:.82rem;cursor:pointer;border-radius:2px;width:100%;
}

@media (max-width:900px){
  .share-sticky{display:none;}
  .hero h1{font-size:2.2rem;}
  h1{font-size:1.9rem;}
  h2{font-size:1.35rem;}
}
@media (max-width:600px){
  .site-header .container{flex-direction:column;gap:.8rem;align-items:flex-start;}
  .main-nav{gap:1rem;}
  .hero{padding:3rem 0 2.5rem;}
}
