/*
Theme Name: Kava Drinks v3
Theme URI: https://example.com/kava-drinks-v3
Author: CBD Marketing Solutions
Author URI: https://example.com
Description: Kava Drinks v3 — a clean, editorial blog theme for a Pacific kava knowledge hub. Consistent readable image heroes with a brand hue overlay, a redesigned single-post hero with author box, an auto Table-of-Contents linker (H2s), site-wide post controls in the Customizer (author box, TOC, share, related, reading time), a responsive latest-posts slider, working desktop dropdown menus, a mobile hamburger drawer, bulletproof image sizing, and free-Elementor body-only pages. Pairs with the "Kava Drinks Addons" companion plugin, which builds the Home, Journal, About, Write for Us, Contact and Privacy pages. Installs alongside your existing themes with a unique slug.
Version: 3.0.1
Requires at least: 5.9
Tested up to: 6.6
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: kava-drinks
Tags: blog, editorial, one-column, two-columns, right-sidebar, custom-menu, featured-images, threaded-comments, translation-ready, full-width-template, block-styles
*/

/* ==========================================================================
   1. Design tokens — extracted verbatim from the source design
   ========================================================================== */
:root{
  /* fonts (system stacks — no external fonts loaded) */
  --font-serif:"Iowan Old Style","Palatino Linotype","Book Antiqua",Georgia,"Times New Roman",serif;
  --font-sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;

  /* article reading rhythm */
  --article-font-size:1.0625rem;   /* 17px */
  --article-line-height:1.7;
  --article-measure:46rem;

  /* surfaces & text (reading theme) */
  --page-bg:#d3e0cd;
  --surface:#f5faf2;
  --surface-muted:#e4eede;
  --border:#c4d0bc;
  --border-strong:#b1bfa6;
  --text:#1c1b18;
  --text-muted:#55524a;
  --text-faint:#86816f;
  --heading:#14130f;
  --link:#2a5db0;
  --link-hover:#17407f;
  --accent:#3b6b4a;
  --accent-soft:#dcead9;
  --infobox-bg:#eaf2e6;
  --adslot-border:#c8d3c1;
  --adslot-bg:#edf3e9;

  /* landing / marketing palette */
  --cream:#faf6ea;
  --tint:#f3eee0;
  --card:#fdfbf2;
  --l-border:#e6ded0;
  --ink:#1e2717;
  --l-muted:#6c7360;
  --leaf:#568c3a;
  --leaf-deep:#39621f;
  --leaf-grad:linear-gradient(135deg,#72b246,#3f7a29);
  --forest:#123f26;
  --lime:#c8ec54;
  --footer-bg:#1b241a;
  --footer-accent:#a7d36b;

  /* shape & shadow */
  --radius:14px;
  --radius-lg:22px;
  --radius-pill:999px;
  --shadow-sm:0 1px 2px rgba(20,19,15,.06),0 1px 3px rgba(20,19,15,.05);
  --shadow-md:0 6px 18px rgba(20,19,15,.08);
  --shadow-lg:0 18px 48px rgba(6,26,15,.16);
  --wrap:1200px;
  --wrap-wide:1400px;
}

/* ==========================================================================
   2. Reset / base
   ========================================================================== */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--page-bg);
  color:var(--text);
  font-family:var(--font-sans);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;             /* no horizontal scroll, ever */
}
img,svg,video,canvas{max-width:100%;height:auto;display:block}
figure{margin:0}
a{color:var(--link);text-decoration:none}
a:hover{color:var(--link-hover);text-decoration:underline}
h1,h2,h3,h4,h5,h6{
  font-family:var(--font-serif);
  color:var(--heading);
  line-height:1.2;
  margin:0 0 .5em;
  font-weight:650;
}
p{margin:0 0 1.1em}
ul,ol{margin:0 0 1.1em;padding-left:1.4em}
li{margin:.3em 0}
blockquote{margin:1.4em 0;padding:.4em 1.2em;border-left:4px solid var(--accent);color:var(--text-muted);font-style:italic}
code,pre,kbd{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
pre{background:var(--ink);color:#eaf2e6;padding:1.1em 1.3em;border-radius:var(--radius);overflow:auto;font-size:.9em}
code{background:var(--surface-muted);padding:.12em .4em;border-radius:5px;font-size:.9em}
pre code{background:none;padding:0}
hr{border:0;border-top:1px solid var(--border);margin:2em 0}
table{border-collapse:collapse;width:100%;margin:0 0 1.4em}
th,td{border:1px solid var(--border);padding:.55em .75em;text-align:left}
th{background:var(--surface-muted);font-family:var(--font-sans)}
::selection{background:var(--accent-soft);color:var(--heading)}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
mark{background:var(--lime);color:var(--ink);padding:0 .2em}

/* accessibility helpers */
.screen-reader-text{
  border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;width:1px;
  margin:-1px;overflow:hidden;padding:0;position:absolute!important;word-wrap:normal!important;
}
.skip-link{
  position:absolute;left:-9999px;top:0;z-index:100000;background:var(--accent);color:#fff;
  padding:.7em 1.2em;border-radius:0 0 var(--radius) 0;font-weight:700;
}
.skip-link:focus{left:0;color:#fff;text-decoration:none}

/* ==========================================================================
   3. Layout primitives
   ========================================================================== */
.kd-wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:clamp(1rem,4vw,1.5rem)}
.kd-wrap--wide{max-width:var(--wrap-wide)}
.kd-wrap--narrow{max-width:var(--article-measure)}
.kd-site{min-height:100vh;display:flex;flex-direction:column}
.kd-main{flex:1 0 auto;width:100%;padding-block:clamp(1.75rem,5vw,3rem)}
.kd-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:clamp(1.5rem,4vw,3rem);align-items:start}
.kd-layout--full{grid-template-columns:minmax(0,1fr)}
.kd-content{min-width:0}

/* ==========================================================================
   4. Header + navigation (theme-owned; styled here)
   ========================================================================== */
.kd-header{
  position:sticky;top:0;z-index:60;
  border-bottom:1px solid var(--border);
  background:color-mix(in srgb,var(--surface) 92%,transparent);
  -webkit-backdrop-filter:saturate(140%) blur(10px);
  backdrop-filter:saturate(140%) blur(10px);
}
/* solid fallback where color-mix / backdrop-filter aren't supported */
@supports not (backdrop-filter:blur(1px)){.kd-header{background:var(--surface)}}
.kd-header__bar{
  display:flex;align-items:center;gap:clamp(.5rem,2vw,1rem);
  padding-block:.6rem;min-height:62px;
}
.kd-brand{display:inline-flex;align-items:center;gap:.6rem;flex:0 1 auto;min-width:0}
.kd-brand:hover{text-decoration:none}
.kd-brand__mark{
  width:40px;height:40px;flex:0 0 40px;border-radius:12px;background:var(--accent);
  display:grid;place-items:center;box-shadow:var(--shadow-sm);
}
.kd-brand__mark svg{width:23px;height:23px}
.kd-brand__names{display:flex;flex-direction:column;justify-content:center;line-height:1.02;min-width:0}
.kd-brand__text{font-family:var(--font-serif);font-weight:700;font-size:1.3rem;letter-spacing:-.015em;color:var(--heading);line-height:1.05;white-space:nowrap}
.kd-brand__text b{color:var(--accent);font-weight:700}
.kd-brand__tag{display:block;font-family:var(--font-sans);font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint);margin-top:2px;font-weight:600;white-space:nowrap}

.kd-primary-nav{margin-left:auto;min-width:0}
.kd-primary-nav>ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:.2rem;flex-wrap:nowrap}
.kd-primary-nav li{margin:0;position:relative}
.kd-primary-nav a{
  display:block;position:relative;padding:.5rem .78rem;border-radius:var(--radius-pill);white-space:nowrap;
  color:var(--text-muted);font-weight:600;font-size:.92rem;font-family:var(--font-sans);
  transition:background .15s,color .15s;
}
.kd-primary-nav a:hover{background:var(--accent-soft);color:var(--accent);text-decoration:none}
.kd-primary-nav .current-menu-item>a,
.kd-primary-nav .current_page_item>a,
.kd-primary-nav .current-menu-parent>a,
.kd-primary-nav .current-menu-ancestor>a{background:var(--accent);color:#fff}

/* --- desktop dropdowns -------------------------------------------------- */
/* caret on parents */
.kd-primary-nav .menu-item-has-children>a{padding-right:1.7rem}
.kd-primary-nav .menu-item-has-children>a::after{
  content:"";position:absolute;right:.72rem;top:50%;width:.42em;height:.42em;
  border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  transform:translateY(-70%) rotate(45deg);opacity:.7;
  transition:transform .2s ease,opacity .2s ease;
}
.kd-primary-nav .menu-item-has-children:hover>a::after,
.kd-primary-nav .menu-item-has-children:focus-within>a::after,
.kd-primary-nav .menu-item-has-children.is-open>a::after{transform:translateY(-25%) rotate(225deg);opacity:1}

.kd-primary-nav .sub-menu{
  list-style:none;margin:0;padding:.4rem;
  position:absolute;top:calc(100% + .55rem);left:0;z-index:30;
  min-width:14rem;max-width:min(18rem,80vw);
  display:flex;flex-direction:column;align-items:stretch;gap:.1rem;
  background:var(--surface);border:1px solid var(--border);border-radius:14px;
  box-shadow:var(--shadow-lg);
  opacity:0;visibility:hidden;transform:translateY(-6px);pointer-events:none;
  transition:opacity .18s ease,transform .18s ease,visibility 0s linear .18s;
}
/* invisible bridge so the pointer can travel across the gap without closing */
.kd-primary-nav .sub-menu::before{content:"";position:absolute;left:0;right:0;top:-.6rem;height:.6rem}
.kd-primary-nav li:hover>.sub-menu,
.kd-primary-nav li:focus-within>.sub-menu,
.kd-primary-nav li.is-open>.sub-menu{
  opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto;transition-delay:0s;
}
.kd-primary-nav .sub-menu a{
  white-space:normal;border-radius:9px;padding:.55rem .7rem;font-size:.9rem;
  font-weight:600;color:var(--text);line-height:1.35;
}
.kd-primary-nav .sub-menu a:hover{background:var(--accent-soft);color:var(--accent)}
.kd-primary-nav .sub-menu .current-menu-item>a{background:var(--accent);color:#fff}
/* dropdowns near the right edge open leftwards so they never overflow */
.kd-primary-nav>ul>li:nth-last-child(-n+3)>.sub-menu{left:auto;right:0}
/* third level flies out to the side */
.kd-primary-nav .sub-menu .sub-menu{top:-.4rem;left:100%;margin-left:.35rem}
.kd-primary-nav>ul>li:nth-last-child(-n+3) .sub-menu .sub-menu{left:auto;right:100%;margin:0 .35rem 0 0}
.kd-primary-nav .sub-menu .menu-item-has-children>a::after{transform:translateY(-50%) rotate(-45deg)}
.kd-primary-nav .sub-menu .menu-item-has-children:hover>a::after,
.kd-primary-nav .sub-menu .menu-item-has-children.is-open>a::after{transform:translateY(-50%) rotate(135deg)}

.kd-header__search{flex:0 0 auto;margin-left:.35rem}
.kd-search-form{display:flex;align-items:center;gap:.4rem;background:var(--surface-muted);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.28rem .28rem .28rem .85rem}
.kd-search-form input[type=search]{border:0;background:transparent;font:inherit;font-size:.9rem;color:var(--text);width:9rem;max-width:34vw;padding:.28rem 0}
.kd-search-form input[type=search]:focus{outline:none}
.kd-search-form button{border:0;background:var(--accent);color:#fff;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;cursor:pointer;flex:0 0 34px}
.kd-search-form button:hover{background:var(--leaf-deep)}
.kd-search-form button svg{width:16px;height:16px}

/* hamburger toggle (hidden on wide screens, shown by the media query below) */
.kd-hamburger{
  display:none;align-items:center;justify-content:center;
  width:46px;height:46px;min-width:46px;border:1px solid var(--border);border-radius:12px;
  background:var(--surface);color:var(--heading);cursor:pointer;padding:0;flex:0 0 46px;order:-1;
  transition:background .15s,border-color .15s;
}
.kd-hamburger:hover{background:var(--surface-muted);border-color:var(--border-strong)}
.kd-hamburger__box{position:relative;width:22px;height:16px}
.kd-hamburger__box span{position:absolute;left:0;height:2px;width:100%;background:currentColor;border-radius:2px;transition:transform .3s ease,opacity .2s ease,top .3s ease}
.kd-hamburger__box span:nth-child(1){top:0}
.kd-hamburger__box span:nth-child(2){top:7px}
.kd-hamburger__box span:nth-child(3){top:14px}
.kd-hamburger[aria-expanded=true] .kd-hamburger__box span:nth-child(1){top:7px;transform:rotate(45deg)}
.kd-hamburger[aria-expanded=true] .kd-hamburger__box span:nth-child(2){opacity:0}
.kd-hamburger[aria-expanded=true] .kd-hamburger__box span:nth-child(3){top:7px;transform:rotate(-45deg)}

/* slide-down mobile drawer — anchored to the header itself, so it stays
   aligned at every screen size and with the WP admin bar */
.kd-drawer{
  position:absolute;left:0;right:0;top:100%;z-index:5;
  background:var(--surface);border-bottom:1px solid var(--border);
  box-shadow:var(--shadow-lg);
  max-height:min(76vh,34rem);overflow-y:auto;
  transform:translateY(-14px);opacity:0;visibility:hidden;pointer-events:none;
  transition:transform .32s cubic-bezier(.22,1,.36,1),opacity .25s ease,visibility 0s linear .3s;
}
.kd-drawer.is-open{transform:translateY(0);opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s}
.kd-drawer__inner{padding:.5rem clamp(1rem,5vw,1.5rem) 1.4rem}
.kd-drawer nav ul{list-style:none;margin:0;padding:0}
.kd-drawer nav li{margin:0;border-bottom:1px solid var(--border)}
.kd-drawer nav a{display:flex;align-items:center;padding:.85rem .25rem;font-family:var(--font-serif);font-size:1.1rem;color:var(--heading);min-height:46px}
.kd-drawer nav a:hover,.kd-drawer nav .current-menu-item>a{color:var(--accent);text-decoration:none}
.kd-drawer nav .sub-menu{display:block;padding-left:1rem;border-top:1px solid var(--border)}
.kd-drawer nav .sub-menu a{font-size:1rem;color:var(--text-muted);min-height:42px}
.kd-drawer .kd-search-form{margin-top:1.1rem;width:100%}
.kd-drawer .kd-search-form input[type=search]{flex:1;width:auto;max-width:none}
.kd-drawer-backdrop{position:fixed;inset:0;z-index:50;background:rgba(6,26,15,.4);opacity:0;visibility:hidden;transition:opacity .25s ease,visibility 0s linear .25s}
.kd-drawer-backdrop.is-open{opacity:1;visibility:visible;transition-delay:0s}

/* ==========================================================================
   5. Page hero / archive header banner
   ========================================================================== */
.kd-pagehead{
  background:linear-gradient(150deg,var(--forest),#0a2c1a 55%,#061a0f);
  color:#fff;border-radius:var(--radius-lg);overflow:hidden;position:relative;
  padding:clamp(1.75rem,5vw,3rem);margin-bottom:clamp(1.5rem,4vw,2.5rem);
}
.kd-pagehead::after{content:"";position:absolute;inset:0;background:radial-gradient(120% 120% at 80% 10%,rgba(200,236,84,.16),transparent 60%);pointer-events:none}
.kd-pagehead__eyebrow{display:inline-block;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:var(--lime);margin-bottom:.6rem}
.kd-pagehead h1{color:#fff;font-size:clamp(1.9rem,4.5vw,2.9rem);margin:0 0 .3em;max-width:22ch}
.kd-pagehead p{color:rgba(255,255,255,.82);max-width:60ch;margin:0;font-size:1.05rem}
.kd-pagehead a{color:var(--footer-accent)}

/* ==========================================================================
   6. Post grid / cards
   ========================================================================== */
.kd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:clamp(1.25rem,3vw,1.9rem)}
.kd-card{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);
  overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-sm);
  transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;
}
.kd-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:var(--border-strong)}
.kd-card__thumb{position:relative;display:block;aspect-ratio:3/2;background:var(--surface-muted);overflow:hidden}
.kd-card__thumb img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.kd-card:hover .kd-card__thumb img{transform:scale(1.05)}
.kd-card__thumb--placeholder{display:grid;place-items:center;background:linear-gradient(135deg,var(--accent-soft),var(--surface-muted))}
.kd-card__thumb--placeholder svg{width:52px;height:52px;opacity:.5}
.kd-pill{
  display:inline-flex;align-items:center;gap:.35em;
  font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  background:var(--accent);color:#fff;padding:.32em .7em;border-radius:var(--radius-pill);line-height:1;
}
.kd-pill:hover{background:var(--leaf-deep);color:#fff;text-decoration:none}
.kd-card__thumb .kd-pill{position:absolute;left:.85rem;top:.85rem;box-shadow:0 2px 8px rgba(6,26,15,.3)}
.kd-card__body{padding:1.15rem 1.25rem 1.35rem;display:flex;flex-direction:column;gap:.55rem;flex:1}
.kd-card__title{font-size:1.28rem;line-height:1.25;margin:0}
.kd-card__title a{color:var(--heading)}
.kd-card__title a:hover{color:var(--accent);text-decoration:none}
.kd-card__excerpt{color:var(--text-muted);font-size:.96rem;margin:0;flex:1}
.kd-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.82rem;color:var(--text-faint);font-family:var(--font-sans)}
.kd-meta .kd-meta__sep{opacity:.5}
.kd-meta a{color:var(--text-muted)}
.kd-meta__author{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;color:var(--text-muted)}
.kd-meta__author img{width:22px;height:22px;border-radius:50%;object-fit:cover}

/* list layout (author/search) */
.kd-postlist{display:flex;flex-direction:column;gap:1.5rem}
.kd-postrow{
  display:grid;grid-template-columns:220px 1fr;gap:1.4rem;align-items:stretch;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;
  box-shadow:var(--shadow-sm);transition:box-shadow .25s,transform .25s;
}
.kd-postrow:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.kd-postrow__thumb{position:relative;overflow:hidden;background:var(--surface-muted)}
.kd-postrow__thumb img{width:100%;height:100%;object-fit:cover;min-height:160px}
.kd-postrow__body{padding:1.2rem 1.3rem 1.2rem 0;display:flex;flex-direction:column;gap:.55rem}
.kd-postrow__body.is-nothumb{padding-left:1.3rem}
.kd-postrow__title{font-size:1.45rem;margin:0}
.kd-postrow__title a{color:var(--heading)}
.kd-postrow__title a:hover{color:var(--accent);text-decoration:none}

/* ==========================================================================
   6b. Latest-articles slider  ([kava_slider])
   Native CSS scroll-snap: swipe works with no JS. Arrows/dots are enhancement.
   ========================================================================== */
.kd-slider{--kd-slide-gap:clamp(1rem,2.2vw,1.5rem);position:relative}
.kd-slider__head{
  display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;
  margin-bottom:clamp(1rem,2.5vw,1.5rem);flex-wrap:wrap;
}
.kd-slider__heading{min-width:0}
.kd-slider__title{font-size:clamp(1.5rem,3.2vw,2.1rem);margin:0;color:var(--heading)}
.kd-slider__nav{display:flex;gap:.5rem;flex:0 0 auto}
.kd-slider__btn{
  width:44px;height:44px;border-radius:50%;border:1px solid var(--border);
  background:var(--surface);color:var(--heading);cursor:pointer;
  display:grid;place-items:center;transition:background .15s,border-color .15s,opacity .15s;
}
.kd-slider__btn:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:#fff}
.kd-slider__btn:disabled{opacity:.35;cursor:default}
.kd-slider__viewport{
  overflow-x:auto;overflow-y:hidden;
  scroll-snap-type:x mandatory;scroll-behavior:smooth;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;-ms-overflow-style:none;
  /* room for the cards' hover lift + shadow so nothing is clipped */
  margin-inline:-.4rem;padding-inline:.4rem;
}
.kd-slider__viewport::-webkit-scrollbar{display:none}
.kd-slider__viewport:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:var(--radius-lg)}
.kd-slider__track{
  display:flex;gap:var(--kd-slide-gap);list-style:none;margin:0;
  padding:.35rem 0 1rem;
}
.kd-slider__slide{
  flex:0 0 calc((100% - (2 * var(--kd-slide-gap))) / 3);
  scroll-snap-align:start;min-width:0;display:flex;
}
.kd-slider__slide>.kd-card{width:100%}
.kd-slider__dots{display:flex;justify-content:center;gap:.45rem;margin-top:.25rem}
.kd-slider__dot{
  position:relative;
  width:8px;height:8px;padding:0;border:0;border-radius:50%;cursor:pointer;
  background:var(--border-strong);transition:background .2s,width .2s;
}
.kd-slider__dot:hover{background:var(--text-faint)}
.kd-slider__dot.is-active{background:var(--accent);width:22px;border-radius:var(--radius-pill)}
/* invisible 44px hit area so the small dots are still easy to tap */
.kd-slider__dot::before{
  content:"";position:absolute;left:50%;top:50%;
  width:44px;height:44px;transform:translate(-50%,-50%);
}
@media (max-width:1024px){
  .kd-slider__slide{flex-basis:calc((100% - var(--kd-slide-gap)) / 2)}
}
@media (max-width:680px){
  .kd-slider__slide{flex-basis:100%}
  .kd-slider__nav{display:none}   /* swipe is the natural gesture here */
}
@media (prefers-reduced-motion:reduce){
  .kd-slider__viewport{scroll-behavior:auto}
}

/* ==========================================================================
   6c. Blog listing (posts page / Blog template): filter bar + featured lead
   ========================================================================== */
.kd-filterbar{
  display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;
  margin-bottom:clamp(1.25rem,3vw,1.8rem);
}
.kd-filterbar__label{
  font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;
  color:var(--text-faint);margin-right:.35rem;
}
.kd-filterbar a{
  display:inline-flex;align-items:center;min-height:36px;padding:.4rem .85rem;
  border-radius:var(--radius-pill);border:1px solid var(--border);
  background:var(--surface);color:var(--text-muted);
  font-size:.85rem;font-weight:600;font-family:var(--font-sans);
  transition:background .15s,color .15s,border-color .15s;
}
.kd-filterbar a:hover{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent);text-decoration:none}
.kd-filterbar a.is-active{background:var(--accent);border-color:var(--accent);color:#fff}

/* featured lead post — reuses .kd-postrow but bigger */
.kd-featured{margin-bottom:clamp(1.5rem,4vw,2.4rem)}
.kd-featured .kd-postrow{grid-template-columns:1.15fr 1fr;align-items:stretch}
.kd-featured .kd-postrow__thumb{aspect-ratio:16/10}
.kd-featured .kd-postrow__thumb img{min-height:100%}
.kd-featured .kd-postrow__body{padding:clamp(1.3rem,3vw,2rem);justify-content:center;gap:.7rem}
.kd-featured .kd-postrow__title{font-size:clamp(1.5rem,3vw,2.05rem);line-height:1.2}
.kd-featured__flag{
  display:inline-flex;align-items:center;gap:.4em;align-self:flex-start;
  font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;
  color:var(--accent);
}
.kd-featured__flag::before{content:"";width:1.6rem;height:2px;background:var(--accent);border-radius:2px}
.kd-featured .kd-postrow__excerpt{color:var(--text-muted);font-size:1.02rem;line-height:1.6;margin:0}
/* pills/meta must not stretch to full width inside the flex column */
.kd-postrow__body .kd-pill{align-self:flex-start}
.kd-postrow__body .kd-meta{margin-top:.15rem}
/* the Blog template's optional page-content intro */
.kd-blog-intro{margin-bottom:clamp(1.5rem,4vw,2.2rem)}
@media (max-width:768px){
  .kd-featured .kd-postrow{grid-template-columns:1fr}
  .kd-featured .kd-postrow__thumb{aspect-ratio:16/9}
}

/* ==========================================================================
   7. Numbered pagination
   ========================================================================== */
.kd-pagination{margin-top:clamp(2rem,5vw,3rem)}
.kd-pagination .nav-links,.kd-pagination .page-numbers{display:flex}
.kd-pagination .nav-links{flex-wrap:wrap;gap:.4rem;justify-content:center;align-items:center}
.kd-pagination .page-numbers{
  min-width:44px;height:44px;padding:0 .75rem;border-radius:11px;border:1px solid var(--border);
  background:var(--surface);color:var(--text-muted);font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;
}
a.page-numbers:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--border-strong);text-decoration:none}
.kd-pagination .page-numbers.current{background:var(--accent);border-color:var(--accent);color:#fff}
.kd-pagination .page-numbers.dots{border-color:transparent;background:transparent}

/* generic prev/next (posts nav) */
.kd-postnav{display:flex;justify-content:space-between;gap:1rem;margin-top:2rem;flex-wrap:wrap}
.kd-postnav a{color:var(--accent);font-weight:600}

/* ==========================================================================
   8. Single post
   ========================================================================== */
.kd-article{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}
.kd-article__hero{position:relative;aspect-ratio:16/7;background:var(--surface-muted);overflow:hidden}
.kd-article__hero img{width:100%;height:100%;object-fit:cover}
.kd-article__inner{padding:clamp(1.4rem,4vw,2.6rem)}
.kd-article__header{max-width:var(--article-measure);margin-inline:auto;margin-bottom:1.4rem}
.kd-article__cat{margin-bottom:.9rem;display:flex;gap:.4rem;flex-wrap:wrap}
.kd-article__title{font-size:clamp(1.9rem,4.5vw,2.9rem);line-height:1.12;margin:0 0 .5em}
.kd-article__meta{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:.85rem 0;margin-top:1rem}

/* the reading column (prose) */
.kd-prose{max-width:var(--article-measure);margin-inline:auto;font-size:var(--article-font-size);line-height:var(--article-line-height);color:var(--text)}
.kd-prose>*{margin-bottom:1.1em}
.kd-prose p{margin:0 0 1.1em}
.kd-prose h2{font-family:var(--font-serif);color:var(--heading);border-bottom:1px solid var(--border);margin:1.8em 0 .5em;padding-bottom:.25em;font-size:1.6em;font-weight:600}
.kd-prose h3{font-family:var(--font-serif);color:var(--heading);margin:1.4em 0 .4em;font-size:1.25em;font-weight:600}
.kd-prose h4{margin:1.3em 0 .3em;font-size:1.08em}
.kd-prose ul{margin:0 0 1.1em;padding-left:1.4em;list-style:outside disc}
.kd-prose ol{margin:0 0 1.1em;padding-left:1.5em}
.kd-prose li{margin:.3em 0}
.kd-prose a{color:var(--link);text-decoration:none;text-underline-offset:2px}
.kd-prose a:hover{color:var(--link-hover);text-decoration:underline}
.kd-prose strong{color:var(--heading);font-weight:650}
.kd-prose img{border-radius:var(--radius);margin-block:1.4em}
.kd-prose blockquote{border-left:4px solid var(--accent);background:var(--infobox-bg);border-radius:0 var(--radius) var(--radius) 0;padding:1em 1.3em;font-style:normal;color:var(--text)}
.kd-prose figure{margin:1.6em 0}
.kd-prose figcaption,.wp-caption-text{font-size:.85rem;color:var(--text-faint);text-align:center;margin-top:.5em;font-family:var(--font-sans)}
.kd-prose>*:first-child{margin-top:0}

/* WP alignments */
.aligncenter{margin-inline:auto;text-align:center}
.alignleft{float:left;margin:.4em 1.4em 1em 0;max-width:50%}
.alignright{float:right;margin:.4em 0 1em 1.4em;max-width:50%}
.kd-prose .alignwide{width:min(100%,54rem);max-width:none;margin-inline:auto}
.kd-prose .alignfull{width:auto;margin-inline:calc(50% - 50vw);max-width:100vw}
.wp-caption{max-width:100%}
.sticky-badge{display:inline-block;background:var(--lime);color:var(--ink);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:.25em .6em;border-radius:var(--radius-pill)}

/* tags */
.kd-tags{max-width:var(--article-measure);margin:2.2rem auto 0;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.kd-tags__label{font-weight:700;color:var(--text-muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;margin-right:.3rem}
.kd-tag{display:inline-block;padding:.35em .8em;border-radius:var(--radius-pill);background:var(--surface-muted);border:1px solid var(--border);color:var(--text-muted);font-size:.85rem}
.kd-tag:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--border-strong);text-decoration:none}

/* share */
.kd-share{max-width:var(--article-measure);margin:1.6rem auto 0;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.kd-share__label{font-weight:700;color:var(--text-muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.06em}
.kd-share a{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--surface-muted);border:1px solid var(--border);color:var(--text-muted)}
.kd-share a:hover{background:var(--accent);border-color:var(--accent);color:#fff;text-decoration:none}
.kd-share a svg{width:18px;height:18px}

/* author box */
.kd-authorbox{max-width:var(--article-measure);margin:2.4rem auto 0;display:flex;gap:1.2rem;align-items:flex-start;background:var(--infobox-bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.4rem}
.kd-authorbox__avatar img{width:64px;height:64px;border-radius:50%;object-fit:cover}
.kd-authorbox__name{font-family:var(--font-serif);font-size:1.2rem;color:var(--heading);margin:0 0 .2em}
.kd-authorbox__name a{color:var(--heading)}
.kd-authorbox__bio{margin:.2em 0 .4em;color:var(--text-muted);font-size:.95rem}
.kd-authorbox__link{font-size:.85rem;font-weight:700;color:var(--accent)}

/* prev / next single nav */
.kd-adjacent{max-width:var(--article-measure);margin:2.4rem auto 0;display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.kd-adjacent a{display:block;padding:1rem 1.2rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text)}
.kd-adjacent a:hover{border-color:var(--border-strong);background:var(--surface-muted);text-decoration:none}
.kd-adjacent .kd-adjacent__dir{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-faint);font-weight:700}
.kd-adjacent .kd-adjacent__title{font-family:var(--font-serif);color:var(--heading);font-size:1.05rem;display:block;margin-top:.3em}
.kd-adjacent .next{text-align:right}

/* related posts */
.kd-related{margin-top:clamp(2.5rem,6vw,4rem)}
.kd-related__head{max-width:var(--article-measure);margin:0 auto 1.4rem}
.kd-related__head h2{font-size:1.6rem;margin:0;position:relative;padding-bottom:.4rem;border-bottom:2px solid var(--accent);display:inline-block}

/* ==========================================================================
   9. Comments
   ========================================================================== */
.kd-comments{max-width:var(--article-measure);margin:clamp(2.5rem,6vw,4rem) auto 0}
.kd-comments__title{font-size:1.5rem;margin-bottom:1.2rem;padding-bottom:.4rem;border-bottom:2px solid var(--accent);display:inline-block}
.kd-comments .commentlist,.kd-comments ol.comment-list{list-style:none;margin:0;padding:0}
.kd-comments .comment{margin:0 0 1.2rem}
.kd-comments .children{list-style:none;margin:1.2rem 0 0;padding-left:clamp(1rem,4vw,2.2rem);border-left:2px solid var(--border)}
.kd-comment-body{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.2rem 1.3rem}
.kd-comment-head{display:flex;align-items:center;gap:.7rem;margin-bottom:.5rem}
.kd-comment-head img{border-radius:50%;width:44px;height:44px}
.kd-comment-author{font-weight:700;color:var(--heading);font-family:var(--font-serif)}
.kd-comment-meta{font-size:.78rem;color:var(--text-faint)}
.kd-comment-meta a{color:var(--text-faint)}
.comment-content{color:var(--text)}
.comment-content p{margin:0 0 .7em}
.comment-reply-link,.kd-comments .reply a{display:inline-block;margin-top:.5rem;font-size:.82rem;font-weight:700;color:var(--accent);padding:.25rem .7rem;border:1px solid var(--border);border-radius:var(--radius-pill)}
.comment-reply-link:hover{background:var(--accent-soft);text-decoration:none}
.bypostauthor>.kd-comment-body{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}
.comment-respond{margin-top:1.8rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:clamp(1.2rem,4vw,1.8rem)}
.comment-respond .comment-reply-title{font-size:1.25rem;margin-top:0}
.comment-form{display:grid;gap:1rem}
.comment-form p{margin:0}
.comment-form label{display:block;font-weight:600;font-size:.88rem;color:var(--text-muted);margin-bottom:.3rem}
.comment-form-author,.comment-form-email,.comment-form-url{display:grid}
.comment-notes,.form-submit{grid-column:1/-1}

/* form controls (shared) */
input[type=text],input[type=email],input[type=url],input[type=search],input[type=tel],input[type=number],input[type=password],textarea,select{
  width:100%;font:inherit;font-size:.98rem;color:var(--text);
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:.7rem .85rem;transition:border-color .15s,box-shadow .15s;
}
textarea{min-height:140px;resize:vertical}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.kd-btn,button[type=submit],input[type=submit],.comment-form input[type=submit]{
  display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  font:inherit;font-weight:700;font-size:.98rem;line-height:1;cursor:pointer;
  min-height:46px;padding:.8rem 1.5rem;border-radius:var(--radius-pill);
  background:var(--accent);color:#fff;border:1px solid var(--accent);
  transition:transform .12s,background .15s,box-shadow .15s;text-decoration:none;
}
.kd-btn:hover,button[type=submit]:hover,input[type=submit]:hover{background:var(--leaf-deep);border-color:var(--leaf-deep);color:#fff;transform:translateY(-1px);text-decoration:none}
.kd-btn--ghost{background:transparent;color:var(--accent);border-color:var(--border-strong)}
.kd-btn--ghost:hover{background:var(--accent-soft);color:var(--accent)}
.kd-btn--lg{min-height:52px;padding:.9rem 1.9rem;font-size:1.02rem}

/* ==========================================================================
   10. Sidebar + widgets
   ========================================================================== */
.kd-sidebar{position:sticky;top:78px;display:flex;flex-direction:column;gap:1.4rem}
.kd-widget{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.3rem 1.35rem;box-shadow:var(--shadow-sm)}
.kd-widget .widget-title,.kd-widget-title{font-family:var(--font-serif);font-size:1.15rem;color:var(--heading);margin:0 0 1rem;padding-bottom:.5rem;border-bottom:2px solid var(--accent);display:block}
.kd-widget ul{list-style:none;margin:0;padding:0}
.kd-widget li{margin:0;padding:.5rem 0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;gap:.6rem;align-items:baseline}
.kd-widget li:last-child{border-bottom:0}
.kd-widget li a{color:var(--text-muted);font-weight:500}
.kd-widget li a:hover{color:var(--accent);text-decoration:none}
.kd-widget .children{padding-left:1rem;width:100%}
.kd-widget select{margin-top:.2rem}
.kd-widget .post-date,.kd-widget .rss-date{color:var(--text-faint);font-size:.8rem}

/* about widget / promo card */
.kd-aboutcard{background:linear-gradient(160deg,var(--forest),#0a2c1a);color:#fff;border:0}
.kd-aboutcard .kd-widget-title{color:#fff;border-color:var(--lime)}
.kd-aboutcard p{color:rgba(255,255,255,.85);font-size:.95rem}

/* tag cloud */
.tagcloud,.wp-block-tag-cloud{display:flex;flex-wrap:wrap;gap:.45rem}
.tagcloud a,.wp-block-tag-cloud a{display:inline-block;font-size:.82rem!important;padding:.3em .75em;border-radius:var(--radius-pill);background:var(--surface-muted);border:1px solid var(--border);color:var(--text-muted)}
.tagcloud a:hover{background:var(--accent-soft);color:var(--accent);text-decoration:none}

/* ==========================================================================
   11. Footer + footer widgets
   ========================================================================== */
.kd-footer{background:var(--footer-bg);color:rgba(255,255,255,.82);margin-top:clamp(2.5rem,6vw,4.5rem)}
.kd-footer a{color:rgba(255,255,255,.82)}
.kd-footer a:hover{color:#fff}
.kd-footer__widgets{
  display:grid;grid-template-columns:1.5fr repeat(3,minmax(0,1fr));
  gap:clamp(1.6rem,4vw,2.6rem);
  padding-block:clamp(2.4rem,5vw,3.4rem);border-bottom:1px solid rgba(255,255,255,.12);
}
.kd-footer__widgets .widget-title,.kd-footer__widgets .kd-widget-title{color:#fff;font-family:var(--font-serif);font-size:1.08rem;font-weight:650;margin:0 0 1rem;border:0;padding:0}
.kd-footer__widgets ul{list-style:none;margin:0;padding:0}
.kd-footer__widgets li{padding:.4rem 0;border:0;display:block}
.kd-footer__widgets li a{color:rgba(255,255,255,.72);display:inline-block;min-height:24px}
.kd-footer__widgets li a:hover{color:var(--footer-accent);text-decoration:none}
.kd-footer__widgets .kd-widget{background:transparent;border:0;box-shadow:none;padding:0}
.kd-footer__widgets .children{padding-left:.9rem}
.kd-footer__brandcol .kd-brand{margin-bottom:.2rem}
.kd-footer__brandcol .kd-brand__mark{width:38px;height:38px;flex-basis:38px}
.kd-footer__brandcol .kd-brand__text{color:#fff;font-size:1.25rem;white-space:nowrap}
.kd-footer__brandcol .kd-brand__text b{color:var(--footer-accent)}
.kd-footer__brandcol p{color:rgba(255,255,255,.62);font-size:.92rem;line-height:1.6;margin-top:.9rem;max-width:36ch}
.kd-footer__bar{display:flex;flex-wrap:wrap;gap:.8rem 1.4rem;align-items:center;justify-content:space-between;padding-block:1.5rem;font-size:.85rem;color:rgba(255,255,255,.58)}
.kd-footer__bar nav{display:flex;flex-wrap:wrap;gap:.6rem 1.3rem}
.kd-footer__bar nav ul{display:flex;flex-wrap:wrap;gap:.6rem 1.3rem;list-style:none;margin:0;padding:0}
.kd-footer__bar nav a{color:rgba(255,255,255,.72)}
.kd-footer__bar nav a:hover{color:#fff}
.kd-footer__disclaimer{max-width:70ch;font-size:.8rem;line-height:1.6;color:rgba(255,255,255,.45);padding-bottom:1.6rem;margin:0}

/* ==========================================================================
   12. 404
   ========================================================================== */
.kd-404{text-align:center;max-width:640px;margin-inline:auto;padding-block:clamp(2rem,6vw,4rem)}
.kd-404__code{font-family:var(--font-serif);font-size:clamp(5rem,20vw,9rem);line-height:.9;color:var(--accent);opacity:.9;margin:0}
.kd-404 h1{font-size:clamp(1.6rem,4vw,2.2rem);margin:.2em 0 .4em}
.kd-404 p{color:var(--text-muted);font-size:1.05rem}
.kd-404__actions{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap;margin-top:1.6rem}

/* ==========================================================================
   13. Elementor body-only pages — theme-owned on-brand styling
   (styles applied via CSS classes on core widgets so pages look right
    even if Elementor's generated CSS lags)
   ========================================================================== */
.elementor-page .kd-main,body.elementor-page .kd-main{padding-block:0}   /* let Elementor sections own spacing */

/* on-brand defaults for the core Elementor widgets we use, so pages look
   right even if Elementor's generated CSS hasn't been produced yet */
.kd-main .elementor-heading-title{font-family:var(--font-serif);color:var(--heading)}
.kd-main .elementor-widget-text-editor{color:var(--text);line-height:1.7}
.kd-main .elementor-button{
  display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  background:var(--accent);color:#fff;border:1px solid var(--accent);
  border-radius:var(--radius-pill);padding:.85rem 1.7rem;font-weight:700;
  font-family:var(--font-sans);min-height:46px;line-height:1;transition:background .15s,transform .12s;
}
.kd-main .elementor-button:hover{background:var(--leaf-deep);border-color:var(--leaf-deep);color:#fff;transform:translateY(-1px);text-decoration:none}
.kd-main .kd-cta-ghost .elementor-button{background:transparent;border-color:rgba(255,255,255,.55);color:#fff}
.kd-main .kd-cta-ghost .elementor-button:hover{background:rgba(255,255,255,.14);color:#fff}
.kd-hero .elementor-heading-title{color:#fff}
/* eyebrow / heading / lead helper classes work whether applied to a bare
   element OR to an Elementor widget wrapper (targets the inner title too) */
.kd-el-eyebrow .elementor-heading-title,.kd-hero__eyebrow .elementor-heading-title{
  font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;font-family:var(--font-sans);margin:0 0 .4rem
}
.kd-el-eyebrow .elementor-heading-title{color:var(--accent)}
.kd-hero__eyebrow .elementor-heading-title{color:var(--lime)}
.kd-el-h2 .elementor-heading-title{font-size:clamp(1.7rem,4vw,2.5rem);line-height:1.15;color:var(--heading)}
.kd-hero__title .elementor-heading-title{font-size:clamp(2.2rem,6vw,3.75rem);line-height:1.05;color:#fff;max-width:16ch}
.kd-el-lead .elementor-widget-container{font-size:1.12rem;color:var(--text-muted);line-height:1.65}
.kd-hero__sub .elementor-widget-container{font-size:clamp(1.05rem,2.2vw,1.25rem);color:rgba(255,255,255,.85);line-height:1.6;max-width:46ch}
.kd-hero__inner .elementor-widget{margin-bottom:0}
/* keep Elementor sections from ever forcing a horizontal scrollbar */
.kd-main .elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}
.kd-main .elementor-section{width:100%}
/* dark closing CTA band */
.kd-cta-band .elementor-heading-title{color:#fff}
.kd-cta-band .elementor-widget-text-editor,.kd-cta-band .elementor-widget-container{color:rgba(255,255,255,.85)}
/* comfortable default gap between stacked widgets in a column */
.kd-main .elementor-widget:not(:last-child){margin-bottom:1.1rem}
.kd-main .elementor-widget-shortcode{margin-bottom:0}

/* section rhythm */
.kd-el-section{padding-block:clamp(2.75rem,7vw,5rem)}
.kd-el-eyebrow{display:inline-block;font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:var(--accent);margin-bottom:.5rem}
.kd-el-h2{font-size:clamp(1.7rem,4vw,2.5rem)!important;color:var(--heading)}
.kd-el-lead{font-size:1.12rem;color:var(--text-muted);line-height:1.65}

/* hero */
.kd-hero{position:relative;overflow:hidden;color:#fff;isolation:isolate;background:#0a2c1a}
.kd-hero__bg{position:absolute;inset:0;z-index:-2}
.kd-hero__bg img{width:100%;height:100%;object-fit:cover}
.kd-hero::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(130deg,rgba(6,26,15,.92),rgba(18,63,38,.78) 45%,rgba(10,44,26,.7))}
.kd-hero__inner{padding-block:clamp(3.5rem,10vw,7rem)}
.kd-hero__eyebrow{display:inline-flex;align-items:center;gap:.5rem;font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:var(--lime);margin-bottom:1rem}
.kd-hero h1,.kd-hero__title{font-size:clamp(2.2rem,6vw,3.75rem);line-height:1.05;color:#fff;max-width:16ch;margin:0 0 .4em}
.kd-hero__sub{font-size:clamp(1.05rem,2.2vw,1.25rem);color:rgba(255,255,255,.85);max-width:44ch;line-height:1.6;margin:0 0 1.8rem}
.kd-hero__cta{display:flex;gap:.8rem;flex-wrap:wrap}
.kd-hero__cta .kd-btn--ghost{color:#fff;border-color:rgba(255,255,255,.5)}
.kd-hero__cta .kd-btn--ghost:hover{background:rgba(255,255,255,.12);color:#fff}

/* stats row */
.kd-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(255,255,255,.18);border-radius:var(--radius-lg);overflow:hidden;margin-top:2.5rem}
.kd-stat{background:rgba(6,26,15,.35);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:1.2rem 1rem;text-align:center}
.kd-stat__num{font-family:var(--font-serif);font-size:clamp(1.6rem,4vw,2.4rem);font-weight:700;color:var(--lime);line-height:1}
.kd-stat__label{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.75);margin-top:.4rem}

/* topic cards grid (Elementor icon-box + our styling) */
.kd-topics{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem}
.kd-topic{display:block;background:var(--card);border:1px solid var(--l-border);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow-sm);transition:transform .25s,box-shadow .25s,border-color .25s;height:100%}
.kd-topic:hover{transform:translateY(-5px);box-shadow:var(--shadow-md);border-color:var(--accent);text-decoration:none}
.kd-topic__icon{width:52px;height:52px;border-radius:14px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;margin-bottom:1rem;font-size:1.4rem}
.kd-topic__icon svg{width:26px;height:26px}
.kd-topic h3{font-size:1.25rem;margin:0 0 .3em;color:var(--heading)}
.kd-topic p{color:var(--text-muted);font-size:.95rem;margin:0}
.kd-topic__more{display:inline-block;margin-top:.9rem;color:var(--accent);font-weight:700;font-size:.9rem}

/* image+text feature cards (Go deeper) */
.kd-feature{position:relative;display:flex;flex-direction:column;justify-content:flex-end;min-height:280px;border-radius:var(--radius-lg);overflow:hidden;color:#fff;padding:1.6rem}
.kd-feature img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform .5s}
.kd-feature:hover img{transform:scale(1.05)}
.kd-feature::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(to top,rgba(6,26,15,.9),rgba(6,26,15,.15))}
.kd-feature:hover{text-decoration:none}
.kd-feature h3{color:#fff;font-size:1.5rem;margin:0 0 .3em}
.kd-feature p{color:rgba(255,255,255,.85);margin:0 0 .6rem;font-size:.98rem}
.kd-feature__cta{color:var(--lime);font-weight:700;font-size:.92rem}

/* prose panel for About */
.kd-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:clamp(1.4rem,4vw,2.4rem);box-shadow:var(--shadow-sm)}

/* infobox (encyclopedia quick facts) */
.kd-infobox{background:var(--infobox-bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.3rem 1.4rem}
.kd-infobox__title{font-family:var(--font-serif);font-weight:700;color:var(--heading);font-size:1.1rem;margin:0 0 .8rem;text-align:center;border-bottom:1px solid var(--border);padding-bottom:.6rem}
.kd-infobox table{margin:0}
.kd-infobox th,.kd-infobox td{border:0;border-bottom:1px solid var(--border);padding:.45rem .2rem;font-size:.9rem;background:transparent}
.kd-infobox th{color:var(--text-faint);font-weight:600;width:42%;font-family:var(--font-sans)}
.kd-infobox tr:last-child th,.kd-infobox tr:last-child td{border-bottom:0}

/* FAQ (details/summary — no JS needed) */
.kd-faq{display:flex;flex-direction:column;gap:.8rem;max-width:52rem;margin-inline:auto}
.kd-faq details{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.kd-faq summary{cursor:pointer;list-style:none;padding:1rem 1.2rem;font-family:var(--font-serif);font-weight:650;color:var(--heading);font-size:1.08rem;display:flex;justify-content:space-between;align-items:center;gap:1rem;min-height:44px}
.kd-faq summary::-webkit-details-marker{display:none}
.kd-faq summary::after{content:"+";font-size:1.5rem;color:var(--accent);transition:transform .2s;line-height:1}
.kd-faq details[open] summary::after{transform:rotate(45deg)}
.kd-faq details[open] summary{border-bottom:1px solid var(--border)}
.kd-faq__body{padding:1rem 1.2rem;color:var(--text-muted);line-height:1.65}
.kd-faq__body p:last-child{margin-bottom:0}

/* contact form (theme shortcode, embedded via Elementor Shortcode widget) */
.kd-contact{display:grid;grid-template-columns:1.3fr 1fr;gap:clamp(1.5rem,4vw,2.5rem);align-items:start}
.kd-contactform{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:clamp(1.4rem,4vw,2rem);box-shadow:var(--shadow-sm)}
.kd-contactform .kd-field{margin-bottom:1.1rem}
.kd-contactform label{display:block;font-weight:600;font-size:.9rem;color:var(--text-muted);margin-bottom:.35rem}
.kd-contactform .kd-required{color:#b23b26}
.kd-formrow{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
.kd-formnote{font-size:.82rem;color:var(--text-faint);margin-top:.9rem}
.kd-alert{padding:.9rem 1.1rem;border-radius:var(--radius);margin-bottom:1.2rem;font-size:.95rem}
.kd-alert--ok{background:var(--accent-soft);border:1px solid var(--accent);color:var(--leaf-deep)}
.kd-alert--err{background:#fbe6e0;border:1px solid #d99;color:#8a2c19}
.kd-contact__aside .kd-infobox{margin-bottom:1.2rem}
.kd-contact__aside .kd-contact-line{display:flex;gap:.7rem;align-items:flex-start;margin-bottom:.9rem;color:var(--text-muted)}
.kd-contact__aside .kd-contact-line svg{width:20px;height:20px;color:var(--accent);flex:0 0 20px;margin-top:2px}

/* ==========================================================================
   14. WordPress core / block bits
   ========================================================================== */
.wp-block-image img{border-radius:var(--radius)}
.wp-block-button__link{background:var(--accent);color:#fff;border-radius:var(--radius-pill);padding:.7em 1.6em}
.wp-block-pullquote,.wp-block-quote{border-left:4px solid var(--accent);padding-left:1.2em}
.wp-block-separator{border-top:1px solid var(--border)}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.6rem;margin-bottom:1.4rem}
.gallery-item img{border-radius:var(--radius);width:100%;object-fit:cover}
.gallery-caption{font-size:.8rem;color:var(--text-faint)}
.post-password-form input[type=password]{max-width:280px;display:inline-block;width:auto}
.wp-block-latest-comments,.wp-block-latest-posts{padding-left:0;list-style:none}

/* admin bar offset for the sticky header (drawer follows the header
   automatically because it is absolutely positioned within it) */
body.admin-bar .kd-header{top:32px}
@media (max-width:782px){
  body.admin-bar .kd-header{top:46px}
}

/* ==========================================================================
   15. Responsive
   ========================================================================== */
/* Collapse to the hamburger below 1200px so the full pill nav never crowds
   or wraps. Above it, show the inline nav + search. */
@media (max-width:1200px){
  .kd-primary-nav,.kd-header__search{display:none}
  .kd-hamburger{display:inline-flex}
  .kd-layout{grid-template-columns:minmax(0,1fr)}
  .kd-sidebar{position:static}
}
@media (min-width:1201px){
  .kd-drawer,.kd-drawer-backdrop{display:none!important}
  .kd-hamburger{display:none!important}
}
@media (max-width:900px){
  .kd-contact{grid-template-columns:1fr}
  .kd-footer__widgets{grid-template-columns:1fr 1fr}
  .kd-footer__brandcol{grid-column:1 / -1}
  .kd-footer__brandcol p{max-width:52ch}
}
@media (max-width:768px){
  .kd-stats{grid-template-columns:repeat(2,1fr)}
  .kd-postrow{grid-template-columns:1fr}
  .kd-postrow__thumb{aspect-ratio:16/9}
  .kd-postrow__thumb img{min-height:0}
  .kd-postrow__body{padding:1.1rem 1.2rem}
  .kd-adjacent{grid-template-columns:1fr}
  .kd-article__hero{aspect-ratio:16/9}
  .kd-authorbox{flex-direction:column;text-align:center;align-items:center}
}
@media (max-width:560px){
  .kd-formrow{grid-template-columns:1fr}
  .kd-grid{grid-template-columns:1fr}
  .kd-comment-head{flex-wrap:wrap}
  .kd-footer__widgets{grid-template-columns:1fr;gap:1.6rem}
  .kd-footer__brandcol{grid-column:auto}
  .kd-footer__bar{flex-direction:column;align-items:flex-start;text-align:left}
}
@media (max-width:400px){
  .kd-brand__tag{display:none}   /* keep the wordmark clean on very small phones */
}
@media (max-width:380px){
  .kd-stats{grid-template-columns:1fr 1fr}
  .kd-hero__cta{flex-direction:column;align-items:stretch}
  .kd-hero__cta .kd-btn{width:100%}
}

/* reduced motion */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* print */
@media print{
  .kd-header,.kd-footer,.kd-sidebar,.kd-share,.kd-related,.kd-comments,.kd-drawer,.kd-drawer-backdrop{display:none!important}
  body{background:#fff}
  .kd-article{border:0;box-shadow:none}
}

/* ==========================================================================
   16. v3 fixes & additions
   Appended last so these win by source order. Grouped by the issue they fix.
   ========================================================================== */

/* --- (a) CTA band: force readable light text over the dark green ---------- */
.kd-cta-band,
.kd-cta-band .elementor-widget-container,
.kd-cta-band .elementor-heading-title{color:#fff}
.kd-cta-band .elementor-widget-text-editor,
.kd-cta-band .elementor-widget-text-editor .elementor-widget-container,
.kd-cta-band p{color:rgba(255,255,255,.88)!important}
.kd-cta-band .elementor-heading-title{color:#fff!important}
.kd-cta-band a:not(.elementor-button){color:var(--footer-accent)}

/* --- (b) remove the empty band the footer margin left below dark sections --- */
.kd-footer{margin-top:0}
/* keep breathing room before the footer on normal (non-Elementor) pages */
body:not(.elementor-page) .kd-main{padding-bottom:clamp(2rem,5vw,3.5rem)}
/* Elementor pages end in their own full-width band, so they sit flush */
body.elementor-page .kd-main{padding-bottom:0}

/* --- (c) consistent hero hue so titles are ALWAYS readable ----------------- */
/* Works whether the image is a theme .kd-hero__bg element OR an Elementor
   section background-image. The ::before overlay sits above the image, the
   content sits above the overlay. */
.kd-hero{position:relative;isolation:isolate;color:#fff;background-color:#0a2c1a}
.kd-hero::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(120deg,rgba(6,26,15,.9) 0%,rgba(12,44,26,.8) 45%,rgba(18,63,38,.62) 100%);
}
.kd-hero > *{position:relative;z-index:1}
.kd-hero > .elementor-container,
.kd-hero .kd-hero__inner{position:relative;z-index:1}
.kd-hero__inner{padding-block:clamp(3rem,8vw,6rem)}
/* force all hero text white regardless of Elementor's generated colours */
.kd-hero .elementor-heading-title,
.kd-hero__title .elementor-heading-title,
.kd-hero h1,.kd-hero__title{color:#fff!important}
.kd-hero .kd-hero__sub .elementor-widget-container,
.kd-hero__sub{color:rgba(255,255,255,.9)!important}
.kd-hero__eyebrow .elementor-heading-title,
.kd-hero .kd-el-eyebrow .elementor-heading-title{color:var(--lime)!important}
/* stop widgets in a hero from overlapping if Elementor CSS lags */
.kd-hero__inner .elementor-widget{margin-bottom:.6rem}
.kd-hero__inner .elementor-widget:last-child{margin-bottom:0}

/* --- (d) images NEVER overflow, at any size, anywhere --------------------- */
img{max-width:100%;height:auto}
.kd-card__thumb,.kd-postrow__thumb,.kd-article__hero,.kd-posthero__bg{position:relative;overflow:hidden}
/* absolute-fill pattern: the image can be any dimensions and still cover neatly */
.kd-card__thumb img,
.kd-postrow__thumb img,
.kd-article__hero img,
.kd-posthero__bg img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;max-width:none;
}
.kd-card__thumb{aspect-ratio:3/2}
.kd-postrow__thumb{aspect-ratio:16/10;min-height:0}
.kd-featured .kd-postrow__thumb{aspect-ratio:16/10}
/* images placed inside article/prose content */
.kd-prose img,.kd-article__body img,.kdp-prose img{height:auto;border-radius:12px}
.kd-prose figure,.kd-article__body figure{margin:1.6em 0;max-width:100%}
.kd-prose figure img{width:100%}
@media (max-width:768px){
  .kd-postrow__thumb,.kd-featured .kd-postrow__thumb{aspect-ratio:16/9}
}

/* --- (e) single-post hero: featured image + hue + overlaid title ----------- */
.kd-posthero{position:relative;isolation:isolate;color:#fff;background:linear-gradient(135deg,var(--forest),#0a2c1a);margin-bottom:clamp(1.6rem,4vw,2.6rem);overflow:hidden}
.kd-posthero__bg{position:absolute;inset:0;z-index:0}
.kd-posthero__bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.kd-posthero::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,rgba(6,26,15,.45) 0%,rgba(6,26,15,.35) 40%,rgba(6,26,15,.82) 100%)}
.kd-posthero.no-img::before{background:linear-gradient(135deg,rgba(18,63,38,.2),rgba(6,26,15,.55))}
.kd-posthero__inner{position:relative;z-index:2;padding-block:clamp(3rem,9vw,6.5rem);max-width:var(--article-measure);margin-inline:auto}
.kd-posthero__cat{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}
.kd-posthero__cat .kd-pill{background:rgba(255,255,255,.16);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.kd-posthero__cat .kd-pill:hover{background:var(--accent)}
.kd-posthero__cat .kd-pill--flag{background:var(--lime);color:var(--ink)}
.kd-posthero__title{font-family:var(--font-serif);font-size:clamp(1.9rem,5vw,3.1rem);line-height:1.12;color:#fff;margin:0 0 1rem;max-width:22ch;text-wrap:balance}
.kd-posthero__meta,.kd-posthero__meta .kd-meta{color:rgba(255,255,255,.9)}
.kd-posthero__meta .kd-meta a{color:#fff}
.kd-posthero__meta .kd-meta__sep{color:rgba(255,255,255,.5)}
.kd-posthero__meta .kd-avatar{border:2px solid rgba(255,255,255,.5)}
.kd-article__inner{max-width:var(--article-measure);margin-inline:auto;padding-inline:clamp(1rem,4vw,1.5rem);padding-bottom:clamp(1.5rem,4vw,2.5rem)}

/* --- (f) Table of Contents box -------------------------------------------- */
.kd-toc{background:var(--surface-muted);border:1px solid var(--border);border-radius:16px;padding:1.1rem 1.3rem;margin:0 0 1.8rem}
.kd-toc__title{font-family:var(--font-sans);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--text-faint);margin:0 0 .6rem}
.kd-toc ol,.kd-toc ul,.kd-toc__list{margin:0;padding:0;list-style:none;counter-reset:kdtoc;display:grid;gap:.35rem}
.kd-toc li{margin:0;padding:0;position:relative;padding-left:1.9rem}
.kd-toc li::before{counter-increment:kdtoc;content:counter(kdtoc);position:absolute;left:0;top:.05rem;width:1.4rem;height:1.4rem;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);border-radius:50%;font:700 .7rem/1 var(--font-sans)}
.kd-toc a{color:var(--link);text-decoration:none;font-weight:600;line-height:1.4}
.kd-toc a:hover{color:var(--link-hover);text-decoration:underline}

/* --- (g) empty slider state ----------------------------------------------- */
.kd-slider--empty{background:var(--surface-muted);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);padding:clamp(1.5rem,4vw,2.5rem);text-align:center}
.kd-slider__empty-note{margin:.5rem 0 0;color:var(--text-muted)}

/* --- (h) tidy: no horizontal scroll, ever --------------------------------- */
html,body{overflow-x:hidden;max-width:100%}
.kd-pill--flag{background:var(--lime);color:var(--ink)}
