/* PPT — front-end base. Bootstrap 5.3 (loaded first) provides the grid,
   components and reboot; this file only adds a few base + chrome touches.
   Do NOT redefine .container here — let Bootstrap own it. */

/* ---- Self-hosted fonts (no CDN, no Google Fonts links) --------------------
   Files live in ../fonts (relative URLs so they follow theme.css to a CDN too).
   Display = Plus Jakarta Sans, Body = Inter. Latin subset, woff2 only. */
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/plus-jakarta-sans-400.woff2') format('woff2');}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/plus-jakarta-sans-500.woff2') format('woff2');}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/plus-jakarta-sans-600.woff2') format('woff2');}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/plus-jakarta-sans-700.woff2') format('woff2');}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/plus-jakarta-sans-800.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/inter-400.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/inter-500.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/inter-600.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/inter-700.woff2') format('woff2');}
/* Outfit (Car Dealer Theme "Ironline" design display face) + Montserrat ("Loadline" display face). Latin subset, woff2 only. */
@font-face{font-family:'Outfit';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/outfit-500.woff2') format('woff2');}
@font-face{font-family:'Outfit';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/outfit-600.woff2') format('woff2');}
@font-face{font-family:'Outfit';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/outfit-700.woff2') format('woff2');}
@font-face{font-family:'Outfit';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/outfit-800.woff2') format('woff2');}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/montserrat-400.woff2') format('woff2');}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/montserrat-500.woff2') format('woff2');}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/montserrat-600.woff2') format('woff2');}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/montserrat-700.woff2') format('woff2');}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/montserrat-800.woff2') format('woff2');}

:root{
  --ppt-ink:#141922;
  --ppt-muted:#5b6675;
  --ppt-line:#e3e8ee;
}

img{max-width:100%;height:auto}

/* Header / footer chrome. NOTE: do NOT define .container here — Bootstrap owns it. */
.site-header{border-bottom:1px solid var(--ppt-line)}
.site-brand .ppt-brand-img{max-height:42px;width:auto;display:block}
.site-brand .ppt-brand-text{font-weight:800;font-size:20px;letter-spacing:-.02em;color:var(--ppt-ink)}

/* ---- Login screen (/login) ------------------------------------------------ */
body.ppt-auth{margin:0;background:#fff;min-height:100vh;font-family:var(--ppt-font-body,system-ui,sans-serif);}
/* Split layout: form column (left) + image panel (right). */
.ppt-auth-split{display:flex;min-height:100vh;}
.ppt-auth-main{flex:1 1 50%;display:flex;flex-direction:column;padding:32px clamp(20px,5vw,60px);min-height:100vh;box-sizing:border-box;background:#fff;}
.ppt-auth-brand{display:inline-flex;align-items:center;gap:10px;align-self:flex-start;text-decoration:none;color:#0f172a;font-weight:800;font-size:19px;letter-spacing:-.02em;}
.ppt-auth-brand img,.ppt-auth-brand .ppt-brand-img{max-height:40px;width:auto;display:block;}
.ppt-auth-brand-name{font-family:var(--ppt-font-display,inherit);}
.ppt-auth-mark{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,var(--ppt-brand,#4f46e5),var(--ppt-brand-2,#7c5cff));color:#fff;font-size:19px;font-weight:800;}
.ppt-auth-card{width:100%;max-width:400px;margin:auto;padding:28px 0;text-align:start;box-sizing:border-box;}
.ppt-auth-title{font-family:var(--ppt-font-display,inherit);font-size:30px;font-weight:800;color:#0f172a;margin:0 0 8px;letter-spacing:-.02em;}
.ppt-auth-sub{color:#475467;font-size:15px;line-height:1.55;margin:0 0 26px;}
.ppt-auth-error{background:#fef3f2;border:1px solid #fecdca;color:#b42318;font-size:13.5px;padding:10px 12px;border-radius:10px;margin-bottom:16px;text-align:start;}
.ppt-auth-form{text-align:start;}
.ppt-auth-label{display:block;font-size:14px;font-weight:600;color:#344054;margin:0 0 6px;}
.ppt-auth-input{width:100%;height:46px;border:1px solid #d5d9e2;border-radius:10px;padding:0 14px;font-size:15px;color:#0f172a;background:#fff;box-sizing:border-box;margin-bottom:16px;}
.ppt-auth-input:focus{outline:none;border-color:var(--ppt-brand,#4f46e5);box-shadow:0 0 0 3px color-mix(in srgb,var(--ppt-brand,#4f46e5) 18%,transparent);}
.ppt-auth-forgot{display:block;text-align:end;margin:-6px 0 16px;font-size:13px;font-weight:600;color:var(--ppt-brand,#4f46e5);text-decoration:none;}
.ppt-auth-forgot:hover{text-decoration:underline;}
.ppt-auth-btn{display:flex;align-items:center;justify-content:center;width:100%;height:48px;border-radius:10px;font-size:15px;font-weight:600;text-decoration:none;cursor:pointer;border:1px solid transparent;box-sizing:border-box;}
.ppt-auth-btn-primary{background:var(--ppt-brand,#4f46e5);color:var(--ppt-brand-ink,#fff);margin-top:4px;}
.ppt-auth-btn-primary:hover{background:var(--ppt-brand-strong,#4f46e5);}
.ppt-auth-btn-outline{background:#fff;border-color:#d5d9e2;color:#0f172a;margin-top:10px;}
.ppt-auth-btn-outline:hover{background:#f8fafc;}
.ppt-auth-divider{display:flex;align-items:center;gap:14px;margin:22px 0 16px;color:#667085;font-size:14px;}
.ppt-auth-divider::before,.ppt-auth-divider::after{content:"";flex:1;height:1px;background:#e6e9ef;}
.ppt-auth-social{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.ppt-auth-social:has(> :only-child){grid-template-columns:1fr;}
.ppt-auth-social-btn{display:flex;align-items:center;justify-content:center;gap:9px;height:46px;border:1px solid #d5d9e2;border-radius:10px;background:#fff;color:#0f172a;font-size:14.5px;font-weight:600;text-decoration:none;}
.ppt-auth-social-btn:hover{background:#f8fafc;border-color:#c4cad6;}
.ppt-auth-social-ic{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:color-mix(in srgb,var(--ppt-brand,#4f46e5) 14%,#fff);color:var(--ppt-brand,#4f46e5);font-size:12px;font-weight:800;}
.ppt-auth-social-ic-img{background:none;width:20px;height:20px;border-radius:0;}
.ppt-auth-social-ic-img svg{width:20px;height:20px;display:block;}
.ppt-auth-terms{margin:0;align-self:flex-start;max-width:400px;color:#667085;font-size:13px;line-height:1.5;text-align:start;}
.ppt-auth-terms a{color:#475467;}
/* Right-hand image panel (custom image from Settings, or a branded default). */
.ppt-auth-aside{flex:1 1 50%;min-height:100vh;background-size:cover;background-position:center;background-repeat:no-repeat;position:relative;overflow:hidden;}
.ppt-auth-aside.is-default{background:linear-gradient(150deg,color-mix(in srgb,var(--ppt-brand,#4f46e5) 20%,#f4f5f7),color-mix(in srgb,var(--ppt-brand-2,#7c5cff) 30%,#ece9fb));}
.ppt-auth-aside-orb{position:absolute;border-radius:50%;filter:blur(46px);opacity:.55;width:52%;aspect-ratio:1;top:14%;inset-inline-start:16%;background:radial-gradient(circle at 35% 35%,var(--ppt-brand,#4f46e5),transparent 68%);}
.ppt-auth-aside-orb2{top:auto;inset-inline-start:auto;bottom:6%;inset-inline-end:8%;width:42%;opacity:.5;background:radial-gradient(circle at 35% 35%,var(--ppt-brand-2,#7c5cff),transparent 68%);}
@media (max-width:860px){.ppt-auth-aside{display:none;}.ppt-auth-main{flex-basis:100%;}}

/* ---- Sign-up wizard (/join) ------------------------------------------------
   One question per screen inside the SAME split shell as login/register, so only
   the controls the wizard adds live here. Every state is styled off :checked
   rather than :has(), so a chip still highlights in an older browser. */
.ppt-join-prog{margin:0 0 22px;}
.ppt-join-bar{height:4px;border-radius:999px;background:#eaecf2;overflow:hidden;}
.ppt-join-bar span{display:block;height:100%;background:var(--ppt-brand,#4f46e5);border-radius:999px;transition:width .35s ease;}
.ppt-join-count{margin:8px 0 0;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#8b93a3;}
.ppt-join-hint{margin:-8px 0 16px;font-size:12.5px;color:#8b93a3;}
.ppt-join-second{margin-top:20px;}

/* Location suggestions (progressive: no JS = a plain text field). */
.ppt-join-ac{position:relative;}
/* Spinner inside the field while a lookup is in flight, and the line that explains
   an empty result. Reduced-motion gets a pulse instead of a spin. */
.ppt-join-ac-spin{position:absolute;top:14px;inset-inline-end:14px;width:18px;height:18px;border-radius:50%;
  border:2px solid color-mix(in srgb,var(--ppt-brand,#4f46e5) 25%,#e6e9ef);
  border-top-color:var(--ppt-brand,#4f46e5);animation:ppt-join-spin .7s linear infinite;pointer-events:none;}
@keyframes ppt-join-spin{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion:reduce){
  .ppt-join-ac-spin{animation:ppt-join-pulse 1.1s ease-in-out infinite;}
  @keyframes ppt-join-pulse{0%,100%{opacity:.35;}50%{opacity:1;}}
}
.ppt-join-ac-note{margin:-8px 0 16px;font-size:12.5px;color:#8b93a3;}
.ppt-join-ac-list{position:absolute;left:0;right:0;top:50px;z-index:30;margin:0;padding:5px;list-style:none;
  background:#fff;border:1px solid #d5d9e2;border-radius:11px;box-shadow:0 14px 40px rgba(15,23,42,.16);
  max-height:248px;overflow-y:auto;}
.ppt-join-ac-item{padding:9px 11px;border-radius:8px;font-size:14px;color:#0f172a;cursor:pointer;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ppt-join-ac-item:hover,.ppt-join-ac-item[aria-selected="true"]{background:color-mix(in srgb,var(--ppt-brand,#4f46e5) 10%,#fff);
  color:var(--ppt-brand,#4f46e5);}
.ppt-join-dob{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:10px;}
.ppt-join-dob .ppt-auth-input{padding:0 10px;margin-bottom:16px;}

/* Choice controls. A sign-up asks the same question shape three ways — a full-width
   card, a radio row, a chip — so all three carry the SAME selected signal: a brand
   ring, a tinted fill and an explicit mark. Colour alone is not the answer; the mark
   is what makes "did that register?" answerable at a glance and without seeing hue. */
.ppt-join-opts{display:flex;flex-direction:column;gap:9px;margin-bottom:22px;}
.ppt-join-opt{display:flex;align-items:center;gap:12px;width:100%;text-align:start;font:inherit;font-size:15px;
  font-weight:600;color:#0f172a;background:#fff;border:1px solid #d5d9e2;border-radius:11px;padding:13px 15px;
  cursor:pointer;box-sizing:border-box;transition:border-color .12s ease,background-color .12s ease,box-shadow .12s ease;}
.ppt-join-opt:hover{border-color:color-mix(in srgb,var(--ppt-brand,#4f46e5) 45%,#d5d9e2);}
.ppt-join-opt:focus-visible{outline:2px solid var(--ppt-brand,#4f46e5);outline-offset:2px;}
.ppt-join-opt-b{flex:1 1 auto;min-width:0;}
.ppt-join-opt small{display:block;font-weight:400;font-size:12.5px;color:#475467;margin-top:2px;}
/* The mark: an empty ring until picked, then a filled brand disc with a tick (cards)
   or a dot (radios) inside it. */
.ppt-join-mark{position:relative;flex:0 0 auto;width:20px;height:20px;border-radius:50%;background:#fff;
  border:1px solid #cbd2dd;box-sizing:border-box;transition:border-color .12s ease,background-color .12s ease;}
.ppt-join-opt:hover .ppt-join-mark{border-color:color-mix(in srgb,var(--ppt-brand,#4f46e5) 55%,#cbd2dd);}
/* Pressed, for the no-JS case: the card still acknowledges the click it is submitting on. */
.ppt-join-opt:active{border-color:var(--ppt-brand,#4f46e5);background:color-mix(in srgb,var(--ppt-brand,#4f46e5) 7%,#fff);}
.ppt-join-opt.is-on,.ppt-join-pick:has(input:checked){border-color:var(--ppt-brand,#4f46e5);
  box-shadow:0 0 0 1px var(--ppt-brand,#4f46e5) inset;background:color-mix(in srgb,var(--ppt-brand,#4f46e5) 7%,#fff);}
.ppt-join-opt.is-on .ppt-join-mark,.ppt-join-pick:has(input:checked) .ppt-join-mark{
  background:var(--ppt-brand,#4f46e5);border-color:var(--ppt-brand,#4f46e5);}
.ppt-join-opt.is-on .ppt-join-mark::after{content:"";position:absolute;left:6px;top:3px;width:5px;height:9px;
  border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg);}
.ppt-join-pick:has(input:checked) .ppt-join-mark::after{content:"";position:absolute;left:50%;top:50%;width:8px;height:8px;
  border-radius:50%;background:#fff;transform:translate(-50%,-50%);}
/* Mid-submit: the card that was hit stays lit, the rest step back and stop taking
   clicks — a second click would post a second answer. */
.ppt-join-opts.is-busy .ppt-join-opt{opacity:.45;pointer-events:none;}
.ppt-join-opts.is-busy .ppt-join-opt.is-picking{opacity:1;}
.ppt-join-pick{gap:11px;}
.ppt-join-pick input{position:absolute;opacity:0;width:0;height:0;}
.ppt-join-pick:has(input:focus-visible){outline:2px solid var(--ppt-brand,#4f46e5);outline-offset:2px;}
@media (prefers-reduced-motion:reduce){.ppt-join-opt,.ppt-join-mark{transition:none;}}

.ppt-join-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px;}
.ppt-join-chip{position:relative;display:inline-flex;}
.ppt-join-chip input{position:absolute;opacity:0;width:0;height:0;}
.ppt-join-chip span{display:inline-flex;align-items:center;font-size:13.5px;font-weight:600;color:#0f172a;background:#fff;
  border:1px solid #d5d9e2;border-radius:999px;padding:8px 14px;cursor:pointer;}
.ppt-join-chip span:hover{border-color:color-mix(in srgb,var(--ppt-brand,#4f46e5) 45%,#d5d9e2);}
.ppt-join-chip input:checked + span{border-color:var(--ppt-brand,#4f46e5);color:var(--ppt-brand,#4f46e5);
  box-shadow:0 0 0 1px var(--ppt-brand,#4f46e5) inset;background:color-mix(in srgb,var(--ppt-brand,#4f46e5) 10%,#fff);}
.ppt-join-chip input:checked + span::before{content:"";flex:0 0 auto;width:5px;height:9px;
  margin-block-start:-2px;margin-inline:2px 9px;
  border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);}
.ppt-join-chip input:focus-visible + span{outline:2px solid var(--ppt-brand,#4f46e5);outline-offset:2px;}

/* The whole dashed box is the label, so anywhere in it opens the picker. The native
   input stays in the DOM and focusable (keyboard, and the no-JS case) but out of sight
   — its "Choose File / no file chosen" is the browser's furniture, not ours. */
.ppt-join-drop{position:relative;display:block;text-align:center;border:1.5px dashed #d5d9e2;border-radius:14px;
  padding:26px 18px;background:#fcfcfe;cursor:pointer;margin-bottom:22px;transition:border-color .13s ease,background .13s ease;}
.ppt-join-drop:hover{border-color:var(--ppt-brand,#4f46e5);background:color-mix(in srgb,var(--ppt-brand,#4f46e5) 4%,#fcfcfe);}
.ppt-join-drop:focus-within{border-color:var(--ppt-brand,#4f46e5);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--ppt-brand,#4f46e5) 18%,transparent);}
.ppt-join-drop-ic{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin:0 auto 12px;
  border-radius:50%;overflow:hidden;background:color-mix(in srgb,var(--ppt-brand,#4f46e5) 12%,#fff);
  color:var(--ppt-brand,#4f46e5);}
/* An inline SVG sits on the text baseline and leaves descender space under it, which
   reads as "not quite centred" inside a circle. Blocking it removes that. */
.ppt-join-drop-ic svg{display:block;}
.ppt-join-drop-ic img{width:100%;height:100%;object-fit:cover;display:block;}
.ppt-join-drop b{display:block;font-size:14.5px;color:#0f172a;word-break:break-word;}
.ppt-join-drop > span{display:block;font-size:12.5px;color:#475467;margin-top:3px;}
.ppt-join-file{position:absolute;width:1px;height:1px;padding:0;margin:0;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap;border:0;}

.ppt-join-checks{display:flex;flex-direction:column;gap:12px;margin-bottom:24px;text-align:start;}
.ppt-join-check{display:flex;gap:11px;align-items:flex-start;font-size:13.5px;color:#475467;line-height:1.45;}
.ppt-join-check input{margin:2px 0 0;width:17px;height:17px;accent-color:var(--ppt-brand,#4f46e5);flex:0 0 auto;}

.ppt-join-sum{list-style:none;margin:0 0 22px;padding:0;}
.ppt-join-sum li{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid #eaecf2;font-size:13.5px;}
.ppt-join-sum li:last-child{border-bottom:0;}
.ppt-join-sum b{font-weight:600;color:#0f172a;}
.ppt-join-sum span{color:#475467;text-align:end;}

.ppt-join-foot{display:flex;align-items:center;gap:18px;margin-top:14px;}
.ppt-join-link{background:none;border:0;padding:0;font:inherit;font-size:13.5px;font-weight:600;color:#475467;
  text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.ppt-join-link:hover{color:var(--ppt-brand,#4f46e5);}
@media (prefers-reduced-motion:reduce){.ppt-join-bar span{transition:none;}}

/* Members area (/account) styles are self-contained in inc/Account/views/account.php
   (the Member Hub dashboard), so nothing for it lives here. */
/* Shared hero "Popular:" keyword row (Ppt\Blocks\Hero\Popular::render) —
   chips link straight to the search results for that keyword. */
.ppt-hero-pops{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:20px;}
.ppt-hero-pops.ppt-hero-pops-c{justify-content:center;}
.ppt-hero-pops-l{font-size:13.5px;color:var(--ppt-muted,#6b7280);}
.ppt-hero-pops-a{font-weight:600;font-size:13.5px;color:var(--ppt-ink,#1f2430);background:var(--ppt-surface,#fff);border:1px solid var(--ppt-line,#e6ebf1);border-radius:999px;padding:7px 14px;text-decoration:none;transition:border-color .13s ease,color .13s ease;}
.ppt-hero-pops-a:hover{border-color:var(--ppt-brand,#0d9488);color:var(--ppt-brand,#0d9488);}

.site-header-in{display:flex;align-items:center;gap:26px;min-height:66px}
.site-brand{display:inline-flex;align-items:center;gap:10px;font-weight:800;font-size:20px;color:var(--ppt-ink);letter-spacing:-.02em;text-decoration:none}
.site-brand:hover{color:var(--ppt-ink)}
.site-mark{width:34px;height:34px;border-radius:9px;background:var(--ppt-brand,#0d9488);color:#fff;display:grid;place-items:center;flex:0 0 auto}
.site-mark-mono{font-weight:800;font-size:15px;line-height:1;letter-spacing:.01em}
.site-nav{display:flex}
.site-nav-menu{list-style:none;display:flex;gap:22px;margin:0;padding:0}
.site-nav-menu>li>a{color:var(--ppt-muted);font-weight:500;text-decoration:none}
.site-nav-menu>li>a:hover{color:var(--ppt-ink)}
/* "Build Menu Here" — the admin-only prompt Nav::buildMenuItem() appends to the sample
   menu once a site is live with no primary menu assigned. A dashed brand pill so it reads
   as a to-do, not a page. !important because every header archetype (HeaderVariants) and
   the design repaint restyle `.site-nav-menu>li>a` at higher specificity, and this one
   item must look the same in all of them, light or dark. Brand-only colours: no ink/white
   pairing, so it survives dark schemes and pale accents alike. */
.site-nav-menu>li.ppt-nav-build>a{display:inline-flex!important;align-items:center;gap:6px;padding:6px 12px!important;border:1.5px dashed var(--ppt-brand,#0d9488)!important;border-radius:999px!important;background:color-mix(in srgb,var(--ppt-brand,#0d9488) 12%,transparent)!important;color:var(--ppt-brand,#0d9488)!important;font-weight:600!important;font-size:13.5px!important;line-height:1.2;white-space:nowrap;animation:ppt-nav-build-pulse 2.4s ease-in-out infinite}
.site-nav-menu>li.ppt-nav-build>a:hover{background:var(--ppt-brand,#0d9488)!important;color:var(--ppt-brand-ink,#fff)!important;border-style:solid!important;animation:none}
.site-nav-menu>li.ppt-nav-build>a .ppt-nav-build-ic{flex:none}
/* Headers whose nav text is light — band/search bars in `shd-tone-dark` or `shd-tone-brand`
   (dark/brand BACKGROUND), and the transparent overlay in `shd-tone-light` (light INK over a
   hero photo; note the overlay names the ink, the others name the background): the brand
   colour sinks into those backgrounds, so the pill goes white-on-translucent instead. */
.site-header.shd-tone-dark:not(.site-header-overlay) .site-nav-menu>li.ppt-nav-build>a,.site-header.shd-tone-brand .site-nav-menu>li.ppt-nav-build>a,.site-header-overlay.is-transparent.shd-tone-light .site-nav-menu>li.ppt-nav-build>a{color:#fff!important;border-color:rgba(255,255,255,.85)!important;background:rgba(255,255,255,.16)!important;animation-name:ppt-nav-build-pulse-light}
.site-header.shd-tone-dark:not(.site-header-overlay) .site-nav-menu>li.ppt-nav-build>a:hover,.site-header.shd-tone-brand .site-nav-menu>li.ppt-nav-build>a:hover,.site-header-overlay.is-transparent.shd-tone-light .site-nav-menu>li.ppt-nav-build>a:hover{background:#fff!important;color:#141922!important}
@keyframes ppt-nav-build-pulse-light{0%,100%{box-shadow:0 0 0 0 rgba(255,255,255,.45)}60%{box-shadow:0 0 0 6px transparent}}
@keyframes ppt-nav-build-pulse{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--ppt-brand,#0d9488) 45%,transparent)}60%{box-shadow:0 0 0 6px transparent}}
@media (prefers-reduced-motion:reduce){.site-nav-menu>li.ppt-nav-build>a{animation:none}}
/* Nav dropdown (e.g. the Search designs) — a native <details> whose summary is
   styled like a plain nav link. The panel reuses the header switcher styles
   (.ppt-hdr-menu / .ppt-hdr-item). */
.ppt-nav-dd{display:flex;align-items:center}
.ppt-nav-dd .ppt-hdr-menu{inset-inline-start:0;inset-inline-end:auto}
.ppt-nav-ddtoggle{display:inline-flex;align-items:center;gap:5px;cursor:pointer;color:var(--ppt-muted);font-weight:500;line-height:inherit;list-style:none}
.ppt-nav-ddtoggle::-webkit-details-marker{display:none}
.ppt-nav-ddtoggle:hover,.ppt-hdr-dd[open]>.ppt-nav-ddtoggle{color:var(--ppt-ink)}
body.ppt-has-design .ppt-nav-ddtoggle{color:var(--ppt-muted,#5b6675)}
body.ppt-has-design .ppt-nav-ddtoggle:hover,body.ppt-has-design .ppt-hdr-dd[open]>.ppt-nav-ddtoggle{color:var(--ppt-ink,#141922)}
.site-actions{margin-inline-start:auto;display:flex;align-items:center;gap:10px;flex:0 0 auto}

/* Header language / currency switchers (native <details> dropdowns) */
.ppt-hdr-dd{position:relative}
.ppt-hdr-dd summary{list-style:none;cursor:pointer}
.ppt-hdr-dd summary::-webkit-details-marker{display:none}
.ppt-hdr-btn{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:600;color:var(--ppt-ink);border:1px solid var(--ppt-line);border-radius:9px;padding:8px 12px;line-height:1;white-space:nowrap}
body.ppt-has-design .ppt-hdr-btn{color:var(--ppt-ink,#141922);border-color:var(--ppt-line,#e3e8ee)}
.ppt-hdr-btn:hover{border-color:var(--ppt-brand,#0d9488)}
.ppt-hdr-caret{opacity:.6;transition:transform .15s ease}
.ppt-hdr-dd[open] .ppt-hdr-caret{transform:rotate(180deg)}
.ppt-hdr-flag{display:inline-flex;line-height:0}
.ppt-hdr-flag svg{border-radius:2px}
.ppt-hdr-cur{font-weight:700;min-width:14px;text-align:center}
.ppt-hdr-menu{position:absolute;top:calc(100% + 6px);inset-inline-end:0;z-index:60;min-width:190px;max-height:320px;overflow:auto;background:var(--ppt-surface,#fff);border:1px solid var(--ppt-line,#e3e8ee);border-radius:12px;box-shadow:0 16px 40px rgba(16,24,40,.16);padding:6px}
.ppt-hdr-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;font-size:14px;color:var(--ppt-ink,#141922);text-decoration:none;white-space:nowrap}
.ppt-hdr-item:hover{background:color-mix(in srgb,var(--ppt-ink,#141922) 7%,transparent);color:var(--ppt-ink,#141922)}
.ppt-hdr-item.is-active{color:var(--ppt-brand,#0d9488);font-weight:600}
/* Guard: a dropdown PANEL is always a stacked list, one link per row. Header
   variants/blocks style their nav links with descendant selectors that can reach
   into the panel (an inline-flex nav link there makes the items sit in a line), so
   re-assert the row layout at a specificity those rules can't beat. The [open]
   qualifier buys that specificity without tying the guard to a header wrapper — a
   panel is only ever painted while its <details> is open. */
.ppt-hdr-dd[open] .ppt-hdr-menu .ppt-hdr-item{display:flex;width:100%;height:auto;padding:9px 10px;text-transform:none;letter-spacing:0}
.site-btn{display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:14px;padding:9px 17px;border-radius:9px;line-height:1;text-decoration:none;border:1px solid transparent;white-space:nowrap;transition:background .15s ease,border-color .15s ease,color .15s ease}
.site-btn-ghost{color:var(--ppt-ink);border-color:var(--ppt-line)}
.site-btn-ghost:hover{border-color:var(--ppt-brand,#0d9488);color:var(--ppt-brand,#0d9488)}
.site-btn-primary{background:var(--ppt-brand,#0d9488);color:#fff}
.site-btn-primary:hover{background:var(--ppt-brand-strong,#0b7c72);color:#fff}
.site-main{min-height:50vh}

/* Nav + actions grouped so they can collapse together on mobile. */
.site-collapse{display:flex;align-items:center;gap:26px;flex:1 1 auto;min-width:0}
.site-navtoggle{display:none;align-items:center;justify-content:center;width:42px;height:42px;flex:0 0 auto;border:1px solid var(--ppt-line);border-radius:9px;background:transparent;color:var(--ppt-ink);cursor:pointer}
body.ppt-has-design .site-navtoggle{color:var(--ppt-ink,#141922);border-color:var(--ppt-line,#e3e8ee)}
.site-navtoggle .site-navtoggle-close{display:none}
.site-header.is-open .site-navtoggle-open{display:none}
.site-header.is-open .site-navtoggle-close{display:block}

@media (max-width:860px){
  .site-header-in{flex-wrap:wrap}
  .site-navtoggle{display:inline-flex;margin-inline-start:auto}
  .site-collapse{display:none;order:3;flex-basis:100%;width:100%;flex-direction:column;align-items:stretch;gap:10px;padding:12px 0 4px}
  .site-header.is-open .site-collapse{display:flex}
  .site-nav{width:100%}
  .site-nav-menu{flex-direction:column;gap:2px;width:100%}
  .site-nav-menu>li>a{display:block;padding:11px 12px;border-radius:9px}
  .site-nav-menu>li>a:hover{background:color-mix(in srgb,currentColor 8%,transparent)}
  .ppt-nav-dd{display:block;width:100%}
  .ppt-nav-ddtoggle{padding:11px 12px;border-radius:9px;justify-content:space-between}
  .site-actions{margin-inline-start:0;width:100%;flex-wrap:wrap;gap:8px}
  .site-actions .site-btn{flex:1 1 auto;justify-content:center}
  .ppt-hdr-dd{width:100%}
  .ppt-hdr-btn{width:100%;justify-content:space-between}
  .ppt-hdr-menu{inset-inline-end:auto;inset-inline-start:0;width:100%}
}

/* Design-scoped header BLOCK as the site header (Frontend\Chrome::renderHeaderBlock):
   the block paints its own band, so the wrapper adds no chrome of its own. */
.site-header.site-header-block{border-bottom:0;background:transparent}
.site-header.site-header-block>.ppt-block{margin:0}
/* Fixed top bars (WP admin bar / design-preview bar) — sticky headers sit below them. */
body.admin-bar{--ppt-topbar:var(--wp-admin--admin-bar--height,32px)}

/* Centered header variant (Design ▸ Header/Footer): centred logo above a centred menu bar. */
.site-header-centered .shc-brandrow{position:relative;display:flex;align-items:center;justify-content:center;min-height:74px;padding:12px 0}
.site-header-centered .shc-brandrow .site-brand{font-size:1.18rem}
.site-header-centered .shc-navrow{border-top:1px solid var(--ppt-line)}
body.ppt-has-design .site-header-centered .shc-navrow{border-top-color:var(--ppt-line,#e3e8ee)}
.site-header-centered .shc-collapse{position:relative;display:flex;align-items:center;justify-content:center;gap:22px;min-height:52px}
.site-header-centered .shc-collapse .site-actions{position:absolute;inset-inline-end:calc(var(--bs-gutter-x,1.5rem) * .5);top:50%;transform:translateY(-50%);margin-inline-start:0;width:auto}
@media (max-width:860px){
  .site-header-centered .shc-brandrow{justify-content:center}
  .site-header-centered .shc-brandrow .site-navtoggle{position:absolute;inset-inline-end:0;top:50%;transform:translateY(-50%);margin-inline-start:0}
  .site-header-centered .shc-collapse{display:none;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:10px;min-height:0;padding:12px 0}
  .site-header-centered.is-open .shc-collapse{display:flex}
  .site-header-centered .shc-collapse .site-actions{position:static;transform:none;width:100%}
}
.footer-nav-menu{list-style:none}
.footer-nav-menu a{color:var(--ppt-muted);text-decoration:none}
.footer-nav-menu a:hover{color:var(--ppt-ink)}
.ppt-footer-links{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:center}
.ppt-footer-link{color:var(--ppt-muted);text-decoration:none;font-size:14px}
.ppt-footer-link:hover{color:var(--ppt-ink)}
body.ppt-has-design .ppt-footer-link{color:var(--ppt-muted,#5b6675)}
body.ppt-has-design .ppt-footer-link:hover{color:var(--ppt-ink,#141922)}

/* Mega footer variant (Design ▸ Header & Footer) */
.site-footer-mega{background:var(--ppt-surface,#f7f9fc);border-top:1px solid var(--ppt-line,#e6ebf1);color:var(--ppt-ink,#141922)}
.site-footer-mega .ppt-foot-brand{display:inline-flex;text-decoration:none;margin-bottom:14px}
.site-footer-mega .ppt-foot-blurb{color:var(--ppt-muted,#6b7280);font-size:14px;line-height:1.6;max-width:36ch;margin:0 0 18px}
.site-footer-mega .ppt-foot-sub{max-width:380px}
.site-footer-mega .ppt-foot-subh{display:block;font-size:13px;font-weight:700;margin-bottom:8px}
.site-footer-mega .ppt-foot-h{font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ppt-muted,#6b7280);margin:0 0 14px}
.site-footer-mega .ppt-foot-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}
.site-footer-mega .ppt-foot-list a{color:var(--ppt-ink,#141922);text-decoration:none;font-size:14px}
.site-footer-mega .ppt-foot-list a:hover{color:var(--ppt-brand,#0d9488)}
.site-footer-mega .ppt-foot-contact{margin-top:18px;display:flex;flex-direction:column;gap:6px}
.site-footer-mega .ppt-foot-contact a{color:var(--ppt-muted,#6b7280);text-decoration:none;font-size:14px}
.site-footer-mega .ppt-foot-contact a:hover{color:var(--ppt-brand,#0d9488)}
.site-footer-mega .ppt-foot-bar{border-top:1px solid var(--ppt-line,#e6ebf1)}
.site-footer-mega .ppt-foot-copy{color:var(--ppt-muted,#6b7280);font-size:13px}
.site-footer-mega .ppt-foot-legal a{color:var(--ppt-muted,#6b7280);text-decoration:none;font-size:13px}
.site-footer-mega .ppt-foot-legal a:hover{color:var(--ppt-brand,#0d9488)}

/* Modern footer variant (Design ▸ Header & Footer) — centered & spacious. */
.site-footer-modern{background:var(--ppt-bg,#fff);border-top:1px solid var(--ppt-line,#e6ebf1);color:var(--ppt-ink,#141922);padding:56px 0 40px}
.site-footer-modern .ppt-mf-cta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px 32px;border-radius:22px;padding:34px 40px;margin:0 0 52px;color:#fff;background-color:var(--ppt-brand,#0d9488);background-image:linear-gradient(135deg,rgba(255,255,255,.12),rgba(0,0,0,.14))}
.site-footer-modern .ppt-mf-cta-h{margin:0 0 6px;font-size:24px;font-weight:800;letter-spacing:-.01em;color:#fff;line-height:1.2}
.site-footer-modern .ppt-mf-cta-sub{margin:0;font-size:15px;color:rgba(255,255,255,.88);max-width:52ch}
.site-footer-modern .ppt-mf-cta-btn{flex:none;background:#fff;color:var(--ppt-brand,#0d9488);border-radius:999px;padding:13px 28px;font-weight:700;font-size:15px;text-decoration:none;white-space:nowrap;box-shadow:0 6px 18px rgba(0,0,0,.14);transition:transform .12s,box-shadow .12s}
.site-footer-modern .ppt-mf-cta-btn:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(0,0,0,.2)}
.site-footer-modern .ppt-mf-main{text-align:center;max-width:760px;margin:0 auto}
.site-footer-modern .ppt-mf-brand{display:inline-flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;letter-spacing:-.02em;text-decoration:none;color:var(--ppt-ink,#141922);margin-bottom:12px}
.site-footer-modern .ppt-mf-tagline{color:var(--ppt-muted,#6b7280);font-size:15px;line-height:1.6;max-width:54ch;margin:0 auto 28px}
.site-footer-modern .ppt-mf-links{display:flex;flex-wrap:wrap;justify-content:center;gap:12px 28px;margin:0 0 32px;padding:0;list-style:none}
.site-footer-modern .ppt-mf-links a{color:var(--ppt-ink,#141922);text-decoration:none;font-size:14.5px;font-weight:500}
.site-footer-modern .ppt-mf-links a:hover{color:var(--ppt-brand,#0d9488)}
.site-footer-modern .ppt-mf-sub{max-width:460px;margin:0 auto}
.site-footer-modern .ppt-mf-subh{display:block;font-size:13px;font-weight:700;margin-bottom:10px;color:var(--ppt-ink,#141922)}
.site-footer-modern .ppt-mf-sub .input-group{background:var(--ppt-surface,#fff);border:1px solid var(--ppt-line,#e6ebf1);border-radius:999px;padding:5px;flex-wrap:nowrap}
.site-footer-modern .ppt-mf-sub .form-control{border:0;background:transparent;padding:8px;padding-inline-start:18px;border-radius:999px;box-shadow:none!important;outline:none}
.site-footer-modern .ppt-mf-sub .btn{border-radius:999px;padding:9px 24px;font-weight:600;white-space:nowrap}
.site-footer-modern .ppt-mf-bar{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 18px;border-top:1px solid var(--ppt-line,#e6ebf1);margin-top:46px;padding-top:24px}
.site-footer-modern .ppt-mf-copy{margin:0;color:var(--ppt-muted,#6b7280);font-size:13px}
.site-footer-modern .ppt-mf-legal{display:flex;gap:18px}
.site-footer-modern .ppt-mf-legal a{color:var(--ppt-muted,#6b7280);text-decoration:none;font-size:13px}
.site-footer-modern .ppt-mf-legal a:hover{color:var(--ppt-brand,#0d9488)}
@media (max-width:600px){.site-footer-modern .ppt-mf-cta{padding:26px 24px;text-align:center;justify-content:center}.site-footer-modern .ppt-mf-cta-sub{margin-inline-start:auto;margin-inline-end:auto}}

/* Newsletter subscribe form — shared by the mega footer AND the Subscribe block.
   The honeypot's hide rule used to live only inside the Subscribe block's inline
   CSS, so anywhere else the form appeared (e.g. the mega footer) the honeypot
   rendered as a visible empty input. Hide it globally wherever the form is used. */
.ppt-subscribe-form .ppt-sub-hp{position:absolute!important;inset-inline-start:-9999px!important;width:1px;height:1px;padding:0;margin:0;border:0;opacity:0;overflow:hidden}
.ppt-subscribe-form .ppt-sub-msg{margin-top:10px;font-size:14px;font-weight:600}
.ppt-subscribe-form .ppt-sub-msg.is-ok{color:#12855a}
.ppt-subscribe-form .ppt-sub-msg.is-err{color:#d92d20}

/* When a design is active, the chrome adopts that design's colour scheme so the
   header + footer match the design (and each other) instead of staying light. */
body.ppt-has-design{background:var(--ppt-bg,#fff);color:var(--ppt-ink,#141922)}
/* Bridge Bootstrap's colour vars to the active scheme so generic Bootstrap-classed
   content (search filters, single-listing cards, headings, muted text, form
   controls) stays legible on dark/tinted designs — not just the chrome. */
body.ppt-has-design{
  --bs-body-color:var(--ppt-ink,#141922);
  --bs-body-bg:var(--ppt-bg,#fff);
  --bs-secondary-color:var(--ppt-muted,#5b6675);
  --bs-tertiary-color:var(--ppt-muted,#5b6675);
  --bs-emphasis-color:var(--ppt-ink,#141922);
  --bs-heading-color:var(--ppt-ink,#141922);
  --bs-border-color:var(--ppt-line,#e3e8ee);
  --bs-card-bg:var(--ppt-surface,#fff);
  --bs-card-color:var(--ppt-ink,#141922);
}
body.ppt-has-design .card{background-color:var(--ppt-surface,#fff);border-color:var(--ppt-line,#e3e8ee);color:var(--ppt-ink,#141922)}
body.ppt-has-design .form-control,
body.ppt-has-design .form-select{
  background-color:var(--ppt-surface-2,var(--ppt-surface,#fff));
  border-color:var(--ppt-line,#e3e8ee);
  color:var(--ppt-ink,#141922);
}
body.ppt-has-design .form-control::placeholder{color:var(--ppt-muted,#6b7280);opacity:1}
body.ppt-has-design .form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23888' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e")}
body.ppt-has-design .site-header{background:var(--ppt-surface,#fff);border-bottom-color:var(--ppt-line,#e3e8ee)}
body.ppt-has-design .site-footer{background:var(--ppt-surface,#fff);border-top-color:var(--ppt-line,#e3e8ee)}
body.ppt-has-design .site-brand,
body.ppt-has-design .site-brand-name,
body.ppt-has-design .site-brand:hover{color:var(--ppt-ink,#141922)}
body.ppt-has-design .site-nav-menu>li>a,
body.ppt-has-design .footer-nav-menu a,
body.ppt-has-design .site-copy{color:var(--ppt-muted,#5b6675)}
body.ppt-has-design .site-nav-menu>li>a:hover,
body.ppt-has-design .footer-nav-menu a:hover{color:var(--ppt-ink,#141922)}
body.ppt-has-design .site-btn-ghost{color:var(--ppt-ink,#141922);border-color:var(--ppt-line,#e3e8ee)}

/* ==========================================================================
   Blog — /blog/ index, post archives and single posts. Two columns (posts +
   sidebar), design-token themed, pagination at the bottom.
   ========================================================================== */
.ppt-blog{padding:40px 0 64px;color:var(--ppt-ink,#141922);}
.ppt-blog-head{margin:0 0 28px;}
.ppt-blog-title{font-family:var(--fd,'Plus Jakarta Sans',sans-serif);font-size:clamp(28px,4vw,40px);font-weight:800;letter-spacing:-.02em;margin:0;color:var(--ppt-ink,#141922);}
.ppt-blog-sub{margin:8px 0 0;color:var(--ppt-muted,#5b6675);font-size:16px;}

.ppt-blog-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:40px;align-items:start;}
@media(max-width:900px){.ppt-blog-grid{grid-template-columns:1fr;gap:32px;}}

/* Post list ------------------------------------------------------------- */
.ppt-blog-list{display:flex;flex-direction:column;gap:22px;}
.ppt-post-card{
  display:grid;grid-template-columns:240px minmax(0,1fr);gap:20px;
  background:var(--ppt-surface,#fff);border:1px solid var(--ppt-line,#e7e9f0);
  border-radius:calc(var(--ppt-radius,8px) + 6px);overflow:hidden;
  transition:box-shadow .18s ease,transform .18s ease,border-color .18s ease;
}
.ppt-post-card:hover{box-shadow:var(--ppt-shadow,0 16px 40px rgba(20,33,58,.09));transform:translateY(-2px);border-color:var(--ppt-line-2,#dadde8);}
@media(max-width:560px){.ppt-post-card{grid-template-columns:1fr;}.ppt-post-thumb{aspect-ratio:16/9;}}
.ppt-post-thumb{display:block;position:relative;background:var(--ppt-bg-2,#eef1f6);overflow:hidden;}
.ppt-post-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease;}
.ppt-post-card:hover .ppt-post-thumb img{transform:scale(1.04);}
.ppt-post-thumb-ph{position:absolute;inset:0;display:grid;place-items:center;color:var(--ppt-muted,#9aa3af);background:var(--ppt-bg-2,#eef1f6);}
.ppt-post-body{padding:18px 20px 20px;display:flex;flex-direction:column;align-items:flex-start;min-width:0;}
.ppt-post-cat{
  display:inline-block;font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  color:var(--ppt-brand,#2563eb);text-decoration:none;margin-bottom:8px;
}
.ppt-post-cat:hover{text-decoration:underline;}
.ppt-post-title{font-family:var(--fd,'Plus Jakarta Sans',sans-serif);font-size:21px;line-height:1.28;font-weight:700;margin:0 0 8px;letter-spacing:-.01em;}
.ppt-post-title a{color:var(--ppt-ink,#141922);text-decoration:none;}
.ppt-post-title a:hover{color:var(--ppt-brand,#2563eb);}
.ppt-post-meta{font-size:13px;color:var(--ppt-muted,#6b7280);margin-bottom:10px;display:flex;gap:7px;align-items:center;}
.ppt-post-excerpt{margin:0 0 14px;color:var(--ppt-ink-2,#3a4155);font-size:14.5px;line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.ppt-post-more{margin-top:auto;font-weight:600;font-size:14px;color:var(--ppt-brand,#2563eb);text-decoration:none;}
.ppt-post-more:hover{text-decoration:underline;}
.ppt-blog-empty{padding:48px 0;text-align:center;color:var(--ppt-muted,#6b7280);font-size:16px;}

/* Sidebar --------------------------------------------------------------- */
.ppt-blog-side{display:flex;flex-direction:column;gap:22px;position:sticky;top:24px;}
@media(max-width:900px){.ppt-blog-side{position:static;}}
.ppt-blog-widget{background:var(--ppt-surface,#fff);border:1px solid var(--ppt-line,#e7e9f0);border-radius:calc(var(--ppt-radius,8px) + 6px);padding:18px 20px;}
.ppt-blog-widget-t{font-family:var(--fd,'Plus Jakarta Sans',sans-serif);font-size:15px;font-weight:700;margin:0 0 12px;color:var(--ppt-ink,#141922);}
.ppt-blog-cats{list-style:none;margin:0;padding:0;}
.ppt-blog-cats li{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0;padding:9px 0;border-top:1px solid var(--ppt-line,#eef0f3);color:var(--ppt-muted,#6b7280);font-size:13px;}
.ppt-blog-cats li:first-child{border-top:0;}
.ppt-blog-cats a{color:var(--ppt-ink-2,#3a4155);text-decoration:none;font-size:14.5px;}
.ppt-blog-cats a:hover{color:var(--ppt-brand,#2563eb);}
.ppt-blog-recent{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px;}
.ppt-blog-recent a{display:flex;gap:12px;align-items:center;text-decoration:none;}
.ppt-blog-recent-img{flex:0 0 auto;width:58px;height:58px;border-radius:var(--ppt-radius,8px);overflow:hidden;background:var(--ppt-bg-2,#eef1f6);display:block;}
.ppt-blog-recent-img img{width:100%;height:100%;object-fit:cover;display:block;}
.ppt-blog-recent-meta{min-width:0;}
.ppt-blog-recent-t{display:block;font-weight:600;font-size:13.5px;color:var(--ppt-ink,#141922);line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.ppt-blog-recent a:hover .ppt-blog-recent-t{color:var(--ppt-brand,#2563eb);}
.ppt-blog-recent-d{display:block;font-size:12px;color:var(--ppt-muted,#6b7280);margin-top:2px;}
.ppt-blog-tags{display:flex;flex-wrap:wrap;gap:8px;}
.ppt-blog-tags a{
  font-size:12.5px;color:var(--ppt-ink-2,#3a4155);text-decoration:none;
  background:var(--ppt-bg-2,#f1f2f4);border:1px solid var(--ppt-line,#e7e9f0);
  border-radius:999px;padding:4px 11px;
}
.ppt-blog-tags a:hover{color:var(--ppt-brand,#2563eb);border-color:var(--ppt-brand,#2563eb);}

/* Pagination ------------------------------------------------------------ */
.ppt-blog-pager{margin-top:32px;}
.ppt-blog-pager .page-numbers{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px;}
.ppt-blog-pager .page-numbers li{margin:0;}
.ppt-blog-pager a.page-numbers,
.ppt-blog-pager span.page-numbers{
  display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 12px;
  border:1px solid var(--ppt-line,#e7e9f0);border-radius:var(--ppt-radius,8px);
  background:var(--ppt-surface,#fff);color:var(--ppt-ink-2,#3a4155);text-decoration:none;font-weight:600;font-size:14px;
}
.ppt-blog-pager a.page-numbers:hover{border-color:var(--ppt-brand,#2563eb);color:var(--ppt-brand,#2563eb);}
.ppt-blog-pager span.page-numbers.current{background:var(--ppt-brand,#2563eb);border-color:var(--ppt-brand,#2563eb);color:var(--ppt-brand-ink,#fff);}
.ppt-blog-pager span.page-numbers.dots{border-color:transparent;background:none;}

/* Single post ----------------------------------------------------------- */
.ppt-single-crumbs{font-size:13px;color:var(--ppt-muted,#6b7280);margin-bottom:14px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.ppt-single-crumbs a{color:var(--ppt-brand,#2563eb);text-decoration:none;}
.ppt-single-crumbs a:hover{text-decoration:underline;}
.ppt-single-title{font-family:var(--fd,'Plus Jakarta Sans',sans-serif);font-size:clamp(26px,4vw,38px);font-weight:800;letter-spacing:-.02em;line-height:1.18;margin:0 0 12px;}
.ppt-single-meta{font-size:14px;color:var(--ppt-muted,#6b7280);margin-bottom:22px;display:flex;gap:8px;align-items:center;}
.ppt-single-hero{border-radius:calc(var(--ppt-radius,8px) + 8px);overflow:hidden;margin-bottom:26px;}
.ppt-single-hero img{width:100%;height:auto;display:block;}
.ppt-single-content{font-size:16.5px;line-height:1.75;color:var(--ppt-ink-2,#33384a);}
.ppt-single-content > *{margin:0 0 1.1em;}
.ppt-single-content h2,.ppt-single-content h3{font-family:var(--fd,'Plus Jakarta Sans',sans-serif);color:var(--ppt-ink,#141922);font-weight:700;margin:1.6em 0 .6em;line-height:1.3;}
.ppt-single-content h2{font-size:25px;}.ppt-single-content h3{font-size:20px;}
.ppt-single-content a{color:var(--ppt-brand,#2563eb);}
.ppt-single-content img{max-width:100%;height:auto;border-radius:var(--ppt-radius,8px);}
.ppt-single-content blockquote{margin:1.4em 0;padding:4px 0;padding-inline-start:20px;border-inline-start:3px solid var(--ppt-brand,#2563eb);color:var(--ppt-ink,#141922);font-style:italic;}
.ppt-single-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:30px;padding-top:22px;border-top:1px solid var(--ppt-line,#e7e9f0);}
.ppt-single-tags a{font-size:12.5px;color:var(--ppt-ink-2,#3a4155);text-decoration:none;background:var(--ppt-bg-2,#f1f2f4);border:1px solid var(--ppt-line,#e7e9f0);border-radius:999px;padding:4px 11px;}
.ppt-single-tags a:hover{color:var(--ppt-brand,#2563eb);border-color:var(--ppt-brand,#2563eb);}

/* Subscription confirmation landing (/subscribe/confirm/<token>/) */
.ppt-confirm{display:flex;justify-content:center;padding:64px 16px 88px;}
.ppt-confirm-card{max-width:520px;width:100%;text-align:center;background:var(--ppt-surface,#fff);border:1px solid var(--ppt-line,#e7e9f0);border-radius:calc(var(--ppt-radius,8px) + 10px);padding:40px 34px;box-shadow:var(--ppt-shadow,0 16px 40px rgba(20,33,58,.09));}
.ppt-confirm-mark{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;margin:0 auto 20px;}
.ppt-confirm-mark svg{width:30px;height:30px;}
.ppt-confirm-mark.is-ok{background:#e7f8ef;color:#12855a;}
.ppt-confirm-mark.is-bad{background:#fef3f2;color:#d92d20;}
.ppt-confirm-title{font-family:var(--fd,'Plus Jakarta Sans',sans-serif);font-size:26px;font-weight:800;letter-spacing:-.02em;margin:0 0 10px;color:var(--ppt-ink,#141922);}
.ppt-confirm-sub{color:var(--ppt-muted,#5b6675);font-size:15.5px;line-height:1.6;margin:0 0 24px;}

/* Hero search shared helpers — real inputs + "use my location" pin buttons. */
.ppt-geo-btn{border:0;background:none;padding:0;margin:0;cursor:pointer;display:inline-flex;align-items:center;flex:0 0 auto;color:inherit;line-height:0;}
.ppt-geo-btn:hover{opacity:.7;}
.ppt-geo-btn.is-loading{opacity:.5;}
.ppt-hero-inp{border:0;outline:0;background:transparent;font:inherit;color:inherit;width:100%;min-width:0;padding:0;margin:0;}
.ppt-hero-inp::placeholder{color:var(--ppt-muted,#6b7280);opacity:1;}
.ppt-hero-go{border:0;cursor:pointer;font:inherit;}
