/* ============================================================================
   ONE GROUND  (September 18, 2026)
   Loaded on every page EXCEPT the homepage, after every other stylesheet.
   Scoped to body.one-ground so it can never reach index.html by accident.

   WHY. Joseph found the interior pages "blockish" and asked whether one colour
   for the whole page would be cleaner, redesigned on what the top sites do.
   A survey of Facet, Rivertree and AllStreet showed the same thing three times:
   one ground colour for the whole page, structure carried by contained objects
   and hairlines, dark reserved for an object or the close. His own tax-planning
   page already had that shape, which is why he loved it.

   THE SYSTEM, in one paragraph. Every non-home page sits on the editorial cream
   #fcfcf9 from top to bottom. Text-only heroes are light, in the service-lead
   scale, with the navy V mark on the right where there is no photo or object.
   Sections are separated by warm hairlines (#e0d7c6) and spacing, never by a
   colour band. Things that are genuinely objects stay objects: the pricing
   calculator, the calculator result panels and the process calendar are navy;
   media shells and post cards are white with a warm hairline. Secondary text is
   the site's own navy-grey #4a5568 everywhere, replacing the green-grey the
   service system introduced. The navy banner and footer close every page.

   WHAT THIS FILE DOES NOT DO. It does not touch the homepage, the nav, the
   footer, the fit-quiz overlay or the mobile drawer. It does not change copy or
   markup. Remove the <link> and the body class and every page is back where it
   was; nothing else depends on it.
   ============================================================================ */

/* ---- 1. The ground ------------------------------------------------------- */
.one-ground{
  --page-ground:#fcfcf9;
  --frame-ground:transparent;
  --frame-line:transparent;
  --frame-padding:0;
  --frame-gutter:96px;
  --frame-width:1220px;
  --reading-rule:#e0d7c6;
  --og-rule:#e0d7c6;
  --og-rule-strong:#d8ceba;
  --og-muted:#4a5568;
  background:#fcfcf9;
}
.one-ground main{background:#fcfcf9}
.one-ground main>section,
.one-ground .page-hero:not(.has-img),
.one-ground .sec-dark,
.one-ground .process-journey,
.one-ground.service-editorial main>.service-example,
.one-ground.service-editorial main>.service-explorer,
.one-ground.service-readable main>.service-questions,
.one-ground.service-readable main>.service-related,
.one-ground.service-readable main>.service-more{background:#fcfcf9!important}

/* ---- 2. Text-only heroes: light, editorial scale, V mark on the right ----- */
.one-ground .page-hero:not(.has-img){color:#0c1a2d;padding:150px 0 56px}
.one-ground .page-hero:not(.has-img) h1,.one-ground .page-hero:not(.has-img) .crumb a{color:#0c1a2d}
.one-ground .page-hero:not(.has-img) h1{font-size:clamp(44px,4.5vw,64px);line-height:1.08;letter-spacing:-.02em;max-width:620px}
.one-ground .page-hero:not(.has-img) p,.one-ground .page-hero:not(.has-img) .post-meta,.one-ground .page-hero:not(.has-img) .post-meta span{color:var(--og-muted)}
.one-ground .page-hero:not(.has-img) .wrap>p:not(.eyebrow){font-size:19px;line-height:1.7;max-width:44ch}
.one-ground .page-hero:not(.has-img) .eyebrow{color:#7d5f33}
/* The V watermark is OFF on every non-home page (Joseph, Sept 19: "get the logo
   off the service page and any other page it's on, it looks weird"). It was a
   light mark on a navy hero; on the cream ground it read as a second logo
   competing with the one in the nav. The markup stays in place, unstyled and
   hidden, so nothing else has to change. The homepage is untouched. */
.one-ground .page-hero .wm{display:none}
/* Article covers (.post-hero.has-img) are already inset photo objects on the
   ground, Rivertree's inset-block pattern. They keep their navy scrim and their
   light text; nothing above applies to them. The 404 page is a one-screen navy
   splash and is deliberately not given the one-ground class at all. */
.one-ground .post-hero.has-img .wm{display:none}

/* ---- 3. Interior frames dissolve into the ground -------------------------- */
.one-ground.interior-framed main>section>.wrap,
.one-ground.interior-framed .pricing-frame,
.one-ground.interior-framed .calc,
.one-ground.interior-framed.utility-framed main{background:transparent;border-color:transparent;box-shadow:none}
.one-ground.interior-framed.refined main>section{padding:0 0 64px}
.one-ground.interior-framed.refined main>section:last-of-type{padding-bottom:88px}
.one-ground.interior-framed .calc,.one-ground.interior-framed .calc:last-child{padding:64px 0;border:0;border-bottom:1px solid var(--og-rule)}
.one-ground.interior-framed .calc:last-child{border-bottom:0}
.one-ground .calc input{background:#fff;border-color:var(--og-rule-strong)}
.one-ground .calc-jumps{margin-left:0;margin-right:0}
.one-ground .calc-note{padding:0}
.one-ground.interior-framed .pcard,.one-ground .pcard{background:#fff;border:1px solid var(--og-rule)}
.one-ground.interior-framed .takeaways,.one-ground .takeaways{background:#fff;border:1px solid var(--og-rule)}

/* ---- 4. Former dark sections become sections ------------------------------ */
.one-ground .sec-dark h2{color:#0c1a2d}
.one-ground .sec-dark .eyebrow{color:#7d5f33}
.one-ground .sec-dark p{color:var(--og-muted)}
.one-ground .sec-dark [class*="handle"],.one-ground .sec-dark .x-handle{color:#7d5f33}
/* insights.html sets the @josephinvests handle to raw gold in an inline style attribute,
   which was fine on navy and is 1.9:1 on cream. Inline beats the sheet, hence !important. */
.one-ground .sec-dark p[style*="d7b486"]{color:#7d5f33!important}
.one-ground .sec-dark>.wrap{border-top:1px solid var(--og-rule);padding-top:64px}

/* ---- 5. Service pages: sage system becomes the one-ground system ---------- */
.one-ground.service-editorial main p,
.one-ground.service-editorial main{--ink-soft:#4a5568;--gold-text:#7d5f33}
.one-ground.service-editorial main p{color:var(--og-muted)}
.one-ground.service-editorial .service-essential p,
.one-ground.service-editorial .service-long-copy p,
.one-ground.service-editorial .service-question p,
.one-ground.service-editorial .service-example-copy>p,
.one-ground.service-editorial .service-lead-copy>p{color:var(--og-muted)}
.one-ground.service-editorial .service-scope-note{color:var(--og-muted)}
.one-ground .service-overview>.wrap,
.one-ground .reading-links,
.one-ground .service-other-links{border-top-color:var(--og-rule)!important}
.one-ground .service-example>.wrap,
.one-ground .service-explorer>.wrap,
.one-ground .service-questions>.wrap{border-top:1px solid var(--og-rule);padding-top:48px}
.one-ground.service-readable main>.service-questions{padding:0 0 42px}
.one-ground.service-editorial main>.service-example{padding:0 0 64px}
.one-ground.service-editorial main>.service-explorer{padding:0 0 64px}
.one-ground.service-editorial .service-explorer>.wrap{padding-top:64px}
.one-ground .service-expander,
.one-ground .service-expander:first-child,
.one-ground.service-editorial .service-question{border-color:var(--og-rule-strong)}
.one-ground .service-expander>summary>svg,
.one-ground .service-question>summary>svg{color:#6f695c}
.one-ground .service-text-link{border-bottom-color:#bcae93}
.one-ground .service-back{border-bottom-color:#c0b49a}
.one-ground .service-other-links>a{color:#5c584e}
.one-ground .service-lead-media figcaption,
.one-ground.service-editorial .planning-visual>figcaption,
.one-ground.service-editorial .planning-visual-placeholder>small{color:#6f695c}
.one-ground .service-demo-shell,.one-ground .planning-video{background:#fff;border-color:var(--og-rule-strong)}
.one-ground .service-demo-video,.one-ground .planning-video img{background:#fff}
.one-ground.service-editorial .planning-visual-placeholder{background:#fff;border-color:#cdbfa5}
.one-ground.service-editorial .planning-visual-placeholder>svg{color:#6f695c}
.one-ground .pe-item{border-bottom-color:var(--og-rule)}
.one-ground.service-editorial .pe-item[open]{background:#fff;box-shadow:inset 2px 0 #0c1a2d}
.one-ground .service-media-controls a:hover{border-bottom-color:#bcae93}
.one-ground.service-editorial .service-long-copy .d-list li::before{background:#ad8a58}

/* ---- 6. Process page ----------------------------------------------------- */
.one-ground .process-journey{background:#fcfcf9}
.one-ground .service-calendar{border-color:#0c1a2d}
.one-ground .planning-sample-link{border-color:var(--og-rule)}
.one-ground .planning-sample>img{border-color:var(--og-rule)}
.one-ground .planning-extra{border-color:var(--og-rule)}
/* Process page, Sept 19 2026: four steps across the page. Joseph: "keep it super simple ...
   doesn't need to be visual", then "horizontal so it flows across the page". The hairline on
   each step is the track; the number is the only ornament. Section 10 supplies the rhythm. */
.process-steps-head{max-width:640px;margin:0 0 44px}
.process-steps-head h2{font-family:"General Sans",Arial,sans-serif;font-size:30px;font-weight:500;line-height:1.25;letter-spacing:-.015em;color:#0c1a2d;margin:0 0 14px;text-wrap:balance}
.process-steps-head p{font-size:17px;line-height:1.7;color:#4a5568;margin:0}
.process-flow{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 40px}
.process-flow>li{border-top:2px solid var(--og-rule-strong);padding-top:20px}
.process-flow .process-num{display:block;font-family:"General Sans",Arial,sans-serif;font-size:12px;font-weight:600;letter-spacing:.18em;color:#7d5f33;margin:0 0 16px}
.process-flow h3{font-family:"General Sans",Arial,sans-serif;font-size:21px;font-weight:500;line-height:1.3;letter-spacing:-.01em;color:#0c1a2d;margin:0 0 12px}
.process-flow p{font-size:15.5px;line-height:1.75;color:#4a5568;margin:0}
@media(max-width:1100px){.process-flow{grid-template-columns:repeat(2,minmax(0,1fr));gap:36px 40px}}
@media(max-width:640px){.process-steps-head{margin-bottom:32px}.process-steps-head h2{font-size:26px}.process-flow{grid-template-columns:1fr;gap:26px}.process-flow p{font-size:16px}}

/* ---- 7. Utility pages ---------------------------------------------------- */
.one-ground.utility-framed main{padding:0}
.one-ground.privacy-framed main{max-width:880px}

/* ---- 8. Phone ------------------------------------------------------------ */
@media(max-width:1000px){
 .one-ground{--frame-gutter:48px}
 .one-ground .page-hero:not(.has-img){padding:118px 0 40px}
 .one-ground.interior-framed.refined main>section{padding:0 0 64px}
 .one-ground.interior-framed .calc,.one-ground.interior-framed .calc:last-child{padding:44px 0 48px}
 .one-ground .service-example>.wrap,
 .one-ground .service-explorer>.wrap,
 .one-ground .service-questions>.wrap,
 .one-ground .sec-dark>.wrap{padding-top:52px}
}
@media(max-width:760px){
 .one-ground .page-hero:not(.has-img) h1{font-size:43px;max-width:16ch}
 .one-ground .page-hero:not(.has-img) .wrap>p{font-size:17px}
}

/* ---- 9. Articulation: how sections are told apart WITHOUT colour ----------
   Joseph, Sept 18: "there's still ways to break the sections of the page up not
   needing to use color blocks. What are those?" They are the devices the service
   pages already use, now applied everywhere:
     a. one warm hairline opens every content section (never a band)
     b. the reading grid: a short label on the left, the content on the right,
        which also narrows accordions to a readable measure
     c. one accordion vocabulary: 19px/500 rows, CSS-drawn plus, hairlines
     d. objects for tools and media; eyebrows for category; space for rhythm
   The About page keeps its single centred column (owner decision, Aug 30) and
   gets hairlines between its blocks only. Process keeps its own numbered rail. */

/* a. every content section opens with one hairline */
.one-ground:not(.service-editorial):not(.about-refined) main>section>.wrap{border-top:1px solid var(--og-rule);padding-top:64px}
.one-ground .page-hero:not(.has-img){padding-bottom:64px}
.one-ground .portal-help{border-top:1px solid var(--og-rule);padding-top:48px;margin-top:56px}
.one-ground .bio-block{border-top:1px solid var(--og-rule);padding-top:36px}

/* b. the reading grid, the service pages' .service-reading-grid measured exactly */
.one-ground .og-grid,
.one-ground .blog-library{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:92px;align-items:start}
.one-ground .og-grid>h2,
.one-ground .blog-library>h2{font-family:"General Sans",Arial,sans-serif;font-weight:500;font-size:28px;line-height:1.28;letter-spacing:-.015em;padding-top:17px;margin:0 0 24px;color:#0c1a2d;max-width:12ch}
.one-ground .blog-library{border-top:1px solid var(--og-rule);padding-top:64px;margin-top:64px}
.one-ground .blog-section{border-top:1px solid var(--og-rule);padding-top:64px;margin-top:64px}

/* c. one accordion vocabulary: faq.html's .faq-item joins .service-question */
.one-ground .faq-item{border-bottom:1px solid var(--og-rule-strong)}
.one-ground .og-list>.faq-item:first-child{border-top:1px solid var(--og-rule-strong)}
.one-ground .faq-item button{position:relative;font-size:19px;font-weight:500;letter-spacing:0;line-height:1.5;padding:22px 32px 22px 0;min-height:74px;color:#0c1a2d}
.one-ground .faq-item button::before,
.one-ground .faq-item button::after{content:"";position:absolute;right:4px;top:50%;width:14px;height:1.5px;background:#0c1a2d;transform:none}
.one-ground .faq-item button::after{transform:rotate(90deg);transition:transform .2s}
.one-ground .faq-item.open button::after{transform:rotate(0)}
.one-ground .faq-body p{font-size:16px;line-height:1.85;color:var(--og-muted);max-width:66ch}
.one-ground .blog-topic,.one-ground .blog-topic:last-child,.one-ground .blog-topic li a{border-color:var(--og-rule-strong)}

@media(max-width:1100px){
 .one-ground .og-grid,.one-ground .blog-library{gap:56px;grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr)}
}
@media(max-width:760px){
 .one-ground:not(.service-editorial):not(.about-refined) main>section>.wrap{padding-top:44px}
 .one-ground .page-hero:not(.has-img){padding-bottom:40px}
 .one-ground .og-grid,.one-ground .blog-library{grid-template-columns:minmax(0,1fr);gap:0}
 .one-ground .og-grid>h2,.one-ground .blog-library>h2{padding-top:0;margin-bottom:18px;font-size:27px}
 .one-ground .blog-library,.one-ground .blog-section{padding-top:44px;margin-top:56px}
 .one-ground .faq-item button{font-size:17px;padding:20px 30px 20px 0;min-height:66px}
 .one-ground .bio-block{padding-top:28px}
}

/* ---- 10. Rhythm on one ground (Sept 19, 2026) -----------------------------
   Joseph: "us switching to a single color background created a lot of areas
   where things can be tightened up." On coloured bands a 132px section
   padding read as a chapter break; on one ground it reads as dead air. The
   rule now is one measure everywhere: content, 64px, hairline, 64px, content.
   Before the navy banner, 88px. Every section padding-top is 0 because the
   hairline wrap carries the 64px below the line; the section's padding-bottom
   carries the 64px above the next line. */
.one-ground:not(.service-editorial) main>section{padding-top:0;padding-bottom:64px}
.one-ground:not(.service-editorial) main>section:last-of-type{padding-bottom:88px}
.one-ground.service-editorial main>.service-lead{padding-bottom:64px}
.one-ground.service-editorial main>.service-actions-section{padding-bottom:64px}
.one-ground.service-editorial main>.service-reading{padding-top:0;padding-bottom:0}
.one-ground.service-editorial .service-reading .service-reading-grid{padding-top:48px}
.one-ground.service-editorial main>.service-related,
.one-ground.service-editorial main>.service-more{padding-bottom:88px}
@media(max-width:1000px){
 .one-ground:not(.service-editorial) main>section{padding-bottom:48px}
 .one-ground:not(.service-editorial) main>section:last-of-type{padding-bottom:64px}
 .one-ground.service-editorial main>.service-lead,
 .one-ground.service-editorial main>.service-actions-section{padding-bottom:48px}
 .one-ground.service-editorial .service-reading .service-reading-grid,
 .one-ground .service-questions>.wrap{padding-top:36px}
 .one-ground.service-editorial main>.service-related,
 .one-ground.service-editorial main>.service-more{padding-bottom:64px}
}

/* ---- 11. One vocabulary across the two page families (Sept 19, 2026) ------
   The interior pages (page-hero) and the service pages (service-lead) were
   two systems that a visitor experiences as one site. Measured by computed
   style on every page and brought to one set of values. */
/* hero */
.one-ground .page-hero:not(.has-img) .eyebrow{font-size:14px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:#7d5f33;margin:0 0 18px}
.one-ground.service-editorial .service-lead-copy h1{font-size:clamp(44px,4.5vw,64px);line-height:1.08;letter-spacing:-.02em;max-width:620px}
.one-ground.service-editorial .service-lead-copy>p{font-size:19px;line-height:1.7;color:#4a5568;max-width:42ch}
/* section headings on the interior pages: one serif size everywhere */
.one-ground .login-sec h2,
.one-ground .meeting-panel h2,
.one-ground .calc h2,
.one-ground.insights-page main section h2,
.one-ground .blog-feature h2,
.one-ground .blog-section>h2{font-family:"Editor's Note",Lora,Georgia,serif;font-weight:300;font-size:clamp(32px,3vw,42px);line-height:1.15;letter-spacing:-.02em}
/* section eyebrows: one size, one colour */
.one-ground main section .eyebrow,
.one-ground main .eyebrow:not(.page-hero .eyebrow){font-size:12px;font-weight:500;letter-spacing:.24em;text-transform:uppercase;color:#7d5f33}
/* every hairline on the ground is the warm rule; the cool greys were the old neutral */
.one-ground .calc-jumps,.one-ground .calc-support,.one-ground .chart-table,.one-ground .chart-table th,
.one-ground .vid,.one-ground .meeting-panel,.one-ground .login-sec li,
.one-ground .post-author,.one-ground .post-disc,.one-ground .post-side .toc a,.one-ground .pe-bottom{border-color:var(--og-rule)}
.one-ground .cred-more,.one-ground .cm{border-color:var(--og-rule-strong)}
/* one caption colour, one accordion weight */
.one-ground main figcaption,
.one-ground.service-editorial .planning-visual>figcaption,
.one-ground .service-lead-media figcaption{color:#4a5568}
.one-ground .cm>summary{font-weight:500}
/* eyebrows that sit inside a navy object keep their gold-on-navy */
.one-ground .service-calendar .eyebrow,.one-ground .journey-guide .eyebrow,.one-ground .fee-calc-panel .eyebrow,.one-ground .banner .eyebrow{color:#d7b486}
@media(max-width:760px){
 .one-ground .page-hero:not(.has-img) .eyebrow{font-size:12px;margin-bottom:14px}
 .one-ground .page-hero:not(.has-img) .wrap>p:not(.eyebrow),
 .one-ground.service-editorial .service-lead-copy>p{font-size:17px}
}

/* ---- 12. The blog index without photographs (Sept 19, 2026) ---------------
   Joseph: "get rid of all images on the blog page, they dont need them,
   structure it so its beautiful even without the images." The index is now
   one reading grid, three rows: Start here, Latest, Browse guides by topic.
   A label on the left, the content on the right, one hairline between rows.
   The feature keeps the page's one large serif moment; the six latest guides
   are a hairline list, the same object as the topic library beneath them. */
.one-ground .blog-feature,
.one-ground .blog-recent{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:92px;align-items:start}
.one-ground .blog-feature{margin:0;color:#0c1a2d;text-decoration:none}
.one-ground .blog-label,
.one-ground .blog-recent>.blog-aside>h2{display:block;font-family:"General Sans",Arial,sans-serif;font-weight:500;font-size:28px;line-height:1.28;letter-spacing:-.015em;padding-top:17px;margin:0 0 24px;color:#0c1a2d;max-width:12ch}
.one-ground .blog-feature-body{display:block;min-width:0}
.one-ground .blog-feature .eyebrow{display:block;margin:0 0 18px}
.one-ground .blog-feature h2{font-size:clamp(34px,3.6vw,50px);line-height:1.1;letter-spacing:-.02em;margin:0 0 22px;max-width:16ch;color:#0c1a2d}
.one-ground .blog-feature p:not(.eyebrow){font-size:17px;line-height:1.75;color:#4a5568;max-width:56ch;margin:0}
.one-ground .blog-feature .feature-link{display:inline-flex;align-items:center;gap:7px;margin-top:26px;font-size:14px;font-weight:500;color:#0c1a2d;text-decoration:underline;text-underline-offset:5px;text-decoration-color:#d8ceba;transition:text-decoration-color .2s}
.one-ground .blog-feature:hover .feature-link{text-decoration-color:#0c1a2d}
/* the latest six: a hairline list in the right column, the topic jump links in the left */
.one-ground .blog-aside{min-width:0}
/* a div with role=navigation, not <nav>: the legacy bare nav{position:fixed} rule would pin it to the top of the page */
.one-ground .blog-filters{display:block;margin:0;padding:0}
.one-ground .blog-filters .eyebrow{display:block;margin:0 0 8px}
.one-ground .blog-filters a{display:block;padding:0;border:0;border-radius:0;font-size:15px;line-height:2.15;color:#4a5568;text-decoration:none}
.one-ground .blog-filters a:hover,.one-ground .blog-filters a:focus-visible{color:#0c1a2d;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#d8ceba}
.one-ground .post-list{display:block;min-width:0}
.one-ground .blog-entry{display:block;padding:26px 0 30px;border-top:1px solid var(--og-rule-strong);color:#0c1a2d;text-decoration:none}
.one-ground .blog-entry:last-child{border-bottom:1px solid var(--og-rule-strong)}
.one-ground .blog-entry .be-meta{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;margin:0 0 12px;font-family:"General Sans",Arial,sans-serif;font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:500;color:#7d5f33}
.one-ground .blog-entry .be-meta .pc-cat{margin:0;font-size:12px;letter-spacing:.14em}
.one-ground .blog-entry .be-meta time{font-weight:400;letter-spacing:.06em;color:#4a5568}
.one-ground .blog-entry h3{font-family:"Editor's Note",Lora,Georgia,serif;font-weight:300;font-size:clamp(24px,2.2vw,28px);line-height:1.22;letter-spacing:-.015em;margin:0 0 10px;color:#0c1a2d;max-width:26ch;text-decoration:underline;text-underline-offset:5px;text-decoration-color:transparent;transition:text-decoration-color .2s}
.one-ground .blog-entry:hover h3,.one-ground .blog-entry:focus-visible h3{text-decoration-color:#d8ceba}
.one-ground .blog-entry p{font-size:15.5px;line-height:1.7;color:#4a5568;margin:0;max-width:60ch}
@media(max-width:1100px){
 .one-ground .blog-feature,.one-ground .blog-recent{gap:56px;grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr)}
}
@media(max-width:760px){
 .one-ground .blog-feature,.one-ground .blog-recent{grid-template-columns:minmax(0,1fr);gap:0}
 .one-ground .blog-label,.one-ground .blog-recent>.blog-aside>h2{padding-top:0;margin-bottom:18px;font-size:27px}
 .one-ground .blog-feature h2{font-size:clamp(30px,8vw,38px)}
 .one-ground .blog-filters{display:flex;flex-wrap:wrap;gap:2px 18px;margin:0 0 28px}
 .one-ground .blog-filters .eyebrow{flex:0 0 100%;margin-bottom:4px}
 .one-ground .blog-filters a{line-height:1.9;font-size:14.5px}
 .one-ground .blog-entry{padding:22px 0 24px}
 .one-ground .blog-entry h3{font-size:23px}
}
/* post pages: no hero photo, no credit line; the related guides are the same hairline entries as the index */
.one-ground .related .pcard{border:0;border-top:1px solid var(--og-rule-strong);border-radius:0;background:transparent;box-shadow:none;transform:none}
.one-ground .related .pcard:hover{transform:none;box-shadow:none}
.one-ground .related .pc-body{padding:22px 0 6px}
.one-ground .related .pcard h3{text-decoration:underline;text-underline-offset:5px;text-decoration-color:transparent;transition:text-decoration-color .2s}
.one-ground .related .pcard:hover h3{text-decoration-color:#d8ceba}

/* ---- 13. The article, made readable (Sept 19, 2026) -----------------------
   Joseph: "again with the white space but on the blogs, its hard to read can
   you make the format of them more readable?" Four measured defects, not
   taste, all fixed here:
   1. PARAGRAPHS FUSED. Body leading was 30.3px and the paragraph margin was
      20px, so the space BETWEEN paragraphs was smaller than the space between
      lines inside one. Twenty-two paragraphs read as a single grey slab.
      This is what "hard to read" actually was. Margin is now 26px at 18px
      type, a clear break without a gap.
   2. MEASURE 83 CHARACTERS at 17px in a 720px column. The house rule is 45
      to 90 and the About page reads at 78; long-form wants ~72. The column
      is now 660px at 18px, which measures 72.
   3. THE COLUMN WAS NOT UNDER THE HEADLINE. The hero keeps the 1120 wrap and
      the body section takes the 1220 frame wrap, so the article sat 73px to
      the left of the h1 that introduces it. Both edges are now 177px.
   4. THE BYLINE RENDERED AT 19px and wrapped to two lines: section 11's hero
      rule (.page-hero .wrap>p) was catching .post-meta. It is a byline, not
      a lede. The disclaimer had the same class of bug, 17px from .post p
      beating .post-disc's own 13px.
   Scope is .blog-refined.interior-framed, which is post pages only; the
   index is .blog-refined without the frame class. */

/* a. one left edge for the whole page: hero, article, author, disclaimer */
/* width:auto matters: the frame gives the wrap width:calc(100% - gutter), which on a
   phone inset the article another 24px inside the headline above it.
   The section rule is drawn as a pseudo-element, not as the wrap's border-top, for two
   reasons found the hard way: this shorthand padding overrides section 9a's padding-top,
   so a border here left the sand card sitting ON the line with a 1px gap; and a border on
   a wrap that carries a 24px gutter runs 24px past the content at both ends. The rule now
   spans exactly the content, with the rhythm's 64px of air under it. */
.one-ground.blog-refined.interior-framed main>section>.wrap{
  position:relative;width:auto;max-width:1120px;padding:64px 24px 0;border-top:0}
.one-ground.blog-refined.interior-framed main>section>.wrap::before{
  content:"";position:absolute;top:0;left:24px;right:24px;height:1px;background:var(--og-rule)}
.one-ground.blog-refined.interior-framed .post-layout{
  grid-template-columns:minmax(0,660px) 280px;justify-content:space-between;column-gap:64px}
.one-ground.blog-refined .post{max-width:660px}

/* b. the reading setting */
.one-ground.blog-refined .post>p{font-size:18px;line-height:1.72;margin:0 0 26px;color:#4a5568}
.one-ground.blog-refined .post>ul,
.one-ground.blog-refined .post>ol{font-size:18px;line-height:1.7;margin:0 0 26px 20px;color:#4a5568}
.one-ground.blog-refined .post>ul li,
.one-ground.blog-refined .post>ol li{margin-bottom:11px;padding-left:4px}
.one-ground.blog-refined .post>.tbl,
.one-ground.blog-refined .post>blockquote{margin-bottom:30px}
.one-ground.blog-refined .post table{font-size:16px}
.one-ground.blog-refined .post blockquote p{font-size:23px;line-height:1.42}
.one-ground.blog-refined .post>hr{margin:44px 0}

/* c. headings carry the structure, so give them room above and little below */
.one-ground.blog-refined .post>h2{margin:62px 0 20px}
.one-ground.blog-refined .post>h2:first-child{margin-top:0}
.one-ground.blog-refined .post>h3{font-size:19px;margin:40px 0 12px}
.one-ground.blog-refined .post>h3+p{margin-bottom:30px}

/* d. the byline is a byline; the disclaimer is fine print */
.one-ground.blog-refined .page-hero .wrap>p.post-meta{font-size:13px;line-height:1.9;letter-spacing:.08em;max-width:none;margin-top:28px}
.one-ground .post-meta span{color:#4a5568}
.one-ground.blog-refined .takeaways ul{font-size:16px}
.one-ground.blog-refined.interior-framed .page-hero .wrap>p.lede{max-width:58ch}
.one-ground.blog-refined .post>.post-disc{font-size:13.5px;line-height:1.75;margin-bottom:0}

/* e. the takeaways box in the sand vocabulary the fee schedule uses */
.one-ground.blog-refined .takeaways{background:#efe7d9;border:0;border-radius:14px;padding:28px 32px 24px;margin:0 0 48px}
.one-ground.blog-refined .takeaways h2{color:#7d5f33;letter-spacing:.2em;padding:0 0 13px;margin:0 0 17px;border-bottom:2px solid #ad8a58}
.one-ground.blog-refined .takeaways ul{margin:0 0 0 18px}
.one-ground.blog-refined .takeaways li{font-size:16px;line-height:1.66;color:#0c1a2d;margin-bottom:11px}
.one-ground.blog-refined .takeaways li:last-child{margin-bottom:0}

/* f. the rail is reference, not a second voice */
.one-ground.blog-refined .post-side h4{color:#7d5f33}
.one-ground.blog-refined .post-side .toc a{font-size:14px;line-height:1.45;padding:9px 0}
/* g. the rail fits the screen (Astra 2, #6). The longest guide has 14 sections, which made a 950px
   sticky panel on a 900px laptop with the call-to-action out of view. The panel is now capped to
   the window: the contents list scrolls inside it when it has to, and the heading and the call-to-
   action stay put. On a short window the rail simply stops sticking. Link text size is unchanged.
   h. the current section (Astra 2, #20): scripts/site-polish.js marks the link for the section
   being read with .is-current and aria-current; a quiet navy rule and navy text, nothing more. */
@media(min-width:1001px){
 .one-ground.blog-refined .post-side{display:flex;flex-direction:column;max-height:calc(100vh - 134px)}
 .one-ground.blog-refined .post-side>h4,.one-ground.blog-refined .post-side>.side-cta{flex:none}
 .one-ground.blog-refined .post-side .toc{flex:0 1 auto;min-height:96px;overflow-y:auto;overscroll-behavior:contain;
   margin:0 -4px;padding:0 4px}
 .one-ground.blog-refined .post-side .toc a{padding-left:12px;box-shadow:inset 2px 0 0 transparent;transition:color .2s ease,box-shadow .2s ease}
 .one-ground.blog-refined .post-side .toc a.is-current{color:#0c1a2d;box-shadow:inset 2px 0 0 #0c1a2d}
}
@media(min-width:1001px) and (max-height:640px){
 .one-ground.blog-refined .post-side{position:static;max-height:none}
 .one-ground.blog-refined .post-side .toc{overflow:visible}
}
@media(prefers-reduced-motion:reduce){.one-ground.blog-refined .post-side .toc a{transition:none}}
/* j. article tables (Astra 2, #23): money columns and their headers right-aligned (a ---: separator
   in the Markdown), a soft edge shadow on whichever side has more to scroll, and on phones the
   four-column tables keep room for whole amounts and say that they scroll. */
.one-ground.blog-refined .post th.num,.one-ground.blog-refined .post td.num{text-align:right}
.one-ground.blog-refined .tbl{background:
  linear-gradient(to right,#fcfcf9 30%,rgba(252,252,249,0)) left center/36px 100% no-repeat local,
  linear-gradient(to left,#fcfcf9 30%,rgba(252,252,249,0)) right center/36px 100% no-repeat local,
  radial-gradient(farthest-side at 0 50%,rgba(12,26,45,.16),rgba(12,26,45,0)) left center/12px 100% no-repeat scroll,
  radial-gradient(farthest-side at 100% 50%,rgba(12,26,45,.16),rgba(12,26,45,0)) right center/12px 100% no-repeat scroll}
.one-ground.blog-refined .tbl:focus-visible{outline:2px solid #0c1a2d;outline-offset:3px}
.one-ground.blog-refined .tbl-hint{display:none;align-items:center;gap:8px;margin:0 0 8px;font:500 12px/1.4 "General Sans",Arial,sans-serif;
  letter-spacing:.06em;text-transform:uppercase;color:#7d5f33}
.one-ground.blog-refined .tbl-hint svg{flex:none}
.one-ground.blog-refined .tbl-hint.is-on{display:flex}
@media(max-width:760px){
 .one-ground.blog-refined .tbl-wide table{min-width:600px}
 .one-ground.blog-refined .post td.num,.one-ground.blog-refined .tbl-wide td{white-space:nowrap}
}

/* k. the interactive S corporation model (content/components/scorp-model.html, used in the article
   s-corp-owner-salary; Sept 27, 2026). The business owner page shows the model as an image; the
   article carries the same figures as a real table. Four buttons choose a salary level and show
   each level's total federal tax. On wider screens every column stays in view and the chosen one is
   emphasised; on phones only the chosen column shows beside the labels. Without the script the
   whole table shows (scrolling sideways on phones). Values match the scorp-model images and the
   S corp owner compensation workbook: change all three together. */
.one-ground.blog-refined .post .scorp-m{margin:6px 0 44px;padding:26px 24px 20px;background:#fff;border:1px solid var(--og-rule);border-radius:14px}
.one-ground.blog-refined .post p.scorp-m-title{margin:0;font-family:"Editor's Note",Georgia,serif;font-weight:300;font-size:27px;line-height:1.15;
  letter-spacing:-.01em;color:#0c1a2d}
.one-ground.blog-refined .post p.scorp-m-sub{margin:8px 0 0;font-size:13.5px;line-height:1.5;font-style:italic;color:#4a5568}
.one-ground.blog-refined .scorp-picks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:20px 0 0}
.one-ground.blog-refined .scorp-picks[hidden]{display:none}
.one-ground.blog-refined .scorp-picks button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:44px;margin:0;
  padding:11px 12px;border:1px solid #d8ceba;border-radius:10px;background:#fcfcf9;color:#0c1a2d;font:inherit;text-align:left;cursor:pointer;
  transition:background-color .2s ease,border-color .2s ease,color .2s ease}
.one-ground.blog-refined .scorp-picks button:hover{border-color:#bcae93}
.one-ground.blog-refined .scorp-pick-sal{font:600 14.5px/1.3 "General Sans",Arial,sans-serif}
.one-ground.blog-refined .scorp-pick-tax{font-size:12.5px;line-height:1.35;color:#4a5568;font-variant-numeric:tabular-nums}
.one-ground.blog-refined .scorp-pick-tag{margin-top:3px;font:500 10.5px/1.3 "General Sans",Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#7d5f33}
.one-ground.blog-refined .scorp-picks button[aria-pressed="true"]{background:#0c1a2d;border-color:#0c1a2d;color:#fff}
.one-ground.blog-refined .scorp-picks button[aria-pressed="true"] .scorp-pick-tax{color:#c7cdd6}
.one-ground.blog-refined .scorp-picks button[aria-pressed="true"] .scorp-pick-tag{color:#d7b486}
.one-ground.blog-refined .scorp-picks button:focus-visible{outline:2px solid #0c1a2d;outline-offset:2px}
.one-ground.blog-refined .scorp-scroll{position:relative;margin-top:18px;overflow-x:auto}
.one-ground.blog-refined .scorp-scroll:focus-visible{outline:2px solid #0c1a2d;outline-offset:2px}
.one-ground.blog-refined .post .scorp-table{width:100%;margin:0;border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:14px;line-height:1.4;color:#0c1a2d}
.one-ground.blog-refined .post .scorp-table th,.one-ground.blog-refined .post .scorp-table td{padding:7px 10px 7px 12px;text-align:right;white-space:nowrap;
  border:0;border-top:1px solid #efe9de;color:#0c1a2d;font-size:14px;letter-spacing:0;text-transform:none;font-weight:400;
  transition:color .2s ease}
.one-ground.blog-refined .post .scorp-table th[scope="row"]{padding-left:0;text-align:left;white-space:normal}
.one-ground.blog-refined .post .scorp-table thead th{border:0;padding-top:9px;padding-bottom:9px;background:#0c1a2d;color:#fff;
  font:600 12px/1.3 "General Sans",Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase}
.one-ground.blog-refined .post .scorp-table thead th:first-child{padding-left:10px;text-align:left}
.one-ground.blog-refined .post .scorp-table thead th.is-low{background:#d7b486;color:#0c1a2d}
.one-ground.blog-refined .post .scorp-table td.is-low{background:#f5eee1}
.one-ground.blog-refined .post .scorp-table tr.scorp-sec th{padding:16px 0 7px;border-top:0;border-bottom:1px solid #e0d7c6;text-align:left;white-space:normal;
  font:600 11.5px/1.35 "General Sans",Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:#7d5f33}
.one-ground.blog-refined .post .scorp-table tr.scorp-sec+tr>*{border-top:0}
.one-ground.blog-refined .post .scorp-table tr.is-b>*{font-weight:600}
.one-ground.blog-refined .post .scorp-table tr.is-t>*{font-size:15.5px;color:#7d5f33}
.one-ground.blog-refined .post .scorp-table tr.is-i td{font-style:italic;color:#7d5f33}
.one-ground.blog-refined .post p.scorp-m-foot{margin:12px 0 0;font-size:12.5px;line-height:1.5;font-style:italic;color:#4a5568}
/* wider screens: the chosen column is emphasised, the other three step back (still 5.4:1 on white) */
.one-ground.blog-refined .post .scorp-m.is-focused[data-show="0"] .scorp-table tbody td:not(:nth-child(2)),
.one-ground.blog-refined .post .scorp-m.is-focused[data-show="1"] .scorp-table tbody td:not(:nth-child(3)),
.one-ground.blog-refined .post .scorp-m.is-focused[data-show="2"] .scorp-table tbody td:not(:nth-child(4)),
.one-ground.blog-refined .post .scorp-m.is-focused[data-show="3"] .scorp-table tbody td:not(:nth-child(5)){color:#636a77;font-weight:400}
.one-ground.blog-refined .post .scorp-m.is-focused[data-show="0"] .scorp-table thead th:nth-child(n+2):not(:nth-child(2)),
.one-ground.blog-refined .post .scorp-m.is-focused[data-show="1"] .scorp-table thead th:nth-child(n+2):not(:nth-child(3)),
.one-ground.blog-refined .post .scorp-m.is-focused[data-show="2"] .scorp-table thead th:nth-child(n+2):not(:nth-child(4)),
.one-ground.blog-refined .post .scorp-m.is-focused[data-show="3"] .scorp-table thead th:nth-child(n+2):not(:nth-child(5)){box-shadow:inset 0 -3px 0 transparent;opacity:.72}
.one-ground.blog-refined .post .scorp-m.is-focused[data-show="0"] .scorp-table thead th:nth-child(2),
.one-ground.blog-refined .post .scorp-m.is-focused[data-show="1"] .scorp-table thead th:nth-child(3),
.one-ground.blog-refined .post .scorp-m.is-focused[data-show="2"] .scorp-table thead th:nth-child(4),
.one-ground.blog-refined .post .scorp-m.is-focused[data-show="3"] .scorp-table thead th:nth-child(5){box-shadow:inset 0 -3px 0 #d7b486}
@media(max-width:760px){
  .one-ground.blog-refined .post .scorp-m{padding:20px 14px 14px;border-radius:10px}
  .one-ground.blog-refined .post p.scorp-m-title{font-size:24px}
  .one-ground.blog-refined .scorp-picks{grid-template-columns:repeat(2,minmax(0,1fr))}
  .one-ground.blog-refined .post .scorp-table{font-size:13.5px}
  .one-ground.blog-refined .post .scorp-table th,.one-ground.blog-refined .post .scorp-table td{font-size:13.5px}
  .one-ground.blog-refined .post .scorp-m:not(.is-focused) .scorp-table{min-width:620px}
  .one-ground.blog-refined .post .scorp-m:not(.is-focused) .scorp-table th[scope="row"]{position:sticky;left:0;background:#fff;min-width:170px}
  /* phones: one salary level at a time beside the labels */
  .one-ground.blog-refined .post .scorp-m.is-focused[data-show="0"] .scorp-table tr>:is(:nth-child(3),:nth-child(4),:nth-child(5)),
  .one-ground.blog-refined .post .scorp-m.is-focused[data-show="1"] .scorp-table tr>:is(:nth-child(2),:nth-child(4),:nth-child(5)),
  .one-ground.blog-refined .post .scorp-m.is-focused[data-show="2"] .scorp-table tr>:is(:nth-child(2),:nth-child(3),:nth-child(5)),
  .one-ground.blog-refined .post .scorp-m.is-focused[data-show="3"] .scorp-table tr>:is(:nth-child(2),:nth-child(3),:nth-child(4)){display:none}
  .one-ground.blog-refined .post .scorp-m.is-focused .scorp-table tbody td{color:#0c1a2d}
  .one-ground.blog-refined .post .scorp-m.is-focused .scorp-table tr.is-t td{color:#7d5f33}
  .one-ground.blog-refined .post .scorp-m.is-focused .scorp-table tr.is-i td{color:#7d5f33}
  .one-ground.blog-refined .post .scorp-m.is-focused .scorp-table thead th{opacity:1;box-shadow:none}
}
@media(prefers-reduced-motion:reduce){.one-ground.blog-refined .scorp-picks button,.one-ground.blog-refined .post .scorp-table td{transition:none}}
@media print{.one-ground.blog-refined .scorp-picks{display:none!important}.one-ground.blog-refined .post .scorp-m .scorp-table td{color:#0c1a2d!important;display:table-cell!important}}

/* i. the rail's call-to-action button was navy on the navy card, so it read as plain text. It takes
   the banner's gold button, the same one that closes every page. */
.one-ground.blog-refined .post-side .side-cta .btn{background:#d7b486;color:#0c1a2d;border-color:#d7b486}
.one-ground.blog-refined .post-side .side-cta .btn:hover{background:#e3c69f;border-color:#e3c69f;color:#0c1a2d}
.one-ground.blog-refined .post-side .side-cta .btn:focus-visible{outline:2px solid #d7b486;outline-offset:3px}

@media(max-width:1000px){
 .one-ground.blog-refined.interior-framed .post-layout{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:760px){
 .one-ground.blog-refined .post>p,
 .one-ground.blog-refined .post>ul,
 .one-ground.blog-refined .post>ol{font-size:17px;line-height:1.7;margin-bottom:22px}
 .one-ground.blog-refined .post>h2{margin:48px 0 16px}
 .one-ground.blog-refined .post>h3{margin:32px 0 10px}
 .one-ground.blog-refined.interior-framed main>section>.wrap{padding-top:44px}
 .one-ground.blog-refined .takeaways{padding:24px 22px 20px;margin-bottom:38px}
 .one-ground.blog-refined .page-hero .wrap>p.post-meta{margin-top:22px}
}

/* ---- 14. Blog titles are sentences, not headlines (Sept 19, 2026) ---------
   Joseph: "for the blog titles they are kind of bunched up, perhaps we can
   have that span the page and reduce the lines." Section 2's hero rule sets
   a 620px measure, which is right for an interior page called "Pricing" and
   wrong for a 97-character article title: the longest ran to FIVE lines at
   19 characters each, stacked at 1.08 leading.
   Measured across the seven longest and shortest titles at 860 / 940 / 1010
   / 1072: every width at or above 860 produces the SAME breaks, because
   text-wrap:balance settles on the fewest lines that balance and never uses
   more than ~844px of ink. So the measure is 900px, wide enough for balance
   to work and to read as spanning the page, narrow enough that a browser
   without text-wrap:balance still gets a ~35-character headline line rather
   than 42. Result: 97 characters goes 5 lines to 3, the 68-character median
   goes 4 to 2, and a short title sits on one. */
.one-ground.blog-refined.interior-framed .page-hero:not(.has-img) h1{max-width:900px;line-height:1.1}
@media(max-width:760px){
 /* 16ch is a headline measure; an article title wants the whole column */
 .one-ground.blog-refined.interior-framed .page-hero:not(.has-img) h1{max-width:none;font-size:clamp(30px,8.6vw,36px);line-height:1.15}
}

/* ---- 15. Spacing audit, Sept 20 2026 ------------------------------------
   Joseph: "check the spacing between text blocks across the board ... look at
   the business owner planning page where illustrative and not a projection of
   results for any client ends. It just immediately picks up on that next text
   block."

   Every text-block junction on all 22 pages plus the blog was measured at 1440
   and 390 and then looked at. Most tight gaps are correct: the FAQ accordion,
   the blog topic list and the byline block separate with a hairline and inner
   padding rather than a margin, so a zero box-to-box gap there is the design.
   Three were real, and all three are here.

   1. THE SCOPE NOTE. `.service-readable .service-plan-copy>p` at (0,2,1) was
   beating `.service-readable .service-scope-note` at (0,2,0), so the note lost
   its top margin AND its font-size, colour and measure, and ran straight out of
   the figcaption above it in full body type. Restored with the child combinator
   so it cannot be outranked by the generic paragraph rule again. Five pages:
   business owner, estate, insurance review, student loans, tax planning. ---- */
.one-ground.service-readable .service-plan-copy>p.service-scope-note{
  font-size:15px;line-height:1.7;color:var(--og-muted);
  margin:30px 0 0;max-width:46ch}
@media(max-width:900px){
 .one-ground.service-readable .service-plan-copy>p.service-scope-note{
   max-width:none;margin-top:22px}
}

/* 2. A LIST RUNNING INTO THE PARAGRAPH AFTER IT. `.d-list` inside an answer has
   margin:0 and the answer's paragraphs have margin-top:0, so the closing
   paragraph started on the list's last hairline. Pricing today; any future
   answer that pairs a list with a following paragraph is covered. */
.one-ground.service-editorial .service-question .d-list+p,
.one-ground.service-editorial .service-long-copy .d-list+p{margin-top:24px}

/* 3. THE SCHEDULING PAGE. The "Calendar not loading?" line sat on the top edge
   of the Calendly iframe with nothing between them. */
.one-ground .cal-frame{margin-top:18px}
