/*
Theme Name: PyRoadmaps
Theme URI: https://pyroadmaps.in
Author: PyRoadmaps
Author URI: https://pyroadmaps.in
Description: A warm, personal-blog WordPress theme for food, self improvement and life advice writers. Built to match the PyRoadmaps design — cream backgrounds, a confident serif headline, a single terracotta accent, and content-first layouts for posts, categories and an about-me sidebar.
Version: 1.9.1
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: LICENSE
Text Domain: pyroadmaps
Tags: blog, food, one-column, two-columns, right-sidebar, custom-menu, custom-logo, featured-images, translation-ready
*/

/* =========================================================
   SELF-HOSTED FONTS
   Playfair Display + Inter, served from this theme (SIL Open
   Font License) instead of a Google Fonts CDN request — faster
   first paint, no third-party request, no CDN privacy concern.
   ========================================================= */
@font-face{
  font-family: "Playfair Display";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("assets/fonts/playfair-display-600.woff2") format("woff2");
}
@font-face{
  font-family: "Playfair Display";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("assets/fonts/playfair-display-700.woff2") format("woff2");
}
@font-face{
  font-family: "Playfair Display";
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url("assets/fonts/playfair-display-600-italic.woff2") format("woff2");
}
@font-face{
  font-family: "Inter";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("assets/fonts/inter-400.woff2") format("woff2");
}
@font-face{
  font-family: "Inter";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("assets/fonts/inter-500.woff2") format("woff2");
}
@font-face{
  font-family: "Inter";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("assets/fonts/inter-600.woff2") format("woff2");
}
@font-face{
  font-family: "Inter";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("assets/fonts/inter-700.woff2") format("woff2");
}

/* =========================================================
   DESIGN TOKENS
   ========================================================= */
:root{
  --color-bg:            #FAF5EC;
  --color-bg-soft:       #F4EBDD;
  --color-card:          #FFFFFF;
  --color-border:        #E7DDCB;
  --color-text:          #1B2033;
  --color-text-muted:    #5B5F6E;
  --color-accent:        #EE7834;
  --color-accent-dark:   #D9631F;
  --color-navy:          #0E1526;
  --color-navy-soft:     #182238;
  --color-heading:       #0E1526;

  --font-display: "Playfair Display", Georgia, "Times New Roman", serif;
  --font-body:    "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 22px;

  --container: 1200px;

  /* Fluid scale — smooth interpolation between mobile and desktop
     instead of jumping at fixed breakpoints. clamp(min, preferred, max). */
  --space-sm:  clamp(0.75rem, 0.65rem + 0.5vw, 1rem);
  --space-md:  clamp(1.25rem, 1rem + 1.2vw, 2rem);
  --space-lg:  clamp(2rem, 1.4rem + 3vw, 3.5rem);
  --space-xl:  clamp(3rem, 2rem + 5vw, 5.5rem);

  --font-size-h1: clamp(2.1rem, 1.6rem + 2.2vw, 3rem);
  --font-size-tagline: clamp(1.5rem, 1.2rem + 1.5vw, 2.2rem);
  --font-size-h2: clamp(1.4rem, 1.2rem + 0.9vw, 1.75rem);
}

/* Dark mode palette — swaps automatically via [data-theme="dark"] on <html> */
[data-theme="dark"]{
  --color-bg:            #12151D;
  --color-bg-soft:       #1B1F2A;
  --color-card:          #1C202B;
  --color-border:        #2B3140;
  --color-text:          #EDEFF4;
  --color-text-muted:    #9BA1B0;
  --color-accent:        #F0824A;
  --color-accent-dark:   #EE7834;
  --color-navy:          #090B10;
  --color-navy-soft:     #171B24;
  --color-heading:       #F3F5FA;
}
[data-theme="dark"] .btn-outline{ border-color: var(--color-border); color: var(--color-text); }
[data-theme="dark"] .btn-outline:hover{ background: var(--color-accent); border-color: var(--color-accent); color:#fff; }
[data-theme="dark"] .hero-media img{ filter: brightness(.92); }

/* =========================================================
   RESET / BASE
   ========================================================= */
*, *::before, *::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin:0;
  font-family: var(--font-body);
  color: var(--color-text);
  background: var(--color-bg);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  transition: background-color .25s ease, color .25s ease;
}
img{ max-width:100%; display:block; }
a{ color: inherit; text-decoration:none; }
ul{ margin:0; padding:0; list-style:none; }
h1,h2,h3,h4{ font-family: var(--font-display); margin:0 0 .5em; line-height:1.15; font-weight:700; }
p{ margin:0 0 1em; }
button, input{ font-family: inherit; }
:focus-visible{ outline: 2px solid var(--color-accent); outline-offset: 2px; }

.container{
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 24px;
}
.italic-accent{
  font-family: var(--font-display);
  font-style: italic;
  color: var(--color-accent);
}
.eyebrow{
  display:inline-block;
  font-size: .72rem;
  font-weight:700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin-bottom: 6px;
}
.section-heading h2{ font-size: var(--font-size-h2); }
.section-heading{
  display:flex; flex-direction:column; gap:10px; margin-bottom: 34px;
}
.section-heading .rule{
  width: 46px; height: 3px; background: var(--color-accent); border-radius: 3px;
}
.section-heading-row{
  display:flex; align-items:flex-end; justify-content:space-between; gap: 16px; flex-wrap: wrap;
}
.btn{
  display:inline-flex; align-items:center; gap:8px;
  padding: 13px 24px;
  border-radius: 999px;
  font-weight:600;
  font-size:.95rem;
  border: 1px solid transparent;
  cursor:pointer;
  transition: transform .15s ease, background .15s ease, color .15s ease, border-color .15s ease;
  white-space: nowrap;
}
.btn:hover{ transform: translateY(-1px); }
.btn-primary{ background: var(--color-accent); color:#fff; }
.btn-primary:hover{ background: var(--color-accent-dark); color:#fff; }
.btn-outline{ background: transparent; border-color: var(--color-navy); color: var(--color-navy); }
.btn-outline:hover{ background: var(--color-navy); color:#fff; }
.btn-link{ color: var(--color-accent); font-weight:600; font-size:.92rem; }
.btn-link:hover{ color: var(--color-accent-dark); }

/* =========================================================
   HEADER
   ========================================================= */
.site-header{
  background: var(--color-bg);
  border-bottom: 1px solid var(--color-border);
  position: sticky; top:0; z-index: 50;
}
.site-header .inner{
  display:flex; align-items:center; justify-content:space-between;
  padding: 18px 24px;
  gap: 24px;
}
.site-branding{ display:flex; align-items:center; gap:10px; }
.site-branding img.custom-logo{ height:40px; width:auto; border-radius: 8px; }
.site-branding .logo-mark{
  width:40px; height:40px; border-radius:8px;
  background: var(--color-navy);
  display:flex; align-items:center; justify-content:center;
  color:#fff; font-family: var(--font-display); font-size: 1.2rem;
}
.site-title{ font-family: var(--font-display); font-size: 1.25rem; font-weight:700; color: var(--color-heading); display:inline-flex; align-items:baseline; gap:6px; }
.site-header .site-title::after{
  content:""; display:inline-block; width:6px; height:6px; border-radius:50%;
  background: var(--color-accent); transform: translateY(-2px);
}
.site-title span{ color: var(--color-accent); }

.primary-nav ul{ display:flex; gap: 30px; align-items:center; }
.primary-nav a{
  font-size:.95rem; font-weight:500; color: var(--color-text);
  padding-bottom: 4px; border-bottom: 2px solid transparent;
}
.primary-nav .current-menu-item > a,
.primary-nav a:hover{ color: var(--color-accent); border-color: var(--color-accent); }

.header-actions{ display:flex; align-items:center; gap:18px; }
.header-search-toggle{ background:none; border:none; cursor:pointer; color: var(--color-text); }
.menu-toggle{ display:none; background:none; border:none; cursor:pointer; }

.theme-toggle{
  background:none; border:none; cursor:pointer; color: var(--color-text);
  display:flex; align-items:center; justify-content:center; width:22px; height:22px;
}
.theme-toggle .icon-moon{ display:none; }
[data-theme="dark"] .theme-toggle .icon-sun{ display:none; }
[data-theme="dark"] .theme-toggle .icon-moon{ display:block; }

@media (max-width: 900px){
  .primary-nav{ display:none; }
  .menu-toggle{ display:block; }
}

/* =========================================================
   HERO
   ========================================================= */
.hero{ padding: var(--space-xl) 0 var(--space-lg); }
.hero .inner{
  display:grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items:center;
}
.hero h1{ font-size: var(--font-size-h1); color: var(--color-heading); }
.hero-tagline{ font-family: var(--font-display); font-style: italic; font-size: var(--font-size-tagline); color: var(--color-accent); display:block; position:relative; width: fit-content;}
.hero-tagline::after{
  content:""; position:absolute; left:0; right:0; bottom:-6px; height:3px; background: var(--color-accent); opacity:.5; border-radius:3px;
}
.hero-desc{ color: var(--color-text-muted); margin: 20px 0 26px; max-width: 460px; }
.hero-actions{ display:flex; gap:14px; flex-wrap:wrap; }
.hero-media{ position:relative; }
.hero-media img{ border-radius: var(--radius-lg); width:100%; height:auto; object-fit:cover; }

@media (max-width: 900px){
  .hero .inner{ grid-template-columns:1fr; }
}

/* =========================================================
   BLOG + SIDEBAR LAYOUT (front page)
   ========================================================= */
.home-blog{ padding: var(--space-lg) 0; }
.home-blog-grid{ display:grid; grid-template-columns: 1fr 300px; gap: 30px; align-items:start; }
.post-cards{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 24px; grid-column: span 1;}
.home-blog-grid .post-cards{ grid-column: 1 / 2; }

.post-card{
  background: var(--color-card);
  border-radius: var(--radius-md);
  overflow:hidden;
  border: 1px solid var(--color-border);
  transition: transform .15s ease, box-shadow .15s ease;
}
.post-card:hover{ transform: translateY(-3px); box-shadow: 0 10px 30px rgba(20,20,30,.08); }
.post-card-media{ aspect-ratio: 16/9; overflow:hidden; }
.post-card-media img{ width:100%; height:100%; object-fit:cover; }
.post-card-body{ padding: 18px 18px 20px; }
.post-card-body h3{ font-size: 1.15rem; margin: 6px 0 8px; }
.post-card-body h3 a:hover{ color: var(--color-accent); }
.post-card-excerpt{ color: var(--color-text-muted); font-size:.92rem; margin-bottom: 14px; }
.post-card-meta{
  display:flex; align-items:center; justify-content:space-between;
  font-size:.8rem; color: var(--color-text-muted);
  border-top: 1px solid var(--color-border); padding-top: 12px;
}
.bookmark-btn{ background:none; border:none; cursor:pointer; color: var(--color-text-muted); }

/* About / profile card in sidebar */
.about-card{
  background: var(--color-bg-soft);
  border-radius: var(--radius-md);
  padding: 28px 24px;
  text-align:center;
}
.about-card .avatar{
  width: 96px; height:96px; border-radius:50%; overflow:hidden; margin: 0 auto 16px;
  border: 3px solid #fff;
}
.about-card .avatar img{ width:100%; height:100%; object-fit:cover; }
.about-card h3{ font-size: 1.25rem; }
.about-card p{ color: var(--color-text-muted); font-size:.92rem; }
.about-card .signoff{ font-family: var(--font-display); font-style: italic; color: var(--color-accent); }
.about-social{ display:flex; justify-content:center; gap:10px; margin-top: 16px; }
.about-social a{
  width:36px; height:36px; border-radius:50%; background: var(--color-navy); color:#fff;
  display:flex; align-items:center; justify-content:center; transition: background .15s ease;
}
.about-social a:hover{ background: var(--color-accent); }

@media (max-width: 980px){
  .home-blog-grid, .home-blog-grid .post-cards{ grid-template-columns: 1fr; }
  .post-cards{ grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px){
  .post-cards{ grid-template-columns: 1fr; }
}

/* =========================================================
   CATEGORY CARDS
   ========================================================= */
.categories{ padding: var(--space-md) 0 var(--space-lg); }
.category-grid{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.category-card{
  display:flex; align-items:center; gap:16px;
  background: var(--color-card);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: 14px;
}
.category-card .thumb{
  position:relative; width:76px; height:76px; flex:0 0 auto; border-radius: var(--radius-sm); overflow:hidden;
}
.category-card .thumb img{ width:100%; height:100%; object-fit:cover; }
.category-card .thumb .icon-badge{
  position:absolute; right:-8px; bottom:-8px; width:30px; height:30px; border-radius:50%;
  background:#fff; box-shadow: 0 2px 8px rgba(0,0,0,.12);
  display:flex; align-items:center; justify-content:center; font-size:.9rem;
}
.category-card h4{ font-size:1.05rem; margin-bottom:4px; }
.category-card p{ font-size:.85rem; color: var(--color-text-muted); margin-bottom: 6px; }

@media (max-width: 900px){ .category-grid{ grid-template-columns: 1fr; } }

/* =========================================================
   NEWSLETTER CTA
   ========================================================= */
.newsletter{
  background: var(--color-bg-soft);
  border-radius: var(--radius-lg);
  padding: 40px;
  margin: 0 24px 60px;
  display:flex; align-items:center; justify-content:space-between; gap: 30px; flex-wrap:wrap;
}
.newsletter-copy{ display:flex; align-items:center; gap: 20px; max-width: 480px; }
.newsletter-copy .env{ font-size: 2.4rem; }
.newsletter h3{ font-size:1.3rem; }
.newsletter p{ color: var(--color-text-muted); margin-bottom:4px; }
.newsletter small{ color: var(--color-text-muted); }
.newsletter-form{ display:flex; gap:10px; flex: 1 1 380px; max-width: 460px; }
.newsletter-form input[type="email"]{
  flex:1; padding: 13px 16px; border-radius: 999px; border: 1px solid var(--color-border); background:#fff;
}
.newsletter-form-wrap{ display:flex; flex-direction:column; gap:6px; flex: 1 1 380px; max-width: 460px; }

/* =========================================================
   FOOTER
   ========================================================= */
.site-footer{ background: var(--color-navy); color: #C7CCDA; }
.site-footer a{ color:#C7CCDA; }
.site-footer a:hover{ color: var(--color-accent); }
.footer-top{ padding: 60px 0 40px; }
.footer-grid{ display:grid; grid-template-columns: 1.6fr 1fr 1fr 1.2fr 1.2fr; gap: 30px; }
.footer-brand .site-title{ color:#fff; }
.footer-brand p{ font-size:.9rem; margin: 14px 0 18px; }
.footer-social{ display:flex; gap:12px; }
.footer-social a{
  width:34px; height:34px; border-radius:50%; background: var(--color-navy-soft);
  display:flex; align-items:center; justify-content:center;
}
.footer-col h4{ color:#fff; font-family: var(--font-body); font-weight:700; font-size:1rem; margin-bottom: 16px; }
.footer-col ul li{ margin-bottom: 10px; font-size:.9rem; }
.footer-popular-post{ display:flex; gap:10px; margin-bottom: 14px; }
.footer-popular-post img{ width:48px; height:48px; border-radius:6px; object-fit:cover; flex:0 0 auto; }
.footer-popular-post span{ font-size:.85rem; line-height:1.35; }
.footer-newsletter-form{ display:flex; margin-top: 14px; border:1px solid #2a3550; border-radius:999px; overflow:hidden; }
.footer-newsletter-form input{ flex:1; background:transparent; border:none; padding:12px 16px; color:#fff; }
.footer-newsletter-form button{
  background: var(--color-accent); border:none; color:#fff; width:46px; display:flex;
  align-items:center; justify-content:center; cursor:pointer;
}
.footer-bottom{
  border-top: 1px solid var(--color-navy-soft);
  padding: 20px 0;
  font-size:.82rem;
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;
}
.footer-bottom a{ margin-left: 14px; }

@media (max-width: 980px){
  .footer-grid{ grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px){
  .footer-grid{ grid-template-columns: 1fr; }
  .newsletter{ margin: 0 16px 40px; padding: 28px; }
}

/* =========================================================
   SINGLE / PAGE / ARCHIVE CONTENT
   ========================================================= */
.page-header-block{ padding: var(--space-lg) 0 var(--space-md); }
.page-header-block h1{ font-size: 2.4rem; color: var(--color-heading); }
.content-layout{ display:grid; grid-template-columns: 1fr 300px; gap: 40px; padding: var(--space-md) 0 var(--space-xl); align-items:start; }
@media (max-width: 980px){ .content-layout{ grid-template-columns: 1fr; } }

.entry-content{ font-size: 1.05rem; }
.entry-content h2{ font-size:1.6rem; margin-top:1.4em; color: var(--color-heading); }
.entry-content h3{ font-size:1.3rem; margin-top:1.2em; }
.entry-content img{ border-radius: var(--radius-md); margin: 20px 0; }
.entry-content a{ color: var(--color-accent); text-decoration: underline; }
.entry-content blockquote{
  border-left: 3px solid var(--color-accent);
  padding-left: 18px; margin: 24px 0; font-style: italic; color: var(--color-text-muted);
}
.single-post-meta{ display:flex; gap:16px; align-items:center; color: var(--color-text-muted); font-size:.9rem; margin-bottom: 20px; }
.single-featured-image{ aspect-ratio: 16/9; border-radius: var(--radius-lg); overflow:hidden; margin-bottom: var(--space-md); }
.single-featured-image img{ width:100%; height:100%; object-fit:cover; display:block; }

.widget{ background: var(--color-card); border:1px solid var(--color-border); border-radius: var(--radius-md); padding: 22px; margin-bottom: 24px; }
.widget h4, .widget .widget-title{ font-family: var(--font-body); font-weight:700; font-size:1rem; margin-bottom:14px; }

.archive-grid{ display:grid; grid-template-columns: repeat(auto-fit, minmax(260px, 340px)); gap:24px; }
@media (max-width: 700px){ .archive-grid{ grid-template-columns: 1fr; } }

.pagination-nav{ display:flex; gap:10px; margin-top: 30px; flex-wrap:wrap; }
.pagination-nav a, .pagination-nav span{
  padding: 8px 14px; border-radius: 8px; border: 1px solid var(--color-border); font-size:.9rem;
}
.pagination-nav .current{ background: var(--color-accent); color:#fff; border-color: var(--color-accent); }

.comments-area{ margin-top: 50px; }
.comment-list{ list-style:none; margin:0; padding:0; }
.comment-list article{ padding: 18px 0; border-bottom:1px solid var(--color-border); }
.comment-form input, .comment-form textarea{
  width:100%; padding: 12px 14px; border:1px solid var(--color-border); border-radius: var(--radius-sm); margin-bottom: 14px; background:#fff;
}

.search-panel{ display:none; padding-bottom:16px; }
.search-panel.is-open{ display:block; }
.search-form{ display:flex; gap:10px; }
.search-form input[type="search"]{ flex:1; padding:12px 16px; border-radius:999px; border:1px solid var(--color-border); background:#fff; }
.search-form button{ padding: 12px 20px; border-radius:999px; border:none; background: var(--color-navy); color:#fff; cursor:pointer; }

/* Mobile menu */
.mobile-nav{
  display:none; position:fixed; inset:0; background: rgba(14,21,38,.6); z-index: 100;
}
.mobile-nav.is-open{ display:block; }
.mobile-nav-panel{
  background: var(--color-bg); width: 280px; height:100%; padding: 24px; margin-left:auto;
  display:flex; flex-direction:column; gap: 18px;
}
.mobile-nav-panel a{ font-size:1.05rem; font-weight:600; }
.mobile-nav-close{ align-self:flex-end; background:none; border:none; font-size:1.4rem; cursor:pointer; }

/* =========================================================
   MOTION / SCROLL-REVEAL
   Respects prefers-reduced-motion throughout.
   ========================================================= */
@media (prefers-reduced-motion: no-preference){
  .hero-copy > *{ opacity:0; transform: translateY(18px); animation: pyr-fadeUp .7s ease forwards; }
  .hero-copy h1{ animation-delay:.05s; }
  .hero-copy .hero-desc{ animation-delay:.22s; }
  .hero-copy .hero-actions{ animation-delay:.38s; }
  .hero-media{ opacity:0; animation: pyr-fadeIn .9s ease .15s forwards; }
  .hero-media img{ animation: pyr-floaty 6s ease-in-out 1.1s infinite; }
  @keyframes pyr-fadeUp{ to{ opacity:1; transform:translateY(0); } }
  @keyframes pyr-fadeIn{ to{ opacity:1; } }
  @keyframes pyr-floaty{ 0%,100%{ transform: translateY(0); } 50%{ transform: translateY(-10px); } }

  .hero-tagline::after{ width:0; animation: pyr-drawLine .8s ease .6s forwards; }
  @keyframes pyr-drawLine{ to{ width:100%; } }

  /* Plays automatically on page load — pure CSS, zero JS dependency.
     (An earlier version of this gated visibility behind a JS-added
     class + IntersectionObserver for a "reveal on scroll" effect;
     that depended on JS running correctly at exactly the right time
     and caused repeated visibility bugs. This version can't get
     stuck hidden under any circumstance, at the cost of losing the
     scroll-triggered timing — content just fades in shortly after
     the page loads instead of when it scrolls into view.) */
  .reveal{ opacity:0; transform: translateY(20px); animation: pyr-fadeUp .7s ease forwards; animation-delay: .1s; }

  .newsletter-copy .env{ display:inline-block; animation: pyr-sway 3.2s ease-in-out infinite; }
  @keyframes pyr-sway{ 0%,100%{ transform: rotate(-4deg); } 50%{ transform: rotate(4deg); } }

  .bookmark-btn svg, .about-social a svg, .footer-social a svg{ transition: transform .25s ease; }
  .bookmark-btn:hover svg{ transform: scale(1.15); }
  .btn-link{ position:relative; }
  .btn-link::after{ content:""; position:absolute; left:0; right:100%; bottom:-2px; height:1px; background: var(--color-accent); transition: right .25s ease; }
  .btn-link:hover::after{ right:0; }
}
@media (prefers-reduced-motion: reduce){
  .hero-tagline::after{ width:100%; }
}

/* =========================================================
   AD ZONES
   ========================================================= */
.ad-zone{ margin: 0 0 24px; }
.ad-zone--empty{
  border: 1px dashed var(--color-border);
  border-radius: var(--radius-sm);
  padding: 14px 16px;
  font-size: .8rem;
  color: var(--color-text-muted);
  background: repeating-linear-gradient(45deg, rgba(0,0,0,.02), rgba(0,0,0,.02) 10px, transparent 10px, transparent 20px);
  text-align: center;
}
.ad-slot{ display:flex; justify-content:center; overflow:hidden; }
.ad-zone--ad-header-banner,
.ad-zone--ad-footer-banner{ padding: 16px 0; text-align:center; }

/* =========================================================
   ACCESSIBILITY: SKIP LINK
   ========================================================= */
.screen-reader-text{
  border:0; clip:rect(1px,1px,1px,1px); clip-path: inset(50%); height:1px; margin:-1px; overflow:hidden;
  padding:0; position:absolute; width:1px; word-wrap:normal;
}
.skip-link.screen-reader-text:focus{
  background:#fff; color:var(--color-navy); display:block; font-weight:600; left:16px; top:16px;
  padding:12px 20px; border-radius:8px; z-index:9999; clip:auto; clip-path:none; height:auto; width:auto;
  box-shadow: 0 4px 16px rgba(0,0,0,.2);
}

/* =========================================================
   BREADCRUMBS
   ========================================================= */
.breadcrumbs{ padding: 18px 0 0; font-size:.85rem; color: var(--color-text-muted); display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.breadcrumbs a{ color: var(--color-text-muted); }
.breadcrumbs a:hover{ color: var(--color-accent); }
.breadcrumbs [aria-current="page"]{ color: var(--color-text); font-weight:500; }

/* =========================================================
   SHARE BUTTONS
   ========================================================= */
.share-buttons{ display:flex; align-items:center; gap:10px; margin-top:24px; flex-wrap:wrap; }
.share-label{ font-size:.85rem; color: var(--color-text-muted); font-weight:600; margin-right:4px; }
.share-buttons a{
  width:34px; height:34px; border-radius:50%; background: var(--color-bg-soft); color: var(--color-heading);
  display:flex; align-items:center; justify-content:center; transition: background .15s ease, color .15s ease;
}
.share-buttons a:hover{ background: var(--color-accent); color:#fff; }

/* =========================================================
   RELATED POSTS
   ========================================================= */
.related-posts{ max-width: var(--container); margin: var(--space-md) auto var(--space-xl); padding: var(--space-md) 24px 0; border-top: 1px solid var(--color-border); }

/* =========================================================
   COOKIE CONSENT
   ========================================================= */
.cookie-notice{
  position: fixed; left:16px; right:16px; bottom:16px; z-index: 200;
  max-width: 640px; margin: 0 auto;
  background: var(--color-navy); color:#E7E9F0;
  border-radius: var(--radius-md);
  padding: 18px 20px;
  display:flex; align-items:center; gap:16px; flex-wrap:wrap;
  box-shadow: 0 10px 40px rgba(0,0,0,.25);
}
.cookie-notice p{ margin:0; font-size:.85rem; flex:1 1 260px; }
.cookie-notice a{ color: var(--color-accent); text-decoration: underline; margin-left:4px; }
.cookie-notice.is-dismissed{ display:none; }

/* =========================================================
   BACK TO TOP
   ========================================================= */
.back-to-top{
  position: fixed; right:20px; bottom:20px; z-index: 150;
  width:44px; height:44px; border-radius:50%; border:none; cursor:pointer;
  background: var(--color-navy); color:#fff;
  display:flex; align-items:center; justify-content:center;
  opacity:0; pointer-events:none; transform: translateY(10px);
  transition: opacity .25s ease, transform .25s ease, background .15s ease;
}
.back-to-top.is-visible{ opacity:1; pointer-events:auto; transform: translateY(0); }
.back-to-top:hover{ background: var(--color-accent); }

/* =========================================================
   READING PROGRESS BAR
   ========================================================= */
.reading-progress{
  position: sticky; top: 0; left:0; height:3px; width:0%;
  background: var(--color-accent); z-index: 60; transition: width .1s linear;
}

/* =========================================================
   TABLE OF CONTENTS
   ========================================================= */
.toc{
  background: var(--color-bg-soft); border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: 16px 20px; margin: 0 0 30px;
}
.toc-toggle{
  width:100%; display:flex; align-items:center; justify-content:space-between;
  background:none; border:none; cursor:pointer; font-weight:700; font-size:.98rem; color: var(--color-text);
  padding: 0;
}
.toc-toggle svg{ transition: transform .2s ease; }
.toc.is-collapsed .toc-toggle svg{ transform: rotate(-90deg); }
.toc.is-collapsed .toc-list{ display:none; }
.toc-list{ list-style:none; margin: 14px 0 0; padding:0; display:flex; flex-direction:column; gap:8px; }
.toc-list a{ color: var(--color-text-muted); font-size:.92rem; }
.toc-list a:hover{ color: var(--color-accent); }
.toc-list .toc-level-3{ padding-left: 18px; }

/* =========================================================
   GALLERY: MASONRY GRID + COVER GRID
   ========================================================= */
.masonry-grid{ column-count: 3; column-gap: 16px; margin: 20px 0; }
.gallery-thumb{
  display:block; width:100%; margin: 0 0 16px; break-inside: avoid; border:none; padding:0; background:none; cursor: zoom-in;
  border-radius: var(--radius-sm); overflow:hidden;
}
.gallery-thumb img{ width:100%; height:auto; display:block; transition: transform .3s ease; }
.gallery-thumb:hover img{ transform: scale(1.03); }
@media (max-width: 900px){ .masonry-grid{ column-count: 2; } }
@media (max-width: 560px){ .masonry-grid{ column-count: 1; } }

.gallery-filter-row{ display:flex; gap:10px; flex-wrap:wrap; margin-top:18px; }
.gallery-filter-row .btn{ padding: 8px 18px; font-size:.85rem; }

.gallery-cover-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:20px; padding: 10px 0 60px; }
.gallery-cover-card{
  position:relative; display:block; border-radius: var(--radius-md); overflow:hidden; aspect-ratio: 4/3;
}
.gallery-cover-card img{ width:100%; height:100%; object-fit:cover; transition: transform .3s ease; }
.gallery-cover-card:hover img{ transform: scale(1.05); }
.gallery-cover-title{
  position:absolute; left:0; right:0; bottom:0; padding: 30px 16px 14px;
  background: linear-gradient(to top, rgba(10,12,18,.85), transparent);
  color:#fff; font-family: var(--font-display); font-weight:700; font-size:1.05rem;
}
@media (max-width: 900px){ .gallery-cover-grid{ grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px){ .gallery-cover-grid{ grid-template-columns: 1fr; } }

.home-gallery{ padding: var(--space-md) 0 var(--space-lg); }
.home-gallery--small .gallery-photo-track{ padding-bottom: 8px; }
.gallery-photo-carousel-item{
  flex: 0 0 auto; width: 220px; aspect-ratio: 1/1; scroll-snap-align: start;
  border-radius: var(--radius-md); overflow:hidden; display:block; cursor: zoom-in;
}
.gallery-photo-carousel-item img{ width:100%; height:100%; object-fit:cover; transition: transform .3s ease; }
.gallery-photo-carousel-item:hover img{ transform: scale(1.05); }
@media (max-width: 560px){ .gallery-photo-carousel-item{ width: 160px; } }
.home-gallery--small .masonry-grid{ column-count: 4; }
@media (max-width: 900px){ .home-gallery--small .masonry-grid{ column-count: 2; } }

/* =========================================================
   FEATURED POST CAROUSEL (big image + colored info panel)
   ========================================================= */
.featured-carousel{ max-width: var(--container); margin: 0 auto; padding: var(--space-md) 24px 0; }
.featured-carousel-track{
  display:flex; overflow-x:auto; scroll-snap-type: x mandatory;
  border-radius: var(--radius-lg); scrollbar-width: none;
}
.featured-carousel-track::-webkit-scrollbar{ display:none; }
.featured-slide{
  flex: 0 0 100%; scroll-snap-align: start;
  display:grid; grid-template-columns: 1fr 1fr; min-height: 420px;
  border-radius: var(--radius-lg); overflow:hidden;
}
.featured-slide-media{ display:block; }
.featured-slide-media img{ width:100%; height:100%; object-fit:cover; display:block; }
.featured-slide-panel{ padding: 48px; display:flex; flex-direction:column; justify-content:center; gap:16px; color:#fff; }
.featured-slide-badge{
  display:inline-block; width:fit-content; background:#F5D742; color:#1B2033;
  font-size:.72rem; font-weight:700; letter-spacing:.05em; padding:5px 12px; border-radius:6px;
}
.featured-slide-panel h2{ color:#fff; font-size: clamp(1.6rem, 1.3rem + 1.3vw, 2.2rem); margin:0; }
.featured-slide-panel h2 a{ color:#fff; }
.featured-slide-panel p{ color: rgba(255,255,255,.82); margin:0; max-width: 460px; }
.featured-slide-author{ display:flex; align-items:center; gap:12px; padding-top:14px; border-top: 1px solid rgba(255,255,255,.22); }
.featured-slide-author img{ border-radius:50%; }
.featured-slide-author strong{ display:block; font-size:.9rem; }
.featured-slide-author span{ font-size:.8rem; color: rgba(255,255,255,.7); }
.featured-carousel-dots{ display:flex; justify-content:center; gap:8px; margin-top:16px; }
.featured-dot{ width:8px; height:8px; border-radius:50%; border:none; background: var(--color-border); cursor:pointer; padding:0; }
.featured-dot.is-active{ background: var(--color-accent); width:20px; border-radius:4px; transition: width .2s ease; }
@media (max-width: 780px){
  .featured-slide{ grid-template-columns: 1fr; min-height:auto; }
  .featured-slide-media{ aspect-ratio: 16/9; }
  .featured-slide-panel{ padding: 28px; }
}

/* =========================================================
   JOURNAL LIST (compact two-column blog listing)
   ========================================================= */
.journal-section{ padding: var(--space-lg) 0 var(--space-xl); }
.journal-grid{ display:grid; grid-template-columns: 1fr 1fr; gap: 32px 40px; }
.journal-item{ display:flex; gap:16px; align-items:flex-start; }
.journal-item-media{ flex:0 0 auto; width:110px; height:110px; border-radius: var(--radius-sm); overflow:hidden; }
.journal-item-media img{ width:100%; height:100%; object-fit:cover; }
.journal-item-body{ flex:1; min-width:0; }
.journal-item-eyebrow{
  display:flex; align-items:center; gap:8px; font-size:.72rem; font-weight:700; letter-spacing:.05em;
  color: var(--color-text-muted); text-transform:uppercase; margin-bottom:6px;
}
.journal-featured-badge{ background:#F5D742; color:#1B2033; padding:3px 8px; border-radius:5px; letter-spacing:.03em; }
.journal-item-body h3{ font-size:1.05rem; margin:0 0 6px; line-height:1.3; }
.journal-item-body h3 a:hover{ color: var(--color-accent); }
.journal-item-meta{ display:flex; flex-direction:column; gap:2px; font-size:.82rem; color: var(--color-text-muted); }
.journal-item-author{ font-weight:600; color: var(--color-text); }
@media (max-width: 780px){
  .journal-grid{ grid-template-columns: 1fr; }
}
@media (max-width: 480px){
  .journal-item-media{ width:80px; height:80px; }
}

/* =========================================================
   ABOUT BAND (compact homepage intro)
   ========================================================= */
.about-band{
  display:flex; align-items:center; gap:24px; flex-wrap:wrap;
  background: var(--color-bg-soft); border-radius: var(--radius-lg);
  padding: 24px 28px; margin: 10px auto 50px;
}
.about-band-avatar{ width:64px; height:64px; border-radius:50%; overflow:hidden; flex:0 0 auto; border:3px solid var(--color-card); }
.about-band-avatar img{ width:100%; height:100%; object-fit:cover; }
.about-band-body{ flex:1 1 320px; min-width:0; }
.about-band-body h3{ font-size:1.1rem; margin-bottom:4px; }
.about-band-body p{ margin:0; color: var(--color-text-muted); font-size:.92rem; }
.about-band-body .signoff{ font-family: var(--font-display); font-style: italic; color: var(--color-accent); }
.about-band-social{ display:flex; align-items:center; gap:10px; flex:0 0 auto; }
.about-band-social a:not(.btn){
  width:34px; height:34px; border-radius:50%; background: var(--color-navy); color:#fff;
  display:flex; align-items:center; justify-content:center; transition: background .15s ease;
}
.about-band-social a:not(.btn):hover{ background: var(--color-accent); }
@media (max-width: 700px){
  .about-band{ flex-direction:column; text-align:center; }
  .about-band-social{ justify-content:center; flex-wrap:wrap; }
}

/* =========================================================
   BLOG CAROUSEL (native CSS scroll-snap; buttons enhance, not require)
   ========================================================= */
.blog-carousel{ padding: 10px 0 50px; }
.carousel-controls{ display:flex; gap:8px; }
.carousel-btn{
  width:38px; height:38px; border-radius:50%; border:1px solid var(--color-border); background: var(--color-card);
  color: var(--color-text); cursor:pointer; font-size:1rem; display:flex; align-items:center; justify-content:center;
  transition: background .15s ease, color .15s ease;
}
.carousel-btn:hover{ background: var(--color-accent); color:#fff; border-color: var(--color-accent); }
.carousel-track{
  display:flex; gap:20px; overflow-x:auto; scroll-snap-type: x proximity; padding-bottom: 8px;
  scrollbar-width: thin;
}
.carousel-track::-webkit-scrollbar{ height:6px; }
.carousel-track::-webkit-scrollbar-thumb{ background: var(--color-border); border-radius:3px; }
.carousel-card{
  flex: 0 0 auto; width: 280px; scroll-snap-align: start;
  background: var(--color-card); border:1px solid var(--color-border); border-radius: var(--radius-md); overflow:hidden;
}
.carousel-card-media{ display:block; aspect-ratio: 16/9; overflow:hidden; }
.carousel-card-media img{ width:100%; height:100%; object-fit:cover; }
.carousel-card-body{ padding: 16px; }
.carousel-card-body h3{ font-size:1rem; margin: 6px 0 8px; }
.carousel-card-meta{ font-size:.78rem; color: var(--color-text-muted); }
@media (max-width: 560px){ .carousel-card{ width: 240px; } }

/* =========================================================
   DEDICATED BLOG GRID + CATEGORY FILTER TABS
   ========================================================= */
.home-blog-dedicated{ padding: 10px 0 50px; }
.blog-filter-row{ display:flex; gap:8px; flex-wrap:wrap; margin: 6px 0 28px; }
.blog-filter-tab{
  padding: 8px 18px; border-radius:999px; border:1px solid var(--color-border); background: var(--color-card);
  color: var(--color-text-muted); font-size:.85rem; font-weight:600; cursor:pointer; transition: .15s ease;
}
.blog-filter-tab:hover{ border-color: var(--color-accent); color: var(--color-accent); }
.blog-filter-tab.is-active{ background: var(--color-accent); border-color: var(--color-accent); color:#fff; }
.home-blog-grid-full{ display:grid; grid-template-columns: repeat(3, 1fr); gap:24px; }
.home-blog-grid-full .post-card[hidden]{ display:none; }
@media (max-width: 980px){ .home-blog-grid-full{ grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px){ .home-blog-grid-full{ grid-template-columns: 1fr; } }

/* =========================================================
   SUPPORT / DONATIONS BAND
   ========================================================= */
.support-band{
  display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap;
  background: var(--color-navy); color:#fff;
  border-radius: var(--radius-lg);
  padding: var(--space-md) 32px;
  margin: 10px auto var(--space-lg);
}
.support-band-copy{ max-width: 520px; }
.support-band-copy h3{ color:#fff; font-size:1.3rem; margin: 4px 0 6px; }
.support-band-copy p{ color:#B9BFCF; margin:0; font-size:.92rem; }
.support-band-buttons{ display:flex; gap:12px; flex-wrap:wrap; }
.support-btn{ display:inline-flex; align-items:center; gap:8px; }
.support-btn--kofi{ background:#FF5E5B; color:#fff; }
.support-btn--kofi:hover{ background:#e84b48; color:#fff; }
.support-btn--paypal{ background:#0070BA; color:#fff; }
.support-btn--paypal:hover{ background:#005a94; color:#fff; }
@media (max-width: 700px){ .support-band{ flex-direction:column; text-align:center; } }

.kofi-inline-support{ margin: var(--space-md) 0; padding-top: var(--space-md); border-top: 1px solid var(--color-border); }
.gallery-share-wrap{ padding-bottom: var(--space-lg); }

/* =========================================================
   LIVE SEARCH DROPDOWN
   ========================================================= */
.live-search-results{
  position:absolute; margin-top: 6px; width: 100%; max-width: 480px;
  background: var(--color-card); border:1px solid var(--color-border); border-radius: var(--radius-md);
  box-shadow: 0 12px 32px rgba(0,0,0,.12); z-index: 80; max-height: 400px; overflow-y:auto;
}
.pyroadmaps-live-search-form{ position:relative; }
.live-search-list{ list-style:none; margin:0; padding:6px; }
.live-search-item a{ display:flex; align-items:center; gap:12px; padding: 8px; border-radius: var(--radius-sm); }
.live-search-item a:hover{ background: var(--color-bg-soft); }
.live-search-item img{ width:44px; height:44px; object-fit:cover; border-radius:6px; flex:0 0 auto; }
.live-search-noimg{ width:44px; height:44px; border-radius:6px; background: var(--color-bg-soft); flex:0 0 auto; }
.live-search-item-body{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.live-search-item-title{ font-size:.9rem; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.live-search-item-meta{ font-size:.75rem; color: var(--color-text-muted); text-transform:uppercase; letter-spacing:.04em; }
.live-search-empty{ padding: 16px; font-size:.88rem; color: var(--color-text-muted); text-align:center; }

/* =========================================================
   LIGHTBOX
   ========================================================= */
.lightbox{
  position: fixed; inset:0; z-index: 500; background: rgba(6,8,12,.92);
  display:flex; align-items:center; justify-content:center;
}
.lightbox[hidden]{ display:none; }
.lightbox-image{ max-width: 90vw; max-height: 85vh; border-radius: 6px; }
.lightbox-close, .lightbox-prev, .lightbox-next{
  position:absolute; background: rgba(255,255,255,.1); color:#fff; border:none; cursor:pointer;
  width:44px; height:44px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:1.3rem; transition: background .15s ease;
}
.lightbox-close:hover, .lightbox-prev:hover, .lightbox-next:hover{ background: rgba(255,255,255,.22); }
.lightbox-close{ top:20px; right:20px; }
.lightbox-prev{ left:20px; top:50%; transform: translateY(-50%); }
.lightbox-next{ right:20px; top:50%; transform: translateY(-50%); }
.lightbox-counter{ position:absolute; bottom:20px; left:50%; transform: translateX(-50%); color:#fff; font-size:.85rem; opacity:.8; }
@media (max-width: 640px){
  .lightbox-prev, .lightbox-next{ width:36px; height:36px; }
}
