/*
Theme Name:   PPA Astra Child
Theme URI:    https://capankajpathak.com
Description:  Child theme for Pankaj Pathak & Associates, Chartered Accountants — ported from the approved design (colour, logo, type, layout) built in an earlier prototype, into a complete, working WordPress build. Parent: Astra.
Author:       Pankaj Pathak & Associates
Template:     astra
Version:      1.2.0
Requires at least: 6.6
Requires PHP: 8.2
Text Domain:  ppa
License:      GPL-2.0-or-later
*/

/* ============================================================
   DESIGN TOKENS — matched to the approved prototype exactly:
   ink #171412, paper #F4EFE6, seal #8C2A24, rule #C9BBA8.
   Display type: Instrument Serif. Body/UI type: Outfit.
   ============================================================ */
:root{
  --font-sans: "Outfit", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-display: "Instrument Serif", "Iowan Old Style", Georgia, ui-serif, serif;

  --ink:        #171412;
  --ink-soft:   #2c2722;
  --paper:      #f4efe6;
  --paper-deep: #ebe3d6;
  --panel:      #e6ddd0;
  --seal:       #8c2a24;
  --seal-deep:  #6f211c;
  --rule:       #c9bba8;
  --rule-strong:#a8947a;
  --muted:      #6d6558;
  --fg:         #1c1915;
  --fg-muted:   #5e574c;
  --cream:      #faf6ee;
  --input:      #d9cebc;

  /* Kept apart from the decorative seal so a flag colour is never
     also a brand colour. Not in the source prototype (it had no
     "wrong number of due dates on one bar" state to colour), added
     for the calendar's clickable month drill-down. */
  --verified:   #3b6b4c;

  --radius-xs: 2px; --radius-sm: 4px; --radius-md: 8px; --radius-lg: 14px; --radius-xl: 22px;
  --shadow-seal:  0 18px 40px -18px rgb(140 42 36 / 0.45);
  --shadow-paper: 0 1px 0 rgb(23 20 18 / 0.06), 0 12px 32px -20px rgb(23 20 18 / 0.28);

  --wrap: 1152px;
  --space-1: .5rem; --space-2: .875rem; --space-3: 1.25rem;
  --space-4: 2rem;  --space-5: 3rem;    --space-6: 4.5rem;
}

/* ============================================================
   BASE
   ============================================================ */
*, *::before, *::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
/* Astra (the parent theme) ships its own body-level colour, link
   and button rules, some scoped no more loosely than plain "body"
   or "a" - loaded before this file, but not guaranteed to lose a
   tie-break against a same-specificity rule here. ".ppa-site" (see
   functions.php's body_class filter) plus "!important" on exactly
   these few brand-critical properties - never on layout - is the
   deliberate, narrow fix; everything else in this file overrides
   Astra by normal cascade order, same as any child theme. */
body.ppa-site{
  background:var(--paper) !important; color:var(--fg) !important;
  font-family:var(--font-sans); font-size:1.0125rem; line-height:1.62; letter-spacing:.005em;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
}
img{ max-width:100%; height:auto; display:block; }
/* NOT "color: inherit" here, on either this or the button rule below
   - that was the bug. "body.ppa-site a" (element + one class)
   out-specifies a bare single-class component rule like .ppa-btn by
   element count alone, so it doesn't matter that it only says
   "inherit": it still wins over a button's OWN intended text colour
   and leaves that text whatever colour the surrounding block happens
   to be - which is exactly how "Compliance calendar" and "Write to
   the firm" ended up with unreadable dark text on a dark/maroon
   background. Text-decoration alone is safe to reset this broadly;
   every component that cares about its own colour now sets it with
   !important instead of trusting source order to be enough. */
body.ppa-site a{ text-decoration:none; }
body.ppa-site button{
  font-family:inherit; font-size:inherit;
  background:none; border:0;
  box-shadow:none; -webkit-appearance:none; appearance:none;
}
button:not(:disabled), [role="button"]:not(:disabled){ cursor:pointer; }
body.ppa-site svg{ display:block; max-width:100%; }
/* Astra's own list defaults apparently beat this theme's on the live
   site the same way - fixed the same safe way, on this theme's own
   list classes specifically rather than a bare "ul, ol" that would
   just lose the identical fight again. */
body.ppa-site ul.ppa-knowledge-list, body.ppa-site ul.ppa-check-list,
body.ppa-site ul.ppa-preview-list, body.ppa-site ol.ppa-next-list,
body.ppa-site ul.ppa-sidebar__toc, body.ppa-site ul.ppa-sidebar__due,
body.ppa-site ul.ppa-sidebar__related, body.ppa-site ul.ppa-tag-row,
body.ppa-site ul.ppa-industries, body.ppa-site ul.ppa-404__links,
body.ppa-site ul.ppa-mobile-nav__list{
  list-style:none !important; margin:0; padding:0;
}
h1,h2,h3,h4,.entry-title{
  font-family:var(--font-display); font-weight:400; letter-spacing:-0.02em; color:var(--ink);
  text-wrap:balance; line-height:1.12; margin:0;
}
p{ margin:0; text-wrap:pretty; }
:focus-visible{ outline:2px solid var(--seal); outline-offset:3px; }
::selection{ background:rgba(140,42,36,.22); color:var(--ink); }

.ppa-wrap{ max-width:var(--wrap); margin-inline:auto; padding-inline:1rem; }
@media (min-width:640px){ .ppa-wrap{ padding-inline:1.5rem; } }

.ppa-visually-hidden{
  position:absolute !important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

/* ============================================================
   MOTION — same easing/keyframes as the prototype; all guarded
   by prefers-reduced-motion.
   ============================================================ */
@media (prefers-reduced-motion:no-preference){
  .ppa-reveal{ animation:ppa-rise .7s cubic-bezier(.22,1,.36,1) both; }
  .ppa-draw-rule{ transform-origin:left; animation:ppa-draw 1.1s cubic-bezier(.22,1,.36,1) both; }
  .ppa-seal-press{ animation:ppa-seal-press .8s cubic-bezier(.22,1,.36,1) both; }
  .ppa-ticker-track{ animation:ppa-ticker 38s linear infinite; }
  .ppa-ticker-track:hover{ animation-play-state:paused; }
}
@keyframes ppa-rise{ from{ opacity:0; transform:translateY(14px); filter:blur(4px); } to{ opacity:1; transform:none; filter:blur(0); } }
@keyframes ppa-draw{ from{ transform:scaleX(0); opacity:0; } to{ transform:scaleX(1); opacity:1; } }
@keyframes ppa-seal-press{ from{ transform:scale(1.04); filter:blur(2px); opacity:.6; } to{ transform:scale(1); filter:blur(0); opacity:1; } }
@keyframes ppa-ticker{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }

/* ============================================================
   BUTTONS / LINKS
   ============================================================ */
.ppa-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  height:2.75rem; padding-inline:1.25rem; border-radius:var(--radius-md);
  font-size:.875rem; font-weight:500; text-decoration:none; border:1px solid transparent;
  transition:background-color .2s ease, border-color .2s ease, color .2s ease;
}
/* !important on every one of these colours specifically because
   body.ppa-site a's own reset (and Astra's, underneath it) would
   otherwise win on element-count alone and these buttons would read
   in whatever colour the surrounding section happens to be - the
   "Compliance calendar" and "Write to the firm" bug. */
.ppa-btn--solid{ background:var(--seal); color:var(--paper) !important; }
.ppa-btn--solid:hover{ background:var(--seal-deep); color:var(--paper) !important; }
.ppa-btn--outline{ border-color:rgba(23,20,18,.2); color:var(--ink) !important; }
.ppa-btn--outline:hover{ border-color:var(--seal); color:var(--seal) !important; }
.ppa-btn--outline-paper{ border-color:rgba(244,239,230,.3); color:var(--paper) !important; }
.ppa-btn--outline-paper:hover{ border-color:var(--paper); color:var(--paper) !important; }
.ppa-link{ color:var(--ink); text-decoration:none; }
.ppa-link:hover{ color:var(--seal); }
.ppa-kicker{ font-size:.72rem; font-weight:500; text-transform:uppercase; letter-spacing:.16em; color:var(--seal); }
.ppa-eyebrow-paper{ font-size:.72rem; font-weight:500; text-transform:uppercase; letter-spacing:.22em; color:rgba(244,239,230,.7); }

/* ============================================================
   LOGO
   ============================================================ */
.ppa-logo{ display:flex; align-items:center; gap:.65rem; text-decoration:none; min-width:0; }
.ppa-seal{ display:block; flex-shrink:0; filter:drop-shadow(0 10px 22px rgba(140,42,36,.35)); transition:transform .3s cubic-bezier(.22,1,.36,1); }
.ppa-logo:hover .ppa-seal{ transform:scale(1.03); }
.ppa-seal--md{ width:2.75rem; height:2.75rem; }
.ppa-seal--sm{ width:2.25rem; height:2.25rem; }
@media (min-width:640px){ .ppa-seal--md{ width:3.15rem; height:3.15rem; } }
.ppa-logo__text{ min-width:0; line-height:1.25; }
.ppa-logo__name, .ppa-logo__name--sm{ display:block; font-family:var(--font-display); letter-spacing:-.03em; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ppa-logo__name{ font-size:1.02rem; }
.ppa-logo__name--sm{ font-size:.92rem; }
@media (min-width:640px){ .ppa-logo__name{ font-size:1.22rem; } .ppa-logo__name--sm{ font-size:1.05rem; } }
.ppa-logo__sub{ display:block; margin-top:.1rem; font-size:.62rem; font-weight:500; text-transform:uppercase; letter-spacing:.16em; color:var(--muted); }
@media (min-width:640px){ .ppa-logo__sub{ font-size:.7rem; } }
.ppa-logo--on-ink .ppa-logo__name, .ppa-logo--on-ink .ppa-logo__name--sm{ color:var(--paper); }
.ppa-logo--on-ink .ppa-logo__sub{ color:rgba(244,239,230,.7); }

/* ============================================================
   HEADER
   ============================================================ */
.ppa-header{ position:sticky; top:0; z-index:50; }
.ppa-hide-xs{ }
@media (max-width:479px){ .ppa-hide-xs{ display:none; } }

.ppa-utility{ background:var(--ink); color:var(--paper); overflow:hidden; transition:max-height .3s cubic-bezier(.22,1,.36,1), opacity .3s ease, padding .3s ease; max-height:2.75rem; }
.ppa-header.is-scrolled .ppa-utility{ max-height:0; opacity:0; }
.ppa-utility__row{ display:flex; align-items:center; justify-content:space-between; gap:.75rem; padding-block:.5rem; font-size:.72rem; }
.ppa-utility__cities{ display:flex; align-items:center; gap:.4rem; letter-spacing:.1em; min-width:0; }
.ppa-utility__cities a{ color:rgba(244,239,230,.85) !important; text-decoration:none; white-space:nowrap; }
.ppa-utility__cities a:hover{ color:var(--paper) !important; }
.ppa-utility__cities span{ color:rgba(244,239,230,.4); }
.ppa-utility__actions{ display:flex; align-items:center; gap:.9rem; font-weight:500; flex-shrink:0; }
.ppa-utility__actions a{ display:inline-flex; align-items:center; gap:.4rem; color:rgba(244,239,230,.85) !important; text-decoration:none; }
.ppa-utility__actions a:hover{ color:var(--paper) !important; }

.ppa-mainbar{ background:rgba(244,239,230,.97); backdrop-filter:blur(8px); border-bottom:1px solid rgba(201,187,168,.8); transition:padding .3s cubic-bezier(.22,1,.36,1), box-shadow .3s ease; padding-block:.9rem; }
@media (min-width:640px){ .ppa-mainbar{ padding-block:1.1rem; } }
.ppa-header.is-scrolled .ppa-mainbar{ padding-block:.55rem; box-shadow:0 8px 24px -18px rgba(23,20,18,.55); }
.ppa-mainbar__row{ display:flex; align-items:center; gap:.75rem; }

.ppa-nav{ display:none; align-items:center; gap:.1rem; margin-inline-start:auto; }
@media (min-width:1024px){ .ppa-nav{ display:flex; } }
.ppa-nav__link{ padding:.5rem .8rem; border-radius:var(--radius-md); font-size:.86rem; letter-spacing:.01em; text-decoration:none; color:var(--ink-soft); transition:color .2s ease; }
.ppa-nav__link:hover{ color:var(--ink); }
.ppa-nav__link.is-active{ color:var(--seal); }

.ppa-header__cta{ display:none; margin-inline-start:.5rem; font-size:.78rem; }
@media (min-width:1024px){ .ppa-header__cta{ display:inline-flex; } }

.ppa-nav-toggle{
  display:inline-flex !important; align-items:center; justify-content:center;
  width:2.75rem; height:2.75rem; margin-inline-start:auto; flex-shrink:0;
  background:transparent !important; border:0 !important; padding:0 !important;
  color:var(--ink) !important; -webkit-tap-highlight-color:transparent;
}
@media (min-width:1024px){ .ppa-nav-toggle{ display:none !important; } }
.ppa-nav-toggle svg{ display:block !important; width:24px; height:24px; flex-shrink:0; stroke:currentColor; }
.ppa-nav-toggle .ppa-icon-close{ display:none !important; }
.ppa-nav-toggle[aria-expanded="true"] .ppa-icon-open{ display:none !important; }
.ppa-nav-toggle[aria-expanded="true"] .ppa-icon-close{ display:block !important; }

/* top:var(--ppa-header-h), not a fixed rem value: the header is a
   different height with the utility bar showing (unscrolled) than
   without it (scrolled), and a fixed guess was wrong for whichever
   state it didn't match - tall enough to cover part of the header
   itself, including the close button, when unscrolled. The variable
   is measured and kept current by assets/js/main.js. 100svh/dvh
   (falling back to vh) for the height for the same reason mobile
   browsers' address bars already make 100vh unreliable. */
.ppa-mobile-nav{
  display:none; position:fixed; z-index:40; overflow-y:auto; background:var(--paper); border-top:1px solid var(--rule);
  top:var(--ppa-header-h, 4.6rem); left:0; right:0;
  height:calc(100vh - var(--ppa-header-h, 4.6rem));
  height:calc(100svh - var(--ppa-header-h, 4.6rem));
}
.ppa-mobile-nav.is-open{ display:block; }
@media (min-width:1024px){ .ppa-mobile-nav{ display:none !important; } }
.ppa-mobile-nav .ppa-wrap{ padding-block:1.5rem; }
.ppa-mobile-nav__name{ font-family:var(--font-display); font-size:1.6rem; color:var(--ink); }
.ppa-mobile-nav__sub{ margin-top:.25rem; font-size:.72rem; text-transform:uppercase; letter-spacing:.14em; color:var(--muted); }
.ppa-mobile-nav__groups{ margin-top:1.6rem; display:grid; gap:1.75rem; }
.ppa-mobile-nav__group-title{ font-size:.72rem; font-weight:500; text-transform:uppercase; letter-spacing:.16em; color:var(--muted); text-decoration:none; }
.ppa-mobile-nav__list{ list-style:none; margin:.6rem 0 0; padding:0; display:grid; gap:.2rem; }
.ppa-mobile-nav__list a{ display:block; padding-block:.35rem; font-size:1.1rem; color:var(--ink); text-decoration:none; }
.ppa-mobile-nav__plain{ font-size:1.1rem; color:var(--ink); text-decoration:none; }
.ppa-mobile-nav__cta{ width:100%; height:3.1rem; }
body.ppa-nav-locked{ overflow:hidden; }

/* ============================================================
   FOOTER
   ============================================================ */
.ppa-footer{ border-top:1px solid var(--rule); background:var(--paper-deep); }
.ppa-footer__grid{ display:grid; gap:2.5rem; padding-block:3rem; }
@media (min-width:768px){ .ppa-footer__grid{ grid-template-columns:repeat(12,1fr); gap:2rem; } }
.ppa-footer__brand{ }
@media (min-width:768px){ .ppa-footer__brand{ grid-column:span 4; } }
.ppa-footer__desc{ margin-top:1rem; max-width:20rem; font-size:.9rem; color:var(--fg-muted); }
.ppa-footer__contact{ margin-top:1rem; font-size:.9rem; }
.ppa-dot{ margin-inline:.5rem; color:var(--rule-strong); }
.ppa-footer__col{ }
@media (min-width:768px){ .ppa-footer__col{ grid-column:span 2; } .ppa-footer__col:last-child{ grid-column:span 3; } }
.ppa-footer__title{ font-size:.7rem; font-weight:500; text-transform:uppercase; letter-spacing:.16em; color:var(--muted); text-decoration:none; }
.ppa-footer__col ul{ list-style:none; margin:.9rem 0 0; padding:0; display:grid; gap:.4rem; }
.ppa-footer__col a{ font-size:.9rem; color:var(--ink-soft); text-decoration:none; }
.ppa-footer__col a:hover{ color:var(--seal); }
.ppa-footer__bottom{ border-top:1px solid var(--rule); background:var(--paper); }
.ppa-footer__bottom-row{ display:flex; flex-direction:column; gap:.8rem; padding-block:1.1rem; font-size:.78rem; line-height:1.6; color:var(--fg-muted); }
@media (min-width:768px){ .ppa-footer__bottom-row{ flex-direction:row; align-items:flex-start; justify-content:space-between; } }
.ppa-footer__disclaimer{ max-width:48rem; }
.ppa-footer__legal{ flex-shrink:0; }
@media (min-width:768px){ .ppa-footer__legal{ text-align:right; } }

/* ============================================================
   SIDEBAR
   ============================================================ */
.ppa-sidebar{ display:grid; gap:2.25rem; }
.ppa-sidebar__section{ }
.ppa-sidebar__heading{
  font-family:var(--font-sans); font-size:.72rem; font-weight:600; text-transform:uppercase;
  letter-spacing:.16em; color:var(--ink); margin:0 0 .7rem; padding-bottom:.5rem;
  border-bottom:2px solid var(--seal); display:inline-block;
}
.ppa-sidebar__toc{ list-style:none; margin:0; padding:0; display:grid; gap:.45rem; border-left:1px solid var(--rule); }
.ppa-sidebar__toc a{ display:block; padding:.1rem 0 .1rem .9rem; font-size:.86rem; color:var(--fg-muted); text-decoration:none; }
.ppa-sidebar__toc a:hover{ color:var(--seal); }
.ppa-sidebar__due{ list-style:none; margin:0; padding:0; display:grid; gap:.75rem; }
.ppa-sidebar__due-date{ margin:0; font-size:.7rem; font-weight:600; letter-spacing:.06em; color:var(--seal); }
.ppa-sidebar__due a{ display:block; font-size:.9rem; color:var(--ink); text-decoration:none; }
.ppa-sidebar__due a:hover{ color:var(--seal); }
.ppa-sidebar__more{ display:inline-block; margin-top:1rem; font-size:.82rem; font-weight:500; color:var(--seal); text-decoration:none; }
.ppa-sidebar__more:hover{ text-decoration:underline; }
.ppa-sidebar__related{ list-style:none; margin:0; padding:0; display:grid; gap:.55rem; }
.ppa-sidebar__related a{ display:block; font-size:.9rem; color:var(--ink); text-decoration:none; padding-block:.15rem; }
.ppa-sidebar__related a:hover{ color:var(--seal); }
.ppa-sidebar__card{ background:var(--paper-deep); border:1px solid var(--rule); border-radius:var(--radius-lg); padding:1.5rem; }
.ppa-sidebar__heading--card{ border-bottom-color:var(--seal); }
.ppa-sidebar__card-text{ font-size:.86rem; color:var(--fg-muted); margin:0 0 1.1rem; }

/* ============================================================
   DEADLINE CHART
   ============================================================ */
.ppa-chart__bars{ display:grid; grid-template-columns:repeat(12,1fr); align-items:end; gap:.35rem; height:9rem; }
.ppa-chart__bar{ display:flex; flex-direction:column; align-items:center; justify-content:flex-end; height:100%; border:0; background:transparent; padding:0; gap:.35rem; }
.ppa-chart__count{ font-size:.68rem; font-weight:600; color:var(--muted); }
.ppa-chart__bar.is-open .ppa-chart__count, .ppa-chart__bar.is-current .ppa-chart__count{ color:var(--seal); }
.ppa-chart__col{ width:100%; max-width:1.6rem; height:var(--h); background:var(--panel); border-radius:3px 3px 0 0; transition:background-color .2s ease, transform .2s ease; }
.ppa-chart__bar:hover .ppa-chart__col{ background:var(--rule-strong); }
.ppa-chart__bar.is-open .ppa-chart__col{ background:var(--seal); }
.ppa-chart__bar.is-current .ppa-chart__col{ box-shadow:0 0 0 2px var(--seal) inset; }
.ppa-chart__label{ font-size:.66rem; color:var(--muted); }
.ppa-chart__hint{ margin:.6rem 0 0; font-size:.72rem; color:var(--muted); text-align:center; }
.ppa-chart__detail{ margin-top:1.25rem; padding:1.25rem; background:var(--paper-deep); border-radius:var(--radius-md); border:1px solid var(--rule); }
.ppa-chart__detail-title{ font-family:var(--font-sans); font-size:.78rem; font-weight:600; text-transform:uppercase; letter-spacing:.1em; color:var(--seal); margin:0 0 .8rem; }
.ppa-chart__detail-list{ list-style:none; margin:0; padding:0; display:grid; gap:.7rem; }
.ppa-chart__detail-list a{ display:flex; gap:.9rem; text-decoration:none; color:inherit; }
.ppa-chart__detail-date{ flex-shrink:0; width:3.4rem; font-size:.78rem; font-weight:600; color:var(--ink); }
.ppa-chart__detail-name{ display:block; font-size:.88rem; color:var(--ink); }
.ppa-chart__detail-list a:hover .ppa-chart__detail-name{ color:var(--seal); }
.ppa-chart__detail-meta{ display:block; font-size:.72rem; color:var(--muted); margin-top:.1rem; }
.ppa-chart__detail-empty{ margin:0; font-size:.85rem; color:var(--muted); }

/* ============================================================
   ENQUIRY FORM — .ppa-enquiry--compact stacks City/Matter into
   one column; only the standalone Contact-page instance omits
   that modifier and gets the 2-column layout, so a form dropped
   into any narrow sidebar/column never gets squeezed again.
   ============================================================ */
.ppa-enquiry{ display:grid; gap:1rem; }
.ppa-enquiry__row{ display:grid; gap:.4rem; }
.ppa-enquiry__row label{ font-size:.78rem; font-weight:500; color:var(--ink-soft); }
.ppa-enquiry input, .ppa-enquiry select, .ppa-enquiry textarea{
  width:100%; border:1px solid var(--input); border-radius:var(--radius-sm); background:var(--cream);
  padding:.6rem .75rem; font-family:inherit; font-size:.92rem; color:var(--ink);
}
.ppa-enquiry input:focus, .ppa-enquiry select:focus, .ppa-enquiry textarea:focus{ outline:2px solid var(--seal); outline-offset:1px; border-color:var(--seal); }
.ppa-enquiry textarea{ resize:vertical; min-height:5rem; }
.ppa-enquiry__fields2{ display:grid; gap:1rem; grid-template-columns:1fr; }
.ppa-enquiry:not(.ppa-enquiry--compact) .ppa-enquiry__fields2{ grid-template-columns:1fr; }
@media (min-width:480px){
  .ppa-enquiry:not(.ppa-enquiry--compact) .ppa-enquiry__fields2{ grid-template-columns:1fr 1fr; }
}
.ppa-enquiry__submit{ width:100%; margin-top:.25rem; }
.ppa-enquiry__note{ margin:0; font-size:.74rem; color:var(--muted); text-align:center; }
.ppa-enquiry__sent{ display:grid; gap:.7rem; }
.ppa-enquiry__sent-title{ font-family:var(--font-display); font-size:1.15rem; margin:0; color:var(--ink); }
.ppa-enquiry__sent-note{ margin:0; font-size:.85rem; color:var(--fg-muted); }
.ppa-enquiry__sent .ppa-btn{ justify-self:start; }

/* ============================================================
   PROSE / CALLOUT / TABLE / FAQ
   ============================================================ */
.ppa-prose{ font-size:1.02rem; line-height:1.75; color:var(--fg); max-width:64ch; }
.ppa-prose h2{ font-size:1.55rem; margin:2.2rem 0 .9rem; scroll-margin-top:6rem; }
.ppa-prose h3{ font-size:1.2rem; margin:1.7rem 0 .7rem; scroll-margin-top:6rem; }
.ppa-prose p{ margin:0 0 1.1rem; }
.ppa-prose ul, .ppa-prose ol{ margin:0 0 1.1rem; padding-inline-start:1.35rem; display:grid; gap:.4rem; }
.ppa-prose li{ line-height:1.6; }
/* Every link inside written content gets this treatment by default -
   not just ones carrying .ppa-inline-link - so a link never renders
   as plain, unclickable-looking text: this is a "body copy doesn't
   look like a link" fix, not just a styling preference. */
.ppa-prose a, .ppa-faq__a a, .ppa-callout a, .ppa-note a{
  color:var(--seal-deep) !important; text-decoration:underline !important;
  text-decoration-color:var(--rule-strong); text-underline-offset:3px;
}
.ppa-prose a:hover, .ppa-faq__a a:hover, .ppa-callout a:hover, .ppa-note a:hover{ text-decoration-color:var(--seal); }
.ppa-inline-link{ color:var(--seal-deep); text-decoration:underline; text-decoration-color:var(--rule); text-underline-offset:3px; }
.ppa-inline-link:hover{ text-decoration-color:var(--seal); }
.ppa-callout{ margin:0 0 1.3rem; padding:1rem 1.2rem; border-radius:var(--radius-md); font-size:.95rem; line-height:1.6; border-inline-start:3px solid; }
.ppa-callout--info{ background:var(--paper-deep); border-color:var(--rule-strong); color:var(--ink-soft); }
.ppa-callout--warn{ background:#f6e9df; border-color:var(--seal); color:var(--ink); }
.ppa-table-wrap{ overflow-x:auto; margin:0 0 1.3rem; -webkit-overflow-scrolling:touch; }
.ppa-table{ width:100%; border-collapse:collapse; font-size:.88rem; }
.ppa-table th, .ppa-table td{ padding:.55rem .8rem; border-bottom:1px solid var(--rule); text-align:left; vertical-align:top; }
.ppa-table th{ font-weight:600; color:var(--ink); background:var(--paper-deep); white-space:nowrap; }
.ppa-faq{ margin-top:2.5rem; max-width:64ch; }
.ppa-faq__heading{ font-size:1.4rem; margin:0 0 1rem; }
.ppa-faq__item{ border-bottom:1px solid var(--rule); padding-block:.9rem; }
.ppa-faq__item summary{ cursor:pointer; font-weight:500; color:var(--ink); font-size:.98rem; list-style:none; display:flex; justify-content:space-between; gap:1rem; }
.ppa-faq__item summary::-webkit-details-marker{ display:none; }
.ppa-faq__item summary::after{ content:"+"; color:var(--seal); font-size:1.2rem; flex-shrink:0; }
.ppa-faq__item[open] summary::after{ content:"–"; }
.ppa-faq__a{ margin-top:.7rem; font-size:.92rem; color:var(--fg-muted); line-height:1.65; }

/* ============================================================
   CONNECT PROMPT — replaces the old sidebar "Write to the firm"
   card; deliberately compact (one short line + two links, no form
   fields) so it doesn't compete for space with the actual content.
   ============================================================ */
.ppa-connect{
  margin-top:2.5rem; padding:1.25rem 1.4rem; max-width:38rem;
  background:var(--paper-deep); border-inline-start:3px solid var(--seal);
  border-radius:0 var(--radius-md) var(--radius-md) 0;
  display:flex; flex-wrap:wrap; align-items:center; gap:1rem 1.5rem;
}
.ppa-connect__text{ flex:1 1 16rem; margin:0; font-size:.92rem; line-height:1.55; color:var(--ink-soft); }
.ppa-connect__links{ display:flex; gap:.6rem; flex-shrink:0; }
.ppa-connect__links .ppa-btn{ height:2.5rem; padding-inline:1rem; font-size:.82rem; }

/* ============================================================
   ARTICLE LAYOUT (services / locations / guides / answers / updates)
   ============================================================ */
.ppa-crumbs{ font-size:.78rem; color:var(--muted); margin-bottom:1.1rem; }
.ppa-crumbs a{ color:var(--muted); text-decoration:none; }
.ppa-crumbs a:hover{ color:var(--seal); }
.ppa-crumbs span[aria-hidden]{ margin-inline:.4rem; color:var(--rule-strong); }
.ppa-article__hero{ padding-block:2.5rem 2rem; border-bottom:1px solid var(--rule); background:var(--paper-deep); }
@media (min-width:768px){ .ppa-article__hero{ padding-block:3.5rem 2.5rem; } }
.ppa-article__title{ font-size:2.1rem; max-width:38rem; }
@media (min-width:768px){ .ppa-article__title{ font-size:2.75rem; } }
.ppa-article__dek{ margin-top:1rem; max-width:42rem; font-size:1.1rem; color:var(--fg-muted); line-height:1.55; }
.ppa-article__statutes{ margin-top:1rem; font-size:.78rem; color:var(--muted); font-style:italic; }
.ppa-article__meta{ margin-top:1.1rem; display:flex; flex-wrap:wrap; gap:.5rem 1rem; font-size:.78rem; color:var(--muted); }
.ppa-article__layout{ display:grid; gap:2.5rem; padding-block:2.5rem 4rem; align-items:start; background:var(--paper); }
@media (min-width:960px){ .ppa-article__layout{ grid-template-columns:minmax(0,1fr) 18rem; gap:3.5rem; } }
.ppa-article__body{ min-width:0; }
.ppa-article__note{ font-size:.88rem; color:var(--fg-muted); font-style:italic; border-inline-start:2px solid var(--rule-strong); padding-inline-start:1rem; }
.ppa-article__cta{ margin-top:3rem; padding:1.75rem; background:var(--paper-deep); border-radius:var(--radius-lg); border:1px solid var(--rule); max-width:32rem; }
.ppa-article__cta h2{ font-size:1.3rem; margin-bottom:1rem; }
@media (min-width:960px){
  .ppa-sidebar{ position:sticky; top:7.5rem; padding-left:2.25rem; border-left:1px solid var(--rule); }
}

/* ---------- Location hero (real photography) ---------- */
.ppa-location-hero{ position:relative; height:20rem; overflow:hidden; }
@media (min-width:768px){ .ppa-location-hero{ height:26rem; } }
.ppa-location-hero__img{ position:absolute; inset:0; width:100%; height:100%; }
.ppa-location-hero__img img{ width:100%; height:100%; object-fit:cover; }
.ppa-location-hero__overlay{ position:absolute; inset:0; background:linear-gradient(180deg, rgba(23,20,18,.35) 0%, rgba(23,20,18,.75) 100%); }
.ppa-location-hero__content{ position:relative; height:100%; display:flex; flex-direction:column; justify-content:flex-end; padding-bottom:2.25rem; }
.ppa-location-hero__content .ppa-crumbs{ }
.ppa-location-hero__content .ppa-crumbs a, .ppa-location-hero__content .ppa-crumbs span[aria-current]{ color:rgba(244,239,230,.75) !important; }
.ppa-tag-row{ display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:1.5rem; }
.ppa-tag{ font-size:.72rem; font-weight:500; padding:.3rem .7rem; border-radius:999px; background:var(--panel); color:var(--ink-soft); }
.ppa-article__figure{ margin:1.5rem 0 2rem; border-radius:var(--radius-lg); overflow:hidden; }
.ppa-article__figure img{ width:100%; }
.ppa-check-list{ list-style:none; margin:0 0 1.3rem; padding:0; display:grid; gap:.6rem; }
.ppa-check-list li{ position:relative; padding-inline-start:1.6rem; }
.ppa-check-list li::before{ content:""; position:absolute; left:0; top:.5em; width:.6rem; height:.6rem; background:var(--seal); border-radius:1px; }

/* ============================================================
   ARCHIVES / CARD GRID
   ============================================================ */
.ppa-archive-hero{ padding-block:2.5rem 2rem; border-bottom:1px solid var(--rule); background:var(--paper-deep); }
.ppa-archive-body{ padding-block:2.5rem 4rem; background:var(--paper); }
.ppa-card-grid{ display:grid; gap:1.5rem; grid-template-columns:1fr; }
@media (min-width:640px){ .ppa-card-grid{ grid-template-columns:1fr 1fr; } }
@media (min-width:1024px){ .ppa-card-grid{ grid-template-columns:1fr 1fr 1fr; } }
.ppa-card{ display:flex; flex-direction:column; padding:1.5rem; background:var(--paper); border:1px solid var(--rule); border-radius:var(--radius-lg); text-decoration:none; transition:border-color .2s ease, transform .2s ease; }
.ppa-card:hover{ border-color:var(--seal); transform:translateY(-2px); }
.ppa-card__kicker{ font-size:.68rem; font-weight:600; text-transform:uppercase; letter-spacing:.12em; color:var(--seal); margin:0 0 .5rem; }
.ppa-card__title{ font-size:1.25rem; margin:0; }
.ppa-card__excerpt{ margin-top:.6rem; font-size:.88rem; color:var(--fg-muted); line-height:1.55; flex-grow:1; }
.ppa-card__more{ margin:1rem 0 0; font-size:.8rem; font-weight:500; color:var(--ink); }
.ppa-card:hover .ppa-card__more{ color:var(--seal); }
.ppa-archive-empty{ color:var(--muted); font-size:.95rem; }
.ppa-pagination{ margin-top:2.5rem; display:flex; gap:1rem; }
.nav-links{ display:flex; gap:1rem; margin-top:2.5rem; font-size:.88rem; }
.nav-links a{ color:var(--seal); text-decoration:none; }
.nav-links a:hover{ text-decoration:underline; }

/* ============================================================
   HOMEPAGE
   ============================================================ */
.ppa-hero{ position:relative; overflow:hidden; border-bottom:1px solid var(--rule); }
.ppa-hero__bg{ position:absolute; inset:0; }
.ppa-hero__img{ position:absolute; inset:0; width:100%; height:100%; }
.ppa-hero__img img{ width:100%; height:100%; object-fit:cover; }
.ppa-hero__gradient{ position:absolute; inset:0; background:linear-gradient(90deg, rgba(23,20,18,.90) 0%, rgba(23,20,18,.74) 45%, rgba(23,20,18,.4) 100%); }
.ppa-hero__row{ position:relative; display:grid; gap:2.5rem; align-items:end; padding-block:4rem 4.5rem; }
@media (min-width:1024px){ .ppa-hero__row{ grid-template-columns:minmax(0,1fr) 16rem; padding-block:6rem; } }
.ppa-hero__title{ margin-top:1rem; max-width:42rem; font-size:2.15rem; line-height:1.1; color:var(--paper); }
@media (min-width:640px){ .ppa-hero__title{ font-size:3.1rem; } }
.ppa-hero__rule{ margin-top:1.5rem; height:1px; width:7rem; background:var(--seal); }
.ppa-hero__lede{ margin-top:1.5rem; max-width:34rem; font-size:1.05rem; line-height:1.6; color:rgba(244,239,230,.85); }
.ppa-hero__ctas{ margin-top:2rem; display:flex; flex-wrap:wrap; gap:.75rem; }
.ppa-hero__seal{ display:none; justify-self:end; }
@media (min-width:1024px){ .ppa-hero__seal{ display:block; } }
.ppa-hero__seal img{ width:13rem; border-radius:999px; box-shadow:var(--shadow-seal); }

.ppa-ticker{ overflow:hidden; border-bottom:1px solid var(--rule); background:var(--ink); color:var(--paper); }
.ppa-ticker-track{ display:flex; width:max-content; gap:2.5rem; padding-block:.65rem; font-size:.78rem; letter-spacing:.02em; }
.ppa-ticker__item{ display:flex; align-items:center; gap:.75rem; white-space:nowrap; }
.ppa-ticker__date{ font-variant-numeric:tabular-nums; color:rgba(244,239,230,.55); }
.ppa-ticker__arrow{ color:var(--seal); }

.ppa-section{ padding-block:4rem; }
@media (min-width:640px){ .ppa-section{ padding-block:5rem; } }
.ppa-section--deep{ border-block:1px solid var(--rule); background:var(--paper-deep); }
.ppa-section--ink{ border-top:1px solid var(--rule); background:var(--ink); color:var(--paper); }
.ppa-section__head{ display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:1rem; }
.ppa-section__title{ margin-top:.5rem; font-size:2.1rem; }
.ppa-section__title--paper{ color:var(--paper); }
.ppa-section__dek{ margin-top:.75rem; max-width:38rem; color:var(--fg-muted); }
.ppa-section--ink .ppa-section__dek{ color:rgba(244,239,230,.65); }
.ppa-section__all{ text-decoration:none; font-size:.9rem; }
.ppa-link-paper{ color:rgba(244,239,230,.7) !important; text-decoration:none; }
.ppa-link-paper:hover{ color:var(--paper) !important; }

.ppa-services-grid{ margin-top:2rem; display:grid; gap:1px; background:var(--rule); grid-template-columns:1fr; }
@media (min-width:640px){ .ppa-services-grid{ grid-template-columns:1fr 1fr; } }
@media (min-width:1024px){ .ppa-services-grid{ grid-template-columns:1fr 1fr 1fr; } }
.ppa-services-grid__item{ background:var(--paper); padding:1.5rem; text-decoration:none; transition:background-color .2s ease; }
.ppa-services-grid__item:hover{ background:var(--cream); }
.ppa-services-grid__title{ font-family:var(--font-display); font-size:1.4rem; color:var(--ink); margin:0; }
.ppa-services-grid__item:hover .ppa-services-grid__title{ color:var(--seal); }
.ppa-services-grid__short{ margin:.5rem 0 0; font-size:.88rem; color:var(--fg-muted); }

.ppa-locations-grid{ margin-top:2.5rem; display:grid; gap:1.5rem; }
@media (min-width:1024px){ .ppa-locations-grid{ grid-template-columns:1fr 1fr 1fr; } }
.ppa-locations-grid__item{ display:block; overflow:hidden; border:1px solid var(--rule); background:var(--paper); text-decoration:none; }
.ppa-locations-grid__img{ aspect-ratio:16/10; overflow:hidden; }
.ppa-locations-grid__img img{ width:100%; height:100%; object-fit:cover; transition:transform .7s cubic-bezier(.22,1,.36,1); }
.ppa-locations-grid__item:hover .ppa-locations-grid__img img{ transform:scale(1.04); }
.ppa-locations-grid__body{ padding:1.25rem; }
.ppa-locations-grid__name{ font-family:var(--font-display); font-size:1.7rem; color:var(--ink); margin:0; }
.ppa-locations-grid__kicker{ margin:.2rem 0 0; font-size:.88rem; color:var(--fg-muted); }

.ppa-calendar-section{ display:grid; gap:2.5rem; }
@media (min-width:1024px){ .ppa-calendar-section{ grid-template-columns:minmax(0,1fr) 20rem; } }
.ppa-calendar-section__chart{ margin-top:1.5rem; padding:1rem .5rem; border:1px solid var(--rule); background:var(--cream); }
@media (min-width:640px){ .ppa-calendar-section__chart{ padding:1rem 1.25rem; } }
.ppa-next-list{ list-style:none; margin:1rem 0 0; padding:0; border-block:1px solid var(--rule); }
.ppa-next-list li{ padding-block:.75rem; border-bottom:1px solid var(--rule); }
.ppa-next-list li:last-child{ border-bottom:0; }
.ppa-next-list__date{ margin:0; font-size:.72rem; font-variant-numeric:tabular-nums; color:var(--seal); }
.ppa-next-list a{ font-size:.92rem; color:var(--ink); text-decoration:none; }
.ppa-next-list a:hover{ color:var(--seal); }

.ppa-knowledge-cols{ display:grid; gap:2.5rem; }
@media (min-width:1024px){ .ppa-knowledge-cols{ grid-template-columns:1fr 1fr; } }
.ppa-preview-list{ list-style:none; margin:2rem 0 0; padding:0; }
.ppa-preview-list li{ padding-block:1rem; border-bottom:1px solid rgba(244,239,230,.15); }
.ppa-preview-list li:first-child{ padding-top:0; }
.ppa-preview-list__date{ margin:0 0 .2rem; font-size:.72rem; font-variant-numeric:tabular-nums; color:rgba(244,239,230,.5); }
.ppa-preview-list__title{ display:block; font-family:var(--font-display); font-size:1.45rem; color:var(--paper) !important; text-decoration:none; }
.ppa-preview-list__title:hover{ color:rgba(244,239,230,.8) !important; }
.ppa-preview-list__excerpt{ margin:.3rem 0 0; font-size:.88rem; color:rgba(244,239,230,.6); }

.ppa-contact-section{ display:grid; gap:2.5rem; align-items:start; }
@media (min-width:1024px){ .ppa-contact-section{ grid-template-columns:minmax(0,1fr) 22rem; } }
.ppa-contact-section__head{ display:flex; align-items:center; gap:1rem; }
.ppa-seal--lg{ width:3.5rem; height:3.5rem; flex-shrink:0; }
.ppa-contact-section__img{ margin-top:2rem; border:1px solid var(--rule); }
.ppa-contact-section__img img{ width:100%; }
.ppa-contact-section__form{ border:1px solid var(--rule); background:var(--cream); padding:1.5rem; }
@media (min-width:640px){ .ppa-contact-section__form{ padding:1.75rem; } }

/* ============================================================
   CONTACT PAGE / KNOWLEDGE HUB / CALENDAR PAGE
   ============================================================ */
.ppa-article__layout--solo{ grid-template-columns:1fr !important; max-width:44rem; }
.ppa-contact-page{ padding-block:2.5rem 4rem; display:grid; gap:2rem; max-width:44rem; background:var(--paper); }
.ppa-contact-methods{ display:grid; gap:1rem; grid-template-columns:1fr; margin:0; }
@media (min-width:640px){ .ppa-contact-methods{ grid-template-columns:1fr 1fr; } }
.ppa-contact-methods__item{ border:1px solid var(--rule); background:var(--cream); padding:1rem 1.1rem; }
.ppa-contact-methods__item--wide{ grid-column:1 / -1; }
.ppa-contact-methods__item dt{ font-size:.7rem; text-transform:uppercase; letter-spacing:.14em; color:var(--muted); }
.ppa-contact-methods__item dd{ margin:.35rem 0 0; font-size:1.05rem; color:var(--ink); }
.ppa-contact-methods__item a{ color:var(--ink); text-decoration:none; }
.ppa-contact-methods__item a:hover{ color:var(--seal); }
.ppa-contact-page__disclaimer{ font-size:.85rem; color:var(--fg-muted); }

.ppa-knowledge-page{ padding-block:2rem 4rem; background:var(--paper); }
.ppa-knowledge-page__head{ margin-top:1.25rem; max-width:42rem; }
.ppa-knowledge-search{ margin-top:2rem; max-width:34rem; display:grid; gap:.35rem; }
.ppa-knowledge-search label{ font-size:.7rem; text-transform:uppercase; letter-spacing:.14em; color:var(--muted); }
.ppa-knowledge-search input{ height:3rem; border-radius:var(--radius-md); border:1px solid var(--input); background:var(--cream); padding-inline:.9rem; font-size:.95rem; color:var(--ink); }
.ppa-knowledge-search input:focus{ outline:2px solid var(--seal); outline-offset:1px; }
.ppa-knowledge-page__layout{ margin-top:2.5rem; display:grid; gap:2.5rem; }
@media (min-width:1024px){ .ppa-knowledge-page__layout{ grid-template-columns:minmax(0,1fr) 19.5rem; } }
.ppa-knowledge-kind + .ppa-knowledge-kind{ margin-top:3rem; }
.ppa-knowledge-list{ list-style:none; margin:.75rem 0 0; padding:0; border-block:1px solid var(--rule); }
.ppa-knowledge-row{ padding-block:1rem; border-bottom:1px solid var(--rule); }
.ppa-knowledge-row:last-child{ border-bottom:0; }
.ppa-knowledge-row__kicker{ margin:0; font-size:.7rem; text-transform:uppercase; letter-spacing:.14em; color:var(--muted); }
.ppa-knowledge-row__title{ display:block; margin-top:.25rem; font-family:var(--font-display); font-size:1.35rem; color:var(--ink); text-decoration:none; }
.ppa-knowledge-row__title:hover{ color:var(--seal); }
.ppa-knowledge-row__excerpt{ margin:.3rem 0 0; font-size:.9rem; color:var(--fg-muted); }

.ppa-calendar-page{ display:grid; gap:2.5rem; }
.ppa-calendar-list{ border-top:1px solid var(--rule); }
.ppa-calendar-list__row{ display:flex; align-items:center; gap:1rem; padding-block:.9rem; border-bottom:1px solid var(--rule); text-decoration:none; }
.ppa-calendar-list__row.is-past{ opacity:.45; }
.ppa-calendar-list__date{ flex-shrink:0; width:3.2rem; text-align:center; }
.ppa-calendar-list__day{ display:block; font-family:var(--font-display); font-size:1.3rem; color:var(--ink); line-height:1; }
.ppa-calendar-list__mon{ display:block; font-size:.68rem; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); }
.ppa-calendar-list__info{ flex-grow:1; min-width:0; }
.ppa-calendar-list__title{ display:block; font-size:.98rem; color:var(--ink); }
.ppa-calendar-list__row:hover .ppa-calendar-list__title{ color:var(--seal); }
.ppa-calendar-list__meta{ display:block; margin-top:.15rem; font-size:.76rem; color:var(--muted); }
.ppa-calendar-list__days{ flex-shrink:0; font-size:.72rem; font-weight:600; color:var(--seal); white-space:nowrap; }
.ppa-calendar-page__chart-card{ border:1px solid var(--rule); background:var(--cream); padding:1.25rem; }
@media (min-width:640px){ .ppa-calendar-page__chart-card{ padding:1.5rem; } }
.ppa-calendar-page__chart-card h2{ font-size:1.4rem; }
.ppa-calendar-page__chart-note{ margin:.3rem 0 1.25rem; font-size:.85rem; color:var(--fg-muted); }

/* ---------- 404 ---------- */
.ppa-404{ padding-block:4rem 5rem; text-align:center; background:var(--paper); }
.ppa-404 .ppa-seal--xl{ width:4rem; height:4rem; margin-inline:auto; }
.ppa-404 .ppa-kicker{ margin-top:1.5rem; }
.ppa-404 .ppa-article__title{ font-size:2rem; }
.ppa-404 .ppa-article__dek{ margin-inline:auto; }
.ppa-404__links{ list-style:none; margin:2rem 0 0; padding:0; display:flex; flex-wrap:wrap; justify-content:center; gap:.6rem; }
.ppa-404__links a{ display:inline-block; padding:.6rem 1.1rem; border:1px solid var(--rule-strong); border-radius:var(--radius-md); font-size:.85rem; color:var(--ink); text-decoration:none; }
.ppa-404__links a:hover{ border-color:var(--seal); color:var(--seal); }
